Files
2025-11-04 05:03:50 +08:00

40 lines
979 B
JavaScript

const TRACEPARENT_REGEXP = new RegExp(
'^[ \\t]*' + // whitespace
'([0-9a-f]{32})?' + // trace_id
'-?([0-9a-f]{16})?' + // span_id
'-?([01])?' + // sampled
'[ \\t]*$', // whitespace
);
/**
* Extract transaction context data from a `sentry-trace` header.
*
* @param traceparent Traceparent string
*
* @returns Object containing data from the header, or undefined if traceparent string is malformed
*/
function extractTraceparentData(traceparent) {
const matches = traceparent.match(TRACEPARENT_REGEXP);
if (!traceparent || !matches) {
// empty string or no matches is invalid traceparent data
return undefined;
}
let parentSampled;
if (matches[3] === '1') {
parentSampled = true;
} else if (matches[3] === '0') {
parentSampled = false;
}
return {
traceId: matches[1],
parentSampled,
parentSpanId: matches[2],
};
}
export { TRACEPARENT_REGEXP, extractTraceparentData };
//# sourceMappingURL=tracing.js.map