1 | "use strict";
|
2 |
|
3 | const Telemetry = require(`./telemetry`);
|
4 |
|
5 | const instance = new Telemetry();
|
6 |
|
7 | const flush = require(`./flush`)(instance.isTrackingEnabled());
|
8 |
|
9 | process.on(`exit`, flush);
|
10 |
|
11 |
|
12 | const interval = Number.isFinite(+process.env.TELEMETRY_BUFFER_INTERVAL) ? Math.max(Number(process.env.TELEMETRY_BUFFER_INTERVAL), 1000) : 10 * 60 * 1000;
|
13 |
|
14 | const tick = _ => {
|
15 | flush().catch(console.error).then(_ => setTimeout(tick, interval));
|
16 | };
|
17 |
|
18 | module.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) {
|
35 | }
|
36 |
|
37 | next();
|
38 | }
|
39 | }; |
\ | No newline at end of file |