UNPKG

1.42 kBJavaScriptView Raw
1"use strict";
2
3const Telemetry = require(`./telemetry`);
4
5const instance = new Telemetry();
6
7const flush = require(`./flush`)(instance.isTrackingEnabled());
8
9process.on(`exit`, flush); // For long running commands we want to occasionally flush the data
10// The data is also sent on exit.
11
12const interval = Number.isFinite(+process.env.TELEMETRY_BUFFER_INTERVAL) ? Math.max(Number(process.env.TELEMETRY_BUFFER_INTERVAL), 1000) : 10 * 60 * 1000; // 10 min
13
14const tick = _ => {
15 flush().catch(console.error).then(_ => setTimeout(tick, interval));
16};
17
18module.exports = {
19 trackCli: (input, tags, opts) => instance.captureEvent(input, tags, opts),
20 trackError: (input, tags) => instance.captureError(input, tags),
21 trackBuildError: (input, tags) => instance.captureBuildError(input, tags),
22 setDefaultTags: tags => instance.decorateAll(tags),
23 decorateEvent: (event, tags) => instance.decorateNextEvent(event, tags),
24 setTelemetryEnabled: enabled => instance.setTelemetryEnabled(enabled),
25 startBackgroundUpdate: _ => {
26 setTimeout(tick, interval);
27 },
28 isTrackingEnabled: () => instance.isTrackingEnabled,
29 aggregateStats: data => instance.aggregateStats(data),
30 addSiteMeasurement: (event, obj) => instance.addSiteMeasurement(event, obj),
31 expressMiddleware: source => (req, res, next) => {
32 try {
33 instance.trackActivity(`${source}_ACTIVE`);
34 } catch (e) {// ignore
35 }
36
37 next();
38 }
39};
\No newline at end of file