summaryrefslogtreecommitdiff
path: root/shared/metrics-8/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-aggregator.js
blob: b53d7a936e6a1a028abb75d407b400df5a2e2e4b (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
36
37
38
39
40
41
42
43
44
45
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MetricsFieldsAggregator = void 0;
const optional_1 = require("@jet/environment/types/optional");
const page_metrics_fields_provider_1 = require("../field-providers/page-metrics-fields-provider");
class MetricsFieldsAggregator {
    constructor() {
        this.optInProviders = new Map();
        this.optOutProviders = new Map();
    }
    static makeDefaultAggregator() {
        const aggregator = new MetricsFieldsAggregator();
        aggregator.addOptInProvider(new page_metrics_fields_provider_1.PageMetricsFieldsProvider(), "pageFields");
        return aggregator;
    }
    addOptInProvider(provider, request) {
        this.optInProviders.set(request, provider);
    }
    addOptOutProvider(provider, request) {
        this.optOutProviders.set(request, provider);
    }
    removeOptInProvider(request) {
        this.optInProviders.delete(request);
    }
    removeOptOutProvider(request) {
        this.optOutProviders.delete(request);
    }
    addMetricsFields(options) {
        options.including.forEach((request) => {
            const provider = this.optInProviders.get(request);
            if (optional_1.isNothing(provider)) {
                // No provider registered
                return;
            }
            provider.addMetricsFields(options.builder, options.context);
        });
        this.optOutProviders.forEach((provider, request) => {
            if (optional_1.isNothing(provider) || options.excluding.includes(request)) {
                return;
            }
            provider.addMetricsFields(options.builder, options.context);
        });
    }
}
exports.MetricsFieldsAggregator = MetricsFieldsAggregator;