@smoothbricks/lmao 0.2.1 → 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
Binary file
package/dist/index.d.ts CHANGED
@@ -20,6 +20,7 @@ export type { BaseSpanLogger, SpanLoggerImpl } from './lib/codegen/spanLoggerGen
20
20
  export { createSpanLogger, createSpanLoggerClass } from './lib/codegen/spanLoggerGenerator.js';
21
21
  export * from './lib/convertToArrow.js';
22
22
  export * from './lib/spanBuffer.js';
23
+ export * from './lib/traceTopology.js';
23
24
  export * from './lib/types.js';
24
25
  export * from './lib/flushScheduler.js';
25
26
  export type { BufferStrategy } from './lib/bufferStrategy.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -48,6 +48,7 @@ export { createSpanLogger, createSpanLoggerClass } from './lib/codegen/spanLogge
48
48
  // =============================================================================
49
49
  export * from './lib/convertToArrow.js';
50
50
  export * from './lib/spanBuffer.js';
51
+ export * from './lib/traceTopology.js';
51
52
  export * from './lib/types.js';
52
53
  // =============================================================================
53
54
  // Flush Scheduler
@@ -14,6 +14,7 @@ import type { Table } from '@uwdata/flechette';
14
14
  import type { BufferStrategy } from './bufferStrategy.js';
15
15
  import type { OpMetadata } from './opContext/opTypes.js';
16
16
  import type { LogSchema } from './schema/LogSchema.js';
17
+ import { type SpanBufferConstructor } from './spanBuffer.js';
17
18
  import type { ITraceRoot } from './traceRoot.js';
18
19
  import type { AnySpanBuffer, SpanBuffer } from './types.js';
19
20
  /**
@@ -40,10 +41,10 @@ export declare class JsBufferStrategy<T extends LogSchema = LogSchema> implement
40
41
  * Get or create SpanBuffer class for a schema.
41
42
  */
42
43
  private getSpanBufferClassForSchema;
43
- createSpanBuffer(schema: T, traceRoot: ITraceRoot, opMetadata: OpMetadata, capacity?: number): SpanBuffer<T>;
44
- createChildSpanBuffer(parentBuffer: SpanBuffer<T>, callsiteMetadata: OpMetadata, opMetadata: OpMetadata, capacity?: number, schema?: T): SpanBuffer<T>;
44
+ createSpanBuffer(schema: T, traceRoot: ITraceRoot, opMetadata: OpMetadata, capacity?: number, plannedClass?: SpanBufferConstructor<T>): SpanBuffer<T>;
45
+ createChildSpanBuffer(parentBuffer: SpanBuffer<T>, callsiteMetadata: OpMetadata, opMetadata: OpMetadata, capacity?: number, schema?: T, plannedClass?: SpanBufferConstructor<T>): SpanBuffer<T>;
45
46
  createOverflowBuffer(buffer: SpanBuffer<T>): SpanBuffer<T>;
46
47
  toArrowTable(buffer: AnySpanBuffer): Table;
47
- releaseBuffer(_buffer: AnySpanBuffer): void;
48
+ releaseBuffer(buffer: AnySpanBuffer): void;
48
49
  }
49
50
  //# sourceMappingURL=JsBufferStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"JsBufferStrategy.d.ts","sourceRoot":"","sources":["../../src/lib/JsBufferStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS5D;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACzF;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAmD;IAE/E;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAYnC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAE3G;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,CAKf;IAED,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAEzD;IAED,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAGzC;IAED,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAG1C;CACF"}
1
+ {"version":3,"file":"JsBufferStrategy.d.ts","sourceRoot":"","sources":["../../src/lib/JsBufferStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS5D;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACzF;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAmD;IAE/E;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAYnC,gBAAgB,CACd,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACtC,UAAU,CAAC,CAAC,CAAC,CAEf;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,CAgBf;IAED,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAEzD;IAED,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAGzC;IAED,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEzC;CACF"}
@@ -11,7 +11,7 @@
11
11
  * @module JsBufferStrategy
12
12
  */
13
13
  import { convertSpanTreeToArrowTable } from './convertToArrow.js';
14
- import { createChildSpanBuffer as createChildSpanBufferImpl, createOverflowBuffer as createOverflowBufferImpl, createSpanBuffer as createSpanBufferImpl, getSpanBufferClass, } from './spanBuffer.js';
14
+ import { createChildSpanBuffer as createChildSpanBufferImpl, createOverflowBuffer as createOverflowBufferImpl, createSpanBuffer as createSpanBufferImpl, getSpanBufferClass, resolveSpanBufferCapacity, } from './spanBuffer.js';
15
15
  function isSpanBufferConstructorForSchema(ctor, schema) {
16
16
  return ctor !== undefined && ctor.schema === schema;
17
17
  }
@@ -49,14 +49,22 @@ export class JsBufferStrategy {
49
49
  }
50
50
  return cached;
51
51
  }
52
- createSpanBuffer(schema, traceRoot, opMetadata, capacity) {
53
- return createSpanBufferImpl(schema, traceRoot, opMetadata, capacity);
52
+ createSpanBuffer(schema, traceRoot, opMetadata, capacity, plannedClass) {
53
+ return createSpanBufferImpl(schema, traceRoot, opMetadata, capacity, plannedClass);
54
54
  }
55
- createChildSpanBuffer(parentBuffer, callsiteMetadata, opMetadata, capacity, schema) {
56
- // Use provided schema (for cross-library calls) or parent's schema
57
- const childSchema = schema ?? parentBuffer._logSchema;
58
- const SpanBufferClass = this.getSpanBufferClassForSchema(childSchema);
59
- return createChildSpanBufferImpl(parentBuffer, SpanBufferClass, callsiteMetadata, opMetadata, capacity);
55
+ createChildSpanBuffer(parentBuffer, callsiteMetadata, opMetadata, capacity, schema, plannedClass) {
56
+ const targetSchema = schema ?? parentBuffer._logSchema;
57
+ const metadataSpanBufferClass = opMetadata._physicalLayoutPlan?.SpanBufferClass;
58
+ if (metadataSpanBufferClass !== undefined &&
59
+ !isSpanBufferConstructorForSchema(metadataSpanBufferClass, targetSchema)) {
60
+ throw new TypeError('Planned SpanBuffer class does not match schema');
61
+ }
62
+ const plannedSpanBufferClass = plannedClass ?? metadataSpanBufferClass;
63
+ const SpanBufferClass = plannedSpanBufferClass ?? this.getSpanBufferClassForSchema(targetSchema);
64
+ const actualCapacity = plannedSpanBufferClass === undefined
65
+ ? resolveSpanBufferCapacity(capacity, SpanBufferClass.stats.capacity)
66
+ : capacity;
67
+ return createChildSpanBufferImpl(parentBuffer, SpanBufferClass, callsiteMetadata, opMetadata, actualCapacity);
60
68
  }
61
69
  createOverflowBuffer(buffer) {
62
70
  return createOverflowBufferImpl(buffer);
@@ -65,8 +73,7 @@ export class JsBufferStrategy {
65
73
  // Uses existing tree conversion with shared dictionaries
66
74
  return convertSpanTreeToArrowTable(buffer);
67
75
  }
68
- releaseBuffer(_buffer) {
69
- // No-op for JS strategy - GC handles memory
70
- // The buffer will be collected when no references remain
76
+ releaseBuffer(buffer) {
77
+ buffer._traceRoot._topology.release();
71
78
  }
72
79
  }
@@ -0,0 +1,10 @@
1
+ import type { Table } from '@uwdata/flechette';
2
+ export interface ArrowLease {
3
+ readonly table: Table;
4
+ readonly released: boolean;
5
+ release(): void;
6
+ [Symbol.dispose](): void;
7
+ }
8
+ /** Internal constructor for a lease over borrowed Arrow source chunks. */
9
+ export declare function createArrowLease(table: Table, pinned: readonly unknown[], releases: readonly (() => void)[]): ArrowLease;
10
+ //# sourceMappingURL=lease.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lease.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/lease.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC;IAChB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,SAAS,OAAO,EAAE,EAC1B,QAAQ,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,GAChC,UAAU,CA4BZ"}
@@ -0,0 +1,33 @@
1
+ /** Internal constructor for a lease over borrowed Arrow source chunks. */
2
+ export function createArrowLease(table, pinned, releases) {
3
+ let released = false;
4
+ // Retained by the closures for the full lease lifetime. Clearing this array on
5
+ // release makes the backing epochs and dictionary generation collectible.
6
+ const retained = [...pinned];
7
+ return Object.freeze({
8
+ table,
9
+ get released() {
10
+ return released;
11
+ },
12
+ release() {
13
+ if (released)
14
+ return;
15
+ released = true;
16
+ let failure;
17
+ for (let index = releases.length - 1; index >= 0; index--) {
18
+ try {
19
+ releases[index]();
20
+ }
21
+ catch (error) {
22
+ failure ??= error;
23
+ }
24
+ }
25
+ retained.length = 0;
26
+ if (failure !== undefined)
27
+ throw failure;
28
+ },
29
+ [Symbol.dispose]() {
30
+ this.release();
31
+ },
32
+ });
33
+ }
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Utility functions for Arrow conversion
3
3
  */
4
+ import { Column } from '@uwdata/flechette';
4
5
  import type { AnySpanBuffer } from '../types.js';
5
6
  type ConcatenatedNullBitmaps = {
6
7
  nullBitmap: Uint8Array | undefined;
@@ -26,13 +27,11 @@ export declare function concatenateFloat64Arrays(arrays: Float64Array[]): Float6
26
27
  * Concatenate null bitmaps from multiple buffers
27
28
  */
28
29
  export declare function concatenateNullBitmaps(buffers: AnySpanBuffer[], columnName: string): ConcatenatedNullBitmaps;
30
+ /** Combine Arrow-native batches by copying only batch references, never values. */
31
+ export declare function combineColumnChunks(chunks: readonly Column<unknown>[]): Column<unknown>;
29
32
  /**
30
33
  * Get Arrow field name from LMAO field name
31
34
  */
32
35
  export declare function getArrowFieldName(fieldName: string): string;
33
- /**
34
- * Walk a SpanBuffer tree (including overflow chains and children)
35
- */
36
- export declare function walkSpanTree(root: AnySpanBuffer, visitor: (buffer: AnySpanBuffer) => void): void;
37
36
  export {};
38
37
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,KAAK,uBAAuB,GAAG;IAAE,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAUxE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAQ3E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAWvE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAW7E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,uBAAuB,CA8B5G;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAShG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,KAAK,uBAAuB,GAAG;IAAE,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAUxE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAQ3E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAWvE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAW7E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,uBAAuB,CA8B5G;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAMvF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -2,6 +2,7 @@
2
2
  * Utility functions for Arrow conversion
3
3
  */
4
4
  import { copyBits, countNulls } from '@smoothbricks/arrow-builder';
5
+ import { Column } from '@uwdata/flechette';
5
6
  const UTF8_ENCODER = new TextEncoder();
6
7
  /**
7
8
  * Encode an array of strings into a single UTF-8 Uint8Array
@@ -91,22 +92,20 @@ export function concatenateNullBitmaps(buffers, columnName) {
91
92
  }
92
93
  return { nullBitmap, nullCount };
93
94
  }
95
+ /** Combine Arrow-native batches by copying only batch references, never values. */
96
+ export function combineColumnChunks(chunks) {
97
+ if (chunks.length === 0)
98
+ throw new Error('Cannot combine an empty Arrow chunk list');
99
+ if (chunks.length === 1)
100
+ return chunks[0];
101
+ const batches = [];
102
+ for (const chunk of chunks)
103
+ batches.push(...chunk.data);
104
+ return new Column(batches);
105
+ }
94
106
  /**
95
107
  * Get Arrow field name from LMAO field name
96
108
  */
97
109
  export function getArrowFieldName(fieldName) {
98
110
  return fieldName;
99
111
  }
100
- /**
101
- * Walk a SpanBuffer tree (including overflow chains and children)
102
- */
103
- export function walkSpanTree(root, visitor) {
104
- let current = root;
105
- while (current) {
106
- visitor(current);
107
- current = current._overflow;
108
- }
109
- for (const child of root._children) {
110
- walkSpanTree(child, visitor);
111
- }
112
- }
@@ -0,0 +1,21 @@
1
+ import { Column } from '@uwdata/flechette';
2
+ import type { VocabularyGeneration } from '../vocabularyRegistry.js';
3
+ export interface VocabularyDictionaryPrefix {
4
+ readonly column: Column<unknown>;
5
+ readonly length: number;
6
+ readonly valueToDenseIndex: ReadonlyMap<string, number>;
7
+ }
8
+ /**
9
+ * Return the immutable Arrow dictionary prefix for one pinned vocabulary generation.
10
+ * Record text is decoded and copied into Arrow UTF-8 buffers once per generation;
11
+ * every flush thereafter reuses the same column and backing buffers.
12
+ */
13
+ export declare function getVocabularyDictionaryPrefix(generation: VocabularyGeneration): VocabularyDictionaryPrefix;
14
+ /**
15
+ * Append one UTF-8 dictionary batch without copying the prefix buffers or
16
+ * scanning its cached strings. Flechette serializes later dictionary batches
17
+ * as Arrow dictionary deltas.
18
+ */
19
+ export declare function appendVocabularyDictionarySuffix(prefix: VocabularyDictionaryPrefix, suffix: Column<unknown>, suffixValues: readonly string[]): Column<unknown>;
20
+ export declare const PREBUILT_ENTRY_TYPE_DICTIONARY: Column<unknown>;
21
+ //# sourceMappingURL=vocabularyDictionary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocabularyDictionary.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/vocabularyDictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAyBrE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzD;AAID;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,oBAAoB,GAAG,0BAA0B,CAiD1G;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,0BAA0B,EAClC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EACvB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,CAAC,OAAO,CAAC,CAgBjB;AAED,eAAO,MAAM,8BAA8B,iBAI1C,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { Column, utf8 } from '@uwdata/flechette';
2
+ import { ENTRY_TYPE_NAMES } from '../schema/systemSchema.js';
3
+ import { makeArrowColumn } from './flechette.js';
4
+ const ENTRY_TYPE_UTF8 = new TextEncoder().encode(ENTRY_TYPE_NAMES.join(''));
5
+ const ENTRY_TYPE_OFFSETS = new Int32Array(ENTRY_TYPE_NAMES.length + 1);
6
+ for (let index = 0, offset = 0; index < ENTRY_TYPE_NAMES.length; index++) {
7
+ ENTRY_TYPE_OFFSETS[index] = offset;
8
+ offset += ENTRY_TYPE_NAMES[index].length;
9
+ ENTRY_TYPE_OFFSETS[index + 1] = offset;
10
+ }
11
+ function makeUtf8Dictionary(length, offsets, values) {
12
+ return makeArrowColumn({
13
+ type: utf8(),
14
+ length,
15
+ nullCount: 0,
16
+ offsets,
17
+ values,
18
+ });
19
+ }
20
+ const EMPTY_DICTIONARY_BYTES = new Uint8Array(0);
21
+ const EMPTY_DICTIONARY_OFFSETS = new Int32Array([0, 0]);
22
+ const decoder = new TextDecoder('utf-8', { fatal: true });
23
+ const vocabularyDictionaries = new WeakMap();
24
+ /**
25
+ * Return the immutable Arrow dictionary prefix for one pinned vocabulary generation.
26
+ * Record text is decoded and copied into Arrow UTF-8 buffers once per generation;
27
+ * every flush thereafter reuses the same column and backing buffers.
28
+ */
29
+ export function getVocabularyDictionaryPrefix(generation) {
30
+ const cached = vocabularyDictionaries.get(generation);
31
+ if (cached !== undefined)
32
+ return cached;
33
+ if (generation.ids.length === 0) {
34
+ const emptyPrefix = Object.freeze({
35
+ column: makeUtf8Dictionary(1, EMPTY_DICTIONARY_OFFSETS, EMPTY_DICTIONARY_BYTES),
36
+ length: 1,
37
+ valueToDenseIndex: new Map([['', 0]]),
38
+ });
39
+ emptyPrefix.column.cache();
40
+ vocabularyDictionaries.set(generation, emptyPrefix);
41
+ return emptyPrefix;
42
+ }
43
+ const count = generation.ids.length;
44
+ const offsets = new Int32Array(count + 1);
45
+ const textLengths = new Uint32Array(count);
46
+ let byteLength = 0;
47
+ for (let denseIndex = 0; denseIndex < count; denseIndex++) {
48
+ const recordOffset = generation.offsets[denseIndex];
49
+ const textLength = new DataView(generation.records.buffer, generation.records.byteOffset + recordOffset, 4).getUint32(0, true);
50
+ textLengths[denseIndex] = textLength;
51
+ byteLength += textLength;
52
+ offsets[denseIndex + 1] = byteLength;
53
+ }
54
+ const values = new Uint8Array(byteLength);
55
+ const valueToDenseIndex = new Map();
56
+ for (let denseIndex = 0; denseIndex < count; denseIndex++) {
57
+ const textStart = generation.offsets[denseIndex] + 4;
58
+ const text = generation.records.subarray(textStart, textStart + textLengths[denseIndex]);
59
+ values.set(text, offsets[denseIndex]);
60
+ const value = decoder.decode(text);
61
+ if (!valueToDenseIndex.has(value))
62
+ valueToDenseIndex.set(value, denseIndex);
63
+ }
64
+ const prefix = Object.freeze({
65
+ column: makeUtf8Dictionary(count, offsets, values),
66
+ length: count,
67
+ valueToDenseIndex,
68
+ });
69
+ prefix.column.cache();
70
+ vocabularyDictionaries.set(generation, prefix);
71
+ return prefix;
72
+ }
73
+ /**
74
+ * Append one UTF-8 dictionary batch without copying the prefix buffers or
75
+ * scanning its cached strings. Flechette serializes later dictionary batches
76
+ * as Arrow dictionary deltas.
77
+ */
78
+ export function appendVocabularyDictionarySuffix(prefix, suffix, suffixValues) {
79
+ const dictionary = new Column([...prefix.column.data, ...suffix.data]);
80
+ const prefixCache = prefix.column.cache();
81
+ const cacheTarget = new Array(prefix.length + suffixValues.length);
82
+ dictionary._cache = new Proxy(cacheTarget, {
83
+ get(target, property, receiver) {
84
+ if (typeof property === 'string') {
85
+ const index = Number(property);
86
+ if (Number.isInteger(index) && index >= 0 && index < target.length && String(index) === property) {
87
+ return index < prefix.length ? prefixCache[index] : suffixValues[index - prefix.length];
88
+ }
89
+ }
90
+ return Reflect.get(target, property, receiver);
91
+ },
92
+ });
93
+ return dictionary;
94
+ }
95
+ export const PREBUILT_ENTRY_TYPE_DICTIONARY = makeUtf8Dictionary(ENTRY_TYPE_NAMES.length, ENTRY_TYPE_OFFSETS, ENTRY_TYPE_UTF8);
@@ -20,6 +20,7 @@
20
20
  import type { Table } from '@uwdata/flechette';
21
21
  import type { OpMetadata } from './opContext/opTypes.js';
22
22
  import type { LogSchema } from './schema/LogSchema.js';
23
+ import type { SpanBufferConstructor } from './spanBuffer.js';
23
24
  import type { ITraceRoot } from './traceRoot.js';
24
25
  import type { AnySpanBuffer, SpanBuffer } from './types.js';
25
26
  /**
@@ -42,7 +43,7 @@ export interface BufferStrategy<T extends LogSchema = LogSchema> {
42
43
  * @param capacity - Optional capacity override
43
44
  * @returns New SpanBuffer for the root span
44
45
  */
45
- createSpanBuffer(schema: T, traceRoot: ITraceRoot, opMetadata: OpMetadata, capacity?: number): SpanBuffer<T>;
46
+ createSpanBuffer(schema: T, traceRoot: ITraceRoot, opMetadata: OpMetadata, capacity?: number, SpanBufferClass?: SpanBufferConstructor<T>): SpanBuffer<T>;
46
47
  /**
47
48
  * Create a child span buffer linked to a parent.
48
49
  *
@@ -55,7 +56,7 @@ export interface BufferStrategy<T extends LogSchema = LogSchema> {
55
56
  * @param schema - Optional schema for the child (if different from parent, e.g., library ops)
56
57
  * @returns New SpanBuffer linked to parent
57
58
  */
58
- createChildSpanBuffer(parentBuffer: SpanBuffer<T>, callsiteMetadata: OpMetadata, opMetadata: OpMetadata, capacity?: number, schema?: T): SpanBuffer<T>;
59
+ createChildSpanBuffer(parentBuffer: SpanBuffer<T>, callsiteMetadata: OpMetadata, opMetadata: OpMetadata, capacity?: number, schema?: T, SpanBufferClass?: SpanBufferConstructor<T>): SpanBuffer<T>;
59
60
  /**
60
61
  * Create an overflow buffer when current buffer is full.
61
62
  *
@@ -1 +1 @@
1
- {"version":3,"file":"bufferStrategy.d.ts","sourceRoot":"","sources":["../../src/lib/bufferStrategy.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC7D;;;;;;;;OAQG;IACH,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAE7G;;;;;;;;;;;OAWG;IACH,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,CAAC;IAEjB;;;;;OAKG;IACH,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAE3D;;;;;;;;;;OAUG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE5D;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;CAC5C"}
1
+ {"version":3,"file":"bufferStrategy.d.ts","sourceRoot":"","sources":["../../src/lib/bufferStrategy.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC7D;;;;;;;;OAQG;IACH,gBAAgB,CACd,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACzC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEjB;;;;;;;;;;;OAWG;IACH,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,eAAe,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACzC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAE3D;;;;;;;;;;OAUG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE5D;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;CAC5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"traceRows.d.ts","sourceRoot":"","sources":["../../../src/lib/cloudflare/traceRows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,sGAAsG;AACtG,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE7D,0FAA0F;AAC1F,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAiBrD,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,aAAa,GAAG,QAAQ,EAAE,CAsB3E"}
1
+ {"version":3,"file":"traceRows.d.ts","sourceRoot":"","sources":["../../../src/lib/cloudflare/traceRows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,sGAAsG;AACtG,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE7D,0FAA0F;AAC1F,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAiBrD,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,aAAa,GAAG,QAAQ,EAAE,CAsB3E"}
@@ -9,6 +9,7 @@
9
9
  * (trace_id, span_id, parent_span_id, row_index, entry_type, timestamp_ns, message) plus the
10
10
  * buffer's user schema columns, flattened so downstream SQL transforms need no unnesting.
11
11
  */
12
+ import { resolveEntryType, resolveMessage } from '../resolveMessage.js';
12
13
  import { readSpanFieldValue, walkSpanSegments } from '../sqlite/sqlite-common.js';
13
14
  function toTraceRowValue(value) {
14
15
  if (value === undefined || value === null)
@@ -37,9 +38,9 @@ export function spanBufferToTraceRows(rootBuffer) {
37
38
  span_id: spanId,
38
39
  parent_span_id: parentSpanId,
39
40
  row_index: rowOffset + row,
40
- entry_type: buffer.entry_type[row],
41
+ entry_type: resolveEntryType(buffer, row),
41
42
  timestamp_ns: Number(buffer.timestamp[row]),
42
- message: buffer.message_values[row] ?? null,
43
+ message: toTraceRowValue(resolveMessage(buffer, row)),
43
44
  };
44
45
  for (const fieldName of fieldNames) {
45
46
  record[fieldName] = toTraceRowValue(readSpanFieldValue(buffer, fieldName, row));
@@ -1 +1 @@
1
- {"version":3,"file":"evaluatorGenerator.d.ts","sourceRoot":"","sources":["../../../src/lib/codegen/evaluatorGenerator.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EACV,aAAa,EAEb,4BAA4B,EAC5B,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,GAAG,SAAS,SAAS;IAC3D,GAAG,CAAC,CAAC,SAAS,MAAM,4BAA4B,CAAC,GAAG,CAAC,GAAG,MAAM,EAC5D,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAC5E,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,0BAA0B,CAAC,GAAG,SAAS,SAAS,IAAI,sBAAsB,CAAC,GAAG,CAAC,GACzF,4BAA4B,CAAC,GAAG,CAAC,CAAC;AAEpC,KAAK,6BAA6B,CAAC,GAAG,SAAS,SAAS,IAAI,KAC1D,WAAW,EAAE,oBAAoB,CAAC,GAAG,CAAC,EACtC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,KAC1B,0BAA0B,CAAC,GAAG,CAAC,CAAC;AAErC,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC;AA4E9G;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,iBAAiB,EAChE,MAAM,EAAE,CAAC,EACT,SAAS,SAAuB,GAC/B,MAAM,CA2BR;AAwHD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,SAAS,SAAS,EACxD,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,oBAAoB,EAAE,MAAM,GAC3B,6BAA6B,CAAC,GAAG,CAAC,CA6BpC"}
1
+ {"version":3,"file":"evaluatorGenerator.d.ts","sourceRoot":"","sources":["../../../src/lib/codegen/evaluatorGenerator.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EACV,aAAa,EAEb,4BAA4B,EAC5B,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,GAAG,SAAS,SAAS;IAC3D,GAAG,CAAC,CAAC,SAAS,MAAM,4BAA4B,CAAC,GAAG,CAAC,GAAG,MAAM,EAC5D,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAC5E,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,0BAA0B,CAAC,GAAG,SAAS,SAAS,IAAI,sBAAsB,CAAC,GAAG,CAAC,GACzF,4BAA4B,CAAC,GAAG,CAAC,CAAC;AAEpC,KAAK,6BAA6B,CAAC,GAAG,SAAS,SAAS,IAAI,KAC1D,WAAW,EAAE,oBAAoB,CAAC,GAAG,CAAC,EACtC,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,KAC1B,0BAA0B,CAAC,GAAG,CAAC,CAAC;AAErC,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,OAAO,KAAK,OAAO,CAAC;AAgF9G;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,iBAAiB,EAChE,MAAM,EAAE,CAAC,EACT,SAAS,SAAuB,GAC/B,MAAM,CA2BR;AAwHD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,SAAS,SAAS,EACxD,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,oBAAoB,EAAE,MAAM,GAC3B,6BAA6B,CAAC,GAAG,CAAC,CA6BpC"}
@@ -6,6 +6,7 @@
6
6
  * normal closures and `Object.defineProperties()` instead of `new Function(...)`.
7
7
  */
8
8
  import { isRecord } from '@smoothbricks/validation';
9
+ import { resolveEntryType, resolveMessage } from '../resolveMessage.js';
9
10
  /**
10
11
  * Cache for generated evaluator classes by schema reference.
11
12
  */
@@ -22,18 +23,18 @@ function isAnySpanBuffer(value) {
22
23
  function isInternalSpanLogger(value) {
23
24
  return isRecord(value) && 'ffAccess' in value && 'ffUsage' in value;
24
25
  }
26
+ function isEvaluatorRuntimeContext(value) {
27
+ return (isRecord(value) &&
28
+ '_buffer' in value &&
29
+ '_spanLogger' in value &&
30
+ isAnySpanBuffer(value._buffer) &&
31
+ isInternalSpanLogger(value._spanLogger));
32
+ }
25
33
  function getEvaluatorRuntimeContext(ctx) {
26
- if (!isRecord(ctx) || !('_buffer' in ctx) || !('log' in ctx)) {
27
- throw new Error('Feature-flag evaluator requires an internal span context');
28
- }
29
- if (!isAnySpanBuffer(ctx._buffer) || !isInternalSpanLogger(ctx.log)) {
34
+ if (!isEvaluatorRuntimeContext(ctx)) {
30
35
  throw new Error('Feature-flag evaluator requires runtime span buffer and logger internals');
31
36
  }
32
- return {
33
- ...ctx,
34
- _buffer: ctx._buffer,
35
- log: ctx.log,
36
- };
37
+ return ctx;
37
38
  }
38
39
  function createFlagGetter(flagName) {
39
40
  return function generatedFlagGetter() {
@@ -105,7 +106,7 @@ class WorkerSafeGeneratedEvaluator {
105
106
  while (buf) {
106
107
  const limit = buf._writeIndex;
107
108
  for (let i = limit - 1; i >= 0; i--) {
108
- if (buf.entry_type[i] === this.#entryTypeFfAccess && buf.message_values && buf.message_values[i] === flagName) {
109
+ if (resolveEntryType(buf, i) === this.#entryTypeFfAccess && resolveMessage(buf, i) === flagName) {
109
110
  return true;
110
111
  }
111
112
  }
@@ -163,7 +164,7 @@ class WorkerSafeGeneratedEvaluator {
163
164
  return { value, track };
164
165
  }
165
166
  getLogger() {
166
- return this.#spanContext.log;
167
+ return this.#spanContext._spanLogger;
167
168
  }
168
169
  logUsage(flagName, context) {
169
170
  return this.getLogger().ffUsage(flagName, context ? { ...context } : undefined);