UNPKG

1.19 kBJavaScriptView Raw
1const Telemetry = require(`./telemetry`)
2const flush = require(`./flush`)
3
4const instance = new Telemetry()
5
6process.on(`exit`, flush)
7
8// 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)
12 ? Math.max(Number(process.env.TELEMETRY_BUFFER_INTERVAL), 1000)
13 : 10 * 60 * 1000 // 10 min
14
15const tick = _ => {
16 flush()
17 .catch(console.error)
18 .then(_ => setTimeout(tick, interval))
19}
20
21module.exports = {
22 trackCli: (input, tags, opts) => instance.captureEvent(input, tags, opts),
23 trackError: (input, tags) => instance.captureError(input, tags),
24 trackBuildError: (input, tags) => instance.captureBuildError(input, tags),
25 setDefaultTags: tags => instance.decorateAll(tags),
26 decorateEvent: (event, tags) => instance.decorateNextEvent(event, tags),
27 setTelemetryEnabled: enabled => instance.setTelemetryEnabled(enabled),
28 startBackgroundUpdate: _ => {
29 setTimeout(tick, interval)
30 },
31
32 expressMiddleware: source => (req, res, next) => {
33 try {
34 instance.trackActivity(`${source}_ACTIVE`)
35 } catch (e) {
36 // ignore
37 }
38 next()
39 },
40}