@smoothbricks/lmao 0.2.2 → 0.3.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.
Files changed (285) hide show
  1. package/README.md +206 -206
  2. package/dist/allocator.wasm +0 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -0
  6. package/dist/lib/JsBufferStrategy.d.ts +4 -3
  7. package/dist/lib/JsBufferStrategy.d.ts.map +1 -1
  8. package/dist/lib/JsBufferStrategy.js +18 -11
  9. package/dist/lib/arrow/lease.d.ts +10 -0
  10. package/dist/lib/arrow/lease.d.ts.map +1 -0
  11. package/dist/lib/arrow/lease.js +33 -0
  12. package/dist/lib/arrow/utils.d.ts +3 -4
  13. package/dist/lib/arrow/utils.d.ts.map +1 -1
  14. package/dist/lib/arrow/utils.js +12 -13
  15. package/dist/lib/arrow/vocabularyDictionary.d.ts +21 -0
  16. package/dist/lib/arrow/vocabularyDictionary.d.ts.map +1 -0
  17. package/dist/lib/arrow/vocabularyDictionary.js +95 -0
  18. package/dist/lib/bufferStrategy.d.ts +3 -2
  19. package/dist/lib/bufferStrategy.d.ts.map +1 -1
  20. package/dist/lib/cloudflare/traceRows.d.ts.map +1 -1
  21. package/dist/lib/cloudflare/traceRows.js +3 -2
  22. package/dist/lib/codegen/evaluatorGenerator.d.ts.map +1 -1
  23. package/dist/lib/codegen/evaluatorGenerator.js +12 -11
  24. package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts +44 -82
  25. package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts.map +1 -1
  26. package/dist/lib/codegen/fixedPositionWriterGenerator.js +223 -162
  27. package/dist/lib/codegen/spanLoggerClosureMaterializer.d.ts +63 -0
  28. package/dist/lib/codegen/spanLoggerClosureMaterializer.d.ts.map +1 -0
  29. package/dist/lib/codegen/spanLoggerClosureMaterializer.js +447 -0
  30. package/dist/lib/codegen/spanLoggerGenerator.d.ts +36 -19
  31. package/dist/lib/codegen/spanLoggerGenerator.d.ts.map +1 -1
  32. package/dist/lib/codegen/spanLoggerGenerator.js +164 -158
  33. package/dist/lib/convertToArrow.d.ts +7 -2
  34. package/dist/lib/convertToArrow.d.ts.map +1 -1
  35. package/dist/lib/convertToArrow.js +499 -285
  36. package/dist/lib/defineOpContext.js +1 -1
  37. package/dist/lib/enumMetadata.d.ts +19 -0
  38. package/dist/lib/enumMetadata.d.ts.map +1 -0
  39. package/dist/lib/enumMetadata.js +86 -0
  40. package/dist/lib/flushScheduler.d.ts.map +1 -1
  41. package/dist/lib/flushScheduler.js +13 -4
  42. package/dist/lib/library.d.ts +16 -98
  43. package/dist/lib/library.d.ts.map +1 -1
  44. package/dist/lib/library.js +32 -525
  45. package/dist/lib/logBinding.d.ts +21 -27
  46. package/dist/lib/logBinding.d.ts.map +1 -1
  47. package/dist/lib/op.d.ts +30 -30
  48. package/dist/lib/op.d.ts.map +1 -1
  49. package/dist/lib/op.js +15 -22
  50. package/dist/lib/opContext/createOpGroup.d.ts +1 -1
  51. package/dist/lib/opContext/createOpGroup.d.ts.map +1 -1
  52. package/dist/lib/opContext/createOpGroup.js +22 -29
  53. package/dist/lib/opContext/defineOp.d.ts +4 -4
  54. package/dist/lib/opContext/defineOp.d.ts.map +1 -1
  55. package/dist/lib/opContext/defineOp.js +53 -10
  56. package/dist/lib/opContext/opGroupTypes.d.ts +2 -2
  57. package/dist/lib/opContext/opTypes.d.ts +1 -1
  58. package/dist/lib/opContext/opTypes.d.ts.map +1 -1
  59. package/dist/lib/opContext/spanContextTypes.d.ts +33 -18
  60. package/dist/lib/opContext/spanContextTypes.d.ts.map +1 -1
  61. package/dist/lib/opContext/types.d.ts +4 -4
  62. package/dist/lib/opContext/types.d.ts.map +1 -1
  63. package/dist/lib/physicalLayoutPlan.d.ts +89 -0
  64. package/dist/lib/physicalLayoutPlan.d.ts.map +1 -0
  65. package/dist/lib/physicalLayoutPlan.js +442 -0
  66. package/dist/lib/resolveMessage.d.ts +9 -0
  67. package/dist/lib/resolveMessage.d.ts.map +1 -0
  68. package/dist/lib/resolveMessage.js +63 -0
  69. package/dist/lib/result.d.ts +5 -7
  70. package/dist/lib/result.d.ts.map +1 -1
  71. package/dist/lib/result.js +19 -26
  72. package/dist/lib/runtimeHint.d.ts +35 -0
  73. package/dist/lib/runtimeHint.d.ts.map +1 -0
  74. package/dist/lib/runtimeHint.js +79 -0
  75. package/dist/lib/schema/typeGuards.d.ts +7 -47
  76. package/dist/lib/schema/typeGuards.d.ts.map +1 -1
  77. package/dist/lib/schema/typeGuards.js +7 -123
  78. package/dist/lib/schema/types.d.ts +1 -1
  79. package/dist/lib/schema/types.d.ts.map +1 -1
  80. package/dist/lib/span-buffer/aot/v1.d.ts +2 -0
  81. package/dist/lib/span-buffer/aot/v1.d.ts.map +1 -0
  82. package/dist/lib/span-buffer/aot/v1.js +24 -0
  83. package/dist/lib/spanBuffer.d.ts +33 -4
  84. package/dist/lib/spanBuffer.d.ts.map +1 -1
  85. package/dist/lib/spanBuffer.js +583 -91
  86. package/dist/lib/spanBufferStats.d.ts +1 -1
  87. package/dist/lib/spanBufferStats.d.ts.map +1 -1
  88. package/dist/lib/spanContext.d.ts +27 -51
  89. package/dist/lib/spanContext.d.ts.map +1 -1
  90. package/dist/lib/spanContext.js +822 -344
  91. package/dist/lib/sqlite/sqlite-common.d.ts.map +1 -1
  92. package/dist/lib/sqlite/sqlite-common.js +20 -21
  93. package/dist/lib/testing/bun-harness.d.ts +8 -3
  94. package/dist/lib/testing/bun-harness.d.ts.map +1 -1
  95. package/dist/lib/testing/bun-harness.js +30 -18
  96. package/dist/lib/testing/extractFacts.d.ts +1 -1
  97. package/dist/lib/testing/extractFacts.d.ts.map +1 -1
  98. package/dist/lib/testing/extractFacts.js +55 -63
  99. package/dist/lib/testing/facts.d.ts +1 -1
  100. package/dist/lib/testing/facts.d.ts.map +1 -1
  101. package/dist/lib/testing/queryable-span.d.ts +1 -1
  102. package/dist/lib/testing/queryable-span.d.ts.map +1 -1
  103. package/dist/lib/testing/queryable-span.js +26 -28
  104. package/dist/lib/testing/span-query.d.ts.map +1 -1
  105. package/dist/lib/testing/span-query.js +19 -22
  106. package/dist/lib/testing/stdio-replay.d.ts.map +1 -1
  107. package/dist/lib/testing/stdio-replay.js +19 -8
  108. package/dist/lib/threadId.d.ts.map +1 -1
  109. package/dist/lib/threadId.js +6 -3
  110. package/dist/lib/traceContext.d.ts.map +1 -1
  111. package/dist/lib/traceContext.js +1 -4
  112. package/dist/lib/traceRoot.d.ts +30 -8
  113. package/dist/lib/traceRoot.d.ts.map +1 -1
  114. package/dist/lib/traceRoot.es.d.ts +17 -15
  115. package/dist/lib/traceRoot.es.d.ts.map +1 -1
  116. package/dist/lib/traceRoot.es.js +68 -34
  117. package/dist/lib/traceRoot.js +11 -0
  118. package/dist/lib/traceRoot.node.d.ts +17 -19
  119. package/dist/lib/traceRoot.node.d.ts.map +1 -1
  120. package/dist/lib/traceRoot.node.js +66 -38
  121. package/dist/lib/traceTopology.d.ts +42 -0
  122. package/dist/lib/traceTopology.d.ts.map +1 -0
  123. package/dist/lib/traceTopology.js +260 -0
  124. package/dist/lib/tracer.d.ts +9 -5
  125. package/dist/lib/tracer.d.ts.map +1 -1
  126. package/dist/lib/tracer.js +65 -71
  127. package/dist/lib/tracers/ArrayQueueTracer.d.ts +1 -1
  128. package/dist/lib/tracers/ArrayQueueTracer.js +1 -1
  129. package/dist/lib/tracers/StdioTracer.d.ts.map +1 -1
  130. package/dist/lib/tracers/StdioTracer.js +15 -13
  131. package/dist/lib/tracers/TestTracer.d.ts +4 -6
  132. package/dist/lib/tracers/TestTracer.d.ts.map +1 -1
  133. package/dist/lib/tracers/TestTracer.js +6 -8
  134. package/dist/lib/types.d.ts +49 -32
  135. package/dist/lib/types.d.ts.map +1 -1
  136. package/dist/lib/vocabularyRegistry.d.ts +25 -0
  137. package/dist/lib/vocabularyRegistry.d.ts.map +1 -0
  138. package/dist/lib/vocabularyRegistry.js +372 -0
  139. package/dist/lib/wasm/WasmBufferStrategy.d.ts +6 -10
  140. package/dist/lib/wasm/WasmBufferStrategy.d.ts.map +1 -1
  141. package/dist/lib/wasm/WasmBufferStrategy.js +44 -37
  142. package/dist/lib/wasm/wasmAllocator.d.ts +27 -22
  143. package/dist/lib/wasm/wasmAllocator.d.ts.map +1 -1
  144. package/dist/lib/wasm/wasmAllocator.js +66 -44
  145. package/dist/lib/wasm/wasmPhysicalLayout.d.ts +67 -0
  146. package/dist/lib/wasm/wasmPhysicalLayout.d.ts.map +1 -0
  147. package/dist/lib/wasm/wasmPhysicalLayout.js +179 -0
  148. package/dist/lib/wasm/wasmSpanBuffer.d.ts +79 -31
  149. package/dist/lib/wasm/wasmSpanBuffer.d.ts.map +1 -1
  150. package/dist/lib/wasm/wasmSpanBuffer.js +442 -272
  151. package/dist/lib/wasm/wasmTraceRoot.d.ts +24 -22
  152. package/dist/lib/wasm/wasmTraceRoot.d.ts.map +1 -1
  153. package/dist/lib/wasm/wasmTraceRoot.js +110 -71
  154. package/dist/vocabulary/register/v1.d.ts +2 -0
  155. package/dist/vocabulary/register/v1.d.ts.map +1 -0
  156. package/dist/vocabulary/register/v1.js +1 -0
  157. package/dist/wasm.d.ts +5 -0
  158. package/dist/wasm.d.ts.map +1 -0
  159. package/dist/wasm.js +4 -0
  160. package/package.json +54 -6
  161. package/src/index.ts +1 -0
  162. package/src/lib/JsBufferStrategy.ts +27 -9
  163. package/src/lib/__tests__/arrow-builder-integration/arrow-conversion.test.ts +335 -37
  164. package/src/lib/__tests__/arrow-builder-integration/binary-arrow-conversion.test.ts +97 -26
  165. package/src/lib/__tests__/arrow-builder-integration/binary-comparison.test.ts +75 -15
  166. package/src/lib/__tests__/arrow-builder-integration/binary-format-compliance.test.ts +30 -6
  167. package/src/lib/__tests__/arrow-builder-integration/buffer-chaining.test.ts +18 -21
  168. package/src/lib/__tests__/arrow-builder-integration/foundation.test.ts +5 -2
  169. package/src/lib/__tests__/arrow-builder-integration/integration.test.ts +25 -7
  170. package/src/lib/__tests__/arrow-builder-integration/lazy-columns.test.ts +3 -2
  171. package/src/lib/__tests__/buffer-overflow.test.ts +24 -18
  172. package/src/lib/__tests__/capability-span-context.test.ts +505 -0
  173. package/src/lib/__tests__/capacity-tuning.test.ts +5 -3
  174. package/src/lib/__tests__/eager-columns.test.ts +345 -0
  175. package/src/lib/__tests__/enum-metadata-aot.test.ts +153 -0
  176. package/src/lib/__tests__/enum-metadata.test.ts +177 -0
  177. package/src/lib/__tests__/fixtures/empty-vocabulary-runtime.fixture.ts +15 -0
  178. package/src/lib/__tests__/flushScheduler.test.ts +5 -1
  179. package/src/lib/__tests__/identity-view.property.test.ts +179 -0
  180. package/src/lib/__tests__/library.test.ts +19 -235
  181. package/src/lib/__tests__/message-buffer-families.test.ts +878 -0
  182. package/src/lib/__tests__/nested-library-tasks.test.ts +14 -15
  183. package/src/lib/__tests__/op-metadata.test.ts +1 -1
  184. package/src/lib/__tests__/op-type-safety.test.ts +5 -16
  185. package/src/lib/__tests__/physical-layout-plan.test.ts +333 -0
  186. package/src/lib/__tests__/remap-descriptor-integration.test.ts +381 -0
  187. package/src/lib/__tests__/root-context-construction.test.ts +414 -0
  188. package/src/lib/__tests__/span-auto-runtime.test.ts +386 -0
  189. package/src/lib/__tests__/span-buffer-segment-stats.test.ts +221 -0
  190. package/src/lib/__tests__/span-lifecycle.test.ts +53 -25
  191. package/src/lib/__tests__/spanbuffer-materializer-parity.test.ts +266 -0
  192. package/src/lib/__tests__/sync-async-trace.test.ts +24 -23
  193. package/src/lib/__tests__/tag-writer-aot.test.ts +214 -0
  194. package/src/lib/__tests__/test-helpers.ts +67 -12
  195. package/src/lib/__tests__/threadId.test.ts +62 -0
  196. package/src/lib/__tests__/timestamp.test.ts +221 -93
  197. package/src/lib/__tests__/traceTopology.property.test.ts +383 -0
  198. package/src/lib/__tests__/type-narrowing.test.ts +63 -0
  199. package/src/lib/__tests__/vocabulary-dense-decoding.test.ts +405 -0
  200. package/src/lib/__tests__/vocabularyRegistry.test.ts +313 -0
  201. package/src/lib/arrow/lease.ts +43 -0
  202. package/src/lib/arrow/utils.ts +10 -14
  203. package/src/lib/arrow/vocabularyDictionary.ts +123 -0
  204. package/src/lib/bufferStrategy.ts +9 -1
  205. package/src/lib/cloudflare/traceRows.ts +3 -2
  206. package/src/lib/codegen/__tests__/evaluatorGenerator.test.ts +21 -141
  207. package/src/lib/codegen/__tests__/fixedPositionWriter-parity.test.ts +273 -0
  208. package/src/lib/codegen/__tests__/fixedPositionWriter-uint64.test.ts +61 -34
  209. package/src/lib/codegen/__tests__/nullBitmap.test.ts +33 -37
  210. package/src/lib/codegen/__tests__/spanLoggerGenerator.test.ts +34 -18
  211. package/src/lib/codegen/__tests__/spanLoggerMaterializerParity.test.ts +503 -0
  212. package/src/lib/codegen/evaluatorGenerator.ts +18 -13
  213. package/src/lib/codegen/fixedPositionWriterGenerator.ts +329 -245
  214. package/src/lib/codegen/spanLoggerClosureMaterializer.ts +598 -0
  215. package/src/lib/codegen/spanLoggerGenerator.ts +241 -177
  216. package/src/lib/convertToArrow.ts +598 -311
  217. package/src/lib/defineOpContext.ts +1 -1
  218. package/src/lib/enumMetadata.ts +121 -0
  219. package/src/lib/flushScheduler.ts +11 -5
  220. package/src/lib/library.ts +37 -595
  221. package/src/lib/logBinding.ts +21 -27
  222. package/src/lib/op.ts +75 -18
  223. package/src/lib/opContext/__tests__/retry.test.ts +27 -21
  224. package/src/lib/opContext/createOpGroup.ts +33 -31
  225. package/src/lib/opContext/defineOp.ts +88 -11
  226. package/src/lib/opContext/opGroupTypes.ts +2 -2
  227. package/src/lib/opContext/opTypes.ts +1 -1
  228. package/src/lib/opContext/spanContextTypes.ts +122 -24
  229. package/src/lib/opContext/types.ts +7 -3
  230. package/src/lib/physicalLayoutPlan.ts +598 -0
  231. package/src/lib/resolveMessage.ts +67 -0
  232. package/src/lib/result.ts +20 -33
  233. package/src/lib/runtimeHint.ts +98 -0
  234. package/src/lib/schema/__tests__/featureFlags.test.ts +2 -1
  235. package/src/lib/schema/builder.ts +1 -1
  236. package/src/lib/schema/typeGuards.ts +7 -151
  237. package/src/lib/schema/types.ts +1 -1
  238. package/src/lib/span-buffer/aot/v1.ts +26 -0
  239. package/src/lib/spanBuffer.ts +658 -92
  240. package/src/lib/spanBufferStats.ts +1 -1
  241. package/src/lib/spanContext.ts +1350 -861
  242. package/src/lib/sqlite/sqlite-common.ts +20 -31
  243. package/src/lib/testing/__tests__/topology-traversal.test.ts +174 -0
  244. package/src/lib/testing/__tests__/vitest-harness.test.ts +2 -1
  245. package/src/lib/testing/bun-harness.ts +94 -43
  246. package/src/lib/testing/extractFacts.ts +64 -78
  247. package/src/lib/testing/facts.ts +1 -1
  248. package/src/lib/testing/queryable-span.ts +23 -30
  249. package/src/lib/testing/span-query.ts +16 -20
  250. package/src/lib/testing/stdio-replay.ts +25 -8
  251. package/src/lib/testing/vitest-harness.ts +1 -1
  252. package/src/lib/threadId.ts +6 -3
  253. package/src/lib/traceContext.ts +1 -6
  254. package/src/lib/traceRoot.es.ts +77 -42
  255. package/src/lib/traceRoot.node.ts +75 -46
  256. package/src/lib/traceRoot.ts +41 -14
  257. package/src/lib/traceTopology.ts +279 -0
  258. package/src/lib/tracer.ts +109 -98
  259. package/src/lib/tracers/ArrayQueueTracer.ts +1 -1
  260. package/src/lib/tracers/StdioTracer.ts +15 -13
  261. package/src/lib/tracers/TestTracer.ts +6 -8
  262. package/src/lib/tracers/__tests__/ArrayQueueTracer.test.ts +15 -10
  263. package/src/lib/tracers/__tests__/CompositeTracer.test.ts +150 -0
  264. package/src/lib/tracers/__tests__/TestTracer.test.ts +23 -13
  265. package/src/lib/types.ts +64 -33
  266. package/src/lib/vocabularyRegistry.ts +439 -0
  267. package/src/lib/wasm/WasmBufferStrategy.ts +56 -48
  268. package/src/lib/wasm/__tests__/WasmBufferStrategy.test.ts +215 -11
  269. package/src/lib/wasm/__tests__/allocatorFreeBlockClamp.test.ts +86 -0
  270. package/src/lib/wasm/__tests__/wasm-identity-view.test.ts +311 -0
  271. package/src/lib/wasm/__tests__/wasm-integration.test.ts +417 -44
  272. package/src/lib/wasm/__tests__/wasm-message-buffer-families.test.ts +588 -0
  273. package/src/lib/wasm/__tests__/wasmAllocator.test.ts +100 -668
  274. package/src/lib/wasm/__tests__/wasmSpanBuffer.test.ts +419 -63
  275. package/src/lib/wasm/__tests__/wasmTraceRoot.test.ts +24 -29
  276. package/src/lib/wasm/__tests__/wasmTracer.test.ts.disabled +2 -2
  277. package/src/lib/wasm/wasmAllocator.ts +131 -96
  278. package/src/lib/wasm/wasmPhysicalLayout.ts +309 -0
  279. package/src/lib/wasm/wasmSpanBuffer.ts +597 -341
  280. package/src/lib/wasm/wasmTraceRoot.ts +140 -78
  281. package/src/vocabulary/register/v1.ts +1 -0
  282. package/src/wasm.ts +19 -0
  283. package/src/lib/__tests__/remapped-buffer-view-integration.test.ts +0 -319
  284. package/src/lib/__tests__/remapped-buffer-view.test.ts +0 -635
  285. package/src/lib/wasm/allocator.zig +0 -948
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACX,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAGpE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnF,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AAM3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,MAAM,WAAW,aAAc,SAAQ,eAAe;IAKpD;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAM/B;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAElC,+FAA+F;IAC/F,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAEjC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAEnC,uGAAuG;IACvG,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAEnC,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAEnC,oFAAoF;IACpF,QAAQ,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;IACrD,kFAAkF;IAClF,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;IACnD;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,8EAA8E;IAC9E,QAAQ,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;IAEvD,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IAErC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,WAAW,GAAG,IAAI,CAAC;IAM7C;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,8EAA8E;IAC9E,YAAY,EAAE,OAAO,CAAC;IAEtB,0GAA0G;IAC1G,kBAAkB,EAAE,MAAM,CAAC;IAM3B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAMlC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAE/B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpD,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,OAAO,iBAAiB,EAAE,eAAe,CAAC;IAE7D;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAMjC,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IAEnB,0EAA0E;IAC1E,mBAAmB,EAAE,MAAM,CAAC;IAE5B,gGAAgG;IAChG,OAAO,CAAC,EAAE,aAAa,CAAC;IAMxB;;;OAGG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;;;;;;OAOG;IACH,WAAW,EAAE,UAAU,CAAC;IAExB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAE/B;;;;;;;OAOG;IACH,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAOhD,0FAA0F;IAC1F,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAEjD;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,oBAAoB,EAAE,YAAY,CAAC;IAC5C,QAAQ,CAAC,mBAAmB,EAAE,UAAU,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,qBAAqB,EAAE,YAAY,CAAC;IAC7C,QAAQ,CAAC,oBAAoB,EAAE,UAAU,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,EAAE,cAAc,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,EAAE,UAAU,CAAC;IAMxC;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IAEjD;;;OAGG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IAE9C;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IAEpD;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IAEvD;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IAExD;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IAEzD;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IAElD;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IAMtD;;;;;;;;;;;;;OAaG;IACH,mBAAmB,IAAI,aAAa,CAAC;IAErC,mEAAmE;IACnE,UAAU,IAAI,IAAI,CAAC;IAEnB,yFAAyF;IACzF,eAAe,IAAI,IAAI,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;IAE1C;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;IAEzC;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvD;;;OAGG;IACH,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9D;AAOD,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GACzD,MAAM,GACN,CAAC,SAAS;IAAE,aAAa,EAAE,UAAU,GAAG,MAAM,CAAA;CAAE,GAC9C,MAAM,GACN,CAAC,SAAS;IAAE,aAAa,EAAE,QAAQ,CAAA;CAAE,GACnC,MAAM,GACN,CAAC,SAAS;IAAE,aAAa,EAAE,WAAW,CAAA;CAAE,GACtC,MAAM,GACN,CAAC,SAAS;IAAE,aAAa,EAAE,SAAS,CAAA;CAAE,GACpC,OAAO,GACP,CAAC,SAAS,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAC9D,CAAC,GACD,OAAO,CAAC;AAEtB,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GACzD,UAAU,GACV,CAAC,SAAS;IAAE,aAAa,EAAE,UAAU,GAAG,MAAM,CAAA;CAAE,GAC9C,MAAM,EAAE,GACR,CAAC,SAAS;IAAE,aAAa,EAAE,QAAQ,CAAA;CAAE,GACnC,YAAY,GACZ,CAAC,SAAS;IAAE,aAAa,EAAE,WAAW,CAAA;CAAE,GACtC,cAAc,GACd,CAAC,SAAS;IAAE,aAAa,EAAE,SAAS,CAAA;CAAE,GACpC,UAAU,GACV,CAAC,SAAS,gBAAgB,GAAG,iBAAiB,GAC5C,OAAO,EAAE,GACT,UAAU,GAAG,MAAM,EAAE,CAAC;AAEpC,KAAK,kBAAkB,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjF,CAAC;AAMF;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,IAAI,aAAa,GAAG;IAE5D,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAG1B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1B,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAGhD,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC1C,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAGzC,CAAC,GAAG,EAAE,GAAG,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;IACzE,CAAC,GAAG,EAAE,GAAG,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CAClD,GAAG;IAEF,QAAQ,EAAE,CAAC,IAAI,MAAM,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GACvE,KAAK,GACL,GAAG,CAAC,GAAG,MAAM,SAAS,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACjF,GAAG;IACF,QAAQ,EAAE,CAAC,IAAI,MAAM,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GACvE,KAAK,GACL,GAAG,CAAC,GAAG,MAAM,QAAQ,GAAG,UAAU;CACvC,GAAG;KAED,CAAC,IAAI,MAAM,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAC5C,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KACrD,UAAU,CAAC,CAAC,CAAC;CACnB,CAAC"}
@@ -0,0 +1,25 @@
1
+ export declare const REGISTER_VOCABULARY: unique symbol;
2
+ export interface VocabularyFragment {
3
+ readonly schemaVersion: 1;
4
+ readonly idAlgorithm: 'sha256-24-v1';
5
+ readonly contentHash: string;
6
+ readonly ids: Uint32Array;
7
+ readonly kindTags: Uint8Array;
8
+ readonly utf8: Uint8Array;
9
+ readonly offsets: Int32Array;
10
+ }
11
+ export type VocabularyBinding = Uint32Array;
12
+ export interface VocabularyGeneration {
13
+ readonly generation: number;
14
+ readonly ids: Uint32Array;
15
+ readonly kindTags: Uint8Array;
16
+ readonly records: Uint8Array;
17
+ readonly offsets: Int32Array;
18
+ }
19
+ export declare class VocabularyRegistrationError extends Error {
20
+ readonly name = "VocabularyRegistrationError";
21
+ }
22
+ export type RegisterVocabulary = (fragment: VocabularyFragment) => VocabularyBinding;
23
+ export declare const registerVocabularyFragment: RegisterVocabulary;
24
+ export declare function getVocabularyGeneration(): VocabularyGeneration;
25
+ //# sourceMappingURL=vocabularyRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocabularyRegistry.d.ts","sourceRoot":"","sources":["../../src/lib/vocabularyRegistry.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,eAA0D,CAAC;AAqB3F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAE5C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAuBD,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,SAAkB,IAAI,iCAAiC;CACxD;AA2VD,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,kBAAkB,KAAK,iBAAiB,CAAC;AAuBrF,eAAO,MAAM,0BAA0B,oBAAkC,CAAC;AAE1E,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D"}
@@ -0,0 +1,372 @@
1
+ export const REGISTER_VOCABULARY = Symbol.for('@smoothbricks/lmao/vocabulary/register/v1');
2
+ const VOCABULARY_STATE = Symbol.for('@smoothbricks/lmao/vocabulary/state/v1');
3
+ const SCHEMA_VERSION = 1;
4
+ const ID_ALGORITHM = 'sha256-24-v1';
5
+ const MAX_VOCABULARY_ID = 16777215;
6
+ const CONTENT_HASH_PATTERN = /^[0-9a-f]{64}$/;
7
+ const SHA256_INITIAL = new Uint32Array([
8
+ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,
9
+ ]);
10
+ const SHA256_ROUND = new Uint32Array([
11
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98,
12
+ 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
13
+ 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8,
14
+ 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
15
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,
16
+ 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
17
+ 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7,
18
+ 0xc67178f2,
19
+ ]);
20
+ export class VocabularyRegistrationError extends Error {
21
+ name = 'VocabularyRegistrationError';
22
+ }
23
+ const decoder = new TextDecoder('utf-8', { fatal: true });
24
+ const algorithmBytes = new TextEncoder().encode(ID_ALGORITHM);
25
+ function fail(code, detail) {
26
+ throw new VocabularyRegistrationError(`${code}: ${detail}`);
27
+ }
28
+ function rotateRight(value, count) {
29
+ return (value >>> count) | (value << (32 - count));
30
+ }
31
+ function sha256(input) {
32
+ const bitLength = input.length * 8;
33
+ const paddedLength = (input.length + 9 + 63) & ~63;
34
+ const padded = new Uint8Array(paddedLength);
35
+ padded.set(input);
36
+ padded[input.length] = 0x80;
37
+ const view = new DataView(padded.buffer);
38
+ view.setUint32(paddedLength - 8, Math.floor(bitLength / 4294967296), false);
39
+ view.setUint32(paddedLength - 4, bitLength >>> 0, false);
40
+ const hash = SHA256_INITIAL.slice();
41
+ const words = new Uint32Array(64);
42
+ for (let block = 0; block < paddedLength; block += 64) {
43
+ for (let index = 0; index < 16; index++)
44
+ words[index] = view.getUint32(block + index * 4, false);
45
+ for (let index = 16; index < 64; index++) {
46
+ const x = words[index - 15];
47
+ const y = words[index - 2];
48
+ const sigma0 = rotateRight(x, 7) ^ rotateRight(x, 18) ^ (x >>> 3);
49
+ const sigma1 = rotateRight(y, 17) ^ rotateRight(y, 19) ^ (y >>> 10);
50
+ words[index] = (words[index - 16] + sigma0 + words[index - 7] + sigma1) >>> 0;
51
+ }
52
+ let a = hash[0];
53
+ let b = hash[1];
54
+ let c = hash[2];
55
+ let d = hash[3];
56
+ let e = hash[4];
57
+ let f = hash[5];
58
+ let g = hash[6];
59
+ let h = hash[7];
60
+ for (let index = 0; index < 64; index++) {
61
+ const sum1 = rotateRight(e, 6) ^ rotateRight(e, 11) ^ rotateRight(e, 25);
62
+ const choose = (e & f) ^ (~e & g);
63
+ const temp1 = (h + sum1 + choose + SHA256_ROUND[index] + words[index]) >>> 0;
64
+ const sum0 = rotateRight(a, 2) ^ rotateRight(a, 13) ^ rotateRight(a, 22);
65
+ const majority = (a & b) ^ (a & c) ^ (b & c);
66
+ const temp2 = (sum0 + majority) >>> 0;
67
+ h = g;
68
+ g = f;
69
+ f = e;
70
+ e = (d + temp1) >>> 0;
71
+ d = c;
72
+ c = b;
73
+ b = a;
74
+ a = (temp1 + temp2) >>> 0;
75
+ }
76
+ hash[0] = (hash[0] + a) >>> 0;
77
+ hash[1] = (hash[1] + b) >>> 0;
78
+ hash[2] = (hash[2] + c) >>> 0;
79
+ hash[3] = (hash[3] + d) >>> 0;
80
+ hash[4] = (hash[4] + e) >>> 0;
81
+ hash[5] = (hash[5] + f) >>> 0;
82
+ hash[6] = (hash[6] + g) >>> 0;
83
+ hash[7] = (hash[7] + h) >>> 0;
84
+ }
85
+ const result = new Uint8Array(32);
86
+ const resultView = new DataView(result.buffer);
87
+ for (let index = 0; index < hash.length; index++)
88
+ resultView.setUint32(index * 4, hash[index], false);
89
+ return result;
90
+ }
91
+ function hex(bytes) {
92
+ let result = '';
93
+ for (const byte of bytes)
94
+ result += byte.toString(16).padStart(2, '0');
95
+ return result;
96
+ }
97
+ function equalBytes(left, right) {
98
+ if (left.constructor !== right.constructor || left.length !== right.length)
99
+ return false;
100
+ for (let index = 0; index < left.length; index++)
101
+ if (left[index] !== right[index])
102
+ return false;
103
+ return true;
104
+ }
105
+ function samePayload(registered, fragment) {
106
+ return (equalBytes(registered.ids, fragment.ids) &&
107
+ equalBytes(registered.kindTags, fragment.kindTags) &&
108
+ equalBytes(registered.utf8, fragment.utf8) &&
109
+ equalBytes(registered.offsets, fragment.offsets));
110
+ }
111
+ function recordAt(fragment, ordinal) {
112
+ return fragment.utf8.subarray(fragment.offsets[ordinal], fragment.offsets[ordinal + 1]);
113
+ }
114
+ function validateRecord(record, ordinal) {
115
+ const view = new DataView(record.buffer, record.byteOffset, record.byteLength);
116
+ if (record.length < 6)
117
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `record ${ordinal} is truncated`);
118
+ let offset = 0;
119
+ const textLength = view.getUint32(offset, true);
120
+ offset += 4;
121
+ if (textLength > record.length - offset - 2)
122
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `record ${ordinal} text is truncated`);
123
+ try {
124
+ decoder.decode(record.subarray(offset, offset + textLength));
125
+ }
126
+ catch {
127
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `record ${ordinal} text is not valid UTF-8`);
128
+ }
129
+ offset += textLength;
130
+ const fieldCount = view.getUint16(offset, true);
131
+ offset += 2;
132
+ for (let field = 0; field < fieldCount; field++) {
133
+ if (offset + 2 > record.length)
134
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `record ${ordinal} field ${field} name length is truncated`);
135
+ const nameLength = view.getUint16(offset, true);
136
+ offset += 2;
137
+ if (offset + nameLength + 2 > record.length)
138
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `record ${ordinal} field ${field} name is truncated`);
139
+ try {
140
+ decoder.decode(record.subarray(offset, offset + nameLength));
141
+ }
142
+ catch {
143
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `record ${ordinal} field ${field} name is not valid UTF-8`);
144
+ }
145
+ offset += nameLength;
146
+ const columnLength = view.getUint16(offset, true);
147
+ offset += 2;
148
+ if (offset + columnLength > record.length)
149
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `record ${ordinal} field ${field} column is truncated`);
150
+ try {
151
+ decoder.decode(record.subarray(offset, offset + columnLength));
152
+ }
153
+ catch {
154
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `record ${ordinal} field ${field} column is not valid UTF-8`);
155
+ }
156
+ offset += columnLength;
157
+ }
158
+ if (offset !== record.length)
159
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `record ${ordinal} has trailing bytes`);
160
+ }
161
+ function contentHash(fragment) {
162
+ const size = 1 +
163
+ 2 +
164
+ algorithmBytes.length +
165
+ 4 +
166
+ fragment.ids.length * 4 +
167
+ 4 +
168
+ fragment.kindTags.length +
169
+ 4 +
170
+ fragment.utf8.length +
171
+ 4 +
172
+ fragment.offsets.length * 4;
173
+ const bytes = new Uint8Array(size);
174
+ const view = new DataView(bytes.buffer);
175
+ let offset = 0;
176
+ bytes[offset++] = fragment.schemaVersion;
177
+ view.setUint16(offset, algorithmBytes.length, true);
178
+ offset += 2;
179
+ bytes.set(algorithmBytes, offset);
180
+ offset += algorithmBytes.length;
181
+ view.setUint32(offset, fragment.ids.length, true);
182
+ offset += 4;
183
+ for (const id of fragment.ids) {
184
+ view.setUint32(offset, id, true);
185
+ offset += 4;
186
+ }
187
+ view.setUint32(offset, fragment.kindTags.length, true);
188
+ offset += 4;
189
+ bytes.set(fragment.kindTags, offset);
190
+ offset += fragment.kindTags.length;
191
+ view.setUint32(offset, fragment.utf8.length, true);
192
+ offset += 4;
193
+ bytes.set(fragment.utf8, offset);
194
+ offset += fragment.utf8.length;
195
+ view.setUint32(offset, fragment.offsets.length, true);
196
+ offset += 4;
197
+ for (const boundary of fragment.offsets) {
198
+ view.setInt32(offset, boundary, true);
199
+ offset += 4;
200
+ }
201
+ return hex(sha256(bytes));
202
+ }
203
+ function createState() {
204
+ const initial = Object.freeze({
205
+ generation: 0,
206
+ ids: new Uint32Array(0),
207
+ kindTags: new Uint8Array(0),
208
+ records: new Uint8Array(0),
209
+ offsets: new Int32Array([0]),
210
+ });
211
+ return { entriesById: new Map(), fragmentsByHash: new Map(), generations: [initial], current: initial };
212
+ }
213
+ function globalState() {
214
+ const globals = globalThis;
215
+ let state = globals[VOCABULARY_STATE];
216
+ if (state === undefined) {
217
+ state = createState();
218
+ Object.defineProperty(globals, VOCABULARY_STATE, {
219
+ value: state,
220
+ configurable: false,
221
+ enumerable: false,
222
+ writable: false,
223
+ });
224
+ }
225
+ return state;
226
+ }
227
+ function validateFragmentStructure(fragment) {
228
+ if (fragment.schemaVersion !== SCHEMA_VERSION || fragment.idAlgorithm !== ID_ALGORITHM)
229
+ fail('LMAO_VOCABULARY_ABI_UNAVAILABLE', 'unsupported schema version or ID algorithm');
230
+ if (!CONTENT_HASH_PATTERN.test(fragment.contentHash))
231
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `invalid contentHash ${JSON.stringify(fragment.contentHash)}`);
232
+ if (!(fragment.ids instanceof Uint32Array) ||
233
+ !(fragment.kindTags instanceof Uint8Array) ||
234
+ !(fragment.utf8 instanceof Uint8Array) ||
235
+ !(fragment.offsets instanceof Int32Array))
236
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', 'fragment arrays use incorrect types');
237
+ if (fragment.kindTags.length !== fragment.ids.length || fragment.offsets.length !== fragment.ids.length + 1)
238
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', 'parallel lengths differ');
239
+ if (fragment.offsets[0] !== 0 || fragment.offsets[fragment.offsets.length - 1] !== fragment.utf8.length)
240
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', 'offsets do not cover bytes');
241
+ const localOrdinals = new Map();
242
+ for (let ordinal = 0; ordinal < fragment.ids.length; ordinal++) {
243
+ const id = fragment.ids[ordinal];
244
+ const kindTag = fragment.kindTags[ordinal];
245
+ if (id === 0 || id > MAX_VOCABULARY_ID)
246
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `stable ID ${id}`);
247
+ if (kindTag !== 1 && kindTag !== 2)
248
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `kind tag ${kindTag}`);
249
+ if (fragment.offsets[ordinal] > fragment.offsets[ordinal + 1])
250
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', 'offsets are not monotonic');
251
+ const record = recordAt(fragment, ordinal);
252
+ validateRecord(record, ordinal);
253
+ const idInput = new Uint8Array(record.length + 1);
254
+ idInput[0] = kindTag;
255
+ idInput.set(record, 1);
256
+ const digest = sha256(idInput);
257
+ const derivedId = (digest[0] << 16) | (digest[1] << 8) | digest[2];
258
+ if (id !== derivedId || id === 0)
259
+ fail('LMAO_VOCABULARY_FRAGMENT_INVALID', `stable ID ${id} does not match record ${ordinal}`);
260
+ const previousOrdinal = localOrdinals.get(id);
261
+ if (previousOrdinal !== undefined &&
262
+ (fragment.kindTags[previousOrdinal] !== kindTag || !equalBytes(recordAt(fragment, previousOrdinal), record))) {
263
+ fail('LMAO_VOCABULARY_ID_COLLISION', `stable ID ${id} within fragment`);
264
+ }
265
+ localOrdinals.set(id, ordinal);
266
+ }
267
+ }
268
+ function appendGeneration(state, ids, kindTags, records) {
269
+ if (ids.length === 0)
270
+ return;
271
+ const previous = state.current;
272
+ let byteLength = previous.records.length;
273
+ for (const record of records)
274
+ byteLength += record.length;
275
+ const generationIds = new Uint32Array(previous.ids.length + ids.length);
276
+ generationIds.set(previous.ids);
277
+ generationIds.set(ids, previous.ids.length);
278
+ const generationKinds = new Uint8Array(previous.kindTags.length + kindTags.length);
279
+ generationKinds.set(previous.kindTags);
280
+ generationKinds.set(kindTags, previous.kindTags.length);
281
+ const generationRecords = new Uint8Array(byteLength);
282
+ generationRecords.set(previous.records);
283
+ const generationOffsets = new Int32Array(generationIds.length + 1);
284
+ generationOffsets.set(previous.offsets);
285
+ let byteOffset = previous.records.length;
286
+ for (let index = 0; index < records.length; index++) {
287
+ generationRecords.set(records[index], byteOffset);
288
+ byteOffset += records[index].length;
289
+ generationOffsets[previous.ids.length + index + 1] = byteOffset;
290
+ }
291
+ const generation = Object.freeze({
292
+ generation: previous.generation + 1,
293
+ ids: generationIds,
294
+ kindTags: generationKinds,
295
+ records: generationRecords,
296
+ offsets: generationOffsets,
297
+ });
298
+ state.generations.push(generation);
299
+ state.current = generation;
300
+ }
301
+ function registerVocabulary(fragment) {
302
+ validateFragmentStructure(fragment);
303
+ const state = globalState();
304
+ const sameHash = state.fragmentsByHash.get(fragment.contentHash);
305
+ if (sameHash !== undefined) {
306
+ if (!samePayload(sameHash, fragment))
307
+ fail('LMAO_VOCABULARY_CONTENT_HASH_COLLISION', fragment.contentHash);
308
+ return sameHash.binding;
309
+ }
310
+ if (contentHash(fragment) !== fragment.contentHash) {
311
+ fail('LMAO_VOCABULARY_CONTENT_HASH_MISMATCH', fragment.contentHash);
312
+ }
313
+ for (let ordinal = 0; ordinal < fragment.ids.length; ordinal++) {
314
+ const existing = state.entriesById.get(fragment.ids[ordinal]);
315
+ if (existing !== undefined &&
316
+ (existing.kindTag !== fragment.kindTags[ordinal] || !equalBytes(existing.record, recordAt(fragment, ordinal))))
317
+ fail('LMAO_VOCABULARY_ID_COLLISION', `stable ID ${fragment.ids[ordinal]}`);
318
+ }
319
+ const binding = new Uint32Array(fragment.ids.length);
320
+ const appendedIds = [];
321
+ const appendedKinds = [];
322
+ const appendedRecords = [];
323
+ for (let ordinal = 0; ordinal < fragment.ids.length; ordinal++) {
324
+ const id = fragment.ids[ordinal];
325
+ let existing = state.entriesById.get(id);
326
+ if (existing === undefined) {
327
+ const record = recordAt(fragment, ordinal).slice();
328
+ existing = {
329
+ kindTag: fragment.kindTags[ordinal],
330
+ record,
331
+ denseIndex: state.current.ids.length + appendedIds.length,
332
+ };
333
+ state.entriesById.set(id, existing);
334
+ appendedIds.push(id);
335
+ appendedKinds.push(existing.kindTag);
336
+ appendedRecords.push(record);
337
+ }
338
+ binding[ordinal] = existing.denseIndex;
339
+ }
340
+ appendGeneration(state, appendedIds, appendedKinds, appendedRecords);
341
+ state.fragmentsByHash.set(fragment.contentHash, {
342
+ ids: fragment.ids.slice(),
343
+ kindTags: fragment.kindTags.slice(),
344
+ utf8: fragment.utf8.slice(),
345
+ offsets: fragment.offsets.slice(),
346
+ binding,
347
+ });
348
+ return binding;
349
+ }
350
+ function isRegisterVocabulary(value) {
351
+ return typeof value === 'function';
352
+ }
353
+ function installVocabularyRegistration() {
354
+ const globals = globalThis;
355
+ const installed = globals[REGISTER_VOCABULARY];
356
+ if (installed !== undefined) {
357
+ if (!isRegisterVocabulary(installed))
358
+ fail('LMAO_VOCABULARY_ABI_UNAVAILABLE', 'global symbol contains a non-function');
359
+ return installed;
360
+ }
361
+ Object.defineProperty(globals, REGISTER_VOCABULARY, {
362
+ value: registerVocabulary,
363
+ configurable: false,
364
+ enumerable: false,
365
+ writable: false,
366
+ });
367
+ return registerVocabulary;
368
+ }
369
+ export const registerVocabularyFragment = installVocabularyRegistration();
370
+ export function getVocabularyGeneration() {
371
+ return globalState().current;
372
+ }
@@ -16,6 +16,7 @@ import type { Table } from '@uwdata/flechette';
16
16
  import type { BufferStrategy } from '../bufferStrategy.js';
17
17
  import type { OpMetadata } from '../opContext/opTypes.js';
18
18
  import type { LogSchema } from '../schema/LogSchema.js';
19
+ import { type SpanBufferConstructor } from '../spanBuffer.js';
19
20
  import type { ITraceRoot } from '../traceRoot.js';
20
21
  import type { AnySpanBuffer, SpanBuffer } from '../types.js';
21
22
  import { type WasmAllocator, type WasmAllocatorOptions } from './wasmAllocator.js';
@@ -52,6 +53,7 @@ export declare class WasmBufferStrategy<T extends LogSchema = LogSchema> impleme
52
53
  * Shared across all buffers created by this strategy.
53
54
  */
54
55
  readonly allocator: WasmAllocator;
56
+ private readonly liveRoots;
55
57
  /**
56
58
  * Private constructor - use static create() method.
57
59
  */
@@ -65,19 +67,13 @@ export declare class WasmBufferStrategy<T extends LogSchema = LogSchema> impleme
65
67
  * @returns Promise<WasmBufferStrategy>
66
68
  */
67
69
  static create<T extends LogSchema = LogSchema>(options?: WasmBufferStrategyOptions): Promise<WasmBufferStrategy<T>>;
68
- createSpanBuffer(schema: T, traceRoot: ITraceRoot, opMetadata: OpMetadata, capacity?: number): SpanBuffer<T>;
69
- createChildSpanBuffer(parentBuffer: SpanBuffer<T>, callsiteMetadata: OpMetadata, opMetadata: OpMetadata, capacity?: number, schema?: T): SpanBuffer<T>;
70
+ createSpanBuffer(schema: T, traceRoot: ITraceRoot<T>, opMetadata: OpMetadata, capacity?: number, plannedClass?: SpanBufferConstructor<T>): SpanBuffer<T>;
71
+ createChildSpanBuffer(parentBuffer: SpanBuffer<T>, callsiteMetadata: OpMetadata, opMetadata: OpMetadata, capacity?: number, schema?: T, plannedClass?: SpanBufferConstructor<T>): SpanBuffer<T>;
70
72
  createOverflowBuffer(buffer: SpanBuffer<T>): SpanBuffer<T>;
71
73
  toArrowTable(buffer: AnySpanBuffer): Table;
72
74
  releaseBuffer(buffer: AnySpanBuffer): void;
73
- /**
74
- * Recursively free all WASM memory for a span tree.
75
- */
76
- private freeSpanTree;
77
- /**
78
- * Reset the allocator (for testing/benchmarking).
79
- * WARNING: This invalidates ALL buffers created by this strategy.
80
- */
75
+ private invalidateSpanTree;
76
+ /** Reset invalidates every live handle before allocator offsets are reused. */
81
77
  reset(): void;
82
78
  /**
83
79
  * Get allocator statistics for debugging/monitoring.
@@ -1 +1 @@
1
- {"version":3,"file":"WasmBufferStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/wasm/WasmBufferStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAmBxG;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACrE,mEAAmE;IACnE,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IAC3F;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAElC;;OAEG;IACH,OAAO,eAEN;IAED;;;;;;;OAOG;IACH,OAAa,MAAM,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACjD,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAGhC;IAED,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAsB3G;IAED,qBAAqB,CACnB,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,EAC3B,gBAAgB,EAAE,UAAU,EAC5B,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,GACT,UAAU,CAAC,CAAC,CAAC,CAwBf;IAED,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAYzD;IAED,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAGzC;IAED,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAGzC;IAED;;OAEG;IACH,OAAO,CAAC,YAAY;IAmBpB;;;OAGG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED;;OAEG;IACH,QAAQ,IAAI,kBAAkB,CAO7B;CACF"}
1
+ {"version":3,"file":"WasmBufferStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/wasm/WasmBufferStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAe,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAkBxG;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACrE,mEAAmE;IACnE,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAkB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IAC3F;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAElE;;OAEG;IACH,OAAO,eAEN;IAED;;;;;;;OAOG;IACH,OAAa,MAAM,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACjD,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAGhC;IAED,gBAAgB,CACd,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EACxB,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACtC,UAAU,CAAC,CAAC,CAAC,CAsBf;IAED,qBAAqB,CACnB,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,EAC3B,gBAAgB,EAAE,UAAU,EAC5B,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,EACV,YAAY,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACtC,UAAU,CAAC,CAAC,CAAC,CA0Bf;IAED,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAYzD;IAED,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAGzC;IAED,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAYzC;IAED,OAAO,CAAC,kBAAkB;IAQ1B,+EAA+E;IAC/E,KAAK,IAAI,IAAI,CAQZ;IAED;;OAEG;IACH,QAAQ,IAAI,kBAAkB,CAO7B;CACF"}
@@ -14,14 +14,15 @@
14
14
  */
15
15
  import { convertSpanTreeToArrowTable } from '../convertToArrow.js';
16
16
  import { EMPTY_SCOPE } from '../spanBuffer.js';
17
+ import { walkSpanTree } from '../traceTopology.js';
17
18
  import { createWasmAllocator } from './wasmAllocator.js';
18
19
  import { createWasmChildSpanBuffer, createWasmOverflowBuffer, createWasmSpanBuffer, isWasmSpanBufferInstance, } from './wasmSpanBuffer.js';
20
+ import { WasmTraceRoot } from './wasmTraceRoot.js';
19
21
  // Spec link (88): realizes specs/lmao/01q_wasm_memory_architecture.md#smoo/lmao!n/wasm-mem (OpContext integration + trace completion).
20
22
  //#region smoo/lmao!n/wasm-mem.strategy
21
23
  function requireWasmSpanBuffer(buffer) {
22
- if (!isWasmSpanBufferInstance(buffer)) {
24
+ if (!isWasmSpanBufferInstance(buffer))
23
25
  throw new Error('Expected WASM-backed span buffer');
24
- }
25
26
  return buffer;
26
27
  }
27
28
  /**
@@ -44,6 +45,7 @@ export class WasmBufferStrategy {
44
45
  * Shared across all buffers created by this strategy.
45
46
  */
46
47
  allocator;
48
+ liveRoots = new Set();
47
49
  /**
48
50
  * Private constructor - use static create() method.
49
51
  */
@@ -62,39 +64,42 @@ export class WasmBufferStrategy {
62
64
  const allocator = options?.allocator ?? (await createWasmAllocator(options));
63
65
  return new WasmBufferStrategy(allocator);
64
66
  }
65
- createSpanBuffer(schema, traceRoot, opMetadata, capacity) {
67
+ createSpanBuffer(schema, traceRoot, opMetadata, capacity, plannedClass) {
66
68
  const effectiveCapacity = capacity ?? this.allocator.capacity;
69
+ const messageLayoutFamily = plannedClass?.messageLayoutFamily ?? 'mixed';
70
+ const messagePhysicalLayout = plannedClass?.messagePhysicalLayout ?? 'current';
67
71
  // Create WASM buffer
68
72
  const wasmBuffer = createWasmSpanBuffer(schema, {
69
73
  allocator: this.allocator,
70
74
  capacity: effectiveCapacity,
71
- trace_id: traceRoot.trace_id,
72
- // thread_id and span_id come from WASM (global header and allocator respectively)
73
- thread_id: 0n, // Will be read from WASM header
74
- span_id: 0, // Will be assigned by WASM allocator
75
+ messageLayoutFamily,
76
+ messagePhysicalLayout,
75
77
  }, traceRoot, // _traceRoot
76
78
  EMPTY_SCOPE, // _scopeValues
77
79
  opMetadata, // _opMetadata
78
80
  opMetadata);
79
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- generated WASM buffers implement the SpanBuffer contract for the same schema.
81
+ traceRoot._topology.registerRoot(wasmBuffer);
82
+ this.liveRoots.add(wasmBuffer);
80
83
  return wasmBuffer;
81
84
  }
82
- createChildSpanBuffer(parentBuffer, callsiteMetadata, opMetadata, capacity, schema) {
85
+ createChildSpanBuffer(parentBuffer, callsiteMetadata, opMetadata, capacity, schema, plannedClass) {
83
86
  const wasmParent = requireWasmSpanBuffer(parentBuffer);
84
87
  const effectiveCapacity = capacity ?? wasmParent._capacity;
85
88
  // Use provided schema (for cross-library calls) or parent's schema
86
89
  const childSchema = schema ?? parentBuffer._logSchema;
90
+ const messageLayoutFamily = plannedClass?.messageLayoutFamily ?? wasmParent._messageLayoutFamily;
91
+ const messagePhysicalLayout = plannedClass?.messagePhysicalLayout ?? wasmParent._messagePhysicalLayout;
87
92
  const child = createWasmChildSpanBuffer(wasmParent, {
88
93
  allocator: this.allocator,
89
94
  capacity: effectiveCapacity,
90
- thread_id: 0n, // Will be read from WASM header
91
- span_id: 0, // Will be assigned by WASM allocator
92
95
  schema: childSchema, // Pass schema for correct buffer class
96
+ messageLayoutFamily,
97
+ messagePhysicalLayout,
93
98
  }, parentBuffer._traceRoot, // _traceRoot (inherit from parent)
94
99
  parentBuffer._scopeValues, // _scopeValues (inherit from parent)
95
100
  opMetadata, // _opMetadata
96
101
  callsiteMetadata);
97
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- child buffers preserve the requested schema contract.
102
+ parentBuffer._traceRoot._topology.registerChild(parentBuffer, child);
98
103
  return child;
99
104
  }
100
105
  createOverflowBuffer(buffer) {
@@ -103,7 +108,7 @@ export class WasmBufferStrategy {
103
108
  buffer._scopeValues, // _scopeValues (same as original)
104
109
  buffer._opMetadata, // _opMetadata (same as original)
105
110
  buffer._callsiteMetadata ?? buffer._opMetadata);
106
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- overflow buffers are schema-compatible continuations of the same span.
111
+ buffer._traceRoot._topology.adoptOverflow(buffer, overflow);
107
112
  return overflow;
108
113
  }
109
114
  toArrowTable(buffer) {
@@ -111,33 +116,35 @@ export class WasmBufferStrategy {
111
116
  return convertSpanTreeToArrowTable(buffer);
112
117
  }
113
118
  releaseBuffer(buffer) {
114
- // Walk the span tree and free all WASM memory
115
- this.freeSpanTree(requireWasmSpanBuffer(buffer));
116
- }
117
- /**
118
- * Recursively free all WASM memory for a span tree.
119
- */
120
- freeSpanTree(buffer) {
121
- // Free children first (depth-first)
122
- if (buffer._children) {
123
- for (const child of buffer._children) {
124
- this.freeSpanTree(child);
119
+ const root = requireWasmSpanBuffer(buffer);
120
+ const segments = [];
121
+ walkSpanTree(root, (segment) => segments.push(requireWasmSpanBuffer(segment)));
122
+ const topology = root._traceRoot._topology;
123
+ topology.release(() => {
124
+ for (const segment of segments)
125
+ segment.free();
126
+ if (root._descriptor.kind === 'root' && root._traceRoot instanceof WasmTraceRoot) {
127
+ root._traceRoot.free();
125
128
  }
126
- }
127
- // Free overflow chain
128
- if (buffer._overflow) {
129
- this.freeSpanTree(buffer._overflow);
130
- }
131
- // Free this buffer's WASM memory
132
- if (typeof buffer.free === 'function') {
133
- buffer.free();
134
- }
129
+ });
130
+ this.liveRoots.delete(root);
135
131
  }
136
- /**
137
- * Reset the allocator (for testing/benchmarking).
138
- * WARNING: This invalidates ALL buffers created by this strategy.
139
- */
132
+ invalidateSpanTree(buffer) {
133
+ walkSpanTree(buffer, (segment) => {
134
+ const wasmSegment = requireWasmSpanBuffer(segment);
135
+ wasmSegment._columnPtrs.fill(-1);
136
+ wasmSegment._descriptor.state = 'freed';
137
+ });
138
+ }
139
+ /** Reset invalidates every live handle before allocator offsets are reused. */
140
140
  reset() {
141
+ for (const root of this.liveRoots) {
142
+ this.invalidateSpanTree(root);
143
+ if (root._traceRoot instanceof WasmTraceRoot)
144
+ root._traceRoot.invalidate();
145
+ root._traceRoot._topology.release();
146
+ }
147
+ this.liveRoots.clear();
141
148
  this.allocator.reset();
142
149
  }
143
150
  /**