UNPKG

@bugsnag/core-performance

Version:
32 lines (29 loc) 1.13 kB
import { scaleProbabilityToMatchSamplingRate } from './sampler.js'; import { isSpanContext } from './validation.js'; const TRACE_PERENT_REGEX = /^00-([0-9a-f]{32})-([0-9a-f]{16})-[0-9]{2}$/; class RemoteParentContext { constructor(parentContext) { this.id = parentContext.id; this.traceId = parentContext.traceId; } encodeAsTraceParent() { return RemoteParentContext.toTraceParentString(this); } static parseTraceParent(encodedString) { const result = TRACE_PERENT_REGEX.exec(encodedString); if (!result) { return undefined; } const [, traceId, id] = result; return new RemoteParentContext({ id, traceId }); } static toTraceParentString(context) { let sampled = true; if (isSpanContext(context)) { const scaledProbability = scaleProbabilityToMatchSamplingRate(context.samplingProbability); sampled = context.samplingRate <= scaledProbability; } return `00-${context.traceId}-${context.id}-${sampled ? '01' : '00'}`; } } export { RemoteParentContext as default };