@smoothbricks/lmao 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/dist/allocator.wasm +0 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -0
  5. package/dist/lib/JsBufferStrategy.d.ts +4 -3
  6. package/dist/lib/JsBufferStrategy.d.ts.map +1 -1
  7. package/dist/lib/JsBufferStrategy.js +18 -11
  8. package/dist/lib/arrow/lease.d.ts +10 -0
  9. package/dist/lib/arrow/lease.d.ts.map +1 -0
  10. package/dist/lib/arrow/lease.js +33 -0
  11. package/dist/lib/arrow/utils.d.ts +3 -4
  12. package/dist/lib/arrow/utils.d.ts.map +1 -1
  13. package/dist/lib/arrow/utils.js +12 -13
  14. package/dist/lib/arrow/vocabularyDictionary.d.ts +21 -0
  15. package/dist/lib/arrow/vocabularyDictionary.d.ts.map +1 -0
  16. package/dist/lib/arrow/vocabularyDictionary.js +95 -0
  17. package/dist/lib/bufferStrategy.d.ts +3 -2
  18. package/dist/lib/bufferStrategy.d.ts.map +1 -1
  19. package/dist/lib/cloudflare/traceRows.d.ts.map +1 -1
  20. package/dist/lib/cloudflare/traceRows.js +3 -2
  21. package/dist/lib/codegen/evaluatorGenerator.d.ts.map +1 -1
  22. package/dist/lib/codegen/evaluatorGenerator.js +12 -11
  23. package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts +44 -82
  24. package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts.map +1 -1
  25. package/dist/lib/codegen/fixedPositionWriterGenerator.js +223 -162
  26. package/dist/lib/codegen/spanLoggerClosureMaterializer.d.ts +63 -0
  27. package/dist/lib/codegen/spanLoggerClosureMaterializer.d.ts.map +1 -0
  28. package/dist/lib/codegen/spanLoggerClosureMaterializer.js +447 -0
  29. package/dist/lib/codegen/spanLoggerGenerator.d.ts +36 -19
  30. package/dist/lib/codegen/spanLoggerGenerator.d.ts.map +1 -1
  31. package/dist/lib/codegen/spanLoggerGenerator.js +164 -158
  32. package/dist/lib/convertToArrow.d.ts +7 -2
  33. package/dist/lib/convertToArrow.d.ts.map +1 -1
  34. package/dist/lib/convertToArrow.js +499 -285
  35. package/dist/lib/defineOpContext.js +1 -1
  36. package/dist/lib/enumMetadata.d.ts +19 -0
  37. package/dist/lib/enumMetadata.d.ts.map +1 -0
  38. package/dist/lib/enumMetadata.js +86 -0
  39. package/dist/lib/flushScheduler.d.ts.map +1 -1
  40. package/dist/lib/flushScheduler.js +13 -4
  41. package/dist/lib/library.d.ts +16 -98
  42. package/dist/lib/library.d.ts.map +1 -1
  43. package/dist/lib/library.js +32 -525
  44. package/dist/lib/logBinding.d.ts +21 -27
  45. package/dist/lib/logBinding.d.ts.map +1 -1
  46. package/dist/lib/op.d.ts +30 -30
  47. package/dist/lib/op.d.ts.map +1 -1
  48. package/dist/lib/op.js +15 -22
  49. package/dist/lib/opContext/createOpGroup.d.ts +1 -1
  50. package/dist/lib/opContext/createOpGroup.d.ts.map +1 -1
  51. package/dist/lib/opContext/createOpGroup.js +22 -29
  52. package/dist/lib/opContext/defineOp.d.ts +4 -4
  53. package/dist/lib/opContext/defineOp.d.ts.map +1 -1
  54. package/dist/lib/opContext/defineOp.js +53 -10
  55. package/dist/lib/opContext/opGroupTypes.d.ts +2 -2
  56. package/dist/lib/opContext/opTypes.d.ts +1 -1
  57. package/dist/lib/opContext/opTypes.d.ts.map +1 -1
  58. package/dist/lib/opContext/spanContextTypes.d.ts +29 -14
  59. package/dist/lib/opContext/spanContextTypes.d.ts.map +1 -1
  60. package/dist/lib/opContext/types.d.ts +4 -4
  61. package/dist/lib/opContext/types.d.ts.map +1 -1
  62. package/dist/lib/physicalLayoutPlan.d.ts +89 -0
  63. package/dist/lib/physicalLayoutPlan.d.ts.map +1 -0
  64. package/dist/lib/physicalLayoutPlan.js +442 -0
  65. package/dist/lib/resolveMessage.d.ts +9 -0
  66. package/dist/lib/resolveMessage.d.ts.map +1 -0
  67. package/dist/lib/resolveMessage.js +63 -0
  68. package/dist/lib/result.d.ts +5 -7
  69. package/dist/lib/result.d.ts.map +1 -1
  70. package/dist/lib/result.js +19 -26
  71. package/dist/lib/runtimeHint.d.ts +35 -0
  72. package/dist/lib/runtimeHint.d.ts.map +1 -0
  73. package/dist/lib/runtimeHint.js +79 -0
  74. package/dist/lib/schema/types.d.ts +1 -1
  75. package/dist/lib/schema/types.d.ts.map +1 -1
  76. package/dist/lib/span-buffer/aot/v1.d.ts +2 -0
  77. package/dist/lib/span-buffer/aot/v1.d.ts.map +1 -0
  78. package/dist/lib/span-buffer/aot/v1.js +24 -0
  79. package/dist/lib/spanBuffer.d.ts +33 -4
  80. package/dist/lib/spanBuffer.d.ts.map +1 -1
  81. package/dist/lib/spanBuffer.js +583 -91
  82. package/dist/lib/spanBufferStats.d.ts +1 -1
  83. package/dist/lib/spanBufferStats.d.ts.map +1 -1
  84. package/dist/lib/spanContext.d.ts +27 -51
  85. package/dist/lib/spanContext.d.ts.map +1 -1
  86. package/dist/lib/spanContext.js +822 -344
  87. package/dist/lib/sqlite/sqlite-common.d.ts.map +1 -1
  88. package/dist/lib/sqlite/sqlite-common.js +20 -21
  89. package/dist/lib/testing/bun-harness.d.ts +8 -3
  90. package/dist/lib/testing/bun-harness.d.ts.map +1 -1
  91. package/dist/lib/testing/bun-harness.js +30 -18
  92. package/dist/lib/testing/extractFacts.d.ts +1 -1
  93. package/dist/lib/testing/extractFacts.d.ts.map +1 -1
  94. package/dist/lib/testing/extractFacts.js +55 -63
  95. package/dist/lib/testing/facts.d.ts +1 -1
  96. package/dist/lib/testing/facts.d.ts.map +1 -1
  97. package/dist/lib/testing/queryable-span.d.ts +1 -1
  98. package/dist/lib/testing/queryable-span.d.ts.map +1 -1
  99. package/dist/lib/testing/queryable-span.js +26 -28
  100. package/dist/lib/testing/span-query.d.ts.map +1 -1
  101. package/dist/lib/testing/span-query.js +19 -22
  102. package/dist/lib/testing/stdio-replay.d.ts.map +1 -1
  103. package/dist/lib/testing/stdio-replay.js +19 -8
  104. package/dist/lib/threadId.d.ts.map +1 -1
  105. package/dist/lib/threadId.js +6 -3
  106. package/dist/lib/traceRoot.d.ts +30 -8
  107. package/dist/lib/traceRoot.d.ts.map +1 -1
  108. package/dist/lib/traceRoot.es.d.ts +17 -15
  109. package/dist/lib/traceRoot.es.d.ts.map +1 -1
  110. package/dist/lib/traceRoot.es.js +68 -34
  111. package/dist/lib/traceRoot.js +11 -0
  112. package/dist/lib/traceRoot.node.d.ts +17 -19
  113. package/dist/lib/traceRoot.node.d.ts.map +1 -1
  114. package/dist/lib/traceRoot.node.js +66 -38
  115. package/dist/lib/traceTopology.d.ts +42 -0
  116. package/dist/lib/traceTopology.d.ts.map +1 -0
  117. package/dist/lib/traceTopology.js +260 -0
  118. package/dist/lib/tracer.d.ts +9 -5
  119. package/dist/lib/tracer.d.ts.map +1 -1
  120. package/dist/lib/tracer.js +65 -71
  121. package/dist/lib/tracers/ArrayQueueTracer.d.ts +1 -1
  122. package/dist/lib/tracers/ArrayQueueTracer.js +1 -1
  123. package/dist/lib/tracers/StdioTracer.d.ts.map +1 -1
  124. package/dist/lib/tracers/StdioTracer.js +15 -13
  125. package/dist/lib/tracers/TestTracer.d.ts +4 -6
  126. package/dist/lib/tracers/TestTracer.d.ts.map +1 -1
  127. package/dist/lib/tracers/TestTracer.js +6 -8
  128. package/dist/lib/types.d.ts +49 -32
  129. package/dist/lib/types.d.ts.map +1 -1
  130. package/dist/lib/vocabularyRegistry.d.ts +25 -0
  131. package/dist/lib/vocabularyRegistry.d.ts.map +1 -0
  132. package/dist/lib/vocabularyRegistry.js +372 -0
  133. package/dist/lib/wasm/WasmBufferStrategy.d.ts +6 -10
  134. package/dist/lib/wasm/WasmBufferStrategy.d.ts.map +1 -1
  135. package/dist/lib/wasm/WasmBufferStrategy.js +44 -37
  136. package/dist/lib/wasm/wasmAllocator.d.ts +27 -22
  137. package/dist/lib/wasm/wasmAllocator.d.ts.map +1 -1
  138. package/dist/lib/wasm/wasmAllocator.js +66 -44
  139. package/dist/lib/wasm/wasmPhysicalLayout.d.ts +67 -0
  140. package/dist/lib/wasm/wasmPhysicalLayout.d.ts.map +1 -0
  141. package/dist/lib/wasm/wasmPhysicalLayout.js +179 -0
  142. package/dist/lib/wasm/wasmSpanBuffer.d.ts +79 -31
  143. package/dist/lib/wasm/wasmSpanBuffer.d.ts.map +1 -1
  144. package/dist/lib/wasm/wasmSpanBuffer.js +442 -272
  145. package/dist/lib/wasm/wasmTraceRoot.d.ts +24 -22
  146. package/dist/lib/wasm/wasmTraceRoot.d.ts.map +1 -1
  147. package/dist/lib/wasm/wasmTraceRoot.js +110 -71
  148. package/dist/vocabulary/register/v1.d.ts +2 -0
  149. package/dist/vocabulary/register/v1.d.ts.map +1 -0
  150. package/dist/vocabulary/register/v1.js +1 -0
  151. package/dist/wasm.d.ts +5 -0
  152. package/dist/wasm.d.ts.map +1 -0
  153. package/dist/wasm.js +4 -0
  154. package/package.json +54 -6
  155. package/src/index.ts +1 -0
  156. package/src/lib/JsBufferStrategy.ts +27 -9
  157. package/src/lib/__tests__/arrow-builder-integration/arrow-conversion.test.ts +335 -37
  158. package/src/lib/__tests__/arrow-builder-integration/binary-arrow-conversion.test.ts +97 -26
  159. package/src/lib/__tests__/arrow-builder-integration/binary-comparison.test.ts +75 -15
  160. package/src/lib/__tests__/arrow-builder-integration/binary-format-compliance.test.ts +30 -6
  161. package/src/lib/__tests__/arrow-builder-integration/buffer-chaining.test.ts +18 -21
  162. package/src/lib/__tests__/arrow-builder-integration/foundation.test.ts +5 -2
  163. package/src/lib/__tests__/arrow-builder-integration/integration.test.ts +25 -7
  164. package/src/lib/__tests__/arrow-builder-integration/lazy-columns.test.ts +3 -2
  165. package/src/lib/__tests__/buffer-overflow.test.ts +24 -18
  166. package/src/lib/__tests__/capability-span-context.test.ts +505 -0
  167. package/src/lib/__tests__/capacity-tuning.test.ts +5 -3
  168. package/src/lib/__tests__/eager-columns.test.ts +345 -0
  169. package/src/lib/__tests__/enum-metadata-aot.test.ts +153 -0
  170. package/src/lib/__tests__/enum-metadata.test.ts +177 -0
  171. package/src/lib/__tests__/fixtures/empty-vocabulary-runtime.fixture.ts +15 -0
  172. package/src/lib/__tests__/flushScheduler.test.ts +5 -1
  173. package/src/lib/__tests__/identity-view.property.test.ts +179 -0
  174. package/src/lib/__tests__/library.test.ts +19 -235
  175. package/src/lib/__tests__/message-buffer-families.test.ts +878 -0
  176. package/src/lib/__tests__/nested-library-tasks.test.ts +14 -15
  177. package/src/lib/__tests__/op-metadata.test.ts +1 -1
  178. package/src/lib/__tests__/op-type-safety.test.ts +5 -16
  179. package/src/lib/__tests__/physical-layout-plan.test.ts +333 -0
  180. package/src/lib/__tests__/remap-descriptor-integration.test.ts +381 -0
  181. package/src/lib/__tests__/root-context-construction.test.ts +414 -0
  182. package/src/lib/__tests__/span-auto-runtime.test.ts +386 -0
  183. package/src/lib/__tests__/span-buffer-segment-stats.test.ts +221 -0
  184. package/src/lib/__tests__/span-lifecycle.test.ts +53 -25
  185. package/src/lib/__tests__/spanbuffer-materializer-parity.test.ts +266 -0
  186. package/src/lib/__tests__/sync-async-trace.test.ts +24 -23
  187. package/src/lib/__tests__/tag-writer-aot.test.ts +214 -0
  188. package/src/lib/__tests__/test-helpers.ts +67 -12
  189. package/src/lib/__tests__/threadId.test.ts +62 -0
  190. package/src/lib/__tests__/timestamp.test.ts +221 -93
  191. package/src/lib/__tests__/traceTopology.property.test.ts +383 -0
  192. package/src/lib/__tests__/type-narrowing.test.ts +63 -0
  193. package/src/lib/__tests__/vocabulary-dense-decoding.test.ts +405 -0
  194. package/src/lib/__tests__/vocabularyRegistry.test.ts +313 -0
  195. package/src/lib/arrow/lease.ts +43 -0
  196. package/src/lib/arrow/utils.ts +10 -14
  197. package/src/lib/arrow/vocabularyDictionary.ts +123 -0
  198. package/src/lib/bufferStrategy.ts +9 -1
  199. package/src/lib/cloudflare/traceRows.ts +3 -2
  200. package/src/lib/codegen/__tests__/evaluatorGenerator.test.ts +21 -141
  201. package/src/lib/codegen/__tests__/fixedPositionWriter-parity.test.ts +273 -0
  202. package/src/lib/codegen/__tests__/fixedPositionWriter-uint64.test.ts +61 -34
  203. package/src/lib/codegen/__tests__/nullBitmap.test.ts +33 -37
  204. package/src/lib/codegen/__tests__/spanLoggerGenerator.test.ts +34 -18
  205. package/src/lib/codegen/__tests__/spanLoggerMaterializerParity.test.ts +503 -0
  206. package/src/lib/codegen/evaluatorGenerator.ts +18 -13
  207. package/src/lib/codegen/fixedPositionWriterGenerator.ts +329 -245
  208. package/src/lib/codegen/spanLoggerClosureMaterializer.ts +598 -0
  209. package/src/lib/codegen/spanLoggerGenerator.ts +241 -177
  210. package/src/lib/convertToArrow.ts +598 -311
  211. package/src/lib/defineOpContext.ts +1 -1
  212. package/src/lib/enumMetadata.ts +121 -0
  213. package/src/lib/flushScheduler.ts +11 -5
  214. package/src/lib/library.ts +37 -595
  215. package/src/lib/logBinding.ts +21 -27
  216. package/src/lib/op.ts +75 -18
  217. package/src/lib/opContext/__tests__/retry.test.ts +27 -21
  218. package/src/lib/opContext/createOpGroup.ts +33 -31
  219. package/src/lib/opContext/defineOp.ts +88 -11
  220. package/src/lib/opContext/opGroupTypes.ts +2 -2
  221. package/src/lib/opContext/opTypes.ts +1 -1
  222. package/src/lib/opContext/spanContextTypes.ts +98 -17
  223. package/src/lib/opContext/types.ts +7 -3
  224. package/src/lib/physicalLayoutPlan.ts +598 -0
  225. package/src/lib/resolveMessage.ts +67 -0
  226. package/src/lib/result.ts +20 -33
  227. package/src/lib/runtimeHint.ts +98 -0
  228. package/src/lib/schema/__tests__/featureFlags.test.ts +2 -1
  229. package/src/lib/schema/builder.ts +1 -1
  230. package/src/lib/schema/types.ts +1 -1
  231. package/src/lib/span-buffer/aot/v1.ts +26 -0
  232. package/src/lib/spanBuffer.ts +658 -92
  233. package/src/lib/spanBufferStats.ts +1 -1
  234. package/src/lib/spanContext.ts +1350 -861
  235. package/src/lib/sqlite/sqlite-common.ts +20 -31
  236. package/src/lib/testing/__tests__/topology-traversal.test.ts +174 -0
  237. package/src/lib/testing/__tests__/vitest-harness.test.ts +2 -1
  238. package/src/lib/testing/bun-harness.ts +94 -43
  239. package/src/lib/testing/extractFacts.ts +64 -78
  240. package/src/lib/testing/facts.ts +1 -1
  241. package/src/lib/testing/queryable-span.ts +23 -30
  242. package/src/lib/testing/span-query.ts +16 -20
  243. package/src/lib/testing/stdio-replay.ts +25 -8
  244. package/src/lib/testing/vitest-harness.ts +1 -1
  245. package/src/lib/threadId.ts +6 -3
  246. package/src/lib/traceRoot.es.ts +77 -42
  247. package/src/lib/traceRoot.node.ts +75 -46
  248. package/src/lib/traceRoot.ts +41 -14
  249. package/src/lib/traceTopology.ts +279 -0
  250. package/src/lib/tracer.ts +109 -98
  251. package/src/lib/tracers/ArrayQueueTracer.ts +1 -1
  252. package/src/lib/tracers/StdioTracer.ts +15 -13
  253. package/src/lib/tracers/TestTracer.ts +6 -8
  254. package/src/lib/tracers/__tests__/ArrayQueueTracer.test.ts +15 -10
  255. package/src/lib/tracers/__tests__/TestTracer.test.ts +23 -13
  256. package/src/lib/types.ts +64 -33
  257. package/src/lib/vocabularyRegistry.ts +439 -0
  258. package/src/lib/wasm/WasmBufferStrategy.ts +56 -48
  259. package/src/lib/wasm/__tests__/WasmBufferStrategy.test.ts +215 -11
  260. package/src/lib/wasm/__tests__/allocatorFreeBlockClamp.test.ts +86 -0
  261. package/src/lib/wasm/__tests__/wasm-identity-view.test.ts +311 -0
  262. package/src/lib/wasm/__tests__/wasm-integration.test.ts +417 -44
  263. package/src/lib/wasm/__tests__/wasm-message-buffer-families.test.ts +588 -0
  264. package/src/lib/wasm/__tests__/wasmAllocator.test.ts +100 -668
  265. package/src/lib/wasm/__tests__/wasmSpanBuffer.test.ts +419 -63
  266. package/src/lib/wasm/__tests__/wasmTraceRoot.test.ts +24 -29
  267. package/src/lib/wasm/__tests__/wasmTracer.test.ts.disabled +2 -2
  268. package/src/lib/wasm/wasmAllocator.ts +131 -96
  269. package/src/lib/wasm/wasmPhysicalLayout.ts +309 -0
  270. package/src/lib/wasm/wasmSpanBuffer.ts +597 -341
  271. package/src/lib/wasm/wasmTraceRoot.ts +140 -78
  272. package/src/vocabulary/register/v1.ts +1 -0
  273. package/src/wasm.ts +19 -0
  274. package/src/lib/__tests__/remapped-buffer-view-integration.test.ts +0 -319
  275. package/src/lib/__tests__/remapped-buffer-view.test.ts +0 -635
  276. package/src/lib/wasm/allocator.zig +0 -948
@@ -15,9 +15,12 @@
15
15
  *
16
16
  * SpanLogger starts with _writeIndex = 1, so first _nextRow() makes it 2.
17
17
  */
18
- import { getColumnWriterClass, } from '@smoothbricks/arrow-builder';
18
+ import { activeMaterializerMode, generateColumnWriterClass, } from '@smoothbricks/arrow-builder';
19
+ import { resolveEnumLookupDescriptor, } from '../enumMetadata.js';
20
+ import { decodeVocabularyMessage } from '../resolveMessage.js';
19
21
  import { ENTRY_TYPE_DEBUG, ENTRY_TYPE_ERROR, ENTRY_TYPE_FF_ACCESS, ENTRY_TYPE_FF_USAGE, ENTRY_TYPE_INFO, ENTRY_TYPE_TRACE, ENTRY_TYPE_WARN, } from '../schema/systemSchema.js';
20
- import { getEnumValues, getSchemaType } from '../schema/typeGuards.js';
22
+ import { getSchemaType } from '../schema/typeGuards.js';
23
+ import { materializeSpanLoggerClass, } from './spanLoggerClosureMaterializer.js';
21
24
  // =============================================================================
22
25
  // SINGLETON HELPERS OBJECT
23
26
  // =============================================================================
@@ -28,6 +31,12 @@ import { getEnumValues, getSchemaType } from '../schema/typeGuards.js';
28
31
  * Singleton - same object shared by all generated SpanLogger classes.
29
32
  */
30
33
  export const SPAN_LOGGER_HELPERS = {
34
+ normalizeOperationalTemplate: (template) => {
35
+ if (template.indexOf('{{') === -1 && template.indexOf('}}') === -1)
36
+ return template;
37
+ return template.replaceAll('{{', '{').replaceAll('}}', '}');
38
+ },
39
+ decodeVocabularyMessage,
31
40
  setNullBit: (bitmap, idx) => {
32
41
  bitmap[idx >>> 3] |= 1 << (idx & 7);
33
42
  },
@@ -126,35 +135,19 @@ export const SPAN_LOGGER_HELPERS = {
126
135
  }
127
136
  },
128
137
  };
129
- /**
130
- * Generate enum value mapping code
131
- * Creates a switch-case statement for compile-time enum mapping
132
- */
133
- function generateEnumMapping(fieldName, enumValues) {
134
- const cases = enumValues.map((value, index) => ` case ${JSON.stringify(value)}: return ${index};`).join('\n');
135
- return `
136
- function getEnumIndex_${fieldName}(value) {
137
- switch(value) {
138
- ${cases}
139
- default: return 0;
140
- }
141
- }`;
142
- }
143
138
  /**
144
139
  * Generate override fluent setters for enum fields.
145
140
  * These convert string values to numeric indices before writing to the buffer.
146
141
  * The buffer expects numeric indices (after the enum map removal change).
147
142
  */
148
- function generateEnumFluentSetters(enumFieldNames) {
143
+ function generateEnumFluentSetters(enumFields, enumEncoderNames) {
149
144
  const setters = [];
150
- for (const fieldName of enumFieldNames) {
145
+ for (const { fieldName } of enumFields) {
146
+ const encoderName = enumEncoderNames[fieldName];
151
147
  setters.push(`
152
- /**
153
- * Override fluent setter for ${fieldName} to convert string → index.
154
- * Buffer expects numeric index, not string value.
155
- */
148
+ /** Convert the declared enum string to its schema-order index. */
156
149
  ${fieldName}(value) {
157
- const idx = getEnumIndex_${fieldName}(value);
150
+ const idx = ${encoderName}(value);
158
151
  this._buffer.${fieldName}(this._writeIndex, idx);
159
152
  return this;
160
153
  }`);
@@ -199,7 +192,7 @@ function generateSetScopeMethod() {
199
192
  * pattern of temporarily switching this._buffer for prefill then switching back.
200
193
  * Called by _checkOverflow after getting overflow buffer.
201
194
  */
202
- function generatePrefillScopedAttributesMethod(schemaFields, enumFieldNames) {
195
+ function generatePrefillScopedAttributesMethod(schemaFields, enumEncoderNames) {
203
196
  const columnFills = schemaFields.map(([fieldName, fieldSchema]) => {
204
197
  const columnName = fieldName;
205
198
  const lmaoType = getSchemaType(fieldSchema);
@@ -220,8 +213,9 @@ function generatePrefillScopedAttributesMethod(schemaFields, enumFieldNames) {
220
213
  }
221
214
  // Value processing based on type
222
215
  let valueExpr = 'scopeValue';
223
- if (lmaoType === 'enum' && enumFieldNames.has(fieldName)) {
224
- valueExpr = `getEnumIndex_${fieldName}(scopeValue)`;
216
+ const enumEncoderName = enumEncoderNames[fieldName];
217
+ if (lmaoType === 'enum' && enumEncoderName !== undefined) {
218
+ valueExpr = `${enumEncoderName}(scopeValue)`;
225
219
  }
226
220
  // For string arrays (category/text), use manual loop instead of fill()
227
221
  if (lmaoType === 'category' || lmaoType === 'text') {
@@ -261,25 +255,36 @@ function generatePrefillScopedAttributesMethod(schemaFields, enumFieldNames) {
261
255
  /**
262
256
  * Build the extension for SpanLogger that extends ColumnWriter
263
257
  */
264
- function buildSpanLoggerExtension(schema) {
258
+ function buildSpanLoggerExtension(schema, messageLayoutFamily, messagePhysicalLayout, eagerColumns, enumLookup) {
265
259
  const schemaFields = schema._columns;
266
- // Collect enum mappings
267
- const enumMappings = [];
268
- const enumFieldNames = new Set();
269
- for (const [fieldName, fieldSchema] of schemaFields) {
270
- const lmaoType = getSchemaType(fieldSchema);
271
- const enumValues = getEnumValues(fieldSchema);
272
- if (lmaoType === 'enum' && enumValues) {
273
- enumMappings.push(generateEnumMapping(fieldName, enumValues));
274
- enumFieldNames.add(fieldName);
275
- }
276
- }
260
+ const enumEncoderNames = Object.create(null);
261
+ const enumEncoderBindings = enumLookup.ordered.map(({ fieldName }, index) => {
262
+ const encoderName = `encodeEnum${index}`;
263
+ enumEncoderNames[fieldName] = encoderName;
264
+ return ` const ${encoderName} = enumLookup.byField[${JSON.stringify(fieldName)}].encode;`;
265
+ });
277
266
  // Generate methods
278
267
  const setScopeMethod = generateSetScopeMethod();
279
- const prefillMethod = generatePrefillScopedAttributesMethod(schemaFields, enumFieldNames);
280
- const enumFluentSetters = generateEnumFluentSetters(enumFieldNames);
268
+ const prefillMethod = generatePrefillScopedAttributesMethod(schemaFields, enumEncoderNames);
269
+ const enumFluentSetters = generateEnumFluentSetters(enumLookup.ordered, enumEncoderNames);
270
+ const staticMessageWrite = (entryType) => {
271
+ switch (messagePhysicalLayout) {
272
+ case 'current':
273
+ return `const localMessageId = this._state._physicalLayoutPlan.encodeLocalMessage(vocabularyIndex);
274
+ if (localMessageId === 0) {
275
+ this._buffer.message_values[idx] = helpers.decodeVocabularyMessage(this._buffer._vocabularyGeneration, vocabularyIndex);
276
+ } else {
277
+ this._buffer._messageIds[idx] = localMessageId;
278
+ }`;
279
+ case 'specialized':
280
+ return 'this._buffer._logHeaders[idx] = vocabularyIndex + 1;';
281
+ case 'packed':
282
+ return `if (vocabularyIndex > 0x00fffffe) throw new RangeError('Packed message dense index exceeds 0xFFFFFE');
283
+ this._buffer._rowHeaders[idx] = ((((vocabularyIndex + 1) << 8) | ${entryType}) >>> 0);`;
284
+ }
285
+ };
281
286
  return {
282
- constructorParams: '',
287
+ preallocatedColumns: eagerColumns,
283
288
  // Entry type constants (inlined from lmao.ts)
284
289
  classPreamble: `
285
290
  const ENTRY_TYPE_INFO = ${ENTRY_TYPE_INFO};
@@ -289,106 +294,87 @@ function buildSpanLoggerExtension(schema) {
289
294
  const ENTRY_TYPE_TRACE = ${ENTRY_TYPE_TRACE};
290
295
  const ENTRY_TYPE_FF_ACCESS = ${ENTRY_TYPE_FF_ACCESS};
291
296
  const ENTRY_TYPE_FF_USAGE = ${ENTRY_TYPE_FF_USAGE};
292
-
293
- ${enumMappings.join('\n')}
297
+ ${enumEncoderBindings.join('\n')}
294
298
  `,
295
- // SpanLogger starts at writeIndex 1, so first nextRow() makes it 2
296
- // (Rows 0 and 1 are reserved for span-start and span-end)
297
- // Sync buffer's writeIndex - needed for Arrow conversion
298
- constructorCode: `
299
- this._writeIndex = 1;
300
- this._buffer._writeIndex = 2;
301
- `,
302
- // Check for overflow before writing, switch to overflow buffer if needed.
303
- // Overflow when _writeIndex >= capacity (buffer is full, no room for this write).
304
- // Buffer.getOrCreateOverflow() handles: stats notification, capacity tuning, buffer creation.
305
- // We just need to switch this._buffer and prefill scope on the new buffer.
306
- methods: `_checkOverflow() {
307
- if (this._buffer._writeIndex >= this._buffer._capacity) {
308
- this._buffer = this._buffer.getOrCreateOverflow();
309
- this._prefillScopedAttributesOn(this._buffer);
299
+ methods:
300
+ // The optional fields argument is the untransformed fallback. JavaScript evaluates
301
+ // the receiver, template, and object initializers before this method runs. Lowered
302
+ // calls use _infoTemplate/_warnTemplate/_errorTemplate plus direct setters instead.
303
+ // Context-owned append advances the shared active buffer and returns the literal row.
304
+ `info(message, fields) {
305
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_INFO);
306
+ ${messageLayoutFamily === 'static-only' ? `throw new TypeError('Dynamic log write reached a static-only callsite plan');` : 'this._buffer.message_values[idx] = helpers.normalizeOperationalTemplate(message);'}
307
+ if (fields !== undefined) {
308
+ this.with(fields);
310
309
  }
310
+ return this;
311
311
  }
312
312
 
313
- ` +
314
- // Write an info log entry.
315
- // writeLogEntry bumps buffer._writeIndex, writes timestamp+entry_type, returns idx.
316
- // We sync this._writeIndex so fluent setters write at correct row.
317
- `info(message) {
318
- this._checkOverflow();
319
- const idx = this._buffer._traceRoot.writeLogEntry(this._buffer, ENTRY_TYPE_INFO);
320
- this._writeIndex = idx;
321
- if (this._buffer.message_values) {
322
- this._buffer.message_values[idx] = message;
323
- if (this._buffer.message_nulls) {
324
- helpers.setNullBit(this._buffer.message_nulls, idx);
325
- }
326
- }
327
- this._buffer.constructor.stats.totalWrites++;
313
+ _infoTemplate(vocabularyIndex) {
314
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_INFO);
315
+ ${messageLayoutFamily === 'dynamic-only' ? `throw new TypeError('Static log write reached a dynamic-only callsite plan');` : staticMessageWrite(ENTRY_TYPE_INFO)}
328
316
  return this;
329
317
  }
330
318
 
331
319
  ` +
332
320
  // Write a debug log entry.
333
321
  `debug(message) {
334
- this._checkOverflow();
335
- const idx = this._buffer._traceRoot.writeLogEntry(this._buffer, ENTRY_TYPE_DEBUG);
336
- this._writeIndex = idx;
337
- if (this._buffer.message_values) {
338
- this._buffer.message_values[idx] = message;
339
- if (this._buffer.message_nulls) {
340
- helpers.setNullBit(this._buffer.message_nulls, idx);
341
- }
342
- }
343
- this._buffer.constructor.stats.totalWrites++;
322
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_DEBUG);
323
+ ${messageLayoutFamily === 'static-only' ? `throw new TypeError('Dynamic log write reached a static-only callsite plan');` : 'this._buffer.message_values[idx] = message;'}
324
+ return this;
325
+ }
326
+
327
+ _debugTemplate(vocabularyIndex) {
328
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_DEBUG);
329
+ ${messageLayoutFamily === 'dynamic-only' ? `throw new TypeError('Static log write reached a dynamic-only callsite plan');` : staticMessageWrite(ENTRY_TYPE_DEBUG)}
344
330
  return this;
345
331
  }
346
332
 
347
333
  ` +
348
334
  // Write a warn log entry.
349
- `warn(message) {
350
- this._checkOverflow();
351
- const idx = this._buffer._traceRoot.writeLogEntry(this._buffer, ENTRY_TYPE_WARN);
352
- this._writeIndex = idx;
353
- if (this._buffer.message_values) {
354
- this._buffer.message_values[idx] = message;
355
- if (this._buffer.message_nulls) {
356
- helpers.setNullBit(this._buffer.message_nulls, idx);
357
- }
335
+ `warn(message, fields) {
336
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_WARN);
337
+ ${messageLayoutFamily === 'static-only' ? `throw new TypeError('Dynamic log write reached a static-only callsite plan');` : 'this._buffer.message_values[idx] = helpers.normalizeOperationalTemplate(message);'}
338
+ if (fields !== undefined) {
339
+ this.with(fields);
358
340
  }
359
- this._buffer.constructor.stats.totalWrites++;
341
+ return this;
342
+ }
343
+
344
+ _warnTemplate(vocabularyIndex) {
345
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_WARN);
346
+ ${messageLayoutFamily === 'dynamic-only' ? `throw new TypeError('Static log write reached a dynamic-only callsite plan');` : staticMessageWrite(ENTRY_TYPE_WARN)}
360
347
  return this;
361
348
  }
362
349
 
363
350
  ` +
364
351
  // Write an error log entry.
365
- `error(message) {
366
- this._checkOverflow();
367
- const idx = this._buffer._traceRoot.writeLogEntry(this._buffer, ENTRY_TYPE_ERROR);
368
- this._writeIndex = idx;
369
- if (this._buffer.message_values) {
370
- this._buffer.message_values[idx] = message;
371
- if (this._buffer.message_nulls) {
372
- helpers.setNullBit(this._buffer.message_nulls, idx);
373
- }
352
+ `error(message, fields) {
353
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_ERROR);
354
+ ${messageLayoutFamily === 'static-only' ? `throw new TypeError('Dynamic log write reached a static-only callsite plan');` : 'this._buffer.message_values[idx] = helpers.normalizeOperationalTemplate(message);'}
355
+ if (fields !== undefined) {
356
+ this.with(fields);
374
357
  }
375
- this._buffer.constructor.stats.totalWrites++;
358
+ return this;
359
+ }
360
+
361
+ _errorTemplate(vocabularyIndex) {
362
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_ERROR);
363
+ ${messageLayoutFamily === 'dynamic-only' ? `throw new TypeError('Static log write reached a dynamic-only callsite plan');` : staticMessageWrite(ENTRY_TYPE_ERROR)}
376
364
  return this;
377
365
  }
378
366
 
379
367
  ` +
380
368
  // Write a trace log entry.
381
369
  `trace(message) {
382
- this._checkOverflow();
383
- const idx = this._buffer._traceRoot.writeLogEntry(this._buffer, ENTRY_TYPE_TRACE);
384
- this._writeIndex = idx;
385
- if (this._buffer.message_values) {
386
- this._buffer.message_values[idx] = message;
387
- if (this._buffer.message_nulls) {
388
- helpers.setNullBit(this._buffer.message_nulls, idx);
389
- }
390
- }
391
- this._buffer.constructor.stats.totalWrites++;
370
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_TRACE);
371
+ ${messageLayoutFamily === 'static-only' ? `throw new TypeError('Dynamic log write reached a static-only callsite plan');` : 'this._buffer.message_values[idx] = message;'}
372
+ return this;
373
+ }
374
+
375
+ _traceTemplate(vocabularyIndex) {
376
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_TRACE);
377
+ ${messageLayoutFamily === 'dynamic-only' ? `throw new TypeError('Static log write reached a dynamic-only callsite plan');` : staticMessageWrite(ENTRY_TYPE_TRACE)}
392
378
  return this;
393
379
  }
394
380
 
@@ -412,15 +398,8 @@ function buildSpanLoggerExtension(schema) {
412
398
  // Write a feature flag access entry (internal method, not on public type).
413
399
  // Called by FeatureFlagEvaluator to log flag access.
414
400
  `ffAccess(flagName, value) {
415
- this._checkOverflow();
416
- const idx = this._buffer._traceRoot.writeLogEntry(this._buffer, ENTRY_TYPE_FF_ACCESS);
417
- this._writeIndex = idx;
418
- if (this._buffer.message_values) {
419
- this._buffer.message_values[idx] = flagName;
420
- if (this._buffer.message_nulls) {
421
- helpers.setNullBit(this._buffer.message_nulls, idx);
422
- }
423
- }
401
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_FF_ACCESS);
402
+ ${messageLayoutFamily === 'static-only' ? `throw new TypeError('Feature flag write reached a static-only callsite plan');` : 'this._buffer.message_values[idx] = flagName;'}
424
403
  if (this._buffer.ff_value_values) {
425
404
  const strValue = value === null || value === undefined ? 'null' : String(value);
426
405
  this._buffer.ff_value_values[idx] = strValue;
@@ -428,23 +407,14 @@ function buildSpanLoggerExtension(schema) {
428
407
  helpers.setNullBit(this._buffer.ff_value_nulls, idx);
429
408
  }
430
409
  }
431
- this._buffer.constructor.stats.totalWrites++;
432
410
  }
433
411
 
434
412
  ` +
435
413
  // Write a feature flag usage entry (internal method, not on public type).
436
414
  // Called by FeatureFlagEvaluator to log flag usage.
437
415
  `ffUsage(flagName, context) {
438
- this._checkOverflow();
439
- const idx = this._buffer._traceRoot.writeLogEntry(this._buffer, ENTRY_TYPE_FF_USAGE);
440
- this._writeIndex = idx;
441
- if (this._buffer.message_values) {
442
- this._buffer.message_values[idx] = flagName;
443
- if (this._buffer.message_nulls) {
444
- helpers.setNullBit(this._buffer.message_nulls, idx);
445
- }
446
- }
447
- this._buffer.constructor.stats.totalWrites++;
416
+ const idx = this._state._appendWriterEntry(ENTRY_TYPE_FF_USAGE);
417
+ ${messageLayoutFamily === 'static-only' ? `throw new TypeError('Feature flag write reached a static-only callsite plan');` : 'this._buffer.message_values[idx] = flagName;'}
448
418
  if (context) {
449
419
  this.with(context);
450
420
  }
@@ -527,6 +497,7 @@ function buildSpanLoggerExtension(schema) {
527
497
  // Use singleton helpers object (created once at module load)
528
498
  dependencies: {
529
499
  helpers: SPAN_LOGGER_HELPERS,
500
+ enumLookup,
530
501
  },
531
502
  };
532
503
  }
@@ -537,43 +508,78 @@ const spanLoggerClassCache = new WeakMap();
537
508
  function isSpanLoggerConstructor(value) {
538
509
  return typeof value === 'function';
539
510
  }
511
+ function generateStateBoundSpanLoggerClass(schema, extension) {
512
+ const source = generateColumnWriterClass(schema, 'GeneratedSpanLogger', extension);
513
+ const constructorStart = source.indexOf(' constructor(buffer) {');
514
+ const firstSetter = schema._columnNames[0];
515
+ const methodsStart = source.indexOf(firstSetter === undefined ? '\n info(message, fields) {' : `\n ${firstSetter}(value) {`, constructorStart);
516
+ if (constructorStart < 0 || methodsStart < 0) {
517
+ throw new Error('Failed to locate generated SpanLogger class boundaries');
518
+ }
519
+ const stateConstructor = ' constructor(state) {\n this._state = state;\n }\n';
520
+ return (source.slice(0, constructorStart) + stateConstructor + source.slice(methodsStart + 1))
521
+ .replaceAll('this._buffer', 'this._state._buffer')
522
+ .replaceAll('this._writeIndex', '(this._state._buffer._writeIndex - 1)');
523
+ }
524
+ /** Compiled materializer: render class source and evaluate it with `new Function`. */
525
+ function compileSpanLoggerClass(schema, messageLayoutFamily, messagePhysicalLayout, eagerColumns, enumLookup) {
526
+ const extension = buildSpanLoggerExtension(schema, messageLayoutFamily, messagePhysicalLayout, eagerColumns, enumLookup);
527
+ const classCode = generateStateBoundSpanLoggerClass(schema, extension).trim();
528
+ return new Function('helpers', 'enumLookup', classCode)(SPAN_LOGGER_HELPERS, enumLookup);
529
+ }
540
530
  /**
541
- * Create SpanLogger class constructor from schema.
542
- * This is the cold-path function called at module creation time.
543
- *
544
- * SpanLogger extends ColumnWriter and adds:
545
- * - info(), debug(), warn(), error() methods for log entries
546
- * - _setScope() for setting scoped attributes
547
- * - _getNextBuffer() override for SpanBuffer creation on overflow
531
+ * Schema/config -> pure-data plan consumed by the closure-composed (no-eval)
532
+ * materializer. Mirrors the inputs the compiled renderer bakes into source:
533
+ * per-column access mode (arrow-builder's buildColumnAccessorPlan semantics),
534
+ * layout family/physical layout, and the injected singleton dependencies.
535
+ */
536
+ function buildSpanLoggerPlan(schema, messageLayoutFamily, messagePhysicalLayout, eagerColumns, enumLookup) {
537
+ const preallocated = new Set(eagerColumns);
538
+ const columns = schema._columns.map(([fieldName, fieldSchema]) => {
539
+ const isEager = typeof fieldSchema === 'object' && fieldSchema !== null && Reflect.get(fieldSchema, '__eager') === true;
540
+ const mode = isEager ? 'eager' : preallocated.has(fieldName) ? 'preallocated' : 'lazy';
541
+ return { name: fieldName, schemaType: getSchemaType(fieldSchema), mode };
542
+ });
543
+ return {
544
+ columns,
545
+ messageLayoutFamily,
546
+ messagePhysicalLayout,
547
+ helpers: SPAN_LOGGER_HELPERS,
548
+ enumLookup,
549
+ };
550
+ }
551
+ /**
552
+ * Create the state-only SpanLogger constructor selected for one schema/layout family.
548
553
  *
549
- * Note: Fluent attribute setters are inherited from ColumnWriter and write at _writeIndex.
554
+ * Selects the materializer via activeMaterializerMode(): the compiled renderer
555
+ * (string codegen) where `new Function` is allowed, the closure-composed
556
+ * materializer where it is forbidden (e.g. workerd). Cache keys are
557
+ * mode-prefixed so a forced override never returns the other mode's class.
550
558
  */
551
- export function createSpanLoggerClass(schema) {
552
- // Check cache first
553
- let SpanLoggerClass = spanLoggerClassCache.get(schema);
559
+ export function createSpanLoggerClass(schema, messageLayoutFamily = 'mixed', messagePhysicalLayout = 'current', eagerColumns = [], enumLookup = resolveEnumLookupDescriptor(schema)) {
560
+ const mode = activeMaterializerMode();
561
+ const cacheKey = `${mode}:${messageLayoutFamily}:${messagePhysicalLayout}:${eagerColumns.join('\u0000')}`;
562
+ let familyClasses = spanLoggerClassCache.get(schema);
563
+ let SpanLoggerClass = familyClasses?.get(cacheKey);
554
564
  if (!SpanLoggerClass) {
555
- const extension = buildSpanLoggerExtension(schema);
556
- // Use arrow-builder's getColumnWriterClass with our extension
557
- const WriterClass = getColumnWriterClass(schema, extension);
558
- SpanLoggerClass = WriterClass;
565
+ SpanLoggerClass =
566
+ mode === 'compiled'
567
+ ? compileSpanLoggerClass(schema, messageLayoutFamily, messagePhysicalLayout, eagerColumns, enumLookup)
568
+ : materializeSpanLoggerClass(buildSpanLoggerPlan(schema, messageLayoutFamily, messagePhysicalLayout, eagerColumns, enumLookup));
559
569
  if (!isSpanLoggerConstructor(SpanLoggerClass)) {
560
570
  throw new Error('Failed to generate SpanLogger constructor');
561
571
  }
562
- spanLoggerClassCache.set(schema, SpanLoggerClass);
572
+ familyClasses ??= new Map();
573
+ familyClasses.set(cacheKey, SpanLoggerClass);
574
+ spanLoggerClassCache.set(schema, familyClasses);
563
575
  }
564
576
  if (!isSpanLoggerConstructor(SpanLoggerClass)) {
565
577
  throw new Error('Invalid cached SpanLogger constructor');
566
578
  }
567
579
  return SpanLoggerClass;
568
580
  }
569
- /**
570
- * Create a SpanLogger instance for the given buffer.
571
- *
572
- * @param schema - Tag attribute schema
573
- * @param buffer - SpanBuffer to write to
574
- */
575
- export function createSpanLogger(schema, buffer) {
576
- const SpanLoggerClass = createSpanLoggerClass(schema);
577
- return new SpanLoggerClass(buffer);
581
+ /** Create a SpanLogger bound to an existing SpanContext writer state. */
582
+ export function createSpanLogger(schema, state) {
583
+ return new (createSpanLoggerClass(schema))(state);
578
584
  }
579
585
  //#endregion smoo/lmao!n/codegen-spanlogger
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { Column, type Table } from '@uwdata/flechette';
11
11
  import { type CapacityStatsEntry } from './arrow/capacityStats.js';
12
+ import { type ArrowLease } from './arrow/lease.js';
12
13
  import type { LogSchema } from './schema/types.js';
13
14
  import type { AnySpanBuffer } from './types.js';
14
15
  type BuiltMetadataColumns = {
@@ -23,11 +24,13 @@ export type SystemColumnBuilder = (buffer: AnySpanBuffer, buffers: AnySpanBuffer
23
24
  * Dictionaries are built from the data in this batch only and are not shared
24
25
  * with other batches, even when combined into a Table.
25
26
  */
26
- export declare function convertToTable(buffer: AnySpanBuffer, systemColumnBuilder?: SystemColumnBuilder): Table;
27
+ export declare function convertToTable(buffer: AnySpanBuffer, systemColumnBuilder?: SystemColumnBuilder, borrowChunks?: boolean): Table;
27
28
  /**
28
29
  * Convert SpanBuffer (and its overflow chain) to Arrow Table
29
30
  */
30
31
  export declare function convertToArrowTable<_T extends LogSchema = LogSchema>(buffer: AnySpanBuffer, systemColumnBuilder?: SystemColumnBuilder): Table;
32
+ /** Borrow JS physical Arrow chunks until the returned lease is released. */
33
+ export declare function convertToLeasedArrowTable(buffer: AnySpanBuffer, systemColumnBuilder?: SystemColumnBuilder): ArrowLease;
31
34
  /**
32
35
  * Convert SpanBuffer tree to Arrow Table
33
36
  *
@@ -35,6 +38,8 @@ export declare function convertToArrowTable<_T extends LogSchema = LogSchema>(bu
35
38
  * - Pass 1: Walk tree, build dictionaries (collect unique strings, cache UTF-8)
36
39
  * - Pass 2: Walk tree, convert each buffer to a table using shared dictionaries
37
40
  */
38
- export declare function convertSpanTreeToArrowTable(rootBuffer: AnySpanBuffer, _systemColumnBuilder?: SystemColumnBuilder, modulesToLogStats?: CapacityStatsEntry[], periodStartNs?: bigint): Table;
41
+ export declare function convertSpanTreeToArrowTable(rootBuffer: AnySpanBuffer, _systemColumnBuilder?: SystemColumnBuilder, modulesToLogStats?: CapacityStatsEntry[], periodStartNs?: bigint, borrowChunks?: boolean): Table;
42
+ /** Convert a logical trace tree while pinning every borrowed physical chunk. */
43
+ export declare function convertSpanTreeToLeasedArrowTable(rootBuffer: AnySpanBuffer, systemColumnBuilder?: SystemColumnBuilder, modulesToLogStats?: CapacityStatsEntry[], periodStartNs?: bigint): ArrowLease;
39
44
  export {};
40
45
  //# sourceMappingURL=convertToArrow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convertToArrow.d.ts","sourceRoot":"","sources":["../../src/lib/convertToArrow.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,OAAO,EAIL,MAAM,EAMN,KAAK,KAAK,EASX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,kBAAkB,EAA4B,MAAM,0BAA0B,CAAC;AAqB7F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAO5D,KAAK,oBAAoB,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;CAAE,CAAC;AAE7E,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,aAAa,EAAE,EACxB,SAAS,EAAE,MAAM,KACd,oBAAoB,CAAC;AAqd1B;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAUtG;AAwYD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,SAAS,GAAG,SAAS,EAClE,MAAM,EAAE,aAAa,EACrB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,KAAK,CAIP;AAMD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,aAAa,EACzB,oBAAoB,CAAC,EAAE,mBAAmB,EAC1C,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,EACxC,aAAa,CAAC,EAAE,MAAM,GACrB,KAAK,CAgPP"}
1
+ {"version":3,"file":"convertToArrow.d.ts","sourceRoot":"","sources":["../../src/lib/convertToArrow.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAIL,MAAM,EAMN,KAAK,KAAK,EASX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,kBAAkB,EAA4B,MAAM,0BAA0B,CAAC;AAQ7F,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAyBrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAQ5D,KAAK,oBAAoB,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;CAAE,CAAC;AAI7E,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,aAAa,EAAE,EACxB,SAAS,EAAE,MAAM,KACd,oBAAoB,CAAC;AAyqB1B;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,mBAAmB,CAAC,EAAE,mBAAmB,EACzC,YAAY,UAAQ,GACnB,KAAK,CAQP;AAgbD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,SAAS,GAAG,SAAS,EAClE,MAAM,EAAE,aAAa,EACrB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,KAAK,CAIP;AAED,4EAA4E;AAC5E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,UAAU,CAWZ;AAMD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,aAAa,EACzB,oBAAoB,CAAC,EAAE,mBAAmB,EAC1C,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,EACxC,aAAa,CAAC,EAAE,MAAM,EACtB,YAAY,UAAQ,GACnB,KAAK,CA4OP;AAED,gFAAgF;AAChF,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,aAAa,EACzB,mBAAmB,CAAC,EAAE,mBAAmB,EACzC,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,EACxC,aAAa,CAAC,EAAE,MAAM,GACrB,UAAU,CAQZ"}