UNPKG

@zendesk/retrace

Version:

define and capture Product Operation Traces along with computed metrics with an optional friendly React beacon API

44 lines 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createDefaultPerformanceEntryDeduplicationStrategy = createDefaultPerformanceEntryDeduplicationStrategy; const getPerformanceEntryHash_1 = require("./getPerformanceEntryHash"); function createDefaultPerformanceEntryDeduplicationStrategy() { let processedPerformanceEntries = new WeakMap(); const processedPerformanceEntriesByHash = new Map(); return { findDuplicate(span) { if (!span.performanceEntry) { return undefined; } const existing = processedPerformanceEntries.get(span.performanceEntry); if (existing) { return existing; } if (span.performanceEntry.entryType === 'resource') { const hash = (0, getPerformanceEntryHash_1.getPerformanceEntryHash)(span.performanceEntry); return processedPerformanceEntriesByHash.get(hash); } return undefined; }, recordSpan(spanAndAnnotation) { const { span } = spanAndAnnotation; if (!span.performanceEntry) { return; } processedPerformanceEntries.set(span.performanceEntry, spanAndAnnotation); if (span.performanceEntry.entryType === 'resource') { const hash = (0, getPerformanceEntryHash_1.getPerformanceEntryHash)(span.performanceEntry); processedPerformanceEntriesByHash.set(hash, spanAndAnnotation); } }, reset() { processedPerformanceEntries = new WeakMap(); processedPerformanceEntriesByHash.clear(); }, selectPreferredSpan(existingSpan, newSpan) { // Default behavior: use the new span return newSpan; }, }; } //# sourceMappingURL=defaultDeduplicationStrategy.js.map