@rivetkit/traces 2.1.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +203 -0
- package/dist/schemas/v1.ts +653 -0
- package/dist/tsup/chunk-2D7JND4Z.js +63 -0
- package/dist/tsup/chunk-2D7JND4Z.js.map +1 -0
- package/dist/tsup/chunk-7RQXHEKZ.js +541 -0
- package/dist/tsup/chunk-7RQXHEKZ.js.map +1 -0
- package/dist/tsup/chunk-DXS2HLRN.cjs +63 -0
- package/dist/tsup/chunk-DXS2HLRN.cjs.map +1 -0
- package/dist/tsup/chunk-QOSSO6CN.cjs +541 -0
- package/dist/tsup/chunk-QOSSO6CN.cjs.map +1 -0
- package/dist/tsup/chunk-UNGPFJ4C.js +417 -0
- package/dist/tsup/chunk-UNGPFJ4C.js.map +1 -0
- package/dist/tsup/chunk-ZTVH74GC.cjs +417 -0
- package/dist/tsup/chunk-ZTVH74GC.cjs.map +1 -0
- package/dist/tsup/encoding.cjs +20 -0
- package/dist/tsup/encoding.cjs.map +1 -0
- package/dist/tsup/encoding.d.cts +6 -0
- package/dist/tsup/encoding.d.ts +6 -0
- package/dist/tsup/encoding.js +20 -0
- package/dist/tsup/encoding.js.map +1 -0
- package/dist/tsup/index.browser.cjs +15 -0
- package/dist/tsup/index.browser.cjs.map +1 -0
- package/dist/tsup/index.browser.d.cts +7 -0
- package/dist/tsup/index.browser.d.ts +7 -0
- package/dist/tsup/index.browser.js +15 -0
- package/dist/tsup/index.browser.js.map +1 -0
- package/dist/tsup/index.cjs +921 -0
- package/dist/tsup/index.cjs.map +1 -0
- package/dist/tsup/index.d.cts +9 -0
- package/dist/tsup/index.d.ts +9 -0
- package/dist/tsup/index.js +921 -0
- package/dist/tsup/index.js.map +1 -0
- package/dist/tsup/noop-CcgjEgCu.d.cts +99 -0
- package/dist/tsup/noop-D-YAZiGa.d.ts +99 -0
- package/dist/tsup/otlp-Da4Yz0xC.d.cts +81 -0
- package/dist/tsup/otlp-Da4Yz0xC.d.ts +81 -0
- package/dist/tsup/otlp-entry.cjs +16 -0
- package/dist/tsup/otlp-entry.cjs.map +1 -0
- package/dist/tsup/otlp-entry.d.cts +10 -0
- package/dist/tsup/otlp-entry.d.ts +10 -0
- package/dist/tsup/otlp-entry.js +16 -0
- package/dist/tsup/otlp-entry.js.map +1 -0
- package/dist/tsup/v1-DovAIc7f.d.cts +118 -0
- package/dist/tsup/v1-DovAIc7f.d.ts +118 -0
- package/package.json +74 -0
- package/schemas/v1.bare +177 -0
- package/schemas/versioned.ts +99 -0
- package/src/encoding.ts +18 -0
- package/src/index.browser.ts +13 -0
- package/src/index.ts +31 -0
- package/src/noop.ts +81 -0
- package/src/otlp-entry.ts +18 -0
- package/src/otlp.ts +158 -0
- package/src/read-range.ts +502 -0
- package/src/traces.ts +1186 -0
- package/src/types.ts +94 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/traces/dist/tsup/index.cjs","../../src/traces.ts"],"names":["options","record","absNs"],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/traces/dist/tsup/index.cjs","sourcesContent":[null,"import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Buffer } from \"node:buffer\";\nimport { randomBytes } from \"node:crypto\";\nimport { performance } from \"node:perf_hooks\";\nimport { decode as decodeCbor, encode as encodeCbor } from \"cbor-x\";\nimport { pack, unpack } from \"fdb-tuple\";\nimport {\n\tCHUNK_VERSIONED,\n\tCURRENT_VERSION,\n\tencodeRecord,\n\ttype ActiveSpanRef,\n\ttype Attributes,\n\ttype Chunk,\n\ttype KeyValue,\n\ttype Record as TraceRecord,\n\ttype RecordBody,\n\ttype SpanEnd,\n\ttype SpanEvent,\n\ttype SpanId,\n\ttype SpanLink,\n\ttype SpanRecordKey,\n\ttype SpanSnapshot,\n\ttype SpanStart,\n\ttype SpanStatus,\n\tSpanStatusCode,\n\ttype SpanUpdate,\n\ttype StringId,\n\ttype TraceId,\n} from \"../schemas/versioned.js\";\nimport {\n\thexFromBytes,\n\ttype OtlpExportTraceServiceRequestJson,\n\ttype OtlpResource,\n} from \"./otlp.js\";\nimport { readRangeWireToOtlp } from \"./read-range.js\";\nimport type {\n\tEndSpanOptions,\n\tEventOptions,\n\tReadRangeOptions,\n\tReadRangeResult,\n\tReadRangeWire,\n\tSpanHandle,\n\tSpanStatusInput,\n\tStartSpanOptions,\n\tTraces,\n\tTracesDriver,\n\tTracesOptions,\n\tUpdateSpanOptions,\n} from \"./types.js\";\n\n// OTLP v1 JSON reference: https://opentelemetry.io/docs/specs/otlp/\n// Span data model reference: https://opentelemetry.io/docs/specs/otel/trace/api/\n\nconst KEY_PREFIX = {\n\tDATA: 1,\n};\n\nconst MAX_CHUNK_ID = 0xffff_ffff;\nconst AFTER_MAX_CHUNK_ID = 0x1_0000_0000;\n\nconst DEFAULT_BUCKET_SIZE_SEC = 3600;\nconst DEFAULT_TARGET_CHUNK_BYTES = 512 * 1024;\nconst DEFAULT_MAX_CHUNK_BYTES = 1024 * 1024;\nconst DEFAULT_MAX_CHUNK_AGE_MS = 5000;\nconst DEFAULT_SNAPSHOT_INTERVAL_MS = 300_000;\nconst DEFAULT_SNAPSHOT_BYTES_THRESHOLD = 256 * 1024;\nconst DEFAULT_MAX_READ_LIMIT = 10_000;\nconst DEFAULT_MAX_ACTIVE_SPANS = 10_000;\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\ntype AttributeMap = Map<string, unknown>;\n\ntype SpanState = {\n\tspanId: SpanId;\n\ttraceId: TraceId;\n\tparentSpanId: SpanId | null;\n\tname: string;\n\tkind: number;\n\ttraceState: string | null;\n\tflags: number;\n\tattributes: AttributeMap;\n\tdroppedAttributesCount: number;\n\tlinks: LinkState[];\n\tdroppedLinksCount: number;\n\tstatus: SpanStatus | null;\n\tstartTimeUnixNs: bigint;\n\tdepth: number;\n\tbytesSinceSnapshot: number;\n\tlastSnapshotMonoMs: number;\n};\n\ntype LinkState = {\n\ttraceId: TraceId;\n\tspanId: SpanId;\n\ttraceState: string | null;\n\tattributes: AttributeMap;\n\tdroppedAttributesCount: number;\n};\n\ntype ChunkState = {\n\tbucketStartSec: number;\n\tchunkId: number;\n\tbaseUnixNs: bigint;\n\tstrings: string[];\n\tstringIds: Map<string, number>;\n\trecords: TraceRecord[];\n\tsizeBytes: number;\n\tcreatedAtMonoMs: number;\n};\n\ntype PendingChunk = {\n\tkey: Uint8Array;\n\tbucketStartSec: number;\n\tchunkId: number;\n\tchunk: Chunk;\n\tbytes: Uint8Array;\n\tmaxRecordNs: bigint;\n};\n\nconst spanContext = new AsyncLocalStorage<SpanHandle | null>();\n\nfunction spanKey(spanId: Uint8Array | SpanId): string {\n\treturn hexFromBytes(normalizeBytes(spanId));\n}\n\nfunction toArrayBuffer(bytes: Uint8Array): ArrayBuffer {\n\tconst copy = new Uint8Array(bytes.byteLength);\n\tcopy.set(bytes);\n\treturn copy.buffer;\n}\n\nfunction toUint8Array(buffer: ArrayBuffer): Uint8Array {\n\treturn new Uint8Array(buffer);\n}\n\nfunction normalizeBytes(input: Uint8Array | ArrayBuffer): Uint8Array {\n\treturn input instanceof Uint8Array ? input : new Uint8Array(input);\n}\n\nexport function createTraces(\n\toptions: TracesOptions<OtlpResource>,\n): Traces<OtlpExportTraceServiceRequestJson> {\n\tconst driver = options.driver;\n\tconst bucketSizeSec = options.bucketSizeSec ?? DEFAULT_BUCKET_SIZE_SEC;\n\tconst maxChunkBytes = options.maxChunkBytes ?? DEFAULT_MAX_CHUNK_BYTES;\n\tconst targetChunkBytes = Math.min(\n\t\toptions.targetChunkBytes ?? DEFAULT_TARGET_CHUNK_BYTES,\n\t\tmaxChunkBytes,\n\t);\n\tconst maxChunkAgeMs = options.maxChunkAgeMs ?? DEFAULT_MAX_CHUNK_AGE_MS;\n\tconst snapshotIntervalMs =\n\t\toptions.snapshotIntervalMs ?? DEFAULT_SNAPSHOT_INTERVAL_MS;\n\tconst snapshotBytesThreshold =\n\t\toptions.snapshotBytesThreshold ?? DEFAULT_SNAPSHOT_BYTES_THRESHOLD;\n\tconst maxActiveSpans = options.maxActiveSpans ?? DEFAULT_MAX_ACTIVE_SPANS;\n\tconst maxReadLimit = options.maxReadLimit ?? DEFAULT_MAX_READ_LIMIT;\n\tconst resource = options.resource;\n\n\tconst timeAnchor = {\n\t\tunixMs: Date.now(),\n\t\tmonoMs: performance.now(),\n\t};\n\n\tconst activeSpans = new Map<string, SpanState>();\n\tconst activeSpanRefs = new Map<string, ActiveSpanRef>();\n\tconst pendingChunks: PendingChunk[] = [];\n\tlet writeChain = Promise.resolve();\n\tconst bucketChunkCounters = new Map<number, number>();\n\n\tfunction nowUnixMs(): number {\n\t\treturn timeAnchor.unixMs + (performance.now() - timeAnchor.monoMs);\n\t}\n\n\tfunction nowUnixNs(anchor: { unixMs: number; monoMs: number }): bigint {\n\t\tconst unixMs = anchor.unixMs + (performance.now() - anchor.monoMs);\n\t\tconst wholeMs = Math.floor(unixMs);\n\t\tconst fracMs = unixMs - wholeMs;\n\t\treturn BigInt(wholeMs) * 1_000_000n + BigInt(Math.floor(fracMs * 1_000_000));\n\t}\n\n\tfunction createChunkState(bucketStartSec: number): ChunkState {\n\t\treturn {\n\t\t\tbucketStartSec,\n\t\t\tchunkId: nextChunkId(bucketStartSec),\n\t\t\tbaseUnixNs: BigInt(bucketStartSec) * 1_000_000_000n,\n\t\t\tstrings: [],\n\t\t\tstringIds: new Map(),\n\t\t\trecords: [],\n\t\t\tsizeBytes: 0,\n\t\t\tcreatedAtMonoMs: performance.now(),\n\t\t};\n\t}\n\n\tfunction nextChunkId(bucketStartSec: number): number {\n\t\tconst current = bucketChunkCounters.get(bucketStartSec) ?? 0;\n\t\tbucketChunkCounters.set(bucketStartSec, current + 1);\n\t\treturn current;\n\t}\n\n\tconst currentChunk = createChunkState(\n\t\tcomputeBucketStartSec(nowUnixNs(timeAnchor), bucketSizeSec),\n\t);\n\n\tfunction computeBucketStartSec(\n\t\tabsoluteUnixNs: bigint,\n\t\tbucketSize: number,\n\t): number {\n\t\tconst sec = absoluteUnixNs / 1_000_000_000n;\n\t\tconst bucket = sec / BigInt(bucketSize);\n\t\treturn Number(bucket * BigInt(bucketSize));\n\t}\n\n\tfunction internString(value: string): StringId {\n\t\tconst existing = currentChunk.stringIds.get(value);\n\t\tif (existing !== undefined) {\n\t\t\treturn existing;\n\t\t}\n\t\tconst id = currentChunk.strings.length;\n\t\tcurrentChunk.strings.push(value);\n\t\tcurrentChunk.stringIds.set(value, id);\n\t\treturn id;\n\t}\n\n\tfunction encodeAttributes(\n\t\tattributes?: Record<string, unknown>,\n\t): { attributes: Attributes; dropped: number } {\n\t\tconst list: KeyValue[] = [];\n\t\tlet dropped = 0;\n\t\tif (!attributes) {\n\t\t\treturn { attributes: list, dropped };\n\t\t}\n\t\tfor (const [key, value] of Object.entries(attributes)) {\n\t\t\tconst sanitized = sanitizeAttributeValue(value);\n\t\t\tif (sanitized === undefined) {\n\t\t\t\tdropped++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst encoded = encodeCbor(sanitized);\n\t\t\t\tlist.push({ key: internString(key), value: toArrayBuffer(encoded) });\n\t\t\t} catch {\n\t\t\t\tdropped++;\n\t\t\t}\n\t\t}\n\t\treturn { attributes: list, dropped };\n\t}\n\n\tfunction sanitizeAttributeValue(value: unknown): unknown | undefined {\n\t\tif (value === undefined || typeof value === \"function\") {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (typeof value === \"symbol\") {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (value instanceof Map) {\n\t\t\tconst obj: Record<string, unknown> = {};\n\t\t\tfor (const [key, mapValue] of value.entries()) {\n\t\t\t\tif (typeof key !== \"string\") {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst sanitized = sanitizeAttributeValue(mapValue);\n\t\t\t\tif (sanitized !== undefined) {\n\t\t\t\t\tobj[key] = sanitized;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn obj;\n\t\t}\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.map((entry) => sanitizeAttributeValue(entry))\n\t\t\t\t.filter((entry) => entry !== undefined);\n\t\t}\n\t\treturn value;\n\t}\n\n\tfunction encodeLinks(\n\t\tlinks?: StartSpanOptions[\"links\"],\n\t): { links: SpanLink[]; dropped: number } {\n\t\tconst result: SpanLink[] = [];\n\t\tlet dropped = 0;\n\t\tif (!links) {\n\t\t\treturn { links: result, dropped };\n\t\t}\n\t\tfor (const link of links) {\n\t\t\tconst { attributes, dropped: droppedAttributes } = encodeAttributes(\n\t\t\t\tlink.attributes,\n\t\t\t);\n\t\t\tresult.push({\n\t\t\t\ttraceId: toArrayBuffer(link.traceId),\n\t\t\t\tspanId: toArrayBuffer(link.spanId),\n\t\t\t\ttraceState: link.traceState ?? null,\n\t\t\t\tattributes,\n\t\t\t\tdroppedAttributesCount: droppedAttributes,\n\t\t\t});\n\t\t}\n\t\treturn { links: result, dropped };\n\t}\n\n\tfunction createSpanStartRecord(\n\t\tspanId: SpanId,\n\t\ttraceId: TraceId,\n\t\tname: string,\n\t\toptions: StartSpanOptions | undefined,\n\t\tparentSpanId: SpanId | null,\n\t): SpanStart {\n\t\tconst { attributes, dropped } = encodeAttributes(options?.attributes);\n\t\tconst { links, dropped: droppedLinks } = encodeLinks(options?.links);\n\t\treturn {\n\t\t\ttraceId,\n\t\t\tspanId,\n\t\t\tparentSpanId,\n\t\t\tname: internString(name),\n\t\t\tkind: options?.kind ?? 0,\n\t\t\ttraceState: options?.traceState ?? null,\n\t\t\tflags: options?.flags ?? 0,\n\t\t\tattributes,\n\t\t\tdroppedAttributesCount: dropped,\n\t\t\tlinks,\n\t\t\tdroppedLinksCount: droppedLinks,\n\t\t};\n\t}\n\n\tfunction createSpanUpdateRecord(\n\t\tspanId: SpanId,\n\t\toptions: UpdateSpanOptions,\n\t): SpanUpdate {\n\t\tconst { attributes, dropped } = encodeAttributes(options.attributes);\n\t\treturn {\n\t\t\tspanId,\n\t\t\tattributes,\n\t\t\tdroppedAttributesCount: dropped,\n\t\t\tstatus: options.status ? toBareStatus(options.status) : null,\n\t\t};\n\t}\n\n\tfunction createSpanEventRecord(\n\t\tspanId: SpanId,\n\t\tname: string,\n\t\toptions: EventOptions | undefined,\n\t): SpanEvent {\n\t\tconst { attributes, dropped } = encodeAttributes(options?.attributes);\n\t\treturn {\n\t\t\tspanId,\n\t\t\tname: internString(name),\n\t\t\tattributes,\n\t\t\tdroppedAttributesCount: dropped,\n\t\t};\n\t}\n\n\tfunction createSpanEndRecord(\n\t\tspanId: SpanId,\n\t\toptions: EndSpanOptions | undefined,\n\t): SpanEnd {\n\t\treturn {\n\t\t\tspanId,\n\t\t\tstatus: options?.status ? toBareStatus(options.status) : null,\n\t\t};\n\t}\n\n\tfunction createSpanSnapshotRecord(state: SpanState): SpanSnapshot {\n\t\tconst { attributes, dropped } = encodeAttributeMap(state.attributes);\n\t\tconst { links, dropped: droppedLinks } = encodeLinkState(state.links);\n\t\treturn {\n\t\t\ttraceId: state.traceId,\n\t\t\tspanId: state.spanId,\n\t\t\tparentSpanId: state.parentSpanId,\n\t\t\tname: internString(state.name),\n\t\t\tkind: state.kind,\n\t\t\tstartTimeUnixNs: state.startTimeUnixNs,\n\t\t\ttraceState: state.traceState,\n\t\t\tflags: state.flags,\n\t\t\tattributes,\n\t\t\tdroppedAttributesCount: state.droppedAttributesCount + dropped,\n\t\t\tlinks,\n\t\t\tdroppedLinksCount: state.droppedLinksCount + droppedLinks,\n\t\t\tstatus: state.status,\n\t\t};\n\t}\n\n\tfunction encodeAttributeMap(\n\t\tattributes: AttributeMap,\n\t): { attributes: Attributes; dropped: number } {\n\t\tconst list: KeyValue[] = [];\n\t\tlet dropped = 0;\n\t\tfor (const [key, value] of attributes.entries()) {\n\t\t\tconst sanitized = sanitizeAttributeValue(value);\n\t\t\tif (sanitized === undefined) {\n\t\t\t\tdropped++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst encoded = encodeCbor(sanitized);\n\t\t\t\tlist.push({ key: internString(key), value: toArrayBuffer(encoded) });\n\t\t\t} catch {\n\t\t\t\tdropped++;\n\t\t\t}\n\t\t}\n\t\treturn { attributes: list, dropped };\n\t}\n\n\tfunction buildAttributeMapFromInput(\n\t\tattributes?: Record<string, unknown>,\n\t): AttributeMap {\n\t\tconst map = new Map<string, unknown>();\n\t\tif (!attributes) {\n\t\t\treturn map;\n\t\t}\n\t\tfor (const [key, value] of Object.entries(attributes)) {\n\t\t\tconst sanitized = sanitizeAttributeValue(value);\n\t\t\tif (sanitized !== undefined) {\n\t\t\t\tmap.set(key, sanitized);\n\t\t\t}\n\t\t}\n\t\treturn map;\n\t}\n\n\tfunction decodeAttributeList(\n\t\tattributes: Attributes,\n\t\tstrings: readonly string[],\n\t): AttributeMap {\n\t\tconst map = new Map<string, unknown>();\n\t\tfor (const kv of attributes) {\n\t\t\tconst key = strings[kv.key] ?? \"\";\n\t\t\ttry {\n\t\t\t\tmap.set(key, decodeCbor(toUint8Array(kv.value)) as unknown);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\treturn map;\n\t}\n\n\tfunction decodeLinks(\n\t\tlinks: readonly SpanLink[],\n\t\tstrings: readonly string[],\n\t): LinkState[] {\n\t\treturn links.map((link) => ({\n\t\t\ttraceId: link.traceId,\n\t\t\tspanId: link.spanId,\n\t\t\ttraceState: link.traceState,\n\t\t\tattributes: decodeAttributeList(link.attributes, strings),\n\t\t\tdroppedAttributesCount: link.droppedAttributesCount,\n\t\t}));\n\t}\n\n\tfunction encodeLinkState(\n\t\tlinks: LinkState[],\n\t): { links: SpanLink[]; dropped: number } {\n\t\tconst result: SpanLink[] = [];\n\t\tlet dropped = 0;\n\t\tfor (const link of links) {\n\t\t\tconst { attributes, dropped: droppedAttributes } = encodeAttributeMap(\n\t\t\t\tlink.attributes,\n\t\t\t);\n\t\t\tresult.push({\n\t\t\t\ttraceId: link.traceId,\n\t\t\t\tspanId: link.spanId,\n\t\t\t\ttraceState: link.traceState,\n\t\t\t\tattributes,\n\t\t\t\tdroppedAttributesCount: droppedAttributes,\n\t\t\t});\n\t\t}\n\t\treturn { links: result, dropped };\n\t}\n\n\tfunction appendRecord(\n\t\tbuildBody: () => RecordBody,\n\t\tprovidedTimeUnixMs?: number,\n\t): { recordIndex: number; encodedBytes: number; body: RecordBody } {\n\t\tconst absoluteUnixNs =\n\t\t\tprovidedTimeUnixMs !== undefined\n\t\t\t\t? BigInt(Math.floor(providedTimeUnixMs)) * 1_000_000n\n\t\t\t\t: nowUnixNs(timeAnchor);\n\t\tconst recordBucketStart = computeBucketStartSec(\n\t\t\tabsoluteUnixNs,\n\t\t\tbucketSizeSec,\n\t\t);\n\t\tif (recordBucketStart !== currentChunk.bucketStartSec) {\n\t\t\tflushChunk();\n\t\t\tresetChunkState(recordBucketStart);\n\t\t}\n\t\tif (performance.now() - currentChunk.createdAtMonoMs >= maxChunkAgeMs) {\n\t\t\tflushChunk();\n\t\t\tresetChunkState(recordBucketStart);\n\t\t}\n\t\tlet body = buildBody();\n\t\tconst timeOffsetNs = absoluteUnixNs - currentChunk.baseUnixNs;\n\t\tlet record: TraceRecord = { timeOffsetNs, body };\n\t\tlet encodedRecord = encodeRecord(record);\n\t\tif (encodedRecord.length > maxChunkBytes) {\n\t\t\tthrow new Error(\"Record exceeds maxChunkBytes\");\n\t\t}\n\t\tif (currentChunk.sizeBytes + encodedRecord.length > targetChunkBytes) {\n\t\t\tflushChunk();\n\t\t\tresetChunkState(recordBucketStart);\n\t\t\tbody = buildBody();\n\t\t\trecord = { timeOffsetNs, body };\n\t\t\tencodedRecord = encodeRecord(record);\n\t\t\tif (encodedRecord.length > maxChunkBytes) {\n\t\t\t\tthrow new Error(\"Record exceeds maxChunkBytes\");\n\t\t\t}\n\t\t}\n\t\tcurrentChunk.records.push(record);\n\t\tcurrentChunk.sizeBytes += encodedRecord.length;\n\t\tconst recordIndex = currentChunk.records.length - 1;\n\t\treturn { recordIndex, encodedBytes: encodedRecord.length, body };\n\t}\n\n\tfunction flushChunk(): boolean {\n\t\tif (currentChunk.records.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst chunk: Chunk = {\n\t\t\tbaseUnixNs: currentChunk.baseUnixNs,\n\t\t\tstrings: currentChunk.strings,\n\t\t\trecords: currentChunk.records,\n\t\t\tactiveSpans: Array.from(activeSpanRefs.values()),\n\t\t};\n\t\tconst bytes = CHUNK_VERSIONED.serializeWithEmbeddedVersion(\n\t\t\tchunk,\n\t\t\tCURRENT_VERSION,\n\t\t);\n\t\tconst key = buildChunkKey(currentChunk.bucketStartSec, currentChunk.chunkId);\n\t\tconst maxRecordNs =\n\t\t\tchunk.records.length > 0\n\t\t\t\t? chunk.baseUnixNs +\n\t\t\t\t\tchunk.records[chunk.records.length - 1].timeOffsetNs\n\t\t\t\t: chunk.baseUnixNs;\n\t\tconst pending: PendingChunk = {\n\t\t\tkey,\n\t\t\tbucketStartSec: currentChunk.bucketStartSec,\n\t\t\tchunkId: currentChunk.chunkId,\n\t\t\tchunk,\n\t\t\tbytes,\n\t\t\tmaxRecordNs,\n\t\t};\n\t\tpendingChunks.push(pending);\n\t\tenqueueWrite(pending);\n\t\treturn true;\n\t}\n\n\tfunction enqueueWrite(pending: PendingChunk): void {\n\t\twriteChain = writeChain.then(async () => {\n\t\t\tawait driver.set(pending.key, pending.bytes);\n\t\t\tconst index = pendingChunks.indexOf(pending);\n\t\t\tif (index !== -1) {\n\t\t\t\tpendingChunks.splice(index, 1);\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction resetChunkState(bucketStartSec: number): void {\n\t\tcurrentChunk.bucketStartSec = bucketStartSec;\n\t\tcurrentChunk.chunkId = nextChunkId(bucketStartSec);\n\t\tcurrentChunk.baseUnixNs = BigInt(bucketStartSec) * 1_000_000_000n;\n\t\tcurrentChunk.strings = [];\n\t\tcurrentChunk.stringIds = new Map();\n\t\tcurrentChunk.records = [];\n\t\tcurrentChunk.sizeBytes = 0;\n\t\tcurrentChunk.createdAtMonoMs = performance.now();\n\t}\n\n\tfunction enforceMaxActiveSpans(): void {\n\t\tif (activeSpans.size <= maxActiveSpans) {\n\t\t\treturn;\n\t\t}\n\t\tconst candidates = Array.from(activeSpans.values()).sort((a, b) => {\n\t\t\tif (a.depth !== b.depth) {\n\t\t\t\treturn b.depth - a.depth;\n\t\t\t}\n\t\t\tif (a.startTimeUnixNs > b.startTimeUnixNs) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (a.startTimeUnixNs < b.startTimeUnixNs) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n\t\tfor (const span of candidates) {\n\t\t\tdropSpan(span.spanId);\n\t\t\tif (activeSpans.size <= maxActiveSpans) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction dropSpan(spanId: SpanId | Uint8Array): void {\n\t\tconst key = spanKey(spanId);\n\t\tactiveSpans.delete(key);\n\t\tactiveSpanRefs.delete(key);\n\t}\n\n\tfunction assertActive(handle: SpanHandle): void {\n\t\tif (!isActive(handle)) {\n\t\t\tthrow new Error(\"Span handle is not active\");\n\t\t}\n\t}\n\n\tfunction isActive(handle: SpanHandle): boolean {\n\t\treturn activeSpans.has(spanKey(handle.spanId));\n\t}\n\n\tfunction startSpan(name: string, options?: StartSpanOptions): SpanHandle {\n\t\tconst parent = options?.parent ?? getCurrentSpan();\n\t\tif (parent) {\n\t\t\tassertActive(parent);\n\t\t}\n\t\tconst spanIdBytes = randomBytes(SPAN_ID_BYTES);\n\t\tconst traceIdBytes = parent ? parent.traceId : randomBytes(TRACE_ID_BYTES);\n\t\tconst spanId = toArrayBuffer(spanIdBytes);\n\t\tconst traceId = toArrayBuffer(traceIdBytes);\n\t\tconst parentSpanId = parent ? toArrayBuffer(parent.spanId) : null;\n\t\tconst { recordIndex, encodedBytes, body } = appendRecord(() => ({\n\t\t\ttag: \"SpanStart\",\n\t\t\tval: createSpanStartRecord(\n\t\t\t\tspanId,\n\t\t\t\ttraceId,\n\t\t\t\tname,\n\t\t\t\toptions,\n\t\t\t\tparentSpanId,\n\t\t\t),\n\t\t}));\n\t\tconst spanStart = body.val as SpanStart;\n\t\tconst key = spanKey(spanId);\n\t\tconst startKey: SpanRecordKey = {\n\t\t\tprefix: KEY_PREFIX.DATA,\n\t\t\tbucketStartSec: BigInt(currentChunk.bucketStartSec),\n\t\t\tchunkId: currentChunk.chunkId,\n\t\t\trecordIndex,\n\t\t};\n\t\tactiveSpanRefs.set(key, {\n\t\t\tspanId,\n\t\t\tstartKey,\n\t\t\tlatestSnapshotKey: null,\n\t\t});\n\t\tconst depth = computeSpanDepth(parentSpanId);\n\t\tactiveSpans.set(key, {\n\t\t\tspanId,\n\t\t\ttraceId,\n\t\t\tparentSpanId,\n\t\t\tname,\n\t\t\tkind: options?.kind ?? 0,\n\t\t\ttraceState: options?.traceState ?? null,\n\t\t\tflags: options?.flags ?? 0,\n\t\t\tattributes: buildAttributeMapFromInput(options?.attributes),\n\t\t\tdroppedAttributesCount: spanStart.droppedAttributesCount,\n\t\t\tlinks: decodeLinks(spanStart.links, currentChunk.strings),\n\t\t\tdroppedLinksCount: spanStart.droppedLinksCount,\n\t\t\tstatus: null,\n\t\t\tstartTimeUnixNs:\n\t\t\t\tcurrentChunk.baseUnixNs + currentChunk.records[recordIndex].timeOffsetNs,\n\t\t\tdepth,\n\t\t\tbytesSinceSnapshot: encodedBytes,\n\t\t\tlastSnapshotMonoMs: performance.now(),\n\t\t});\n\t\tenforceMaxActiveSpans();\n\t\treturn {\n\t\t\tspanId: spanIdBytes,\n\t\t\ttraceId: traceIdBytes,\n\t\t\tisActive: () => activeSpans.has(key),\n\t\t};\n\t}\n\n\tfunction updateSpan(handle: SpanHandle, options: UpdateSpanOptions): void {\n\t\tif (!options.attributes && !options.status) {\n\t\t\treturn;\n\t\t}\n\t\tassertActive(handle);\n\t\tconst { encodedBytes, body } = appendRecord(() => ({\n\t\t\ttag: \"SpanUpdate\",\n\t\t\tval: createSpanUpdateRecord(toArrayBuffer(handle.spanId), options),\n\t\t}));\n\t\tconst spanUpdate = body.val as SpanUpdate;\n\t\tconst state = activeSpans.get(spanKey(handle.spanId));\n\t\tif (!state) {\n\t\t\treturn;\n\t\t}\n\t\tif (options.attributes) {\n\t\t\tconst updates = buildAttributeMapFromInput(options.attributes);\n\t\t\tfor (const [key, value] of updates.entries()) {\n\t\t\t\tstate.attributes.set(key, value);\n\t\t\t}\n\t\t}\n\t\tstate.droppedAttributesCount += spanUpdate.droppedAttributesCount;\n\t\tif (options.status) {\n\t\t\tstate.status = toBareStatus(options.status);\n\t\t}\n\t\tstate.bytesSinceSnapshot += encodedBytes;\n\t\tmaybeSnapshot(handle.spanId, state);\n\t}\n\n\tfunction setAttributes(\n\t\thandle: SpanHandle,\n\t\tattributes: Record<string, unknown>,\n\t): void {\n\t\tupdateSpan(handle, { attributes });\n\t}\n\n\tfunction setStatus(handle: SpanHandle, status: SpanStatusInput): void {\n\t\tupdateSpan(handle, { status });\n\t}\n\n\tfunction emitEvent(\n\t\thandle: SpanHandle,\n\t\tname: string,\n\t\toptions?: EventOptions,\n\t): void {\n\t\tassertActive(handle);\n\t\tconst { encodedBytes } = appendRecord(\n\t\t\t() => ({\n\t\t\t\ttag: \"SpanEvent\",\n\t\t\t\tval: createSpanEventRecord(toArrayBuffer(handle.spanId), name, options),\n\t\t\t}),\n\t\t\toptions?.timeUnixMs,\n\t\t);\n\t\tconst state = activeSpans.get(spanKey(handle.spanId));\n\t\tif (state) {\n\t\t\tstate.bytesSinceSnapshot += encodedBytes;\n\t\t\tmaybeSnapshot(handle.spanId, state);\n\t\t}\n\t}\n\n\tfunction endSpan(handle: SpanHandle, options?: EndSpanOptions): void {\n\t\tassertActive(handle);\n\t\tappendRecord(() => ({\n\t\t\ttag: \"SpanEnd\",\n\t\t\tval: createSpanEndRecord(toArrayBuffer(handle.spanId), options),\n\t\t}));\n\t\tdropSpan(handle.spanId);\n\t}\n\n\tfunction maybeSnapshot(spanId: SpanId | Uint8Array, state: SpanState): void {\n\t\tif (\n\t\t\tstate.bytesSinceSnapshot < snapshotBytesThreshold &&\n\t\t\tperformance.now() - state.lastSnapshotMonoMs < snapshotIntervalMs\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst { recordIndex } = appendRecord(() => ({\n\t\t\ttag: \"SpanSnapshot\",\n\t\t\tval: createSpanSnapshotRecord(state),\n\t\t}));\n\t\tconst key = spanKey(spanId);\n\t\tconst ref = activeSpanRefs.get(key);\n\t\tif (ref) {\n\t\t\tactiveSpanRefs.set(key, {\n\t\t\t\t...ref,\n\t\t\t\tlatestSnapshotKey: {\n\t\t\t\tprefix: KEY_PREFIX.DATA,\n\t\t\t\tbucketStartSec: BigInt(currentChunk.bucketStartSec),\n\t\t\t\tchunkId: currentChunk.chunkId,\n\t\t\t\trecordIndex,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tstate.bytesSinceSnapshot = 0;\n\t\tstate.lastSnapshotMonoMs = performance.now();\n\t}\n\n\tasync function flush(): Promise<boolean> {\n\t\tconst didFlush = flushChunk();\n\t\tif (didFlush) {\n\t\t\tresetChunkState(currentChunk.bucketStartSec);\n\t\t}\n\t\tawait writeChain;\n\t\treturn didFlush;\n\t}\n\n\tfunction withSpan<T>(handle: SpanHandle, fn: () => T): T {\n\t\treturn spanContext.run(handle, fn);\n\t}\n\n\tfunction getCurrentSpan(): SpanHandle | null {\n\t\tconst handle = spanContext.getStore() ?? null;\n\t\tif (!handle) {\n\t\t\treturn null;\n\t\t}\n\t\treturn isActive(handle) ? handle : null;\n\t}\n\n\tasync function readRangeWire(\n\t\toptions: ReadRangeOptions,\n\t): Promise<ReadRangeWire> {\n\t\tconst startMs = Math.floor(options.startMs);\n\t\tconst endMs = Math.floor(options.endMs);\n\t\tif (options.limit <= 0 || endMs <= startMs) {\n\t\t\treturn {\n\t\t\t\tstartTimeMs: BigInt(startMs),\n\t\t\t\tendTimeMs: BigInt(endMs),\n\t\t\t\tlimit: 0,\n\t\t\t\tclamped: false,\n\t\t\t\tbaseChunks: [],\n\t\t\t\tchunks: [],\n\t\t\t};\n\t\t}\n\t\tconst limitWasClamped = options.limit > maxReadLimit;\n\t\tconst limit = Math.min(options.limit, maxReadLimit);\n\t\tconst startNs = BigInt(startMs) * 1_000_000n;\n\t\tconst endNs = BigInt(endMs) * 1_000_000n;\n\n\t\tconst previousChunk = await findPreviousChunk(startNs, bucketSizeSec);\n\t\tconst activeRefs = previousChunk?.activeSpans ?? [];\n\t\tconst baseChunks: Chunk[] = [];\n\t\tfor (const ref of activeRefs) {\n\t\t\tconst baseRecord = await loadBaseRecord(ref);\n\t\t\tif (!baseRecord) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst baseUnixNs =\n\t\t\t\tbaseRecord.absNs - baseRecord.record.timeOffsetNs;\n\t\t\tbaseChunks.push({\n\t\t\t\tbaseUnixNs,\n\t\t\t\tstrings: baseRecord.strings,\n\t\t\t\trecords: [baseRecord.record],\n\t\t\t\tactiveSpans: [],\n\t\t\t});\n\t\t}\n\n\t\tconst chunks: Chunk[] = [];\n\t\tconst diskChunks = await listRangeChunks(startNs, endNs, bucketSizeSec);\n\t\tfor (const chunk of diskChunks) {\n\t\t\tconst filtered = filterChunkRecords(chunk.chunk, startNs, endNs);\n\t\t\tif (filtered) {\n\t\t\t\tchunks.push(filtered);\n\t\t\t}\n\t\t}\n\t\tfor (const pending of pendingChunks) {\n\t\t\tconst filtered = filterChunkRecords(pending.chunk, startNs, endNs);\n\t\t\tif (filtered) {\n\t\t\t\tchunks.push(filtered);\n\t\t\t}\n\t\t}\n\t\tconst currentFiltered = filterChunkRecords(\n\t\t\tcurrentChunkAsChunk(),\n\t\t\tstartNs,\n\t\t\tendNs,\n\t\t);\n\t\tif (currentFiltered) {\n\t\t\tchunks.push(currentFiltered);\n\t\t}\n\n\t\tconst reachedSpanLimit = countUniqueSpanIds(chunks, limit);\n\t\treturn {\n\t\t\tstartTimeMs: BigInt(startMs),\n\t\t\tendTimeMs: BigInt(endMs),\n\t\t\tlimit,\n\t\t\tclamped: limitWasClamped || reachedSpanLimit,\n\t\t\tbaseChunks,\n\t\t\tchunks,\n\t\t};\n\t}\n\n\tasync function readRange(\n\t\toptions: ReadRangeOptions,\n\t): Promise<ReadRangeResult<OtlpExportTraceServiceRequestJson>> {\n\t\tconst wire = await readRangeWire(options);\n\t\treturn readRangeWireToOtlp(wire, resource);\n\t}\n\n\tfunction filterChunkRecords(\n\t\tchunk: Chunk,\n\t\tstartNs: bigint,\n\t\tendNs: bigint,\n\t): Chunk | null {\n\t\tconst filtered: TraceRecord[] = [];\n\t\tfor (const record of chunk.records) {\n\t\t\tconst absNs = chunk.baseUnixNs + record.timeOffsetNs;\n\t\t\tif (absNs < startNs || absNs >= endNs) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfiltered.push(record);\n\t\t}\n\t\tif (filtered.length === 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tbaseUnixNs: chunk.baseUnixNs,\n\t\t\tstrings: chunk.strings,\n\t\t\trecords: filtered,\n\t\t\tactiveSpans: chunk.activeSpans,\n\t\t};\n\t}\n\n\tfunction countUniqueSpanIds(chunks: Chunk[], limit: number): boolean {\n\t\tif (limit <= 0) {\n\t\t\treturn true;\n\t\t}\n\t\tconst seen = new Set<string>();\n\t\tfor (const chunk of chunks) {\n\t\t\tfor (const record of chunk.records) {\n\t\t\t\tconst key = spanKey(recordSpanId(record.body));\n\t\t\t\tif (seen.has(key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (seen.size >= limit) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tseen.add(key);\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction recordSpanId(body: RecordBody): SpanId {\n\t\tswitch (body.tag) {\n\t\t\tcase \"SpanStart\":\n\t\t\t\treturn body.val.spanId;\n\t\t\tcase \"SpanEvent\":\n\t\t\t\treturn body.val.spanId;\n\t\t\tcase \"SpanUpdate\":\n\t\t\t\treturn body.val.spanId;\n\t\t\tcase \"SpanEnd\":\n\t\t\t\treturn body.val.spanId;\n\t\t\tcase \"SpanSnapshot\":\n\t\t\t\treturn body.val.spanId;\n\t\t}\n\t}\n\n\tfunction currentChunkAsChunk(): Chunk {\n\t\treturn {\n\t\t\tbaseUnixNs: currentChunk.baseUnixNs,\n\t\t\tstrings: currentChunk.strings,\n\t\t\trecords: currentChunk.records,\n\t\t\tactiveSpans: Array.from(activeSpanRefs.values()),\n\t\t};\n\t}\n\n\tasync function listRangeChunks(\n\t\tstartNs: bigint,\n\t\tendNs: bigint,\n\t\tbucketSize: number,\n\t): Promise<Array<{ key: Uint8Array; chunk: Chunk }>> {\n\t\tconst startBucket = computeBucketStartSec(startNs, bucketSize);\n\t\tconst endBucket = computeBucketStartSec(endNs, bucketSize);\n\t\tconst startKey = buildChunkKey(startBucket, 0);\n\t\tconst endKey = buildChunkKey(endBucket + bucketSize, 0);\n\t\tconst entries = await driver.listRange(startKey, endKey);\n\t\tconst output: Array<{ key: Uint8Array; chunk: Chunk }> = [];\n\t\tfor (const entry of entries) {\n\t\t\tconst chunk = deserializeChunkSafe(entry.value);\n\t\t\tif (!chunk) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\toutput.push({ key: entry.key, chunk });\n\t\t}\n\t\treturn output;\n\t}\n\n\tasync function findPreviousChunk(\n\t\tstartNs: bigint,\n\t\tbucketSize: number,\n\t): Promise<Chunk | null> {\n\t\tconst startBucket = computeBucketStartSec(startNs, bucketSize);\n\t\tlet cursor = {\n\t\t\tbucketStartSec: startBucket,\n\t\t\tchunkId: AFTER_MAX_CHUNK_ID,\n\t\t};\n\n\t\twhile (true) {\n\t\t\tconst pendingCandidate = findLatestPendingBefore(cursor);\n\t\t\tconst diskCandidate = await findLatestDiskBefore(cursor);\n\t\t\tconst candidate = selectLatestCandidate(\n\t\t\t\tpendingCandidate,\n\t\t\t\tdiskCandidate,\n\t\t\t);\n\t\t\tif (!candidate) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (candidate.maxRecordNs < startNs) {\n\t\t\t\treturn candidate.chunk;\n\t\t\t}\n\t\t\tcursor = {\n\t\t\t\tbucketStartSec: candidate.bucketStartSec,\n\t\t\t\tchunkId: candidate.chunkId,\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction findLatestPendingBefore(cursor: {\n\t\tbucketStartSec: number;\n\t\tchunkId: number;\n\t}): PendingChunk | null {\n\t\tlet best: PendingChunk | null = null;\n\t\tfor (const pending of pendingChunks) {\n\t\t\tif (compareChunkKey(pending, cursor) >= 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!best || compareChunkKey(pending, best) > 0) {\n\t\t\t\tbest = pending;\n\t\t\t}\n\t\t}\n\t\treturn best;\n\t}\n\n\tasync function findLatestDiskBefore(cursor: {\n\t\tbucketStartSec: number;\n\t\tchunkId: number;\n\t}): Promise<PendingChunk | null> {\n\t\tconst startKey = buildChunkKey(0, 0);\n\t\tlet endKey = buildChunkKey(cursor.bucketStartSec, cursor.chunkId);\n\n\t\twhile (true) {\n\t\t\tconst entries = await driver.listRange(startKey, endKey, {\n\t\t\t\treverse: true,\n\t\t\t\tlimit: 10,\n\t\t\t});\n\t\t\tif (entries.length === 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tfor (const entry of entries) {\n\t\t\t\tconst chunk = deserializeChunkSafe(entry.value);\n\t\t\t\tif (!chunk) {\n\t\t\t\t\tendKey = entry.key;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst { bucketStartSec, chunkId } = decodeChunkKey(entry.key);\n\t\t\t\tconst maxRecordNs =\n\t\t\t\t\tchunk.records.length > 0\n\t\t\t\t\t\t? chunk.baseUnixNs +\n\t\t\t\t\t\t\tchunk.records[chunk.records.length - 1].timeOffsetNs\n\t\t\t\t\t\t: chunk.baseUnixNs;\n\t\t\t\treturn {\n\t\t\t\t\tkey: entry.key,\n\t\t\t\t\tbucketStartSec,\n\t\t\t\t\tchunkId,\n\t\t\t\t\tchunk,\n\t\t\t\t\tbytes: entry.value,\n\t\t\t\t\tmaxRecordNs,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction selectLatestCandidate(\n\t\tpending: PendingChunk | null,\n\t\tdisk: PendingChunk | null,\n\t): PendingChunk | null {\n\t\tif (pending && disk) {\n\t\t\treturn compareChunkKey(pending, disk) >= 0 ? pending : disk;\n\t\t}\n\t\treturn pending ?? disk;\n\t}\n\n\tfunction compareChunkKey(\n\t\ta: { bucketStartSec: number; chunkId: number },\n\t\tb: { bucketStartSec: number; chunkId: number },\n\t): number {\n\t\tif (a.bucketStartSec !== b.bucketStartSec) {\n\t\t\treturn a.bucketStartSec - b.bucketStartSec;\n\t\t}\n\t\treturn a.chunkId - b.chunkId;\n\t}\n\n\tfunction decodeChunkKey(key: Uint8Array): {\n\t\tbucketStartSec: number;\n\t\tchunkId: number;\n\t} {\n\t\tconst tuple = unpack(Buffer.from(key)) as [number, number, number];\n\t\treturn { bucketStartSec: tuple[1], chunkId: tuple[2] };\n\t}\n\n\tfunction buildChunkKey(bucketStartSec: number, chunkId: number): Uint8Array {\n\t\treturn pack([KEY_PREFIX.DATA, bucketStartSec, chunkId]);\n\t}\n\n\tfunction deserializeChunkSafe(bytes: Uint8Array): Chunk | null {\n\t\ttry {\n\t\t\treturn CHUNK_VERSIONED.deserializeWithEmbeddedVersion(bytes);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync function loadBaseRecord(\n\t\tref: ActiveSpanRef,\n\t): Promise<\n\t\t{ record: TraceRecord; strings: readonly string[]; absNs: bigint } | null\n\t> {\n\t\tconst key = ref.latestSnapshotKey ?? ref.startKey;\n\t\tconst bucketStartSec = toNumber(key.bucketStartSec);\n\t\tconst fromMemory = findChunkInMemory(bucketStartSec, key.chunkId);\n\t\tif (fromMemory) {\n\t\t\tconst record = fromMemory.records[key.recordIndex];\n\t\t\tif (!record) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst absNs = fromMemory.baseUnixNs + record.timeOffsetNs;\n\t\t\treturn { record, strings: fromMemory.strings, absNs };\n\t\t}\n\t\tconst chunkKey = buildChunkKey(bucketStartSec, key.chunkId);\n\t\tconst bytes = await driver.get(chunkKey);\n\t\tif (!bytes) {\n\t\t\treturn null;\n\t\t}\n\t\tconst chunk = deserializeChunkSafe(bytes);\n\t\tif (!chunk) {\n\t\t\treturn null;\n\t\t}\n\t\tconst record = chunk.records[key.recordIndex];\n\t\tif (!record) {\n\t\t\treturn null;\n\t\t}\n\t\tconst absNs = chunk.baseUnixNs + record.timeOffsetNs;\n\t\treturn { record, strings: chunk.strings, absNs };\n\t}\n\n\tfunction findChunkInMemory(\n\t\tbucketStartSec: number,\n\t\tchunkId: number,\n\t): Chunk | null {\n\t\tif (\n\t\t\tcurrentChunk.bucketStartSec === bucketStartSec &&\n\t\t\tcurrentChunk.chunkId === chunkId\n\t\t) {\n\t\t\treturn currentChunkAsChunk();\n\t\t}\n\t\tconst pending = pendingChunks.find(\n\t\t\t(candidate) =>\n\t\t\t\tcandidate.bucketStartSec === bucketStartSec &&\n\t\t\t\tcandidate.chunkId === chunkId,\n\t\t);\n\t\treturn pending?.chunk ?? null;\n\t}\n\n\tfunction toNumber(value: bigint): number {\n\t\tconst asNumber = Number(value);\n\t\tif (!Number.isSafeInteger(asNumber)) {\n\t\t\tthrow new Error(\"Value exceeds safe integer range\");\n\t\t}\n\t\treturn asNumber;\n\t}\n\n\tfunction computeSpanDepth(parentSpanId: SpanId | null): number {\n\t\tif (!parentSpanId) {\n\t\t\treturn 0;\n\t\t}\n\t\tconst parent = activeSpans.get(spanKey(parentSpanId));\n\t\tif (!parent) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn parent.depth + 1;\n\t}\n\n\tfunction randomSpanId(): SpanId {\n\t\treturn toArrayBuffer(randomBytes(SPAN_ID_BYTES));\n\t}\n\n\tfunction randomTraceId(): TraceId {\n\t\treturn toArrayBuffer(randomBytes(TRACE_ID_BYTES));\n\t}\n\n\tfunction toBareStatus(status: SpanStatusInput): SpanStatus {\n\t\treturn {\n\t\t\tcode: toBareStatusCode(status.code),\n\t\t\tmessage: status.message ?? null,\n\t\t};\n\t}\n\n\tfunction toBareStatusCode(code: SpanStatusInput[\"code\"]): SpanStatusCode {\n\t\tswitch (code) {\n\t\t\tcase \"OK\":\n\t\t\t\treturn SpanStatusCode.OK;\n\t\t\tcase \"ERROR\":\n\t\t\t\treturn SpanStatusCode.ERROR;\n\t\t\tcase \"UNSET\":\n\t\t\tdefault:\n\t\t\t\treturn SpanStatusCode.UNSET;\n\t\t}\n\t}\n\n\treturn {\n\t\tstartSpan,\n\t\tupdateSpan,\n\t\tsetAttributes,\n\t\tsetStatus,\n\t\tendSpan,\n\t\temitEvent,\n\t\twithSpan,\n\t\tgetCurrentSpan,\n\t\tflush,\n\t\treadRange,\n\t\treadRangeWire,\n\t};\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { O as OtlpResource, a as OtlpExportTraceServiceRequestJson } from './otlp-Da4Yz0xC.cjs';
|
|
2
|
+
export { b as OtlpAnyValue, c as OtlpInstrumentationScope, d as OtlpKeyValue, e as OtlpResourceSpans, f as OtlpScopeSpans, g as OtlpSpan, h as OtlpSpanEvent, i as OtlpSpanLink, j as OtlpSpanStatus } from './otlp-Da4Yz0xC.cjs';
|
|
3
|
+
import { T as TracesOptions, a as Traces } from './noop-CcgjEgCu.cjs';
|
|
4
|
+
export { E as EndSpanOptions, b as EventOptions, R as ReadRangeOptions, d as ReadRangeResult, e as ReadRangeWire, S as SpanHandle, f as SpanStatusInput, g as StartSpanOptions, h as TracesDriver, U as UpdateSpanOptions, c as createNoopTraces } from './noop-CcgjEgCu.cjs';
|
|
5
|
+
import './v1-DovAIc7f.cjs';
|
|
6
|
+
|
|
7
|
+
declare function createTraces(options: TracesOptions<OtlpResource>): Traces<OtlpExportTraceServiceRequestJson>;
|
|
8
|
+
|
|
9
|
+
export { OtlpExportTraceServiceRequestJson, OtlpResource, Traces, TracesOptions, createTraces };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { O as OtlpResource, a as OtlpExportTraceServiceRequestJson } from './otlp-Da4Yz0xC.js';
|
|
2
|
+
export { b as OtlpAnyValue, c as OtlpInstrumentationScope, d as OtlpKeyValue, e as OtlpResourceSpans, f as OtlpScopeSpans, g as OtlpSpan, h as OtlpSpanEvent, i as OtlpSpanLink, j as OtlpSpanStatus } from './otlp-Da4Yz0xC.js';
|
|
3
|
+
import { T as TracesOptions, a as Traces } from './noop-D-YAZiGa.js';
|
|
4
|
+
export { E as EndSpanOptions, b as EventOptions, R as ReadRangeOptions, d as ReadRangeResult, e as ReadRangeWire, S as SpanHandle, f as SpanStatusInput, g as StartSpanOptions, h as TracesDriver, U as UpdateSpanOptions, c as createNoopTraces } from './noop-D-YAZiGa.js';
|
|
5
|
+
import './v1-DovAIc7f.js';
|
|
6
|
+
|
|
7
|
+
declare function createTraces(options: TracesOptions<OtlpResource>): Traces<OtlpExportTraceServiceRequestJson>;
|
|
8
|
+
|
|
9
|
+
export { OtlpExportTraceServiceRequestJson, OtlpResource, Traces, TracesOptions, createTraces };
|