@dash0/sdk-web
Version:
Dash0's Web SDK to collect telemetry from end-users' web browsers
19 lines (18 loc) • 788 B
JavaScript
import { generateUniqueId, SESSION_ID_BYTES, TRACE_ID_BYTES } from "./id";
const TRACE_ID_PREFIX = "d042";
const TRACE_FLAGS = {
WITHOUT_SESSION: 0x01, // 00000001 - in some edge cases we do not have a session ID, so we need to mark the trace as such
};
function encodeTraceFlags(flags) {
let byte = 0;
if (flags.withoutSession) {
byte |= TRACE_FLAGS.WITHOUT_SESSION;
}
return byte.toString(16).padStart(2, "0");
}
export function generateTraceId(sessionId) {
if (!sessionId) {
return `${TRACE_ID_PREFIX}${encodeTraceFlags({ withoutSession: true })}${generateUniqueId(TRACE_ID_BYTES - 3)}`;
}
return `${TRACE_ID_PREFIX}${encodeTraceFlags({ withoutSession: false })}${sessionId}${generateUniqueId(TRACE_ID_BYTES - SESSION_ID_BYTES - 3)}`;
}