@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
package/package.json ADDED
@@ -0,0 +1,193 @@
1
+ {
2
+ "name": "@smoothbricks/lmao",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "sideEffects": false,
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ "./package.json": "./package.json",
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "development": "./src/index.ts",
14
+ "import": "./dist/index.js",
15
+ "default": "./dist/index.js"
16
+ },
17
+ "./node": {
18
+ "types": "./dist/node.d.ts",
19
+ "development": "./src/node.ts",
20
+ "import": "./dist/node.js",
21
+ "default": "./dist/node.js"
22
+ },
23
+ "./es": {
24
+ "types": "./dist/es.d.ts",
25
+ "development": "./src/es.ts",
26
+ "import": "./dist/es.js",
27
+ "default": "./dist/es.js"
28
+ },
29
+ "./tracers": {
30
+ "types": "./dist/lib/tracers/index.d.ts",
31
+ "development": "./src/lib/tracers/index.ts",
32
+ "import": "./dist/lib/tracers/index.js",
33
+ "default": "./dist/lib/tracers/index.js"
34
+ },
35
+ "./errors": {
36
+ "types": "./dist/lib/errors/index.d.ts",
37
+ "development": "./src/lib/errors/index.ts",
38
+ "import": "./dist/lib/errors/index.js",
39
+ "default": "./dist/lib/errors/index.js"
40
+ },
41
+ "./errors/Blocked": {
42
+ "types": "./dist/lib/errors/Blocked.d.ts",
43
+ "development": "./src/lib/errors/Blocked.ts",
44
+ "import": "./dist/lib/errors/Blocked.js",
45
+ "default": "./dist/lib/errors/Blocked.js"
46
+ },
47
+ "./errors/RetriesExhausted": {
48
+ "types": "./dist/lib/errors/RetriesExhausted.d.ts",
49
+ "development": "./src/lib/errors/RetriesExhausted.ts",
50
+ "import": "./dist/lib/errors/RetriesExhausted.js",
51
+ "default": "./dist/lib/errors/RetriesExhausted.js"
52
+ },
53
+ "./errors/CodeError": {
54
+ "types": "./dist/lib/errors/CodeError.d.ts",
55
+ "development": "./src/lib/errors/CodeError.ts",
56
+ "import": "./dist/lib/errors/CodeError.js",
57
+ "default": "./dist/lib/errors/CodeError.js"
58
+ },
59
+ "./errors/retry-policy": {
60
+ "types": "./dist/lib/errors/retry-policy.d.ts",
61
+ "development": "./src/lib/errors/retry-policy.ts",
62
+ "import": "./dist/lib/errors/retry-policy.js",
63
+ "default": "./dist/lib/errors/retry-policy.js"
64
+ },
65
+ "./errors/Transient": {
66
+ "types": "./dist/lib/errors/Transient.d.ts",
67
+ "development": "./src/lib/errors/Transient.ts",
68
+ "import": "./dist/lib/errors/Transient.js",
69
+ "default": "./dist/lib/errors/Transient.js"
70
+ },
71
+ "./sqlite": {
72
+ "types": "./dist/lib/sqlite/index.d.ts",
73
+ "development": "./src/lib/sqlite/index.ts",
74
+ "import": "./dist/lib/sqlite/index.js",
75
+ "default": "./dist/lib/sqlite/index.js"
76
+ },
77
+ "./sqlite/node": {
78
+ "types": "./dist/lib/sqlite/sqlite-node.d.ts",
79
+ "development": "./src/lib/sqlite/sqlite-node.ts",
80
+ "import": "./dist/lib/sqlite/sqlite-node.js",
81
+ "default": "./dist/lib/sqlite/sqlite-node.js"
82
+ },
83
+ "./testing": {
84
+ "types": "./dist/testing.d.ts",
85
+ "development": "./src/testing.ts",
86
+ "import": "./dist/testing.js",
87
+ "default": "./dist/testing.js"
88
+ },
89
+ "./testing/bun": {
90
+ "types": "./dist/lib/testing/bun-harness.d.ts",
91
+ "bun": "./src/lib/testing/bun-harness.ts",
92
+ "development": "./src/lib/testing/bun-harness.ts",
93
+ "import": "./dist/lib/testing/bun-harness.js",
94
+ "default": "./dist/lib/testing/bun-harness.js"
95
+ },
96
+ "./testing/vitest": {
97
+ "types": "./dist/lib/testing/vitest-harness.d.ts",
98
+ "development": "./src/lib/testing/vitest-harness.ts",
99
+ "import": "./dist/lib/testing/vitest-harness.js",
100
+ "default": "./dist/lib/testing/vitest-harness.js"
101
+ },
102
+ "./bun/preload": {
103
+ "bun": "./src/bun/preload.ts",
104
+ "development": "./src/bun/preload.ts",
105
+ "default": "./dist/bun/preload.js"
106
+ },
107
+ "./bun/trace-preload": {
108
+ "bun": "./src/bun/trace-preload.ts",
109
+ "development": "./src/bun/trace-preload.ts",
110
+ "default": "./dist/bun/trace-preload.js"
111
+ }
112
+ },
113
+ "files": [
114
+ "dist",
115
+ "src",
116
+ "!**/*.tsbuildinfo"
117
+ ],
118
+ "dependencies": {
119
+ "@msgpack/msgpack": "^3.1.3",
120
+ "@neophi/sieve-cache": "^1.5.0",
121
+ "@smoothbricks/arrow-builder": "0.0.1",
122
+ "@smoothbricks/validation": "0.0.1",
123
+ "@uwdata/flechette": "^2.3.0",
124
+ "tslib": "^2.8.1"
125
+ },
126
+ "scripts": {
127
+ "bench": "bun run benchmarks/*.bench.ts",
128
+ "bench:wasm": "bun run benchmarks/js-vs-wasm.bench.ts",
129
+ "build:wasm": "zig build -Doptimize=ReleaseSmall"
130
+ },
131
+ "nx": {
132
+ "sourceRoot": "packages/lmao/src",
133
+ "projectType": "library",
134
+ "targets": {
135
+ "lint": {},
136
+ "typecheck": {
137
+ "dependsOn": [
138
+ "build",
139
+ "^typecheck"
140
+ ]
141
+ },
142
+ "build:wasm": {
143
+ "inputs": [
144
+ "{projectRoot}/src/**/*.zig",
145
+ "{projectRoot}/build.zig",
146
+ "{projectRoot}/build.zig.zon"
147
+ ],
148
+ "executor": "nx:run-commands",
149
+ "options": {
150
+ "command": "zig build -Doptimize=ReleaseSmall",
151
+ "cwd": "packages/lmao"
152
+ }
153
+ },
154
+ "build": {
155
+ "dependsOn": [
156
+ "^build",
157
+ "build:wasm"
158
+ ]
159
+ },
160
+ "test": {
161
+ "executor": "nx:run-commands",
162
+ "options": {
163
+ "command": "bun test",
164
+ "cwd": "packages/lmao"
165
+ }
166
+ }
167
+ },
168
+ "tags": [
169
+ "npm:public"
170
+ ]
171
+ },
172
+ "devDependencies": {
173
+ "fast-check": "^4.4.0",
174
+ "vitest": "^3.2.4"
175
+ },
176
+ "peerDependencies": {
177
+ "vitest": "^3.2.4"
178
+ },
179
+ "peerDependenciesMeta": {
180
+ "vitest": {
181
+ "optional": true
182
+ }
183
+ },
184
+ "license": "MIT",
185
+ "publishConfig": {
186
+ "access": "public"
187
+ },
188
+ "repository": {
189
+ "type": "git",
190
+ "url": "git+https://github.com/smoothbricks/codebase.git",
191
+ "directory": "packages/lmao"
192
+ }
193
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Bun runtime preload — registers Typia validation codegen plugin.
3
+ *
4
+ * Re-exports from @smoothbricks/validation which owns the Typia integration.
5
+ * Packages that cannot depend on lmao should use @smoothbricks/validation/bun/preload directly.
6
+ *
7
+ * Usage in bunfig.toml:
8
+ * preload = ["@smoothbricks/lmao/bun/preload"]
9
+ */
10
+
11
+ import '@smoothbricks/validation/bun/preload';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Bun test tracing preload.
3
+ *
4
+ * Registers LMAO SQLite-backed test tracing after the Typia preload has already
5
+ * been registered in bunfig.
6
+ */
7
+
8
+ import { join } from 'node:path';
9
+ import { autoSetupBunTestTracing } from '../lib/testing/bun-harness.js';
10
+
11
+ // WHY: Find the monorepo packages dir relative to this file's location.
12
+ // This file lives at packages/lmao/src/bun/trace-preload.ts (4 levels up to monorepo root).
13
+ const monorepoRoot = join(import.meta.dir, '..', '..', '..', '..');
14
+ await autoSetupBunTestTracing({ packagesDir: join(monorepoRoot, 'packages') });
package/src/es.ts ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * ES/Browser entry point for @smoothbricks/lmao/es
3
+ * Uses performance.now() for high-precision timestamps
4
+ * Works in browsers, Deno, Cloudflare Workers, etc.
5
+ */
6
+
7
+ // Re-export all main functionality
8
+ export * from './index.js';
9
+
10
+ // Export browser-specific TraceRoot factory for Tracer construction
11
+ export { createTraceRoot } from './lib/traceRoot.es.js';
package/src/index.ts ADDED
@@ -0,0 +1,194 @@
1
+ // Main integration API - GREENFIELD - NO BACKWARDS COMPAT
2
+
3
+ // =============================================================================
4
+ // Primary API: defineOpContext (Op-Centric API)
5
+ // =============================================================================
6
+
7
+ // Op-Centric API - the module system (includes schema utilities and types)
8
+ export * from './lib/defineOpContext.js';
9
+
10
+ // Op class - used internally by defineOp()
11
+ export { Op } from './lib/op.js';
12
+
13
+ // =============================================================================
14
+ // Result Types
15
+ // =============================================================================
16
+
17
+ export { Blocked, type BlockedConfig, type BlockedReason } from './lib/errors/Blocked.js';
18
+ export type { Result, TaggedError, TaggedErrorConstructor } from './lib/result.js';
19
+ export { defineCodeError, Err, hasErrorCode, Ok } from './lib/result.js';
20
+
21
+ // Tagged Error Types - tree-shakable subpath exports:
22
+ // import { Blocked } from '@smoothbricks/lmao/errors/Blocked'
23
+ // import { RetriesExhausted } from '@smoothbricks/lmao/errors/RetriesExhausted'
24
+
25
+ // =============================================================================
26
+ // TraceContext Types
27
+ // =============================================================================
28
+
29
+ export type { RootSpanFn, TraceContext, TraceContextSystem } from './lib/traceContext.js';
30
+ export { isTraceContext, TRACE_CONTEXT_MARKER, TraceContextProto } from './lib/traceContext.js';
31
+
32
+ // =============================================================================
33
+ // SpanContext Types
34
+ // =============================================================================
35
+
36
+ export type { FluentLogEntry, SpanContext, SpanFn, SpanLogger } from './lib/spanContext.js';
37
+ export { isSpanContext, SPAN_CONTEXT_MARKER } from './lib/spanContext.js';
38
+
39
+ // =============================================================================
40
+ // LogAPI - Simple logging interface for contexts without SpanBuffer access
41
+ // =============================================================================
42
+
43
+ export type { LogAPI } from './lib/logApi.js';
44
+ export { noopLogAPI } from './lib/logApi.js';
45
+
46
+ // =============================================================================
47
+ // System Schema & Entry Type Constants
48
+ // =============================================================================
49
+
50
+ export {
51
+ // Buffer metrics (utilization-based capacity tuning)
52
+ ENTRY_TYPE_BUFFER_CAPACITY,
53
+ ENTRY_TYPE_BUFFER_SPANS,
54
+ ENTRY_TYPE_BUFFER_WRITES,
55
+ ENTRY_TYPE_DEBUG,
56
+ ENTRY_TYPE_ERROR,
57
+ // Feature flags
58
+ ENTRY_TYPE_FF_ACCESS,
59
+ ENTRY_TYPE_FF_USAGE,
60
+ ENTRY_TYPE_INFO,
61
+ // Lookup
62
+ ENTRY_TYPE_NAMES,
63
+ ENTRY_TYPE_OP_DURATION_ERR,
64
+ ENTRY_TYPE_OP_DURATION_MAX,
65
+ ENTRY_TYPE_OP_DURATION_MIN,
66
+ ENTRY_TYPE_OP_DURATION_OK,
67
+ ENTRY_TYPE_OP_DURATION_TOTAL,
68
+ ENTRY_TYPE_OP_ERRORS,
69
+ ENTRY_TYPE_OP_EXCEPTIONS,
70
+ // Op metrics
71
+ ENTRY_TYPE_OP_INVOCATIONS,
72
+ // Period markers
73
+ ENTRY_TYPE_PERIOD_START,
74
+ ENTRY_TYPE_SPAN_ERR,
75
+ ENTRY_TYPE_SPAN_EXCEPTION,
76
+ ENTRY_TYPE_SPAN_OK,
77
+ // Span lifecycle
78
+ ENTRY_TYPE_SPAN_START,
79
+ // Log levels (ordered by verbosity)
80
+ ENTRY_TYPE_TRACE,
81
+ ENTRY_TYPE_WARN,
82
+ mergeWithSystemSchema,
83
+ // Schema helpers
84
+ systemSchema,
85
+ } from './lib/schema/systemSchema.js';
86
+
87
+ // =============================================================================
88
+ // Schema Core Types (re-exported from arrow-builder)
89
+ // =============================================================================
90
+
91
+ export type { Input, Output, Schema, SchemaFields, SchemaType, SchemaWithMetadata } from '@smoothbricks/arrow-builder';
92
+
93
+ // =============================================================================
94
+ // Schema System (additional exports not in defineOpContext)
95
+ // Note: defineOpContext already re-exports S, defineFeatureFlags, defineLogSchema, LogSchema
96
+ // =============================================================================
97
+
98
+ export * from './lib/schema/evaluator.js';
99
+ export * from './lib/schema/extend.js';
100
+ export * from './lib/schema/typeGuards.js';
101
+
102
+ // =============================================================================
103
+ // Code Generation (for advanced use)
104
+ // =============================================================================
105
+
106
+ export type { ResultWriter, TagWriter } from './lib/codegen/fixedPositionWriterGenerator.js';
107
+ export { createResultWriter, createTagWriter } from './lib/codegen/fixedPositionWriterGenerator.js';
108
+ export type { BaseSpanLogger, SpanLoggerImpl } from './lib/codegen/spanLoggerGenerator.js';
109
+ export { createSpanLogger, createSpanLoggerClass } from './lib/codegen/spanLoggerGenerator.js';
110
+
111
+ // =============================================================================
112
+ // SpanBuffer & Arrow Conversion
113
+ // =============================================================================
114
+
115
+ export * from './lib/convertToArrow.js';
116
+ export * from './lib/spanBuffer.js';
117
+ export * from './lib/types.js';
118
+
119
+ // =============================================================================
120
+ // Flush Scheduler
121
+ // =============================================================================
122
+
123
+ export * from './lib/flushScheduler.js';
124
+
125
+ // =============================================================================
126
+ // Buffer Strategy
127
+ // =============================================================================
128
+
129
+ export type { BufferStrategy } from './lib/bufferStrategy.js';
130
+ export { JsBufferStrategy } from './lib/JsBufferStrategy.js';
131
+
132
+ // =============================================================================
133
+ // Tracer
134
+ // =============================================================================
135
+
136
+ export type { OpContextBinding } from './lib/opContext/types.js';
137
+ export { type TraceFn, type TraceOverrides, Tracer, type TracerOptions } from './lib/tracer.js';
138
+ export { ArrayQueueTracer } from './lib/tracers/ArrayQueueTracer.js';
139
+ export { CompositeTracer } from './lib/tracers/CompositeTracer.js';
140
+ // Concrete tracer implementations
141
+ export { NoOpTracer } from './lib/tracers/NoOpTracer.js';
142
+ export { SQLiteAsyncTracer, SQLiteTracer } from './lib/tracers/SQLiteTracer.js';
143
+ export { StdioTracer } from './lib/tracers/StdioTracer.js';
144
+ export { type StatsSnapshot, TestTracer } from './lib/tracers/TestTracer.js';
145
+
146
+ // =============================================================================
147
+ // Library Integration
148
+ // =============================================================================
149
+
150
+ export * from './lib/library.js';
151
+
152
+ // =============================================================================
153
+ // Archive Data-Plane Primitives
154
+ // =============================================================================
155
+
156
+ export * from './lib/archive/index.js';
157
+
158
+ // =============================================================================
159
+ // Thread ID Generation
160
+ // =============================================================================
161
+
162
+ export {
163
+ _resetThreadId,
164
+ copyThreadIdTo,
165
+ getThreadId,
166
+ THREAD_ID_BYTES,
167
+ writeThreadIdToUint64Array,
168
+ } from './lib/threadId.js';
169
+
170
+ // =============================================================================
171
+ // Trace ID
172
+ // =============================================================================
173
+
174
+ export {
175
+ createTraceId,
176
+ extractSpanIdentity,
177
+ generateTraceId,
178
+ isValidTraceId,
179
+ MAX_TRACE_ID_LENGTH,
180
+ type SpanIdentity,
181
+ type TraceId,
182
+ } from './lib/traceId.js';
183
+
184
+ // =============================================================================
185
+ // TraceRoot (Platform-specific)
186
+ // =============================================================================
187
+
188
+ export type { ITraceRoot, TraceRootFactory, TracerLifecycleHooks } from './lib/traceRoot.js';
189
+
190
+ // =============================================================================
191
+ // UTF-8 Cache (for Arrow conversion)
192
+ // =============================================================================
193
+
194
+ export * from './lib/utf8Cache.js';
@@ -0,0 +1,102 @@
1
+ /**
2
+ * JsBufferStrategy - Default buffer strategy using JavaScript TypedArrays.
3
+ *
4
+ * Uses GC-managed memory with zero-copy Arrow conversion via flechette.
5
+ *
6
+ * Memory characteristics:
7
+ * - Buffers are regular JS objects with TypedArray properties
8
+ * - GC handles deallocation (no explicit release needed)
9
+ * - Arrow conversion shares ArrayBuffer references (zero-copy)
10
+ *
11
+ * @module JsBufferStrategy
12
+ */
13
+
14
+ import type { Table } from '@uwdata/flechette';
15
+ import type { BufferStrategy } from './bufferStrategy.js';
16
+ import { convertSpanTreeToArrowTable } from './convertToArrow.js';
17
+ import type { OpMetadata } from './opContext/opTypes.js';
18
+ import type { LogSchema } from './schema/LogSchema.js';
19
+ import {
20
+ createChildSpanBuffer as createChildSpanBufferImpl,
21
+ createOverflowBuffer as createOverflowBufferImpl,
22
+ createSpanBuffer as createSpanBufferImpl,
23
+ getSpanBufferClass,
24
+ type SpanBufferConstructor,
25
+ } from './spanBuffer.js';
26
+ import type { ITraceRoot } from './traceRoot.js';
27
+ import type { AnySpanBuffer, SpanBuffer } from './types.js';
28
+
29
+ function isSpanBufferConstructorForSchema<TSchema extends LogSchema>(
30
+ ctor: SpanBufferConstructor | undefined,
31
+ schema: TSchema,
32
+ ): ctor is SpanBufferConstructor<TSchema> {
33
+ return ctor !== undefined && ctor.schema === schema;
34
+ }
35
+
36
+ /**
37
+ * JsBufferStrategy - Default buffer strategy using GC-managed TypedArrays.
38
+ *
39
+ * This is the standard strategy for most use cases:
40
+ * - Simple memory model (GC handles cleanup)
41
+ * - Zero-copy Arrow conversion (shares ArrayBuffer references)
42
+ * - No explicit release needed (but releaseBuffer is a no-op)
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const strategy = new JsBufferStrategy<MySchema>();
47
+ * const tracer = new StdioTracer(binding, strategy, options);
48
+ * ```
49
+ */
50
+ export class JsBufferStrategy<T extends LogSchema = LogSchema> implements BufferStrategy<T> {
51
+ /**
52
+ * Cache of SpanBuffer classes per schema.
53
+ * Populated lazily on first buffer creation.
54
+ */
55
+ private spanBufferClassCache = new WeakMap<LogSchema, SpanBufferConstructor>();
56
+
57
+ /**
58
+ * Get or create SpanBuffer class for a schema.
59
+ */
60
+ private getSpanBufferClassForSchema<TSchema extends LogSchema>(schema: TSchema): SpanBufferConstructor<TSchema> {
61
+ let cached = this.spanBufferClassCache.get(schema);
62
+ if (!cached) {
63
+ cached = getSpanBufferClass(schema);
64
+ this.spanBufferClassCache.set(schema, cached);
65
+ }
66
+ if (!isSpanBufferConstructorForSchema(cached, schema)) {
67
+ throw new TypeError('Cached SpanBuffer class does not match schema');
68
+ }
69
+ return cached;
70
+ }
71
+
72
+ createSpanBuffer(schema: T, traceRoot: ITraceRoot, opMetadata: OpMetadata, capacity?: number): SpanBuffer<T> {
73
+ return createSpanBufferImpl(schema, traceRoot, opMetadata, capacity);
74
+ }
75
+
76
+ createChildSpanBuffer(
77
+ parentBuffer: SpanBuffer<T>,
78
+ callsiteMetadata: OpMetadata,
79
+ opMetadata: OpMetadata,
80
+ capacity?: number,
81
+ schema?: T,
82
+ ): SpanBuffer<T> {
83
+ // Use provided schema (for cross-library calls) or parent's schema
84
+ const childSchema = schema ?? parentBuffer._logSchema;
85
+ const SpanBufferClass = this.getSpanBufferClassForSchema(childSchema);
86
+ return createChildSpanBufferImpl(parentBuffer, SpanBufferClass, callsiteMetadata, opMetadata, capacity);
87
+ }
88
+
89
+ createOverflowBuffer(buffer: SpanBuffer<T>): SpanBuffer<T> {
90
+ return createOverflowBufferImpl(buffer);
91
+ }
92
+
93
+ toArrowTable(buffer: AnySpanBuffer): Table {
94
+ // Uses existing tree conversion with shared dictionaries
95
+ return convertSpanTreeToArrowTable(buffer);
96
+ }
97
+
98
+ releaseBuffer(_buffer: AnySpanBuffer): void {
99
+ // No-op for JS strategy - GC handles memory
100
+ // The buffer will be collected when no references remain
101
+ }
102
+ }