@smoothbricks/lmao 0.2.2 → 0.2.3
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/dist/allocator.wasm +0 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/lib/JsBufferStrategy.d.ts +4 -3
- package/dist/lib/JsBufferStrategy.d.ts.map +1 -1
- package/dist/lib/JsBufferStrategy.js +18 -11
- package/dist/lib/arrow/lease.d.ts +10 -0
- package/dist/lib/arrow/lease.d.ts.map +1 -0
- package/dist/lib/arrow/lease.js +33 -0
- package/dist/lib/arrow/utils.d.ts +3 -4
- package/dist/lib/arrow/utils.d.ts.map +1 -1
- package/dist/lib/arrow/utils.js +12 -13
- package/dist/lib/arrow/vocabularyDictionary.d.ts +21 -0
- package/dist/lib/arrow/vocabularyDictionary.d.ts.map +1 -0
- package/dist/lib/arrow/vocabularyDictionary.js +95 -0
- package/dist/lib/bufferStrategy.d.ts +3 -2
- package/dist/lib/bufferStrategy.d.ts.map +1 -1
- package/dist/lib/cloudflare/traceRows.d.ts.map +1 -1
- package/dist/lib/cloudflare/traceRows.js +3 -2
- package/dist/lib/codegen/evaluatorGenerator.d.ts.map +1 -1
- package/dist/lib/codegen/evaluatorGenerator.js +12 -11
- package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts +44 -82
- package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts.map +1 -1
- package/dist/lib/codegen/fixedPositionWriterGenerator.js +223 -162
- package/dist/lib/codegen/spanLoggerClosureMaterializer.d.ts +63 -0
- package/dist/lib/codegen/spanLoggerClosureMaterializer.d.ts.map +1 -0
- package/dist/lib/codegen/spanLoggerClosureMaterializer.js +447 -0
- package/dist/lib/codegen/spanLoggerGenerator.d.ts +36 -19
- package/dist/lib/codegen/spanLoggerGenerator.d.ts.map +1 -1
- package/dist/lib/codegen/spanLoggerGenerator.js +164 -158
- package/dist/lib/convertToArrow.d.ts +7 -2
- package/dist/lib/convertToArrow.d.ts.map +1 -1
- package/dist/lib/convertToArrow.js +499 -285
- package/dist/lib/defineOpContext.js +1 -1
- package/dist/lib/enumMetadata.d.ts +19 -0
- package/dist/lib/enumMetadata.d.ts.map +1 -0
- package/dist/lib/enumMetadata.js +86 -0
- package/dist/lib/flushScheduler.d.ts.map +1 -1
- package/dist/lib/flushScheduler.js +13 -4
- package/dist/lib/library.d.ts +16 -98
- package/dist/lib/library.d.ts.map +1 -1
- package/dist/lib/library.js +32 -525
- package/dist/lib/logBinding.d.ts +21 -27
- package/dist/lib/logBinding.d.ts.map +1 -1
- package/dist/lib/op.d.ts +30 -30
- package/dist/lib/op.d.ts.map +1 -1
- package/dist/lib/op.js +15 -22
- package/dist/lib/opContext/createOpGroup.d.ts +1 -1
- package/dist/lib/opContext/createOpGroup.d.ts.map +1 -1
- package/dist/lib/opContext/createOpGroup.js +22 -29
- package/dist/lib/opContext/defineOp.d.ts +4 -4
- package/dist/lib/opContext/defineOp.d.ts.map +1 -1
- package/dist/lib/opContext/defineOp.js +53 -10
- package/dist/lib/opContext/opGroupTypes.d.ts +2 -2
- package/dist/lib/opContext/opTypes.d.ts +1 -1
- package/dist/lib/opContext/opTypes.d.ts.map +1 -1
- package/dist/lib/opContext/spanContextTypes.d.ts +29 -14
- package/dist/lib/opContext/spanContextTypes.d.ts.map +1 -1
- package/dist/lib/opContext/types.d.ts +4 -4
- package/dist/lib/opContext/types.d.ts.map +1 -1
- package/dist/lib/physicalLayoutPlan.d.ts +89 -0
- package/dist/lib/physicalLayoutPlan.d.ts.map +1 -0
- package/dist/lib/physicalLayoutPlan.js +442 -0
- package/dist/lib/resolveMessage.d.ts +9 -0
- package/dist/lib/resolveMessage.d.ts.map +1 -0
- package/dist/lib/resolveMessage.js +63 -0
- package/dist/lib/result.d.ts +5 -7
- package/dist/lib/result.d.ts.map +1 -1
- package/dist/lib/result.js +19 -26
- package/dist/lib/runtimeHint.d.ts +35 -0
- package/dist/lib/runtimeHint.d.ts.map +1 -0
- package/dist/lib/runtimeHint.js +79 -0
- package/dist/lib/schema/types.d.ts +1 -1
- package/dist/lib/schema/types.d.ts.map +1 -1
- package/dist/lib/span-buffer/aot/v1.d.ts +2 -0
- package/dist/lib/span-buffer/aot/v1.d.ts.map +1 -0
- package/dist/lib/span-buffer/aot/v1.js +24 -0
- package/dist/lib/spanBuffer.d.ts +33 -4
- package/dist/lib/spanBuffer.d.ts.map +1 -1
- package/dist/lib/spanBuffer.js +583 -91
- package/dist/lib/spanBufferStats.d.ts +1 -1
- package/dist/lib/spanBufferStats.d.ts.map +1 -1
- package/dist/lib/spanContext.d.ts +27 -51
- package/dist/lib/spanContext.d.ts.map +1 -1
- package/dist/lib/spanContext.js +822 -344
- package/dist/lib/sqlite/sqlite-common.d.ts.map +1 -1
- package/dist/lib/sqlite/sqlite-common.js +20 -21
- package/dist/lib/testing/bun-harness.d.ts +8 -3
- package/dist/lib/testing/bun-harness.d.ts.map +1 -1
- package/dist/lib/testing/bun-harness.js +30 -18
- package/dist/lib/testing/extractFacts.d.ts +1 -1
- package/dist/lib/testing/extractFacts.d.ts.map +1 -1
- package/dist/lib/testing/extractFacts.js +55 -63
- package/dist/lib/testing/facts.d.ts +1 -1
- package/dist/lib/testing/facts.d.ts.map +1 -1
- package/dist/lib/testing/queryable-span.d.ts +1 -1
- package/dist/lib/testing/queryable-span.d.ts.map +1 -1
- package/dist/lib/testing/queryable-span.js +26 -28
- package/dist/lib/testing/span-query.d.ts.map +1 -1
- package/dist/lib/testing/span-query.js +19 -22
- package/dist/lib/testing/stdio-replay.d.ts.map +1 -1
- package/dist/lib/testing/stdio-replay.js +19 -8
- package/dist/lib/threadId.d.ts.map +1 -1
- package/dist/lib/threadId.js +6 -3
- package/dist/lib/traceRoot.d.ts +30 -8
- package/dist/lib/traceRoot.d.ts.map +1 -1
- package/dist/lib/traceRoot.es.d.ts +17 -15
- package/dist/lib/traceRoot.es.d.ts.map +1 -1
- package/dist/lib/traceRoot.es.js +68 -34
- package/dist/lib/traceRoot.js +11 -0
- package/dist/lib/traceRoot.node.d.ts +17 -19
- package/dist/lib/traceRoot.node.d.ts.map +1 -1
- package/dist/lib/traceRoot.node.js +66 -38
- package/dist/lib/traceTopology.d.ts +42 -0
- package/dist/lib/traceTopology.d.ts.map +1 -0
- package/dist/lib/traceTopology.js +260 -0
- package/dist/lib/tracer.d.ts +9 -5
- package/dist/lib/tracer.d.ts.map +1 -1
- package/dist/lib/tracer.js +65 -71
- package/dist/lib/tracers/ArrayQueueTracer.d.ts +1 -1
- package/dist/lib/tracers/ArrayQueueTracer.js +1 -1
- package/dist/lib/tracers/StdioTracer.d.ts.map +1 -1
- package/dist/lib/tracers/StdioTracer.js +15 -13
- package/dist/lib/tracers/TestTracer.d.ts +4 -6
- package/dist/lib/tracers/TestTracer.d.ts.map +1 -1
- package/dist/lib/tracers/TestTracer.js +6 -8
- package/dist/lib/types.d.ts +49 -32
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/vocabularyRegistry.d.ts +25 -0
- package/dist/lib/vocabularyRegistry.d.ts.map +1 -0
- package/dist/lib/vocabularyRegistry.js +372 -0
- package/dist/lib/wasm/WasmBufferStrategy.d.ts +6 -10
- package/dist/lib/wasm/WasmBufferStrategy.d.ts.map +1 -1
- package/dist/lib/wasm/WasmBufferStrategy.js +44 -37
- package/dist/lib/wasm/wasmAllocator.d.ts +27 -22
- package/dist/lib/wasm/wasmAllocator.d.ts.map +1 -1
- package/dist/lib/wasm/wasmAllocator.js +66 -44
- package/dist/lib/wasm/wasmPhysicalLayout.d.ts +67 -0
- package/dist/lib/wasm/wasmPhysicalLayout.d.ts.map +1 -0
- package/dist/lib/wasm/wasmPhysicalLayout.js +179 -0
- package/dist/lib/wasm/wasmSpanBuffer.d.ts +79 -31
- package/dist/lib/wasm/wasmSpanBuffer.d.ts.map +1 -1
- package/dist/lib/wasm/wasmSpanBuffer.js +442 -272
- package/dist/lib/wasm/wasmTraceRoot.d.ts +24 -22
- package/dist/lib/wasm/wasmTraceRoot.d.ts.map +1 -1
- package/dist/lib/wasm/wasmTraceRoot.js +110 -71
- package/dist/vocabulary/register/v1.d.ts +2 -0
- package/dist/vocabulary/register/v1.d.ts.map +1 -0
- package/dist/vocabulary/register/v1.js +1 -0
- package/dist/wasm.d.ts +5 -0
- package/dist/wasm.d.ts.map +1 -0
- package/dist/wasm.js +4 -0
- package/package.json +54 -6
- package/src/index.ts +1 -0
- package/src/lib/JsBufferStrategy.ts +27 -9
- package/src/lib/__tests__/arrow-builder-integration/arrow-conversion.test.ts +335 -37
- package/src/lib/__tests__/arrow-builder-integration/binary-arrow-conversion.test.ts +97 -26
- package/src/lib/__tests__/arrow-builder-integration/binary-comparison.test.ts +75 -15
- package/src/lib/__tests__/arrow-builder-integration/binary-format-compliance.test.ts +30 -6
- package/src/lib/__tests__/arrow-builder-integration/buffer-chaining.test.ts +18 -21
- package/src/lib/__tests__/arrow-builder-integration/foundation.test.ts +5 -2
- package/src/lib/__tests__/arrow-builder-integration/integration.test.ts +25 -7
- package/src/lib/__tests__/arrow-builder-integration/lazy-columns.test.ts +3 -2
- package/src/lib/__tests__/buffer-overflow.test.ts +24 -18
- package/src/lib/__tests__/capability-span-context.test.ts +505 -0
- package/src/lib/__tests__/capacity-tuning.test.ts +5 -3
- package/src/lib/__tests__/eager-columns.test.ts +345 -0
- package/src/lib/__tests__/enum-metadata-aot.test.ts +153 -0
- package/src/lib/__tests__/enum-metadata.test.ts +177 -0
- package/src/lib/__tests__/fixtures/empty-vocabulary-runtime.fixture.ts +15 -0
- package/src/lib/__tests__/flushScheduler.test.ts +5 -1
- package/src/lib/__tests__/identity-view.property.test.ts +179 -0
- package/src/lib/__tests__/library.test.ts +19 -235
- package/src/lib/__tests__/message-buffer-families.test.ts +878 -0
- package/src/lib/__tests__/nested-library-tasks.test.ts +14 -15
- package/src/lib/__tests__/op-metadata.test.ts +1 -1
- package/src/lib/__tests__/op-type-safety.test.ts +5 -16
- package/src/lib/__tests__/physical-layout-plan.test.ts +333 -0
- package/src/lib/__tests__/remap-descriptor-integration.test.ts +381 -0
- package/src/lib/__tests__/root-context-construction.test.ts +414 -0
- package/src/lib/__tests__/span-auto-runtime.test.ts +386 -0
- package/src/lib/__tests__/span-buffer-segment-stats.test.ts +221 -0
- package/src/lib/__tests__/span-lifecycle.test.ts +53 -25
- package/src/lib/__tests__/spanbuffer-materializer-parity.test.ts +266 -0
- package/src/lib/__tests__/sync-async-trace.test.ts +24 -23
- package/src/lib/__tests__/tag-writer-aot.test.ts +214 -0
- package/src/lib/__tests__/test-helpers.ts +67 -12
- package/src/lib/__tests__/threadId.test.ts +62 -0
- package/src/lib/__tests__/timestamp.test.ts +221 -93
- package/src/lib/__tests__/traceTopology.property.test.ts +383 -0
- package/src/lib/__tests__/type-narrowing.test.ts +63 -0
- package/src/lib/__tests__/vocabulary-dense-decoding.test.ts +405 -0
- package/src/lib/__tests__/vocabularyRegistry.test.ts +313 -0
- package/src/lib/arrow/lease.ts +43 -0
- package/src/lib/arrow/utils.ts +10 -14
- package/src/lib/arrow/vocabularyDictionary.ts +123 -0
- package/src/lib/bufferStrategy.ts +9 -1
- package/src/lib/cloudflare/traceRows.ts +3 -2
- package/src/lib/codegen/__tests__/evaluatorGenerator.test.ts +21 -141
- package/src/lib/codegen/__tests__/fixedPositionWriter-parity.test.ts +273 -0
- package/src/lib/codegen/__tests__/fixedPositionWriter-uint64.test.ts +61 -34
- package/src/lib/codegen/__tests__/nullBitmap.test.ts +33 -37
- package/src/lib/codegen/__tests__/spanLoggerGenerator.test.ts +34 -18
- package/src/lib/codegen/__tests__/spanLoggerMaterializerParity.test.ts +503 -0
- package/src/lib/codegen/evaluatorGenerator.ts +18 -13
- package/src/lib/codegen/fixedPositionWriterGenerator.ts +329 -245
- package/src/lib/codegen/spanLoggerClosureMaterializer.ts +598 -0
- package/src/lib/codegen/spanLoggerGenerator.ts +241 -177
- package/src/lib/convertToArrow.ts +598 -311
- package/src/lib/defineOpContext.ts +1 -1
- package/src/lib/enumMetadata.ts +121 -0
- package/src/lib/flushScheduler.ts +11 -5
- package/src/lib/library.ts +37 -595
- package/src/lib/logBinding.ts +21 -27
- package/src/lib/op.ts +75 -18
- package/src/lib/opContext/__tests__/retry.test.ts +27 -21
- package/src/lib/opContext/createOpGroup.ts +33 -31
- package/src/lib/opContext/defineOp.ts +88 -11
- package/src/lib/opContext/opGroupTypes.ts +2 -2
- package/src/lib/opContext/opTypes.ts +1 -1
- package/src/lib/opContext/spanContextTypes.ts +98 -17
- package/src/lib/opContext/types.ts +7 -3
- package/src/lib/physicalLayoutPlan.ts +598 -0
- package/src/lib/resolveMessage.ts +67 -0
- package/src/lib/result.ts +20 -33
- package/src/lib/runtimeHint.ts +98 -0
- package/src/lib/schema/__tests__/featureFlags.test.ts +2 -1
- package/src/lib/schema/builder.ts +1 -1
- package/src/lib/schema/types.ts +1 -1
- package/src/lib/span-buffer/aot/v1.ts +26 -0
- package/src/lib/spanBuffer.ts +658 -92
- package/src/lib/spanBufferStats.ts +1 -1
- package/src/lib/spanContext.ts +1350 -861
- package/src/lib/sqlite/sqlite-common.ts +20 -31
- package/src/lib/testing/__tests__/topology-traversal.test.ts +174 -0
- package/src/lib/testing/__tests__/vitest-harness.test.ts +2 -1
- package/src/lib/testing/bun-harness.ts +94 -43
- package/src/lib/testing/extractFacts.ts +64 -78
- package/src/lib/testing/facts.ts +1 -1
- package/src/lib/testing/queryable-span.ts +23 -30
- package/src/lib/testing/span-query.ts +16 -20
- package/src/lib/testing/stdio-replay.ts +25 -8
- package/src/lib/testing/vitest-harness.ts +1 -1
- package/src/lib/threadId.ts +6 -3
- package/src/lib/traceRoot.es.ts +77 -42
- package/src/lib/traceRoot.node.ts +75 -46
- package/src/lib/traceRoot.ts +41 -14
- package/src/lib/traceTopology.ts +279 -0
- package/src/lib/tracer.ts +109 -98
- package/src/lib/tracers/ArrayQueueTracer.ts +1 -1
- package/src/lib/tracers/StdioTracer.ts +15 -13
- package/src/lib/tracers/TestTracer.ts +6 -8
- package/src/lib/tracers/__tests__/ArrayQueueTracer.test.ts +15 -10
- package/src/lib/tracers/__tests__/TestTracer.test.ts +23 -13
- package/src/lib/types.ts +64 -33
- package/src/lib/vocabularyRegistry.ts +439 -0
- package/src/lib/wasm/WasmBufferStrategy.ts +56 -48
- package/src/lib/wasm/__tests__/WasmBufferStrategy.test.ts +215 -11
- package/src/lib/wasm/__tests__/allocatorFreeBlockClamp.test.ts +86 -0
- package/src/lib/wasm/__tests__/wasm-identity-view.test.ts +311 -0
- package/src/lib/wasm/__tests__/wasm-integration.test.ts +417 -44
- package/src/lib/wasm/__tests__/wasm-message-buffer-families.test.ts +588 -0
- package/src/lib/wasm/__tests__/wasmAllocator.test.ts +100 -668
- package/src/lib/wasm/__tests__/wasmSpanBuffer.test.ts +419 -63
- package/src/lib/wasm/__tests__/wasmTraceRoot.test.ts +24 -29
- package/src/lib/wasm/__tests__/wasmTracer.test.ts.disabled +2 -2
- package/src/lib/wasm/wasmAllocator.ts +131 -96
- package/src/lib/wasm/wasmPhysicalLayout.ts +309 -0
- package/src/lib/wasm/wasmSpanBuffer.ts +597 -341
- package/src/lib/wasm/wasmTraceRoot.ts +140 -78
- package/src/vocabulary/register/v1.ts +1 -0
- package/src/wasm.ts +19 -0
- package/src/lib/__tests__/remapped-buffer-view-integration.test.ts +0 -319
- package/src/lib/__tests__/remapped-buffer-view.test.ts +0 -635
- package/src/lib/wasm/allocator.zig +0 -948
|
@@ -5,6 +5,8 @@ import { describe, expect, it } from 'bun:test';
|
|
|
5
5
|
import { createTestTracerOptions } from '../../__tests__/test-helpers.js';
|
|
6
6
|
import { convertSpanTreeToArrowTable } from '../../convertToArrow.js';
|
|
7
7
|
import { defineLogSchema, defineOpContext, S } from '../../defineOpContext.js';
|
|
8
|
+
import { resolveMessage } from '../../resolveMessage.js';
|
|
9
|
+
import { iterateSpanChildren } from '../../traceTopology.js';
|
|
8
10
|
import { ArrayQueueTracer } from '../ArrayQueueTracer.js';
|
|
9
11
|
|
|
10
12
|
describe('ArrayQueueTracer', () => {
|
|
@@ -31,7 +33,7 @@ describe('ArrayQueueTracer', () => {
|
|
|
31
33
|
await trace('queued-trace', testOp);
|
|
32
34
|
|
|
33
35
|
expect(tracer.queue).toHaveLength(1);
|
|
34
|
-
expect(tracer.queue[0]
|
|
36
|
+
expect(resolveMessage(tracer.queue[0], 0)).toBe('queued-trace');
|
|
35
37
|
});
|
|
36
38
|
|
|
37
39
|
it('should queue multiple traces in order', async () => {
|
|
@@ -45,9 +47,9 @@ describe('ArrayQueueTracer', () => {
|
|
|
45
47
|
await trace('third', testOp);
|
|
46
48
|
|
|
47
49
|
expect(tracer.queue).toHaveLength(3);
|
|
48
|
-
expect(tracer.queue[0]
|
|
49
|
-
expect(tracer.queue[1]
|
|
50
|
-
expect(tracer.queue[2]
|
|
50
|
+
expect(resolveMessage(tracer.queue[0], 0)).toBe('first');
|
|
51
|
+
expect(resolveMessage(tracer.queue[1], 0)).toBe('second');
|
|
52
|
+
expect(resolveMessage(tracer.queue[2], 0)).toBe('third');
|
|
51
53
|
});
|
|
52
54
|
|
|
53
55
|
it('should queue buffer even if trace throws', async () => {
|
|
@@ -61,7 +63,7 @@ describe('ArrayQueueTracer', () => {
|
|
|
61
63
|
await expect(trace('failing', failOp)).rejects.toThrow('boom');
|
|
62
64
|
|
|
63
65
|
expect(tracer.queue).toHaveLength(1);
|
|
64
|
-
expect(tracer.queue[0]
|
|
66
|
+
expect(resolveMessage(tracer.queue[0], 0)).toBe('failing');
|
|
65
67
|
});
|
|
66
68
|
});
|
|
67
69
|
|
|
@@ -78,8 +80,8 @@ describe('ArrayQueueTracer', () => {
|
|
|
78
80
|
const drained = tracer.drain();
|
|
79
81
|
|
|
80
82
|
expect(drained).toHaveLength(2);
|
|
81
|
-
expect(drained[0]
|
|
82
|
-
expect(drained[1]
|
|
83
|
+
expect(resolveMessage(drained[0], 0)).toBe('a');
|
|
84
|
+
expect(resolveMessage(drained[1], 0)).toBe('b');
|
|
83
85
|
});
|
|
84
86
|
|
|
85
87
|
it('should clear queue after drain', async () => {
|
|
@@ -116,7 +118,7 @@ describe('ArrayQueueTracer', () => {
|
|
|
116
118
|
await trace('after', testOp);
|
|
117
119
|
|
|
118
120
|
expect(tracer.queue).toHaveLength(1);
|
|
119
|
-
expect(tracer.queue[0]
|
|
121
|
+
expect(resolveMessage(tracer.queue[0], 0)).toBe('after');
|
|
120
122
|
});
|
|
121
123
|
|
|
122
124
|
it('should return independent array (not reference to internal queue)', async () => {
|
|
@@ -177,8 +179,11 @@ describe('ArrayQueueTracer', () => {
|
|
|
177
179
|
await trace('root', parentOp);
|
|
178
180
|
|
|
179
181
|
const [buffer] = tracer.drain();
|
|
180
|
-
|
|
181
|
-
expect(
|
|
182
|
+
const children = Array.from(iterateSpanChildren(buffer));
|
|
183
|
+
expect(children).toHaveLength(1);
|
|
184
|
+
const [child] = children;
|
|
185
|
+
if (!child) throw new Error('expected queued child span');
|
|
186
|
+
expect(resolveMessage(child, 0)).toBe('child-span');
|
|
182
187
|
});
|
|
183
188
|
});
|
|
184
189
|
});
|
|
@@ -10,8 +10,10 @@ import '../../__tests__/test-helpers.js';
|
|
|
10
10
|
import { createTestTracerOptions } from '../../__tests__/test-helpers.js';
|
|
11
11
|
import { convertSpanTreeToArrowTable } from '../../convertToArrow.js';
|
|
12
12
|
import { defineOpContext } from '../../defineOpContext.js';
|
|
13
|
+
import { resolveMessage } from '../../resolveMessage.js';
|
|
13
14
|
import { S } from '../../schema/builder.js';
|
|
14
15
|
import { defineLogSchema } from '../../schema/defineLogSchema.js';
|
|
16
|
+
import { iterateSpanChildren } from '../../traceTopology.js';
|
|
15
17
|
import { TestTracer } from '../TestTracer.js';
|
|
16
18
|
|
|
17
19
|
describe('TestTracer', () => {
|
|
@@ -37,7 +39,7 @@ describe('TestTracer', () => {
|
|
|
37
39
|
await trace('my-trace', async (ctx) => ctx.ok('done'));
|
|
38
40
|
|
|
39
41
|
expect(tracer.rootBuffers).toHaveLength(1);
|
|
40
|
-
expect(tracer.rootBuffers[0]
|
|
42
|
+
expect(resolveMessage(tracer.rootBuffers[0], 0)).toBe('my-trace');
|
|
41
43
|
});
|
|
42
44
|
|
|
43
45
|
it('should accumulate multiple traces', async () => {
|
|
@@ -49,9 +51,9 @@ describe('TestTracer', () => {
|
|
|
49
51
|
await trace('trace-3', async (ctx) => ctx.ok('done'));
|
|
50
52
|
|
|
51
53
|
expect(tracer.rootBuffers).toHaveLength(3);
|
|
52
|
-
expect(tracer.rootBuffers[0]
|
|
53
|
-
expect(tracer.rootBuffers[1]
|
|
54
|
-
expect(tracer.rootBuffers[2]
|
|
54
|
+
expect(resolveMessage(tracer.rootBuffers[0], 0)).toBe('trace-1');
|
|
55
|
+
expect(resolveMessage(tracer.rootBuffers[1], 0)).toBe('trace-2');
|
|
56
|
+
expect(resolveMessage(tracer.rootBuffers[2], 0)).toBe('trace-3');
|
|
55
57
|
});
|
|
56
58
|
|
|
57
59
|
it('should accumulate buffer even if trace throws', async () => {
|
|
@@ -66,7 +68,7 @@ describe('TestTracer', () => {
|
|
|
66
68
|
|
|
67
69
|
// Buffer should still be collected
|
|
68
70
|
expect(tracer.rootBuffers).toHaveLength(1);
|
|
69
|
-
expect(tracer.rootBuffers[0]
|
|
71
|
+
expect(resolveMessage(tracer.rootBuffers[0], 0)).toBe('failing-trace');
|
|
70
72
|
});
|
|
71
73
|
});
|
|
72
74
|
|
|
@@ -85,9 +87,11 @@ describe('TestTracer', () => {
|
|
|
85
87
|
expect(tracer.rootBuffers).toHaveLength(1);
|
|
86
88
|
const rootBuffer = tracer.rootBuffers[0];
|
|
87
89
|
|
|
88
|
-
|
|
89
|
-
expect(
|
|
90
|
-
|
|
90
|
+
const children = Array.from(iterateSpanChildren(rootBuffer));
|
|
91
|
+
expect(children).toHaveLength(1);
|
|
92
|
+
const [child] = children;
|
|
93
|
+
if (!child) throw new Error('expected child span');
|
|
94
|
+
expect(resolveMessage(child, 0)).toBe('child-span');
|
|
91
95
|
});
|
|
92
96
|
|
|
93
97
|
it('should support deeply nested spans', async () => {
|
|
@@ -105,10 +109,16 @@ describe('TestTracer', () => {
|
|
|
105
109
|
});
|
|
106
110
|
|
|
107
111
|
const root = tracer.rootBuffers[0];
|
|
108
|
-
|
|
109
|
-
expect(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
+
const level2Children = Array.from(iterateSpanChildren(root));
|
|
113
|
+
expect(level2Children).toHaveLength(1);
|
|
114
|
+
const [level2] = level2Children;
|
|
115
|
+
if (!level2) throw new Error('expected level-2 span');
|
|
116
|
+
expect(resolveMessage(level2, 0)).toBe('span-l2');
|
|
117
|
+
const level3Children = Array.from(iterateSpanChildren(level2));
|
|
118
|
+
expect(level3Children).toHaveLength(1);
|
|
119
|
+
const [level3] = level3Children;
|
|
120
|
+
if (!level3) throw new Error('expected level-3 span');
|
|
121
|
+
expect(resolveMessage(level3, 0)).toBe('span-l3');
|
|
112
122
|
});
|
|
113
123
|
});
|
|
114
124
|
|
|
@@ -136,7 +146,7 @@ describe('TestTracer', () => {
|
|
|
136
146
|
await trace('after-clear', async (ctx) => ctx.ok('done'));
|
|
137
147
|
|
|
138
148
|
expect(tracer.rootBuffers).toHaveLength(1);
|
|
139
|
-
expect(tracer.rootBuffers[0]
|
|
149
|
+
expect(resolveMessage(tracer.rootBuffers[0], 0)).toBe('after-clear');
|
|
140
150
|
});
|
|
141
151
|
});
|
|
142
152
|
|
package/src/lib/types.ts
CHANGED
|
@@ -19,14 +19,16 @@ import type {
|
|
|
19
19
|
TypedArray,
|
|
20
20
|
} from '@smoothbricks/arrow-builder';
|
|
21
21
|
import type { OpMetadata } from './opContext/opTypes.js';
|
|
22
|
+
import type { MessageLayoutFamily, MessagePhysicalLayout } from './runtimeHint.js';
|
|
22
23
|
import type { LogSchema } from './schema/LogSchema.js';
|
|
23
24
|
import type { InferSchema } from './schema/types.js';
|
|
24
25
|
import type { SpanBufferStats } from './spanBufferStats.js';
|
|
25
26
|
import type { TraceId } from './traceId.js';
|
|
26
27
|
import type { ITraceRoot } from './traceRoot.js';
|
|
28
|
+
import type { VocabularyGeneration } from './vocabularyRegistry.js';
|
|
27
29
|
|
|
28
30
|
// Re-export infrastructure types
|
|
29
|
-
export type { LogBinding,
|
|
31
|
+
export type { LogBinding, RemapDescriptor, RemappedColumn } from './logBinding.js';
|
|
30
32
|
export type { OpMetadata } from './opContext/opTypes.js';
|
|
31
33
|
export type { extractSpanIdentity, SpanIdentity } from './traceId.js';
|
|
32
34
|
export type { TracerLifecycleHooks } from './traceRoot.js';
|
|
@@ -107,13 +109,35 @@ export interface AnySpanBuffer extends AnyColumnBuffer {
|
|
|
107
109
|
*/
|
|
108
110
|
readonly timestamp: BigInt64Array;
|
|
109
111
|
|
|
112
|
+
/** Current and specialized layouts expose this direct lane; packed uses `resolveEntryType`. */
|
|
113
|
+
readonly entry_type?: Uint8Array;
|
|
114
|
+
|
|
115
|
+
/** Current-mode buffer-local template IDs. Zero selects the raw reference lane. */
|
|
116
|
+
readonly _messageIds?: Uint16Array;
|
|
117
|
+
|
|
118
|
+
/** Specialized 1-based global dense message identities. Zero selects the raw/null sidecar sentinel. */
|
|
119
|
+
readonly _logHeaders?: Uint32Array;
|
|
120
|
+
|
|
121
|
+
/** Packed row headers: low 8 bits entry type, high 24 bits dense message index plus one. */
|
|
122
|
+
readonly _rowHeaders?: Uint32Array;
|
|
123
|
+
|
|
124
|
+
/** Immutable vocabulary generation against which packed message indices resolve. */
|
|
125
|
+
readonly _vocabularyGeneration: VocabularyGeneration;
|
|
126
|
+
/** Concrete semantic message family selected once for this buffer constructor. */
|
|
127
|
+
readonly _messageLayoutFamily: MessageLayoutFamily;
|
|
110
128
|
/**
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
* Per specs/lmao/01h_entry_types_and_logging_primitives.md:
|
|
114
|
-
* Values are ENTRY_TYPE_* constants (span-start=1, span-ok=2, etc.)
|
|
129
|
+
* One-shot token set by WASM constructors whose allocation export already
|
|
130
|
+
* initialized row 0, row 1, and the shared write index.
|
|
115
131
|
*/
|
|
116
|
-
|
|
132
|
+
_spanStartedAtAllocation?: boolean;
|
|
133
|
+
/** Concrete physical row layout selected once for this buffer constructor. */
|
|
134
|
+
readonly _messagePhysicalLayout: MessagePhysicalLayout;
|
|
135
|
+
|
|
136
|
+
/** Dedicated row-0 span name used when the selected capacity lane cannot represent it. */
|
|
137
|
+
_spanName?: string | number;
|
|
138
|
+
|
|
139
|
+
/** Dedicated row-1 raw result/exception text for static-only buffers. */
|
|
140
|
+
_terminalMessage?: string;
|
|
117
141
|
|
|
118
142
|
/**
|
|
119
143
|
* Timestamp of span start (row 0).
|
|
@@ -152,6 +176,12 @@ export interface AnySpanBuffer extends AnyColumnBuffer {
|
|
|
152
176
|
*/
|
|
153
177
|
_overflow?: AnySpanBuffer;
|
|
154
178
|
|
|
179
|
+
/** Whether this physical segment has contributed its rows to shared stats. */
|
|
180
|
+
_statsSealed: boolean;
|
|
181
|
+
|
|
182
|
+
/** Lifecycle rows excluded when this physical segment is sealed (2 for first segment, 0 for overflow). */
|
|
183
|
+
_statsReservedRows: number;
|
|
184
|
+
|
|
155
185
|
// ===========================================================================
|
|
156
186
|
// Identity Getters (read from _identity bytes)
|
|
157
187
|
// ===========================================================================
|
|
@@ -201,15 +231,15 @@ export interface AnySpanBuffer extends AnyColumnBuffer {
|
|
|
201
231
|
readonly _logSchema: LogSchema;
|
|
202
232
|
|
|
203
233
|
/**
|
|
204
|
-
*
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
* This enables Arrow conversion to iterate column names correctly regardless of
|
|
209
|
-
* whether the buffer is wrapped in a RemappedBufferView.
|
|
234
|
+
* Canonical schema column entries for this buffer.
|
|
235
|
+
* Output remapping lives separately in `_remapDescriptor` and is interpreted
|
|
236
|
+
* only by cold Arrow traversal.
|
|
210
237
|
*/
|
|
211
238
|
readonly _columns: ReadonlyArray<[string, unknown]>;
|
|
212
239
|
|
|
240
|
+
/** Immutable cold-path output remapping attached to canonical child buffers. */
|
|
241
|
+
_remapDescriptor?: import('./logBinding.js').RemapDescriptor;
|
|
242
|
+
|
|
213
243
|
/**
|
|
214
244
|
* Shared stats for all buffers from same defineOpContext (accessed via constructor.stats).
|
|
215
245
|
* Enables self-tuning capacity learning across all ops in the same context.
|
|
@@ -221,16 +251,13 @@ export interface AnySpanBuffer extends AnyColumnBuffer {
|
|
|
221
251
|
// Tree Structure (for span hierarchy)
|
|
222
252
|
// ===========================================================================
|
|
223
253
|
|
|
224
|
-
/**
|
|
225
|
-
|
|
226
|
-
* Per specs/lmao/01c: Parent-child relationship for trace tree.
|
|
227
|
-
*/
|
|
228
|
-
_children: AnySpanBuffer[];
|
|
254
|
+
/** Stable trace-owned logical node index. Overflow segments share the same index. */
|
|
255
|
+
_nodeIndex: number;
|
|
229
256
|
|
|
230
|
-
/**
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
257
|
+
/** Trace-topology generation used to reject released or reset handles. */
|
|
258
|
+
_topologyGeneration: number;
|
|
259
|
+
|
|
260
|
+
/** Parent span buffer (undefined for root). Preserved for identity access and parent ascent. */
|
|
234
261
|
_parent?: AnySpanBuffer;
|
|
235
262
|
|
|
236
263
|
// ===========================================================================
|
|
@@ -275,12 +302,8 @@ export interface AnySpanBuffer extends AnyColumnBuffer {
|
|
|
275
302
|
// These are explicitly typed here since they're always present from systemSchema.
|
|
276
303
|
// ===========================================================================
|
|
277
304
|
|
|
278
|
-
/**
|
|
279
|
-
|
|
280
|
-
* Contains span names, log messages, exception messages, etc.
|
|
281
|
-
*/
|
|
282
|
-
readonly message_values: string[];
|
|
283
|
-
readonly message_nulls: Uint8Array;
|
|
305
|
+
/** Raw per-row message lane. Omitted by static-only; `undefined` is the null sentinel. */
|
|
306
|
+
readonly message_values?: (string | undefined)[];
|
|
284
307
|
|
|
285
308
|
/**
|
|
286
309
|
* Line number column values - Float64Array (lazy but always present).
|
|
@@ -391,6 +414,12 @@ export interface AnySpanBuffer extends AnyColumnBuffer {
|
|
|
391
414
|
*/
|
|
392
415
|
getOrCreateOverflow(): AnySpanBuffer;
|
|
393
416
|
|
|
417
|
+
/** Account this physical segment's completed rows exactly once. */
|
|
418
|
+
_sealStats(): void;
|
|
419
|
+
|
|
420
|
+
/** Account every physical segment in this logical span's overflow chain exactly once. */
|
|
421
|
+
_sealStatsChain(): void;
|
|
422
|
+
|
|
394
423
|
/**
|
|
395
424
|
* Check if this span is a parent of another span.
|
|
396
425
|
* Used for tree traversal and validation.
|
|
@@ -468,13 +497,13 @@ type FilterSchemaFields<T> = {
|
|
|
468
497
|
* T is REQUIRED - there is no default. Use AnySpanBuffer for generic processing.
|
|
469
498
|
*/
|
|
470
499
|
export type SpanBuffer<T extends LogSchema> = AnySpanBuffer & {
|
|
471
|
-
//
|
|
472
|
-
_children: SpanBuffer<T>[];
|
|
500
|
+
// Preserve typed parent and overflow links.
|
|
473
501
|
_parent?: SpanBuffer<T>;
|
|
474
502
|
_overflow?: SpanBuffer<T>;
|
|
475
503
|
|
|
476
504
|
// Override schema access with the concrete schema for this buffer family
|
|
477
505
|
readonly _logSchema: T;
|
|
506
|
+
_traceRoot: ITraceRoot<T>;
|
|
478
507
|
_scopeValues: Readonly<Partial<InferSchema<T>>>;
|
|
479
508
|
|
|
480
509
|
// Override methods with typed versions
|
|
@@ -486,11 +515,13 @@ export type SpanBuffer<T extends LogSchema> = AnySpanBuffer & {
|
|
|
486
515
|
[key: `${string}_nulls`]: Uint8Array | undefined;
|
|
487
516
|
} & {
|
|
488
517
|
// Schema-specific column data
|
|
489
|
-
readonly [K in keyof FilterSchemaFields<T['fields']> as
|
|
490
|
-
|
|
491
|
-
|
|
518
|
+
readonly [K in keyof FilterSchemaFields<T['fields']> as K extends 'message'
|
|
519
|
+
? never
|
|
520
|
+
: `${K & string}_values`]: ValuesArrayType<FilterSchemaFields<T['fields']>[K]>;
|
|
492
521
|
} & {
|
|
493
|
-
readonly [K in keyof FilterSchemaFields<T['fields']> as
|
|
522
|
+
readonly [K in keyof FilterSchemaFields<T['fields']> as K extends 'message'
|
|
523
|
+
? never
|
|
524
|
+
: `${K & string}_nulls`]: Uint8Array;
|
|
494
525
|
} & {
|
|
495
526
|
// Schema-specific setter methods (return this for method chaining)
|
|
496
527
|
[K in keyof FilterSchemaFields<T['fields']>]: (
|