@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.
Files changed (276) hide show
  1. package/dist/allocator.wasm +0 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -0
  5. package/dist/lib/JsBufferStrategy.d.ts +4 -3
  6. package/dist/lib/JsBufferStrategy.d.ts.map +1 -1
  7. package/dist/lib/JsBufferStrategy.js +18 -11
  8. package/dist/lib/arrow/lease.d.ts +10 -0
  9. package/dist/lib/arrow/lease.d.ts.map +1 -0
  10. package/dist/lib/arrow/lease.js +33 -0
  11. package/dist/lib/arrow/utils.d.ts +3 -4
  12. package/dist/lib/arrow/utils.d.ts.map +1 -1
  13. package/dist/lib/arrow/utils.js +12 -13
  14. package/dist/lib/arrow/vocabularyDictionary.d.ts +21 -0
  15. package/dist/lib/arrow/vocabularyDictionary.d.ts.map +1 -0
  16. package/dist/lib/arrow/vocabularyDictionary.js +95 -0
  17. package/dist/lib/bufferStrategy.d.ts +3 -2
  18. package/dist/lib/bufferStrategy.d.ts.map +1 -1
  19. package/dist/lib/cloudflare/traceRows.d.ts.map +1 -1
  20. package/dist/lib/cloudflare/traceRows.js +3 -2
  21. package/dist/lib/codegen/evaluatorGenerator.d.ts.map +1 -1
  22. package/dist/lib/codegen/evaluatorGenerator.js +12 -11
  23. package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts +44 -82
  24. package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts.map +1 -1
  25. package/dist/lib/codegen/fixedPositionWriterGenerator.js +223 -162
  26. package/dist/lib/codegen/spanLoggerClosureMaterializer.d.ts +63 -0
  27. package/dist/lib/codegen/spanLoggerClosureMaterializer.d.ts.map +1 -0
  28. package/dist/lib/codegen/spanLoggerClosureMaterializer.js +447 -0
  29. package/dist/lib/codegen/spanLoggerGenerator.d.ts +36 -19
  30. package/dist/lib/codegen/spanLoggerGenerator.d.ts.map +1 -1
  31. package/dist/lib/codegen/spanLoggerGenerator.js +164 -158
  32. package/dist/lib/convertToArrow.d.ts +7 -2
  33. package/dist/lib/convertToArrow.d.ts.map +1 -1
  34. package/dist/lib/convertToArrow.js +499 -285
  35. package/dist/lib/defineOpContext.js +1 -1
  36. package/dist/lib/enumMetadata.d.ts +19 -0
  37. package/dist/lib/enumMetadata.d.ts.map +1 -0
  38. package/dist/lib/enumMetadata.js +86 -0
  39. package/dist/lib/flushScheduler.d.ts.map +1 -1
  40. package/dist/lib/flushScheduler.js +13 -4
  41. package/dist/lib/library.d.ts +16 -98
  42. package/dist/lib/library.d.ts.map +1 -1
  43. package/dist/lib/library.js +32 -525
  44. package/dist/lib/logBinding.d.ts +21 -27
  45. package/dist/lib/logBinding.d.ts.map +1 -1
  46. package/dist/lib/op.d.ts +30 -30
  47. package/dist/lib/op.d.ts.map +1 -1
  48. package/dist/lib/op.js +15 -22
  49. package/dist/lib/opContext/createOpGroup.d.ts +1 -1
  50. package/dist/lib/opContext/createOpGroup.d.ts.map +1 -1
  51. package/dist/lib/opContext/createOpGroup.js +22 -29
  52. package/dist/lib/opContext/defineOp.d.ts +4 -4
  53. package/dist/lib/opContext/defineOp.d.ts.map +1 -1
  54. package/dist/lib/opContext/defineOp.js +53 -10
  55. package/dist/lib/opContext/opGroupTypes.d.ts +2 -2
  56. package/dist/lib/opContext/opTypes.d.ts +1 -1
  57. package/dist/lib/opContext/opTypes.d.ts.map +1 -1
  58. package/dist/lib/opContext/spanContextTypes.d.ts +29 -14
  59. package/dist/lib/opContext/spanContextTypes.d.ts.map +1 -1
  60. package/dist/lib/opContext/types.d.ts +4 -4
  61. package/dist/lib/opContext/types.d.ts.map +1 -1
  62. package/dist/lib/physicalLayoutPlan.d.ts +89 -0
  63. package/dist/lib/physicalLayoutPlan.d.ts.map +1 -0
  64. package/dist/lib/physicalLayoutPlan.js +442 -0
  65. package/dist/lib/resolveMessage.d.ts +9 -0
  66. package/dist/lib/resolveMessage.d.ts.map +1 -0
  67. package/dist/lib/resolveMessage.js +63 -0
  68. package/dist/lib/result.d.ts +5 -7
  69. package/dist/lib/result.d.ts.map +1 -1
  70. package/dist/lib/result.js +19 -26
  71. package/dist/lib/runtimeHint.d.ts +35 -0
  72. package/dist/lib/runtimeHint.d.ts.map +1 -0
  73. package/dist/lib/runtimeHint.js +79 -0
  74. package/dist/lib/schema/types.d.ts +1 -1
  75. package/dist/lib/schema/types.d.ts.map +1 -1
  76. package/dist/lib/span-buffer/aot/v1.d.ts +2 -0
  77. package/dist/lib/span-buffer/aot/v1.d.ts.map +1 -0
  78. package/dist/lib/span-buffer/aot/v1.js +24 -0
  79. package/dist/lib/spanBuffer.d.ts +33 -4
  80. package/dist/lib/spanBuffer.d.ts.map +1 -1
  81. package/dist/lib/spanBuffer.js +583 -91
  82. package/dist/lib/spanBufferStats.d.ts +1 -1
  83. package/dist/lib/spanBufferStats.d.ts.map +1 -1
  84. package/dist/lib/spanContext.d.ts +27 -51
  85. package/dist/lib/spanContext.d.ts.map +1 -1
  86. package/dist/lib/spanContext.js +822 -344
  87. package/dist/lib/sqlite/sqlite-common.d.ts.map +1 -1
  88. package/dist/lib/sqlite/sqlite-common.js +20 -21
  89. package/dist/lib/testing/bun-harness.d.ts +8 -3
  90. package/dist/lib/testing/bun-harness.d.ts.map +1 -1
  91. package/dist/lib/testing/bun-harness.js +30 -18
  92. package/dist/lib/testing/extractFacts.d.ts +1 -1
  93. package/dist/lib/testing/extractFacts.d.ts.map +1 -1
  94. package/dist/lib/testing/extractFacts.js +55 -63
  95. package/dist/lib/testing/facts.d.ts +1 -1
  96. package/dist/lib/testing/facts.d.ts.map +1 -1
  97. package/dist/lib/testing/queryable-span.d.ts +1 -1
  98. package/dist/lib/testing/queryable-span.d.ts.map +1 -1
  99. package/dist/lib/testing/queryable-span.js +26 -28
  100. package/dist/lib/testing/span-query.d.ts.map +1 -1
  101. package/dist/lib/testing/span-query.js +19 -22
  102. package/dist/lib/testing/stdio-replay.d.ts.map +1 -1
  103. package/dist/lib/testing/stdio-replay.js +19 -8
  104. package/dist/lib/threadId.d.ts.map +1 -1
  105. package/dist/lib/threadId.js +6 -3
  106. package/dist/lib/traceRoot.d.ts +30 -8
  107. package/dist/lib/traceRoot.d.ts.map +1 -1
  108. package/dist/lib/traceRoot.es.d.ts +17 -15
  109. package/dist/lib/traceRoot.es.d.ts.map +1 -1
  110. package/dist/lib/traceRoot.es.js +68 -34
  111. package/dist/lib/traceRoot.js +11 -0
  112. package/dist/lib/traceRoot.node.d.ts +17 -19
  113. package/dist/lib/traceRoot.node.d.ts.map +1 -1
  114. package/dist/lib/traceRoot.node.js +66 -38
  115. package/dist/lib/traceTopology.d.ts +42 -0
  116. package/dist/lib/traceTopology.d.ts.map +1 -0
  117. package/dist/lib/traceTopology.js +260 -0
  118. package/dist/lib/tracer.d.ts +9 -5
  119. package/dist/lib/tracer.d.ts.map +1 -1
  120. package/dist/lib/tracer.js +65 -71
  121. package/dist/lib/tracers/ArrayQueueTracer.d.ts +1 -1
  122. package/dist/lib/tracers/ArrayQueueTracer.js +1 -1
  123. package/dist/lib/tracers/StdioTracer.d.ts.map +1 -1
  124. package/dist/lib/tracers/StdioTracer.js +15 -13
  125. package/dist/lib/tracers/TestTracer.d.ts +4 -6
  126. package/dist/lib/tracers/TestTracer.d.ts.map +1 -1
  127. package/dist/lib/tracers/TestTracer.js +6 -8
  128. package/dist/lib/types.d.ts +49 -32
  129. package/dist/lib/types.d.ts.map +1 -1
  130. package/dist/lib/vocabularyRegistry.d.ts +25 -0
  131. package/dist/lib/vocabularyRegistry.d.ts.map +1 -0
  132. package/dist/lib/vocabularyRegistry.js +372 -0
  133. package/dist/lib/wasm/WasmBufferStrategy.d.ts +6 -10
  134. package/dist/lib/wasm/WasmBufferStrategy.d.ts.map +1 -1
  135. package/dist/lib/wasm/WasmBufferStrategy.js +44 -37
  136. package/dist/lib/wasm/wasmAllocator.d.ts +27 -22
  137. package/dist/lib/wasm/wasmAllocator.d.ts.map +1 -1
  138. package/dist/lib/wasm/wasmAllocator.js +66 -44
  139. package/dist/lib/wasm/wasmPhysicalLayout.d.ts +67 -0
  140. package/dist/lib/wasm/wasmPhysicalLayout.d.ts.map +1 -0
  141. package/dist/lib/wasm/wasmPhysicalLayout.js +179 -0
  142. package/dist/lib/wasm/wasmSpanBuffer.d.ts +79 -31
  143. package/dist/lib/wasm/wasmSpanBuffer.d.ts.map +1 -1
  144. package/dist/lib/wasm/wasmSpanBuffer.js +442 -272
  145. package/dist/lib/wasm/wasmTraceRoot.d.ts +24 -22
  146. package/dist/lib/wasm/wasmTraceRoot.d.ts.map +1 -1
  147. package/dist/lib/wasm/wasmTraceRoot.js +110 -71
  148. package/dist/vocabulary/register/v1.d.ts +2 -0
  149. package/dist/vocabulary/register/v1.d.ts.map +1 -0
  150. package/dist/vocabulary/register/v1.js +1 -0
  151. package/dist/wasm.d.ts +5 -0
  152. package/dist/wasm.d.ts.map +1 -0
  153. package/dist/wasm.js +4 -0
  154. package/package.json +54 -6
  155. package/src/index.ts +1 -0
  156. package/src/lib/JsBufferStrategy.ts +27 -9
  157. package/src/lib/__tests__/arrow-builder-integration/arrow-conversion.test.ts +335 -37
  158. package/src/lib/__tests__/arrow-builder-integration/binary-arrow-conversion.test.ts +97 -26
  159. package/src/lib/__tests__/arrow-builder-integration/binary-comparison.test.ts +75 -15
  160. package/src/lib/__tests__/arrow-builder-integration/binary-format-compliance.test.ts +30 -6
  161. package/src/lib/__tests__/arrow-builder-integration/buffer-chaining.test.ts +18 -21
  162. package/src/lib/__tests__/arrow-builder-integration/foundation.test.ts +5 -2
  163. package/src/lib/__tests__/arrow-builder-integration/integration.test.ts +25 -7
  164. package/src/lib/__tests__/arrow-builder-integration/lazy-columns.test.ts +3 -2
  165. package/src/lib/__tests__/buffer-overflow.test.ts +24 -18
  166. package/src/lib/__tests__/capability-span-context.test.ts +505 -0
  167. package/src/lib/__tests__/capacity-tuning.test.ts +5 -3
  168. package/src/lib/__tests__/eager-columns.test.ts +345 -0
  169. package/src/lib/__tests__/enum-metadata-aot.test.ts +153 -0
  170. package/src/lib/__tests__/enum-metadata.test.ts +177 -0
  171. package/src/lib/__tests__/fixtures/empty-vocabulary-runtime.fixture.ts +15 -0
  172. package/src/lib/__tests__/flushScheduler.test.ts +5 -1
  173. package/src/lib/__tests__/identity-view.property.test.ts +179 -0
  174. package/src/lib/__tests__/library.test.ts +19 -235
  175. package/src/lib/__tests__/message-buffer-families.test.ts +878 -0
  176. package/src/lib/__tests__/nested-library-tasks.test.ts +14 -15
  177. package/src/lib/__tests__/op-metadata.test.ts +1 -1
  178. package/src/lib/__tests__/op-type-safety.test.ts +5 -16
  179. package/src/lib/__tests__/physical-layout-plan.test.ts +333 -0
  180. package/src/lib/__tests__/remap-descriptor-integration.test.ts +381 -0
  181. package/src/lib/__tests__/root-context-construction.test.ts +414 -0
  182. package/src/lib/__tests__/span-auto-runtime.test.ts +386 -0
  183. package/src/lib/__tests__/span-buffer-segment-stats.test.ts +221 -0
  184. package/src/lib/__tests__/span-lifecycle.test.ts +53 -25
  185. package/src/lib/__tests__/spanbuffer-materializer-parity.test.ts +266 -0
  186. package/src/lib/__tests__/sync-async-trace.test.ts +24 -23
  187. package/src/lib/__tests__/tag-writer-aot.test.ts +214 -0
  188. package/src/lib/__tests__/test-helpers.ts +67 -12
  189. package/src/lib/__tests__/threadId.test.ts +62 -0
  190. package/src/lib/__tests__/timestamp.test.ts +221 -93
  191. package/src/lib/__tests__/traceTopology.property.test.ts +383 -0
  192. package/src/lib/__tests__/type-narrowing.test.ts +63 -0
  193. package/src/lib/__tests__/vocabulary-dense-decoding.test.ts +405 -0
  194. package/src/lib/__tests__/vocabularyRegistry.test.ts +313 -0
  195. package/src/lib/arrow/lease.ts +43 -0
  196. package/src/lib/arrow/utils.ts +10 -14
  197. package/src/lib/arrow/vocabularyDictionary.ts +123 -0
  198. package/src/lib/bufferStrategy.ts +9 -1
  199. package/src/lib/cloudflare/traceRows.ts +3 -2
  200. package/src/lib/codegen/__tests__/evaluatorGenerator.test.ts +21 -141
  201. package/src/lib/codegen/__tests__/fixedPositionWriter-parity.test.ts +273 -0
  202. package/src/lib/codegen/__tests__/fixedPositionWriter-uint64.test.ts +61 -34
  203. package/src/lib/codegen/__tests__/nullBitmap.test.ts +33 -37
  204. package/src/lib/codegen/__tests__/spanLoggerGenerator.test.ts +34 -18
  205. package/src/lib/codegen/__tests__/spanLoggerMaterializerParity.test.ts +503 -0
  206. package/src/lib/codegen/evaluatorGenerator.ts +18 -13
  207. package/src/lib/codegen/fixedPositionWriterGenerator.ts +329 -245
  208. package/src/lib/codegen/spanLoggerClosureMaterializer.ts +598 -0
  209. package/src/lib/codegen/spanLoggerGenerator.ts +241 -177
  210. package/src/lib/convertToArrow.ts +598 -311
  211. package/src/lib/defineOpContext.ts +1 -1
  212. package/src/lib/enumMetadata.ts +121 -0
  213. package/src/lib/flushScheduler.ts +11 -5
  214. package/src/lib/library.ts +37 -595
  215. package/src/lib/logBinding.ts +21 -27
  216. package/src/lib/op.ts +75 -18
  217. package/src/lib/opContext/__tests__/retry.test.ts +27 -21
  218. package/src/lib/opContext/createOpGroup.ts +33 -31
  219. package/src/lib/opContext/defineOp.ts +88 -11
  220. package/src/lib/opContext/opGroupTypes.ts +2 -2
  221. package/src/lib/opContext/opTypes.ts +1 -1
  222. package/src/lib/opContext/spanContextTypes.ts +98 -17
  223. package/src/lib/opContext/types.ts +7 -3
  224. package/src/lib/physicalLayoutPlan.ts +598 -0
  225. package/src/lib/resolveMessage.ts +67 -0
  226. package/src/lib/result.ts +20 -33
  227. package/src/lib/runtimeHint.ts +98 -0
  228. package/src/lib/schema/__tests__/featureFlags.test.ts +2 -1
  229. package/src/lib/schema/builder.ts +1 -1
  230. package/src/lib/schema/types.ts +1 -1
  231. package/src/lib/span-buffer/aot/v1.ts +26 -0
  232. package/src/lib/spanBuffer.ts +658 -92
  233. package/src/lib/spanBufferStats.ts +1 -1
  234. package/src/lib/spanContext.ts +1350 -861
  235. package/src/lib/sqlite/sqlite-common.ts +20 -31
  236. package/src/lib/testing/__tests__/topology-traversal.test.ts +174 -0
  237. package/src/lib/testing/__tests__/vitest-harness.test.ts +2 -1
  238. package/src/lib/testing/bun-harness.ts +94 -43
  239. package/src/lib/testing/extractFacts.ts +64 -78
  240. package/src/lib/testing/facts.ts +1 -1
  241. package/src/lib/testing/queryable-span.ts +23 -30
  242. package/src/lib/testing/span-query.ts +16 -20
  243. package/src/lib/testing/stdio-replay.ts +25 -8
  244. package/src/lib/testing/vitest-harness.ts +1 -1
  245. package/src/lib/threadId.ts +6 -3
  246. package/src/lib/traceRoot.es.ts +77 -42
  247. package/src/lib/traceRoot.node.ts +75 -46
  248. package/src/lib/traceRoot.ts +41 -14
  249. package/src/lib/traceTopology.ts +279 -0
  250. package/src/lib/tracer.ts +109 -98
  251. package/src/lib/tracers/ArrayQueueTracer.ts +1 -1
  252. package/src/lib/tracers/StdioTracer.ts +15 -13
  253. package/src/lib/tracers/TestTracer.ts +6 -8
  254. package/src/lib/tracers/__tests__/ArrayQueueTracer.test.ts +15 -10
  255. package/src/lib/tracers/__tests__/TestTracer.test.ts +23 -13
  256. package/src/lib/types.ts +64 -33
  257. package/src/lib/vocabularyRegistry.ts +439 -0
  258. package/src/lib/wasm/WasmBufferStrategy.ts +56 -48
  259. package/src/lib/wasm/__tests__/WasmBufferStrategy.test.ts +215 -11
  260. package/src/lib/wasm/__tests__/allocatorFreeBlockClamp.test.ts +86 -0
  261. package/src/lib/wasm/__tests__/wasm-identity-view.test.ts +311 -0
  262. package/src/lib/wasm/__tests__/wasm-integration.test.ts +417 -44
  263. package/src/lib/wasm/__tests__/wasm-message-buffer-families.test.ts +588 -0
  264. package/src/lib/wasm/__tests__/wasmAllocator.test.ts +100 -668
  265. package/src/lib/wasm/__tests__/wasmSpanBuffer.test.ts +419 -63
  266. package/src/lib/wasm/__tests__/wasmTraceRoot.test.ts +24 -29
  267. package/src/lib/wasm/__tests__/wasmTracer.test.ts.disabled +2 -2
  268. package/src/lib/wasm/wasmAllocator.ts +131 -96
  269. package/src/lib/wasm/wasmPhysicalLayout.ts +309 -0
  270. package/src/lib/wasm/wasmSpanBuffer.ts +597 -341
  271. package/src/lib/wasm/wasmTraceRoot.ts +140 -78
  272. package/src/vocabulary/register/v1.ts +1 -0
  273. package/src/wasm.ts +19 -0
  274. package/src/lib/__tests__/remapped-buffer-view-integration.test.ts +0 -319
  275. package/src/lib/__tests__/remapped-buffer-view.test.ts +0 -635
  276. package/src/lib/wasm/allocator.zig +0 -948
@@ -7,9 +7,11 @@ import {
7
7
  } from '@smoothbricks/arrow-builder';
8
8
  import { convertToArrowTable, createSpanBuffer, ENTRY_TYPE_SPAN_START, S } from '@smoothbricks/lmao';
9
9
  import { defineOpContext } from '../../defineOpContext.js';
10
+ import { resolveMessage } from '../../resolveMessage.js';
10
11
  import { defineLogSchema } from '../../schema/defineLogSchema.js';
11
12
  import { ENTRY_TYPE_INFO } from '../../schema/systemSchema.js';
12
13
  import { TestTracer } from '../../tracers/TestTracer.js';
14
+ import { NO_NODE } from '../../traceTopology.js';
13
15
  import type { AnySpanBuffer } from '../../types.js';
14
16
  import { invokeWriterMethod, nextWriterRow, requireAnySpanBuffer } from '../arrow-test-helpers.js';
15
17
  import {
@@ -62,7 +64,7 @@ describe('Buffer Integration', () => {
62
64
  // Metadata
63
65
  expect(buf._capacity).toBe(capacity);
64
66
  expect(buf._writeIndex).toBe(0);
65
- expect(buf._children).toHaveLength(0);
67
+ expect(buf._traceRoot._topology.firstChild[buf._nodeIndex]).toBe(NO_NODE);
66
68
  });
67
69
 
68
70
  it('integrates schema definition with buffer creation', () => {
@@ -144,7 +146,11 @@ describe('Buffer Integration', () => {
144
146
 
145
147
  // Set required system columns
146
148
  buffer.timestamp[0] = 1000n;
147
- buffer.entry_type[0] = ENTRY_TYPE_SPAN_START;
149
+ {
150
+ const entryTypes = buffer.entry_type;
151
+ if (entryTypes === undefined) throw new Error('Expected split entry-type lane');
152
+ entryTypes[0] = ENTRY_TYPE_SPAN_START;
153
+ }
148
154
  buffer._writeIndex = 1;
149
155
 
150
156
  // Convert to Arrow table
@@ -188,7 +194,11 @@ describe('Buffer Integration', () => {
188
194
 
189
195
  // Set required system columns
190
196
  buffer.timestamp[0] = 1000n;
191
- buffer.entry_type[0] = ENTRY_TYPE_SPAN_START;
197
+ {
198
+ const entryTypes = buffer.entry_type;
199
+ if (entryTypes === undefined) throw new Error('Expected split entry-type lane');
200
+ entryTypes[0] = ENTRY_TYPE_SPAN_START;
201
+ }
192
202
  buffer._writeIndex = 1;
193
203
 
194
204
  // Convert to Arrow table
@@ -230,7 +240,11 @@ describe('Buffer Integration', () => {
230
240
 
231
241
  // Set required system columns
232
242
  buffer.timestamp[0] = 1000n;
233
- buffer.entry_type[0] = ENTRY_TYPE_SPAN_START;
243
+ {
244
+ const entryTypes = buffer.entry_type;
245
+ if (entryTypes === undefined) throw new Error('Expected split entry-type lane');
246
+ entryTypes[0] = ENTRY_TYPE_SPAN_START;
247
+ }
234
248
  buffer._writeIndex = 1;
235
249
 
236
250
  // Convert to Arrow table
@@ -300,7 +314,11 @@ describe('Buffer Integration', () => {
300
314
 
301
315
  // Set system columns
302
316
  buffer.timestamp[0] = 1000n;
303
- buffer.entry_type[0] = ENTRY_TYPE_INFO;
317
+ {
318
+ const entryTypes = buffer.entry_type;
319
+ if (entryTypes === undefined) throw new Error('Expected split entry-type lane');
320
+ entryTypes[0] = ENTRY_TYPE_INFO;
321
+ }
304
322
  buffer._writeIndex = 1;
305
323
 
306
324
  // Convert to Arrow using arrow-builder
@@ -332,12 +350,12 @@ describe('Buffer Integration', () => {
332
350
 
333
351
  // Verify buffer properly references schema via constructor
334
352
  expect(buffer._logSchema).toBe(schema);
335
- expect(buffer.message_values[0]).toBe('context-integration');
353
+ expect(resolveMessage(buffer, 0)).toBe('context-integration');
336
354
 
337
355
  // Verify system metadata columns are accessible
338
356
  expect(buffer.span_id).toBeGreaterThan(0);
339
357
  expect(typeof buffer._hasParent).toBe('boolean');
340
- expect(buffer._children).toBeInstanceOf(Array);
358
+ expect(buffer._traceRoot._topology.buffers[buffer._nodeIndex]).toBe(buffer);
341
359
  expect(buffer._writeIndex).toBe(0);
342
360
  expect(buffer._capacity).toBe(DEFAULT_BUFFER_CAPACITY);
343
361
  });
@@ -3,7 +3,7 @@ import { createColumnBuffer } from '@smoothbricks/arrow-builder';
3
3
  import { createTagWriter, S } from '@smoothbricks/lmao';
4
4
  import { createSpanBuffer } from '../../spanBuffer.js';
5
5
 
6
- import { createTestOpMetadata, createTestSchema, createTestTraceRoot } from '../test-helpers.js';
6
+ import { createTestOpMetadata, createTestSchema, createTestSpanContext, createTestTraceRoot } from '../test-helpers.js';
7
7
 
8
8
  /**
9
9
  * Tests for lazy column initialization
@@ -331,6 +331,7 @@ describe('SpanBuffer Lazy Column Allocation', () => {
331
331
  });
332
332
 
333
333
  const buffer = createSpanBuffer(schema, createTestTraceRoot('test-trace'), createTestOpMetadata(), 8);
334
+ const context = createTestSpanContext(schema, buffer);
334
335
 
335
336
  // Lazy columns should be undefined before TagWriter access
336
337
  expect(buffer.getColumnIfAllocated('userId')).toBeUndefined();
@@ -339,7 +340,7 @@ describe('SpanBuffer Lazy Column Allocation', () => {
339
340
  expect(buffer.getColumnIfAllocated('operation')).toBeUndefined();
340
341
 
341
342
  // Create TagWriter and write to one column (createTagWriter expects LogSchema instance)
342
- const tagWriter = createTagWriter(schema, buffer);
343
+ const tagWriter = createTagWriter(schema, context);
343
344
  tagWriter.userId('user-123');
344
345
 
345
346
  // After TagWriter write, the column should be allocated
@@ -1,15 +1,15 @@
1
1
  import { beforeEach, describe, expect, it } from 'bun:test';
2
2
  import { DEFAULT_BUFFER_CAPACITY } from '@smoothbricks/arrow-builder';
3
3
  import fc from 'fast-check';
4
- import { createSpanLogger } from '../codegen/spanLoggerGenerator.js';
5
4
  import { DEFAULT_METADATA } from '../opContext/defineOp.js';
5
+ import { resolveMessage } from '../resolveMessage.js';
6
6
  import { S } from '../schema/builder.js';
7
7
  import { LogSchema } from '../schema/LogSchema.js';
8
8
  import { mergeWithSystemSchema } from '../schema/systemSchema.js';
9
9
  import { createSpanBuffer, getSpanBufferClass, type SpanBufferConstructor } from '../spanBuffer.js';
10
10
 
11
- import type { AnySpanBuffer } from '../types.js';
12
- import { createBuffer, createTestTraceRoot } from './test-helpers.js';
11
+ import type { AnySpanBuffer, SpanBuffer } from '../types.js';
12
+ import { createBuffer, createTestSpanContext, createTestTraceRoot } from './test-helpers.js';
13
13
 
14
14
  /**
15
15
  * Property-based tests for buffer overflow handling.
@@ -41,6 +41,12 @@ const testSchema = new LogSchema(
41
41
  const RESERVED_ROWS = 2;
42
42
  const DB_OPERATIONS = ['SELECT', 'INSERT', 'UPDATE', 'DELETE'] as const;
43
43
 
44
+ function createLoggerContext(buffer: SpanBuffer<typeof testSchema>) {
45
+ const ctx = createTestSpanContext(testSchema, buffer);
46
+ ctx._buffer._writeIndex = RESERVED_ROWS;
47
+ return ctx;
48
+ }
49
+
44
50
  type BufferChainAnalysis = {
45
51
  bufferCount: number;
46
52
  totalEntries: number;
@@ -198,7 +204,7 @@ describe('Buffer Overflow Property Tests', () => {
198
204
  SpanBufferClass.stats.spansCreated = 0;
199
205
 
200
206
  const buffer = createBuffer(testSchema);
201
- const logger = createSpanLogger(testSchema, buffer);
207
+ const logger = createLoggerContext(buffer)._spanLogger;
202
208
 
203
209
  // Write entries
204
210
  for (let i = 0; i < numEntries; i++) {
@@ -235,7 +241,7 @@ describe('Buffer Overflow Property Tests', () => {
235
241
  SpanBufferClass.stats.spansCreated = 0;
236
242
 
237
243
  const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
238
- const logger = createSpanLogger(testSchema, buffer);
244
+ const logger = createLoggerContext(buffer)._spanLogger;
239
245
 
240
246
  // Write entries
241
247
  for (let i = 0; i < numEntries; i++) {
@@ -260,7 +266,7 @@ describe('Buffer Overflow Property Tests', () => {
260
266
  SpanBufferClass.stats.spansCreated = 0;
261
267
 
262
268
  const buffer = createBuffer(testSchema);
263
- const logger = createSpanLogger(testSchema, buffer);
269
+ const logger = createLoggerContext(buffer)._spanLogger;
264
270
 
265
271
  for (let i = 0; i < numEntries; i++) {
266
272
  logger.info(`msg-${i}`);
@@ -302,7 +308,7 @@ describe('Buffer Overflow Property Tests', () => {
302
308
  SpanBufferClass.stats.spansCreated = 0;
303
309
 
304
310
  const buffer = createBuffer(testSchema);
305
- const logger = createSpanLogger(testSchema, buffer);
311
+ const logger = createLoggerContext(buffer)._spanLogger;
306
312
 
307
313
  const operations = ['SELECT', 'INSERT', 'UPDATE', 'DELETE'] as const;
308
314
 
@@ -342,7 +348,7 @@ describe('Buffer Overflow Property Tests', () => {
342
348
  SpanBufferClass.stats.spansCreated = 0;
343
349
 
344
350
  const buffer = createBuffer(testSchema);
345
- const logger = createSpanLogger(testSchema, buffer);
351
+ const logger = createLoggerContext(buffer)._spanLogger;
346
352
 
347
353
  for (let i = 0; i < numEntries; i++) {
348
354
  logger.info(`msg-${i}`);
@@ -365,7 +371,7 @@ describe('Buffer Overflow Property Tests', () => {
365
371
  SpanBufferClass.stats.spansCreated = 0;
366
372
 
367
373
  const buffer = createBuffer(testSchema);
368
- const logger = createSpanLogger(testSchema, buffer);
374
+ const logger = createLoggerContext(buffer)._spanLogger;
369
375
 
370
376
  for (let i = 0; i < numEntries; i++) {
371
377
  logger.info(`msg-${i}`);
@@ -392,7 +398,7 @@ describe('Buffer Overflow Property Tests', () => {
392
398
  const usableCapacity = capacity - RESERVED_ROWS; // 6 entries fit
393
399
 
394
400
  const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
395
- const logger = createSpanLogger(testSchema, buffer);
401
+ const logger = createLoggerContext(buffer)._spanLogger;
396
402
 
397
403
  // Write exactly usable capacity entries (6 with capacity=8, reserved=2)
398
404
  for (let i = 0; i < usableCapacity; i++) {
@@ -411,7 +417,7 @@ describe('Buffer Overflow Property Tests', () => {
411
417
  const usableCapacity = capacity - RESERVED_ROWS; // 6
412
418
 
413
419
  const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
414
- const logger = createSpanLogger(testSchema, buffer);
420
+ const logger = createLoggerContext(buffer)._spanLogger;
415
421
 
416
422
  // Write usable capacity + 1 entries (7 entries)
417
423
  for (let i = 0; i < usableCapacity + 1; i++) {
@@ -431,7 +437,7 @@ describe('Buffer Overflow Property Tests', () => {
431
437
  it('zero entries: single buffer with just reserved space', () => {
432
438
  const buffer = createBuffer(testSchema);
433
439
  // Create logger but don't write anything
434
- createSpanLogger(testSchema, buffer);
440
+ createLoggerContext(buffer)._spanLogger;
435
441
 
436
442
  expect(buffer._overflow).toBeUndefined();
437
443
  // Logger constructor sets writeIndex to 2 (after reserved rows)
@@ -453,7 +459,7 @@ describe('Buffer Overflow Property Tests', () => {
453
459
  SpanBufferClass.stats.spansCreated = 0;
454
460
 
455
461
  const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
456
- const logger = createSpanLogger(testSchema, buffer);
462
+ const logger = createLoggerContext(buffer)._spanLogger;
457
463
 
458
464
  for (let i = 0; i < numEntries; i++) {
459
465
  logger.info(`msg-${i}`).requestId(`req-${i}`);
@@ -480,7 +486,7 @@ describe('Buffer Overflow Property Tests', () => {
480
486
  const usableCapacity = capacity - RESERVED_ROWS; // 6
481
487
 
482
488
  const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
483
- const logger = createSpanLogger(testSchema, buffer);
489
+ const logger = createLoggerContext(buffer)._spanLogger;
484
490
 
485
491
  // Set scope values that should be prefilled
486
492
  buffer._scopeValues = Object.freeze({
@@ -509,7 +515,7 @@ describe('Buffer Overflow Property Tests', () => {
509
515
  expect(overflowProbe._userId_values).toBeUndefined();
510
516
 
511
517
  // Row 0 has the actual entry (message IS allocated because .info() writes to it)
512
- expect(overflowBuffer.message_values[0]).toBe('msg-6');
518
+ expect(resolveMessage(overflowBuffer, 0)).toBe('msg-6');
513
519
  });
514
520
 
515
521
  it('should prefill scoped attributes across multiple overflow buffers', () => {
@@ -517,7 +523,7 @@ describe('Buffer Overflow Property Tests', () => {
517
523
  const usableCapacity = capacity - RESERVED_ROWS; // 6
518
524
 
519
525
  const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
520
- const logger = createSpanLogger(testSchema, buffer);
526
+ const logger = createLoggerContext(buffer)._spanLogger;
521
527
 
522
528
  buffer._scopeValues = Object.freeze({
523
529
  requestId: 'req-xyz',
@@ -548,7 +554,7 @@ describe('Buffer Overflow Property Tests', () => {
548
554
  const usableCapacity = capacity - RESERVED_ROWS; // 6
549
555
 
550
556
  const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
551
- const logger = createSpanLogger(testSchema, buffer);
557
+ const logger = createLoggerContext(buffer)._spanLogger;
552
558
 
553
559
  // Set scope for ONLY userId and requestId, NOT operation or duration or success
554
560
  buffer._scopeValues = Object.freeze({
@@ -579,7 +585,7 @@ describe('Buffer Overflow Property Tests', () => {
579
585
  const usableCapacity = capacity - RESERVED_ROWS;
580
586
 
581
587
  const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
582
- const logger = createSpanLogger(testSchema, buffer);
588
+ const logger = createLoggerContext(buffer)._spanLogger;
583
589
 
584
590
  // Set scope for userId but NEVER call .userId() directly
585
591
  buffer._scopeValues = Object.freeze({