@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,19 @@
1
+ // Re-export TraceId types from traceId.ts
2
+ export { createTraceId, extractSpanIdentity, generateTraceId, isValidTraceId, MAX_TRACE_ID_LENGTH } from './traceId.js';
3
+ /**
4
+ * TraceRoot._system memory layout (little-endian):
5
+ *
6
+ * Offset Size Field
7
+ * 0 8 anchorEpochNanos (i64) - epoch time in nanoseconds
8
+ * 8 8 anchorPerfNow (f64) - high-res timer anchor
9
+ * 16 1 trace_id_len (u8) - length of trace_id UTF-8 bytes
10
+ * 17 N trace_id (UTF-8 bytes)
11
+ *
12
+ * Total: 17 + trace_id.length bytes
13
+ *
14
+ * This layout enables NAPI/WASM to read anchors directly without BigInt extraction.
15
+ */
16
+ export const TRACE_ROOT_ANCHOR_EPOCH_OFFSET = 0;
17
+ export const TRACE_ROOT_ANCHOR_PERF_OFFSET = 8;
18
+ export const TRACE_ROOT_TRACE_ID_LEN_OFFSET = 16;
19
+ export const TRACE_ROOT_TRACE_ID_OFFSET = 17;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * TraceRoot - Node.js implementation.
3
+ *
4
+ * Uses process.hrtime.bigint() for true nanosecond precision and writes directly
5
+ * to SpanBuffer state from JavaScript.
6
+ *
7
+ * @module traceRoot.node
8
+ */
9
+ import { Nanoseconds } from '@smoothbricks/arrow-builder';
10
+ import { type TraceId } from './traceId.js';
11
+ import { type ITraceRoot, type TracerLifecycleHooks } from './traceRoot.js';
12
+ import type { AnySpanBuffer } from './types.js';
13
+ /**
14
+ * TraceRoot - Node.js implementation.
15
+ *
16
+ * Stores anchor data in _system ArrayBuffer and writes timestamps directly from JS.
17
+ */
18
+ export declare class TraceRoot implements ITraceRoot {
19
+ /**
20
+ * Raw backing buffer containing anchor timestamps and trace_id.
21
+ */
22
+ readonly _system: ArrayBuffer;
23
+ /**
24
+ * Tracer reference for lifecycle hooks and event callbacks.
25
+ */
26
+ readonly tracer: TracerLifecycleHooks;
27
+ /**
28
+ * Cached TypedArray views for fast JS access.
29
+ */
30
+ private readonly _epochView;
31
+ private readonly _perfView;
32
+ /**
33
+ * Cached anchor hrtime as BigInt for JS timestamp fallback.
34
+ * Only used if NAPI addon is not available.
35
+ */
36
+ private readonly _anchorHrtimeBigInt;
37
+ constructor(trace_id: TraceId, anchorEpochNanos: bigint, anchorPerfNow: number, anchorHrtimeBigInt: bigint, tracer: TracerLifecycleHooks);
38
+ /**
39
+ * Epoch time in nanoseconds when trace was created.
40
+ */
41
+ get anchorEpochNanos(): bigint;
42
+ /**
43
+ * High-resolution timer anchor when trace was created.
44
+ */
45
+ get anchorPerfNow(): number;
46
+ /**
47
+ * Trace ID for this trace.
48
+ */
49
+ get trace_id(): TraceId;
50
+ /**
51
+ * Get current timestamp in nanoseconds since Unix epoch.
52
+ * Uses process.hrtime.bigint() for true nanosecond precision.
53
+ */
54
+ getTimestampNanos(): Nanoseconds;
55
+ /**
56
+ * Write span-start entry to buffer at row 0.
57
+ *
58
+ */
59
+ writeSpanStart(buffer: AnySpanBuffer, spanName: string): void;
60
+ /**
61
+ * Write span-end entry to buffer at row 1.
62
+ * Writes both timestamp and entry_type.
63
+ *
64
+ */
65
+ writeSpanEnd(buffer: AnySpanBuffer, entryType: number): void;
66
+ /**
67
+ * Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
68
+ * SpanLogger uses returned idx for string column writes.
69
+ */
70
+ writeLogEntry(buffer: AnySpanBuffer, entryType: number): number;
71
+ }
72
+ /**
73
+ * Factory function for creating Node.js TraceRoot instances.
74
+ * Pass this to Tracer constructor for Node.js environments.
75
+ */
76
+ export declare function createTraceRoot(trace_id: string, tracer: TracerLifecycleHooks): TraceRoot;
77
+ //# sourceMappingURL=traceRoot.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceRoot.node.d.ts","sourceRoot":"","sources":["../../src/lib/traceRoot.node.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,KAAK,UAAU,EAKf,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD;;;;GAIG;AACH,qBAAa,SAAU,YAAW,UAAU;IAC1C;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAEtC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IAEzC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAG3C,QAAQ,EAAE,OAAO,EACjB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,oBAAoB;IAyB9B;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAGtB;IAED;;;OAGG;IACH,iBAAiB,IAAI,WAAW;IAMhC;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAY7D;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAK5D;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAOhE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,SAAS,CAMzF"}
@@ -0,0 +1,133 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * TraceRoot - Node.js implementation.
4
+ *
5
+ * Uses process.hrtime.bigint() for true nanosecond precision and writes directly
6
+ * to SpanBuffer state from JavaScript.
7
+ *
8
+ * @module traceRoot.node
9
+ */
10
+ import { Nanoseconds } from '@smoothbricks/arrow-builder';
11
+ import { ENTRY_TYPE_SPAN_EXCEPTION, ENTRY_TYPE_SPAN_START } from './schema/systemSchema.js';
12
+ import { createTraceId } from './traceId.js';
13
+ import { TRACE_ROOT_ANCHOR_EPOCH_OFFSET, TRACE_ROOT_ANCHOR_PERF_OFFSET, TRACE_ROOT_TRACE_ID_LEN_OFFSET, TRACE_ROOT_TRACE_ID_OFFSET, } from './traceRoot.js';
14
+ /** Shared TextEncoder for trace_id encoding (stateless, reusable) */
15
+ const textEncoder = new TextEncoder();
16
+ /** Shared TextDecoder for trace_id decoding (stateless, reusable) */
17
+ const textDecoder = new TextDecoder();
18
+ /**
19
+ * TraceRoot - Node.js implementation.
20
+ *
21
+ * Stores anchor data in _system ArrayBuffer and writes timestamps directly from JS.
22
+ */
23
+ export class TraceRoot {
24
+ /**
25
+ * Raw backing buffer containing anchor timestamps and trace_id.
26
+ */
27
+ _system;
28
+ /**
29
+ * Tracer reference for lifecycle hooks and event callbacks.
30
+ */
31
+ tracer;
32
+ /**
33
+ * Cached TypedArray views for fast JS access.
34
+ */
35
+ _epochView;
36
+ _perfView;
37
+ /**
38
+ * Cached anchor hrtime as BigInt for JS timestamp fallback.
39
+ * Only used if NAPI addon is not available.
40
+ */
41
+ _anchorHrtimeBigInt;
42
+ constructor(trace_id, anchorEpochNanos, anchorPerfNow, anchorHrtimeBigInt, tracer) {
43
+ // Allocate buffer: 17 bytes header + trace_id length
44
+ // trace_id is validated to be ASCII (1 byte per char) so length === byte length
45
+ this._system = new ArrayBuffer(TRACE_ROOT_TRACE_ID_OFFSET + trace_id.length);
46
+ this.tracer = tracer;
47
+ // Create cached views (one-time allocation)
48
+ this._epochView = new BigInt64Array(this._system, TRACE_ROOT_ANCHOR_EPOCH_OFFSET, 1);
49
+ this._perfView = new Float64Array(this._system, TRACE_ROOT_ANCHOR_PERF_OFFSET, 1);
50
+ // Write anchor data directly
51
+ this._epochView[0] = anchorEpochNanos;
52
+ this._perfView[0] = anchorPerfNow;
53
+ // Keep exact monotonic anchor for JS fallback (avoid Number precision loss after ~104 days uptime)
54
+ this._anchorHrtimeBigInt = anchorHrtimeBigInt;
55
+ // Encode trace_id directly into buffer (no intermediate allocation)
56
+ const u8View = new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_LEN_OFFSET);
57
+ const traceIdDest = new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_OFFSET, trace_id.length);
58
+ const { written } = textEncoder.encodeInto(trace_id, traceIdDest);
59
+ u8View[0] = written;
60
+ }
61
+ /**
62
+ * Epoch time in nanoseconds when trace was created.
63
+ */
64
+ get anchorEpochNanos() {
65
+ return this._epochView[0];
66
+ }
67
+ /**
68
+ * High-resolution timer anchor when trace was created.
69
+ */
70
+ get anchorPerfNow() {
71
+ return this._perfView[0];
72
+ }
73
+ /**
74
+ * Trace ID for this trace.
75
+ */
76
+ get trace_id() {
77
+ const len = new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_LEN_OFFSET, 1)[0];
78
+ return createTraceId(textDecoder.decode(new Uint8Array(this._system, TRACE_ROOT_TRACE_ID_OFFSET, len)));
79
+ }
80
+ /**
81
+ * Get current timestamp in nanoseconds since Unix epoch.
82
+ * Uses process.hrtime.bigint() for true nanosecond precision.
83
+ */
84
+ getTimestampNanos() {
85
+ const currentHrtime = process.hrtime.bigint();
86
+ const elapsedNanos = currentHrtime - this._anchorHrtimeBigInt;
87
+ return Nanoseconds.unsafe(this._epochView[0] + elapsedNanos);
88
+ }
89
+ /**
90
+ * Write span-start entry to buffer at row 0.
91
+ *
92
+ */
93
+ writeSpanStart(buffer, spanName) {
94
+ buffer.timestamp[0] = this.getTimestampNanos();
95
+ buffer.entry_type[0] = ENTRY_TYPE_SPAN_START;
96
+ buffer.message(0, spanName);
97
+ // Pre-initialize row 1 as span-exception
98
+ buffer.entry_type[1] = ENTRY_TYPE_SPAN_EXCEPTION;
99
+ buffer.timestamp[1] = 0n;
100
+ buffer._writeIndex = 2;
101
+ }
102
+ /**
103
+ * Write span-end entry to buffer at row 1.
104
+ * Writes both timestamp and entry_type.
105
+ *
106
+ */
107
+ writeSpanEnd(buffer, entryType) {
108
+ buffer.timestamp[1] = this.getTimestampNanos();
109
+ buffer.entry_type[1] = entryType;
110
+ }
111
+ /**
112
+ * Write log entry: bump writeIndex, write timestamp + entry_type, return idx.
113
+ * SpanLogger uses returned idx for string column writes.
114
+ */
115
+ writeLogEntry(buffer, entryType) {
116
+ const idx = buffer._writeIndex;
117
+ buffer.timestamp[idx] = this.getTimestampNanos();
118
+ buffer.entry_type[idx] = entryType;
119
+ buffer._writeIndex = idx + 1;
120
+ return idx;
121
+ }
122
+ }
123
+ /**
124
+ * Factory function for creating Node.js TraceRoot instances.
125
+ * Pass this to Tracer constructor for Node.js environments.
126
+ */
127
+ export function createTraceRoot(trace_id, tracer) {
128
+ const anchorEpochNanos = BigInt(Date.now()) * 1000000n;
129
+ const anchorHrtimeBigInt = process.hrtime.bigint();
130
+ // Store as number for NAPI to read as f64
131
+ const anchorPerfNow = Number(anchorHrtimeBigInt);
132
+ return new TraceRoot(createTraceId(trace_id), anchorEpochNanos, anchorPerfNow, anchorHrtimeBigInt, tracer);
133
+ }
@@ -0,0 +1,3 @@
1
+ import type { TraceRootFactory } from './traceRoot.js';
2
+ export declare const createTraceRoot: TraceRootFactory;
3
+ //# sourceMappingURL=traceRoot.universal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceRoot.universal.d.ts","sourceRoot":"","sources":["../../src/lib/traceRoot.universal.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKvD,eAAO,MAAM,eAAe,EAAE,gBAC4E,CAAC"}
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * TraceRoot - Universal implementation with runtime platform detection.
4
+ *
5
+ * Selects between Node.js (nanosecond hrtime) and ES (performance.now()) based
6
+ * on whether process.hrtime.bigint is available at runtime.
7
+ *
8
+ * Both modules are safe to import — platform-specific calls (process.hrtime.bigint(),
9
+ * NAPI addon) happen inside the factory function, not at module scope.
10
+ *
11
+ * @module traceRoot.universal
12
+ */
13
+ import { createTraceRoot as esFactory } from './traceRoot.es.js';
14
+ import { createTraceRoot as nodeFactory } from './traceRoot.node.js';
15
+ // Node/Bun → nanosecond precision via hrtime.bigint()
16
+ // CF Workers/browsers → performance.now() microsecond precision
17
+ export const createTraceRoot = typeof process !== 'undefined' && typeof process.hrtime?.bigint === 'function' ? nodeFactory : esFactory;
@@ -0,0 +1,296 @@
1
+ /**
2
+ * Tracer - Abstract base class for trace collection
3
+ *
4
+ * Per specs/lmao/01c_context_flow_and_op_wrappers.md:
5
+ * - Tracer owns trace() function for creating root spans
6
+ * - Collects SpanBuffers in pendingBuffers array
7
+ * - Subclasses implement flush() to define persistence strategy
8
+ *
9
+ * ## Design Philosophy
10
+ *
11
+ * Tracer separates two concerns:
12
+ * 1. **BufferStrategy**: HOW buffers are allocated (JS TypedArrays vs WASM memory)
13
+ * 2. **Sink behavior** (lifecycle hooks): WHAT happens with completed buffers
14
+ *
15
+ * Tracer is ABSTRACT - subclasses implement lifecycle hooks:
16
+ * - `onTraceEnd()` - called when root trace completes
17
+ * - `onSpanEnd()` - called when child span completes
18
+ * - `flush()` - optional, for batching strategies
19
+ *
20
+ * BufferStrategy is INJECTED via constructor:
21
+ * - `JsBufferStrategy` - GC-managed TypedArrays, zero-copy Arrow
22
+ * - `WasmBufferStrategy` - WASM memory with freelist, Arrow built in WASM
23
+ *
24
+ * The sink controls WHEN to convert/release:
25
+ * - StdioTracer: prints then releases immediately
26
+ * - TestTracer: holds buffers until clear()
27
+ * - SqsTracer: accumulates, converts on flush(), then releases
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * // Concrete implementation - Cloudflare Queue
32
+ * class QueueTracer extends Tracer {
33
+ * constructor(binding, strategy, options, private queue: Queue) {
34
+ * super(binding, strategy, options);
35
+ * }
36
+ *
37
+ * async flush() {
38
+ * const buffers = [...this.pending];
39
+ * this.pending.length = 0;
40
+ * for (const buffer of buffers) {
41
+ * const table = await this.bufferStrategy.toArrowTable(buffer);
42
+ * await this.queue.send(table);
43
+ * this.bufferStrategy.releaseBuffer(buffer);
44
+ * }
45
+ * }
46
+ * }
47
+ *
48
+ * // Usage
49
+ * const ctx = defineOpContext({ logSchema, ctx: { env: null as Env } });
50
+ * const strategy = new JsBufferStrategy();
51
+ * const { trace, flush } = new QueueTracer(ctx, strategy, options, env.TRACES);
52
+ * await trace('fetch', { env: myEnv }, async (ctx) => {
53
+ * ctx.tag.userId('user-123');
54
+ * return ctx.ok('done');
55
+ * });
56
+ * executionContext.waitUntil(flush());
57
+ * ```
58
+ *
59
+ * @module tracer
60
+ */
61
+ import type { BufferStrategy } from './bufferStrategy.js';
62
+ import { Op } from './op.js';
63
+ import type { OpContext, OpContextBinding, OpContextOf, SpanContext } from './opContext/types.js';
64
+ import { type Result } from './result.js';
65
+ import { type FlagEvaluator } from './schema/evaluator.js';
66
+ import { type TraceId } from './traceId.js';
67
+ import type { TraceRootFactory } from './traceRoot.js';
68
+ import type { SpanBuffer } from './types.js';
69
+ /**
70
+ * Base tracer options (can be extended by subclasses)
71
+ *
72
+ * Flag evaluator typing is intentionally loose - the evaluator just needs to
73
+ * implement the FlagEvaluator interface. Type safety for flag access comes from
74
+ * the OpContext's flags schema, not from the evaluator's type parameter.
75
+ */
76
+ export interface TracerOptions<T extends import('./schema/LogSchema.js').LogSchema = import('./schema/LogSchema.js').LogSchema> {
77
+ /**
78
+ * Buffer strategy for memory management and Arrow conversion.
79
+ *
80
+ * Controls HOW buffers are allocated:
81
+ * - JsBufferStrategy: GC-managed TypedArrays, zero-copy Arrow
82
+ * - WasmBufferStrategy: WASM memory with freelist, Arrow built in WASM
83
+ */
84
+ bufferStrategy: BufferStrategy<T>;
85
+ /**
86
+ * Factory for creating platform-specific TraceRoot instances.
87
+ * Import from '@smoothbricks/lmao/node' or '@smoothbricks/lmao/es'.
88
+ */
89
+ createTraceRoot: TraceRootFactory;
90
+ /** Feature flag evaluator - provides flag values at runtime */
91
+ flagEvaluator?: FlagEvaluator<OpContext>;
92
+ }
93
+ /**
94
+ * Trace overrides - userCtx values plus optional trace_id.
95
+ *
96
+ * Like span() overrides, but with optional trace_id for distributed tracing.
97
+ * The trace_id must be a branded TraceId (use createTraceId() to validate).
98
+ *
99
+ * When UserCtx is empty (Record<string, never>), only trace_id is available.
100
+ * Otherwise, allows partial userCtx values plus trace_id.
101
+ *
102
+ * We use a conditional type to avoid issues with Partial<Record<string, never>>
103
+ * which creates an index signature where all values must be undefined.
104
+ *
105
+ * @typeParam UserCtx - User context type from OpContext
106
+ */
107
+ export type TraceOverrides<UserCtx> = [UserCtx] extends [Record<string, never>] ? {
108
+ trace_id?: TraceId;
109
+ } : Partial<UserCtx> & {
110
+ trace_id?: TraceId;
111
+ };
112
+ /**
113
+ * TraceFn - overloaded trace creation function.
114
+ *
115
+ * Per specs/lmao/01c_context_flow_and_op_wrappers.md:
116
+ * Creates root spans with type-safe Op invocation or inline closures.
117
+ * Mirrors SpanFn but for root traces.
118
+ *
119
+ * Pattern:
120
+ * - With/without line numbers (transformer injection)
121
+ * - Always requires name (unlike span which can use op.metadata.name)
122
+ * - With/without overrides (userCtx + optional trace_id)
123
+ * - With/without Op arguments (0-8 args supported)
124
+ *
125
+ * @template Ctx - Full OpContext type from the tracer's binding
126
+ */
127
+ export type TraceFn<Ctx extends OpContext> = {
128
+ /**
129
+ * Trace Op with line + name + args.
130
+ */
131
+ <S, E, Args extends unknown[]>(line: number, name: string, op: Op<Ctx, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
132
+ /**
133
+ * Trace Op with line + name + overrides + args.
134
+ */
135
+ <S, E, Args extends unknown[]>(line: number, name: string, overrides: TraceOverrides<Ctx['userCtx']>, op: Op<Ctx, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
136
+ /**
137
+ * Trace inline function with line + name.
138
+ */
139
+ <R>(line: number, name: string, fn: (ctx: SpanContext<Ctx>) => R): R;
140
+ /**
141
+ * Trace inline function with line + name + overrides.
142
+ */
143
+ <R>(line: number, name: string, overrides: TraceOverrides<Ctx['userCtx']>, fn: (ctx: SpanContext<Ctx>) => R): R;
144
+ /**
145
+ * Trace Op with name + args.
146
+ */
147
+ <S, E, Args extends unknown[]>(name: string, op: Op<Ctx, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
148
+ /**
149
+ * Trace Op with name + overrides + args.
150
+ */
151
+ <S, E, Args extends unknown[]>(name: string, overrides: TraceOverrides<Ctx['userCtx']>, op: Op<Ctx, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
152
+ /**
153
+ * Trace inline function with name.
154
+ */
155
+ <R>(name: string, fn: (ctx: SpanContext<Ctx>) => R): R;
156
+ /**
157
+ * Trace inline function with name + overrides.
158
+ */
159
+ <R>(name: string, overrides: TraceOverrides<Ctx['userCtx']>, fn: (ctx: SpanContext<Ctx>) => R): R;
160
+ };
161
+ /**
162
+ * Tracer - Abstract base class for trace collection
163
+ *
164
+ * Provides trace execution with lifecycle hooks for buffer management.
165
+ * Subclasses implement onTraceStart, onTraceEnd, onSpanStart, onSpanEnd to define
166
+ * how spans are collected and processed.
167
+ *
168
+ * BufferStrategy is injected to control memory management and Arrow conversion.
169
+ *
170
+ * @typeParam B - OpContextBinding type (inferred from constructor argument)
171
+ */
172
+ export declare abstract class Tracer<B extends OpContextBinding = OpContextBinding> {
173
+ private readonly logBinding;
174
+ private readonly SpanContextClass;
175
+ private readonly flagEvaluator;
176
+ private readonly ctxDefaults;
177
+ private readonly deps;
178
+ private readonly createTraceRoot;
179
+ /**
180
+ * Buffer strategy for memory management and Arrow conversion.
181
+ * Public because SpanContext needs access for child span creation.
182
+ * Also accessible to subclasses for toArrowTable/releaseBuffer calls.
183
+ */
184
+ readonly bufferStrategy: BufferStrategy<B['logBinding']['logSchema']>;
185
+ constructor(binding: B, options: TracerOptions<B['logBinding']['logSchema']>);
186
+ private _createFlagEvaluator;
187
+ /**
188
+ * Called when a root trace starts (before fn execution).
189
+ * Only called for root spans created via trace(), not child spans.
190
+ * Subclasses implement to handle trace lifecycle events (e.g., collect for batching).
191
+ */
192
+ abstract onTraceStart(rootBuffer: SpanBuffer<B['logBinding']['logSchema']>): void;
193
+ /**
194
+ * Called when a root trace ends (after fn completes, in finally).
195
+ * Always called, even if fn threw an exception.
196
+ * Only called for root spans created via trace(), not child spans.
197
+ * Subclasses implement to handle trace completion (e.g., queue for sending).
198
+ */
199
+ abstract onTraceEnd(rootBuffer: SpanBuffer<B['logBinding']['logSchema']>): void;
200
+ /**
201
+ * Called when a child span starts (before fn execution).
202
+ * Only called for child spans created via ctx.span(), not root traces.
203
+ * Subclasses implement if child span lifecycle needs special handling.
204
+ */
205
+ abstract onSpanStart(childBuffer: SpanBuffer<B['logBinding']['logSchema']>): void;
206
+ /**
207
+ * Called when a child span ends (after fn completes, in finally).
208
+ * Always called, even if fn threw an exception.
209
+ * Only called for child spans created via ctx.span(), not root traces.
210
+ * Subclasses implement if child span lifecycle needs special handling.
211
+ */
212
+ abstract onSpanEnd(childBuffer: SpanBuffer<B['logBinding']['logSchema']>): void;
213
+ /**
214
+ * Called before stats are reset during capacity tuning.
215
+ * Allows tracer to capture stats for observability before they're lost.
216
+ *
217
+ * The buffer provides all necessary context:
218
+ * - buffer._stats → SpanBufferStats about to be reset
219
+ * - buffer._opMetadata → which Op/module these stats belong to
220
+ * - buffer.constructor → SpanBufferClass (schema info)
221
+ *
222
+ * @param buffer - The buffer that triggered overflow
223
+ */
224
+ abstract onStatsWillResetFor(buffer: SpanBuffer<B['logBinding']['logSchema']>): void;
225
+ /**
226
+ * Flush any pending data. Default is no-op.
227
+ * Subclasses override if they batch data (e.g., collecting in onTraceEnd then flushing here).
228
+ */
229
+ flush(): Promise<void>;
230
+ /**
231
+ * Polymorphic trace dispatcher.
232
+ *
233
+ * Parses overloaded arguments and dispatches to monomorphic methods.
234
+ * Uses argument type detection for clean pattern matching.
235
+ *
236
+ * Patterns supported:
237
+ * - (name, fn)
238
+ * - (name, overrides, fn)
239
+ * - (name, op, ...args)
240
+ * - (name, overrides, op, ...args)
241
+ * - Plus line number prefix variants for transformer
242
+ *
243
+ * @see TraceFn for type-level documentation of all overloads
244
+ */
245
+ trace<S, E, Args extends unknown[]>(line: number, name: string, op: Op<OpContextOf<B>, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
246
+ trace<S, E, Args extends unknown[]>(line: number, name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, op: Op<OpContextOf<B>, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
247
+ trace<R>(line: number, name: string, fn: (ctx: SpanContext<OpContextOf<B>>) => R): R;
248
+ trace<R>(line: number, name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, fn: (ctx: SpanContext<OpContextOf<B>>) => R): R;
249
+ trace<S, E, Args extends unknown[]>(name: string, op: Op<OpContextOf<B>, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
250
+ trace<S, E, Args extends unknown[]>(name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, op: Op<OpContextOf<B>, Args, S, E>, ...args: Args): Promise<Result<S, E>>;
251
+ trace<R>(name: string, fn: (ctx: SpanContext<OpContextOf<B>>) => R): R;
252
+ trace<R>(name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, fn: (ctx: SpanContext<OpContextOf<B>>) => R): R;
253
+ /**
254
+ * Execute an Op as a root trace (internal monomorphic method).
255
+ * Supports 0-8 arguments. The transformer rewrites trace() calls to this.
256
+ */
257
+ private _trace_op;
258
+ private _trace_unknown_op;
259
+ /**
260
+ * Execute a function as a root trace (internal monomorphic method).
261
+ * The transformer rewrites trace() calls to this.
262
+ */
263
+ private _trace_fn;
264
+ private _trace_unknown_fn;
265
+ /**
266
+ * Execute an Op as a root trace (monomorphic - for transformer optimization).
267
+ * Public API for transformer to call directly, bypassing polymorphic dispatch.
268
+ */
269
+ trace_op<S, E, Args extends unknown[]>(line: number, name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, op: Op<OpContextOf<B>, Args, S, E>, ...opArgs: Args): Result<S, E> | Promise<Result<S, E>>;
270
+ /**
271
+ * Execute a function as a root trace (monomorphic - for transformer optimization).
272
+ * Public API for transformer to call directly, bypassing polymorphic dispatch.
273
+ */
274
+ trace_fn<R>(line: number, name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, fn: (ctx: SpanContext<OpContextOf<B>>) => Promise<R>): Promise<R>;
275
+ trace_fn<R>(line: number, name: string, overrides: TraceOverrides<OpContextOf<B>['userCtx']>, fn: (ctx: SpanContext<OpContextOf<B>>) => R): R;
276
+ private _createRootContext;
277
+ /**
278
+ * Validate null-sentinel required fields and merge with provided overrides.
279
+ *
280
+ * Per the ctx config pattern:
281
+ * - Properties with null values in ctxDefaults must be provided in overrides
282
+ * - Properties with default values can optionally be overridden
283
+ * - undefined is allowed for optional fields
284
+ */
285
+ private _resolveUserContext;
286
+ /**
287
+ * Execute function with context and handle span-ok/span-err/span-exception writes
288
+ * Promise-agnostic: returns sync for sync fn, Promise for async fn
289
+ *
290
+ * Writes span-end entry (entry_type, timestamp, error_code) and applies deferred tags
291
+ * when the function returns an Ok/Err result.
292
+ */
293
+ private _executeResultWithContext;
294
+ private _executeUnknownWithContext;
295
+ }
296
+ //# sourceMappingURL=tracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/lib/tracer.ts"],"names":[],"mappings":"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"}