UNPKG

@dash0/sdk-web

Version:

Dash0's Web SDK to collect telemetry from end-users' web browsers

19 lines (18 loc) 788 B
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)}`; }