@bracketed/otel-api
Version:
@opentelementery/api but ported to suit modern uses. (2025)
1 lines • 5.26 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/trace/spancontext-utils.ts"],"names":["Uint8Array","length","id","i","r","isHex","charCodeAt","isValidHex","traceId","INVALID_TRACEID","isValidTraceId","spanId","INVALID_SPANID","isValidSpanId","spanContext","isSpanContextValid","wrapSpanContext"],"mappings":"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","file":"spancontext-utils.cjs","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport type { Span } from './span';\nimport type { SpanContext } from './span_context';\n\n// Valid characters (0-9, a-f, A-F) are marked as 1.\nconst isHex = new Uint8Array([\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,\n]);\n\nfunction isValidHex(id: string, length: number): boolean {\n\t// As of 1.9.0 the id was allowed to be a non-string value,\n\t// even though it was not possible in the types.\n\tif (typeof id !== 'string' || id.length !== length) return false;\n\n\tlet r = 0;\n\tfor (let i = 0; i < id.length; i += 4) {\n\t\tr +=\n\t\t\t(isHex[id.charCodeAt(i)] | 0) +\n\t\t\t(isHex[id.charCodeAt(i + 1)] | 0) +\n\t\t\t(isHex[id.charCodeAt(i + 2)] | 0) +\n\t\t\t(isHex[id.charCodeAt(i + 3)] | 0);\n\t}\n\n\treturn r === length;\n}\n\n/**\n * @since 1.0.0\n */\nexport function isValidTraceId(traceId: string): boolean {\n\treturn isValidHex(traceId, 32) && traceId !== INVALID_TRACEID;\n}\n\n/**\n * @since 1.0.0\n */\nexport function isValidSpanId(spanId: string): boolean {\n\treturn isValidHex(spanId, 16) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n *\n * @since 1.0.0\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n\treturn isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId);\n}\n\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n\treturn new NonRecordingSpan(spanContext);\n}\n"]}