/ node_modules / @jet / engine / lib / metrics / metrics-pipeline.js
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;