@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,315 @@
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
+
12
+ import { Nanoseconds } from '@smoothbricks/arrow-builder';
13
+ import { ENTRY_TYPE_SPAN_EXCEPTION, ENTRY_TYPE_SPAN_START } from '../schema/systemSchema.js';
14
+ import { createTraceId, type TraceId } from '../traceId.js';
15
+ import type { ITraceRoot, TracerLifecycleHooks } from '../traceRoot.js';
16
+ import type { AnySpanBuffer } from '../types.js';
17
+ import type { WasmAllocator } from './wasmAllocator.js';
18
+
19
+ // =============================================================================
20
+ // WASM Buffer Detection
21
+ // =============================================================================
22
+
23
+ /**
24
+ * Interface for WASM-backed span buffers.
25
+ * These have a _systemPtr that points to WASM memory.
26
+ */
27
+ export interface WasmSpanBufferLike {
28
+ /** Byte offset into WASM memory for system columns (timestamp + entry_type) */
29
+ readonly _systemPtr: number;
30
+ /** Byte offset into WASM memory for identity block (writeIndex, span_id, trace_id) */
31
+ readonly _identityPtr: number;
32
+ /** Message column - string array for span names and log messages */
33
+ readonly _message: string[];
34
+ /** Current write position (getter/setter reads from WASM identity block) */
35
+ _writeIndex: number;
36
+ }
37
+
38
+ /**
39
+ * Type guard to check if a buffer is WASM-backed.
40
+ */
41
+ export function isWasmSpanBuffer(buffer: unknown): buffer is WasmSpanBufferLike {
42
+ return typeof buffer === 'object' && buffer !== null && typeof Reflect.get(buffer, '_systemPtr') === 'number';
43
+ }
44
+
45
+ // =============================================================================
46
+ // WasmTraceRoot Implementation
47
+ // =============================================================================
48
+
49
+ /**
50
+ * WASM-backed TraceRoot implementation.
51
+ *
52
+ * Implements ITraceRoot so it's compatible with SpanContext and the base Tracer.
53
+ * Writes timestamps and entry types to WASM memory for WASM-backed buffers.
54
+ *
55
+ * Memory Layout at _traceRootPtr (16 bytes):
56
+ * - Offset 0-7: anchorEpochNanos (i64) - wall clock time in nanoseconds
57
+ * - Offset 8-15: anchorPerfNow (f64) - performance.now() anchor value
58
+ *
59
+ * The WASM allocator's initTraceRoot() captures these values at trace start,
60
+ * and span lifecycle methods use them to calculate timestamps.
61
+ */
62
+ export class WasmTraceRoot implements ITraceRoot {
63
+ /** Byte offset in WASM memory where TraceRoot data lives */
64
+ readonly _traceRootPtr: number;
65
+
66
+ /** The WASM allocator instance */
67
+ readonly allocator: WasmAllocator;
68
+
69
+ /** Trace ID string */
70
+ readonly trace_id: TraceId;
71
+
72
+ /** Tracer reference for lifecycle hooks */
73
+ readonly tracer: TracerLifecycleHooks;
74
+
75
+ /**
76
+ * Raw backing buffer - not used for WASM, but required by ITraceRoot.
77
+ * We create a minimal ArrayBuffer just to satisfy the interface.
78
+ */
79
+ readonly _system: ArrayBuffer;
80
+
81
+ constructor(allocator: WasmAllocator, trace_id: TraceId, tracer: TracerLifecycleHooks) {
82
+ this.allocator = allocator;
83
+ this.trace_id = trace_id;
84
+ this.tracer = tracer;
85
+
86
+ // Create minimal _system buffer (not actually used, but required by interface)
87
+ this._system = new ArrayBuffer(16);
88
+
89
+ // Allocate an 8B column block for TraceRoot data (16 bytes needed, 8B block is large enough)
90
+ // The 8B column block size is: ceil(capacity/8) + capacity*8 = 8 + 512 = 520 bytes for capacity 64
91
+ // We only need 16 bytes, so this works fine
92
+ this._traceRootPtr = allocator.alloc8B();
93
+
94
+ // Initialize wall clock and monotonic start times in WASM memory
95
+ allocator.initTraceRoot(this._traceRootPtr);
96
+ }
97
+
98
+ /**
99
+ * Epoch time in nanoseconds when trace was created.
100
+ * Read from WASM memory at _traceRootPtr offset 0.
101
+ */
102
+ get anchorEpochNanos(): bigint {
103
+ // i64 view is indexed by 8-byte chunks
104
+ return this.allocator.i64[this._traceRootPtr / 8];
105
+ }
106
+
107
+ /**
108
+ * High-resolution timer anchor when trace was created.
109
+ * Read from WASM memory at _traceRootPtr offset 8.
110
+ */
111
+ get anchorPerfNow(): number {
112
+ // f64 view is indexed by 8-byte chunks
113
+ return this.allocator.f64[(this._traceRootPtr + 8) / 8];
114
+ }
115
+
116
+ /**
117
+ * Get current timestamp in nanoseconds since Unix epoch.
118
+ *
119
+ * Uses the same calculation as NodeTraceRoot:
120
+ * currentNanos = anchorEpochNanos + (currentPerfNow - anchorPerfNow) * 1_000_000
121
+ *
122
+ * Note: In the browser, performance.now() returns milliseconds as a float.
123
+ * We convert to nanoseconds for consistency with the trace format.
124
+ */
125
+ getTimestampNanos(): Nanoseconds {
126
+ const elapsedMs = performance.now() - this.anchorPerfNow;
127
+ const elapsedNanos = BigInt(Math.round(elapsedMs * 1_000_000));
128
+ return Nanoseconds.unsafe(this.anchorEpochNanos + elapsedNanos);
129
+ }
130
+
131
+ // ===========================================================================
132
+ // ITraceRoot implementation (takes buffer parameter)
133
+ // These are the methods used by SpanContext and Tracer
134
+ // ===========================================================================
135
+
136
+ /**
137
+ * Write span-start entry to buffer at row 0.
138
+ *
139
+ * For WASM buffers: writes via WASM allocator to WASM memory
140
+ * Sets row 0 = span-start, row 1 = span-exception (crash safety).
141
+ * Sets _writeIndex = 2.
142
+ *
143
+ * @param buffer - SpanBuffer to write to (can be WASM or JS buffer)
144
+ * @param spanName - Name for this span
145
+ */
146
+ writeSpanStart(buffer: AnySpanBuffer, spanName: string): void {
147
+ if (isWasmSpanBuffer(buffer)) {
148
+ // WASM path: delegate to WASM allocator
149
+ // spanStart writes row 0 (span-start) and row 1 (span-exception placeholder)
150
+ // Also sets writeIndex to 2 in the identity block
151
+ this.allocator.spanStart(buffer._systemPtr, buffer._identityPtr, this._traceRootPtr);
152
+ // Write span name to message column (JS string array)
153
+ buffer._message[0] = spanName;
154
+ // Note: _writeIndex is set by WASM spanStart to 2, but the getter reads from WASM
155
+ // so we don't need to set it here explicitly (the setter would write to WASM anyway)
156
+ } else {
157
+ // JS path: write directly to TypedArrays (fallback for mixed usage)
158
+ buffer.timestamp[0] = this.getTimestampNanos();
159
+ buffer.entry_type[0] = ENTRY_TYPE_SPAN_START;
160
+ buffer.message(0, spanName);
161
+ buffer.entry_type[1] = ENTRY_TYPE_SPAN_EXCEPTION;
162
+ buffer.timestamp[1] = 0n;
163
+ buffer._writeIndex = 2;
164
+ }
165
+ }
166
+
167
+ /**
168
+ * Write span-end entry to buffer at row 1.
169
+ * Writes both timestamp and entry_type.
170
+ *
171
+ * @param buffer - SpanBuffer to write to
172
+ * @param entryType - Entry type (SPAN_OK, SPAN_ERR, or SPAN_EXCEPTION)
173
+ */
174
+ writeSpanEnd(buffer: AnySpanBuffer, entryType: number): void {
175
+ if (isWasmSpanBuffer(buffer)) {
176
+ // WASM path: use appropriate end function based on entry type
177
+ // Note: WASM spanEndOk/spanEndErr write to row 1
178
+ if (entryType === 2) {
179
+ // SPAN_OK
180
+ this.allocator.spanEndOk(buffer._systemPtr, this._traceRootPtr);
181
+ } else if (entryType === 3) {
182
+ // SPAN_ERR
183
+ this.allocator.spanEndErr(buffer._systemPtr, this._traceRootPtr);
184
+ } else {
185
+ // SPAN_EXCEPTION or other - write via generic log entry
186
+ // For now, use spanEndErr as fallback (entry_type will be overwritten)
187
+ this.allocator.spanEndErr(buffer._systemPtr, this._traceRootPtr);
188
+ // Overwrite entry_type if needed (for EXCEPTION)
189
+ if (entryType !== 3) {
190
+ buffer.entry_type[1] = entryType;
191
+ }
192
+ }
193
+ } else {
194
+ // JS path
195
+ buffer.timestamp[1] = this.getTimestampNanos();
196
+ buffer.entry_type[1] = entryType;
197
+ }
198
+ }
199
+
200
+ /**
201
+ * Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
202
+ * SpanLogger uses returned idx for string column writes.
203
+ *
204
+ * @param buffer - SpanBuffer to write to
205
+ * @param entryType - Entry type (INFO, DEBUG, WARN, ERROR, TRACE, FF_ACCESS, FF_USAGE)
206
+ * @returns The row index where entry was written
207
+ */
208
+ writeLogEntry(buffer: AnySpanBuffer, entryType: number): number {
209
+ if (isWasmSpanBuffer(buffer)) {
210
+ // WASM path: bump writeIndex, write timestamp + entry_type, return idx
211
+ return this.allocator.writeLogEntry(buffer._systemPtr, buffer._identityPtr, this._traceRootPtr, entryType);
212
+ }
213
+ // JS path: bump writeIndex, write directly, return idx
214
+ const idx = buffer._writeIndex;
215
+ buffer.timestamp[idx] = this.getTimestampNanos();
216
+ buffer.entry_type[idx] = entryType;
217
+ buffer._writeIndex = idx + 1;
218
+ return idx;
219
+ }
220
+
221
+ // ===========================================================================
222
+ // Low-level WASM pointer-based methods (for direct WASM access and tests)
223
+ // These are used by the existing tests and for low-level buffer manipulation
224
+ // ===========================================================================
225
+
226
+ /**
227
+ * Write span-start entry to buffer's system block using pointer.
228
+ * Sets row 0 = span-start, row 1 = span-exception (crash safety).
229
+ * Sets _writeIndex = 2 in the identity block.
230
+ *
231
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
232
+ * @param identityPtr - Byte offset of buffer's identity block in WASM memory
233
+ */
234
+ writeSpanStartPtr(systemPtr: number, identityPtr: number): void {
235
+ this.allocator.spanStart(systemPtr, identityPtr, this._traceRootPtr);
236
+ }
237
+
238
+ /**
239
+ * Write span-ok to row 1 using pointer.
240
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
241
+ */
242
+ writeSpanEndOkPtr(systemPtr: number): void {
243
+ this.allocator.spanEndOk(systemPtr, this._traceRootPtr);
244
+ }
245
+
246
+ /**
247
+ * Write span-err to row 1 using pointer.
248
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
249
+ */
250
+ writeSpanEndErrPtr(systemPtr: number): void {
251
+ this.allocator.spanEndErr(systemPtr, this._traceRootPtr);
252
+ }
253
+
254
+ /**
255
+ * Write a log entry at current write index using pointer.
256
+ * Returns the row index where entry was written.
257
+ *
258
+ * @param systemPtr - Byte offset of buffer's system block in WASM memory
259
+ * @param identityPtr - Byte offset of buffer's identity block in WASM memory
260
+ * @param entryType - Entry type constant (ENTRY_TYPE_INFO, etc.)
261
+ * @returns Row index where entry was written
262
+ */
263
+ writeLogEntryPtr(systemPtr: number, identityPtr: number, entryType: number): number {
264
+ return this.allocator.writeLogEntry(systemPtr, identityPtr, this._traceRootPtr, entryType);
265
+ }
266
+
267
+ /**
268
+ * Read current write index from buffer's identity block.
269
+ * @param identityPtr - Byte offset of buffer's identity block in WASM memory
270
+ */
271
+ readWriteIndex(identityPtr: number): number {
272
+ return this.allocator.readWriteIndex(identityPtr);
273
+ }
274
+
275
+ /**
276
+ * Free the TraceRoot's memory block when trace completes.
277
+ */
278
+ free(): void {
279
+ this.allocator.free8B(this._traceRootPtr);
280
+ }
281
+ }
282
+
283
+ // =============================================================================
284
+ // Factory Functions
285
+ // =============================================================================
286
+
287
+ /**
288
+ * Create a WasmTraceRoot instance directly.
289
+ * Used by tests and low-level code.
290
+ *
291
+ * @param allocator - WASM allocator instance
292
+ * @param trace_id - Trace ID for this trace
293
+ * @param tracer - Tracer lifecycle hooks
294
+ */
295
+ export function createWasmTraceRoot(
296
+ allocator: WasmAllocator,
297
+ trace_id: string,
298
+ tracer: TracerLifecycleHooks,
299
+ ): WasmTraceRoot {
300
+ return new WasmTraceRoot(allocator, createTraceId(trace_id), tracer);
301
+ }
302
+
303
+ /**
304
+ * Factory function to create WasmTraceRoot factory.
305
+ *
306
+ * This returns a factory function that can be passed to Tracer constructor.
307
+ *
308
+ * @param allocator - WASM allocator instance
309
+ * @returns Factory function compatible with TraceRootFactory type
310
+ */
311
+ export function createWasmTraceRootFactory(allocator: WasmAllocator) {
312
+ return (trace_id: string, tracer: TracerLifecycleHooks): WasmTraceRoot => {
313
+ return new WasmTraceRoot(allocator, createTraceId(trace_id), tracer);
314
+ };
315
+ }
package/src/node.ts ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Node.js entry point for @smoothbricks/lmao/node
3
+ * Uses process.hrtime.bigint() for nanosecond-precision timestamps
4
+ */
5
+
6
+ // Re-export all main functionality
7
+ export * from './index.js';
8
+
9
+ // Export Node.js-specific TraceRoot factory for Tracer construction
10
+ export { createTraceRoot } from './lib/traceRoot.node.js';
package/src/testing.ts ADDED
@@ -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
+
18
+ export * from './lib/testing/index.js';