@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,167 @@
1
+ /**
2
+ * WASM-backed TraceRoot that writes span lifecycle events via WASM allocator.
3
+ *
4
+ * Unlike NodeTraceRoot which writes to JS ArrayBuffers, this writes directly
5
+ * to WASM memory using the allocator's span lifecycle functions.
6
+ *
7
+ * Implements ITraceRoot for compatibility with SpanContext and Tracer.
8
+ *
9
+ * @module wasmTraceRoot
10
+ */
11
+ import { Nanoseconds } from '@smoothbricks/arrow-builder';
12
+ import { type TraceId } from '../traceId.js';
13
+ import type { ITraceRoot, TracerLifecycleHooks } from '../traceRoot.js';
14
+ import type { AnySpanBuffer } from '../types.js';
15
+ import type { WasmAllocator } from './wasmAllocator.js';
16
+ /**
17
+ * Interface for WASM-backed span buffers.
18
+ * These have a _systemPtr that points to WASM memory.
19
+ */
20
+ export interface WasmSpanBufferLike {
21
+ /** Byte offset into WASM memory for system columns (timestamp + entry_type) */
22
+ readonly _systemPtr: number;
23
+ /** Byte offset into WASM memory for identity block (writeIndex, span_id, trace_id) */
24
+ readonly _identityPtr: number;
25
+ /** Message column - string array for span names and log messages */
26
+ readonly _message: string[];
27
+ /** Current write position (getter/setter reads from WASM identity block) */
28
+ _writeIndex: number;
29
+ }
30
+ /**
31
+ * Type guard to check if a buffer is WASM-backed.
32
+ */
33
+ export declare function isWasmSpanBuffer(buffer: unknown): buffer is WasmSpanBufferLike;
34
+ /**
35
+ * WASM-backed TraceRoot implementation.
36
+ *
37
+ * Implements ITraceRoot so it's compatible with SpanContext and the base Tracer.
38
+ * Writes timestamps and entry types to WASM memory for WASM-backed buffers.
39
+ *
40
+ * Memory Layout at _traceRootPtr (16 bytes):
41
+ * - Offset 0-7: anchorEpochNanos (i64) - wall clock time in nanoseconds
42
+ * - Offset 8-15: anchorPerfNow (f64) - performance.now() anchor value
43
+ *
44
+ * The WASM allocator's initTraceRoot() captures these values at trace start,
45
+ * and span lifecycle methods use them to calculate timestamps.
46
+ */
47
+ export declare class WasmTraceRoot implements ITraceRoot {
48
+ /** Byte offset in WASM memory where TraceRoot data lives */
49
+ readonly _traceRootPtr: number;
50
+ /** The WASM allocator instance */
51
+ readonly allocator: WasmAllocator;
52
+ /** Trace ID string */
53
+ readonly trace_id: TraceId;
54
+ /** Tracer reference for lifecycle hooks */
55
+ readonly tracer: TracerLifecycleHooks;
56
+ /**
57
+ * Raw backing buffer - not used for WASM, but required by ITraceRoot.
58
+ * We create a minimal ArrayBuffer just to satisfy the interface.
59
+ */
60
+ readonly _system: ArrayBuffer;
61
+ constructor(allocator: WasmAllocator, trace_id: TraceId, tracer: TracerLifecycleHooks);
62
+ /**
63
+ * Epoch time in nanoseconds when trace was created.
64
+ * Read from WASM memory at _traceRootPtr offset 0.
65
+ */
66
+ get anchorEpochNanos(): bigint;
67
+ /**
68
+ * High-resolution timer anchor when trace was created.
69
+ * Read from WASM memory at _traceRootPtr offset 8.
70
+ */
71
+ get anchorPerfNow(): number;
72
+ /**
73
+ * Get current timestamp in nanoseconds since Unix epoch.
74
+ *
75
+ * Uses the same calculation as NodeTraceRoot:
76
+ * currentNanos = anchorEpochNanos + (currentPerfNow - anchorPerfNow) * 1_000_000
77
+ *
78
+ * Note: In the browser, performance.now() returns milliseconds as a float.
79
+ * We convert to nanoseconds for consistency with the trace format.
80
+ */
81
+ getTimestampNanos(): Nanoseconds;
82
+ /**
83
+ * Write span-start entry to buffer at row 0.
84
+ *
85
+ * For WASM buffers: writes via WASM allocator to WASM memory
86
+ * Sets row 0 = span-start, row 1 = span-exception (crash safety).
87
+ * Sets _writeIndex = 2.
88
+ *
89
+ * @param buffer - SpanBuffer to write to (can be WASM or JS buffer)
90
+ * @param spanName - Name for this span
91
+ */
92
+ writeSpanStart(buffer: AnySpanBuffer, spanName: string): void;
93
+ /**
94
+ * Write span-end entry to buffer at row 1.
95
+ * Writes both timestamp and entry_type.
96
+ *
97
+ * @param buffer - SpanBuffer to write to
98
+ * @param entryType - Entry type (SPAN_OK, SPAN_ERR, or SPAN_EXCEPTION)
99
+ */
100
+ writeSpanEnd(buffer: AnySpanBuffer, entryType: number): void;
101
+ /**
102
+ * Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
103
+ * SpanLogger uses returned idx for string column writes.
104
+ *
105
+ * @param buffer - SpanBuffer to write to
106
+ * @param entryType - Entry type (INFO, DEBUG, WARN, ERROR, TRACE, FF_ACCESS, FF_USAGE)
107
+ * @returns The row index where entry was written
108
+ */
109
+ writeLogEntry(buffer: AnySpanBuffer, entryType: number): number;
110
+ /**
111
+ * Write span-start entry to buffer's system block using pointer.
112
+ * Sets row 0 = span-start, row 1 = span-exception (crash safety).
113
+ * Sets _writeIndex = 2 in the identity block.
114
+ *
115
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
116
+ * @param identityPtr - Byte offset of buffer's identity block in WASM memory
117
+ */
118
+ writeSpanStartPtr(systemPtr: number, identityPtr: number): void;
119
+ /**
120
+ * Write span-ok to row 1 using pointer.
121
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
122
+ */
123
+ writeSpanEndOkPtr(systemPtr: number): void;
124
+ /**
125
+ * Write span-err to row 1 using pointer.
126
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
127
+ */
128
+ writeSpanEndErrPtr(systemPtr: number): void;
129
+ /**
130
+ * Write a log entry at current write index using pointer.
131
+ * Returns the row index where entry was written.
132
+ *
133
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
134
+ * @param identityPtr - Byte offset of buffer's identity block in WASM memory
135
+ * @param entryType - Entry type constant (ENTRY_TYPE_INFO, etc.)
136
+ * @returns Row index where entry was written
137
+ */
138
+ writeLogEntryPtr(systemPtr: number, identityPtr: number, entryType: number): number;
139
+ /**
140
+ * Read current write index from buffer's identity block.
141
+ * @param identityPtr - Byte offset of buffer's identity block in WASM memory
142
+ */
143
+ readWriteIndex(identityPtr: number): number;
144
+ /**
145
+ * Free the TraceRoot's memory block when trace completes.
146
+ */
147
+ free(): void;
148
+ }
149
+ /**
150
+ * Create a WasmTraceRoot instance directly.
151
+ * Used by tests and low-level code.
152
+ *
153
+ * @param allocator - WASM allocator instance
154
+ * @param trace_id - Trace ID for this trace
155
+ * @param tracer - Tracer lifecycle hooks
156
+ */
157
+ export declare function createWasmTraceRoot(allocator: WasmAllocator, trace_id: string, tracer: TracerLifecycleHooks): WasmTraceRoot;
158
+ /**
159
+ * Factory function to create WasmTraceRoot factory.
160
+ *
161
+ * This returns a factory function that can be passed to Tracer constructor.
162
+ *
163
+ * @param allocator - WASM allocator instance
164
+ * @returns Factory function compatible with TraceRootFactory type
165
+ */
166
+ export declare function createWasmTraceRootFactory(allocator: WasmAllocator): (trace_id: string, tracer: TracerLifecycleHooks) => WasmTraceRoot;
167
+ //# sourceMappingURL=wasmTraceRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasmTraceRoot.d.ts","sourceRoot":"","sources":["../../../src/lib/wasm/wasmTraceRoot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,kBAAkB,CAE9E;AAMD;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC9C,4DAA4D;IAC5D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAElC,sBAAsB;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;gBAElB,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB;IAiBrF;;;OAGG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAG7B;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAG1B;IAED;;;;;;;;OAQG;IACH,iBAAiB,IAAI,WAAW;IAWhC;;;;;;;;;OASG;IACH,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqB7D;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA0B5D;;;;;;;OAOG;IACH,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAkB/D;;;;;;;OAOG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAI/D;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3C;;;;;;;;OAQG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAInF;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,IAAI,IAAI,IAAI;CAGb;AAMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,oBAAoB,GAC3B,aAAa,CAEf;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,aAAa,IACzD,UAAU,MAAM,EAAE,QAAQ,oBAAoB,KAAG,aAAa,CAGvE"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * WASM-backed TraceRoot that writes span lifecycle events via WASM allocator.
3
+ *
4
+ * Unlike NodeTraceRoot which writes to JS ArrayBuffers, this writes directly
5
+ * to WASM memory using the allocator's span lifecycle functions.
6
+ *
7
+ * Implements ITraceRoot for compatibility with SpanContext and Tracer.
8
+ *
9
+ * @module wasmTraceRoot
10
+ */
11
+ import { Nanoseconds } from '@smoothbricks/arrow-builder';
12
+ import { ENTRY_TYPE_SPAN_EXCEPTION, ENTRY_TYPE_SPAN_START } from '../schema/systemSchema.js';
13
+ import { createTraceId } from '../traceId.js';
14
+ /**
15
+ * Type guard to check if a buffer is WASM-backed.
16
+ */
17
+ export function isWasmSpanBuffer(buffer) {
18
+ return typeof buffer === 'object' && buffer !== null && typeof Reflect.get(buffer, '_systemPtr') === 'number';
19
+ }
20
+ // =============================================================================
21
+ // WasmTraceRoot Implementation
22
+ // =============================================================================
23
+ /**
24
+ * WASM-backed TraceRoot implementation.
25
+ *
26
+ * Implements ITraceRoot so it's compatible with SpanContext and the base Tracer.
27
+ * Writes timestamps and entry types to WASM memory for WASM-backed buffers.
28
+ *
29
+ * Memory Layout at _traceRootPtr (16 bytes):
30
+ * - Offset 0-7: anchorEpochNanos (i64) - wall clock time in nanoseconds
31
+ * - Offset 8-15: anchorPerfNow (f64) - performance.now() anchor value
32
+ *
33
+ * The WASM allocator's initTraceRoot() captures these values at trace start,
34
+ * and span lifecycle methods use them to calculate timestamps.
35
+ */
36
+ export class WasmTraceRoot {
37
+ /** Byte offset in WASM memory where TraceRoot data lives */
38
+ _traceRootPtr;
39
+ /** The WASM allocator instance */
40
+ allocator;
41
+ /** Trace ID string */
42
+ trace_id;
43
+ /** Tracer reference for lifecycle hooks */
44
+ tracer;
45
+ /**
46
+ * Raw backing buffer - not used for WASM, but required by ITraceRoot.
47
+ * We create a minimal ArrayBuffer just to satisfy the interface.
48
+ */
49
+ _system;
50
+ constructor(allocator, trace_id, tracer) {
51
+ this.allocator = allocator;
52
+ this.trace_id = trace_id;
53
+ this.tracer = tracer;
54
+ // Create minimal _system buffer (not actually used, but required by interface)
55
+ this._system = new ArrayBuffer(16);
56
+ // Allocate an 8B column block for TraceRoot data (16 bytes needed, 8B block is large enough)
57
+ // The 8B column block size is: ceil(capacity/8) + capacity*8 = 8 + 512 = 520 bytes for capacity 64
58
+ // We only need 16 bytes, so this works fine
59
+ this._traceRootPtr = allocator.alloc8B();
60
+ // Initialize wall clock and monotonic start times in WASM memory
61
+ allocator.initTraceRoot(this._traceRootPtr);
62
+ }
63
+ /**
64
+ * Epoch time in nanoseconds when trace was created.
65
+ * Read from WASM memory at _traceRootPtr offset 0.
66
+ */
67
+ get anchorEpochNanos() {
68
+ // i64 view is indexed by 8-byte chunks
69
+ return this.allocator.i64[this._traceRootPtr / 8];
70
+ }
71
+ /**
72
+ * High-resolution timer anchor when trace was created.
73
+ * Read from WASM memory at _traceRootPtr offset 8.
74
+ */
75
+ get anchorPerfNow() {
76
+ // f64 view is indexed by 8-byte chunks
77
+ return this.allocator.f64[(this._traceRootPtr + 8) / 8];
78
+ }
79
+ /**
80
+ * Get current timestamp in nanoseconds since Unix epoch.
81
+ *
82
+ * Uses the same calculation as NodeTraceRoot:
83
+ * currentNanos = anchorEpochNanos + (currentPerfNow - anchorPerfNow) * 1_000_000
84
+ *
85
+ * Note: In the browser, performance.now() returns milliseconds as a float.
86
+ * We convert to nanoseconds for consistency with the trace format.
87
+ */
88
+ getTimestampNanos() {
89
+ const elapsedMs = performance.now() - this.anchorPerfNow;
90
+ const elapsedNanos = BigInt(Math.round(elapsedMs * 1_000_000));
91
+ return Nanoseconds.unsafe(this.anchorEpochNanos + elapsedNanos);
92
+ }
93
+ // ===========================================================================
94
+ // ITraceRoot implementation (takes buffer parameter)
95
+ // These are the methods used by SpanContext and Tracer
96
+ // ===========================================================================
97
+ /**
98
+ * Write span-start entry to buffer at row 0.
99
+ *
100
+ * For WASM buffers: writes via WASM allocator to WASM memory
101
+ * Sets row 0 = span-start, row 1 = span-exception (crash safety).
102
+ * Sets _writeIndex = 2.
103
+ *
104
+ * @param buffer - SpanBuffer to write to (can be WASM or JS buffer)
105
+ * @param spanName - Name for this span
106
+ */
107
+ writeSpanStart(buffer, spanName) {
108
+ if (isWasmSpanBuffer(buffer)) {
109
+ // WASM path: delegate to WASM allocator
110
+ // spanStart writes row 0 (span-start) and row 1 (span-exception placeholder)
111
+ // Also sets writeIndex to 2 in the identity block
112
+ this.allocator.spanStart(buffer._systemPtr, buffer._identityPtr, this._traceRootPtr);
113
+ // Write span name to message column (JS string array)
114
+ buffer._message[0] = spanName;
115
+ // Note: _writeIndex is set by WASM spanStart to 2, but the getter reads from WASM
116
+ // so we don't need to set it here explicitly (the setter would write to WASM anyway)
117
+ }
118
+ else {
119
+ // JS path: write directly to TypedArrays (fallback for mixed usage)
120
+ buffer.timestamp[0] = this.getTimestampNanos();
121
+ buffer.entry_type[0] = ENTRY_TYPE_SPAN_START;
122
+ buffer.message(0, spanName);
123
+ buffer.entry_type[1] = ENTRY_TYPE_SPAN_EXCEPTION;
124
+ buffer.timestamp[1] = 0n;
125
+ buffer._writeIndex = 2;
126
+ }
127
+ }
128
+ /**
129
+ * Write span-end entry to buffer at row 1.
130
+ * Writes both timestamp and entry_type.
131
+ *
132
+ * @param buffer - SpanBuffer to write to
133
+ * @param entryType - Entry type (SPAN_OK, SPAN_ERR, or SPAN_EXCEPTION)
134
+ */
135
+ writeSpanEnd(buffer, entryType) {
136
+ if (isWasmSpanBuffer(buffer)) {
137
+ // WASM path: use appropriate end function based on entry type
138
+ // Note: WASM spanEndOk/spanEndErr write to row 1
139
+ if (entryType === 2) {
140
+ // SPAN_OK
141
+ this.allocator.spanEndOk(buffer._systemPtr, this._traceRootPtr);
142
+ }
143
+ else if (entryType === 3) {
144
+ // SPAN_ERR
145
+ this.allocator.spanEndErr(buffer._systemPtr, this._traceRootPtr);
146
+ }
147
+ else {
148
+ // SPAN_EXCEPTION or other - write via generic log entry
149
+ // For now, use spanEndErr as fallback (entry_type will be overwritten)
150
+ this.allocator.spanEndErr(buffer._systemPtr, this._traceRootPtr);
151
+ // Overwrite entry_type if needed (for EXCEPTION)
152
+ if (entryType !== 3) {
153
+ buffer.entry_type[1] = entryType;
154
+ }
155
+ }
156
+ }
157
+ else {
158
+ // JS path
159
+ buffer.timestamp[1] = this.getTimestampNanos();
160
+ buffer.entry_type[1] = entryType;
161
+ }
162
+ }
163
+ /**
164
+ * Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
165
+ * SpanLogger uses returned idx for string column writes.
166
+ *
167
+ * @param buffer - SpanBuffer to write to
168
+ * @param entryType - Entry type (INFO, DEBUG, WARN, ERROR, TRACE, FF_ACCESS, FF_USAGE)
169
+ * @returns The row index where entry was written
170
+ */
171
+ writeLogEntry(buffer, entryType) {
172
+ if (isWasmSpanBuffer(buffer)) {
173
+ // WASM path: bump writeIndex, write timestamp + entry_type, return idx
174
+ return this.allocator.writeLogEntry(buffer._systemPtr, buffer._identityPtr, this._traceRootPtr, entryType);
175
+ }
176
+ // JS path: bump writeIndex, write directly, return idx
177
+ const idx = buffer._writeIndex;
178
+ buffer.timestamp[idx] = this.getTimestampNanos();
179
+ buffer.entry_type[idx] = entryType;
180
+ buffer._writeIndex = idx + 1;
181
+ return idx;
182
+ }
183
+ // ===========================================================================
184
+ // Low-level WASM pointer-based methods (for direct WASM access and tests)
185
+ // These are used by the existing tests and for low-level buffer manipulation
186
+ // ===========================================================================
187
+ /**
188
+ * Write span-start entry to buffer's system block using pointer.
189
+ * Sets row 0 = span-start, row 1 = span-exception (crash safety).
190
+ * Sets _writeIndex = 2 in the identity block.
191
+ *
192
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
193
+ * @param identityPtr - Byte offset of buffer's identity block in WASM memory
194
+ */
195
+ writeSpanStartPtr(systemPtr, identityPtr) {
196
+ this.allocator.spanStart(systemPtr, identityPtr, this._traceRootPtr);
197
+ }
198
+ /**
199
+ * Write span-ok to row 1 using pointer.
200
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
201
+ */
202
+ writeSpanEndOkPtr(systemPtr) {
203
+ this.allocator.spanEndOk(systemPtr, this._traceRootPtr);
204
+ }
205
+ /**
206
+ * Write span-err to row 1 using pointer.
207
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
208
+ */
209
+ writeSpanEndErrPtr(systemPtr) {
210
+ this.allocator.spanEndErr(systemPtr, this._traceRootPtr);
211
+ }
212
+ /**
213
+ * Write a log entry at current write index using pointer.
214
+ * Returns the row index where entry was written.
215
+ *
216
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
217
+ * @param identityPtr - Byte offset of buffer's identity block in WASM memory
218
+ * @param entryType - Entry type constant (ENTRY_TYPE_INFO, etc.)
219
+ * @returns Row index where entry was written
220
+ */
221
+ writeLogEntryPtr(systemPtr, identityPtr, entryType) {
222
+ return this.allocator.writeLogEntry(systemPtr, identityPtr, this._traceRootPtr, entryType);
223
+ }
224
+ /**
225
+ * Read current write index from buffer's identity block.
226
+ * @param identityPtr - Byte offset of buffer's identity block in WASM memory
227
+ */
228
+ readWriteIndex(identityPtr) {
229
+ return this.allocator.readWriteIndex(identityPtr);
230
+ }
231
+ /**
232
+ * Free the TraceRoot's memory block when trace completes.
233
+ */
234
+ free() {
235
+ this.allocator.free8B(this._traceRootPtr);
236
+ }
237
+ }
238
+ // =============================================================================
239
+ // Factory Functions
240
+ // =============================================================================
241
+ /**
242
+ * Create a WasmTraceRoot instance directly.
243
+ * Used by tests and low-level code.
244
+ *
245
+ * @param allocator - WASM allocator instance
246
+ * @param trace_id - Trace ID for this trace
247
+ * @param tracer - Tracer lifecycle hooks
248
+ */
249
+ export function createWasmTraceRoot(allocator, trace_id, tracer) {
250
+ return new WasmTraceRoot(allocator, createTraceId(trace_id), tracer);
251
+ }
252
+ /**
253
+ * Factory function to create WasmTraceRoot factory.
254
+ *
255
+ * This returns a factory function that can be passed to Tracer constructor.
256
+ *
257
+ * @param allocator - WASM allocator instance
258
+ * @returns Factory function compatible with TraceRootFactory type
259
+ */
260
+ export function createWasmTraceRootFactory(allocator) {
261
+ return (trace_id, tracer) => {
262
+ return new WasmTraceRoot(allocator, createTraceId(trace_id), tracer);
263
+ };
264
+ }
package/dist/node.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Node.js entry point for @smoothbricks/lmao/node
3
+ * Uses process.hrtime.bigint() for nanosecond-precision timestamps
4
+ */
5
+ export * from './index.js';
6
+ export { createTraceRoot } from './lib/traceRoot.node.js';
7
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/node.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Node.js entry point for @smoothbricks/lmao/node
3
+ * Uses process.hrtime.bigint() for nanosecond-precision timestamps
4
+ */
5
+ // Re-export all main functionality
6
+ export * from './index.js';
7
+ // Export Node.js-specific TraceRoot factory for Tracer construction
8
+ export { createTraceRoot } from './lib/traceRoot.node.js';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Testing utilities for LMAO trace-testing.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import {
7
+ * TestTracer,
8
+ * createFactArray,
9
+ * spanStarted,
10
+ * spanOk,
11
+ * tagFact,
12
+ * } from '@smoothbricks/lmao/testing';
13
+ * ```
14
+ *
15
+ * @module testing
16
+ */
17
+ export * from './lib/testing/index.js';
18
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Testing utilities for LMAO trace-testing.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import {
7
+ * TestTracer,
8
+ * createFactArray,
9
+ * spanStarted,
10
+ * spanOk,
11
+ * tagFact,
12
+ * } from '@smoothbricks/lmao/testing';
13
+ * ```
14
+ *
15
+ * @module testing
16
+ */
17
+ export * from './lib/testing/index.js';