@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,362 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract facts from a SpanBuffer tree.
|
|
3
|
+
*
|
|
4
|
+
* This is the bridge between LMAO's buffer system and the trace-testing
|
|
5
|
+
* fact system. It walks the buffer tree and produces strongly-typed facts.
|
|
6
|
+
*
|
|
7
|
+
* @module testing/extractFacts
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { LogSchema } from '../schema/LogSchema.js';
|
|
11
|
+
import {
|
|
12
|
+
ENTRY_TYPE_DEBUG,
|
|
13
|
+
ENTRY_TYPE_ERROR,
|
|
14
|
+
ENTRY_TYPE_FF_ACCESS,
|
|
15
|
+
ENTRY_TYPE_FF_USAGE,
|
|
16
|
+
ENTRY_TYPE_INFO,
|
|
17
|
+
ENTRY_TYPE_SPAN_ERR,
|
|
18
|
+
ENTRY_TYPE_SPAN_EXCEPTION,
|
|
19
|
+
ENTRY_TYPE_SPAN_OK,
|
|
20
|
+
ENTRY_TYPE_WARN,
|
|
21
|
+
} from '../schema/systemSchema.js';
|
|
22
|
+
import type { SpanBuffer } from '../types.js';
|
|
23
|
+
import {
|
|
24
|
+
createFactArray,
|
|
25
|
+
type FactArray,
|
|
26
|
+
ffFact,
|
|
27
|
+
type LogLevel,
|
|
28
|
+
logFact,
|
|
29
|
+
metricFact,
|
|
30
|
+
scopeFact,
|
|
31
|
+
spanErr,
|
|
32
|
+
spanException,
|
|
33
|
+
spanOk,
|
|
34
|
+
spanStarted,
|
|
35
|
+
type TraceFact,
|
|
36
|
+
tagFact,
|
|
37
|
+
} from './facts.js';
|
|
38
|
+
|
|
39
|
+
function isUint8Array(value: unknown): value is Uint8Array {
|
|
40
|
+
return value instanceof Uint8Array;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
type IndexedValues = readonly unknown[] | ArrayBufferView;
|
|
44
|
+
|
|
45
|
+
function isIndexedValues(value: unknown): value is IndexedValues {
|
|
46
|
+
return Array.isArray(value) || ArrayBuffer.isView(value);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function getIndexedValue(container: IndexedValues, index: number): unknown {
|
|
50
|
+
if (Array.isArray(container)) {
|
|
51
|
+
return container[index];
|
|
52
|
+
}
|
|
53
|
+
if (ArrayBuffer.isView(container)) {
|
|
54
|
+
return Reflect.get(container, index) as unknown;
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Options for fact extraction.
|
|
61
|
+
*/
|
|
62
|
+
export interface ExtractFactsOptions {
|
|
63
|
+
/**
|
|
64
|
+
* Include scope facts (values propagated through span tree).
|
|
65
|
+
* @default true
|
|
66
|
+
*/
|
|
67
|
+
includeScope?: boolean;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Include tag facts from each row.
|
|
71
|
+
* @default true
|
|
72
|
+
*/
|
|
73
|
+
includeTags?: boolean;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Include log message facts.
|
|
77
|
+
* @default true
|
|
78
|
+
*/
|
|
79
|
+
includeLogs?: boolean;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Include feature flag facts.
|
|
83
|
+
* @default true
|
|
84
|
+
*/
|
|
85
|
+
includeFF?: boolean;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Include timing metrics (duration_ns).
|
|
89
|
+
* @default false
|
|
90
|
+
*/
|
|
91
|
+
includeMetrics?: boolean;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Schema field names to extract as tags.
|
|
95
|
+
* If not specified, all non-null fields are extracted.
|
|
96
|
+
*/
|
|
97
|
+
tagFields?: string[];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const DEFAULT_OPTIONS: Required<ExtractFactsOptions> = {
|
|
101
|
+
includeScope: true,
|
|
102
|
+
includeTags: true,
|
|
103
|
+
includeLogs: true,
|
|
104
|
+
includeFF: true,
|
|
105
|
+
includeMetrics: false,
|
|
106
|
+
tagFields: [],
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Extract facts from a SpanBuffer tree.
|
|
111
|
+
*
|
|
112
|
+
* Walks the buffer tree depth-first and produces facts for:
|
|
113
|
+
* - Span lifecycle (started, ok, err, exception)
|
|
114
|
+
* - Log entries (info, warn, error, debug)
|
|
115
|
+
* - Tag values (from row 0 of each span)
|
|
116
|
+
* - Scope values (propagated through tree)
|
|
117
|
+
* - Feature flag accesses
|
|
118
|
+
*
|
|
119
|
+
* @param rootBuffer - The root SpanBuffer to extract from
|
|
120
|
+
* @param options - Extraction options
|
|
121
|
+
* @returns FactArray with all extracted facts
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* const tracer = new TestTracer(opContext);
|
|
126
|
+
* await tracer.trace('my-op', myOp);
|
|
127
|
+
*
|
|
128
|
+
* const facts = extractFacts(tracer.rootBuffers[0]);
|
|
129
|
+
*
|
|
130
|
+
* expect(facts.has(spanOk('my-op'))).toBe(true);
|
|
131
|
+
* expect(facts.hasMatch('log:error: *')).toBe(false);
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export function extractFacts<T extends LogSchema>(
|
|
135
|
+
rootBuffer: SpanBuffer<T>,
|
|
136
|
+
options: ExtractFactsOptions = {},
|
|
137
|
+
): FactArray {
|
|
138
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
139
|
+
const facts: TraceFact[] = [];
|
|
140
|
+
|
|
141
|
+
walkBuffer(rootBuffer, facts, opts);
|
|
142
|
+
|
|
143
|
+
return createFactArray(facts);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Walk a buffer and its children, extracting facts.
|
|
148
|
+
*/
|
|
149
|
+
function walkBuffer<T extends LogSchema>(
|
|
150
|
+
buffer: SpanBuffer<T>,
|
|
151
|
+
facts: TraceFact[],
|
|
152
|
+
opts: Required<ExtractFactsOptions>,
|
|
153
|
+
): void {
|
|
154
|
+
// Span name is in message_values[0] (written by writeSpanStart)
|
|
155
|
+
const spanName = buffer.message_values[0];
|
|
156
|
+
const writeIndex = buffer._writeIndex;
|
|
157
|
+
|
|
158
|
+
if (writeIndex === 0) {
|
|
159
|
+
// Empty buffer - no facts to extract
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Always emit span:started as first fact for this span
|
|
164
|
+
facts.push(spanStarted(spanName));
|
|
165
|
+
|
|
166
|
+
// Extract scope facts (from buffer's scope values)
|
|
167
|
+
if (opts.includeScope && buffer._scopeValues) {
|
|
168
|
+
for (const [key, value] of Object.entries(buffer._scopeValues)) {
|
|
169
|
+
if (value !== undefined && value !== null) {
|
|
170
|
+
facts.push(scopeFact(key, String(value)));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Extract tag facts from row 0 (ctx.tag writes here)
|
|
176
|
+
// Also check row 1 (completion row - .with() on ok()/err())
|
|
177
|
+
// And rows 2+ (log rows - .with() on log.*)
|
|
178
|
+
if (opts.includeTags) {
|
|
179
|
+
for (let row = 0; row < writeIndex; row++) {
|
|
180
|
+
extractTagFacts(buffer, row, facts, opts);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Buffer layout per specs/lmao/01h_entry_types_and_logging_primitives.md:
|
|
185
|
+
// - Row 0: span-start (tags overwrite this row's attribute columns)
|
|
186
|
+
// - Row 1: span-ok/err/exception (completion status)
|
|
187
|
+
// - Row 2+: log entries (info/debug/warn/error), ff entries
|
|
188
|
+
const entryTypes = buffer.entry_type;
|
|
189
|
+
const messages = buffer.message_values;
|
|
190
|
+
|
|
191
|
+
// Process log/ff entries from row 2 onwards
|
|
192
|
+
for (let row = 2; row < writeIndex; row++) {
|
|
193
|
+
const entryType = entryTypes[row];
|
|
194
|
+
|
|
195
|
+
switch (entryType) {
|
|
196
|
+
case ENTRY_TYPE_INFO:
|
|
197
|
+
case ENTRY_TYPE_DEBUG:
|
|
198
|
+
case ENTRY_TYPE_WARN:
|
|
199
|
+
case ENTRY_TYPE_ERROR: {
|
|
200
|
+
if (opts.includeLogs) {
|
|
201
|
+
const level = entryTypeToLogLevel(entryType);
|
|
202
|
+
const rowMessage = messages[row];
|
|
203
|
+
const message = typeof rowMessage === 'string' ? rowMessage : '';
|
|
204
|
+
facts.push(logFact(level, message));
|
|
205
|
+
}
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
case ENTRY_TYPE_FF_ACCESS:
|
|
210
|
+
case ENTRY_TYPE_FF_USAGE: {
|
|
211
|
+
if (opts.includeFF) {
|
|
212
|
+
extractFFfacts(buffer, row, facts);
|
|
213
|
+
}
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Recurse into children BEFORE completing this span
|
|
220
|
+
// This maintains the natural execution order in facts
|
|
221
|
+
for (const child of buffer._children) {
|
|
222
|
+
walkBuffer(child as SpanBuffer<T>, facts, opts);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Completion status is ALWAYS at row 1 (not last row)
|
|
226
|
+
// Row 1 is pre-initialized as span-exception, overwritten by ok()/err()
|
|
227
|
+
if (writeIndex >= 2) {
|
|
228
|
+
const completionEntryType = entryTypes[1];
|
|
229
|
+
|
|
230
|
+
switch (completionEntryType) {
|
|
231
|
+
case ENTRY_TYPE_SPAN_OK:
|
|
232
|
+
facts.push(spanOk(spanName));
|
|
233
|
+
break;
|
|
234
|
+
|
|
235
|
+
case ENTRY_TYPE_SPAN_ERR: {
|
|
236
|
+
const errorCode = getErrorCode(buffer, 1);
|
|
237
|
+
facts.push(spanErr(spanName, errorCode));
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
case ENTRY_TYPE_SPAN_EXCEPTION: {
|
|
242
|
+
const message = getExceptionMessage(buffer, 1);
|
|
243
|
+
facts.push(spanException(spanName, message));
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Extract duration metric if requested
|
|
250
|
+
if (opts.includeMetrics) {
|
|
251
|
+
const duration = getSpanDuration(buffer);
|
|
252
|
+
if (duration !== undefined) {
|
|
253
|
+
facts.push(metricFact(`${spanName}:duration_ns`, Number(duration)));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Extract tag facts from a specific row.
|
|
260
|
+
*/
|
|
261
|
+
function extractTagFacts<T extends LogSchema>(
|
|
262
|
+
buffer: SpanBuffer<T>,
|
|
263
|
+
row: number,
|
|
264
|
+
facts: TraceFact[],
|
|
265
|
+
opts: Required<ExtractFactsOptions>,
|
|
266
|
+
): void {
|
|
267
|
+
const schema = buffer._logSchema;
|
|
268
|
+
const fields = opts.tagFields.length > 0 ? opts.tagFields : Object.keys(schema.fields);
|
|
269
|
+
|
|
270
|
+
for (const fieldName of fields) {
|
|
271
|
+
// Skip system fields
|
|
272
|
+
if (fieldName.startsWith('_')) continue;
|
|
273
|
+
|
|
274
|
+
const nullsKey = `${fieldName}_nulls`;
|
|
275
|
+
const valuesKey = `${fieldName}_values`;
|
|
276
|
+
|
|
277
|
+
const nulls = Reflect.get(buffer, nullsKey) as unknown;
|
|
278
|
+
const values = Reflect.get(buffer, valuesKey) as unknown;
|
|
279
|
+
|
|
280
|
+
if (!isUint8Array(nulls) || !isIndexedValues(values)) continue;
|
|
281
|
+
|
|
282
|
+
// Check if value is non-null at this row
|
|
283
|
+
if (!isNull(nulls, row)) {
|
|
284
|
+
const value = getIndexedValue(values, row);
|
|
285
|
+
if (value !== undefined) {
|
|
286
|
+
facts.push(tagFact(fieldName, String(value)));
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Extract feature flag facts from a row.
|
|
294
|
+
*/
|
|
295
|
+
function extractFFfacts<T extends LogSchema>(buffer: SpanBuffer<T>, row: number, facts: TraceFact[]): void {
|
|
296
|
+
// Feature flag entries store the flag name in message_values and the resolved value in ff_value_values.
|
|
297
|
+
const name = buffer.message_values[row];
|
|
298
|
+
const value = buffer.ff_value_values[row];
|
|
299
|
+
|
|
300
|
+
if (typeof name === 'string' && typeof value === 'string') {
|
|
301
|
+
facts.push(ffFact(name, value));
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Check if a bit is unset in a null bitmap (Arrow format: 1 = valid, 0 = null).
|
|
307
|
+
*/
|
|
308
|
+
function isNull(nulls: Uint8Array, index: number): boolean {
|
|
309
|
+
const byteIndex = index >> 3;
|
|
310
|
+
const bitIndex = index & 7;
|
|
311
|
+
return (nulls[byteIndex] & (1 << bitIndex)) === 0;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Convert entry type number to log level string.
|
|
316
|
+
*/
|
|
317
|
+
function entryTypeToLogLevel(entryType: number): LogLevel {
|
|
318
|
+
switch (entryType) {
|
|
319
|
+
case ENTRY_TYPE_DEBUG:
|
|
320
|
+
return 'debug';
|
|
321
|
+
case ENTRY_TYPE_INFO:
|
|
322
|
+
return 'info';
|
|
323
|
+
case ENTRY_TYPE_WARN:
|
|
324
|
+
return 'warn';
|
|
325
|
+
case ENTRY_TYPE_ERROR:
|
|
326
|
+
return 'error';
|
|
327
|
+
default:
|
|
328
|
+
return 'info';
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Get error code from a span-err row.
|
|
334
|
+
*/
|
|
335
|
+
function getErrorCode<T extends LogSchema>(buffer: SpanBuffer<T>, row: number): string {
|
|
336
|
+
const errorCode = buffer.error_code_values[row];
|
|
337
|
+
return typeof errorCode === 'string' ? errorCode : 'UNKNOWN';
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Get exception message from a span-exception row.
|
|
342
|
+
*/
|
|
343
|
+
function getExceptionMessage<T extends LogSchema>(buffer: SpanBuffer<T>, row: number): string {
|
|
344
|
+
const message = buffer.message_values[row];
|
|
345
|
+
return typeof message === 'string' ? message : 'Unknown exception';
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Calculate span duration from timestamps.
|
|
350
|
+
*/
|
|
351
|
+
function getSpanDuration<T extends LogSchema>(buffer: SpanBuffer<T>): bigint | undefined {
|
|
352
|
+
const timestamps = buffer.timestamp;
|
|
353
|
+
const writeIndex = buffer._writeIndex;
|
|
354
|
+
|
|
355
|
+
if (writeIndex < 2) return undefined;
|
|
356
|
+
|
|
357
|
+
// Duration = last timestamp - first timestamp
|
|
358
|
+
const startNanos = timestamps[0];
|
|
359
|
+
const endNanos = timestamps[writeIndex - 1];
|
|
360
|
+
|
|
361
|
+
return endNanos - startNanos;
|
|
362
|
+
}
|