@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,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WASM-backed TraceRoot that writes span lifecycle events via WASM allocator.
|
|
3
|
+
*
|
|
4
|
+
* Unlike NodeTraceRoot which writes to JS ArrayBuffers, this writes directly
|
|
5
|
+
* to WASM memory using the allocator's span lifecycle functions.
|
|
6
|
+
*
|
|
7
|
+
* Implements ITraceRoot for compatibility with SpanContext and Tracer.
|
|
8
|
+
*
|
|
9
|
+
* @module wasmTraceRoot
|
|
10
|
+
*/
|
|
11
|
+
import { Nanoseconds } from '@smoothbricks/arrow-builder';
|
|
12
|
+
import { type TraceId } from '../traceId.js';
|
|
13
|
+
import type { ITraceRoot, TracerLifecycleHooks } from '../traceRoot.js';
|
|
14
|
+
import type { AnySpanBuffer } from '../types.js';
|
|
15
|
+
import type { WasmAllocator } from './wasmAllocator.js';
|
|
16
|
+
/**
|
|
17
|
+
* Interface for WASM-backed span buffers.
|
|
18
|
+
* These have a _systemPtr that points to WASM memory.
|
|
19
|
+
*/
|
|
20
|
+
export interface WasmSpanBufferLike {
|
|
21
|
+
/** Byte offset into WASM memory for system columns (timestamp + entry_type) */
|
|
22
|
+
readonly _systemPtr: number;
|
|
23
|
+
/** Byte offset into WASM memory for identity block (writeIndex, span_id, trace_id) */
|
|
24
|
+
readonly _identityPtr: number;
|
|
25
|
+
/** Message column - string array for span names and log messages */
|
|
26
|
+
readonly _message: string[];
|
|
27
|
+
/** Current write position (getter/setter reads from WASM identity block) */
|
|
28
|
+
_writeIndex: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Type guard to check if a buffer is WASM-backed.
|
|
32
|
+
*/
|
|
33
|
+
export declare function isWasmSpanBuffer(buffer: unknown): buffer is WasmSpanBufferLike;
|
|
34
|
+
/**
|
|
35
|
+
* WASM-backed TraceRoot implementation.
|
|
36
|
+
*
|
|
37
|
+
* Implements ITraceRoot so it's compatible with SpanContext and the base Tracer.
|
|
38
|
+
* Writes timestamps and entry types to WASM memory for WASM-backed buffers.
|
|
39
|
+
*
|
|
40
|
+
* Memory Layout at _traceRootPtr (16 bytes):
|
|
41
|
+
* - Offset 0-7: anchorEpochNanos (i64) - wall clock time in nanoseconds
|
|
42
|
+
* - Offset 8-15: anchorPerfNow (f64) - performance.now() anchor value
|
|
43
|
+
*
|
|
44
|
+
* The WASM allocator's initTraceRoot() captures these values at trace start,
|
|
45
|
+
* and span lifecycle methods use them to calculate timestamps.
|
|
46
|
+
*/
|
|
47
|
+
export declare class WasmTraceRoot implements ITraceRoot {
|
|
48
|
+
/** Byte offset in WASM memory where TraceRoot data lives */
|
|
49
|
+
readonly _traceRootPtr: number;
|
|
50
|
+
/** The WASM allocator instance */
|
|
51
|
+
readonly allocator: WasmAllocator;
|
|
52
|
+
/** Trace ID string */
|
|
53
|
+
readonly trace_id: TraceId;
|
|
54
|
+
/** Tracer reference for lifecycle hooks */
|
|
55
|
+
readonly tracer: TracerLifecycleHooks;
|
|
56
|
+
/**
|
|
57
|
+
* Raw backing buffer - not used for WASM, but required by ITraceRoot.
|
|
58
|
+
* We create a minimal ArrayBuffer just to satisfy the interface.
|
|
59
|
+
*/
|
|
60
|
+
readonly _system: ArrayBuffer;
|
|
61
|
+
constructor(allocator: WasmAllocator, trace_id: TraceId, tracer: TracerLifecycleHooks);
|
|
62
|
+
/**
|
|
63
|
+
* Epoch time in nanoseconds when trace was created.
|
|
64
|
+
* Read from WASM memory at _traceRootPtr offset 0.
|
|
65
|
+
*/
|
|
66
|
+
get anchorEpochNanos(): bigint;
|
|
67
|
+
/**
|
|
68
|
+
* High-resolution timer anchor when trace was created.
|
|
69
|
+
* Read from WASM memory at _traceRootPtr offset 8.
|
|
70
|
+
*/
|
|
71
|
+
get anchorPerfNow(): number;
|
|
72
|
+
/**
|
|
73
|
+
* Get current timestamp in nanoseconds since Unix epoch.
|
|
74
|
+
*
|
|
75
|
+
* Uses the same calculation as NodeTraceRoot:
|
|
76
|
+
* currentNanos = anchorEpochNanos + (currentPerfNow - anchorPerfNow) * 1_000_000
|
|
77
|
+
*
|
|
78
|
+
* Note: In the browser, performance.now() returns milliseconds as a float.
|
|
79
|
+
* We convert to nanoseconds for consistency with the trace format.
|
|
80
|
+
*/
|
|
81
|
+
getTimestampNanos(): Nanoseconds;
|
|
82
|
+
/**
|
|
83
|
+
* Write span-start entry to buffer at row 0.
|
|
84
|
+
*
|
|
85
|
+
* For WASM buffers: writes via WASM allocator to WASM memory
|
|
86
|
+
* Sets row 0 = span-start, row 1 = span-exception (crash safety).
|
|
87
|
+
* Sets _writeIndex = 2.
|
|
88
|
+
*
|
|
89
|
+
* @param buffer - SpanBuffer to write to (can be WASM or JS buffer)
|
|
90
|
+
* @param spanName - Name for this span
|
|
91
|
+
*/
|
|
92
|
+
writeSpanStart(buffer: AnySpanBuffer, spanName: string): void;
|
|
93
|
+
/**
|
|
94
|
+
* Write span-end entry to buffer at row 1.
|
|
95
|
+
* Writes both timestamp and entry_type.
|
|
96
|
+
*
|
|
97
|
+
* @param buffer - SpanBuffer to write to
|
|
98
|
+
* @param entryType - Entry type (SPAN_OK, SPAN_ERR, or SPAN_EXCEPTION)
|
|
99
|
+
*/
|
|
100
|
+
writeSpanEnd(buffer: AnySpanBuffer, entryType: number): void;
|
|
101
|
+
/**
|
|
102
|
+
* Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
|
|
103
|
+
* SpanLogger uses returned idx for string column writes.
|
|
104
|
+
*
|
|
105
|
+
* @param buffer - SpanBuffer to write to
|
|
106
|
+
* @param entryType - Entry type (INFO, DEBUG, WARN, ERROR, TRACE, FF_ACCESS, FF_USAGE)
|
|
107
|
+
* @returns The row index where entry was written
|
|
108
|
+
*/
|
|
109
|
+
writeLogEntry(buffer: AnySpanBuffer, entryType: number): number;
|
|
110
|
+
/**
|
|
111
|
+
* Write span-start entry to buffer's system block using pointer.
|
|
112
|
+
* Sets row 0 = span-start, row 1 = span-exception (crash safety).
|
|
113
|
+
* Sets _writeIndex = 2 in the identity block.
|
|
114
|
+
*
|
|
115
|
+
* @param systemPtr - Byte offset of buffer's system block in WASM memory
|
|
116
|
+
* @param identityPtr - Byte offset of buffer's identity block in WASM memory
|
|
117
|
+
*/
|
|
118
|
+
writeSpanStartPtr(systemPtr: number, identityPtr: number): void;
|
|
119
|
+
/**
|
|
120
|
+
* Write span-ok to row 1 using pointer.
|
|
121
|
+
* @param systemPtr - Byte offset of buffer's system block in WASM memory
|
|
122
|
+
*/
|
|
123
|
+
writeSpanEndOkPtr(systemPtr: number): void;
|
|
124
|
+
/**
|
|
125
|
+
* Write span-err to row 1 using pointer.
|
|
126
|
+
* @param systemPtr - Byte offset of buffer's system block in WASM memory
|
|
127
|
+
*/
|
|
128
|
+
writeSpanEndErrPtr(systemPtr: number): void;
|
|
129
|
+
/**
|
|
130
|
+
* Write a log entry at current write index using pointer.
|
|
131
|
+
* Returns the row index where entry was written.
|
|
132
|
+
*
|
|
133
|
+
* @param systemPtr - Byte offset of buffer's system block in WASM memory
|
|
134
|
+
* @param identityPtr - Byte offset of buffer's identity block in WASM memory
|
|
135
|
+
* @param entryType - Entry type constant (ENTRY_TYPE_INFO, etc.)
|
|
136
|
+
* @returns Row index where entry was written
|
|
137
|
+
*/
|
|
138
|
+
writeLogEntryPtr(systemPtr: number, identityPtr: number, entryType: number): number;
|
|
139
|
+
/**
|
|
140
|
+
* Read current write index from buffer's identity block.
|
|
141
|
+
* @param identityPtr - Byte offset of buffer's identity block in WASM memory
|
|
142
|
+
*/
|
|
143
|
+
readWriteIndex(identityPtr: number): number;
|
|
144
|
+
/**
|
|
145
|
+
* Free the TraceRoot's memory block when trace completes.
|
|
146
|
+
*/
|
|
147
|
+
free(): void;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Create a WasmTraceRoot instance directly.
|
|
151
|
+
* Used by tests and low-level code.
|
|
152
|
+
*
|
|
153
|
+
* @param allocator - WASM allocator instance
|
|
154
|
+
* @param trace_id - Trace ID for this trace
|
|
155
|
+
* @param tracer - Tracer lifecycle hooks
|
|
156
|
+
*/
|
|
157
|
+
export declare function createWasmTraceRoot(allocator: WasmAllocator, trace_id: string, tracer: TracerLifecycleHooks): WasmTraceRoot;
|
|
158
|
+
/**
|
|
159
|
+
* Factory function to create WasmTraceRoot factory.
|
|
160
|
+
*
|
|
161
|
+
* This returns a factory function that can be passed to Tracer constructor.
|
|
162
|
+
*
|
|
163
|
+
* @param allocator - WASM allocator instance
|
|
164
|
+
* @returns Factory function compatible with TraceRootFactory type
|
|
165
|
+
*/
|
|
166
|
+
export declare function createWasmTraceRootFactory(allocator: WasmAllocator): (trace_id: string, tracer: TracerLifecycleHooks) => WasmTraceRoot;
|
|
167
|
+
//# sourceMappingURL=wasmTraceRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasmTraceRoot.d.ts","sourceRoot":"","sources":["../../../src/lib/wasm/wasmTraceRoot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,kBAAkB,CAE9E;AAMD;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC9C,4DAA4D;IAC5D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAElC,sBAAsB;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;gBAElB,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB;IAiBrF;;;OAGG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAG7B;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAG1B;IAED;;;;;;;;OAQG;IACH,iBAAiB,IAAI,WAAW;IAWhC;;;;;;;;;OASG;IACH,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqB7D;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA0B5D;;;;;;;OAOG;IACH,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAkB/D;;;;;;;OAOG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAI/D;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3C;;;;;;;;OAQG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAInF;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,IAAI,IAAI,IAAI;CAGb;AAMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,oBAAoB,GAC3B,aAAa,CAEf;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,aAAa,IACzD,UAAU,MAAM,EAAE,QAAQ,oBAAoB,KAAG,aAAa,CAGvE"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WASM-backed TraceRoot that writes span lifecycle events via WASM allocator.
|
|
3
|
+
*
|
|
4
|
+
* Unlike NodeTraceRoot which writes to JS ArrayBuffers, this writes directly
|
|
5
|
+
* to WASM memory using the allocator's span lifecycle functions.
|
|
6
|
+
*
|
|
7
|
+
* Implements ITraceRoot for compatibility with SpanContext and Tracer.
|
|
8
|
+
*
|
|
9
|
+
* @module wasmTraceRoot
|
|
10
|
+
*/
|
|
11
|
+
import { Nanoseconds } from '@smoothbricks/arrow-builder';
|
|
12
|
+
import { ENTRY_TYPE_SPAN_EXCEPTION, ENTRY_TYPE_SPAN_START } from '../schema/systemSchema.js';
|
|
13
|
+
import { createTraceId } from '../traceId.js';
|
|
14
|
+
/**
|
|
15
|
+
* Type guard to check if a buffer is WASM-backed.
|
|
16
|
+
*/
|
|
17
|
+
export function isWasmSpanBuffer(buffer) {
|
|
18
|
+
return typeof buffer === 'object' && buffer !== null && typeof Reflect.get(buffer, '_systemPtr') === 'number';
|
|
19
|
+
}
|
|
20
|
+
// =============================================================================
|
|
21
|
+
// WasmTraceRoot Implementation
|
|
22
|
+
// =============================================================================
|
|
23
|
+
/**
|
|
24
|
+
* WASM-backed TraceRoot implementation.
|
|
25
|
+
*
|
|
26
|
+
* Implements ITraceRoot so it's compatible with SpanContext and the base Tracer.
|
|
27
|
+
* Writes timestamps and entry types to WASM memory for WASM-backed buffers.
|
|
28
|
+
*
|
|
29
|
+
* Memory Layout at _traceRootPtr (16 bytes):
|
|
30
|
+
* - Offset 0-7: anchorEpochNanos (i64) - wall clock time in nanoseconds
|
|
31
|
+
* - Offset 8-15: anchorPerfNow (f64) - performance.now() anchor value
|
|
32
|
+
*
|
|
33
|
+
* The WASM allocator's initTraceRoot() captures these values at trace start,
|
|
34
|
+
* and span lifecycle methods use them to calculate timestamps.
|
|
35
|
+
*/
|
|
36
|
+
export class WasmTraceRoot {
|
|
37
|
+
/** Byte offset in WASM memory where TraceRoot data lives */
|
|
38
|
+
_traceRootPtr;
|
|
39
|
+
/** The WASM allocator instance */
|
|
40
|
+
allocator;
|
|
41
|
+
/** Trace ID string */
|
|
42
|
+
trace_id;
|
|
43
|
+
/** Tracer reference for lifecycle hooks */
|
|
44
|
+
tracer;
|
|
45
|
+
/**
|
|
46
|
+
* Raw backing buffer - not used for WASM, but required by ITraceRoot.
|
|
47
|
+
* We create a minimal ArrayBuffer just to satisfy the interface.
|
|
48
|
+
*/
|
|
49
|
+
_system;
|
|
50
|
+
constructor(allocator, trace_id, tracer) {
|
|
51
|
+
this.allocator = allocator;
|
|
52
|
+
this.trace_id = trace_id;
|
|
53
|
+
this.tracer = tracer;
|
|
54
|
+
// Create minimal _system buffer (not actually used, but required by interface)
|
|
55
|
+
this._system = new ArrayBuffer(16);
|
|
56
|
+
// Allocate an 8B column block for TraceRoot data (16 bytes needed, 8B block is large enough)
|
|
57
|
+
// The 8B column block size is: ceil(capacity/8) + capacity*8 = 8 + 512 = 520 bytes for capacity 64
|
|
58
|
+
// We only need 16 bytes, so this works fine
|
|
59
|
+
this._traceRootPtr = allocator.alloc8B();
|
|
60
|
+
// Initialize wall clock and monotonic start times in WASM memory
|
|
61
|
+
allocator.initTraceRoot(this._traceRootPtr);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Epoch time in nanoseconds when trace was created.
|
|
65
|
+
* Read from WASM memory at _traceRootPtr offset 0.
|
|
66
|
+
*/
|
|
67
|
+
get anchorEpochNanos() {
|
|
68
|
+
// i64 view is indexed by 8-byte chunks
|
|
69
|
+
return this.allocator.i64[this._traceRootPtr / 8];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* High-resolution timer anchor when trace was created.
|
|
73
|
+
* Read from WASM memory at _traceRootPtr offset 8.
|
|
74
|
+
*/
|
|
75
|
+
get anchorPerfNow() {
|
|
76
|
+
// f64 view is indexed by 8-byte chunks
|
|
77
|
+
return this.allocator.f64[(this._traceRootPtr + 8) / 8];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get current timestamp in nanoseconds since Unix epoch.
|
|
81
|
+
*
|
|
82
|
+
* Uses the same calculation as NodeTraceRoot:
|
|
83
|
+
* currentNanos = anchorEpochNanos + (currentPerfNow - anchorPerfNow) * 1_000_000
|
|
84
|
+
*
|
|
85
|
+
* Note: In the browser, performance.now() returns milliseconds as a float.
|
|
86
|
+
* We convert to nanoseconds for consistency with the trace format.
|
|
87
|
+
*/
|
|
88
|
+
getTimestampNanos() {
|
|
89
|
+
const elapsedMs = performance.now() - this.anchorPerfNow;
|
|
90
|
+
const elapsedNanos = BigInt(Math.round(elapsedMs * 1_000_000));
|
|
91
|
+
return Nanoseconds.unsafe(this.anchorEpochNanos + elapsedNanos);
|
|
92
|
+
}
|
|
93
|
+
// ===========================================================================
|
|
94
|
+
// ITraceRoot implementation (takes buffer parameter)
|
|
95
|
+
// These are the methods used by SpanContext and Tracer
|
|
96
|
+
// ===========================================================================
|
|
97
|
+
/**
|
|
98
|
+
* Write span-start entry to buffer at row 0.
|
|
99
|
+
*
|
|
100
|
+
* For WASM buffers: writes via WASM allocator to WASM memory
|
|
101
|
+
* Sets row 0 = span-start, row 1 = span-exception (crash safety).
|
|
102
|
+
* Sets _writeIndex = 2.
|
|
103
|
+
*
|
|
104
|
+
* @param buffer - SpanBuffer to write to (can be WASM or JS buffer)
|
|
105
|
+
* @param spanName - Name for this span
|
|
106
|
+
*/
|
|
107
|
+
writeSpanStart(buffer, spanName) {
|
|
108
|
+
if (isWasmSpanBuffer(buffer)) {
|
|
109
|
+
// WASM path: delegate to WASM allocator
|
|
110
|
+
// spanStart writes row 0 (span-start) and row 1 (span-exception placeholder)
|
|
111
|
+
// Also sets writeIndex to 2 in the identity block
|
|
112
|
+
this.allocator.spanStart(buffer._systemPtr, buffer._identityPtr, this._traceRootPtr);
|
|
113
|
+
// Write span name to message column (JS string array)
|
|
114
|
+
buffer._message[0] = spanName;
|
|
115
|
+
// Note: _writeIndex is set by WASM spanStart to 2, but the getter reads from WASM
|
|
116
|
+
// so we don't need to set it here explicitly (the setter would write to WASM anyway)
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// JS path: write directly to TypedArrays (fallback for mixed usage)
|
|
120
|
+
buffer.timestamp[0] = this.getTimestampNanos();
|
|
121
|
+
buffer.entry_type[0] = ENTRY_TYPE_SPAN_START;
|
|
122
|
+
buffer.message(0, spanName);
|
|
123
|
+
buffer.entry_type[1] = ENTRY_TYPE_SPAN_EXCEPTION;
|
|
124
|
+
buffer.timestamp[1] = 0n;
|
|
125
|
+
buffer._writeIndex = 2;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Write span-end entry to buffer at row 1.
|
|
130
|
+
* Writes both timestamp and entry_type.
|
|
131
|
+
*
|
|
132
|
+
* @param buffer - SpanBuffer to write to
|
|
133
|
+
* @param entryType - Entry type (SPAN_OK, SPAN_ERR, or SPAN_EXCEPTION)
|
|
134
|
+
*/
|
|
135
|
+
writeSpanEnd(buffer, entryType) {
|
|
136
|
+
if (isWasmSpanBuffer(buffer)) {
|
|
137
|
+
// WASM path: use appropriate end function based on entry type
|
|
138
|
+
// Note: WASM spanEndOk/spanEndErr write to row 1
|
|
139
|
+
if (entryType === 2) {
|
|
140
|
+
// SPAN_OK
|
|
141
|
+
this.allocator.spanEndOk(buffer._systemPtr, this._traceRootPtr);
|
|
142
|
+
}
|
|
143
|
+
else if (entryType === 3) {
|
|
144
|
+
// SPAN_ERR
|
|
145
|
+
this.allocator.spanEndErr(buffer._systemPtr, this._traceRootPtr);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// SPAN_EXCEPTION or other - write via generic log entry
|
|
149
|
+
// For now, use spanEndErr as fallback (entry_type will be overwritten)
|
|
150
|
+
this.allocator.spanEndErr(buffer._systemPtr, this._traceRootPtr);
|
|
151
|
+
// Overwrite entry_type if needed (for EXCEPTION)
|
|
152
|
+
if (entryType !== 3) {
|
|
153
|
+
buffer.entry_type[1] = entryType;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
// JS path
|
|
159
|
+
buffer.timestamp[1] = this.getTimestampNanos();
|
|
160
|
+
buffer.entry_type[1] = entryType;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
|
|
165
|
+
* SpanLogger uses returned idx for string column writes.
|
|
166
|
+
*
|
|
167
|
+
* @param buffer - SpanBuffer to write to
|
|
168
|
+
* @param entryType - Entry type (INFO, DEBUG, WARN, ERROR, TRACE, FF_ACCESS, FF_USAGE)
|
|
169
|
+
* @returns The row index where entry was written
|
|
170
|
+
*/
|
|
171
|
+
writeLogEntry(buffer, entryType) {
|
|
172
|
+
if (isWasmSpanBuffer(buffer)) {
|
|
173
|
+
// WASM path: bump writeIndex, write timestamp + entry_type, return idx
|
|
174
|
+
return this.allocator.writeLogEntry(buffer._systemPtr, buffer._identityPtr, this._traceRootPtr, entryType);
|
|
175
|
+
}
|
|
176
|
+
// JS path: bump writeIndex, write directly, return idx
|
|
177
|
+
const idx = buffer._writeIndex;
|
|
178
|
+
buffer.timestamp[idx] = this.getTimestampNanos();
|
|
179
|
+
buffer.entry_type[idx] = entryType;
|
|
180
|
+
buffer._writeIndex = idx + 1;
|
|
181
|
+
return idx;
|
|
182
|
+
}
|
|
183
|
+
// ===========================================================================
|
|
184
|
+
// Low-level WASM pointer-based methods (for direct WASM access and tests)
|
|
185
|
+
// These are used by the existing tests and for low-level buffer manipulation
|
|
186
|
+
// ===========================================================================
|
|
187
|
+
/**
|
|
188
|
+
* Write span-start entry to buffer's system block using pointer.
|
|
189
|
+
* Sets row 0 = span-start, row 1 = span-exception (crash safety).
|
|
190
|
+
* Sets _writeIndex = 2 in the identity block.
|
|
191
|
+
*
|
|
192
|
+
* @param systemPtr - Byte offset of buffer's system block in WASM memory
|
|
193
|
+
* @param identityPtr - Byte offset of buffer's identity block in WASM memory
|
|
194
|
+
*/
|
|
195
|
+
writeSpanStartPtr(systemPtr, identityPtr) {
|
|
196
|
+
this.allocator.spanStart(systemPtr, identityPtr, this._traceRootPtr);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Write span-ok to row 1 using pointer.
|
|
200
|
+
* @param systemPtr - Byte offset of buffer's system block in WASM memory
|
|
201
|
+
*/
|
|
202
|
+
writeSpanEndOkPtr(systemPtr) {
|
|
203
|
+
this.allocator.spanEndOk(systemPtr, this._traceRootPtr);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Write span-err to row 1 using pointer.
|
|
207
|
+
* @param systemPtr - Byte offset of buffer's system block in WASM memory
|
|
208
|
+
*/
|
|
209
|
+
writeSpanEndErrPtr(systemPtr) {
|
|
210
|
+
this.allocator.spanEndErr(systemPtr, this._traceRootPtr);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Write a log entry at current write index using pointer.
|
|
214
|
+
* Returns the row index where entry was written.
|
|
215
|
+
*
|
|
216
|
+
* @param systemPtr - Byte offset of buffer's system block in WASM memory
|
|
217
|
+
* @param identityPtr - Byte offset of buffer's identity block in WASM memory
|
|
218
|
+
* @param entryType - Entry type constant (ENTRY_TYPE_INFO, etc.)
|
|
219
|
+
* @returns Row index where entry was written
|
|
220
|
+
*/
|
|
221
|
+
writeLogEntryPtr(systemPtr, identityPtr, entryType) {
|
|
222
|
+
return this.allocator.writeLogEntry(systemPtr, identityPtr, this._traceRootPtr, entryType);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Read current write index from buffer's identity block.
|
|
226
|
+
* @param identityPtr - Byte offset of buffer's identity block in WASM memory
|
|
227
|
+
*/
|
|
228
|
+
readWriteIndex(identityPtr) {
|
|
229
|
+
return this.allocator.readWriteIndex(identityPtr);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Free the TraceRoot's memory block when trace completes.
|
|
233
|
+
*/
|
|
234
|
+
free() {
|
|
235
|
+
this.allocator.free8B(this._traceRootPtr);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// =============================================================================
|
|
239
|
+
// Factory Functions
|
|
240
|
+
// =============================================================================
|
|
241
|
+
/**
|
|
242
|
+
* Create a WasmTraceRoot instance directly.
|
|
243
|
+
* Used by tests and low-level code.
|
|
244
|
+
*
|
|
245
|
+
* @param allocator - WASM allocator instance
|
|
246
|
+
* @param trace_id - Trace ID for this trace
|
|
247
|
+
* @param tracer - Tracer lifecycle hooks
|
|
248
|
+
*/
|
|
249
|
+
export function createWasmTraceRoot(allocator, trace_id, tracer) {
|
|
250
|
+
return new WasmTraceRoot(allocator, createTraceId(trace_id), tracer);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Factory function to create WasmTraceRoot factory.
|
|
254
|
+
*
|
|
255
|
+
* This returns a factory function that can be passed to Tracer constructor.
|
|
256
|
+
*
|
|
257
|
+
* @param allocator - WASM allocator instance
|
|
258
|
+
* @returns Factory function compatible with TraceRootFactory type
|
|
259
|
+
*/
|
|
260
|
+
export function createWasmTraceRootFactory(allocator) {
|
|
261
|
+
return (trace_id, tracer) => {
|
|
262
|
+
return new WasmTraceRoot(allocator, createTraceId(trace_id), tracer);
|
|
263
|
+
};
|
|
264
|
+
}
|
package/dist/node.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/node.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js entry point for @smoothbricks/lmao/node
|
|
3
|
+
* Uses process.hrtime.bigint() for nanosecond-precision timestamps
|
|
4
|
+
*/
|
|
5
|
+
// Re-export all main functionality
|
|
6
|
+
export * from './index.js';
|
|
7
|
+
// Export Node.js-specific TraceRoot factory for Tracer construction
|
|
8
|
+
export { createTraceRoot } from './lib/traceRoot.node.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Testing utilities for LMAO trace-testing.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import {
|
|
7
|
+
* TestTracer,
|
|
8
|
+
* createFactArray,
|
|
9
|
+
* spanStarted,
|
|
10
|
+
* spanOk,
|
|
11
|
+
* tagFact,
|
|
12
|
+
* } from '@smoothbricks/lmao/testing';
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @module testing
|
|
16
|
+
*/
|
|
17
|
+
export * from './lib/testing/index.js';
|
|
18
|
+
//# sourceMappingURL=testing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,cAAc,wBAAwB,CAAC"}
|
package/dist/testing.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Testing utilities for LMAO trace-testing.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import {
|
|
7
|
+
* TestTracer,
|
|
8
|
+
* createFactArray,
|
|
9
|
+
* spanStarted,
|
|
10
|
+
* spanOk,
|
|
11
|
+
* tagFact,
|
|
12
|
+
* } from '@smoothbricks/lmao/testing';
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @module testing
|
|
16
|
+
*/
|
|
17
|
+
export * from './lib/testing/index.js';
|