@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,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Op Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Core type definitions for Ops - the first-class citizens of the Op-centric API.
|
|
5
|
+
* Ops wrap functions with metadata and enable composition.
|
|
6
|
+
*
|
|
7
|
+
* The Op class and OpMetadata interface are defined in ../op.ts (single source of truth)
|
|
8
|
+
* and re-exported here for convenience.
|
|
9
|
+
*
|
|
10
|
+
* ## Dependency Layer
|
|
11
|
+
* This module is at Layer 3 in the type hierarchy:
|
|
12
|
+
* - Depends on: spanContextTypes (Layer 2), featureFlagTypes (Layer 1)
|
|
13
|
+
* - Depended on by: opGroupTypes (Layer 4)
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { ExtractError, ExtractSuccess, Result } from '../result.js';
|
|
17
|
+
import type { SpanContext } from './spanContextTypes.js';
|
|
18
|
+
import type { OpContext } from './types.js';
|
|
19
|
+
|
|
20
|
+
// =============================================================================
|
|
21
|
+
// OP CLASS & METADATA RE-EXPORTS
|
|
22
|
+
// =============================================================================
|
|
23
|
+
|
|
24
|
+
// Re-export the Op class and OpMetadata from op.ts - single source of truth
|
|
25
|
+
// The class is defined in op.ts to be the canonical type used by both
|
|
26
|
+
// defineOp (creates instances) and Tracer (checks instanceof)
|
|
27
|
+
export { Op, type OpMetadata } from '../op.js';
|
|
28
|
+
|
|
29
|
+
// =============================================================================
|
|
30
|
+
// OP FUNCTION TYPE
|
|
31
|
+
// =============================================================================
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Op function signature - what the user provides to defineOp.
|
|
35
|
+
* MUST return Result<S, E> or Promise<Result<S, E>>.
|
|
36
|
+
*
|
|
37
|
+
* @template Ctx - Bundled OpContext (logSchema, flags, deps, userCtx)
|
|
38
|
+
* @template Args - Function arguments (after ctx)
|
|
39
|
+
* @template S - Success type
|
|
40
|
+
* @template E - Error type
|
|
41
|
+
*/
|
|
42
|
+
export type OpFn<Ctx extends OpContext, Args extends unknown[], S, E> = (
|
|
43
|
+
ctx: SpanContext<Ctx>,
|
|
44
|
+
...args: Args
|
|
45
|
+
) => Result<S, E> | Promise<Result<S, E>>;
|
|
46
|
+
|
|
47
|
+
// =============================================================================
|
|
48
|
+
// OP RECORD TRANSFORMATION
|
|
49
|
+
// =============================================================================
|
|
50
|
+
|
|
51
|
+
// Import Op class for use in OpsFromRecord type
|
|
52
|
+
import type { Op } from '../op.js';
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Convert a single definition (Op or OpFn) to an Op type.
|
|
56
|
+
* Uses ExtractSuccess/ExtractError from result.ts to infer types from return value.
|
|
57
|
+
*/
|
|
58
|
+
type DefToOp<Ctx extends OpContext, Def> =
|
|
59
|
+
Def extends Op<Ctx, infer Args, infer S, infer E>
|
|
60
|
+
? Op<Ctx, Args, S, E>
|
|
61
|
+
: Def extends (ctx: SpanContext<Ctx>, ...args: infer Args) => infer R
|
|
62
|
+
? Op<Ctx, Args, ExtractSuccess<R>, ExtractError<R>>
|
|
63
|
+
: never;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Transform a record of Op functions into Ops
|
|
67
|
+
*
|
|
68
|
+
* Used by defineOps for batch definition. Takes a record where values are either:
|
|
69
|
+
* - Existing Op instances (passed through)
|
|
70
|
+
* - Op function signatures (wrapped into Ops)
|
|
71
|
+
*
|
|
72
|
+
* @template Ctx - Bundled OpContext (logSchema, flags, deps, userCtx)
|
|
73
|
+
* @template Defs - Record of Op definitions (functions or existing Ops)
|
|
74
|
+
*/
|
|
75
|
+
export type OpsFromRecord<
|
|
76
|
+
Ctx extends OpContext,
|
|
77
|
+
Defs extends Record<string, Op<Ctx, unknown[], unknown, unknown> | OpFn<Ctx, unknown[], unknown, unknown>>,
|
|
78
|
+
> = {
|
|
79
|
+
[K in keyof Defs]: DefToOp<Ctx, Defs[K]>;
|
|
80
|
+
};
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpanContext Types for Op-Centric API
|
|
3
|
+
*
|
|
4
|
+
* Core types for span-level operations within the trace logging system.
|
|
5
|
+
* These types define the context passed to Op functions for:
|
|
6
|
+
* - Tag writing (row 0 attributes)
|
|
7
|
+
* - Structured logging (rows 2+)
|
|
8
|
+
* - Result handling (ok/err)
|
|
9
|
+
* - Child span creation
|
|
10
|
+
* - Feature flag access
|
|
11
|
+
* - Dependency access
|
|
12
|
+
*
|
|
13
|
+
* ## Dependency Layer
|
|
14
|
+
* This module is at Layer 2 in the type hierarchy:
|
|
15
|
+
* - Depends on: result (Layer 1), types (Layer 3), featureFlagTypes (Layer 1)
|
|
16
|
+
* - Depended on by: opTypes (Layer 3)
|
|
17
|
+
*
|
|
18
|
+
* SpanFn now uses Op<Ctx, Args, S, E> directly (no structural typing).
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import type { FluentLogEntry as FluentLogEntryFromGenerator } from '../codegen/spanLoggerGenerator.js';
|
|
22
|
+
import type { Err, Ok, Result } from '../result.js';
|
|
23
|
+
import type { FeatureFlagEvaluator, InferFeatureFlagsWithContext } from '../schema/evaluator.js';
|
|
24
|
+
import type { LogSchema } from '../schema/LogSchema.js';
|
|
25
|
+
import type { InferSchema } from '../schema/types.js';
|
|
26
|
+
import type { SpanBuffer } from '../types.js';
|
|
27
|
+
import type { Op } from './opTypes.js';
|
|
28
|
+
import type { OpContext } from './types.js';
|
|
29
|
+
|
|
30
|
+
// =============================================================================
|
|
31
|
+
// DEPENDENCY TYPES (structural to avoid circular imports)
|
|
32
|
+
// =============================================================================
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* DepsConfig - structural type to avoid importing from opGroupTypes.
|
|
36
|
+
* Represents a record of dependency groups.
|
|
37
|
+
*/
|
|
38
|
+
// biome-ignore lint/suspicious/noExplicitAny: Structural placeholder - actual type in opGroupTypes
|
|
39
|
+
export type DepsConfig = Record<string, any>;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* ResolvedDeps - structural type to avoid importing from opGroupTypes.
|
|
43
|
+
* At runtime, deps are resolved OpGroups with their ops accessible.
|
|
44
|
+
*/
|
|
45
|
+
// biome-ignore lint/suspicious/noExplicitAny: Structural placeholder - actual type in opGroupTypes
|
|
46
|
+
export type ResolvedDeps<_D extends DepsConfig> = Record<string, any>;
|
|
47
|
+
|
|
48
|
+
// =============================================================================
|
|
49
|
+
// TAG & LOG WRITER TYPES
|
|
50
|
+
// =============================================================================
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Tag writer for setting span attributes (row 0)
|
|
54
|
+
* Generated at runtime with typed methods per schema field.
|
|
55
|
+
*
|
|
56
|
+
* Per specs/lmao/01h_entry_types_and_logging_primitives.md:
|
|
57
|
+
* - Writes to row 0 (fixed layout for span-start attributes)
|
|
58
|
+
* - All methods return TagWriter<T> for fluent chaining
|
|
59
|
+
* - Generated at runtime via createTagWriter()
|
|
60
|
+
*/
|
|
61
|
+
export type TagWriter<T extends LogSchema> = {
|
|
62
|
+
[K in keyof InferSchema<T>]: (value: InferSchema<T>[K]) => TagWriter<T>;
|
|
63
|
+
} & {
|
|
64
|
+
/** Set multiple attributes at once */
|
|
65
|
+
with(attributes: Partial<InferSchema<T>>): TagWriter<T>;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* SpanLogger - public API surface for structured logging.
|
|
70
|
+
*
|
|
71
|
+
* Includes core methods (info/debug/warn/error) from BaseSpanLogger
|
|
72
|
+
* and schema-specific methods from ColumnWriter.
|
|
73
|
+
* Internal methods (_setScope, _buffer, etc.) are hidden from this type.
|
|
74
|
+
*
|
|
75
|
+
* Per specs/lmao/01h_entry_types_and_logging_primitives.md:
|
|
76
|
+
* - Each level (info/debug/warn/error) creates a log entry
|
|
77
|
+
* - Returns FluentLogEntry for chaining field setters
|
|
78
|
+
* - Generated at runtime via createSpanLoggerFromGenerator()
|
|
79
|
+
*/
|
|
80
|
+
export interface SpanLogger<T extends LogSchema> {
|
|
81
|
+
/** Log at info level */
|
|
82
|
+
info(message: string): FluentLogEntry<T>;
|
|
83
|
+
/** Log at debug level */
|
|
84
|
+
debug(message: string): FluentLogEntry<T>;
|
|
85
|
+
/** Log at warn level */
|
|
86
|
+
warn(message: string): FluentLogEntry<T>;
|
|
87
|
+
/** Log at error level */
|
|
88
|
+
error(message: string): FluentLogEntry<T>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Fluent log entry - chainable attribute setters after log level.
|
|
93
|
+
*
|
|
94
|
+
* Re-exported from spanLoggerGenerator.ts to avoid circular dependencies.
|
|
95
|
+
* The implementation in spanLoggerGenerator.ts is the source of truth.
|
|
96
|
+
*
|
|
97
|
+
* Allows setting attributes after choosing a log level:
|
|
98
|
+
* ctx.log.info('message').userId('u1').requestId('r1')
|
|
99
|
+
*
|
|
100
|
+
* All attributes are optional, chainable, and return FluentLogEntry for continuation.
|
|
101
|
+
*
|
|
102
|
+
* Includes system schema fields for direct access (no information hiding):
|
|
103
|
+
* - line(n) - Source line number (0-65535)
|
|
104
|
+
* - error_code(code) - Error code string
|
|
105
|
+
* - exception_stack(stack) - Exception stack trace
|
|
106
|
+
* - ff_value(value) - Feature flag value
|
|
107
|
+
* - uint64_value(value) - BigInt value
|
|
108
|
+
*
|
|
109
|
+
* Per specs/lmao/01c_context_flow_and_op_wrappers.md "Line Number System":
|
|
110
|
+
* - TypeScript transformer injects line() calls at compile time
|
|
111
|
+
* - No runtime overhead - just a method call with literal number
|
|
112
|
+
*/
|
|
113
|
+
export type FluentLogEntry<T extends LogSchema> = FluentLogEntryFromGenerator<T>;
|
|
114
|
+
|
|
115
|
+
// =============================================================================
|
|
116
|
+
// SPAN FUNCTION TYPES
|
|
117
|
+
// =============================================================================
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* SpanFn - overloaded span creation function.
|
|
121
|
+
*
|
|
122
|
+
* Per specs/lmao/01l_op_context_pattern.md and 01o lines 34-72:
|
|
123
|
+
* Creates child spans with type-safe Op invocation or inline closures, with/without line numbers.
|
|
124
|
+
*
|
|
125
|
+
* The transformer injects line numbers at compile time, but runtime supports both patterns for fallback.
|
|
126
|
+
* Uses Op<Ctx, Args, S, E> and returns Result<S, E> (no generic R).
|
|
127
|
+
*/
|
|
128
|
+
export type SpanFn<Ctx extends OpContext> = {
|
|
129
|
+
/**
|
|
130
|
+
* Create child span with line number and Op invocation.
|
|
131
|
+
*
|
|
132
|
+
* Per spec 01o lines 46-49: Monomorphic span_op for transformer-injected line numbers.
|
|
133
|
+
*
|
|
134
|
+
* @param line - Source code line number (injected by transformer at compile time)
|
|
135
|
+
* @param name - Child span name (overrides Op's default name)
|
|
136
|
+
* @param op - Op to invoke (type-safe with Args, Success, Error types)
|
|
137
|
+
* @param args - Arguments to pass to Op function
|
|
138
|
+
* @returns Promise resolving to Result<S, E>
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* const result = await ctx.span(42, 'fetch-user', fetchUserOp, userId);
|
|
142
|
+
*/
|
|
143
|
+
<S, E, Args extends unknown[]>(
|
|
144
|
+
line: number,
|
|
145
|
+
name: string,
|
|
146
|
+
op: Op<Ctx, Args, S, E>,
|
|
147
|
+
...args: Args
|
|
148
|
+
): Promise<Result<S, E>>;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Create child span with line number and inline closure.
|
|
152
|
+
*
|
|
153
|
+
* Per spec 01o lines 51-53: Monomorphic span_fn for transformer-injected line numbers.
|
|
154
|
+
*
|
|
155
|
+
* @param line - Source code line number (injected by transformer at compile time)
|
|
156
|
+
* @param name - Child span name
|
|
157
|
+
* @param fn - Async function to execute in child span (receives SpanContext<Ctx>)
|
|
158
|
+
* @returns Promise resolving to Result<S, E>
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* const result = await ctx.span(42, 'validate', async (childCtx) => {
|
|
162
|
+
* childCtx.tag.step('validation');
|
|
163
|
+
* return childCtx.ok({ valid: true });
|
|
164
|
+
* });
|
|
165
|
+
*/
|
|
166
|
+
<S, E>(
|
|
167
|
+
line: number,
|
|
168
|
+
name: string,
|
|
169
|
+
fn: (ctx: SpanContext<Ctx>) => Result<S, E> | Promise<Result<S, E>>,
|
|
170
|
+
): Promise<Result<S, E>>;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Create child span with Op invocation (most common - no line number).
|
|
174
|
+
*
|
|
175
|
+
* Per spec 01o lines 55-71: Polymorphic span dispatcher for fallback when transformer didn't inject line number.
|
|
176
|
+
*
|
|
177
|
+
* @param name - Child span name (overrides Op's default name)
|
|
178
|
+
* @param op - Op to invoke (type-safe with Args, Success, Error types)
|
|
179
|
+
* @param args - Arguments to pass to Op function
|
|
180
|
+
* @returns Promise resolving to Result<S, E>
|
|
181
|
+
*
|
|
182
|
+
* @example
|
|
183
|
+
* const result = await ctx.span('fetch-user', fetchUserOp, userId);
|
|
184
|
+
*/
|
|
185
|
+
<S, E, Args extends unknown[]>(name: string, op: Op<Ctx, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Create child span with inline closure (most common - no line number).
|
|
189
|
+
*
|
|
190
|
+
* Per spec 01o lines 55-71: Polymorphic span dispatcher for fallback when transformer didn't inject line number.
|
|
191
|
+
*
|
|
192
|
+
* @param name - Child span name
|
|
193
|
+
* @param fn - Async function to execute in child span (receives SpanContext<Ctx>)
|
|
194
|
+
* @returns Promise resolving to Result<S, E>
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* const result = await ctx.span('validate', async (childCtx) => {
|
|
198
|
+
* childCtx.tag.step('validation');
|
|
199
|
+
* return childCtx.ok({ valid: true });
|
|
200
|
+
* });
|
|
201
|
+
*/
|
|
202
|
+
<S, E>(name: string, fn: (ctx: SpanContext<Ctx>) => Result<S, E> | Promise<Result<S, E>>): Promise<Result<S, E>>;
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* SpanSyncFn - synchronous child span creation.
|
|
207
|
+
*
|
|
208
|
+
* Use when the callback is guaranteed sync and should return immediately
|
|
209
|
+
* with a Result envelope.
|
|
210
|
+
*/
|
|
211
|
+
export type SpanSyncFn<Ctx extends OpContext> = <S, E>(
|
|
212
|
+
name: string,
|
|
213
|
+
fn: (ctx: SpanContext<Ctx>) => Result<S, E>,
|
|
214
|
+
) => Result<S, E>;
|
|
215
|
+
|
|
216
|
+
// =============================================================================
|
|
217
|
+
// SPAN CONTEXT TYPE
|
|
218
|
+
// =============================================================================
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* SpanContext - what op functions receive.
|
|
222
|
+
*
|
|
223
|
+
* Per specs/lmao/01c_context_flow_and_op_wrappers.md and 01l:
|
|
224
|
+
* - Passed to Op functions as first argument
|
|
225
|
+
* - Combines built-in properties with user-extensible UserCtx via intersection
|
|
226
|
+
* - Child spans inherit scoped attributes from parent (frozen copy for safety)
|
|
227
|
+
* - User properties from Ctx['userCtx'] are spread via intersection at end
|
|
228
|
+
*
|
|
229
|
+
* @template Ctx - Bundled context (logSchema, flags, deps, userCtx)
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* const createUser = op('create-user', async (ctx, userData) => {
|
|
234
|
+
* ctx.setScope({ userId: userData.id });
|
|
235
|
+
* ctx.tag.operation('INSERT');
|
|
236
|
+
* ctx.log.info('Creating user').line(42);
|
|
237
|
+
* return ctx.ok(user);
|
|
238
|
+
* });
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
export type SpanContext<Ctx extends OpContext> = {
|
|
242
|
+
/**
|
|
243
|
+
* The underlying SpanBuffer for this context.
|
|
244
|
+
*
|
|
245
|
+
* Useful for Arrow table conversion after task completion.
|
|
246
|
+
* The buffer contains all trace data written during this span's execution.
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```typescript
|
|
250
|
+
* const result = await myTask(requestCtx, args);
|
|
251
|
+
* const table = convertToArrowTable(ctx.buffer);
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
254
|
+
buffer: SpanBuffer<Ctx['logSchema']>;
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Tag writer for span attributes (row 0).
|
|
258
|
+
*
|
|
259
|
+
* Per specs/lmao/01h_entry_types_and_logging_primitives.md:
|
|
260
|
+
* - Writes to row 0 (fixed layout for span-start attributes)
|
|
261
|
+
* - All methods return TagWriter for fluent chaining
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* ctx.tag.userId('u1').requestId('r1').operation('INSERT');
|
|
265
|
+
*/
|
|
266
|
+
tag: TagWriter<Ctx['logSchema']>;
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Structured logger (rows 2+).
|
|
270
|
+
*
|
|
271
|
+
* Per specs/lmao/01h_entry_types_and_logging_primitives.md:
|
|
272
|
+
* - info/debug/warn/error create log entries
|
|
273
|
+
* - Returns FluentLogEntry for chaining field setters
|
|
274
|
+
* - Entries are appended after row 1
|
|
275
|
+
*
|
|
276
|
+
* @example
|
|
277
|
+
* ctx.log.info('Processing request').userId('u1').line(42);
|
|
278
|
+
*/
|
|
279
|
+
log: SpanLogger<Ctx['logSchema']>;
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Feature flags (logs access to current span).
|
|
283
|
+
*
|
|
284
|
+
* Per specs/lmao/01p_feature_flags.md:
|
|
285
|
+
* - Sync access via ff.flagName / ff['flagName']
|
|
286
|
+
* - Async access via await ff.get('flagName')
|
|
287
|
+
* - Logs flag access to span automatically
|
|
288
|
+
* - Type-safe evaluation with context
|
|
289
|
+
*/
|
|
290
|
+
ff: FeatureFlagEvaluator<Ctx> & InferFeatureFlagsWithContext<Ctx>;
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Dependencies - can be destructured!
|
|
294
|
+
*
|
|
295
|
+
* Per spec 01l lines 757-758:
|
|
296
|
+
* - Plain object references to dependency modules/ops
|
|
297
|
+
* - Zero-allocation deps (not closures)
|
|
298
|
+
*
|
|
299
|
+
* @example
|
|
300
|
+
* const { retry, auth } = deps;
|
|
301
|
+
* await span('retry', retry, 1);
|
|
302
|
+
*/
|
|
303
|
+
deps: ResolvedDeps<Ctx['deps']>;
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Create a success result with optional attributes.
|
|
307
|
+
*
|
|
308
|
+
* Writes span-ok entry to row 1 (span-end).
|
|
309
|
+
* Supports fluent chaining with .with() and .message().
|
|
310
|
+
*
|
|
311
|
+
* @param value - The success value
|
|
312
|
+
* @returns Fluent result builder
|
|
313
|
+
*
|
|
314
|
+
* @example
|
|
315
|
+
* return ctx.ok(user).with({ userId: user.id });
|
|
316
|
+
*/
|
|
317
|
+
ok<S>(value: S): Ok<S, Ctx['logSchema']>;
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Create an error result with optional attributes.
|
|
321
|
+
*
|
|
322
|
+
* Writes span-err entry to row 1 (span-end).
|
|
323
|
+
* Supports fluent chaining with .with() and .message().
|
|
324
|
+
*
|
|
325
|
+
* @param code - Error code string
|
|
326
|
+
* @param details - Error details
|
|
327
|
+
* @returns Fluent result builder
|
|
328
|
+
*
|
|
329
|
+
* @example
|
|
330
|
+
* const NOT_FOUND = defineCodeError('NOT_FOUND')<{ userId: string }>();
|
|
331
|
+
* return ctx.err(NOT_FOUND({ userId })).message('User not found');
|
|
332
|
+
*/
|
|
333
|
+
err<E>(error: E): Err<E, Ctx['logSchema']>;
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Create a child span with its own buffer.
|
|
337
|
+
*
|
|
338
|
+
* Child spans inherit scoped attributes from the parent.
|
|
339
|
+
* The child function receives a new SpanContext.
|
|
340
|
+
*
|
|
341
|
+
* Per specs/lmao/01i_span_scope_attributes.md:
|
|
342
|
+
* - Child inherits parent's scope by reference (safe because immutable)
|
|
343
|
+
* - Child can override scope values with setScope()
|
|
344
|
+
* - Scope is frozen at each level to prevent race conditions
|
|
345
|
+
*
|
|
346
|
+
* @example
|
|
347
|
+
* const result = await ctx.span('validate', async (childCtx) => {
|
|
348
|
+
* childCtx.tag.step('validation');
|
|
349
|
+
* return childCtx.ok({ valid: true });
|
|
350
|
+
* });
|
|
351
|
+
*/
|
|
352
|
+
span: SpanFn<Ctx>;
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Create a synchronous child span.
|
|
356
|
+
*
|
|
357
|
+
* `spanSync` is for sync callbacks only and returns Result directly.
|
|
358
|
+
* It does not await or perform async retry/backoff behavior.
|
|
359
|
+
*/
|
|
360
|
+
spanSync: SpanSyncFn<Ctx>;
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* Set scoped attributes that auto-propagate to all subsequent log entries.
|
|
364
|
+
*
|
|
365
|
+
* Scoped attributes are automatically included in all log entries
|
|
366
|
+
* and inherited by child spans. Uses merge semantics - pass null to clear a value.
|
|
367
|
+
*
|
|
368
|
+
* Per specs/lmao/01i_span_scope_attributes.md:
|
|
369
|
+
* - Creates a NEW frozen object (never mutates existing scope)
|
|
370
|
+
* - setScope({ x: null }) removes x from scope
|
|
371
|
+
* - Child spans get frozen snapshot at creation (async-safe)
|
|
372
|
+
*
|
|
373
|
+
* @param attributes - Attributes to scope to this span (null clears a value)
|
|
374
|
+
*
|
|
375
|
+
* @example
|
|
376
|
+
* ctx.setScope({ requestId: req.id, userId: req.user?.id });
|
|
377
|
+
* ctx.log.info('Processing'); // Includes requestId and userId
|
|
378
|
+
* ctx.setScope({ userId: null }); // Clear userId from scope
|
|
379
|
+
*/
|
|
380
|
+
setScope(values: Partial<InferSchema<Ctx['logSchema']>> | null): void;
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Read-only view of current scoped attributes.
|
|
384
|
+
*
|
|
385
|
+
* Returns the frozen scope object containing all currently scoped values.
|
|
386
|
+
* Use setScope() to modify scope values.
|
|
387
|
+
*
|
|
388
|
+
* Per specs/lmao/01i_span_scope_attributes.md:
|
|
389
|
+
* - Always a frozen object, never undefined
|
|
390
|
+
* - Initialized to EMPTY_SCOPE, only replaced with new frozen objects
|
|
391
|
+
* - Safe to read from async code without race conditions
|
|
392
|
+
*
|
|
393
|
+
* @example
|
|
394
|
+
* ctx.setScope({ requestId: 'r1' });
|
|
395
|
+
* console.log(ctx.scope.requestId); // 'r1'
|
|
396
|
+
*/
|
|
397
|
+
scope: Readonly<Partial<InferSchema<Ctx['logSchema']>>>;
|
|
398
|
+
} & Ctx['userCtx'];
|