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