35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
"use strict";
|
|
|
|
const Telemetry = require(`./telemetry`);
|
|
|
|
const flush = require(`./flush`);
|
|
|
|
const instance = new Telemetry();
|
|
process.on(`exit`, flush); // For longrunning commands we want to occasinally flush the data
|
|
// The data is also sent on exit.
|
|
|
|
const interval = Number.isFinite(+process.env.TELEMETRY_BUFFER_INTERVAL) ? Math.max(Number(process.env.TELEMETRY_BUFFER_INTERVAL), 1000) : 10 * 60 * 1000; // 10 min
|
|
|
|
const tick = _ => {
|
|
flush().catch(console.error).then(_ => setTimeout(tick, interval));
|
|
};
|
|
|
|
module.exports = {
|
|
trackCli: (input, tags, opts) => instance.captureEvent(input, tags, opts),
|
|
trackError: (input, tags) => instance.captureError(input, tags),
|
|
trackBuildError: (input, tags) => instance.captureBuildError(input, tags),
|
|
setDefaultTags: tags => instance.decorateAll(tags),
|
|
decorateEvent: (event, tags) => instance.decorateNextEvent(event, tags),
|
|
setTelemetryEnabled: enabled => instance.setTelemetryEnabled(enabled),
|
|
startBackgroundUpdate: _ => {
|
|
setTimeout(tick, interval);
|
|
},
|
|
expressMiddleware: source => (req, res, next) => {
|
|
try {
|
|
instance.trackActivity(`${source}_ACTIVE`);
|
|
} catch (e) {// ignore
|
|
}
|
|
|
|
next();
|
|
}
|
|
}; |