@smoothbricks/lmao 0.1.0
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/README.md +269 -0
- package/dist/allocator.wasm +0 -0
- package/dist/bun/preload.d.ts +11 -0
- package/dist/bun/preload.d.ts.map +1 -0
- package/dist/bun/preload.js +10 -0
- package/dist/bun/trace-preload.d.ts +8 -0
- package/dist/bun/trace-preload.d.ts.map +1 -0
- package/dist/bun/trace-preload.js +12 -0
- package/dist/es.d.ts +8 -0
- package/dist/es.d.ts.map +1 -0
- package/dist/es.js +9 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/lib/JsBufferStrategy.d.ts +49 -0
- package/dist/lib/JsBufferStrategy.d.ts.map +1 -0
- package/dist/lib/JsBufferStrategy.js +60 -0
- package/dist/lib/archive/chunkCompaction.d.ts +15 -0
- package/dist/lib/archive/chunkCompaction.d.ts.map +1 -0
- package/dist/lib/archive/chunkCompaction.js +24 -0
- package/dist/lib/archive/chunkEnvelope.d.ts +21 -0
- package/dist/lib/archive/chunkEnvelope.d.ts.map +1 -0
- package/dist/lib/archive/chunkEnvelope.js +55 -0
- package/dist/lib/archive/chunkRouting.d.ts +10 -0
- package/dist/lib/archive/chunkRouting.d.ts.map +1 -0
- package/dist/lib/archive/chunkRouting.js +47 -0
- package/dist/lib/archive/chunkStats.d.ts +12 -0
- package/dist/lib/archive/chunkStats.d.ts.map +1 -0
- package/dist/lib/archive/chunkStats.js +10 -0
- package/dist/lib/archive/index.d.ts +5 -0
- package/dist/lib/archive/index.d.ts.map +1 -0
- package/dist/lib/archive/index.js +4 -0
- package/dist/lib/arrow/capacityStats.d.ts +9 -0
- package/dist/lib/arrow/capacityStats.d.ts.map +1 -0
- package/dist/lib/arrow/capacityStats.js +231 -0
- package/dist/lib/arrow/dictionaries.d.ts +27 -0
- package/dist/lib/arrow/dictionaries.d.ts.map +1 -0
- package/dist/lib/arrow/dictionaries.js +135 -0
- package/dist/lib/arrow/flechette.d.ts +40 -0
- package/dist/lib/arrow/flechette.d.ts.map +1 -0
- package/dist/lib/arrow/flechette.js +67 -0
- package/dist/lib/arrow/utils.d.ts +38 -0
- package/dist/lib/arrow/utils.d.ts.map +1 -0
- package/dist/lib/arrow/utils.js +112 -0
- package/dist/lib/buffer/Nanoseconds.d.ts +109 -0
- package/dist/lib/buffer/Nanoseconds.d.ts.map +1 -0
- package/dist/lib/buffer/Nanoseconds.js +86 -0
- package/dist/lib/bufferStrategy.d.ts +95 -0
- package/dist/lib/bufferStrategy.d.ts.map +1 -0
- package/dist/lib/bufferStrategy.js +1 -0
- package/dist/lib/capacityTuning.d.ts +50 -0
- package/dist/lib/capacityTuning.d.ts.map +1 -0
- package/dist/lib/capacityTuning.js +65 -0
- package/dist/lib/codegen/evaluatorGenerator.d.ts +35 -0
- package/dist/lib/codegen/evaluatorGenerator.d.ts.map +1 -0
- package/dist/lib/codegen/evaluatorGenerator.js +199 -0
- package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts +139 -0
- package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts.map +1 -0
- package/dist/lib/codegen/fixedPositionWriterGenerator.js +289 -0
- package/dist/lib/codegen/spanLoggerGenerator.d.ts +115 -0
- package/dist/lib/codegen/spanLoggerGenerator.d.ts.map +1 -0
- package/dist/lib/codegen/spanLoggerGenerator.js +575 -0
- package/dist/lib/convertToArrow.d.ts +40 -0
- package/dist/lib/convertToArrow.d.ts.map +1 -0
- package/dist/lib/convertToArrow.js +1467 -0
- package/dist/lib/defineOpContext.d.ts +96 -0
- package/dist/lib/defineOpContext.d.ts.map +1 -0
- package/dist/lib/defineOpContext.js +227 -0
- package/dist/lib/errors/Blocked.d.ts +113 -0
- package/dist/lib/errors/Blocked.d.ts.map +1 -0
- package/dist/lib/errors/Blocked.js +68 -0
- package/dist/lib/errors/CodeError.d.ts +101 -0
- package/dist/lib/errors/CodeError.d.ts.map +1 -0
- package/dist/lib/errors/CodeError.js +42 -0
- package/dist/lib/errors/RetriesExhausted.d.ts +67 -0
- package/dist/lib/errors/RetriesExhausted.d.ts.map +1 -0
- package/dist/lib/errors/RetriesExhausted.js +31 -0
- package/dist/lib/errors/Transient.d.ts +115 -0
- package/dist/lib/errors/Transient.d.ts.map +1 -0
- package/dist/lib/errors/Transient.js +54 -0
- package/dist/lib/errors/index.d.ts +14 -0
- package/dist/lib/errors/index.d.ts.map +1 -0
- package/dist/lib/errors/index.js +16 -0
- package/dist/lib/errors/retry-policy.d.ts +60 -0
- package/dist/lib/errors/retry-policy.d.ts.map +1 -0
- package/dist/lib/errors/retry-policy.js +54 -0
- package/dist/lib/flushScheduler.d.ts +162 -0
- package/dist/lib/flushScheduler.d.ts.map +1 -0
- package/dist/lib/flushScheduler.js +388 -0
- package/dist/lib/library.d.ts +149 -0
- package/dist/lib/library.d.ts.map +1 -0
- package/dist/lib/library.js +588 -0
- package/dist/lib/logApi.d.ts +61 -0
- package/dist/lib/logApi.d.ts.map +1 -0
- package/dist/lib/logApi.js +12 -0
- package/dist/lib/logBinding.d.ts +63 -0
- package/dist/lib/logBinding.d.ts.map +1 -0
- package/dist/lib/logBinding.js +1 -0
- package/dist/lib/op.d.ts +105 -0
- package/dist/lib/op.d.ts.map +1 -0
- package/dist/lib/op.js +59 -0
- package/dist/lib/opContext/contextTypes.d.ts +88 -0
- package/dist/lib/opContext/contextTypes.d.ts.map +1 -0
- package/dist/lib/opContext/contextTypes.js +34 -0
- package/dist/lib/opContext/createOpGroup.d.ts +57 -0
- package/dist/lib/opContext/createOpGroup.d.ts.map +1 -0
- package/dist/lib/opContext/createOpGroup.js +341 -0
- package/dist/lib/opContext/defineOp.d.ts +83 -0
- package/dist/lib/opContext/defineOp.d.ts.map +1 -0
- package/dist/lib/opContext/defineOp.js +197 -0
- package/dist/lib/opContext/featureFlagTypes.d.ts +58 -0
- package/dist/lib/opContext/featureFlagTypes.d.ts.map +1 -0
- package/dist/lib/opContext/featureFlagTypes.js +1 -0
- package/dist/lib/opContext/index.d.ts +13 -0
- package/dist/lib/opContext/index.d.ts.map +1 -0
- package/dist/lib/opContext/index.js +15 -0
- package/dist/lib/opContext/opGroupTypes.d.ts +250 -0
- package/dist/lib/opContext/opGroupTypes.d.ts.map +1 -0
- package/dist/lib/opContext/opGroupTypes.js +31 -0
- package/dist/lib/opContext/opTypes.d.ts +48 -0
- package/dist/lib/opContext/opTypes.d.ts.map +1 -0
- package/dist/lib/opContext/opTypes.js +7 -0
- package/dist/lib/opContext/spanContextTypes.d.ts +347 -0
- package/dist/lib/opContext/spanContextTypes.d.ts.map +1 -0
- package/dist/lib/opContext/spanContextTypes.js +1 -0
- package/dist/lib/opContext/types.d.ts +297 -0
- package/dist/lib/opContext/types.d.ts.map +1 -0
- package/dist/lib/opContext/types.js +16 -0
- package/dist/lib/result.d.ts +308 -0
- package/dist/lib/result.d.ts.map +1 -0
- package/dist/lib/result.js +359 -0
- package/dist/lib/schema/LogSchema.d.ts +62 -0
- package/dist/lib/schema/LogSchema.d.ts.map +1 -0
- package/dist/lib/schema/LogSchema.js +134 -0
- package/dist/lib/schema/builder.d.ts +12 -0
- package/dist/lib/schema/builder.d.ts.map +1 -0
- package/dist/lib/schema/builder.js +169 -0
- package/dist/lib/schema/defineFeatureFlags.d.ts +60 -0
- package/dist/lib/schema/defineFeatureFlags.d.ts.map +1 -0
- package/dist/lib/schema/defineFeatureFlags.js +29 -0
- package/dist/lib/schema/defineLogSchema.d.ts +87 -0
- package/dist/lib/schema/defineLogSchema.d.ts.map +1 -0
- package/dist/lib/schema/defineLogSchema.js +171 -0
- package/dist/lib/schema/evaluator.d.ts +267 -0
- package/dist/lib/schema/evaluator.d.ts.map +1 -0
- package/dist/lib/schema/evaluator.js +169 -0
- package/dist/lib/schema/extend.d.ts +14 -0
- package/dist/lib/schema/extend.d.ts.map +1 -0
- package/dist/lib/schema/extend.js +51 -0
- package/dist/lib/schema/systemSchema.d.ts +112 -0
- package/dist/lib/schema/systemSchema.d.ts.map +1 -0
- package/dist/lib/schema/systemSchema.js +260 -0
- package/dist/lib/schema/typeGuards.d.ts +52 -0
- package/dist/lib/schema/typeGuards.d.ts.map +1 -0
- package/dist/lib/schema/typeGuards.js +127 -0
- package/dist/lib/schema/types.d.ts +156 -0
- package/dist/lib/schema/types.d.ts.map +1 -0
- package/dist/lib/schema/types.js +4 -0
- package/dist/lib/spanBuffer.d.ts +133 -0
- package/dist/lib/spanBuffer.d.ts.map +1 -0
- package/dist/lib/spanBuffer.js +442 -0
- package/dist/lib/spanBufferHelpers.d.ts +53 -0
- package/dist/lib/spanBufferHelpers.d.ts.map +1 -0
- package/dist/lib/spanBufferHelpers.js +65 -0
- package/dist/lib/spanBufferStats.d.ts +38 -0
- package/dist/lib/spanBufferStats.d.ts.map +1 -0
- package/dist/lib/spanBufferStats.js +1 -0
- package/dist/lib/spanContext.d.ts +141 -0
- package/dist/lib/spanContext.d.ts.map +1 -0
- package/dist/lib/spanContext.js +763 -0
- package/dist/lib/sqlite/index.d.ts +14 -0
- package/dist/lib/sqlite/index.d.ts.map +1 -0
- package/dist/lib/sqlite/index.js +12 -0
- package/dist/lib/sqlite/sqlite-async-writer.d.ts +24 -0
- package/dist/lib/sqlite/sqlite-async-writer.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-async-writer.js +65 -0
- package/dist/lib/sqlite/sqlite-common.d.ts +37 -0
- package/dist/lib/sqlite/sqlite-common.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-common.js +207 -0
- package/dist/lib/sqlite/sqlite-d1.d.ts +25 -0
- package/dist/lib/sqlite/sqlite-d1.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-d1.js +67 -0
- package/dist/lib/sqlite/sqlite-db.d.ts +29 -0
- package/dist/lib/sqlite/sqlite-db.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-db.js +1 -0
- package/dist/lib/sqlite/sqlite-node.d.ts +16 -0
- package/dist/lib/sqlite/sqlite-node.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-node.js +68 -0
- package/dist/lib/sqlite/sqlite-writer.d.ts +39 -0
- package/dist/lib/sqlite/sqlite-writer.d.ts.map +1 -0
- package/dist/lib/sqlite/sqlite-writer.js +78 -0
- package/dist/lib/testing/bun-harness.d.ts +150 -0
- package/dist/lib/testing/bun-harness.d.ts.map +1 -0
- package/dist/lib/testing/bun-harness.js +729 -0
- package/dist/lib/testing/extractFacts.d.ts +73 -0
- package/dist/lib/testing/extractFacts.d.ts.map +1 -0
- package/dist/lib/testing/extractFacts.js +237 -0
- package/dist/lib/testing/facts.d.ts +235 -0
- package/dist/lib/testing/facts.d.ts.map +1 -0
- package/dist/lib/testing/facts.js +209 -0
- package/dist/lib/testing/index.d.ts +58 -0
- package/dist/lib/testing/index.d.ts.map +1 -0
- package/dist/lib/testing/index.js +74 -0
- package/dist/lib/testing/queryable-span.d.ts +39 -0
- package/dist/lib/testing/queryable-span.d.ts.map +1 -0
- package/dist/lib/testing/queryable-span.js +58 -0
- package/dist/lib/testing/span-query.d.ts +21 -0
- package/dist/lib/testing/span-query.d.ts.map +1 -0
- package/dist/lib/testing/span-query.js +47 -0
- package/dist/lib/testing/stdio-replay.d.ts +4 -0
- package/dist/lib/testing/stdio-replay.d.ts.map +1 -0
- package/dist/lib/testing/stdio-replay.js +42 -0
- package/dist/lib/testing/trace-query.d.ts +59 -0
- package/dist/lib/testing/trace-query.d.ts.map +1 -0
- package/dist/lib/testing/trace-query.js +462 -0
- package/dist/lib/testing/vitest-harness.d.ts +135 -0
- package/dist/lib/testing/vitest-harness.d.ts.map +1 -0
- package/dist/lib/testing/vitest-harness.js +486 -0
- package/dist/lib/threadId.d.ts +58 -0
- package/dist/lib/threadId.d.ts.map +1 -0
- package/dist/lib/threadId.js +123 -0
- package/dist/lib/traceContext.d.ts +116 -0
- package/dist/lib/traceContext.d.ts.map +1 -0
- package/dist/lib/traceContext.js +37 -0
- package/dist/lib/traceId.d.ts +78 -0
- package/dist/lib/traceId.d.ts.map +1 -0
- package/dist/lib/traceId.js +87 -0
- package/dist/lib/traceRoot.d.ts +133 -0
- package/dist/lib/traceRoot.d.ts.map +1 -0
- package/dist/lib/traceRoot.es.d.ts +75 -0
- package/dist/lib/traceRoot.es.d.ts.map +1 -0
- package/dist/lib/traceRoot.es.js +129 -0
- package/dist/lib/traceRoot.js +19 -0
- package/dist/lib/traceRoot.node.d.ts +77 -0
- package/dist/lib/traceRoot.node.d.ts.map +1 -0
- package/dist/lib/traceRoot.node.js +133 -0
- package/dist/lib/traceRoot.universal.d.ts +3 -0
- package/dist/lib/traceRoot.universal.d.ts.map +1 -0
- package/dist/lib/traceRoot.universal.js +17 -0
- package/dist/lib/tracer.d.ts +296 -0
- package/dist/lib/tracer.d.ts.map +1 -0
- package/dist/lib/tracer.js +346 -0
- package/dist/lib/tracers/ArrayQueueTracer.d.ts +56 -0
- package/dist/lib/tracers/ArrayQueueTracer.d.ts.map +1 -0
- package/dist/lib/tracers/ArrayQueueTracer.js +67 -0
- package/dist/lib/tracers/CompositeTracer.d.ts +24 -0
- package/dist/lib/tracers/CompositeTracer.d.ts.map +1 -0
- package/dist/lib/tracers/CompositeTracer.js +57 -0
- package/dist/lib/tracers/NoOpTracer.d.ts +58 -0
- package/dist/lib/tracers/NoOpTracer.d.ts.map +1 -0
- package/dist/lib/tracers/NoOpTracer.js +41 -0
- package/dist/lib/tracers/SQLiteTracer.d.ts +42 -0
- package/dist/lib/tracers/SQLiteTracer.d.ts.map +1 -0
- package/dist/lib/tracers/SQLiteTracer.js +84 -0
- package/dist/lib/tracers/StdioTracer.d.ts +83 -0
- package/dist/lib/tracers/StdioTracer.d.ts.map +1 -0
- package/dist/lib/tracers/StdioTracer.js +270 -0
- package/dist/lib/tracers/TestTracer.d.ts +95 -0
- package/dist/lib/tracers/TestTracer.d.ts.map +1 -0
- package/dist/lib/tracers/TestTracer.js +87 -0
- package/dist/lib/tracers/index.d.ts +12 -0
- package/dist/lib/tracers/index.d.ts.map +1 -0
- package/dist/lib/tracers/index.js +11 -0
- package/dist/lib/types.d.ts +366 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +1 -0
- package/dist/lib/utf8Cache.d.ts +111 -0
- package/dist/lib/utf8Cache.d.ts.map +1 -0
- package/dist/lib/utf8Cache.js +177 -0
- package/dist/lib/wasm/WasmBufferStrategy.d.ts +88 -0
- package/dist/lib/wasm/WasmBufferStrategy.d.ts.map +1 -0
- package/dist/lib/wasm/WasmBufferStrategy.js +138 -0
- package/dist/lib/wasm/wasmAllocator.d.ts +109 -0
- package/dist/lib/wasm/wasmAllocator.d.ts.map +1 -0
- package/dist/lib/wasm/wasmAllocator.js +227 -0
- package/dist/lib/wasm/wasmSpanBuffer.d.ts +123 -0
- package/dist/lib/wasm/wasmSpanBuffer.d.ts.map +1 -0
- package/dist/lib/wasm/wasmSpanBuffer.js +772 -0
- package/dist/lib/wasm/wasmTraceRoot.d.ts +167 -0
- package/dist/lib/wasm/wasmTraceRoot.d.ts.map +1 -0
- package/dist/lib/wasm/wasmTraceRoot.js +264 -0
- package/dist/node.d.ts +7 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +8 -0
- package/dist/testing.d.ts +18 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +17 -0
- package/package.json +193 -0
- package/src/bun/preload.ts +11 -0
- package/src/bun/trace-preload.ts +14 -0
- package/src/es.ts +11 -0
- package/src/index.ts +194 -0
- package/src/lib/JsBufferStrategy.ts +102 -0
- package/src/lib/__tests__/arrow-builder-integration/arrow-conversion.test.ts +485 -0
- package/src/lib/__tests__/arrow-builder-integration/binary-arrow-conversion.test.ts +390 -0
- package/src/lib/__tests__/arrow-builder-integration/binary-comparison.test.ts +647 -0
- package/src/lib/__tests__/arrow-builder-integration/binary-format-compliance.test.ts +292 -0
- package/src/lib/__tests__/arrow-builder-integration/buffer-chaining.test.ts +354 -0
- package/src/lib/__tests__/arrow-builder-integration/foundation.test.ts +127 -0
- package/src/lib/__tests__/arrow-builder-integration/integration.test.ts +392 -0
- package/src/lib/__tests__/arrow-builder-integration/lazy-columns.test.ts +389 -0
- package/src/lib/__tests__/arrow-conversion-algorithms.test.ts +54 -0
- package/src/lib/__tests__/arrow-test-helpers.ts +71 -0
- package/src/lib/__tests__/binary-e2e.test.ts +203 -0
- package/src/lib/__tests__/buffer-overflow-op-api.test.ts +608 -0
- package/src/lib/__tests__/buffer-overflow.test.ts +612 -0
- package/src/lib/__tests__/capacity-tuning.test.ts +544 -0
- package/src/lib/__tests__/effective-schema.test.ts +439 -0
- package/src/lib/__tests__/flechette.test.ts +42 -0
- package/src/lib/__tests__/flushScheduler.test.ts +537 -0
- package/src/lib/__tests__/integration.test.ts +600 -0
- package/src/lib/__tests__/library.test.ts +934 -0
- package/src/lib/__tests__/nested-library-tasks.test.ts +849 -0
- package/src/lib/__tests__/op-context-binding.test.ts +135 -0
- package/src/lib/__tests__/op-metadata.test.ts +198 -0
- package/src/lib/__tests__/op-type-safety.test.ts +71 -0
- package/src/lib/__tests__/package-exports.test.ts +57 -0
- package/src/lib/__tests__/remapped-buffer-view-integration.test.ts +319 -0
- package/src/lib/__tests__/remapped-buffer-view.test.ts +635 -0
- package/src/lib/__tests__/scope-attributes.test.ts +348 -0
- package/src/lib/__tests__/span-lifecycle.test.ts +680 -0
- package/src/lib/__tests__/sync-async-trace.test.ts +435 -0
- package/src/lib/__tests__/test-helpers.ts +318 -0
- package/src/lib/__tests__/timestamp.test.ts +259 -0
- package/src/lib/__tests__/trace-archive-primitives.test.ts +98 -0
- package/src/lib/__tests__/traceContext-type-enforcement.test.ts +271 -0
- package/src/lib/__tests__/tracer.test.ts +211 -0
- package/src/lib/__tests__/type-narrowing.test.ts +137 -0
- package/src/lib/archive/chunkCompaction.ts +44 -0
- package/src/lib/archive/chunkEnvelope.ts +79 -0
- package/src/lib/archive/chunkRouting.ts +70 -0
- package/src/lib/archive/chunkStats.ts +25 -0
- package/src/lib/archive/index.ts +4 -0
- package/src/lib/arrow/capacityStats.ts +340 -0
- package/src/lib/arrow/dictionaries.ts +159 -0
- package/src/lib/arrow/flechette.ts +114 -0
- package/src/lib/arrow/utils.ts +126 -0
- package/src/lib/buffer/Nanoseconds.ts +131 -0
- package/src/lib/bufferStrategy.ts +106 -0
- package/src/lib/capacityTuning.ts +102 -0
- package/src/lib/codegen/__tests__/__snapshots__/evaluatorGenerator.test.ts.snap +160 -0
- package/src/lib/codegen/__tests__/__snapshots__/scopeGenerator.test.ts.snap +196 -0
- package/src/lib/codegen/__tests__/__snapshots__/spanLoggerGenerator.test.ts.snap +1965 -0
- package/src/lib/codegen/__tests__/evaluatorGenerator.test.ts +516 -0
- package/src/lib/codegen/__tests__/nullBitmap.test.ts +207 -0
- package/src/lib/codegen/__tests__/spanLoggerGenerator.test.ts +237 -0
- package/src/lib/codegen/evaluatorGenerator.ts +309 -0
- package/src/lib/codegen/fixedPositionWriterGenerator.ts +444 -0
- package/src/lib/codegen/spanLoggerGenerator.ts +715 -0
- package/src/lib/convertToArrow.ts +1805 -0
- package/src/lib/defineOpContext.ts +398 -0
- package/src/lib/errors/Blocked.ts +165 -0
- package/src/lib/errors/CodeError.ts +132 -0
- package/src/lib/errors/RetriesExhausted.ts +78 -0
- package/src/lib/errors/Transient.ts +168 -0
- package/src/lib/errors/__tests__/Blocked-config.test.ts +152 -0
- package/src/lib/errors/__tests__/Transient.test.ts +129 -0
- package/src/lib/errors/__tests__/retry-policy.test.ts +85 -0
- package/src/lib/errors/index.ts +24 -0
- package/src/lib/errors/retry-policy.ts +87 -0
- package/src/lib/flushScheduler.ts +509 -0
- package/src/lib/library.ts +682 -0
- package/src/lib/logApi.ts +70 -0
- package/src/lib/logBinding.ts +67 -0
- package/src/lib/op.ts +103 -0
- package/src/lib/opContext/__tests__/retry.test.ts +764 -0
- package/src/lib/opContext/contextTypes.ts +130 -0
- package/src/lib/opContext/createOpGroup.ts +456 -0
- package/src/lib/opContext/defineOp.ts +281 -0
- package/src/lib/opContext/featureFlagTypes.ts +54 -0
- package/src/lib/opContext/index.ts +16 -0
- package/src/lib/opContext/opGroupTypes.ts +342 -0
- package/src/lib/opContext/opTypes.ts +80 -0
- package/src/lib/opContext/spanContextTypes.ts +398 -0
- package/src/lib/opContext/types.ts +403 -0
- package/src/lib/result.ts +550 -0
- package/src/lib/schema/LogSchema.ts +153 -0
- package/src/lib/schema/__tests__/defineLogSchema.test.ts +342 -0
- package/src/lib/schema/__tests__/featureFlags.test.ts +443 -0
- package/src/lib/schema/builder.ts +201 -0
- package/src/lib/schema/defineFeatureFlags.ts +91 -0
- package/src/lib/schema/defineLogSchema.ts +291 -0
- package/src/lib/schema/evaluator.ts +404 -0
- package/src/lib/schema/extend.ts +69 -0
- package/src/lib/schema/systemSchema.ts +339 -0
- package/src/lib/schema/typeGuards.ts +163 -0
- package/src/lib/schema/types.ts +265 -0
- package/src/lib/spanBuffer.ts +571 -0
- package/src/lib/spanBufferHelpers.ts +73 -0
- package/src/lib/spanBufferStats.ts +40 -0
- package/src/lib/spanContext.ts +1566 -0
- package/src/lib/sqlite/__tests__/sqlite-common.test.ts +89 -0
- package/src/lib/sqlite/index.ts +26 -0
- package/src/lib/sqlite/sqlite-async-writer.ts +101 -0
- package/src/lib/sqlite/sqlite-common.ts +309 -0
- package/src/lib/sqlite/sqlite-d1.ts +104 -0
- package/src/lib/sqlite/sqlite-db.ts +32 -0
- package/src/lib/sqlite/sqlite-node.ts +83 -0
- package/src/lib/sqlite/sqlite-writer.ts +128 -0
- package/src/lib/testing/TRACE-TESTING.md +100 -0
- package/src/lib/testing/__tests__/bun-harness.test.ts +108 -0
- package/src/lib/testing/__tests__/extractFacts.test.ts +279 -0
- package/src/lib/testing/__tests__/facts.test.ts +324 -0
- package/src/lib/testing/__tests__/vitest-harness.test.ts +32 -0
- package/src/lib/testing/bun-harness.ts +990 -0
- package/src/lib/testing/extractFacts.ts +362 -0
- package/src/lib/testing/facts.ts +470 -0
- package/src/lib/testing/index.ts +141 -0
- package/src/lib/testing/queryable-span.ts +108 -0
- package/src/lib/testing/span-query.ts +65 -0
- package/src/lib/testing/stdio-replay.ts +50 -0
- package/src/lib/testing/trace-query.ts +329 -0
- package/src/lib/testing/vitest-harness.ts +691 -0
- package/src/lib/threadId.ts +135 -0
- package/src/lib/traceContext.ts +182 -0
- package/src/lib/traceId.ts +142 -0
- package/src/lib/traceRoot.es.ts +157 -0
- package/src/lib/traceRoot.node.ts +170 -0
- package/src/lib/traceRoot.ts +154 -0
- package/src/lib/traceRoot.universal.ts +22 -0
- package/src/lib/tracer.ts +896 -0
- package/src/lib/tracers/ArrayQueueTracer.ts +76 -0
- package/src/lib/tracers/CompositeTracer.ts +76 -0
- package/src/lib/tracers/NoOpTracer.ts +73 -0
- package/src/lib/tracers/SQLiteTracer.ts +115 -0
- package/src/lib/tracers/StdioTracer.ts +380 -0
- package/src/lib/tracers/TestTracer.ts +146 -0
- package/src/lib/tracers/__tests__/ArrayQueueTracer.test.ts +184 -0
- package/src/lib/tracers/__tests__/NoOpTracer.test.ts +204 -0
- package/src/lib/tracers/__tests__/StdioTracer.test.ts +313 -0
- package/src/lib/tracers/__tests__/TestTracer.test.ts +200 -0
- package/src/lib/tracers/index.ts +12 -0
- package/src/lib/types.ts +498 -0
- package/src/lib/utf8Cache.ts +201 -0
- package/src/lib/wasm/WasmBufferStrategy.ts +219 -0
- package/src/lib/wasm/__tests__/WasmBufferStrategy.test.ts +256 -0
- package/src/lib/wasm/__tests__/wasm-integration.test.ts +476 -0
- package/src/lib/wasm/__tests__/wasmAllocator.test.ts +699 -0
- package/src/lib/wasm/__tests__/wasmSpanBuffer.test.ts +449 -0
- package/src/lib/wasm/__tests__/wasmTraceRoot.test.ts +390 -0
- package/src/lib/wasm/__tests__/wasmTracer.test.ts.disabled +444 -0
- package/src/lib/wasm/allocator.zig +945 -0
- package/src/lib/wasm/wasmAllocator.ts +469 -0
- package/src/lib/wasm/wasmSpanBuffer.ts +1014 -0
- package/src/lib/wasm/wasmTraceRoot.ts +315 -0
- package/src/node.ts +10 -0
- package/src/testing.ts +18 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TraceRoot - Node.js implementation.
|
|
5
|
+
*
|
|
6
|
+
* Uses process.hrtime.bigint() for true nanosecond precision and writes directly
|
|
7
|
+
* to SpanBuffer state from JavaScript.
|
|
8
|
+
*
|
|
9
|
+
* @module traceRoot.node
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { Nanoseconds } from '@smoothbricks/arrow-builder';
|
|
13
|
+
import { ENTRY_TYPE_SPAN_EXCEPTION, ENTRY_TYPE_SPAN_START } from './schema/systemSchema.js';
|
|
14
|
+
import { createTraceId, type TraceId } from './traceId.js';
|
|
15
|
+
import {
|
|
16
|
+
type ITraceRoot,
|
|
17
|
+
TRACE_ROOT_ANCHOR_EPOCH_OFFSET,
|
|
18
|
+
TRACE_ROOT_ANCHOR_PERF_OFFSET,
|
|
19
|
+
TRACE_ROOT_TRACE_ID_LEN_OFFSET,
|
|
20
|
+
TRACE_ROOT_TRACE_ID_OFFSET,
|
|
21
|
+
type TracerLifecycleHooks,
|
|
22
|
+
} from './traceRoot.js';
|
|
23
|
+
import type { AnySpanBuffer } from './types.js';
|
|
24
|
+
|
|
25
|
+
/** Shared TextEncoder for trace_id encoding (stateless, reusable) */
|
|
26
|
+
const textEncoder = new TextEncoder();
|
|
27
|
+
|
|
28
|
+
/** Shared TextDecoder for trace_id decoding (stateless, reusable) */
|
|
29
|
+
const textDecoder = new TextDecoder();
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* TraceRoot - Node.js implementation.
|
|
33
|
+
*
|
|
34
|
+
* Stores anchor data in _system ArrayBuffer and writes timestamps directly from JS.
|
|
35
|
+
*/
|
|
36
|
+
export class TraceRoot implements ITraceRoot {
|
|
37
|
+
/**
|
|
38
|
+
* Raw backing buffer containing anchor timestamps and trace_id.
|
|
39
|
+
*/
|
|
40
|
+
readonly _system: ArrayBuffer;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Tracer reference for lifecycle hooks and event callbacks.
|
|
44
|
+
*/
|
|
45
|
+
readonly tracer: TracerLifecycleHooks;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Cached TypedArray views for fast JS access.
|
|
49
|
+
*/
|
|
50
|
+
private readonly _epochView: BigInt64Array;
|
|
51
|
+
private readonly _perfView: Float64Array;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Cached anchor hrtime as BigInt for JS timestamp fallback.
|
|
55
|
+
* Only used if NAPI addon is not available.
|
|
56
|
+
*/
|
|
57
|
+
private readonly _anchorHrtimeBigInt: bigint;
|
|
58
|
+
|
|
59
|
+
constructor(
|
|
60
|
+
trace_id: TraceId,
|
|
61
|
+
anchorEpochNanos: bigint,
|
|
62
|
+
anchorPerfNow: number,
|
|
63
|
+
anchorHrtimeBigInt: bigint,
|
|
64
|
+
tracer: TracerLifecycleHooks,
|
|
65
|
+
) {
|
|
66
|
+
// Allocate buffer: 17 bytes header + trace_id length
|
|
67
|
+
// trace_id is validated to be ASCII (1 byte per char) so length === byte length
|
|
68
|
+
this._system = new ArrayBuffer(TRACE_ROOT_TRACE_ID_OFFSET + trace_id.length);
|
|
69
|
+
this.tracer = tracer;
|
|
70
|
+
|
|
71
|
+
// Create cached views (one-time allocation)
|
|
72
|
+
this._epochView = new BigInt64Array(this._system, TRACE_ROOT_ANCHOR_EPOCH_OFFSET, 1);
|
|
73
|
+
this._perfView = new Float64Array(this._system, TRACE_ROOT_ANCHOR_PERF_OFFSET, 1);
|
|
74
|
+
|
|
75
|
+
// Write anchor data directly
|
|
76
|
+
this._epochView[0] = anchorEpochNanos;
|
|
77
|
+
this._perfView[0] = anchorPerfNow;
|
|
78
|
+
|
|
79
|
+
// Keep exact monotonic anchor for JS fallback (avoid Number precision loss after ~104 days uptime)
|
|
80
|
+
this._anchorHrtimeBigInt = anchorHrtimeBigInt;
|
|
81
|
+
|
|
82
|
+
// Encode trace_id directly into buffer (no intermediate allocation)
|
|
83
|
+
const u8View = new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_LEN_OFFSET);
|
|
84
|
+
const traceIdDest = new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_OFFSET, trace_id.length);
|
|
85
|
+
const { written } = textEncoder.encodeInto(trace_id, traceIdDest);
|
|
86
|
+
u8View[0] = written;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Epoch time in nanoseconds when trace was created.
|
|
91
|
+
*/
|
|
92
|
+
get anchorEpochNanos(): bigint {
|
|
93
|
+
return this._epochView[0];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* High-resolution timer anchor when trace was created.
|
|
98
|
+
*/
|
|
99
|
+
get anchorPerfNow(): number {
|
|
100
|
+
return this._perfView[0];
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Trace ID for this trace.
|
|
105
|
+
*/
|
|
106
|
+
get trace_id(): TraceId {
|
|
107
|
+
const len = new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_LEN_OFFSET, 1)[0];
|
|
108
|
+
return createTraceId(textDecoder.decode(new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_OFFSET, len)));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Get current timestamp in nanoseconds since Unix epoch.
|
|
113
|
+
* Uses process.hrtime.bigint() for true nanosecond precision.
|
|
114
|
+
*/
|
|
115
|
+
getTimestampNanos(): Nanoseconds {
|
|
116
|
+
const currentHrtime = process.hrtime.bigint();
|
|
117
|
+
const elapsedNanos = currentHrtime - this._anchorHrtimeBigInt;
|
|
118
|
+
return Nanoseconds.unsafe(this._epochView[0] + elapsedNanos);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Write span-start entry to buffer at row 0.
|
|
123
|
+
*
|
|
124
|
+
*/
|
|
125
|
+
writeSpanStart(buffer: AnySpanBuffer, spanName: string): void {
|
|
126
|
+
buffer.timestamp[0] = this.getTimestampNanos();
|
|
127
|
+
buffer.entry_type[0] = ENTRY_TYPE_SPAN_START;
|
|
128
|
+
buffer.message(0, spanName);
|
|
129
|
+
|
|
130
|
+
// Pre-initialize row 1 as span-exception
|
|
131
|
+
buffer.entry_type[1] = ENTRY_TYPE_SPAN_EXCEPTION;
|
|
132
|
+
buffer.timestamp[1] = 0n;
|
|
133
|
+
|
|
134
|
+
buffer._writeIndex = 2;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Write span-end entry to buffer at row 1.
|
|
139
|
+
* Writes both timestamp and entry_type.
|
|
140
|
+
*
|
|
141
|
+
*/
|
|
142
|
+
writeSpanEnd(buffer: AnySpanBuffer, entryType: number): void {
|
|
143
|
+
buffer.timestamp[1] = this.getTimestampNanos();
|
|
144
|
+
buffer.entry_type[1] = entryType;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
|
|
149
|
+
* SpanLogger uses returned idx for string column writes.
|
|
150
|
+
*/
|
|
151
|
+
writeLogEntry(buffer: AnySpanBuffer, entryType: number): number {
|
|
152
|
+
const idx = buffer._writeIndex;
|
|
153
|
+
buffer.timestamp[idx] = this.getTimestampNanos();
|
|
154
|
+
buffer.entry_type[idx] = entryType;
|
|
155
|
+
buffer._writeIndex = idx + 1;
|
|
156
|
+
return idx;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Factory function for creating Node.js TraceRoot instances.
|
|
162
|
+
* Pass this to Tracer constructor for Node.js environments.
|
|
163
|
+
*/
|
|
164
|
+
export function createTraceRoot(trace_id: string, tracer: TracerLifecycleHooks): TraceRoot {
|
|
165
|
+
const anchorEpochNanos = BigInt(Date.now()) * 1_000_000n;
|
|
166
|
+
const anchorHrtimeBigInt = process.hrtime.bigint();
|
|
167
|
+
// Store as number for NAPI to read as f64
|
|
168
|
+
const anchorPerfNow = Number(anchorHrtimeBigInt);
|
|
169
|
+
return new TraceRoot(createTraceId(trace_id), anchorEpochNanos, anchorPerfNow, anchorHrtimeBigInt, tracer);
|
|
170
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TraceRoot - Platform-agnostic interface for trace anchoring and timestamp writes.
|
|
3
|
+
*
|
|
4
|
+
* TraceRoot manages:
|
|
5
|
+
* - Trace ID storage
|
|
6
|
+
* - Timestamp anchoring (epoch + high-res timer reference)
|
|
7
|
+
* - Writing span-start/span-end to SpanBuffer's _system columns
|
|
8
|
+
*
|
|
9
|
+
* Platform-specific implementations:
|
|
10
|
+
* - TraceRoot.es.ts: Browser - uses performance.now() for timing
|
|
11
|
+
* - TraceRoot.node.ts: Node.js - delegates to NAPI addon for optimized writes
|
|
12
|
+
*
|
|
13
|
+
* @module traceRoot
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { Nanoseconds } from '@smoothbricks/arrow-builder';
|
|
17
|
+
import type { AnySpanBuffer } from './types.js';
|
|
18
|
+
|
|
19
|
+
export type { SpanIdentity, TraceId } from './traceId.js';
|
|
20
|
+
// Re-export TraceId types from traceId.ts
|
|
21
|
+
export { createTraceId, extractSpanIdentity, generateTraceId, isValidTraceId, MAX_TRACE_ID_LENGTH } from './traceId.js';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Tracer lifecycle hooks interface.
|
|
25
|
+
* Extracted to avoid circular dependency - Tracer implements this.
|
|
26
|
+
*/
|
|
27
|
+
export interface TracerLifecycleHooks {
|
|
28
|
+
onTraceStart(buffer: unknown): void;
|
|
29
|
+
onTraceEnd(buffer: unknown): void;
|
|
30
|
+
onSpanStart(buffer: unknown): void;
|
|
31
|
+
onSpanEnd(buffer: unknown): void;
|
|
32
|
+
onStatsWillResetFor(buffer: unknown): void;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Buffer strategy for creating child and overflow buffers.
|
|
36
|
+
* SpanContext uses this to create child spans with the correct strategy (JS or WASM).
|
|
37
|
+
* Note: Caller must call writeSpanStart() after createChildSpanBuffer() to set span name.
|
|
38
|
+
*/
|
|
39
|
+
readonly bufferStrategy: {
|
|
40
|
+
createChildSpanBuffer(
|
|
41
|
+
parentBuffer: AnySpanBuffer,
|
|
42
|
+
callsiteMetadata: unknown,
|
|
43
|
+
opMetadata: unknown,
|
|
44
|
+
capacity?: number,
|
|
45
|
+
schema?: unknown,
|
|
46
|
+
): AnySpanBuffer;
|
|
47
|
+
createOverflowBuffer(buffer: AnySpanBuffer): AnySpanBuffer;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* TraceRoot._system memory layout (little-endian):
|
|
53
|
+
*
|
|
54
|
+
* Offset Size Field
|
|
55
|
+
* 0 8 anchorEpochNanos (i64) - epoch time in nanoseconds
|
|
56
|
+
* 8 8 anchorPerfNow (f64) - high-res timer anchor
|
|
57
|
+
* 16 1 trace_id_len (u8) - length of trace_id UTF-8 bytes
|
|
58
|
+
* 17 N trace_id (UTF-8 bytes)
|
|
59
|
+
*
|
|
60
|
+
* Total: 17 + trace_id.length bytes
|
|
61
|
+
*
|
|
62
|
+
* This layout enables NAPI/WASM to read anchors directly without BigInt extraction.
|
|
63
|
+
*/
|
|
64
|
+
export const TRACE_ROOT_ANCHOR_EPOCH_OFFSET = 0;
|
|
65
|
+
export const TRACE_ROOT_ANCHOR_PERF_OFFSET = 8;
|
|
66
|
+
export const TRACE_ROOT_TRACE_ID_LEN_OFFSET = 16;
|
|
67
|
+
export const TRACE_ROOT_TRACE_ID_OFFSET = 17;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* TraceRoot interface - implemented by platform-specific classes.
|
|
71
|
+
*
|
|
72
|
+
* Each implementation handles timestamp calculation and span writes differently:
|
|
73
|
+
* - Browser: Pure JS with performance.now()
|
|
74
|
+
* - Node.js: NAPI addon with mach_absolute_time() / clock_gettime()
|
|
75
|
+
*/
|
|
76
|
+
/**
|
|
77
|
+
* Factory function type for creating platform-specific TraceRoot instances.
|
|
78
|
+
* Passed to Tracer constructor to enable tree-shaking of unused platform code.
|
|
79
|
+
*
|
|
80
|
+
* The factory creates anchor timestamps internally using platform-specific APIs.
|
|
81
|
+
*/
|
|
82
|
+
export type TraceRootFactory = (trace_id: string, tracer: TracerLifecycleHooks) => ITraceRoot;
|
|
83
|
+
|
|
84
|
+
export interface ITraceRoot {
|
|
85
|
+
/**
|
|
86
|
+
* Raw backing buffer containing anchor timestamps and trace_id.
|
|
87
|
+
* NAPI/WASM can read this directly without BigInt extraction.
|
|
88
|
+
*/
|
|
89
|
+
readonly _system: ArrayBuffer;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Tracer reference for lifecycle hooks and event callbacks.
|
|
93
|
+
*/
|
|
94
|
+
readonly tracer: TracerLifecycleHooks;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Trace ID for this trace.
|
|
98
|
+
*/
|
|
99
|
+
readonly trace_id: string;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Epoch time in nanoseconds when trace was created.
|
|
103
|
+
* Used by SpanLogger for log entry timestamps.
|
|
104
|
+
*/
|
|
105
|
+
readonly anchorEpochNanos: bigint;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* High-resolution timer anchor when trace was created.
|
|
109
|
+
* Browser: performance.now() value (number)
|
|
110
|
+
* Node.js: stored as number for NAPI compatibility, but represents hrtime
|
|
111
|
+
*/
|
|
112
|
+
readonly anchorPerfNow: number;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Get current timestamp in nanoseconds since Unix epoch.
|
|
116
|
+
* Platform-specific implementation.
|
|
117
|
+
*/
|
|
118
|
+
getTimestampNanos(): Nanoseconds;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Write span-start entry to buffer at row 0.
|
|
122
|
+
*
|
|
123
|
+
* Writes:
|
|
124
|
+
* - timestamp[0] = current time
|
|
125
|
+
* - entry_type[0] = SPAN_START
|
|
126
|
+
* - entry_type[1] = SPAN_EXCEPTION (pre-initialized for crash safety)
|
|
127
|
+
* - timestamp[1] = 0 (will be set on completion)
|
|
128
|
+
* - message[0] = spanName
|
|
129
|
+
* - _writeIndex = 2
|
|
130
|
+
*
|
|
131
|
+
* @param buffer - SpanBuffer to write to
|
|
132
|
+
* @param spanName - Name for this span
|
|
133
|
+
*/
|
|
134
|
+
writeSpanStart(buffer: AnySpanBuffer, spanName: string): void;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Write span-end entry to buffer at row 1.
|
|
138
|
+
* Writes both timestamp and entry_type.
|
|
139
|
+
*
|
|
140
|
+
* @param buffer - SpanBuffer to write to
|
|
141
|
+
* @param entryType - Entry type (SPAN_OK, SPAN_ERR, or SPAN_EXCEPTION)
|
|
142
|
+
*/
|
|
143
|
+
writeSpanEnd(buffer: AnySpanBuffer, entryType: number): void;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
|
|
147
|
+
* SpanLogger uses returned idx for string column writes.
|
|
148
|
+
*
|
|
149
|
+
* @param buffer - SpanBuffer to write to
|
|
150
|
+
* @param entryType - Entry type (INFO, DEBUG, WARN, ERROR, TRACE, FF_ACCESS, FF_USAGE)
|
|
151
|
+
* @returns The row index where entry was written
|
|
152
|
+
*/
|
|
153
|
+
writeLogEntry(buffer: AnySpanBuffer, entryType: number): number;
|
|
154
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TraceRoot - Universal implementation with runtime platform detection.
|
|
5
|
+
*
|
|
6
|
+
* Selects between Node.js (nanosecond hrtime) and ES (performance.now()) based
|
|
7
|
+
* on whether process.hrtime.bigint is available at runtime.
|
|
8
|
+
*
|
|
9
|
+
* Both modules are safe to import — platform-specific calls (process.hrtime.bigint(),
|
|
10
|
+
* NAPI addon) happen inside the factory function, not at module scope.
|
|
11
|
+
*
|
|
12
|
+
* @module traceRoot.universal
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { createTraceRoot as esFactory } from './traceRoot.es.js';
|
|
16
|
+
import type { TraceRootFactory } from './traceRoot.js';
|
|
17
|
+
import { createTraceRoot as nodeFactory } from './traceRoot.node.js';
|
|
18
|
+
|
|
19
|
+
// Node/Bun → nanosecond precision via hrtime.bigint()
|
|
20
|
+
// CF Workers/browsers → performance.now() microsecond precision
|
|
21
|
+
export const createTraceRoot: TraceRootFactory =
|
|
22
|
+
typeof process !== 'undefined' && typeof process.hrtime?.bigint === 'function' ? nodeFactory : esFactory;
|