Files
apps.apple.com/node_modules/@jet/engine/lib/metrics/aggregating/metrics-fields-aggregator.js
2025-11-04 05:03:50 +08:00

46 lines
1.7 KiB
JavaScript

"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;