metrics-pipeline.js
1 "use strict"; 2 Object.defineProperty(exports, "__esModule", { value: true }); 3 exports.MetricsPipeline = exports.FlushBehavior = void 0; 4 const metrics_fields_builder_1 = require("./aggregating/metrics-fields-builder"); 5 var FlushBehavior; 6 (function (FlushBehavior) { 7 FlushBehavior[FlushBehavior["automatic"] = 0] = "automatic"; 8 FlushBehavior[FlushBehavior["never"] = 1] = "never"; 9 })(FlushBehavior = exports.FlushBehavior || (exports.FlushBehavior = {})); 10 class MetricsPipeline { 11 constructor(options) { 12 var _a; 13 this.aggregator = options.aggregator; 14 this.linter = options.linter; 15 this.recorder = options.recorder; 16 this.flushBehavior = (_a = options.flushBehavior) !== null && _a !== void 0 ? _a : FlushBehavior.automatic; 17 } 18 async process(data, context) { 19 const builder = new metrics_fields_builder_1.SimpleMetricsFieldsBuilder(data.fields); 20 this.aggregator.addMetricsFields({ 21 including: data.includingFields, 22 excluding: data.excludingFields, 23 builder: builder, 24 context: context, 25 }); 26 const lintedEvent = await this.linter.processEvent(builder.allMetricsFields); 27 this.recorder.record(lintedEvent, data.topic); 28 if (data.shouldFlush && this.flushBehavior === FlushBehavior.automatic) { 29 void this.recorder.flush(); 30 } 31 return lintedEvent; 32 } 33 } 34 exports.MetricsPipeline = MetricsPipeline;