@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,435 @@
1
+ /**
2
+ * Tests for synchronous and asynchronous trace execution
3
+ *
4
+ * Verifies that Tracer.trace() correctly handles both sync and async functions,
5
+ * writing span-ok or span-exception entries at the correct time (immediately for sync,
6
+ * after Promise resolution for async).
7
+ *
8
+ * Per specs/lmao/01_trace_logging_system.md and tracer.ts implementation:
9
+ * - Sync functions: span-ok/span-exception written immediately after execution
10
+ * - Async functions: span-ok/span-exception written after Promise resolves/rejects
11
+ */
12
+
13
+ import { describe, expect, it } from 'bun:test';
14
+ // Must import test-helpers first to initialize timestamp implementation
15
+ import './test-helpers.js';
16
+ import { defineOpContext } from '../defineOpContext.js';
17
+ import { S } from '../schema/builder.js';
18
+ import { defineLogSchema } from '../schema/defineLogSchema.js';
19
+ import { ENTRY_TYPE_SPAN_EXCEPTION, ENTRY_TYPE_SPAN_OK, ENTRY_TYPE_SPAN_START } from '../schema/systemSchema.js';
20
+ import { TestTracer } from '../tracers/TestTracer.js';
21
+ import type { AnySpanBuffer } from '../types.js';
22
+ import { createTestTracerOptions } from './test-helpers.js';
23
+
24
+ // Test schema
25
+ const testSchema = defineLogSchema({
26
+ userId: S.category(),
27
+ requestId: S.category(),
28
+ });
29
+
30
+ describe('Sync/Async Trace Execution', () => {
31
+ describe('Sync trace execution', () => {
32
+ it('should write span-ok immediately for sync function', () => {
33
+ const ctx = defineOpContext({
34
+ logSchema: testSchema,
35
+ });
36
+
37
+ let capturedBuffer: AnySpanBuffer | undefined;
38
+
39
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
40
+
41
+ // Execute sync function - trace() returns sync result
42
+ const result = tracer.trace('sync-trace', (ctx) => {
43
+ capturedBuffer = ctx.buffer;
44
+
45
+ // At this point, span-start is written (row 0)
46
+ expect(ctx.buffer.entry_type[0]).toBe(ENTRY_TYPE_SPAN_START);
47
+
48
+ // Row 1 not yet written (happens after function returns)
49
+ return { success: true, value: 42 };
50
+ });
51
+
52
+ // For sync function, result should be returned immediately (not a Promise)
53
+ expect(result).toEqual({ success: true, value: 42 });
54
+
55
+ // span-ok should be written to row 1 immediately after sync function returns
56
+ expect(capturedBuffer).toBeDefined();
57
+ expect(capturedBuffer?.entry_type[0]).toBe(ENTRY_TYPE_SPAN_START);
58
+ expect(capturedBuffer?.entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
59
+
60
+ // Timestamp should be written
61
+ expect(capturedBuffer?.timestamp[1]).toBeGreaterThan(0n);
62
+ });
63
+
64
+ it('should write span-exception immediately for sync function that throws', () => {
65
+ const ctx = defineOpContext({
66
+ logSchema: testSchema,
67
+ });
68
+
69
+ let capturedBuffer: AnySpanBuffer | undefined;
70
+
71
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
72
+
73
+ const testError = new Error('Sync error');
74
+
75
+ // Execute sync function that throws - should throw immediately
76
+ expect(() => {
77
+ tracer.trace('sync-error-trace', (ctx) => {
78
+ capturedBuffer = ctx.buffer;
79
+
80
+ // span-start written at row 0
81
+ expect(ctx.buffer.entry_type[0]).toBe(ENTRY_TYPE_SPAN_START);
82
+
83
+ throw testError;
84
+ });
85
+ }).toThrow('Sync error');
86
+
87
+ // span-exception should be written to row 1 immediately
88
+ expect(capturedBuffer).toBeDefined();
89
+ expect(capturedBuffer?.entry_type[0]).toBe(ENTRY_TYPE_SPAN_START);
90
+ expect(capturedBuffer?.entry_type[1]).toBe(ENTRY_TYPE_SPAN_EXCEPTION);
91
+
92
+ // Exception details should be written
93
+ expect(capturedBuffer?.timestamp[1]).toBeGreaterThan(0n);
94
+
95
+ // message should contain error message
96
+ // Note: System columns (message, exception_stack) use method call, not direct array access
97
+ // We verify via conversion later if needed, here we just check entry_type
98
+ });
99
+ });
100
+
101
+ describe('Async trace execution', () => {
102
+ it('should write span-ok after Promise resolves', async () => {
103
+ const ctx = defineOpContext({
104
+ logSchema: testSchema,
105
+ });
106
+
107
+ let capturedBuffer: AnySpanBuffer | undefined;
108
+ let promiseResolved = false;
109
+
110
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
111
+
112
+ // Execute async function - trace() returns Promise
113
+ const resultPromise = tracer.trace('async-trace', async (ctx) => {
114
+ capturedBuffer = ctx.buffer;
115
+
116
+ // span-start is written at row 0
117
+ expect(ctx.buffer.entry_type[0]).toBe(ENTRY_TYPE_SPAN_START);
118
+
119
+ // Row 1 not yet written (will be written after Promise resolves)
120
+ // At this point, entry_type[1] may be 0 or pre-initialized
121
+
122
+ // Simulate async work
123
+ await new Promise((resolve) => setTimeout(resolve, 10));
124
+
125
+ promiseResolved = true;
126
+
127
+ return { success: true, value: 'async result' };
128
+ });
129
+
130
+ // Result should be a Promise
131
+ expect(resultPromise).toBeInstanceOf(Promise);
132
+
133
+ // Before awaiting, span-ok not yet written
134
+ expect(promiseResolved).toBe(false);
135
+
136
+ // Await the Promise
137
+ const result = await resultPromise;
138
+
139
+ // Promise should have resolved
140
+ expect(promiseResolved).toBe(true);
141
+ expect(result).toEqual({ success: true, value: 'async result' });
142
+
143
+ // After Promise resolves, span-ok should be written to row 1
144
+ expect(capturedBuffer).toBeDefined();
145
+ expect(capturedBuffer?.entry_type[0]).toBe(ENTRY_TYPE_SPAN_START);
146
+ expect(capturedBuffer?.entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
147
+
148
+ // Timestamp should be written
149
+ expect(capturedBuffer?.timestamp[1]).toBeGreaterThan(0n);
150
+ });
151
+
152
+ it('should write span-exception after Promise rejects', async () => {
153
+ const ctx = defineOpContext({
154
+ logSchema: testSchema,
155
+ });
156
+
157
+ let capturedBuffer: AnySpanBuffer | undefined;
158
+ let promiseRejected = false;
159
+
160
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
161
+
162
+ const testError = new Error('Async error');
163
+
164
+ // Execute async function that throws
165
+ const resultPromise = tracer.trace('async-error-trace', async (ctx) => {
166
+ capturedBuffer = ctx.buffer;
167
+
168
+ // span-start written at row 0
169
+ expect(ctx.buffer.entry_type[0]).toBe(ENTRY_TYPE_SPAN_START);
170
+
171
+ // Simulate async work before error
172
+ await new Promise((resolve) => setTimeout(resolve, 10));
173
+
174
+ promiseRejected = true;
175
+
176
+ throw testError;
177
+ });
178
+
179
+ // Result should be a Promise
180
+ expect(resultPromise).toBeInstanceOf(Promise);
181
+
182
+ // Before awaiting, exception not yet thrown
183
+ expect(promiseRejected).toBe(false);
184
+
185
+ // Await and expect rejection
186
+ await expect(resultPromise).rejects.toThrow('Async error');
187
+
188
+ // Promise should have rejected
189
+ expect(promiseRejected).toBe(true);
190
+
191
+ // After Promise rejects, span-exception should be written to row 1
192
+ expect(capturedBuffer).toBeDefined();
193
+ expect(capturedBuffer?.entry_type[0]).toBe(ENTRY_TYPE_SPAN_START);
194
+ expect(capturedBuffer?.entry_type[1]).toBe(ENTRY_TYPE_SPAN_EXCEPTION);
195
+
196
+ // Timestamp should be written
197
+ expect(capturedBuffer?.timestamp[1]).toBeGreaterThan(0n);
198
+ });
199
+ });
200
+
201
+ describe('Mixed sync/async traces', () => {
202
+ it('should handle multiple sync traces correctly', () => {
203
+ const ctx = defineOpContext({
204
+ logSchema: testSchema,
205
+ });
206
+
207
+ const buffers: AnySpanBuffer[] = [];
208
+
209
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
210
+
211
+ // Execute multiple sync traces
212
+ const result1 = tracer.trace('sync-1', (ctx) => {
213
+ buffers.push(ctx.buffer);
214
+ ctx.tag.userId('user-1');
215
+ return 'result-1';
216
+ });
217
+
218
+ const result2 = tracer.trace('sync-2', (ctx) => {
219
+ buffers.push(ctx.buffer);
220
+ ctx.tag.userId('user-2');
221
+ return 'result-2';
222
+ });
223
+
224
+ // Both should return immediately
225
+ expect(result1).toBe('result-1');
226
+ expect(result2).toBe('result-2');
227
+
228
+ // Both buffers should have span-ok written
229
+ expect(buffers.length).toBe(2);
230
+ expect(buffers[0].entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
231
+ expect(buffers[1].entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
232
+
233
+ // Both traces should be collected
234
+ expect(tracer.rootBuffers.length).toBe(2);
235
+ });
236
+
237
+ it('should handle multiple async traces correctly', async () => {
238
+ const ctx = defineOpContext({
239
+ logSchema: testSchema,
240
+ });
241
+
242
+ const buffers: AnySpanBuffer[] = [];
243
+
244
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
245
+
246
+ // Execute multiple async traces in parallel
247
+ const promise1 = tracer.trace('async-1', async (ctx) => {
248
+ buffers.push(ctx.buffer);
249
+ ctx.tag.userId('user-1');
250
+ await new Promise((resolve) => setTimeout(resolve, 5));
251
+ return 'result-1';
252
+ });
253
+
254
+ const promise2 = tracer.trace('async-2', async (ctx) => {
255
+ buffers.push(ctx.buffer);
256
+ ctx.tag.userId('user-2');
257
+ await new Promise((resolve) => setTimeout(resolve, 5));
258
+ return 'result-2';
259
+ });
260
+
261
+ // Both should return Promises
262
+ expect(promise1).toBeInstanceOf(Promise);
263
+ expect(promise2).toBeInstanceOf(Promise);
264
+
265
+ // Await both
266
+ const [result1, result2] = await Promise.all([promise1, promise2]);
267
+
268
+ expect(result1).toBe('result-1');
269
+ expect(result2).toBe('result-2');
270
+
271
+ // Both buffers should have span-ok written
272
+ expect(buffers.length).toBe(2);
273
+ expect(buffers[0].entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
274
+ expect(buffers[1].entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
275
+
276
+ // Both traces should be collected
277
+ expect(tracer.rootBuffers.length).toBe(2);
278
+ });
279
+
280
+ it('should handle interleaved sync and async traces', async () => {
281
+ const ctx = defineOpContext({
282
+ logSchema: testSchema,
283
+ });
284
+
285
+ const buffers: AnySpanBuffer[] = [];
286
+
287
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
288
+
289
+ // Sync trace
290
+ const syncResult = tracer.trace('sync', (ctx) => {
291
+ buffers.push(ctx.buffer);
292
+ return 'sync-done';
293
+ });
294
+
295
+ // Async trace
296
+ const asyncPromise = tracer.trace('async', async (ctx) => {
297
+ buffers.push(ctx.buffer);
298
+ await new Promise((resolve) => setTimeout(resolve, 5));
299
+ return 'async-done';
300
+ });
301
+
302
+ // Another sync trace
303
+ const syncResult2 = tracer.trace('sync-2', (ctx) => {
304
+ buffers.push(ctx.buffer);
305
+ return 'sync-done-2';
306
+ });
307
+
308
+ // Sync results available immediately
309
+ expect(syncResult).toBe('sync-done');
310
+ expect(syncResult2).toBe('sync-done-2');
311
+
312
+ // Async result available after await
313
+ const asyncResult = await asyncPromise;
314
+ expect(asyncResult).toBe('async-done');
315
+
316
+ // All three buffers should have span-ok
317
+ expect(buffers.length).toBe(3);
318
+ expect(buffers[0].entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
319
+ expect(buffers[1].entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
320
+ expect(buffers[2].entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
321
+
322
+ // All three traces should be collected
323
+ expect(tracer.rootBuffers.length).toBe(3);
324
+ });
325
+ });
326
+
327
+ describe('Trace with tags and logging', () => {
328
+ it('should support tags in sync trace', () => {
329
+ const ctx = defineOpContext({
330
+ logSchema: testSchema,
331
+ });
332
+
333
+ let capturedBuffer: AnySpanBuffer | undefined;
334
+
335
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
336
+
337
+ const result = tracer.trace('sync-with-tags', (ctx) => {
338
+ capturedBuffer = ctx.buffer;
339
+
340
+ // Write tags
341
+ ctx.tag.userId('user-123');
342
+ ctx.tag.requestId('req-456');
343
+
344
+ return { id: 123 };
345
+ });
346
+
347
+ expect(result).toEqual({ id: 123 });
348
+
349
+ // span-ok should be written
350
+ expect(capturedBuffer?.entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
351
+ });
352
+
353
+ it('should support tags in async trace', async () => {
354
+ const ctx = defineOpContext({
355
+ logSchema: testSchema,
356
+ });
357
+
358
+ let capturedBuffer: AnySpanBuffer | undefined;
359
+
360
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
361
+
362
+ const result = await tracer.trace('async-with-tags', async (ctx) => {
363
+ capturedBuffer = ctx.buffer;
364
+
365
+ // Write tags
366
+ ctx.tag.userId('user-123');
367
+ ctx.tag.requestId('req-456');
368
+
369
+ await new Promise((resolve) => setTimeout(resolve, 5));
370
+
371
+ return { id: 123 };
372
+ });
373
+
374
+ expect(result).toEqual({ id: 123 });
375
+
376
+ // span-ok should be written after Promise resolves
377
+ expect(capturedBuffer?.entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
378
+ });
379
+
380
+ it('should support logging in sync trace', () => {
381
+ const ctx = defineOpContext({
382
+ logSchema: testSchema,
383
+ });
384
+
385
+ let capturedBuffer: AnySpanBuffer | undefined;
386
+
387
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
388
+
389
+ const result = tracer.trace('sync-with-logging', (ctx) => {
390
+ capturedBuffer = ctx.buffer;
391
+
392
+ // Log events (should go to rows 2+)
393
+ ctx.log.info('Starting operation');
394
+ ctx.log.debug('Debug info');
395
+
396
+ return 'done';
397
+ });
398
+
399
+ expect(result).toBe('done');
400
+
401
+ // span-ok at row 1
402
+ expect(capturedBuffer?.entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
403
+
404
+ // Events logged at rows 2+ (verified by successful completion)
405
+ });
406
+
407
+ it('should support logging in async trace', async () => {
408
+ const ctx = defineOpContext({
409
+ logSchema: testSchema,
410
+ });
411
+
412
+ let capturedBuffer: AnySpanBuffer | undefined;
413
+
414
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
415
+
416
+ const result = await tracer.trace('async-with-logging', async (ctx) => {
417
+ capturedBuffer = ctx.buffer;
418
+
419
+ // Log events
420
+ ctx.log.info('Starting async operation');
421
+
422
+ await new Promise((resolve) => setTimeout(resolve, 5));
423
+
424
+ ctx.log.info('Completed async operation');
425
+
426
+ return 'done';
427
+ });
428
+
429
+ expect(result).toBe('done');
430
+
431
+ // span-ok at row 1 (written after Promise resolves)
432
+ expect(capturedBuffer?.entry_type[1]).toBe(ENTRY_TYPE_SPAN_OK);
433
+ });
434
+ });
435
+ });