@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,19 @@
|
|
|
1
|
+
// Re-export TraceId types from traceId.ts
|
|
2
|
+
export { createTraceId, extractSpanIdentity, generateTraceId, isValidTraceId, MAX_TRACE_ID_LENGTH } from './traceId.js';
|
|
3
|
+
/**
|
|
4
|
+
* TraceRoot._system memory layout (little-endian):
|
|
5
|
+
*
|
|
6
|
+
* Offset Size Field
|
|
7
|
+
* 0 8 anchorEpochNanos (i64) - epoch time in nanoseconds
|
|
8
|
+
* 8 8 anchorPerfNow (f64) - high-res timer anchor
|
|
9
|
+
* 16 1 trace_id_len (u8) - length of trace_id UTF-8 bytes
|
|
10
|
+
* 17 N trace_id (UTF-8 bytes)
|
|
11
|
+
*
|
|
12
|
+
* Total: 17 + trace_id.length bytes
|
|
13
|
+
*
|
|
14
|
+
* This layout enables NAPI/WASM to read anchors directly without BigInt extraction.
|
|
15
|
+
*/
|
|
16
|
+
export const TRACE_ROOT_ANCHOR_EPOCH_OFFSET = 0;
|
|
17
|
+
export const TRACE_ROOT_ANCHOR_PERF_OFFSET = 8;
|
|
18
|
+
export const TRACE_ROOT_TRACE_ID_LEN_OFFSET = 16;
|
|
19
|
+
export const TRACE_ROOT_TRACE_ID_OFFSET = 17;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TraceRoot - Node.js implementation.
|
|
3
|
+
*
|
|
4
|
+
* Uses process.hrtime.bigint() for true nanosecond precision and writes directly
|
|
5
|
+
* to SpanBuffer state from JavaScript.
|
|
6
|
+
*
|
|
7
|
+
* @module traceRoot.node
|
|
8
|
+
*/
|
|
9
|
+
import { Nanoseconds } from '@smoothbricks/arrow-builder';
|
|
10
|
+
import { type TraceId } from './traceId.js';
|
|
11
|
+
import { type ITraceRoot, type TracerLifecycleHooks } from './traceRoot.js';
|
|
12
|
+
import type { AnySpanBuffer } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* TraceRoot - Node.js implementation.
|
|
15
|
+
*
|
|
16
|
+
* Stores anchor data in _system ArrayBuffer and writes timestamps directly from JS.
|
|
17
|
+
*/
|
|
18
|
+
export declare class TraceRoot implements ITraceRoot {
|
|
19
|
+
/**
|
|
20
|
+
* Raw backing buffer containing anchor timestamps and trace_id.
|
|
21
|
+
*/
|
|
22
|
+
readonly _system: ArrayBuffer;
|
|
23
|
+
/**
|
|
24
|
+
* Tracer reference for lifecycle hooks and event callbacks.
|
|
25
|
+
*/
|
|
26
|
+
readonly tracer: TracerLifecycleHooks;
|
|
27
|
+
/**
|
|
28
|
+
* Cached TypedArray views for fast JS access.
|
|
29
|
+
*/
|
|
30
|
+
private readonly _epochView;
|
|
31
|
+
private readonly _perfView;
|
|
32
|
+
/**
|
|
33
|
+
* Cached anchor hrtime as BigInt for JS timestamp fallback.
|
|
34
|
+
* Only used if NAPI addon is not available.
|
|
35
|
+
*/
|
|
36
|
+
private readonly _anchorHrtimeBigInt;
|
|
37
|
+
constructor(trace_id: TraceId, anchorEpochNanos: bigint, anchorPerfNow: number, anchorHrtimeBigInt: bigint, tracer: TracerLifecycleHooks);
|
|
38
|
+
/**
|
|
39
|
+
* Epoch time in nanoseconds when trace was created.
|
|
40
|
+
*/
|
|
41
|
+
get anchorEpochNanos(): bigint;
|
|
42
|
+
/**
|
|
43
|
+
* High-resolution timer anchor when trace was created.
|
|
44
|
+
*/
|
|
45
|
+
get anchorPerfNow(): number;
|
|
46
|
+
/**
|
|
47
|
+
* Trace ID for this trace.
|
|
48
|
+
*/
|
|
49
|
+
get trace_id(): TraceId;
|
|
50
|
+
/**
|
|
51
|
+
* Get current timestamp in nanoseconds since Unix epoch.
|
|
52
|
+
* Uses process.hrtime.bigint() for true nanosecond precision.
|
|
53
|
+
*/
|
|
54
|
+
getTimestampNanos(): Nanoseconds;
|
|
55
|
+
/**
|
|
56
|
+
* Write span-start entry to buffer at row 0.
|
|
57
|
+
*
|
|
58
|
+
*/
|
|
59
|
+
writeSpanStart(buffer: AnySpanBuffer, spanName: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Write span-end entry to buffer at row 1.
|
|
62
|
+
* Writes both timestamp and entry_type.
|
|
63
|
+
*
|
|
64
|
+
*/
|
|
65
|
+
writeSpanEnd(buffer: AnySpanBuffer, entryType: number): void;
|
|
66
|
+
/**
|
|
67
|
+
* Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
|
|
68
|
+
* SpanLogger uses returned idx for string column writes.
|
|
69
|
+
*/
|
|
70
|
+
writeLogEntry(buffer: AnySpanBuffer, entryType: number): number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Factory function for creating Node.js TraceRoot instances.
|
|
74
|
+
* Pass this to Tracer constructor for Node.js environments.
|
|
75
|
+
*/
|
|
76
|
+
export declare function createTraceRoot(trace_id: string, tracer: TracerLifecycleHooks): TraceRoot;
|
|
77
|
+
//# sourceMappingURL=traceRoot.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceRoot.node.d.ts","sourceRoot":"","sources":["../../src/lib/traceRoot.node.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,KAAK,UAAU,EAKf,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD;;;;GAIG;AACH,qBAAa,SAAU,YAAW,UAAU;IAC1C;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAEtC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IAEzC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAG3C,QAAQ,EAAE,OAAO,EACjB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,oBAAoB;IAyB9B;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAGtB;IAED;;;OAGG;IACH,iBAAiB,IAAI,WAAW;IAMhC;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAY7D;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAK5D;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAOhE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,SAAS,CAMzF"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/**
|
|
3
|
+
* TraceRoot - Node.js implementation.
|
|
4
|
+
*
|
|
5
|
+
* Uses process.hrtime.bigint() for true nanosecond precision and writes directly
|
|
6
|
+
* to SpanBuffer state from JavaScript.
|
|
7
|
+
*
|
|
8
|
+
* @module traceRoot.node
|
|
9
|
+
*/
|
|
10
|
+
import { Nanoseconds } from '@smoothbricks/arrow-builder';
|
|
11
|
+
import { ENTRY_TYPE_SPAN_EXCEPTION, ENTRY_TYPE_SPAN_START } from './schema/systemSchema.js';
|
|
12
|
+
import { createTraceId } from './traceId.js';
|
|
13
|
+
import { TRACE_ROOT_ANCHOR_EPOCH_OFFSET, TRACE_ROOT_ANCHOR_PERF_OFFSET, TRACE_ROOT_TRACE_ID_LEN_OFFSET, TRACE_ROOT_TRACE_ID_OFFSET, } from './traceRoot.js';
|
|
14
|
+
/** Shared TextEncoder for trace_id encoding (stateless, reusable) */
|
|
15
|
+
const textEncoder = new TextEncoder();
|
|
16
|
+
/** Shared TextDecoder for trace_id decoding (stateless, reusable) */
|
|
17
|
+
const textDecoder = new TextDecoder();
|
|
18
|
+
/**
|
|
19
|
+
* TraceRoot - Node.js implementation.
|
|
20
|
+
*
|
|
21
|
+
* Stores anchor data in _system ArrayBuffer and writes timestamps directly from JS.
|
|
22
|
+
*/
|
|
23
|
+
export class TraceRoot {
|
|
24
|
+
/**
|
|
25
|
+
* Raw backing buffer containing anchor timestamps and trace_id.
|
|
26
|
+
*/
|
|
27
|
+
_system;
|
|
28
|
+
/**
|
|
29
|
+
* Tracer reference for lifecycle hooks and event callbacks.
|
|
30
|
+
*/
|
|
31
|
+
tracer;
|
|
32
|
+
/**
|
|
33
|
+
* Cached TypedArray views for fast JS access.
|
|
34
|
+
*/
|
|
35
|
+
_epochView;
|
|
36
|
+
_perfView;
|
|
37
|
+
/**
|
|
38
|
+
* Cached anchor hrtime as BigInt for JS timestamp fallback.
|
|
39
|
+
* Only used if NAPI addon is not available.
|
|
40
|
+
*/
|
|
41
|
+
_anchorHrtimeBigInt;
|
|
42
|
+
constructor(trace_id, anchorEpochNanos, anchorPerfNow, anchorHrtimeBigInt, tracer) {
|
|
43
|
+
// Allocate buffer: 17 bytes header + trace_id length
|
|
44
|
+
// trace_id is validated to be ASCII (1 byte per char) so length === byte length
|
|
45
|
+
this._system = new ArrayBuffer(TRACE_ROOT_TRACE_ID_OFFSET + trace_id.length);
|
|
46
|
+
this.tracer = tracer;
|
|
47
|
+
// Create cached views (one-time allocation)
|
|
48
|
+
this._epochView = new BigInt64Array(this._system, TRACE_ROOT_ANCHOR_EPOCH_OFFSET, 1);
|
|
49
|
+
this._perfView = new Float64Array(this._system, TRACE_ROOT_ANCHOR_PERF_OFFSET, 1);
|
|
50
|
+
// Write anchor data directly
|
|
51
|
+
this._epochView[0] = anchorEpochNanos;
|
|
52
|
+
this._perfView[0] = anchorPerfNow;
|
|
53
|
+
// Keep exact monotonic anchor for JS fallback (avoid Number precision loss after ~104 days uptime)
|
|
54
|
+
this._anchorHrtimeBigInt = anchorHrtimeBigInt;
|
|
55
|
+
// Encode trace_id directly into buffer (no intermediate allocation)
|
|
56
|
+
const u8View = new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_LEN_OFFSET);
|
|
57
|
+
const traceIdDest = new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_OFFSET, trace_id.length);
|
|
58
|
+
const { written } = textEncoder.encodeInto(trace_id, traceIdDest);
|
|
59
|
+
u8View[0] = written;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Epoch time in nanoseconds when trace was created.
|
|
63
|
+
*/
|
|
64
|
+
get anchorEpochNanos() {
|
|
65
|
+
return this._epochView[0];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* High-resolution timer anchor when trace was created.
|
|
69
|
+
*/
|
|
70
|
+
get anchorPerfNow() {
|
|
71
|
+
return this._perfView[0];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Trace ID for this trace.
|
|
75
|
+
*/
|
|
76
|
+
get trace_id() {
|
|
77
|
+
const len = new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_LEN_OFFSET, 1)[0];
|
|
78
|
+
return createTraceId(textDecoder.decode(new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_OFFSET, len)));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get current timestamp in nanoseconds since Unix epoch.
|
|
82
|
+
* Uses process.hrtime.bigint() for true nanosecond precision.
|
|
83
|
+
*/
|
|
84
|
+
getTimestampNanos() {
|
|
85
|
+
const currentHrtime = process.hrtime.bigint();
|
|
86
|
+
const elapsedNanos = currentHrtime - this._anchorHrtimeBigInt;
|
|
87
|
+
return Nanoseconds.unsafe(this._epochView[0] + elapsedNanos);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Write span-start entry to buffer at row 0.
|
|
91
|
+
*
|
|
92
|
+
*/
|
|
93
|
+
writeSpanStart(buffer, spanName) {
|
|
94
|
+
buffer.timestamp[0] = this.getTimestampNanos();
|
|
95
|
+
buffer.entry_type[0] = ENTRY_TYPE_SPAN_START;
|
|
96
|
+
buffer.message(0, spanName);
|
|
97
|
+
// Pre-initialize row 1 as span-exception
|
|
98
|
+
buffer.entry_type[1] = ENTRY_TYPE_SPAN_EXCEPTION;
|
|
99
|
+
buffer.timestamp[1] = 0n;
|
|
100
|
+
buffer._writeIndex = 2;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Write span-end entry to buffer at row 1.
|
|
104
|
+
* Writes both timestamp and entry_type.
|
|
105
|
+
*
|
|
106
|
+
*/
|
|
107
|
+
writeSpanEnd(buffer, entryType) {
|
|
108
|
+
buffer.timestamp[1] = this.getTimestampNanos();
|
|
109
|
+
buffer.entry_type[1] = entryType;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
|
|
113
|
+
* SpanLogger uses returned idx for string column writes.
|
|
114
|
+
*/
|
|
115
|
+
writeLogEntry(buffer, entryType) {
|
|
116
|
+
const idx = buffer._writeIndex;
|
|
117
|
+
buffer.timestamp[idx] = this.getTimestampNanos();
|
|
118
|
+
buffer.entry_type[idx] = entryType;
|
|
119
|
+
buffer._writeIndex = idx + 1;
|
|
120
|
+
return idx;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Factory function for creating Node.js TraceRoot instances.
|
|
125
|
+
* Pass this to Tracer constructor for Node.js environments.
|
|
126
|
+
*/
|
|
127
|
+
export function createTraceRoot(trace_id, tracer) {
|
|
128
|
+
const anchorEpochNanos = BigInt(Date.now()) * 1000000n;
|
|
129
|
+
const anchorHrtimeBigInt = process.hrtime.bigint();
|
|
130
|
+
// Store as number for NAPI to read as f64
|
|
131
|
+
const anchorPerfNow = Number(anchorHrtimeBigInt);
|
|
132
|
+
return new TraceRoot(createTraceId(trace_id), anchorEpochNanos, anchorPerfNow, anchorHrtimeBigInt, tracer);
|
|
133
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceRoot.universal.d.ts","sourceRoot":"","sources":["../../src/lib/traceRoot.universal.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKvD,eAAO,MAAM,eAAe,EAAE,gBAC4E,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/**
|
|
3
|
+
* TraceRoot - Universal implementation with runtime platform detection.
|
|
4
|
+
*
|
|
5
|
+
* Selects between Node.js (nanosecond hrtime) and ES (performance.now()) based
|
|
6
|
+
* on whether process.hrtime.bigint is available at runtime.
|
|
7
|
+
*
|
|
8
|
+
* Both modules are safe to import — platform-specific calls (process.hrtime.bigint(),
|
|
9
|
+
* NAPI addon) happen inside the factory function, not at module scope.
|
|
10
|
+
*
|
|
11
|
+
* @module traceRoot.universal
|
|
12
|
+
*/
|
|
13
|
+
import { createTraceRoot as esFactory } from './traceRoot.es.js';
|
|
14
|
+
import { createTraceRoot as nodeFactory } from './traceRoot.node.js';
|
|
15
|
+
// Node/Bun → nanosecond precision via hrtime.bigint()
|
|
16
|
+
// CF Workers/browsers → performance.now() microsecond precision
|
|
17
|
+
export const createTraceRoot = typeof process !== 'undefined' && typeof process.hrtime?.bigint === 'function' ? nodeFactory : esFactory;
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracer - Abstract base class for trace collection
|
|
3
|
+
*
|
|
4
|
+
* Per specs/lmao/01c_context_flow_and_op_wrappers.md:
|
|
5
|
+
* - Tracer owns trace() function for creating root spans
|
|
6
|
+
* - Collects SpanBuffers in pendingBuffers array
|
|
7
|
+
* - Subclasses implement flush() to define persistence strategy
|
|
8
|
+
*
|
|
9
|
+
* ## Design Philosophy
|
|
10
|
+
*
|
|
11
|
+
* Tracer separates two concerns:
|
|
12
|
+
* 1. **BufferStrategy**: HOW buffers are allocated (JS TypedArrays vs WASM memory)
|
|
13
|
+
* 2. **Sink behavior** (lifecycle hooks): WHAT happens with completed buffers
|
|
14
|
+
*
|
|
15
|
+
* Tracer is ABSTRACT - subclasses implement lifecycle hooks:
|
|
16
|
+
* - `onTraceEnd()` - called when root trace completes
|
|
17
|
+
* - `onSpanEnd()` - called when child span completes
|
|
18
|
+
* - `flush()` - optional, for batching strategies
|
|
19
|
+
*
|
|
20
|
+
* BufferStrategy is INJECTED via constructor:
|
|
21
|
+
* - `JsBufferStrategy` - GC-managed TypedArrays, zero-copy Arrow
|
|
22
|
+
* - `WasmBufferStrategy` - WASM memory with freelist, Arrow built in WASM
|
|
23
|
+
*
|
|
24
|
+
* The sink controls WHEN to convert/release:
|
|
25
|
+
* - StdioTracer: prints then releases immediately
|
|
26
|
+
* - TestTracer: holds buffers until clear()
|
|
27
|
+
* - SqsTracer: accumulates, converts on flush(), then releases
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* // Concrete implementation - Cloudflare Queue
|
|
32
|
+
* class QueueTracer extends Tracer {
|
|
33
|
+
* constructor(binding, strategy, options, private queue: Queue) {
|
|
34
|
+
* super(binding, strategy, options);
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* async flush() {
|
|
38
|
+
* const buffers = [...this.pending];
|
|
39
|
+
* this.pending.length = 0;
|
|
40
|
+
* for (const buffer of buffers) {
|
|
41
|
+
* const table = await this.bufferStrategy.toArrowTable(buffer);
|
|
42
|
+
* await this.queue.send(table);
|
|
43
|
+
* this.bufferStrategy.releaseBuffer(buffer);
|
|
44
|
+
* }
|
|
45
|
+
* }
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* // Usage
|
|
49
|
+
* const ctx = defineOpContext({ logSchema, ctx: { env: null as Env } });
|
|
50
|
+
* const strategy = new JsBufferStrategy();
|
|
51
|
+
* const { trace, flush } = new QueueTracer(ctx, strategy, options, env.TRACES);
|
|
52
|
+
* await trace('fetch', { env: myEnv }, async (ctx) => {
|
|
53
|
+
* ctx.tag.userId('user-123');
|
|
54
|
+
* return ctx.ok('done');
|
|
55
|
+
* });
|
|
56
|
+
* executionContext.waitUntil(flush());
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @module tracer
|
|
60
|
+
*/
|
|
61
|
+
import type { BufferStrategy } from './bufferStrategy.js';
|
|
62
|
+
import { Op } from './op.js';
|
|
63
|
+
import type { OpContext, OpContextBinding, OpContextOf, SpanContext } from './opContext/types.js';
|
|
64
|
+
import { type Result } from './result.js';
|
|
65
|
+
import { type FlagEvaluator } from './schema/evaluator.js';
|
|
66
|
+
import { type TraceId } from './traceId.js';
|
|
67
|
+
import type { TraceRootFactory } from './traceRoot.js';
|
|
68
|
+
import type { SpanBuffer } from './types.js';
|
|
69
|
+
/**
|
|
70
|
+
* Base tracer options (can be extended by subclasses)
|
|
71
|
+
*
|
|
72
|
+
* Flag evaluator typing is intentionally loose - the evaluator just needs to
|
|
73
|
+
* implement the FlagEvaluator interface. Type safety for flag access comes from
|
|
74
|
+
* the OpContext's flags schema, not from the evaluator's type parameter.
|
|
75
|
+
*/
|
|
76
|
+
export interface TracerOptions<T extends import('./schema/LogSchema.js').LogSchema = import('./schema/LogSchema.js').LogSchema> {
|
|
77
|
+
/**
|
|
78
|
+
* Buffer strategy for memory management and Arrow conversion.
|
|
79
|
+
*
|
|
80
|
+
* Controls HOW buffers are allocated:
|
|
81
|
+
* - JsBufferStrategy: GC-managed TypedArrays, zero-copy Arrow
|
|
82
|
+
* - WasmBufferStrategy: WASM memory with freelist, Arrow built in WASM
|
|
83
|
+
*/
|
|
84
|
+
bufferStrategy: BufferStrategy<T>;
|
|
85
|
+
/**
|
|
86
|
+
* Factory for creating platform-specific TraceRoot instances.
|
|
87
|
+
* Import from '@smoothbricks/lmao/node' or '@smoothbricks/lmao/es'.
|
|
88
|
+
*/
|
|
89
|
+
createTraceRoot: TraceRootFactory;
|
|
90
|
+
/** Feature flag evaluator - provides flag values at runtime */
|
|
91
|
+
flagEvaluator?: FlagEvaluator<OpContext>;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Trace overrides - userCtx values plus optional trace_id.
|
|
95
|
+
*
|
|
96
|
+
* Like span() overrides, but with optional trace_id for distributed tracing.
|
|
97
|
+
* The trace_id must be a branded TraceId (use createTraceId() to validate).
|
|
98
|
+
*
|
|
99
|
+
* When UserCtx is empty (Record<string, never>), only trace_id is available.
|
|
100
|
+
* Otherwise, allows partial userCtx values plus trace_id.
|
|
101
|
+
*
|
|
102
|
+
* We use a conditional type to avoid issues with Partial<Record<string, never>>
|
|
103
|
+
* which creates an index signature where all values must be undefined.
|
|
104
|
+
*
|
|
105
|
+
* @typeParam UserCtx - User context type from OpContext
|
|
106
|
+
*/
|
|
107
|
+
export type TraceOverrides<UserCtx> = [UserCtx] extends [Record<string, never>] ? {
|
|
108
|
+
trace_id?: TraceId;
|
|
109
|
+
} : Partial<UserCtx> & {
|
|
110
|
+
trace_id?: TraceId;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* TraceFn - overloaded trace creation function.
|
|
114
|
+
*
|
|
115
|
+
* Per specs/lmao/01c_context_flow_and_op_wrappers.md:
|
|
116
|
+
* Creates root spans with type-safe Op invocation or inline closures.
|
|
117
|
+
* Mirrors SpanFn but for root traces.
|
|
118
|
+
*
|
|
119
|
+
* Pattern:
|
|
120
|
+
* - With/without line numbers (transformer injection)
|
|
121
|
+
* - Always requires name (unlike span which can use op.metadata.name)
|
|
122
|
+
* - With/without overrides (userCtx + optional trace_id)
|
|
123
|
+
* - With/without Op arguments (0-8 args supported)
|
|
124
|
+
*
|
|
125
|
+
* @template Ctx - Full OpContext type from the tracer's binding
|
|
126
|
+
*/
|
|
127
|
+
export type TraceFn<Ctx extends OpContext> = {
|
|
128
|
+
/**
|
|
129
|
+
* Trace Op with line + name + args.
|
|
130
|
+
*/
|
|
131
|
+
<S, E, Args extends unknown[]>(line: number, name: string, op: Op<Ctx, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
|
|
132
|
+
/**
|
|
133
|
+
* Trace Op with line + name + overrides + args.
|
|
134
|
+
*/
|
|
135
|
+
<S, E, Args extends unknown[]>(line: number, name: string, overrides: TraceOverrides<Ctx['userCtx']>, op: Op<Ctx, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
|
|
136
|
+
/**
|
|
137
|
+
* Trace inline function with line + name.
|
|
138
|
+
*/
|
|
139
|
+
<R>(line: number, name: string, fn: (ctx: SpanContext<Ctx>) => R): R;
|
|
140
|
+
/**
|
|
141
|
+
* Trace inline function with line + name + overrides.
|
|
142
|
+
*/
|
|
143
|
+
<R>(line: number, name: string, overrides: TraceOverrides<Ctx['userCtx']>, fn: (ctx: SpanContext<Ctx>) => R): R;
|
|
144
|
+
/**
|
|
145
|
+
* Trace Op with name + args.
|
|
146
|
+
*/
|
|
147
|
+
<S, E, Args extends unknown[]>(name: string, op: Op<Ctx, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
|
|
148
|
+
/**
|
|
149
|
+
* Trace Op with name + overrides + args.
|
|
150
|
+
*/
|
|
151
|
+
<S, E, Args extends unknown[]>(name: string, overrides: TraceOverrides<Ctx['userCtx']>, op: Op<Ctx, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
|
|
152
|
+
/**
|
|
153
|
+
* Trace inline function with name.
|
|
154
|
+
*/
|
|
155
|
+
<R>(name: string, fn: (ctx: SpanContext<Ctx>) => R): R;
|
|
156
|
+
/**
|
|
157
|
+
* Trace inline function with name + overrides.
|
|
158
|
+
*/
|
|
159
|
+
<R>(name: string, overrides: TraceOverrides<Ctx['userCtx']>, fn: (ctx: SpanContext<Ctx>) => R): R;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Tracer - Abstract base class for trace collection
|
|
163
|
+
*
|
|
164
|
+
* Provides trace execution with lifecycle hooks for buffer management.
|
|
165
|
+
* Subclasses implement onTraceStart, onTraceEnd, onSpanStart, onSpanEnd to define
|
|
166
|
+
* how spans are collected and processed.
|
|
167
|
+
*
|
|
168
|
+
* BufferStrategy is injected to control memory management and Arrow conversion.
|
|
169
|
+
*
|
|
170
|
+
* @typeParam B - OpContextBinding type (inferred from constructor argument)
|
|
171
|
+
*/
|
|
172
|
+
export declare abstract class Tracer<B extends OpContextBinding = OpContextBinding> {
|
|
173
|
+
private readonly logBinding;
|
|
174
|
+
private readonly SpanContextClass;
|
|
175
|
+
private readonly flagEvaluator;
|
|
176
|
+
private readonly ctxDefaults;
|
|
177
|
+
private readonly deps;
|
|
178
|
+
private readonly createTraceRoot;
|
|
179
|
+
/**
|
|
180
|
+
* Buffer strategy for memory management and Arrow conversion.
|
|
181
|
+
* Public because SpanContext needs access for child span creation.
|
|
182
|
+
* Also accessible to subclasses for toArrowTable/releaseBuffer calls.
|
|
183
|
+
*/
|
|
184
|
+
readonly bufferStrategy: BufferStrategy<B['logBinding']['logSchema']>;
|
|
185
|
+
constructor(binding: B, options: TracerOptions<B['logBinding']['logSchema']>);
|
|
186
|
+
private _createFlagEvaluator;
|
|
187
|
+
/**
|
|
188
|
+
* Called when a root trace starts (before fn execution).
|
|
189
|
+
* Only called for root spans created via trace(), not child spans.
|
|
190
|
+
* Subclasses implement to handle trace lifecycle events (e.g., collect for batching).
|
|
191
|
+
*/
|
|
192
|
+
abstract onTraceStart(rootBuffer: SpanBuffer<B['logBinding']['logSchema']>): void;
|
|
193
|
+
/**
|
|
194
|
+
* Called when a root trace ends (after fn completes, in finally).
|
|
195
|
+
* Always called, even if fn threw an exception.
|
|
196
|
+
* Only called for root spans created via trace(), not child spans.
|
|
197
|
+
* Subclasses implement to handle trace completion (e.g., queue for sending).
|
|
198
|
+
*/
|
|
199
|
+
abstract onTraceEnd(rootBuffer: SpanBuffer<B['logBinding']['logSchema']>): void;
|
|
200
|
+
/**
|
|
201
|
+
* Called when a child span starts (before fn execution).
|
|
202
|
+
* Only called for child spans created via ctx.span(), not root traces.
|
|
203
|
+
* Subclasses implement if child span lifecycle needs special handling.
|
|
204
|
+
*/
|
|
205
|
+
abstract onSpanStart(childBuffer: SpanBuffer<B['logBinding']['logSchema']>): void;
|
|
206
|
+
/**
|
|
207
|
+
* Called when a child span ends (after fn completes, in finally).
|
|
208
|
+
* Always called, even if fn threw an exception.
|
|
209
|
+
* Only called for child spans created via ctx.span(), not root traces.
|
|
210
|
+
* Subclasses implement if child span lifecycle needs special handling.
|
|
211
|
+
*/
|
|
212
|
+
abstract onSpanEnd(childBuffer: SpanBuffer<B['logBinding']['logSchema']>): void;
|
|
213
|
+
/**
|
|
214
|
+
* Called before stats are reset during capacity tuning.
|
|
215
|
+
* Allows tracer to capture stats for observability before they're lost.
|
|
216
|
+
*
|
|
217
|
+
* The buffer provides all necessary context:
|
|
218
|
+
* - buffer._stats → SpanBufferStats about to be reset
|
|
219
|
+
* - buffer._opMetadata → which Op/module these stats belong to
|
|
220
|
+
* - buffer.constructor → SpanBufferClass (schema info)
|
|
221
|
+
*
|
|
222
|
+
* @param buffer - The buffer that triggered overflow
|
|
223
|
+
*/
|
|
224
|
+
abstract onStatsWillResetFor(buffer: SpanBuffer<B['logBinding']['logSchema']>): void;
|
|
225
|
+
/**
|
|
226
|
+
* Flush any pending data. Default is no-op.
|
|
227
|
+
* Subclasses override if they batch data (e.g., collecting in onTraceEnd then flushing here).
|
|
228
|
+
*/
|
|
229
|
+
flush(): Promise<void>;
|
|
230
|
+
/**
|
|
231
|
+
* Polymorphic trace dispatcher.
|
|
232
|
+
*
|
|
233
|
+
* Parses overloaded arguments and dispatches to monomorphic methods.
|
|
234
|
+
* Uses argument type detection for clean pattern matching.
|
|
235
|
+
*
|
|
236
|
+
* Patterns supported:
|
|
237
|
+
* - (name, fn)
|
|
238
|
+
* - (name, overrides, fn)
|
|
239
|
+
* - (name, op, ...args)
|
|
240
|
+
* - (name, overrides, op, ...args)
|
|
241
|
+
* - Plus line number prefix variants for transformer
|
|
242
|
+
*
|
|
243
|
+
* @see TraceFn for type-level documentation of all overloads
|
|
244
|
+
*/
|
|
245
|
+
trace<S, E, Args extends unknown[]>(line: number, name: string, op: Op<OpContextOf<B>, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
|
|
246
|
+
trace<S, E, Args extends unknown[]>(line: number, name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, op: Op<OpContextOf<B>, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
|
|
247
|
+
trace<R>(line: number, name: string, fn: (ctx: SpanContext<OpContextOf<B>>) => R): R;
|
|
248
|
+
trace<R>(line: number, name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, fn: (ctx: SpanContext<OpContextOf<B>>) => R): R;
|
|
249
|
+
trace<S, E, Args extends unknown[]>(name: string, op: Op<OpContextOf<B>, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
|
|
250
|
+
trace<S, E, Args extends unknown[]>(name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, op: Op<OpContextOf<B>, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
|
|
251
|
+
trace<R>(name: string, fn: (ctx: SpanContext<OpContextOf<B>>) => R): R;
|
|
252
|
+
trace<R>(name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, fn: (ctx: SpanContext<OpContextOf<B>>) => R): R;
|
|
253
|
+
/**
|
|
254
|
+
* Execute an Op as a root trace (internal monomorphic method).
|
|
255
|
+
* Supports 0-8 arguments. The transformer rewrites trace() calls to this.
|
|
256
|
+
*/
|
|
257
|
+
private _trace_op;
|
|
258
|
+
private _trace_unknown_op;
|
|
259
|
+
/**
|
|
260
|
+
* Execute a function as a root trace (internal monomorphic method).
|
|
261
|
+
* The transformer rewrites trace() calls to this.
|
|
262
|
+
*/
|
|
263
|
+
private _trace_fn;
|
|
264
|
+
private _trace_unknown_fn;
|
|
265
|
+
/**
|
|
266
|
+
* Execute an Op as a root trace (monomorphic - for transformer optimization).
|
|
267
|
+
* Public API for transformer to call directly, bypassing polymorphic dispatch.
|
|
268
|
+
*/
|
|
269
|
+
trace_op<S, E, Args extends unknown[]>(line: number, name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, op: Op<OpContextOf<B>, Args, S, E>, ...opArgs: Args): Result<S, E> | Promise<Result<S, E>>;
|
|
270
|
+
/**
|
|
271
|
+
* Execute a function as a root trace (monomorphic - for transformer optimization).
|
|
272
|
+
* Public API for transformer to call directly, bypassing polymorphic dispatch.
|
|
273
|
+
*/
|
|
274
|
+
trace_fn<R>(line: number, name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, fn: (ctx: SpanContext<OpContextOf<B>>) => Promise<R>): Promise<R>;
|
|
275
|
+
trace_fn<R>(line: number, name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, fn: (ctx: SpanContext<OpContextOf<B>>) => R): R;
|
|
276
|
+
private _createRootContext;
|
|
277
|
+
/**
|
|
278
|
+
* Validate null-sentinel required fields and merge with provided overrides.
|
|
279
|
+
*
|
|
280
|
+
* Per the ctx config pattern:
|
|
281
|
+
* - Properties with null values in ctxDefaults must be provided in overrides
|
|
282
|
+
* - Properties with default values can optionally be overridden
|
|
283
|
+
* - undefined is allowed for optional fields
|
|
284
|
+
*/
|
|
285
|
+
private _resolveUserContext;
|
|
286
|
+
/**
|
|
287
|
+
* Execute function with context and handle span-ok/span-err/span-exception writes
|
|
288
|
+
* Promise-agnostic: returns sync for sync fn, Promise for async fn
|
|
289
|
+
*
|
|
290
|
+
* Writes span-end entry (entry_type, timestamp, error_code) and applies deferred tags
|
|
291
|
+
* when the function returns an Ok/Err result.
|
|
292
|
+
*/
|
|
293
|
+
private _executeResultWithContext;
|
|
294
|
+
private _executeUnknownWithContext;
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=tracer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/lib/tracer.ts"],"names":[],"mappings":"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"}
|