@smoothbricks/lmao 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) hide show
  1. package/README.md +269 -0
  2. package/dist/allocator.wasm +0 -0
  3. package/dist/bun/preload.d.ts +11 -0
  4. package/dist/bun/preload.d.ts.map +1 -0
  5. package/dist/bun/preload.js +10 -0
  6. package/dist/bun/trace-preload.d.ts +8 -0
  7. package/dist/bun/trace-preload.d.ts.map +1 -0
  8. package/dist/bun/trace-preload.js +12 -0
  9. package/dist/es.d.ts +8 -0
  10. package/dist/es.d.ts.map +1 -0
  11. package/dist/es.js +9 -0
  12. package/dist/index.d.ts +41 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +84 -0
  15. package/dist/lib/JsBufferStrategy.d.ts +49 -0
  16. package/dist/lib/JsBufferStrategy.d.ts.map +1 -0
  17. package/dist/lib/JsBufferStrategy.js +60 -0
  18. package/dist/lib/archive/chunkCompaction.d.ts +15 -0
  19. package/dist/lib/archive/chunkCompaction.d.ts.map +1 -0
  20. package/dist/lib/archive/chunkCompaction.js +24 -0
  21. package/dist/lib/archive/chunkEnvelope.d.ts +21 -0
  22. package/dist/lib/archive/chunkEnvelope.d.ts.map +1 -0
  23. package/dist/lib/archive/chunkEnvelope.js +55 -0
  24. package/dist/lib/archive/chunkRouting.d.ts +10 -0
  25. package/dist/lib/archive/chunkRouting.d.ts.map +1 -0
  26. package/dist/lib/archive/chunkRouting.js +47 -0
  27. package/dist/lib/archive/chunkStats.d.ts +12 -0
  28. package/dist/lib/archive/chunkStats.d.ts.map +1 -0
  29. package/dist/lib/archive/chunkStats.js +10 -0
  30. package/dist/lib/archive/index.d.ts +5 -0
  31. package/dist/lib/archive/index.d.ts.map +1 -0
  32. package/dist/lib/archive/index.js +4 -0
  33. package/dist/lib/arrow/capacityStats.d.ts +9 -0
  34. package/dist/lib/arrow/capacityStats.d.ts.map +1 -0
  35. package/dist/lib/arrow/capacityStats.js +231 -0
  36. package/dist/lib/arrow/dictionaries.d.ts +27 -0
  37. package/dist/lib/arrow/dictionaries.d.ts.map +1 -0
  38. package/dist/lib/arrow/dictionaries.js +135 -0
  39. package/dist/lib/arrow/flechette.d.ts +40 -0
  40. package/dist/lib/arrow/flechette.d.ts.map +1 -0
  41. package/dist/lib/arrow/flechette.js +67 -0
  42. package/dist/lib/arrow/utils.d.ts +38 -0
  43. package/dist/lib/arrow/utils.d.ts.map +1 -0
  44. package/dist/lib/arrow/utils.js +112 -0
  45. package/dist/lib/buffer/Nanoseconds.d.ts +109 -0
  46. package/dist/lib/buffer/Nanoseconds.d.ts.map +1 -0
  47. package/dist/lib/buffer/Nanoseconds.js +86 -0
  48. package/dist/lib/bufferStrategy.d.ts +95 -0
  49. package/dist/lib/bufferStrategy.d.ts.map +1 -0
  50. package/dist/lib/bufferStrategy.js +1 -0
  51. package/dist/lib/capacityTuning.d.ts +50 -0
  52. package/dist/lib/capacityTuning.d.ts.map +1 -0
  53. package/dist/lib/capacityTuning.js +65 -0
  54. package/dist/lib/codegen/evaluatorGenerator.d.ts +35 -0
  55. package/dist/lib/codegen/evaluatorGenerator.d.ts.map +1 -0
  56. package/dist/lib/codegen/evaluatorGenerator.js +199 -0
  57. package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts +139 -0
  58. package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts.map +1 -0
  59. package/dist/lib/codegen/fixedPositionWriterGenerator.js +289 -0
  60. package/dist/lib/codegen/spanLoggerGenerator.d.ts +115 -0
  61. package/dist/lib/codegen/spanLoggerGenerator.d.ts.map +1 -0
  62. package/dist/lib/codegen/spanLoggerGenerator.js +575 -0
  63. package/dist/lib/convertToArrow.d.ts +40 -0
  64. package/dist/lib/convertToArrow.d.ts.map +1 -0
  65. package/dist/lib/convertToArrow.js +1467 -0
  66. package/dist/lib/defineOpContext.d.ts +96 -0
  67. package/dist/lib/defineOpContext.d.ts.map +1 -0
  68. package/dist/lib/defineOpContext.js +227 -0
  69. package/dist/lib/errors/Blocked.d.ts +113 -0
  70. package/dist/lib/errors/Blocked.d.ts.map +1 -0
  71. package/dist/lib/errors/Blocked.js +68 -0
  72. package/dist/lib/errors/CodeError.d.ts +101 -0
  73. package/dist/lib/errors/CodeError.d.ts.map +1 -0
  74. package/dist/lib/errors/CodeError.js +42 -0
  75. package/dist/lib/errors/RetriesExhausted.d.ts +67 -0
  76. package/dist/lib/errors/RetriesExhausted.d.ts.map +1 -0
  77. package/dist/lib/errors/RetriesExhausted.js +31 -0
  78. package/dist/lib/errors/Transient.d.ts +115 -0
  79. package/dist/lib/errors/Transient.d.ts.map +1 -0
  80. package/dist/lib/errors/Transient.js +54 -0
  81. package/dist/lib/errors/index.d.ts +14 -0
  82. package/dist/lib/errors/index.d.ts.map +1 -0
  83. package/dist/lib/errors/index.js +16 -0
  84. package/dist/lib/errors/retry-policy.d.ts +60 -0
  85. package/dist/lib/errors/retry-policy.d.ts.map +1 -0
  86. package/dist/lib/errors/retry-policy.js +54 -0
  87. package/dist/lib/flushScheduler.d.ts +162 -0
  88. package/dist/lib/flushScheduler.d.ts.map +1 -0
  89. package/dist/lib/flushScheduler.js +388 -0
  90. package/dist/lib/library.d.ts +149 -0
  91. package/dist/lib/library.d.ts.map +1 -0
  92. package/dist/lib/library.js +588 -0
  93. package/dist/lib/logApi.d.ts +61 -0
  94. package/dist/lib/logApi.d.ts.map +1 -0
  95. package/dist/lib/logApi.js +12 -0
  96. package/dist/lib/logBinding.d.ts +63 -0
  97. package/dist/lib/logBinding.d.ts.map +1 -0
  98. package/dist/lib/logBinding.js +1 -0
  99. package/dist/lib/op.d.ts +105 -0
  100. package/dist/lib/op.d.ts.map +1 -0
  101. package/dist/lib/op.js +59 -0
  102. package/dist/lib/opContext/contextTypes.d.ts +88 -0
  103. package/dist/lib/opContext/contextTypes.d.ts.map +1 -0
  104. package/dist/lib/opContext/contextTypes.js +34 -0
  105. package/dist/lib/opContext/createOpGroup.d.ts +57 -0
  106. package/dist/lib/opContext/createOpGroup.d.ts.map +1 -0
  107. package/dist/lib/opContext/createOpGroup.js +341 -0
  108. package/dist/lib/opContext/defineOp.d.ts +83 -0
  109. package/dist/lib/opContext/defineOp.d.ts.map +1 -0
  110. package/dist/lib/opContext/defineOp.js +197 -0
  111. package/dist/lib/opContext/featureFlagTypes.d.ts +58 -0
  112. package/dist/lib/opContext/featureFlagTypes.d.ts.map +1 -0
  113. package/dist/lib/opContext/featureFlagTypes.js +1 -0
  114. package/dist/lib/opContext/index.d.ts +13 -0
  115. package/dist/lib/opContext/index.d.ts.map +1 -0
  116. package/dist/lib/opContext/index.js +15 -0
  117. package/dist/lib/opContext/opGroupTypes.d.ts +250 -0
  118. package/dist/lib/opContext/opGroupTypes.d.ts.map +1 -0
  119. package/dist/lib/opContext/opGroupTypes.js +31 -0
  120. package/dist/lib/opContext/opTypes.d.ts +48 -0
  121. package/dist/lib/opContext/opTypes.d.ts.map +1 -0
  122. package/dist/lib/opContext/opTypes.js +7 -0
  123. package/dist/lib/opContext/spanContextTypes.d.ts +347 -0
  124. package/dist/lib/opContext/spanContextTypes.d.ts.map +1 -0
  125. package/dist/lib/opContext/spanContextTypes.js +1 -0
  126. package/dist/lib/opContext/types.d.ts +297 -0
  127. package/dist/lib/opContext/types.d.ts.map +1 -0
  128. package/dist/lib/opContext/types.js +16 -0
  129. package/dist/lib/result.d.ts +308 -0
  130. package/dist/lib/result.d.ts.map +1 -0
  131. package/dist/lib/result.js +359 -0
  132. package/dist/lib/schema/LogSchema.d.ts +62 -0
  133. package/dist/lib/schema/LogSchema.d.ts.map +1 -0
  134. package/dist/lib/schema/LogSchema.js +134 -0
  135. package/dist/lib/schema/builder.d.ts +12 -0
  136. package/dist/lib/schema/builder.d.ts.map +1 -0
  137. package/dist/lib/schema/builder.js +169 -0
  138. package/dist/lib/schema/defineFeatureFlags.d.ts +60 -0
  139. package/dist/lib/schema/defineFeatureFlags.d.ts.map +1 -0
  140. package/dist/lib/schema/defineFeatureFlags.js +29 -0
  141. package/dist/lib/schema/defineLogSchema.d.ts +87 -0
  142. package/dist/lib/schema/defineLogSchema.d.ts.map +1 -0
  143. package/dist/lib/schema/defineLogSchema.js +171 -0
  144. package/dist/lib/schema/evaluator.d.ts +267 -0
  145. package/dist/lib/schema/evaluator.d.ts.map +1 -0
  146. package/dist/lib/schema/evaluator.js +169 -0
  147. package/dist/lib/schema/extend.d.ts +14 -0
  148. package/dist/lib/schema/extend.d.ts.map +1 -0
  149. package/dist/lib/schema/extend.js +51 -0
  150. package/dist/lib/schema/systemSchema.d.ts +112 -0
  151. package/dist/lib/schema/systemSchema.d.ts.map +1 -0
  152. package/dist/lib/schema/systemSchema.js +260 -0
  153. package/dist/lib/schema/typeGuards.d.ts +52 -0
  154. package/dist/lib/schema/typeGuards.d.ts.map +1 -0
  155. package/dist/lib/schema/typeGuards.js +127 -0
  156. package/dist/lib/schema/types.d.ts +156 -0
  157. package/dist/lib/schema/types.d.ts.map +1 -0
  158. package/dist/lib/schema/types.js +4 -0
  159. package/dist/lib/spanBuffer.d.ts +133 -0
  160. package/dist/lib/spanBuffer.d.ts.map +1 -0
  161. package/dist/lib/spanBuffer.js +442 -0
  162. package/dist/lib/spanBufferHelpers.d.ts +53 -0
  163. package/dist/lib/spanBufferHelpers.d.ts.map +1 -0
  164. package/dist/lib/spanBufferHelpers.js +65 -0
  165. package/dist/lib/spanBufferStats.d.ts +38 -0
  166. package/dist/lib/spanBufferStats.d.ts.map +1 -0
  167. package/dist/lib/spanBufferStats.js +1 -0
  168. package/dist/lib/spanContext.d.ts +141 -0
  169. package/dist/lib/spanContext.d.ts.map +1 -0
  170. package/dist/lib/spanContext.js +763 -0
  171. package/dist/lib/sqlite/index.d.ts +14 -0
  172. package/dist/lib/sqlite/index.d.ts.map +1 -0
  173. package/dist/lib/sqlite/index.js +12 -0
  174. package/dist/lib/sqlite/sqlite-async-writer.d.ts +24 -0
  175. package/dist/lib/sqlite/sqlite-async-writer.d.ts.map +1 -0
  176. package/dist/lib/sqlite/sqlite-async-writer.js +65 -0
  177. package/dist/lib/sqlite/sqlite-common.d.ts +37 -0
  178. package/dist/lib/sqlite/sqlite-common.d.ts.map +1 -0
  179. package/dist/lib/sqlite/sqlite-common.js +207 -0
  180. package/dist/lib/sqlite/sqlite-d1.d.ts +25 -0
  181. package/dist/lib/sqlite/sqlite-d1.d.ts.map +1 -0
  182. package/dist/lib/sqlite/sqlite-d1.js +67 -0
  183. package/dist/lib/sqlite/sqlite-db.d.ts +29 -0
  184. package/dist/lib/sqlite/sqlite-db.d.ts.map +1 -0
  185. package/dist/lib/sqlite/sqlite-db.js +1 -0
  186. package/dist/lib/sqlite/sqlite-node.d.ts +16 -0
  187. package/dist/lib/sqlite/sqlite-node.d.ts.map +1 -0
  188. package/dist/lib/sqlite/sqlite-node.js +68 -0
  189. package/dist/lib/sqlite/sqlite-writer.d.ts +39 -0
  190. package/dist/lib/sqlite/sqlite-writer.d.ts.map +1 -0
  191. package/dist/lib/sqlite/sqlite-writer.js +78 -0
  192. package/dist/lib/testing/bun-harness.d.ts +150 -0
  193. package/dist/lib/testing/bun-harness.d.ts.map +1 -0
  194. package/dist/lib/testing/bun-harness.js +729 -0
  195. package/dist/lib/testing/extractFacts.d.ts +73 -0
  196. package/dist/lib/testing/extractFacts.d.ts.map +1 -0
  197. package/dist/lib/testing/extractFacts.js +237 -0
  198. package/dist/lib/testing/facts.d.ts +235 -0
  199. package/dist/lib/testing/facts.d.ts.map +1 -0
  200. package/dist/lib/testing/facts.js +209 -0
  201. package/dist/lib/testing/index.d.ts +58 -0
  202. package/dist/lib/testing/index.d.ts.map +1 -0
  203. package/dist/lib/testing/index.js +74 -0
  204. package/dist/lib/testing/queryable-span.d.ts +39 -0
  205. package/dist/lib/testing/queryable-span.d.ts.map +1 -0
  206. package/dist/lib/testing/queryable-span.js +58 -0
  207. package/dist/lib/testing/span-query.d.ts +21 -0
  208. package/dist/lib/testing/span-query.d.ts.map +1 -0
  209. package/dist/lib/testing/span-query.js +47 -0
  210. package/dist/lib/testing/stdio-replay.d.ts +4 -0
  211. package/dist/lib/testing/stdio-replay.d.ts.map +1 -0
  212. package/dist/lib/testing/stdio-replay.js +42 -0
  213. package/dist/lib/testing/trace-query.d.ts +59 -0
  214. package/dist/lib/testing/trace-query.d.ts.map +1 -0
  215. package/dist/lib/testing/trace-query.js +462 -0
  216. package/dist/lib/testing/vitest-harness.d.ts +135 -0
  217. package/dist/lib/testing/vitest-harness.d.ts.map +1 -0
  218. package/dist/lib/testing/vitest-harness.js +486 -0
  219. package/dist/lib/threadId.d.ts +58 -0
  220. package/dist/lib/threadId.d.ts.map +1 -0
  221. package/dist/lib/threadId.js +123 -0
  222. package/dist/lib/traceContext.d.ts +116 -0
  223. package/dist/lib/traceContext.d.ts.map +1 -0
  224. package/dist/lib/traceContext.js +37 -0
  225. package/dist/lib/traceId.d.ts +78 -0
  226. package/dist/lib/traceId.d.ts.map +1 -0
  227. package/dist/lib/traceId.js +87 -0
  228. package/dist/lib/traceRoot.d.ts +133 -0
  229. package/dist/lib/traceRoot.d.ts.map +1 -0
  230. package/dist/lib/traceRoot.es.d.ts +75 -0
  231. package/dist/lib/traceRoot.es.d.ts.map +1 -0
  232. package/dist/lib/traceRoot.es.js +129 -0
  233. package/dist/lib/traceRoot.js +19 -0
  234. package/dist/lib/traceRoot.node.d.ts +77 -0
  235. package/dist/lib/traceRoot.node.d.ts.map +1 -0
  236. package/dist/lib/traceRoot.node.js +133 -0
  237. package/dist/lib/traceRoot.universal.d.ts +3 -0
  238. package/dist/lib/traceRoot.universal.d.ts.map +1 -0
  239. package/dist/lib/traceRoot.universal.js +17 -0
  240. package/dist/lib/tracer.d.ts +296 -0
  241. package/dist/lib/tracer.d.ts.map +1 -0
  242. package/dist/lib/tracer.js +346 -0
  243. package/dist/lib/tracers/ArrayQueueTracer.d.ts +56 -0
  244. package/dist/lib/tracers/ArrayQueueTracer.d.ts.map +1 -0
  245. package/dist/lib/tracers/ArrayQueueTracer.js +67 -0
  246. package/dist/lib/tracers/CompositeTracer.d.ts +24 -0
  247. package/dist/lib/tracers/CompositeTracer.d.ts.map +1 -0
  248. package/dist/lib/tracers/CompositeTracer.js +57 -0
  249. package/dist/lib/tracers/NoOpTracer.d.ts +58 -0
  250. package/dist/lib/tracers/NoOpTracer.d.ts.map +1 -0
  251. package/dist/lib/tracers/NoOpTracer.js +41 -0
  252. package/dist/lib/tracers/SQLiteTracer.d.ts +42 -0
  253. package/dist/lib/tracers/SQLiteTracer.d.ts.map +1 -0
  254. package/dist/lib/tracers/SQLiteTracer.js +84 -0
  255. package/dist/lib/tracers/StdioTracer.d.ts +83 -0
  256. package/dist/lib/tracers/StdioTracer.d.ts.map +1 -0
  257. package/dist/lib/tracers/StdioTracer.js +270 -0
  258. package/dist/lib/tracers/TestTracer.d.ts +95 -0
  259. package/dist/lib/tracers/TestTracer.d.ts.map +1 -0
  260. package/dist/lib/tracers/TestTracer.js +87 -0
  261. package/dist/lib/tracers/index.d.ts +12 -0
  262. package/dist/lib/tracers/index.d.ts.map +1 -0
  263. package/dist/lib/tracers/index.js +11 -0
  264. package/dist/lib/types.d.ts +366 -0
  265. package/dist/lib/types.d.ts.map +1 -0
  266. package/dist/lib/types.js +1 -0
  267. package/dist/lib/utf8Cache.d.ts +111 -0
  268. package/dist/lib/utf8Cache.d.ts.map +1 -0
  269. package/dist/lib/utf8Cache.js +177 -0
  270. package/dist/lib/wasm/WasmBufferStrategy.d.ts +88 -0
  271. package/dist/lib/wasm/WasmBufferStrategy.d.ts.map +1 -0
  272. package/dist/lib/wasm/WasmBufferStrategy.js +138 -0
  273. package/dist/lib/wasm/wasmAllocator.d.ts +109 -0
  274. package/dist/lib/wasm/wasmAllocator.d.ts.map +1 -0
  275. package/dist/lib/wasm/wasmAllocator.js +227 -0
  276. package/dist/lib/wasm/wasmSpanBuffer.d.ts +123 -0
  277. package/dist/lib/wasm/wasmSpanBuffer.d.ts.map +1 -0
  278. package/dist/lib/wasm/wasmSpanBuffer.js +772 -0
  279. package/dist/lib/wasm/wasmTraceRoot.d.ts +167 -0
  280. package/dist/lib/wasm/wasmTraceRoot.d.ts.map +1 -0
  281. package/dist/lib/wasm/wasmTraceRoot.js +264 -0
  282. package/dist/node.d.ts +7 -0
  283. package/dist/node.d.ts.map +1 -0
  284. package/dist/node.js +8 -0
  285. package/dist/testing.d.ts +18 -0
  286. package/dist/testing.d.ts.map +1 -0
  287. package/dist/testing.js +17 -0
  288. package/package.json +193 -0
  289. package/src/bun/preload.ts +11 -0
  290. package/src/bun/trace-preload.ts +14 -0
  291. package/src/es.ts +11 -0
  292. package/src/index.ts +194 -0
  293. package/src/lib/JsBufferStrategy.ts +102 -0
  294. package/src/lib/__tests__/arrow-builder-integration/arrow-conversion.test.ts +485 -0
  295. package/src/lib/__tests__/arrow-builder-integration/binary-arrow-conversion.test.ts +390 -0
  296. package/src/lib/__tests__/arrow-builder-integration/binary-comparison.test.ts +647 -0
  297. package/src/lib/__tests__/arrow-builder-integration/binary-format-compliance.test.ts +292 -0
  298. package/src/lib/__tests__/arrow-builder-integration/buffer-chaining.test.ts +354 -0
  299. package/src/lib/__tests__/arrow-builder-integration/foundation.test.ts +127 -0
  300. package/src/lib/__tests__/arrow-builder-integration/integration.test.ts +392 -0
  301. package/src/lib/__tests__/arrow-builder-integration/lazy-columns.test.ts +389 -0
  302. package/src/lib/__tests__/arrow-conversion-algorithms.test.ts +54 -0
  303. package/src/lib/__tests__/arrow-test-helpers.ts +71 -0
  304. package/src/lib/__tests__/binary-e2e.test.ts +203 -0
  305. package/src/lib/__tests__/buffer-overflow-op-api.test.ts +608 -0
  306. package/src/lib/__tests__/buffer-overflow.test.ts +612 -0
  307. package/src/lib/__tests__/capacity-tuning.test.ts +544 -0
  308. package/src/lib/__tests__/effective-schema.test.ts +439 -0
  309. package/src/lib/__tests__/flechette.test.ts +42 -0
  310. package/src/lib/__tests__/flushScheduler.test.ts +537 -0
  311. package/src/lib/__tests__/integration.test.ts +600 -0
  312. package/src/lib/__tests__/library.test.ts +934 -0
  313. package/src/lib/__tests__/nested-library-tasks.test.ts +849 -0
  314. package/src/lib/__tests__/op-context-binding.test.ts +135 -0
  315. package/src/lib/__tests__/op-metadata.test.ts +198 -0
  316. package/src/lib/__tests__/op-type-safety.test.ts +71 -0
  317. package/src/lib/__tests__/package-exports.test.ts +57 -0
  318. package/src/lib/__tests__/remapped-buffer-view-integration.test.ts +319 -0
  319. package/src/lib/__tests__/remapped-buffer-view.test.ts +635 -0
  320. package/src/lib/__tests__/scope-attributes.test.ts +348 -0
  321. package/src/lib/__tests__/span-lifecycle.test.ts +680 -0
  322. package/src/lib/__tests__/sync-async-trace.test.ts +435 -0
  323. package/src/lib/__tests__/test-helpers.ts +318 -0
  324. package/src/lib/__tests__/timestamp.test.ts +259 -0
  325. package/src/lib/__tests__/trace-archive-primitives.test.ts +98 -0
  326. package/src/lib/__tests__/traceContext-type-enforcement.test.ts +271 -0
  327. package/src/lib/__tests__/tracer.test.ts +211 -0
  328. package/src/lib/__tests__/type-narrowing.test.ts +137 -0
  329. package/src/lib/archive/chunkCompaction.ts +44 -0
  330. package/src/lib/archive/chunkEnvelope.ts +79 -0
  331. package/src/lib/archive/chunkRouting.ts +70 -0
  332. package/src/lib/archive/chunkStats.ts +25 -0
  333. package/src/lib/archive/index.ts +4 -0
  334. package/src/lib/arrow/capacityStats.ts +340 -0
  335. package/src/lib/arrow/dictionaries.ts +159 -0
  336. package/src/lib/arrow/flechette.ts +114 -0
  337. package/src/lib/arrow/utils.ts +126 -0
  338. package/src/lib/buffer/Nanoseconds.ts +131 -0
  339. package/src/lib/bufferStrategy.ts +106 -0
  340. package/src/lib/capacityTuning.ts +102 -0
  341. package/src/lib/codegen/__tests__/__snapshots__/evaluatorGenerator.test.ts.snap +160 -0
  342. package/src/lib/codegen/__tests__/__snapshots__/scopeGenerator.test.ts.snap +196 -0
  343. package/src/lib/codegen/__tests__/__snapshots__/spanLoggerGenerator.test.ts.snap +1965 -0
  344. package/src/lib/codegen/__tests__/evaluatorGenerator.test.ts +516 -0
  345. package/src/lib/codegen/__tests__/nullBitmap.test.ts +207 -0
  346. package/src/lib/codegen/__tests__/spanLoggerGenerator.test.ts +237 -0
  347. package/src/lib/codegen/evaluatorGenerator.ts +309 -0
  348. package/src/lib/codegen/fixedPositionWriterGenerator.ts +444 -0
  349. package/src/lib/codegen/spanLoggerGenerator.ts +715 -0
  350. package/src/lib/convertToArrow.ts +1805 -0
  351. package/src/lib/defineOpContext.ts +398 -0
  352. package/src/lib/errors/Blocked.ts +165 -0
  353. package/src/lib/errors/CodeError.ts +132 -0
  354. package/src/lib/errors/RetriesExhausted.ts +78 -0
  355. package/src/lib/errors/Transient.ts +168 -0
  356. package/src/lib/errors/__tests__/Blocked-config.test.ts +152 -0
  357. package/src/lib/errors/__tests__/Transient.test.ts +129 -0
  358. package/src/lib/errors/__tests__/retry-policy.test.ts +85 -0
  359. package/src/lib/errors/index.ts +24 -0
  360. package/src/lib/errors/retry-policy.ts +87 -0
  361. package/src/lib/flushScheduler.ts +509 -0
  362. package/src/lib/library.ts +682 -0
  363. package/src/lib/logApi.ts +70 -0
  364. package/src/lib/logBinding.ts +67 -0
  365. package/src/lib/op.ts +103 -0
  366. package/src/lib/opContext/__tests__/retry.test.ts +764 -0
  367. package/src/lib/opContext/contextTypes.ts +130 -0
  368. package/src/lib/opContext/createOpGroup.ts +456 -0
  369. package/src/lib/opContext/defineOp.ts +281 -0
  370. package/src/lib/opContext/featureFlagTypes.ts +54 -0
  371. package/src/lib/opContext/index.ts +16 -0
  372. package/src/lib/opContext/opGroupTypes.ts +342 -0
  373. package/src/lib/opContext/opTypes.ts +80 -0
  374. package/src/lib/opContext/spanContextTypes.ts +398 -0
  375. package/src/lib/opContext/types.ts +403 -0
  376. package/src/lib/result.ts +550 -0
  377. package/src/lib/schema/LogSchema.ts +153 -0
  378. package/src/lib/schema/__tests__/defineLogSchema.test.ts +342 -0
  379. package/src/lib/schema/__tests__/featureFlags.test.ts +443 -0
  380. package/src/lib/schema/builder.ts +201 -0
  381. package/src/lib/schema/defineFeatureFlags.ts +91 -0
  382. package/src/lib/schema/defineLogSchema.ts +291 -0
  383. package/src/lib/schema/evaluator.ts +404 -0
  384. package/src/lib/schema/extend.ts +69 -0
  385. package/src/lib/schema/systemSchema.ts +339 -0
  386. package/src/lib/schema/typeGuards.ts +163 -0
  387. package/src/lib/schema/types.ts +265 -0
  388. package/src/lib/spanBuffer.ts +571 -0
  389. package/src/lib/spanBufferHelpers.ts +73 -0
  390. package/src/lib/spanBufferStats.ts +40 -0
  391. package/src/lib/spanContext.ts +1566 -0
  392. package/src/lib/sqlite/__tests__/sqlite-common.test.ts +89 -0
  393. package/src/lib/sqlite/index.ts +26 -0
  394. package/src/lib/sqlite/sqlite-async-writer.ts +101 -0
  395. package/src/lib/sqlite/sqlite-common.ts +309 -0
  396. package/src/lib/sqlite/sqlite-d1.ts +104 -0
  397. package/src/lib/sqlite/sqlite-db.ts +32 -0
  398. package/src/lib/sqlite/sqlite-node.ts +83 -0
  399. package/src/lib/sqlite/sqlite-writer.ts +128 -0
  400. package/src/lib/testing/TRACE-TESTING.md +100 -0
  401. package/src/lib/testing/__tests__/bun-harness.test.ts +108 -0
  402. package/src/lib/testing/__tests__/extractFacts.test.ts +279 -0
  403. package/src/lib/testing/__tests__/facts.test.ts +324 -0
  404. package/src/lib/testing/__tests__/vitest-harness.test.ts +32 -0
  405. package/src/lib/testing/bun-harness.ts +990 -0
  406. package/src/lib/testing/extractFacts.ts +362 -0
  407. package/src/lib/testing/facts.ts +470 -0
  408. package/src/lib/testing/index.ts +141 -0
  409. package/src/lib/testing/queryable-span.ts +108 -0
  410. package/src/lib/testing/span-query.ts +65 -0
  411. package/src/lib/testing/stdio-replay.ts +50 -0
  412. package/src/lib/testing/trace-query.ts +329 -0
  413. package/src/lib/testing/vitest-harness.ts +691 -0
  414. package/src/lib/threadId.ts +135 -0
  415. package/src/lib/traceContext.ts +182 -0
  416. package/src/lib/traceId.ts +142 -0
  417. package/src/lib/traceRoot.es.ts +157 -0
  418. package/src/lib/traceRoot.node.ts +170 -0
  419. package/src/lib/traceRoot.ts +154 -0
  420. package/src/lib/traceRoot.universal.ts +22 -0
  421. package/src/lib/tracer.ts +896 -0
  422. package/src/lib/tracers/ArrayQueueTracer.ts +76 -0
  423. package/src/lib/tracers/CompositeTracer.ts +76 -0
  424. package/src/lib/tracers/NoOpTracer.ts +73 -0
  425. package/src/lib/tracers/SQLiteTracer.ts +115 -0
  426. package/src/lib/tracers/StdioTracer.ts +380 -0
  427. package/src/lib/tracers/TestTracer.ts +146 -0
  428. package/src/lib/tracers/__tests__/ArrayQueueTracer.test.ts +184 -0
  429. package/src/lib/tracers/__tests__/NoOpTracer.test.ts +204 -0
  430. package/src/lib/tracers/__tests__/StdioTracer.test.ts +313 -0
  431. package/src/lib/tracers/__tests__/TestTracer.test.ts +200 -0
  432. package/src/lib/tracers/index.ts +12 -0
  433. package/src/lib/types.ts +498 -0
  434. package/src/lib/utf8Cache.ts +201 -0
  435. package/src/lib/wasm/WasmBufferStrategy.ts +219 -0
  436. package/src/lib/wasm/__tests__/WasmBufferStrategy.test.ts +256 -0
  437. package/src/lib/wasm/__tests__/wasm-integration.test.ts +476 -0
  438. package/src/lib/wasm/__tests__/wasmAllocator.test.ts +699 -0
  439. package/src/lib/wasm/__tests__/wasmSpanBuffer.test.ts +449 -0
  440. package/src/lib/wasm/__tests__/wasmTraceRoot.test.ts +390 -0
  441. package/src/lib/wasm/__tests__/wasmTracer.test.ts.disabled +444 -0
  442. package/src/lib/wasm/allocator.zig +945 -0
  443. package/src/lib/wasm/wasmAllocator.ts +469 -0
  444. package/src/lib/wasm/wasmSpanBuffer.ts +1014 -0
  445. package/src/lib/wasm/wasmTraceRoot.ts +315 -0
  446. package/src/node.ts +10 -0
  447. package/src/testing.ts +18 -0
@@ -0,0 +1,444 @@
1
+ /**
2
+ * Runtime code generation for TagWriter and ResultWriter classes
3
+ *
4
+ * These classes provide fluent setter methods that write to a fixed position in a SpanBuffer:
5
+ * - TagWriter: writes to position 0 (span-start row) via ctx.tag.userId("123")
6
+ * - ResultWriter: writes to position 1 (result row) via ctx.ok(data).userId("123")
7
+ *
8
+ * Both share the same codegen since they only differ in:
9
+ * 1. The fixed position (0 vs 1)
10
+ * 2. ResultWriter has additional _result/_error properties
11
+ *
12
+ * WHY Fixed Positions:
13
+ * - Row 0: span-start entry (written at span creation, attributes set via ctx.tag)
14
+ * - Row 1: span-end entry (written at ctx.ok()/ctx.err(), attributes set via fluent API)
15
+ *
16
+ * Pattern:
17
+ * - Each setter calls this._buffer.columnName(this._pos, value) and returns this
18
+ * - Fluent chaining: ctx.tag.userId("123").requestId("abc")
19
+ * - Zero allocation: returns same object reference
20
+ */
21
+
22
+ import { bufferHelpers, type ColumnEntry } from '@smoothbricks/arrow-builder';
23
+ import { getEnumValues, getSchemaType } from '../schema/typeGuards.js';
24
+ import type { InferSchema, LogSchema } from '../schema/types.js';
25
+ import type { AnySpanBuffer } from '../types.js';
26
+
27
+ /**
28
+ * Extension options for injecting custom code into generated writer classes.
29
+ */
30
+ export interface FixedPositionWriterExtension {
31
+ /**
32
+ * Additional code to add to the constructor (after buffer assignment).
33
+ * Has access to `this` and constructorParams.
34
+ */
35
+ constructorCode?: string;
36
+
37
+ /**
38
+ * Additional methods to add to the class body.
39
+ */
40
+ methods?: string;
41
+
42
+ /**
43
+ * Constructor parameters beyond buffer.
44
+ * Added AFTER buffer in the constructor signature.
45
+ * @example "result, isError"
46
+ */
47
+ constructorParams?: string;
48
+ }
49
+
50
+ /**
51
+ * TagWriter interface - fluent setter API for span-start attributes (row 0)
52
+ */
53
+ export type TagWriter<T extends LogSchema> = {
54
+ /**
55
+ * Bulk set multiple attributes at once.
56
+ */
57
+ with(attributes: Partial<InferSchema<T>>): TagWriter<T>;
58
+ } & {
59
+ /**
60
+ * Individual attribute setters - each returns `this` for chaining.
61
+ */
62
+ [K in keyof InferSchema<T>]: (value: InferSchema<T>[K]) => TagWriter<T>;
63
+ };
64
+
65
+ /**
66
+ * ResultWriter interface - fluent setter API for result attributes (row 1)
67
+ *
68
+ * Includes _result and _error properties for accessing the return value or error.
69
+ */
70
+ export type ResultWriter<T extends LogSchema, R = unknown, E = unknown> = {
71
+ /**
72
+ * The successful result value (set by ctx.ok(data))
73
+ */
74
+ readonly _result: R | undefined;
75
+
76
+ /**
77
+ * The error value (set by ctx.err(error))
78
+ */
79
+ readonly _error: E | undefined;
80
+
81
+ /**
82
+ * Whether this is an error result
83
+ */
84
+ readonly _isError: boolean;
85
+
86
+ /**
87
+ * Bulk set multiple attributes at once.
88
+ */
89
+ with(attributes: Partial<InferSchema<T>>): ResultWriter<T, R, E>;
90
+
91
+ /**
92
+ * Set the result-row message (row 1).
93
+ */
94
+ message(text: string): ResultWriter<T, R, E>;
95
+
96
+ /**
97
+ * Set the result-row source line (row 1).
98
+ */
99
+ line(lineNumber: number): ResultWriter<T, R, E>;
100
+ } & {
101
+ /**
102
+ * Individual attribute setters - each returns `this` for chaining.
103
+ */
104
+ [K in keyof InferSchema<T>]: (value: InferSchema<T>[K]) => ResultWriter<T, R, E>;
105
+ };
106
+
107
+ type TagWriterConstructor<T extends LogSchema> = new (buffer: AnySpanBuffer) => TagWriter<T>;
108
+
109
+ type ResultWriterConstructor<T extends LogSchema> = new <R = unknown, E = unknown>(
110
+ buffer: AnySpanBuffer,
111
+ resultOrError: unknown,
112
+ isError: boolean,
113
+ ) => ResultWriter<T, R, E>;
114
+
115
+ function isTagWriterConstructor<T extends LogSchema>(value: unknown): value is TagWriterConstructor<T> {
116
+ return typeof value === 'function';
117
+ }
118
+
119
+ function isResultWriterConstructor<T extends LogSchema>(value: unknown): value is ResultWriterConstructor<T> {
120
+ return typeof value === 'function';
121
+ }
122
+
123
+ /**
124
+ * Generate enum value mapping code.
125
+ * Creates a switch-case statement for compile-time enum mapping.
126
+ */
127
+ function generateEnumMapping(fieldName: string, enumValues: readonly string[]): string {
128
+ const cases = enumValues.map((value, index) => ` case ${JSON.stringify(value)}: return ${index};`).join('\n');
129
+
130
+ return `
131
+ function getEnumIndex_${fieldName}(value) {
132
+ switch(value) {
133
+ ${cases}
134
+ default: return 0;
135
+ }
136
+ }`;
137
+ }
138
+
139
+ /**
140
+ * Generate setter method code for a single attribute.
141
+ * Calls this._buffer.columnName(this._pos, value) and returns this.
142
+ */
143
+ function generateSetterMethod(fieldName: string, schema: unknown, hasEnumMapping: boolean): string {
144
+ const columnName = fieldName;
145
+ const lmaoType = getSchemaType(schema);
146
+
147
+ if (lmaoType === 'enum' && hasEnumMapping) {
148
+ return `
149
+ ${fieldName}(value) {
150
+ this._buffer.${columnName}(this._pos, getEnumIndex_${fieldName}(value));
151
+ return this;
152
+ }`;
153
+ }
154
+
155
+ // All other types: direct pass-through to buffer setter
156
+ // The buffer's setter handles null bitmap and storage details
157
+ return `
158
+ ${fieldName}(value) {
159
+ this._buffer.${columnName}(this._pos, value);
160
+ return this;
161
+ }`;
162
+ }
163
+
164
+ /**
165
+ * Generate with() method code - bulk attribute setting.
166
+ * UNROLLED per-column code for zero Object.entries overhead.
167
+ */
168
+ function generateWithMethod(schemaFields: readonly ColumnEntry[], enumFieldNames: Set<string>): string {
169
+ const columnWrites = schemaFields.map(([fieldName]) => {
170
+ const hasEnumMapping = enumFieldNames.has(fieldName);
171
+ const valueExpr = hasEnumMapping ? `getEnumIndex_${fieldName}(attributes.${fieldName})` : `attributes.${fieldName}`;
172
+
173
+ return `
174
+ if ('${fieldName}' in attributes && attributes.${fieldName} !== null && attributes.${fieldName} !== undefined) {
175
+ this._buffer.${fieldName}(this._pos, ${valueExpr});
176
+ }`;
177
+ });
178
+
179
+ return `
180
+ with(attributes) {
181
+ ${columnWrites.join('\n')}
182
+ return this;
183
+ }`;
184
+ }
185
+
186
+ /**
187
+ * Generate the complete fixed-position writer class code.
188
+ *
189
+ * @param schema - Tag attribute schema defining columns
190
+ * @param position - Fixed position to write to (0 for TagWriter, 1 for ResultWriter)
191
+ * @param className - Name for the generated class
192
+ * @param extension - Optional extension for constructor code, methods, params
193
+ * @returns JavaScript code string for the class
194
+ */
195
+ export function generateFixedPositionWriterClass(
196
+ schema: LogSchema,
197
+ position: number,
198
+ className: string,
199
+ extension?: FixedPositionWriterExtension,
200
+ ): string {
201
+ const schemaFields = schema._columns;
202
+
203
+ // Generate enum mapping functions
204
+ const enumMappings: string[] = [];
205
+ const enumFieldNames = new Set<string>();
206
+
207
+ for (const [fieldName, fieldSchema] of schemaFields) {
208
+ const lmaoType = getSchemaType(fieldSchema);
209
+ const enumValues = getEnumValues(fieldSchema);
210
+
211
+ if (lmaoType === 'enum' && enumValues) {
212
+ enumMappings.push(generateEnumMapping(fieldName, enumValues));
213
+ enumFieldNames.add(fieldName);
214
+ }
215
+ }
216
+
217
+ // Generate setter methods
218
+ const setterMethods = schemaFields.map(([fieldName, fieldSchema]) =>
219
+ generateSetterMethod(fieldName, fieldSchema, enumFieldNames.has(fieldName)),
220
+ );
221
+
222
+ // Generate with() method
223
+ const withMethod = generateWithMethod(schemaFields, enumFieldNames);
224
+
225
+ // Build constructor signature
226
+ const constructorSignature = extension?.constructorParams ? `buffer, ${extension.constructorParams}` : 'buffer';
227
+
228
+ // Build constructor body
229
+ // Generated structure: assigns _buffer and _pos, then runs extension constructor code if provided
230
+ const constructorBody = [' this._buffer = buffer;', ` this._pos = ${position};`];
231
+
232
+ if (extension?.constructorCode) {
233
+ constructorBody.push('');
234
+ // Extension constructor code runs after _buffer/_pos assignment
235
+ const extensionLines = extension.constructorCode
236
+ .trim()
237
+ .split('\n')
238
+ .map((line) => ` ${line.trim()}`);
239
+ constructorBody.push(...extensionLines);
240
+ }
241
+
242
+ // Build extension methods (additional methods injected by the caller)
243
+ const extensionMethods = extension?.methods
244
+ ? '\n' +
245
+ extension.methods
246
+ .trim()
247
+ .split('\n')
248
+ .map((line) => ` ${line}`)
249
+ .join('\n')
250
+ : '';
251
+
252
+ // Generated class structure:
253
+ // - constructor: assigns _buffer, _pos, then extension code
254
+ // - with(): bulk attribute setting method
255
+ // - Individual setter methods for each schema field
256
+ // - Extension methods (if any)
257
+ const classCode = `
258
+ 'use strict';
259
+
260
+ ${enumMappings.join('\n')}
261
+
262
+ class ${className} {
263
+ constructor(${constructorSignature}) {
264
+ ${constructorBody.join('\n')}
265
+ }
266
+
267
+ ${withMethod}
268
+
269
+ ${setterMethods.join('\n')}
270
+ ${extensionMethods}
271
+ }
272
+
273
+ return ${className};
274
+ `;
275
+
276
+ return classCode;
277
+ }
278
+
279
+ // ============================================================================
280
+ // Class Caches
281
+ // ============================================================================
282
+
283
+ /**
284
+ * Cache for TagWriter classes (position 0).
285
+ * WeakMap allows garbage collection when schema is no longer referenced.
286
+ */
287
+ const tagWriterClassCache = new WeakMap<LogSchema, unknown>();
288
+
289
+ /**
290
+ * Cache for ResultWriter classes (position 1).
291
+ */
292
+ const resultWriterClassCache = new WeakMap<LogSchema, unknown>();
293
+
294
+ // ============================================================================
295
+ // TagWriter API
296
+ // ============================================================================
297
+
298
+ /**
299
+ * Generate TagWriter class code for a schema.
300
+ * TagWriter writes to position 0 (span-start row).
301
+ */
302
+ export function generateTagWriterClass(schema: LogSchema): string {
303
+ return generateFixedPositionWriterClass(schema, 0, 'GeneratedTagWriter');
304
+ }
305
+
306
+ /**
307
+ * Get or create a cached TagWriter class for a schema.
308
+ *
309
+ * @param schema - Tag attribute schema
310
+ * @returns TagWriter class constructor
311
+ */
312
+ export function getTagWriterClass<T extends LogSchema>(schema: T): new (buffer: AnySpanBuffer) => TagWriter<T> {
313
+ let WriterClass = tagWriterClassCache.get(schema);
314
+
315
+ if (!WriterClass) {
316
+ const classCode = generateTagWriterClass(schema).trim();
317
+
318
+ // Compile with new Function()
319
+ const factory = new Function('helpers', classCode);
320
+ WriterClass = factory(bufferHelpers);
321
+
322
+ if (!isTagWriterConstructor<LogSchema>(WriterClass)) {
323
+ throw new Error('Failed to generate TagWriter constructor');
324
+ }
325
+
326
+ tagWriterClassCache.set(schema, WriterClass);
327
+ }
328
+
329
+ if (!isTagWriterConstructor<T>(WriterClass)) {
330
+ throw new Error('Invalid cached TagWriter constructor');
331
+ }
332
+
333
+ return WriterClass;
334
+ }
335
+
336
+ /**
337
+ * Create a TagWriter instance for a buffer.
338
+ *
339
+ * @param schema - Tag attribute schema
340
+ * @param buffer - SpanBuffer to write to
341
+ * @returns TagWriter instance bound to position 0
342
+ */
343
+ export function createTagWriter<T extends LogSchema>(schema: T, buffer: AnySpanBuffer): TagWriter<T> {
344
+ const WriterClass = getTagWriterClass(schema);
345
+ return new WriterClass(buffer);
346
+ }
347
+
348
+ // ============================================================================
349
+ // ResultWriter API
350
+ // ============================================================================
351
+
352
+ /**
353
+ * ResultWriter extension - adds _result, _error, _isError properties
354
+ *
355
+ * Constructor sets _isError, _result, and _error based on the isError flag.
356
+ * Result/error values are already accessible via the properties set in constructor.
357
+ */
358
+ const resultWriterExtension: FixedPositionWriterExtension = {
359
+ constructorParams: 'resultOrError, isError',
360
+ constructorCode: `
361
+ this._isError = isError;
362
+ if (isError) {
363
+ this._error = resultOrError;
364
+ this._result = undefined;
365
+ } else {
366
+ this._result = resultOrError;
367
+ this._error = undefined;
368
+ }
369
+ `,
370
+ methods: `
371
+ message(text) {
372
+ this._buffer.message(this._pos, text);
373
+ return this;
374
+ }
375
+
376
+ line(lineNumber) {
377
+ this._buffer.line(this._pos, lineNumber);
378
+ return this;
379
+ }
380
+ `,
381
+ };
382
+
383
+ /**
384
+ * Generate ResultWriter class code for a schema.
385
+ * ResultWriter writes to position 1 (result row).
386
+ */
387
+ export function generateResultWriterClass(schema: LogSchema): string {
388
+ return generateFixedPositionWriterClass(schema, 1, 'GeneratedResultWriter', resultWriterExtension);
389
+ }
390
+
391
+ /**
392
+ * Get or create a cached ResultWriter class for a schema.
393
+ *
394
+ * @param schema - Tag attribute schema
395
+ * @returns ResultWriter class constructor
396
+ */
397
+ export function getResultWriterClass<T extends LogSchema>(
398
+ schema: T,
399
+ ): new <R = unknown, E = unknown>(
400
+ buffer: AnySpanBuffer,
401
+ resultOrError: unknown,
402
+ isError: boolean,
403
+ ) => ResultWriter<T, R, E> {
404
+ let WriterClass = resultWriterClassCache.get(schema);
405
+
406
+ if (!WriterClass) {
407
+ const classCode = generateResultWriterClass(schema).trim();
408
+
409
+ // Compile with new Function()
410
+ const factory = new Function('helpers', classCode);
411
+ WriterClass = factory(bufferHelpers);
412
+
413
+ if (!isResultWriterConstructor<LogSchema>(WriterClass)) {
414
+ throw new Error('Failed to generate ResultWriter constructor');
415
+ }
416
+
417
+ resultWriterClassCache.set(schema, WriterClass);
418
+ }
419
+
420
+ if (!isResultWriterConstructor<T>(WriterClass)) {
421
+ throw new Error('Invalid cached ResultWriter constructor');
422
+ }
423
+
424
+ return WriterClass;
425
+ }
426
+
427
+ /**
428
+ * Create a ResultWriter instance for a buffer.
429
+ *
430
+ * @param schema - Tag attribute schema
431
+ * @param buffer - SpanBuffer to write to
432
+ * @param resultOrError - The result value or error
433
+ * @param isError - Whether this is an error result
434
+ * @returns ResultWriter instance bound to position 1
435
+ */
436
+ export function createResultWriter<T extends LogSchema, R = unknown, E = unknown>(
437
+ schema: T,
438
+ buffer: AnySpanBuffer,
439
+ resultOrError: R | E,
440
+ isError: boolean,
441
+ ): ResultWriter<T, R, E> {
442
+ const WriterClass = getResultWriterClass(schema);
443
+ return new WriterClass(buffer, resultOrError, isError);
444
+ }