@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,63 @@
1
+ /**
2
+ * LogBinding - Logging infrastructure binding for ops and buffers
3
+ *
4
+ * Represents the binding between a set of operations and their logging infrastructure.
5
+ * Contains the schema and optional remapping support for prefixed modules.
6
+ *
7
+ * Note: Buffer stats (self-tuning capacity) are stored on SpanBufferClass.stats as static
8
+ * properties, NOT on LogBinding. See agent-todo/opgroup-refactor.md for rationale.
9
+ *
10
+ * Per specs:
11
+ * - 01b2_buffer_self_tuning.md - Self-tuning via SpanBufferClass.stats
12
+ * - 01e_library_integration_pattern.md - Library prefix/remapping support
13
+ */
14
+ import type { LogSchema } from './schema/LogSchema.js';
15
+ type SpanBuffer = import('./types.js').AnySpanBuffer;
16
+ /**
17
+ * RemappedViewConstructor - Constructor type for RemappedBufferView classes.
18
+ *
19
+ * Generated at module composition time (cold path) by `generateRemappedBufferViewClass()`.
20
+ * Used by prefixed modules to wrap SpanBuffer instances for Arrow conversion when
21
+ * the module's schema columns have been renamed with a prefix.
22
+ *
23
+ * The constructor takes a raw SpanBuffer and returns a view that remaps column access
24
+ * from prefixed names to unprefixed names for tree traversal during Arrow conversion.
25
+ *
26
+ * Per specs/lmao/01e_library_integration_pattern.md:
27
+ * - Hot path: Library writes directly to unprefixed columns (zero overhead)
28
+ * - Cold path: Arrow conversion uses RemappedBufferView to access via prefixed names
29
+ */
30
+ export type RemappedViewConstructor = new (buffer: SpanBuffer) => SpanBuffer;
31
+ /**
32
+ * LogBinding - Everything needed for a group of ops to write logs.
33
+ *
34
+ * Represents the binding between a set of operations and their logging infrastructure.
35
+ * Contains the schema and optional remapping support for prefixed modules.
36
+ *
37
+ * Note: Buffer stats (self-tuning capacity) are stored on SpanBufferClass.stats as static
38
+ * properties, NOT on LogBinding. This avoids sync bugs from having two stat objects and
39
+ * reduces per-instance memory. See agent-todo/opgroup-refactor.md for rationale.
40
+ *
41
+ * Per specs:
42
+ * - 01b2_buffer_self_tuning.md - Self-tuning via SpanBufferClass.stats
43
+ * - 01e_library_integration_pattern.md - Library prefix/remapping support
44
+ *
45
+ * @property logSchema - The unprefixed schema defining what columns can be written.
46
+ * This is the canonical schema. Column names in remappedViewClass will be prefixed versions
47
+ * of these field names when a prefix or column mapping has been applied.
48
+ *
49
+ * @property remappedViewClass - Optional RemappedBufferView class for prefixed/remapped buffers.
50
+ * - When present: the module's ops write to unprefixed columns, but buffers must be wrapped
51
+ * in this view for Arrow conversion to access them by prefixed names
52
+ * - When absent: buffers can be used directly without remapping
53
+ * - Set during module composition when prefix() or mapColumns() is applied (cold path)
54
+ * - Used when registering child spans to parent's tree (see op.ts)
55
+ */
56
+ export interface LogBinding<T extends LogSchema = LogSchema> {
57
+ /** The unprefixed schema defining what columns exist */
58
+ readonly logSchema: T;
59
+ /** Optional RemappedBufferView class for prefixed/remapped buffers */
60
+ readonly remappedViewClass?: RemappedViewConstructor;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=logBinding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logBinding.d.ts","sourceRoot":"","sources":["../../src/lib/logBinding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,KAAK,UAAU,GAAG,OAAO,YAAY,EAAE,aAAa,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,uBAAuB,GAAG,KAAK,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IACzD,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAEtB,sEAAsE;IACtE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CACtD"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Op - Traced operation class and OpMetadata
3
+ *
4
+ * This is the single source of truth for the Op class and OpMetadata interface.
5
+ * Other modules re-export these types for convenience.
6
+ *
7
+ * Wraps a user function with automatic span tracking.
8
+ * Created by defineOp() from the Op-centric API (defineOpContext).
9
+ *
10
+ * Per specs/lmao/01l_op_context_pattern.md and specs/lmao/01c_context_flow_and_op_wrappers.md:
11
+ * - Captures OpMetadata for attribution (package_name, package_file, git_sha, line)
12
+ * - fn is called by span_op() after span_op creates the SpanBuffer/SpanContext
13
+ * - Op name is used for metrics tracking (separate from span names)
14
+ */
15
+ import type { PreEncodedEntry } from '@smoothbricks/arrow-builder';
16
+ import type { RemappedViewConstructor } from './logBinding.js';
17
+ import type { SpanContext } from './opContext/spanContextTypes.js';
18
+ import type { OpContext, OpContextBinding } from './opContext/types.js';
19
+ import type { Result } from './result.js';
20
+ import type { SpanBufferConstructor } from './spanBuffer.js';
21
+ /**
22
+ * Metadata injected by the transformer into each Op.
23
+ * These values are determined at compile time from the source location.
24
+ *
25
+ * Includes pre-encoded UTF-8 entries for Arrow dictionary building -
26
+ * encode once at Op definition time, reuse for every span conversion.
27
+ */
28
+ export interface OpMetadata {
29
+ /** Op name for metrics tracking (distinct from span names which are provided at call sites) */
30
+ readonly name: string;
31
+ /** Package name from package.json */
32
+ readonly package_name: string;
33
+ /** File path relative to package root */
34
+ readonly package_file: string;
35
+ /** Git SHA at build time */
36
+ readonly git_sha: string;
37
+ /** Line number where defineOp was called */
38
+ readonly line: number;
39
+ /** Pre-encoded package_name for Arrow dictionary building */
40
+ readonly package_name_entry: PreEncodedEntry;
41
+ /** Pre-encoded package_file for Arrow dictionary building */
42
+ readonly package_file_entry: PreEncodedEntry;
43
+ /** Pre-encoded git_sha for Arrow dictionary building */
44
+ readonly git_sha_entry: PreEncodedEntry;
45
+ }
46
+ /**
47
+ * Op - Traced operation (Phase 2 architecture)
48
+ *
49
+ * Per spec 01l lines 436-453 and 01c lines 292-362:
50
+ * - Wraps a user function with automatic span tracking
51
+ * - Captures module metadata for attribution
52
+ * - fn is public and called by span_op() after buffer/context creation
53
+ *
54
+ * Type parameter order matches function signature: (ctx: SpanContext<Ctx>, ...args: Args) => Result<S, E>
55
+ *
56
+ * Op has TWO names:
57
+ * - `name`: The Op's name for metrics (invocations, errors, duration tracking)
58
+ * - Span names are provided at CALL SITE: `await span('contextual-name', myOp, args)`
59
+ *
60
+ * Op captures the metadata for source attribution:
61
+ * - When span() invokes this Op, the Op's metadata becomes buffer._opMetadata (for rows 1+)
62
+ * - The caller's metadata becomes buffer._callsiteMetadata (for row 0)
63
+ *
64
+ * Phase 2 architecture:
65
+ * - SpanBufferClass carries static schema + stats (shared by all ops from same defineOpContext)
66
+ * - remappedViewClass only set for prefixed ops (wraps child buffers before adding to _children)
67
+ * - No LogBinding - stats accessed via SpanBufferClass.stats
68
+ *
69
+ * @typeParam Ctx - OpContext with deps, ff, env (contravariant position)
70
+ * @typeParam Args - Tuple of argument types (excluding ctx)
71
+ * @typeParam S - Success type of the Result
72
+ * @typeParam E - Error type of the Result
73
+ */
74
+ export declare class Op<Ctx extends OpContext, Args extends unknown[], S, E> {
75
+ /** Op name for metrics, telemetry, and debugging */
76
+ readonly metadata: OpMetadata;
77
+ /** Op owns buffer creation - class has static schema + stats shared by all instances */
78
+ readonly SpanBufferClass: SpanBufferConstructor;
79
+ /** The user function to execute - called by span_op after context creation (can be sync or async) */
80
+ readonly fn: (ctx: SpanContext<Ctx>, ...args: Args) => Result<S, E> | Promise<Result<S, E>>;
81
+ /** Only set for prefixed ops - wraps child buffers during registration */
82
+ readonly remappedViewClass?: RemappedViewConstructor | undefined;
83
+ /**
84
+ * WHY: Carries the OpContextBinding from the factory that created this Op.
85
+ * Enables downstream consumers (defineAgentOps, OpRegistry) to extract the
86
+ * LMAO schema for context merging and conflict detection.
87
+ */
88
+ readonly _opContextBinding?: OpContextBinding | undefined;
89
+ constructor(
90
+ /** Op name for metrics, telemetry, and debugging */
91
+ metadata: OpMetadata,
92
+ /** Op owns buffer creation - class has static schema + stats shared by all instances */
93
+ SpanBufferClass: SpanBufferConstructor,
94
+ /** The user function to execute - called by span_op after context creation (can be sync or async) */
95
+ fn: (ctx: SpanContext<Ctx>, ...args: Args) => Result<S, E> | Promise<Result<S, E>>,
96
+ /** Only set for prefixed ops - wraps child buffers during registration */
97
+ remappedViewClass?: RemappedViewConstructor | undefined,
98
+ /**
99
+ * WHY: Carries the OpContextBinding from the factory that created this Op.
100
+ * Enables downstream consumers (defineAgentOps, OpRegistry) to extract the
101
+ * LMAO schema for context merging and conflict detection.
102
+ */
103
+ _opContextBinding?: OpContextBinding | undefined);
104
+ }
105
+ //# sourceMappingURL=op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../src/lib/op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAM7D;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,6DAA6D;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAC7C,6DAA6D;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;CACzC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,EAAE,CAAC,GAAG,SAAS,SAAS,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IAE/D,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,UAAU;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,eAAe,EAAE,qBAAqB;IAC/C,qGAAqG;IACrG,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,0EAA0E;IAC1E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB;IACpD;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,gBAAgB;;IAb7C,oDAAoD;IAC3C,QAAQ,EAAE,UAAU;IAC7B,wFAAwF;IAC/E,eAAe,EAAE,qBAAqB;IAC/C,qGAAqG;IAC5F,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,0EAA0E;IACjE,iBAAiB,CAAC,EAAE,uBAAuB,YAAA;IACpD;;;;OAIG;IACM,iBAAiB,CAAC,EAAE,gBAAgB,YAAA;CAEhD"}
package/dist/lib/op.js ADDED
@@ -0,0 +1,59 @@
1
+ // =============================================================================
2
+ // Op Class
3
+ // =============================================================================
4
+ /**
5
+ * Op - Traced operation (Phase 2 architecture)
6
+ *
7
+ * Per spec 01l lines 436-453 and 01c lines 292-362:
8
+ * - Wraps a user function with automatic span tracking
9
+ * - Captures module metadata for attribution
10
+ * - fn is public and called by span_op() after buffer/context creation
11
+ *
12
+ * Type parameter order matches function signature: (ctx: SpanContext<Ctx>, ...args: Args) => Result<S, E>
13
+ *
14
+ * Op has TWO names:
15
+ * - `name`: The Op's name for metrics (invocations, errors, duration tracking)
16
+ * - Span names are provided at CALL SITE: `await span('contextual-name', myOp, args)`
17
+ *
18
+ * Op captures the metadata for source attribution:
19
+ * - When span() invokes this Op, the Op's metadata becomes buffer._opMetadata (for rows 1+)
20
+ * - The caller's metadata becomes buffer._callsiteMetadata (for row 0)
21
+ *
22
+ * Phase 2 architecture:
23
+ * - SpanBufferClass carries static schema + stats (shared by all ops from same defineOpContext)
24
+ * - remappedViewClass only set for prefixed ops (wraps child buffers before adding to _children)
25
+ * - No LogBinding - stats accessed via SpanBufferClass.stats
26
+ *
27
+ * @typeParam Ctx - OpContext with deps, ff, env (contravariant position)
28
+ * @typeParam Args - Tuple of argument types (excluding ctx)
29
+ * @typeParam S - Success type of the Result
30
+ * @typeParam E - Error type of the Result
31
+ */
32
+ export class Op {
33
+ metadata;
34
+ SpanBufferClass;
35
+ fn;
36
+ remappedViewClass;
37
+ _opContextBinding;
38
+ constructor(
39
+ /** Op name for metrics, telemetry, and debugging */
40
+ metadata,
41
+ /** Op owns buffer creation - class has static schema + stats shared by all instances */
42
+ SpanBufferClass,
43
+ /** The user function to execute - called by span_op after context creation (can be sync or async) */
44
+ fn,
45
+ /** Only set for prefixed ops - wraps child buffers during registration */
46
+ remappedViewClass,
47
+ /**
48
+ * WHY: Carries the OpContextBinding from the factory that created this Op.
49
+ * Enables downstream consumers (defineAgentOps, OpRegistry) to extract the
50
+ * LMAO schema for context merging and conflict detection.
51
+ */
52
+ _opContextBinding) {
53
+ this.metadata = metadata;
54
+ this.SpanBufferClass = SpanBufferClass;
55
+ this.fn = fn;
56
+ this.remappedViewClass = remappedViewClass;
57
+ this._opContextBinding = _opContextBinding;
58
+ }
59
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Context Type Utilities for Op-Centric API
3
+ *
4
+ * Type-level utilities for handling user context property patterns:
5
+ * - Required at createTrace (null sentinel)
6
+ * - Optional (undefined sentinel)
7
+ * - Has default (non-null, non-undefined value)
8
+ *
9
+ * Also includes reserved property validation to prevent conflicts with SpanContext.
10
+ */
11
+ /**
12
+ * Reserved property names that cannot be used in user context.
13
+ * These are properties that exist on SpanContext and would cause conflicts.
14
+ */
15
+ export declare const RESERVED_CONTEXT_PROPS: readonly ["buffer", "tag", "log", "scope", "setScope", "ok", "err", "span", "ff", "deps", "_buffer", "_schema", "_spanLogger"];
16
+ /**
17
+ * Union type of all reserved context property names.
18
+ */
19
+ export type ReservedContextProp = (typeof RESERVED_CONTEXT_PROPS)[number];
20
+ /**
21
+ * Context property patterns:
22
+ *
23
+ * 1. Required at createTrace (null sentinel):
24
+ * `env: null as Env` -> must provide at createTrace, type is Env in SpanContext
25
+ *
26
+ * 2. Optional (undefined sentinel):
27
+ * `userId: undefined as string | undefined` -> optional at createTrace, may be undefined in SpanContext
28
+ *
29
+ * 3. Has default (non-null, non-undefined value):
30
+ * `config: { retryCount: 3 }` -> can override at createTrace, uses default if not provided
31
+ */
32
+ /**
33
+ * Extract keys where value is exactly `null` (required at trace creation).
34
+ * These MUST be provided at createTrace().
35
+ */
36
+ export type NullKeys<T> = {
37
+ [K in keyof T]: [T[K]] extends [null] ? K : null extends T[K] ? (undefined extends T[K] ? never : K) : never;
38
+ }[keyof T];
39
+ /**
40
+ * Extract keys where value is `undefined` or includes `undefined` (optional).
41
+ * These are optional at createTrace() and may be undefined in SpanContext.
42
+ */
43
+ export type UndefinedKeys<T> = {
44
+ [K in keyof T]: undefined extends T[K] ? K : never;
45
+ }[keyof T];
46
+ /**
47
+ * Extract keys with concrete values (neither null nor undefined).
48
+ * These have defaults and are optional to override at createTrace().
49
+ */
50
+ export type DefaultKeys<T> = {
51
+ [K in keyof T]: null extends T[K] ? never : undefined extends T[K] ? never : K;
52
+ }[keyof T];
53
+ /**
54
+ * Transform user context for SpanContext.
55
+ * - Null properties become their non-null type (filled at createTrace)
56
+ * - Undefined properties stay as potentially undefined
57
+ * - Default properties stay as-is
58
+ */
59
+ export type ResolvedContext<UserCtx> = {
60
+ readonly [K in keyof UserCtx]: null extends UserCtx[K] ? undefined extends UserCtx[K] ? UserCtx[K] : Exclude<UserCtx[K], null> : UserCtx[K];
61
+ };
62
+ /**
63
+ * What MUST be provided at createTrace() - only null sentinel properties.
64
+ */
65
+ export type RequiredContextParams<UserCtx> = {
66
+ [K in NullKeys<UserCtx>]: Exclude<UserCtx[K], null>;
67
+ };
68
+ /**
69
+ * What CAN be provided at createTrace() - optional and default properties.
70
+ */
71
+ export type OptionalContextParams<UserCtx> = {
72
+ [K in UndefinedKeys<UserCtx> | DefaultKeys<UserCtx>]?: undefined extends UserCtx[K] ? UserCtx[K] : UserCtx[K];
73
+ };
74
+ /**
75
+ * Combined context params for createTrace().
76
+ * - Null props are REQUIRED (must provide)
77
+ * - Undefined props are OPTIONAL (can provide or omit)
78
+ * - Default props are OPTIONAL (can override or use default)
79
+ */
80
+ export type TraceContextParams<UserCtx> = RequiredContextParams<UserCtx> & OptionalContextParams<UserCtx>;
81
+ /**
82
+ * Validate that user context doesn't use reserved property names.
83
+ * Returns `never` with descriptive error if validation fails.
84
+ */
85
+ export type ValidateUserContext<UserCtx> = keyof UserCtx extends infer K ? K extends ReservedContextProp ? {
86
+ __error: `'${K & string}' is a reserved SpanContext property and cannot be used in ctx`;
87
+ } : UserCtx : UserCtx;
88
+ //# sourceMappingURL=contextTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextTypes.d.ts","sourceRoot":"","sources":["../../../src/lib/opContext/contextTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,gIAgBzB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAM1E;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK;CAC7G,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;KAC5B,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACnD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;CAC/E,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CAAC,OAAO,IAAI;IACrC,QAAQ,EAAE,CAAC,IAAI,MAAM,OAAO,GAAG,IAAI,SAAS,OAAO,CAAC,CAAC,CAAC,GAClD,SAAS,SAAS,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,GACV,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,OAAO,IAAI;KAC1C,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;CACpD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,OAAO,IAAI;KAC1C,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,SAAS,OAAO,CAAC,CAAC,CAAC,GAC/E,OAAO,CAAC,CAAC,CAAC,GACV,OAAO,CAAC,CAAC,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE1G;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,OAAO,IAAI,MAAM,OAAO,SAAS,MAAM,CAAC,GACpE,CAAC,SAAS,mBAAmB,GAC3B;IAAE,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,gEAAgE,CAAA;CAAE,GAC3F,OAAO,GACT,OAAO,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Context Type Utilities for Op-Centric API
3
+ *
4
+ * Type-level utilities for handling user context property patterns:
5
+ * - Required at createTrace (null sentinel)
6
+ * - Optional (undefined sentinel)
7
+ * - Has default (non-null, non-undefined value)
8
+ *
9
+ * Also includes reserved property validation to prevent conflicts with SpanContext.
10
+ */
11
+ // =============================================================================
12
+ // RESERVED PROPERTY NAMES
13
+ // =============================================================================
14
+ /**
15
+ * Reserved property names that cannot be used in user context.
16
+ * These are properties that exist on SpanContext and would cause conflicts.
17
+ */
18
+ export const RESERVED_CONTEXT_PROPS = [
19
+ // Core SpanContext properties
20
+ 'buffer',
21
+ 'tag',
22
+ 'log',
23
+ 'scope',
24
+ 'setScope',
25
+ 'ok',
26
+ 'err',
27
+ 'span',
28
+ 'ff',
29
+ 'deps',
30
+ // Internal properties
31
+ '_buffer',
32
+ '_schema',
33
+ '_spanLogger',
34
+ ];
@@ -0,0 +1,57 @@
1
+ /**
2
+ * OpGroup Creation - Class-based architecture for Phase 2
3
+ *
4
+ * Creates OpGroups as class instances with ops as own properties.
5
+ * Enables V8 hidden class optimization and cleaner API (`.opName` not `.ops.opName`).
6
+ *
7
+ * Why class-based:
8
+ * - Private fields (#columnMapping) don't affect hidden class (truly hidden, no enumeration)
9
+ * - Ops as own properties enable direct access and predictable object shape
10
+ * - prefix()/mapColumns() create new instances with same SpanBufferClass (shared stats)
11
+ * - Only remappedViewClass differs between original and prefixed op instances
12
+ *
13
+ * Internal properties (_logSchema, _flags, etc.) are prefixed with underscore to avoid
14
+ * collision with user-defined op names. Public interfaces hide these from intellisense.
15
+ *
16
+ * @module opContext/createOpGroup
17
+ */
18
+ import type { OpGroup, OpGroupOps } from './opGroupTypes.js';
19
+ import type { OpContext } from './types.js';
20
+ /**
21
+ * Create an OpGroup from a schema, flags, and ops
22
+ *
23
+ * Why class-based: V8 hidden class optimization - all OpGroups with same ops
24
+ * have same object shape (private fields don't affect hidden class).
25
+ *
26
+ * The ops passed to this function already have a SpanBufferClass attached.
27
+ * All ops in the same context share the SAME SpanBufferClass instance, which carries:
28
+ * - Static schema property (shared by all instances)
29
+ * - Static stats property (shared mutable stats for self-tuning)
30
+ *
31
+ * The returned OpGroup can be:
32
+ * - Used directly as a dependency (ops accessible via ctx.deps.name.opName)
33
+ * - Prefixed with `.prefix('http')` to namespace all columns
34
+ * - Mapped with `.mapColumns({ query: 'query', _internal: null })` for fine control
35
+ *
36
+ * @param logSchema - The LogSchema defining columns for this group's ops
37
+ * @param flags - Feature flag schema
38
+ * @param ops - Record of Op instances belonging to this group
39
+ * @returns OpGroup with prefix() and mapColumns() methods, ops as own properties
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const httpOps = createOpGroup(httpLogSchema, httpFlags, {
44
+ * fetch: fetchOp,
45
+ * post: postOp,
46
+ * });
47
+ *
48
+ * // Direct access (Phase 2):
49
+ * await ctx.deps.http.fetch(url);
50
+ *
51
+ * // Wire with prefix:
52
+ * deps: { http: httpOps.prefix('http') }
53
+ * // Columns become: http_status, http_url, http_duration, etc.
54
+ * ```
55
+ */
56
+ export declare function createOpGroup<Ctx extends OpContext, Ops extends OpGroupOps<Ctx>>(logSchema: Ctx['logSchema'], flags: Ctx['flags'], ops: Ops): OpGroup<Ctx, Ops>;
57
+ //# sourceMappingURL=createOpGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createOpGroup.d.ts","sourceRoot":"","sources":["../../../src/lib/opContext/createOpGroup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,KAAK,EAKV,OAAO,EAEP,UAAU,EAGX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAyX5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,aAAa,CAAC,GAAG,SAAS,SAAS,EAAE,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,EAC9E,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,EAC3B,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EACnB,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAInB"}