@zendesk/retrace
Version:
define and capture Product Operation Traces along with computed metrics with an optional friendly React beacon API
24 lines • 975 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.processSpans = processSpans;
function processSpans(spans, traceManager) {
const startSpansByKey = new Map();
const sortedByEndTime = [...spans].sort((a, b) => {
return a.startTime.now + a.duration - (b.startTime.now + b.duration);
});
sortedByEndTime.forEach((span, i) => {
const spanKey = `${span.type.replace(/-start$/, '')}|${span.name}`;
const existing = startSpansByKey.get(spanKey);
if (existing) {
// span.duration += (existing.span.startTime.now - span.startTime.now)
traceManager.endSpan(existing.span, span);
startSpansByKey.delete(spanKey);
return;
}
const processed = traceManager.createAndProcessSpan(span);
if (span.type.endsWith('-start')) {
startSpansByKey.set(spanKey, processed);
}
});
}
//# sourceMappingURL=processSpans.js.map