@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
package/src/lib/result.ts CHANGED
@@ -31,9 +31,8 @@
31
31
  * ```
32
32
  */
33
33
 
34
- import { createResultWriter, type ResultWriter } from './codegen/fixedPositionWriterGenerator.js';
34
+ import type { ResultWriter, WriterState } from './codegen/fixedPositionWriterGenerator.js';
35
35
  import type { InferSchema, LogSchema } from './schema/types.js';
36
- import type { AnySpanBuffer } from './types.js';
37
36
 
38
37
  // =============================================================================
39
38
  // TAGGED ERROR INTERFACE
@@ -68,20 +67,10 @@ type BoundResultWriter<T extends LogSchema, R, E> = ResultWriter<T, R, E>;
68
67
 
69
68
  function ensureResultWriter<T extends LogSchema, R, E>(
70
69
  writer: BoundResultWriter<T, R, E> | undefined,
71
- schema: T | undefined,
72
- buffer: AnySpanBuffer | undefined,
73
- resultOrError: R | E,
74
- isError: boolean,
70
+ state: WriterState | undefined,
75
71
  ): BoundResultWriter<T, R, E> | undefined {
76
- if (writer) {
77
- return writer;
78
- }
79
-
80
- if (!schema || !buffer) {
81
- return undefined;
82
- }
83
-
84
- return createResultWriter<T, R, E>(schema, buffer, resultOrError, isError);
72
+ if (writer || !state) return writer;
73
+ return new state._physicalLayoutPlan.ResultWriterClass<T, R, E>(state);
85
74
  }
86
75
 
87
76
  function isErrPredicate<E>(value: ErrMatcher<E>): value is ErrPredicate<E> {
@@ -123,19 +112,18 @@ function createCodeErrorValue<Code extends string, Fields extends object>(
123
112
  export class Ok<V, T extends LogSchema = LogSchema> {
124
113
  readonly value: V;
125
114
 
126
- private readonly _schema: T | undefined;
127
- private readonly _buffer: AnySpanBuffer | undefined;
128
- private _writer: BoundResultWriter<T, V, never> | undefined;
115
+ private readonly _state: WriterState | undefined;
116
+ private declare _writer: BoundResultWriter<T, V, never> | undefined;
129
117
 
130
- constructor(value: V, schema?: T, buffer?: AnySpanBuffer) {
118
+ constructor(value: V, state?: WriterState) {
131
119
  this.value = value;
132
- this._schema = schema;
133
- this._buffer = buffer;
120
+ this._state = state;
134
121
  }
135
122
 
136
123
  private _resultWriter(): BoundResultWriter<T, V, never> | undefined {
137
- this._writer = ensureResultWriter<T, V, never>(this._writer, this._schema, this._buffer, this.value, false);
138
- return this._writer;
124
+ const writer = ensureResultWriter<T, V, never>(this._writer, this._state);
125
+ if (writer) this._writer = writer;
126
+ return writer;
139
127
  }
140
128
 
141
129
  /** Discriminant for type narrowing. */
@@ -172,7 +160,7 @@ export class Ok<V, T extends LogSchema = LogSchema> {
172
160
 
173
161
  /** Transform the success value. */
174
162
  map<U>(fn: (value: V) => U): Ok<U, T> {
175
- return new Ok<U, T>(fn(this.value), this._schema, this._buffer);
163
+ return new Ok<U, T>(fn(this.value), this._state);
176
164
  }
177
165
 
178
166
  /** No-op for Ok (error transformation). */
@@ -270,19 +258,18 @@ export class Ok<V, T extends LogSchema = LogSchema> {
270
258
  export class Err<E, T extends LogSchema = LogSchema> {
271
259
  readonly error: E;
272
260
 
273
- private readonly _schema: T | undefined;
274
- private readonly _buffer: AnySpanBuffer | undefined;
275
- private _writer: BoundResultWriter<T, never, E> | undefined;
261
+ private readonly _state: WriterState | undefined;
262
+ private declare _writer: BoundResultWriter<T, never, E> | undefined;
276
263
 
277
- constructor(error: E, schema?: T, buffer?: AnySpanBuffer) {
264
+ constructor(error: E, state?: WriterState) {
278
265
  this.error = error;
279
- this._schema = schema;
280
- this._buffer = buffer;
266
+ this._state = state;
281
267
  }
282
268
 
283
269
  private _resultWriter(): BoundResultWriter<T, never, E> | undefined {
284
- this._writer = ensureResultWriter<T, never, E>(this._writer, this._schema, this._buffer, this.error, true);
285
- return this._writer;
270
+ const writer = ensureResultWriter<T, never, E>(this._writer, this._state);
271
+ if (writer) this._writer = writer;
272
+ return writer;
286
273
  }
287
274
 
288
275
  /** Discriminant for type narrowing. */
@@ -349,7 +336,7 @@ export class Err<E, T extends LogSchema = LogSchema> {
349
336
 
350
337
  /** Transform the error. */
351
338
  mapErr<F>(fn: (error: E) => F): Err<F, T> {
352
- return new Err<F, T>(fn(this.error), this._schema, this._buffer);
339
+ return new Err<F, T>(fn(this.error), this._state);
353
340
  }
354
341
 
355
342
  /** No-op for Err (returns self). */
@@ -0,0 +1,98 @@
1
+ export const RUNTIME_HINT_INITIAL_CAPACITY_MASK = 0x0000ffff;
2
+
3
+ export const RUNTIME_HINT_TAG = 0x00010000;
4
+ export const RUNTIME_HINT_LOG = 0x00020000;
5
+ export const RUNTIME_HINT_FF = 0x00040000;
6
+ export const RUNTIME_HINT_SPAN = 0x00080000;
7
+ export const RUNTIME_HINT_RESULT = 0x00100000;
8
+ export const RUNTIME_HINT_SCOPE = 0x00200000;
9
+ export const RUNTIME_HINT_DEPS = 0x00400000;
10
+ export const RUNTIME_HINT_CAPABILITIES_MASK = 0x007f0000;
11
+ export const RUNTIME_HINT_ANALYZED_VALID = 0x00800000;
12
+ export const RUNTIME_HINT_MESSAGE_LAYOUT_STATIC_ONLY = 0x01000000;
13
+ export const RUNTIME_HINT_MESSAGE_LAYOUT_DYNAMIC_ONLY = 0x02000000;
14
+ export const RUNTIME_HINT_MESSAGE_LAYOUT_MIXED = 0x03000000;
15
+ export const RUNTIME_HINT_MESSAGE_LAYOUT_MASK = 0x03000000;
16
+ export const RUNTIME_HINT_MESSAGE_PHYSICAL_PACKED = 0x04000000;
17
+ export const RUNTIME_HINT_MESSAGE_PHYSICAL_SPECIALIZED = 0x08000000;
18
+ export const RUNTIME_HINT_MESSAGE_PHYSICAL_MASK = 0x0c000000;
19
+ export const RUNTIME_HINT_RESERVED_MASK = 0xf0000000;
20
+
21
+ export const RUNTIME_HINT_FULL_CAPABILITIES = RUNTIME_HINT_CAPABILITIES_MASK;
22
+ export type MessageLayoutFamily = 'static-only' | 'mixed' | 'dynamic-only';
23
+ export type MessagePhysicalLayout = 'current' | 'specialized' | 'packed';
24
+
25
+ export interface DecodedRuntimeHint {
26
+ readonly analyzed: boolean;
27
+ readonly initialCapacity: number | undefined;
28
+ readonly capabilities: number;
29
+ readonly messageLayoutFamily: MessageLayoutFamily;
30
+ readonly messagePhysicalLayout: MessagePhysicalLayout;
31
+ }
32
+
33
+ export function isRuntimeHintAnalyzed(runtimeHint: number): boolean {
34
+ return (
35
+ Number.isInteger(runtimeHint) &&
36
+ runtimeHint >= 0 &&
37
+ runtimeHint <= 0xffffffff &&
38
+ (runtimeHint & RUNTIME_HINT_RESERVED_MASK) === 0 &&
39
+ (runtimeHint & RUNTIME_HINT_ANALYZED_VALID) !== 0
40
+ );
41
+ }
42
+
43
+ export function runtimeHintInitialCapacity(runtimeHint: number): number | undefined {
44
+ if (!isRuntimeHintAnalyzed(runtimeHint)) return undefined;
45
+ const capacity = runtimeHint & RUNTIME_HINT_INITIAL_CAPACITY_MASK;
46
+ return capacity < 2 ? undefined : capacity;
47
+ }
48
+
49
+ export function runtimeHintHasCapability(runtimeHint: number, capability: number): boolean {
50
+ return !isRuntimeHintAnalyzed(runtimeHint) || (runtimeHint & capability) !== 0;
51
+ }
52
+
53
+ export function runtimeHintMessageLayoutFamily(runtimeHint: number): MessageLayoutFamily {
54
+ if (!isRuntimeHintAnalyzed(runtimeHint)) return 'mixed';
55
+
56
+ switch (runtimeHint & RUNTIME_HINT_MESSAGE_LAYOUT_MASK) {
57
+ case RUNTIME_HINT_MESSAGE_LAYOUT_STATIC_ONLY:
58
+ return 'static-only';
59
+ case RUNTIME_HINT_MESSAGE_LAYOUT_DYNAMIC_ONLY:
60
+ return 'dynamic-only';
61
+ case RUNTIME_HINT_MESSAGE_LAYOUT_MIXED:
62
+ return 'mixed';
63
+ default:
64
+ return 'mixed';
65
+ }
66
+ }
67
+
68
+ export function runtimeHintMessagePhysicalLayout(runtimeHint: number): MessagePhysicalLayout {
69
+ if (!isRuntimeHintAnalyzed(runtimeHint)) return 'current';
70
+ switch (runtimeHint & RUNTIME_HINT_MESSAGE_PHYSICAL_MASK) {
71
+ case RUNTIME_HINT_MESSAGE_PHYSICAL_PACKED:
72
+ return 'packed';
73
+ case RUNTIME_HINT_MESSAGE_PHYSICAL_SPECIALIZED:
74
+ return 'specialized';
75
+ default:
76
+ return 'current';
77
+ }
78
+ }
79
+
80
+ export function decodeRuntimeHint(runtimeHint: number): DecodedRuntimeHint {
81
+ if (!isRuntimeHintAnalyzed(runtimeHint)) {
82
+ return {
83
+ analyzed: false,
84
+ initialCapacity: undefined,
85
+ capabilities: RUNTIME_HINT_FULL_CAPABILITIES,
86
+ messageLayoutFamily: 'mixed',
87
+ messagePhysicalLayout: 'current',
88
+ };
89
+ }
90
+
91
+ return {
92
+ analyzed: true,
93
+ initialCapacity: runtimeHintInitialCapacity(runtimeHint),
94
+ capabilities: runtimeHint & RUNTIME_HINT_CAPABILITIES_MASK,
95
+ messageLayoutFamily: runtimeHintMessageLayoutFamily(runtimeHint),
96
+ messagePhysicalLayout: runtimeHintMessagePhysicalLayout(runtimeHint),
97
+ };
98
+ }
@@ -3,6 +3,7 @@ import { describe, expect, test } from 'bun:test';
3
3
  import '../../__tests__/test-helpers.js';
4
4
  import { createTestTracerOptions } from '../../__tests__/test-helpers.js';
5
5
  import { defineOpContext } from '../../defineOpContext.js';
6
+ import { resolveEntryType } from '../../resolveMessage.js';
6
7
  import { TestTracer } from '../../tracers/TestTracer.js';
7
8
  import type { AnySpanBuffer } from '../../types.js';
8
9
  import { S } from '../builder.js';
@@ -20,7 +21,7 @@ function countEntryType(buffer: AnySpanBuffer, entryType: number): number {
20
21
  while (current) {
21
22
  const writeIndex = current._writeIndex;
22
23
  for (let i = 0; i < writeIndex; i++) {
23
- if (current.entry_type[i] === entryType) {
24
+ if (resolveEntryType(current, i) === entryType) {
24
25
  count++;
25
26
  }
26
27
  }
@@ -132,7 +132,7 @@ const schemaBuilderImpl: SchemaBuilder = {
132
132
  * - S.enum(['CREATE', 'READ', 'UPDATE', 'DELETE']) - for tag attributes
133
133
  * - S.enum(['dev', 'staging', 'prod']).default('dev').sync() - feature flag
134
134
  */
135
- enum: <T extends readonly string[]>(values: T): SchemaOrFlagBuilder<T[number]> & LazyEnumSchema<T[number]> => {
135
+ enum: <const T extends readonly string[]>(values: T): SchemaOrFlagBuilder<T[number]> & LazyEnumSchema<T[number]> => {
136
136
  const schema = ArrowS.enum(values);
137
137
  return createSchemaWithFlagBuilder(schema);
138
138
  },
@@ -207,7 +207,7 @@ export interface SchemaBuilder {
207
207
  * Use for: Operations, HTTP methods, entry types, status enums
208
208
  * Example: S.enum(['CREATE', 'READ', 'UPDATE', 'DELETE'])
209
209
  */
210
- enum<T extends readonly string[]>(values: T): SchemaOrFlagBuilder<T[number]>;
210
+ enum<const T extends readonly string[]>(values: T): SchemaOrFlagBuilder<T[number]>;
211
211
 
212
212
  /**
213
213
  * Category - Values that often repeat (limited cardinality)
@@ -0,0 +1,26 @@
1
+ import { checkCapacityTuning } from '../../capacityTuning.js';
2
+ import { EMPTY_SCOPE, materializeCompiledSpanBufferClass } from '../../spanBuffer.js';
3
+ import { copyThreadIdTo, getThreadId } from '../../threadId.js';
4
+
5
+ const SPAN_BUFFER_AOT_ABI_SYMBOL = Symbol.for('@smoothbricks/lmao/span-buffer/aot/v1');
6
+
7
+ const spanBufferAotRuntime = Object.freeze({
8
+ EMPTY_SCOPE,
9
+ checkCapacityTuning,
10
+ copyThreadIdTo,
11
+ getThreadId,
12
+ materializeCompiledSpanBufferClass,
13
+ });
14
+
15
+ const existingRuntime = Reflect.get(globalThis, SPAN_BUFFER_AOT_ABI_SYMBOL);
16
+ if (existingRuntime === undefined) {
17
+ Object.defineProperty(globalThis, SPAN_BUFFER_AOT_ABI_SYMBOL, {
18
+ value: spanBufferAotRuntime,
19
+ enumerable: false,
20
+ configurable: false,
21
+ writable: false,
22
+ });
23
+ } else if (existingRuntime !== spanBufferAotRuntime) {
24
+ // invariant throw: one realm must expose exactly one canonical SpanBuffer AOT ABI.
25
+ throw new TypeError('Conflicting LMAO SpanBuffer AOT runtime registrations');
26
+ }