// Metro module 6472 (f6473). import * as _classCallCheck from "./_classCallCheck"; import * as __createClass from "./_createClass"; import { DEFAULT_BROWSER_FLUSH_INTERVAL, SET_METRIC_TYPE } from "./Module6465"; import { timestampInSeconds } from "./Module6382"; import { sanitizeMetricKey, sanitizeTags, sanitizeUnit, getBucketKey } from "./Module6469"; import { METRIC_MAP } from "./CounterMetric"; import { updateMetricSummaryOnActiveSpan } from "./spanTimeInputToSeconds"; import { captureAggregateMetrics } from "./createMetricEnvelope"; let env4172 = {}; const BrowserMetricsAggregator = function BrowserMetricsAggregator(a0) { "use strict"; _classCallCheck(this, BrowserMetricsAggregator); this._client = a0; this._buckets = new Map(); this._interval = setInterval(() => this.flush(), DEFAULT_BROWSER_FLUSH_INTERVAL); }; exports.BrowserMetricsAggregator = __createClass(BrowserMetricsAggregator, [{ key: "add", value: function add(a0, a1, a2) { "use strict"; let r61; let r6 = arguments[3]; if (r6 === void 0) { r6 = "none"; } let r9 = arguments[4]; if (r9 === void 0) { r9 = {}; } let r5 = arguments[5]; if (r5 === void 0) { r5 = timestampInSeconds(); } const timestamp2 = Math.floor(r5); const name = sanitizeMetricKey(a1); const tags = sanitizeTags(r9); const unit = sanitizeUnit(r6); const bucketKey = getBucketKey(a0, name, unit, tags); const r12 = this._buckets.get(bucketKey); const r11 = r12 ? a0 === SET_METRIC_TYPE ? r12.metric.weight : 0 : 0; let r53 = a2; if (r12) { r12.metric.add(a2); const timestamp = r12.timestamp; r61 = r12; if (timestamp < timestamp2) { r12.timestamp = timestamp2; r61 = r12; } } else { r61 = { metric: new METRIC_MAP[a0](a2), timestamp: timestamp2, metricType: a0, name, unit, tags }; this._buckets.set(bucketKey, r61); } if (typeof a2 === "string") { r53 = r61.metric.weight - r11; } updateMetricSummaryOnActiveSpan(a0, name, r53, unit, r9, bucketKey); } }, { key: "flush", value: function flush() { "use strict"; if (this._buckets.size !== 0) { captureAggregateMetrics(this._client, Array.from(this._buckets.values())); this._buckets.clear(); } } }, { key: "close", value: function close() { "use strict"; clearInterval(this._interval); this.flush(); } }]);