UNPKG

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