@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,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LogBinding - Logging infrastructure binding for ops and buffers
|
|
3
|
+
*
|
|
4
|
+
* Represents the binding between a set of operations and their logging infrastructure.
|
|
5
|
+
* Contains the schema and optional remapping support for prefixed modules.
|
|
6
|
+
*
|
|
7
|
+
* Note: Buffer stats (self-tuning capacity) are stored on SpanBufferClass.stats as static
|
|
8
|
+
* properties, NOT on LogBinding. See agent-todo/opgroup-refactor.md for rationale.
|
|
9
|
+
*
|
|
10
|
+
* Per specs:
|
|
11
|
+
* - 01b2_buffer_self_tuning.md - Self-tuning via SpanBufferClass.stats
|
|
12
|
+
* - 01e_library_integration_pattern.md - Library prefix/remapping support
|
|
13
|
+
*/
|
|
14
|
+
import type { LogSchema } from './schema/LogSchema.js';
|
|
15
|
+
type SpanBuffer = import('./types.js').AnySpanBuffer;
|
|
16
|
+
/**
|
|
17
|
+
* RemappedViewConstructor - Constructor type for RemappedBufferView classes.
|
|
18
|
+
*
|
|
19
|
+
* Generated at module composition time (cold path) by `generateRemappedBufferViewClass()`.
|
|
20
|
+
* Used by prefixed modules to wrap SpanBuffer instances for Arrow conversion when
|
|
21
|
+
* the module's schema columns have been renamed with a prefix.
|
|
22
|
+
*
|
|
23
|
+
* The constructor takes a raw SpanBuffer and returns a view that remaps column access
|
|
24
|
+
* from prefixed names to unprefixed names for tree traversal during Arrow conversion.
|
|
25
|
+
*
|
|
26
|
+
* Per specs/lmao/01e_library_integration_pattern.md:
|
|
27
|
+
* - Hot path: Library writes directly to unprefixed columns (zero overhead)
|
|
28
|
+
* - Cold path: Arrow conversion uses RemappedBufferView to access via prefixed names
|
|
29
|
+
*/
|
|
30
|
+
export type RemappedViewConstructor = new (buffer: SpanBuffer) => SpanBuffer;
|
|
31
|
+
/**
|
|
32
|
+
* LogBinding - Everything needed for a group of ops to write logs.
|
|
33
|
+
*
|
|
34
|
+
* Represents the binding between a set of operations and their logging infrastructure.
|
|
35
|
+
* Contains the schema and optional remapping support for prefixed modules.
|
|
36
|
+
*
|
|
37
|
+
* Note: Buffer stats (self-tuning capacity) are stored on SpanBufferClass.stats as static
|
|
38
|
+
* properties, NOT on LogBinding. This avoids sync bugs from having two stat objects and
|
|
39
|
+
* reduces per-instance memory. See agent-todo/opgroup-refactor.md for rationale.
|
|
40
|
+
*
|
|
41
|
+
* Per specs:
|
|
42
|
+
* - 01b2_buffer_self_tuning.md - Self-tuning via SpanBufferClass.stats
|
|
43
|
+
* - 01e_library_integration_pattern.md - Library prefix/remapping support
|
|
44
|
+
*
|
|
45
|
+
* @property logSchema - The unprefixed schema defining what columns can be written.
|
|
46
|
+
* This is the canonical schema. Column names in remappedViewClass will be prefixed versions
|
|
47
|
+
* of these field names when a prefix or column mapping has been applied.
|
|
48
|
+
*
|
|
49
|
+
* @property remappedViewClass - Optional RemappedBufferView class for prefixed/remapped buffers.
|
|
50
|
+
* - When present: the module's ops write to unprefixed columns, but buffers must be wrapped
|
|
51
|
+
* in this view for Arrow conversion to access them by prefixed names
|
|
52
|
+
* - When absent: buffers can be used directly without remapping
|
|
53
|
+
* - Set during module composition when prefix() or mapColumns() is applied (cold path)
|
|
54
|
+
* - Used when registering child spans to parent's tree (see op.ts)
|
|
55
|
+
*/
|
|
56
|
+
export interface LogBinding<T extends LogSchema = LogSchema> {
|
|
57
|
+
/** The unprefixed schema defining what columns exist */
|
|
58
|
+
readonly logSchema: T;
|
|
59
|
+
/** Optional RemappedBufferView class for prefixed/remapped buffers */
|
|
60
|
+
readonly remappedViewClass?: RemappedViewConstructor;
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=logBinding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logBinding.d.ts","sourceRoot":"","sources":["../../src/lib/logBinding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,KAAK,UAAU,GAAG,OAAO,YAAY,EAAE,aAAa,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,uBAAuB,GAAG,KAAK,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACzD,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAEtB,sEAAsE;IACtE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CACtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/lib/op.d.ts
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Op - Traced operation class and OpMetadata
|
|
3
|
+
*
|
|
4
|
+
* This is the single source of truth for the Op class and OpMetadata interface.
|
|
5
|
+
* Other modules re-export these types for convenience.
|
|
6
|
+
*
|
|
7
|
+
* Wraps a user function with automatic span tracking.
|
|
8
|
+
* Created by defineOp() from the Op-centric API (defineOpContext).
|
|
9
|
+
*
|
|
10
|
+
* Per specs/lmao/01l_op_context_pattern.md and specs/lmao/01c_context_flow_and_op_wrappers.md:
|
|
11
|
+
* - Captures OpMetadata for attribution (package_name, package_file, git_sha, line)
|
|
12
|
+
* - fn is called by span_op() after span_op creates the SpanBuffer/SpanContext
|
|
13
|
+
* - Op name is used for metrics tracking (separate from span names)
|
|
14
|
+
*/
|
|
15
|
+
import type { PreEncodedEntry } from '@smoothbricks/arrow-builder';
|
|
16
|
+
import type { RemappedViewConstructor } from './logBinding.js';
|
|
17
|
+
import type { SpanContext } from './opContext/spanContextTypes.js';
|
|
18
|
+
import type { OpContext, OpContextBinding } from './opContext/types.js';
|
|
19
|
+
import type { Result } from './result.js';
|
|
20
|
+
import type { SpanBufferConstructor } from './spanBuffer.js';
|
|
21
|
+
/**
|
|
22
|
+
* Metadata injected by the transformer into each Op.
|
|
23
|
+
* These values are determined at compile time from the source location.
|
|
24
|
+
*
|
|
25
|
+
* Includes pre-encoded UTF-8 entries for Arrow dictionary building -
|
|
26
|
+
* encode once at Op definition time, reuse for every span conversion.
|
|
27
|
+
*/
|
|
28
|
+
export interface OpMetadata {
|
|
29
|
+
/** Op name for metrics tracking (distinct from span names which are provided at call sites) */
|
|
30
|
+
readonly name: string;
|
|
31
|
+
/** Package name from package.json */
|
|
32
|
+
readonly package_name: string;
|
|
33
|
+
/** File path relative to package root */
|
|
34
|
+
readonly package_file: string;
|
|
35
|
+
/** Git SHA at build time */
|
|
36
|
+
readonly git_sha: string;
|
|
37
|
+
/** Line number where defineOp was called */
|
|
38
|
+
readonly line: number;
|
|
39
|
+
/** Pre-encoded package_name for Arrow dictionary building */
|
|
40
|
+
readonly package_name_entry: PreEncodedEntry;
|
|
41
|
+
/** Pre-encoded package_file for Arrow dictionary building */
|
|
42
|
+
readonly package_file_entry: PreEncodedEntry;
|
|
43
|
+
/** Pre-encoded git_sha for Arrow dictionary building */
|
|
44
|
+
readonly git_sha_entry: PreEncodedEntry;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Op - Traced operation (Phase 2 architecture)
|
|
48
|
+
*
|
|
49
|
+
* Per spec 01l lines 436-453 and 01c lines 292-362:
|
|
50
|
+
* - Wraps a user function with automatic span tracking
|
|
51
|
+
* - Captures module metadata for attribution
|
|
52
|
+
* - fn is public and called by span_op() after buffer/context creation
|
|
53
|
+
*
|
|
54
|
+
* Type parameter order matches function signature: (ctx: SpanContext<Ctx>, ...args: Args) => Result<S, E>
|
|
55
|
+
*
|
|
56
|
+
* Op has TWO names:
|
|
57
|
+
* - `name`: The Op's name for metrics (invocations, errors, duration tracking)
|
|
58
|
+
* - Span names are provided at CALL SITE: `await span('contextual-name', myOp, args)`
|
|
59
|
+
*
|
|
60
|
+
* Op captures the metadata for source attribution:
|
|
61
|
+
* - When span() invokes this Op, the Op's metadata becomes buffer._opMetadata (for rows 1+)
|
|
62
|
+
* - The caller's metadata becomes buffer._callsiteMetadata (for row 0)
|
|
63
|
+
*
|
|
64
|
+
* Phase 2 architecture:
|
|
65
|
+
* - SpanBufferClass carries static schema + stats (shared by all ops from same defineOpContext)
|
|
66
|
+
* - remappedViewClass only set for prefixed ops (wraps child buffers before adding to _children)
|
|
67
|
+
* - No LogBinding - stats accessed via SpanBufferClass.stats
|
|
68
|
+
*
|
|
69
|
+
* @typeParam Ctx - OpContext with deps, ff, env (contravariant position)
|
|
70
|
+
* @typeParam Args - Tuple of argument types (excluding ctx)
|
|
71
|
+
* @typeParam S - Success type of the Result
|
|
72
|
+
* @typeParam E - Error type of the Result
|
|
73
|
+
*/
|
|
74
|
+
export declare class Op<Ctx extends OpContext, Args extends unknown[], S, E> {
|
|
75
|
+
/** Op name for metrics, telemetry, and debugging */
|
|
76
|
+
readonly metadata: OpMetadata;
|
|
77
|
+
/** Op owns buffer creation - class has static schema + stats shared by all instances */
|
|
78
|
+
readonly SpanBufferClass: SpanBufferConstructor;
|
|
79
|
+
/** The user function to execute - called by span_op after context creation (can be sync or async) */
|
|
80
|
+
readonly fn: (ctx: SpanContext<Ctx>, ...args: Args) => Result<S, E> | Promise<Result<S, E>>;
|
|
81
|
+
/** Only set for prefixed ops - wraps child buffers during registration */
|
|
82
|
+
readonly remappedViewClass?: RemappedViewConstructor | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* WHY: Carries the OpContextBinding from the factory that created this Op.
|
|
85
|
+
* Enables downstream consumers (defineAgentOps, OpRegistry) to extract the
|
|
86
|
+
* LMAO schema for context merging and conflict detection.
|
|
87
|
+
*/
|
|
88
|
+
readonly _opContextBinding?: OpContextBinding | undefined;
|
|
89
|
+
constructor(
|
|
90
|
+
/** Op name for metrics, telemetry, and debugging */
|
|
91
|
+
metadata: OpMetadata,
|
|
92
|
+
/** Op owns buffer creation - class has static schema + stats shared by all instances */
|
|
93
|
+
SpanBufferClass: SpanBufferConstructor,
|
|
94
|
+
/** The user function to execute - called by span_op after context creation (can be sync or async) */
|
|
95
|
+
fn: (ctx: SpanContext<Ctx>, ...args: Args) => Result<S, E> | Promise<Result<S, E>>,
|
|
96
|
+
/** Only set for prefixed ops - wraps child buffers during registration */
|
|
97
|
+
remappedViewClass?: RemappedViewConstructor | undefined,
|
|
98
|
+
/**
|
|
99
|
+
* WHY: Carries the OpContextBinding from the factory that created this Op.
|
|
100
|
+
* Enables downstream consumers (defineAgentOps, OpRegistry) to extract the
|
|
101
|
+
* LMAO schema for context merging and conflict detection.
|
|
102
|
+
*/
|
|
103
|
+
_opContextBinding?: OpContextBinding | undefined);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../src/lib/op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAM7D;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,6DAA6D;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAC7C,6DAA6D;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;CACzC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,EAAE,CAAC,GAAG,SAAS,SAAS,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IAE/D,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,UAAU;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,eAAe,EAAE,qBAAqB;IAC/C,qGAAqG;IACrG,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,0EAA0E;IAC1E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB;IACpD;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,gBAAgB;;IAb7C,oDAAoD;IAC3C,QAAQ,EAAE,UAAU;IAC7B,wFAAwF;IAC/E,eAAe,EAAE,qBAAqB;IAC/C,qGAAqG;IAC5F,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,0EAA0E;IACjE,iBAAiB,CAAC,EAAE,uBAAuB,YAAA;IACpD;;;;OAIG;IACM,iBAAiB,CAAC,EAAE,gBAAgB,YAAA;CAEhD"}
|
package/dist/lib/op.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Op Class
|
|
3
|
+
// =============================================================================
|
|
4
|
+
/**
|
|
5
|
+
* Op - Traced operation (Phase 2 architecture)
|
|
6
|
+
*
|
|
7
|
+
* Per spec 01l lines 436-453 and 01c lines 292-362:
|
|
8
|
+
* - Wraps a user function with automatic span tracking
|
|
9
|
+
* - Captures module metadata for attribution
|
|
10
|
+
* - fn is public and called by span_op() after buffer/context creation
|
|
11
|
+
*
|
|
12
|
+
* Type parameter order matches function signature: (ctx: SpanContext<Ctx>, ...args: Args) => Result<S, E>
|
|
13
|
+
*
|
|
14
|
+
* Op has TWO names:
|
|
15
|
+
* - `name`: The Op's name for metrics (invocations, errors, duration tracking)
|
|
16
|
+
* - Span names are provided at CALL SITE: `await span('contextual-name', myOp, args)`
|
|
17
|
+
*
|
|
18
|
+
* Op captures the metadata for source attribution:
|
|
19
|
+
* - When span() invokes this Op, the Op's metadata becomes buffer._opMetadata (for rows 1+)
|
|
20
|
+
* - The caller's metadata becomes buffer._callsiteMetadata (for row 0)
|
|
21
|
+
*
|
|
22
|
+
* Phase 2 architecture:
|
|
23
|
+
* - SpanBufferClass carries static schema + stats (shared by all ops from same defineOpContext)
|
|
24
|
+
* - remappedViewClass only set for prefixed ops (wraps child buffers before adding to _children)
|
|
25
|
+
* - No LogBinding - stats accessed via SpanBufferClass.stats
|
|
26
|
+
*
|
|
27
|
+
* @typeParam Ctx - OpContext with deps, ff, env (contravariant position)
|
|
28
|
+
* @typeParam Args - Tuple of argument types (excluding ctx)
|
|
29
|
+
* @typeParam S - Success type of the Result
|
|
30
|
+
* @typeParam E - Error type of the Result
|
|
31
|
+
*/
|
|
32
|
+
export class Op {
|
|
33
|
+
metadata;
|
|
34
|
+
SpanBufferClass;
|
|
35
|
+
fn;
|
|
36
|
+
remappedViewClass;
|
|
37
|
+
_opContextBinding;
|
|
38
|
+
constructor(
|
|
39
|
+
/** Op name for metrics, telemetry, and debugging */
|
|
40
|
+
metadata,
|
|
41
|
+
/** Op owns buffer creation - class has static schema + stats shared by all instances */
|
|
42
|
+
SpanBufferClass,
|
|
43
|
+
/** The user function to execute - called by span_op after context creation (can be sync or async) */
|
|
44
|
+
fn,
|
|
45
|
+
/** Only set for prefixed ops - wraps child buffers during registration */
|
|
46
|
+
remappedViewClass,
|
|
47
|
+
/**
|
|
48
|
+
* WHY: Carries the OpContextBinding from the factory that created this Op.
|
|
49
|
+
* Enables downstream consumers (defineAgentOps, OpRegistry) to extract the
|
|
50
|
+
* LMAO schema for context merging and conflict detection.
|
|
51
|
+
*/
|
|
52
|
+
_opContextBinding) {
|
|
53
|
+
this.metadata = metadata;
|
|
54
|
+
this.SpanBufferClass = SpanBufferClass;
|
|
55
|
+
this.fn = fn;
|
|
56
|
+
this.remappedViewClass = remappedViewClass;
|
|
57
|
+
this._opContextBinding = _opContextBinding;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Type Utilities for Op-Centric API
|
|
3
|
+
*
|
|
4
|
+
* Type-level utilities for handling user context property patterns:
|
|
5
|
+
* - Required at createTrace (null sentinel)
|
|
6
|
+
* - Optional (undefined sentinel)
|
|
7
|
+
* - Has default (non-null, non-undefined value)
|
|
8
|
+
*
|
|
9
|
+
* Also includes reserved property validation to prevent conflicts with SpanContext.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Reserved property names that cannot be used in user context.
|
|
13
|
+
* These are properties that exist on SpanContext and would cause conflicts.
|
|
14
|
+
*/
|
|
15
|
+
export declare const RESERVED_CONTEXT_PROPS: readonly ["buffer", "tag", "log", "scope", "setScope", "ok", "err", "span", "ff", "deps", "_buffer", "_schema", "_spanLogger"];
|
|
16
|
+
/**
|
|
17
|
+
* Union type of all reserved context property names.
|
|
18
|
+
*/
|
|
19
|
+
export type ReservedContextProp = (typeof RESERVED_CONTEXT_PROPS)[number];
|
|
20
|
+
/**
|
|
21
|
+
* Context property patterns:
|
|
22
|
+
*
|
|
23
|
+
* 1. Required at createTrace (null sentinel):
|
|
24
|
+
* `env: null as Env` -> must provide at createTrace, type is Env in SpanContext
|
|
25
|
+
*
|
|
26
|
+
* 2. Optional (undefined sentinel):
|
|
27
|
+
* `userId: undefined as string | undefined` -> optional at createTrace, may be undefined in SpanContext
|
|
28
|
+
*
|
|
29
|
+
* 3. Has default (non-null, non-undefined value):
|
|
30
|
+
* `config: { retryCount: 3 }` -> can override at createTrace, uses default if not provided
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Extract keys where value is exactly `null` (required at trace creation).
|
|
34
|
+
* These MUST be provided at createTrace().
|
|
35
|
+
*/
|
|
36
|
+
export type NullKeys<T> = {
|
|
37
|
+
[K in keyof T]: [T[K]] extends [null] ? K : null extends T[K] ? (undefined extends T[K] ? never : K) : never;
|
|
38
|
+
}[keyof T];
|
|
39
|
+
/**
|
|
40
|
+
* Extract keys where value is `undefined` or includes `undefined` (optional).
|
|
41
|
+
* These are optional at createTrace() and may be undefined in SpanContext.
|
|
42
|
+
*/
|
|
43
|
+
export type UndefinedKeys<T> = {
|
|
44
|
+
[K in keyof T]: undefined extends T[K] ? K : never;
|
|
45
|
+
}[keyof T];
|
|
46
|
+
/**
|
|
47
|
+
* Extract keys with concrete values (neither null nor undefined).
|
|
48
|
+
* These have defaults and are optional to override at createTrace().
|
|
49
|
+
*/
|
|
50
|
+
export type DefaultKeys<T> = {
|
|
51
|
+
[K in keyof T]: null extends T[K] ? never : undefined extends T[K] ? never : K;
|
|
52
|
+
}[keyof T];
|
|
53
|
+
/**
|
|
54
|
+
* Transform user context for SpanContext.
|
|
55
|
+
* - Null properties become their non-null type (filled at createTrace)
|
|
56
|
+
* - Undefined properties stay as potentially undefined
|
|
57
|
+
* - Default properties stay as-is
|
|
58
|
+
*/
|
|
59
|
+
export type ResolvedContext<UserCtx> = {
|
|
60
|
+
readonly [K in keyof UserCtx]: null extends UserCtx[K] ? undefined extends UserCtx[K] ? UserCtx[K] : Exclude<UserCtx[K], null> : UserCtx[K];
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* What MUST be provided at createTrace() - only null sentinel properties.
|
|
64
|
+
*/
|
|
65
|
+
export type RequiredContextParams<UserCtx> = {
|
|
66
|
+
[K in NullKeys<UserCtx>]: Exclude<UserCtx[K], null>;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* What CAN be provided at createTrace() - optional and default properties.
|
|
70
|
+
*/
|
|
71
|
+
export type OptionalContextParams<UserCtx> = {
|
|
72
|
+
[K in UndefinedKeys<UserCtx> | DefaultKeys<UserCtx>]?: undefined extends UserCtx[K] ? UserCtx[K] : UserCtx[K];
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Combined context params for createTrace().
|
|
76
|
+
* - Null props are REQUIRED (must provide)
|
|
77
|
+
* - Undefined props are OPTIONAL (can provide or omit)
|
|
78
|
+
* - Default props are OPTIONAL (can override or use default)
|
|
79
|
+
*/
|
|
80
|
+
export type TraceContextParams<UserCtx> = RequiredContextParams<UserCtx> & OptionalContextParams<UserCtx>;
|
|
81
|
+
/**
|
|
82
|
+
* Validate that user context doesn't use reserved property names.
|
|
83
|
+
* Returns `never` with descriptive error if validation fails.
|
|
84
|
+
*/
|
|
85
|
+
export type ValidateUserContext<UserCtx> = keyof UserCtx extends infer K ? K extends ReservedContextProp ? {
|
|
86
|
+
__error: `'${K & string}' is a reserved SpanContext property and cannot be used in ctx`;
|
|
87
|
+
} : UserCtx : UserCtx;
|
|
88
|
+
//# sourceMappingURL=contextTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextTypes.d.ts","sourceRoot":"","sources":["../../../src/lib/opContext/contextTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,gIAgBzB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAM1E;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK;CAC7G,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;KAC5B,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACnD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;CAC/E,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CAAC,OAAO,IAAI;IACrC,QAAQ,EAAE,CAAC,IAAI,MAAM,OAAO,GAAG,IAAI,SAAS,OAAO,CAAC,CAAC,CAAC,GAClD,SAAS,SAAS,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,GACV,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,OAAO,IAAI;KAC1C,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;CACpD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,OAAO,IAAI;KAC1C,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,SAAS,OAAO,CAAC,CAAC,CAAC,GAC/E,OAAO,CAAC,CAAC,CAAC,GACV,OAAO,CAAC,CAAC,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE1G;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,OAAO,IAAI,MAAM,OAAO,SAAS,MAAM,CAAC,GACpE,CAAC,SAAS,mBAAmB,GAC3B;IAAE,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,gEAAgE,CAAA;CAAE,GAC3F,OAAO,GACT,OAAO,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Type Utilities for Op-Centric API
|
|
3
|
+
*
|
|
4
|
+
* Type-level utilities for handling user context property patterns:
|
|
5
|
+
* - Required at createTrace (null sentinel)
|
|
6
|
+
* - Optional (undefined sentinel)
|
|
7
|
+
* - Has default (non-null, non-undefined value)
|
|
8
|
+
*
|
|
9
|
+
* Also includes reserved property validation to prevent conflicts with SpanContext.
|
|
10
|
+
*/
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// RESERVED PROPERTY NAMES
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Reserved property names that cannot be used in user context.
|
|
16
|
+
* These are properties that exist on SpanContext and would cause conflicts.
|
|
17
|
+
*/
|
|
18
|
+
export const RESERVED_CONTEXT_PROPS = [
|
|
19
|
+
// Core SpanContext properties
|
|
20
|
+
'buffer',
|
|
21
|
+
'tag',
|
|
22
|
+
'log',
|
|
23
|
+
'scope',
|
|
24
|
+
'setScope',
|
|
25
|
+
'ok',
|
|
26
|
+
'err',
|
|
27
|
+
'span',
|
|
28
|
+
'ff',
|
|
29
|
+
'deps',
|
|
30
|
+
// Internal properties
|
|
31
|
+
'_buffer',
|
|
32
|
+
'_schema',
|
|
33
|
+
'_spanLogger',
|
|
34
|
+
];
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpGroup Creation - Class-based architecture for Phase 2
|
|
3
|
+
*
|
|
4
|
+
* Creates OpGroups as class instances with ops as own properties.
|
|
5
|
+
* Enables V8 hidden class optimization and cleaner API (`.opName` not `.ops.opName`).
|
|
6
|
+
*
|
|
7
|
+
* Why class-based:
|
|
8
|
+
* - Private fields (#columnMapping) don't affect hidden class (truly hidden, no enumeration)
|
|
9
|
+
* - Ops as own properties enable direct access and predictable object shape
|
|
10
|
+
* - prefix()/mapColumns() create new instances with same SpanBufferClass (shared stats)
|
|
11
|
+
* - Only remappedViewClass differs between original and prefixed op instances
|
|
12
|
+
*
|
|
13
|
+
* Internal properties (_logSchema, _flags, etc.) are prefixed with underscore to avoid
|
|
14
|
+
* collision with user-defined op names. Public interfaces hide these from intellisense.
|
|
15
|
+
*
|
|
16
|
+
* @module opContext/createOpGroup
|
|
17
|
+
*/
|
|
18
|
+
import type { OpGroup, OpGroupOps } from './opGroupTypes.js';
|
|
19
|
+
import type { OpContext } from './types.js';
|
|
20
|
+
/**
|
|
21
|
+
* Create an OpGroup from a schema, flags, and ops
|
|
22
|
+
*
|
|
23
|
+
* Why class-based: V8 hidden class optimization - all OpGroups with same ops
|
|
24
|
+
* have same object shape (private fields don't affect hidden class).
|
|
25
|
+
*
|
|
26
|
+
* The ops passed to this function already have a SpanBufferClass attached.
|
|
27
|
+
* All ops in the same context share the SAME SpanBufferClass instance, which carries:
|
|
28
|
+
* - Static schema property (shared by all instances)
|
|
29
|
+
* - Static stats property (shared mutable stats for self-tuning)
|
|
30
|
+
*
|
|
31
|
+
* The returned OpGroup can be:
|
|
32
|
+
* - Used directly as a dependency (ops accessible via ctx.deps.name.opName)
|
|
33
|
+
* - Prefixed with `.prefix('http')` to namespace all columns
|
|
34
|
+
* - Mapped with `.mapColumns({ query: 'query', _internal: null })` for fine control
|
|
35
|
+
*
|
|
36
|
+
* @param logSchema - The LogSchema defining columns for this group's ops
|
|
37
|
+
* @param flags - Feature flag schema
|
|
38
|
+
* @param ops - Record of Op instances belonging to this group
|
|
39
|
+
* @returns OpGroup with prefix() and mapColumns() methods, ops as own properties
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const httpOps = createOpGroup(httpLogSchema, httpFlags, {
|
|
44
|
+
* fetch: fetchOp,
|
|
45
|
+
* post: postOp,
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* // Direct access (Phase 2):
|
|
49
|
+
* await ctx.deps.http.fetch(url);
|
|
50
|
+
*
|
|
51
|
+
* // Wire with prefix:
|
|
52
|
+
* deps: { http: httpOps.prefix('http') }
|
|
53
|
+
* // Columns become: http_status, http_url, http_duration, etc.
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function createOpGroup<Ctx extends OpContext, Ops extends OpGroupOps<Ctx>>(logSchema: Ctx['logSchema'], flags: Ctx['flags'], ops: Ops): OpGroup<Ctx, Ops>;
|
|
57
|
+
//# sourceMappingURL=createOpGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createOpGroup.d.ts","sourceRoot":"","sources":["../../../src/lib/opContext/createOpGroup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,KAAK,EAKV,OAAO,EAEP,UAAU,EAGX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAyX5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,aAAa,CAAC,GAAG,SAAS,SAAS,EAAE,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,EAC9E,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,EAC3B,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EACnB,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAInB"}
|