1 | const Telemetry = require(`./telemetry`)
|
2 | const flush = require(`./flush`)
|
3 |
|
4 | const instance = new Telemetry()
|
5 |
|
6 | process.on(`exit`, flush)
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | const interval = Number.isFinite(+process.env.TELEMETRY_BUFFER_INTERVAL)
|
12 | ? Math.max(Number(process.env.TELEMETRY_BUFFER_INTERVAL), 1000)
|
13 | : 10 * 60 * 1000
|
14 |
|
15 | const tick = _ => {
|
16 | flush()
|
17 | .catch(console.error)
|
18 | .then(_ => setTimeout(tick, interval))
|
19 | }
|
20 |
|
21 | module.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 |
|
37 | }
|
38 | next()
|
39 | },
|
40 | }
|