@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,308 @@
1
+ /**
2
+ * Result types for type-safe error handling without exceptions.
3
+ *
4
+ * ## Classes
5
+ * - `Ok<V, T>` - Success result with fluent tag API
6
+ * - `Err<E, T>` - Error result with fluent tag API
7
+ *
8
+ * ## Error Factories
9
+ * - `defineCodeError(code)` - Create callable error class with `code` on prototype
10
+ *
11
+ * ## Result Row Writer
12
+ *
13
+ * Span start reserves row 1 for the eventual span-end entry, so fluent result
14
+ * methods can write directly to that fixed row instead of capturing deferred
15
+ * closure chains.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // Define error codes as callable classes
20
+ * const NOT_FOUND = defineCodeError('NOT_FOUND')<{ userId: string }>();
21
+ * const VALIDATION_FAILED = defineCodeError('VALIDATION_FAILED')<{ field: string }>();
22
+ *
23
+ * // Use in ops - no 'new' required
24
+ * return ctx.err(NOT_FOUND({ userId }));
25
+ * return ctx.err(VALIDATION_FAILED({ field: 'email' })).message('Invalid email');
26
+ *
27
+ * // instanceof works for type narrowing
28
+ * if (result.isErr(NOT_FOUND)) {
29
+ * console.log(result.error.userId); // typed!
30
+ * }
31
+ * ```
32
+ */
33
+ import type { InferSchema, LogSchema } from './schema/types.js';
34
+ import type { AnySpanBuffer } from './types.js';
35
+ /**
36
+ * Interface for tagged errors that can be discriminated with isErr(Tag).
37
+ * Used by Blocked, RetriesExhausted, and user-defined error classes.
38
+ */
39
+ export interface TaggedError<Tag extends string = string> {
40
+ readonly _tag: Tag;
41
+ }
42
+ /**
43
+ * Constructor type for tagged errors.
44
+ * Used with Result.isErr(Tag) to check error type via instanceof.
45
+ */
46
+ export interface TaggedErrorConstructor<T extends TaggedError = TaggedError> {
47
+ readonly _tag: T['_tag'];
48
+ readonly prototype: T;
49
+ readonly [Symbol.hasInstance]: (value: unknown) => boolean;
50
+ }
51
+ type OkJson<V> = {
52
+ ok: true;
53
+ value: V;
54
+ };
55
+ type ErrJson<E> = {
56
+ ok: false;
57
+ error: E;
58
+ };
59
+ /**
60
+ * Success result with fluent tag application.
61
+ *
62
+ * Created by `ctx.ok(value)`. Tags are captured as closures and applied when
63
+ * span()/trace() completes, ensuring writes go to the correct buffer.
64
+ *
65
+ * @typeParam V - The type of the success value
66
+ * @typeParam T - The log schema for buffer tag application
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * return ctx.ok(user);
71
+ * return ctx.ok(user).with({ userId: user.id }).message('Created');
72
+ * ```
73
+ */
74
+ export declare class Ok<V, T extends LogSchema = LogSchema> {
75
+ readonly value: V;
76
+ private readonly _schema;
77
+ private readonly _buffer;
78
+ private _writer;
79
+ constructor(value: V, schema?: T, buffer?: AnySpanBuffer);
80
+ private _resultWriter;
81
+ /** Discriminant for type narrowing. */
82
+ get success(): true;
83
+ /** Tag discriminant for tagged result interop — matches the { _tag: 'ok' } protocol. */
84
+ get _tag(): 'ok';
85
+ /** Type guard - always returns true for Ok. */
86
+ isOk(): this is Ok<V, T>;
87
+ /** Type guard - always returns false for Ok. */
88
+ isErr(): false;
89
+ isErr<Tag extends TaggedError>(_Tag: TaggedErrorConstructor<Tag>): false;
90
+ /** Get the value (always present for Ok). */
91
+ get maybeValue(): V;
92
+ /** Get the error (always undefined for Ok). */
93
+ get maybeError(): undefined;
94
+ /** Transform the success value. */
95
+ map<U>(fn: (value: V) => U): Ok<U, T>;
96
+ /** No-op for Ok (error transformation). */
97
+ mapErr<F>(_fn: (error: never) => F): Ok<V, T>;
98
+ /** Transform the success value, potentially returning an error. */
99
+ flatMap<U, F>(fn: (value: V) => Result<U, F, T>): Result<U, F, T>;
100
+ /** Get the value (always returns value for Ok). */
101
+ unwrapOr<U>(_defaultValue: U): V;
102
+ /** Get the value (always returns value for Ok). */
103
+ unwrapOrElse<U>(_fn: (error: never) => U): V;
104
+ /** Pattern match on the result. */
105
+ match<U>(handlers: {
106
+ ok: (value: V) => U;
107
+ err: (error: never) => U;
108
+ }): U;
109
+ /**
110
+ * Set multiple attributes on the span-end entry (row 1).
111
+ * Deferred - applied when span()/trace() completes.
112
+ *
113
+ * @example ctx.ok(result).with({ userId: 'u1', operation: 'CREATE' })
114
+ */
115
+ with(attributes: Partial<InferSchema<T>>): this;
116
+ /**
117
+ * Set result message on span-end entry (row 1).
118
+ * Overwrites the default span name in the message column.
119
+ *
120
+ * @example ctx.ok(result).message('User created successfully')
121
+ */
122
+ message(text: string): this;
123
+ /**
124
+ * Set source code line number on span-end entry (row 1).
125
+ * Typically injected by transformer.
126
+ *
127
+ * @example ctx.ok(result).line(42)
128
+ */
129
+ line(lineNumber: number): this;
130
+ toJSON(): OkJson<V>;
131
+ }
132
+ /**
133
+ * Error result with fluent tag application.
134
+ *
135
+ * Created by `ctx.err(error)`. The error is stored directly (flat structure).
136
+ * Supports fluent `.with()`, `.message()`, `.line()` for deferred tag application.
137
+ *
138
+ * @typeParam E - The type of the error
139
+ * @typeParam T - The log schema for buffer tag application
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * const NOT_FOUND = defineCodeError('NOT_FOUND')<{ userId: string }>();
144
+ * return ctx.err(NOT_FOUND({ userId }));
145
+ * return ctx.err(NOT_FOUND({ userId })).message('User not found');
146
+ *
147
+ * // Tagged errors work too
148
+ * return ctx.err(Blocked.service('payment-api'));
149
+ * ```
150
+ */
151
+ export declare class Err<E, T extends LogSchema = LogSchema> {
152
+ readonly error: E;
153
+ private readonly _schema;
154
+ private readonly _buffer;
155
+ private _writer;
156
+ constructor(error: E, schema?: T, buffer?: AnySpanBuffer);
157
+ private _resultWriter;
158
+ /** Discriminant for type narrowing. */
159
+ get success(): false;
160
+ /** Tag discriminant for tagged result interop — matches the { _tag: 'err' } protocol. */
161
+ get _tag(): 'err';
162
+ /** Type guard - always returns false for Err. */
163
+ isOk(): false;
164
+ /**
165
+ * Check if this is an error result, optionally matching a tagged type or predicate.
166
+ *
167
+ * @example
168
+ * ```typescript
169
+ * if (result.isErr()) { ... } // Always true for Err
170
+ * if (result.isErr(Blocked)) { ... } // Check instanceof Blocked
171
+ * if (result.isErr(NOT_FOUND)) { ... } // Check instanceof NOT_FOUND
172
+ * if (result.isErr(e => e.code === 'X')) { ... } // Predicate
173
+ * ```
174
+ */
175
+ isErr(): this is Err<E, T>;
176
+ isErr<Tag extends TaggedError>(Tag: TaggedErrorConstructor<Tag>): this is Err<Tag, T>;
177
+ isErr<C extends abstract new (...args: never[]) => unknown>(Class: C): this is Err<InstanceType<C>, T>;
178
+ isErr(predicate: (error: E) => boolean): boolean;
179
+ /** Get the value (always undefined for Err). */
180
+ get maybeValue(): undefined;
181
+ /** Get the error (always present for Err). */
182
+ get maybeError(): E;
183
+ /** No-op for Err (value transformation). */
184
+ map<U>(_fn: (value: never) => U): Err<E, T>;
185
+ /** Transform the error. */
186
+ mapErr<F>(fn: (error: E) => F): Err<F, T>;
187
+ /** No-op for Err (returns self). */
188
+ flatMap<U, F>(_fn: (value: never) => Result<U, F>): Err<E, T>;
189
+ /** Get the default value (error is ignored). */
190
+ unwrapOr<U>(defaultValue: U): U;
191
+ /** Compute a value from the error. */
192
+ unwrapOrElse<U>(fn: (error: E) => U): U;
193
+ /** Pattern match on the result. */
194
+ match<U>(handlers: {
195
+ ok: (value: never) => U;
196
+ err: (error: E) => U;
197
+ }): U;
198
+ /**
199
+ * Set multiple attributes on the span-end entry (row 1).
200
+ * Deferred - applied when span()/trace() completes.
201
+ *
202
+ * @example ctx.err(error).with({ user_id: 'u1' })
203
+ */
204
+ with(attributes: Partial<InferSchema<T>>): this;
205
+ /**
206
+ * Set result message on span-end entry (row 1).
207
+ * Overwrites the default span name in the message column.
208
+ *
209
+ * @example ctx.err('ERROR', details).message('Operation failed')
210
+ */
211
+ message(text: string): this;
212
+ /**
213
+ * Set source code line number on span-end entry (row 1).
214
+ * Typically injected by transformer.
215
+ *
216
+ * @example ctx.err('ERROR', details).line(42)
217
+ */
218
+ line(lineNumber: number): this;
219
+ toJSON(): ErrJson<E>;
220
+ }
221
+ /** Union type for Result - either Ok or Err. */
222
+ export type Result<V, E, T extends LogSchema = LogSchema> = Ok<V, T> | Err<E, T>;
223
+ /**
224
+ * Code error instance type - has `code` on prototype plus fields as own properties.
225
+ */
226
+ export interface CodeErrorInstance<Code extends string, _Fields extends object> {
227
+ readonly code: Code;
228
+ }
229
+ /**
230
+ * Callable class type returned by defineCodeError.
231
+ * Can be called without `new`, instanceof works.
232
+ */
233
+ export interface CodeErrorClass<Code extends string, Fields extends object> {
234
+ (fields: Fields): CodeErrorInstance<Code, Fields> & Fields;
235
+ readonly prototype: {
236
+ readonly code: Code;
237
+ };
238
+ }
239
+ /**
240
+ * Create a callable error class with `code` on prototype.
241
+ *
242
+ * The returned class can be called without `new` and supports `instanceof`.
243
+ *
244
+ * @param code - The error code string (becomes a literal type)
245
+ * @returns A curried function that takes type parameter for fields
246
+ *
247
+ * @example
248
+ * ```typescript
249
+ * const NOT_FOUND = defineCodeError('NOT_FOUND')<{ userId: string }>();
250
+ * const VALIDATION_FAILED = defineCodeError('VALIDATION_FAILED')<{ field: string }>();
251
+ *
252
+ * // Call without 'new'
253
+ * const err = NOT_FOUND({ userId: 'u1' });
254
+ * err.code; // 'NOT_FOUND' (from prototype)
255
+ * err.userId; // 'u1' (own property)
256
+ *
257
+ * // instanceof works
258
+ * err instanceof NOT_FOUND; // true
259
+ *
260
+ * // Use with ctx.err()
261
+ * return ctx.err(NOT_FOUND({ userId }));
262
+ *
263
+ * // Type narrowing with isErr()
264
+ * if (result.isErr(NOT_FOUND)) {
265
+ * result.error.userId; // typed!
266
+ * }
267
+ * ```
268
+ */
269
+ export declare function defineCodeError<Code extends string>(code: Code): <Fields extends object = Record<string, never>>() => CodeErrorClass<Code, Fields>;
270
+ /**
271
+ * Check if an error has a `code` property.
272
+ * Used by writeSpanEnd to extract error_code for logging.
273
+ */
274
+ export declare function hasErrorCode(error: unknown): error is {
275
+ code: string;
276
+ };
277
+ /**
278
+ * Extract success type from a Result type.
279
+ * Returns `never` if R is not a Result.
280
+ */
281
+ export type ResultSuccess<R> = R extends Result<infer S, unknown, LogSchema> ? S : never;
282
+ /**
283
+ * Extract success type from a Promise<Result> type.
284
+ * Returns `never` if R is not a Promise<Result>.
285
+ */
286
+ export type PromiseResultSuccess<R> = R extends Promise<Result<infer S, unknown, LogSchema>> ? S : never;
287
+ /**
288
+ * Extract success type from either Result or Promise<Result>.
289
+ * Useful for inferring the success type from Op return values.
290
+ */
291
+ export type ExtractSuccess<R> = ResultSuccess<R> | PromiseResultSuccess<R>;
292
+ /**
293
+ * Extract error type from a Result type.
294
+ * Returns `never` if R is not a Result.
295
+ */
296
+ export type ResultError<R> = R extends Result<unknown, infer E, LogSchema> ? E : never;
297
+ /**
298
+ * Extract error type from a Promise<Result> type.
299
+ * Returns `never` if R is not a Promise<Result>.
300
+ */
301
+ export type PromiseResultError<R> = R extends Promise<Result<unknown, infer E, LogSchema>> ? E : never;
302
+ /**
303
+ * Extract error type from either Result or Promise<Result>.
304
+ * Useful for inferring the error type from Op return values.
305
+ */
306
+ export type ExtractError<R> = ResultError<R> | PromiseResultError<R>;
307
+ export {};
308
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/lib/result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,359 @@
1
+ /**
2
+ * Result types for type-safe error handling without exceptions.
3
+ *
4
+ * ## Classes
5
+ * - `Ok<V, T>` - Success result with fluent tag API
6
+ * - `Err<E, T>` - Error result with fluent tag API
7
+ *
8
+ * ## Error Factories
9
+ * - `defineCodeError(code)` - Create callable error class with `code` on prototype
10
+ *
11
+ * ## Result Row Writer
12
+ *
13
+ * Span start reserves row 1 for the eventual span-end entry, so fluent result
14
+ * methods can write directly to that fixed row instead of capturing deferred
15
+ * closure chains.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // Define error codes as callable classes
20
+ * const NOT_FOUND = defineCodeError('NOT_FOUND')<{ userId: string }>();
21
+ * const VALIDATION_FAILED = defineCodeError('VALIDATION_FAILED')<{ field: string }>();
22
+ *
23
+ * // Use in ops - no 'new' required
24
+ * return ctx.err(NOT_FOUND({ userId }));
25
+ * return ctx.err(VALIDATION_FAILED({ field: 'email' })).message('Invalid email');
26
+ *
27
+ * // instanceof works for type narrowing
28
+ * if (result.isErr(NOT_FOUND)) {
29
+ * console.log(result.error.userId); // typed!
30
+ * }
31
+ * ```
32
+ */
33
+ import { createResultWriter } from './codegen/fixedPositionWriterGenerator.js';
34
+ function ensureResultWriter(writer, schema, buffer, resultOrError, isError) {
35
+ if (writer) {
36
+ return writer;
37
+ }
38
+ if (!schema || !buffer) {
39
+ return undefined;
40
+ }
41
+ return createResultWriter(schema, buffer, resultOrError, isError);
42
+ }
43
+ function isErrPredicate(value) {
44
+ const prototype = Reflect.get(value, 'prototype');
45
+ return prototype === undefined || prototype === Function.prototype;
46
+ }
47
+ function isInstanceofMatcher(value) {
48
+ return typeof value === 'function' && !isErrPredicate(value);
49
+ }
50
+ function createCodeErrorValue(prototype, fields) {
51
+ return Object.assign(Object.create(prototype), fields);
52
+ }
53
+ // =============================================================================
54
+ // OK CLASS
55
+ // =============================================================================
56
+ /**
57
+ * Success result with fluent tag application.
58
+ *
59
+ * Created by `ctx.ok(value)`. Tags are captured as closures and applied when
60
+ * span()/trace() completes, ensuring writes go to the correct buffer.
61
+ *
62
+ * @typeParam V - The type of the success value
63
+ * @typeParam T - The log schema for buffer tag application
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * return ctx.ok(user);
68
+ * return ctx.ok(user).with({ userId: user.id }).message('Created');
69
+ * ```
70
+ */
71
+ export class Ok {
72
+ value;
73
+ _schema;
74
+ _buffer;
75
+ _writer;
76
+ constructor(value, schema, buffer) {
77
+ this.value = value;
78
+ this._schema = schema;
79
+ this._buffer = buffer;
80
+ }
81
+ _resultWriter() {
82
+ this._writer = ensureResultWriter(this._writer, this._schema, this._buffer, this.value, false);
83
+ return this._writer;
84
+ }
85
+ /** Discriminant for type narrowing. */
86
+ get success() {
87
+ return true;
88
+ }
89
+ /** Tag discriminant for tagged result interop — matches the { _tag: 'ok' } protocol. */
90
+ get _tag() {
91
+ return 'ok';
92
+ }
93
+ /** Type guard - always returns true for Ok. */
94
+ isOk() {
95
+ return true;
96
+ }
97
+ isErr(_predicate) {
98
+ return false;
99
+ }
100
+ /** Get the value (always present for Ok). */
101
+ get maybeValue() {
102
+ return this.value;
103
+ }
104
+ /** Get the error (always undefined for Ok). */
105
+ get maybeError() {
106
+ return undefined;
107
+ }
108
+ /** Transform the success value. */
109
+ map(fn) {
110
+ return new Ok(fn(this.value), this._schema, this._buffer);
111
+ }
112
+ /** No-op for Ok (error transformation). */
113
+ mapErr(_fn) {
114
+ return this;
115
+ }
116
+ /** Transform the success value, potentially returning an error. */
117
+ flatMap(fn) {
118
+ return fn(this.value);
119
+ }
120
+ /** Get the value (always returns value for Ok). */
121
+ unwrapOr(_defaultValue) {
122
+ return this.value;
123
+ }
124
+ /** Get the value (always returns value for Ok). */
125
+ unwrapOrElse(_fn) {
126
+ return this.value;
127
+ }
128
+ /** Pattern match on the result. */
129
+ match(handlers) {
130
+ return handlers.ok(this.value);
131
+ }
132
+ /**
133
+ * Set multiple attributes on the span-end entry (row 1).
134
+ * Deferred - applied when span()/trace() completes.
135
+ *
136
+ * @example ctx.ok(result).with({ userId: 'u1', operation: 'CREATE' })
137
+ */
138
+ with(attributes) {
139
+ this._resultWriter()?.with(attributes);
140
+ return this;
141
+ }
142
+ /**
143
+ * Set result message on span-end entry (row 1).
144
+ * Overwrites the default span name in the message column.
145
+ *
146
+ * @example ctx.ok(result).message('User created successfully')
147
+ */
148
+ message(text) {
149
+ this._resultWriter()?.message(text);
150
+ return this;
151
+ }
152
+ /**
153
+ * Set source code line number on span-end entry (row 1).
154
+ * Typically injected by transformer.
155
+ *
156
+ * @example ctx.ok(result).line(42)
157
+ */
158
+ line(lineNumber) {
159
+ this._resultWriter()?.line(lineNumber);
160
+ return this;
161
+ }
162
+ [Symbol.for('nodejs.util.inspect.custom')]() {
163
+ return { ok: true, value: this.value };
164
+ }
165
+ toJSON() {
166
+ return { ok: true, value: this.value };
167
+ }
168
+ }
169
+ // =============================================================================
170
+ // ERR CLASS
171
+ // =============================================================================
172
+ /**
173
+ * Error result with fluent tag application.
174
+ *
175
+ * Created by `ctx.err(error)`. The error is stored directly (flat structure).
176
+ * Supports fluent `.with()`, `.message()`, `.line()` for deferred tag application.
177
+ *
178
+ * @typeParam E - The type of the error
179
+ * @typeParam T - The log schema for buffer tag application
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * const NOT_FOUND = defineCodeError('NOT_FOUND')<{ userId: string }>();
184
+ * return ctx.err(NOT_FOUND({ userId }));
185
+ * return ctx.err(NOT_FOUND({ userId })).message('User not found');
186
+ *
187
+ * // Tagged errors work too
188
+ * return ctx.err(Blocked.service('payment-api'));
189
+ * ```
190
+ */
191
+ export class Err {
192
+ error;
193
+ _schema;
194
+ _buffer;
195
+ _writer;
196
+ constructor(error, schema, buffer) {
197
+ this.error = error;
198
+ this._schema = schema;
199
+ this._buffer = buffer;
200
+ }
201
+ _resultWriter() {
202
+ this._writer = ensureResultWriter(this._writer, this._schema, this._buffer, this.error, true);
203
+ return this._writer;
204
+ }
205
+ /** Discriminant for type narrowing. */
206
+ get success() {
207
+ return false;
208
+ }
209
+ /** Tag discriminant for tagged result interop — matches the { _tag: 'err' } protocol. */
210
+ get _tag() {
211
+ return 'err';
212
+ }
213
+ /** Type guard - always returns false for Err. */
214
+ isOk() {
215
+ return false;
216
+ }
217
+ isErr(tagOrPredicate) {
218
+ if (tagOrPredicate === undefined)
219
+ return true;
220
+ // instanceof check for classes (including TaggedError and CodeError)
221
+ if (isErrPredicate(tagOrPredicate)) {
222
+ return tagOrPredicate(this.error);
223
+ }
224
+ if (isInstanceofMatcher(tagOrPredicate)) {
225
+ return this.error instanceof tagOrPredicate;
226
+ }
227
+ return false;
228
+ }
229
+ /** Get the value (always undefined for Err). */
230
+ get maybeValue() {
231
+ return undefined;
232
+ }
233
+ /** Get the error (always present for Err). */
234
+ get maybeError() {
235
+ return this.error;
236
+ }
237
+ /** No-op for Err (value transformation). */
238
+ map(_fn) {
239
+ return this;
240
+ }
241
+ /** Transform the error. */
242
+ mapErr(fn) {
243
+ return new Err(fn(this.error), this._schema, this._buffer);
244
+ }
245
+ /** No-op for Err (returns self). */
246
+ flatMap(_fn) {
247
+ return this;
248
+ }
249
+ /** Get the default value (error is ignored). */
250
+ unwrapOr(defaultValue) {
251
+ return defaultValue;
252
+ }
253
+ /** Compute a value from the error. */
254
+ unwrapOrElse(fn) {
255
+ return fn(this.error);
256
+ }
257
+ /** Pattern match on the result. */
258
+ match(handlers) {
259
+ return handlers.err(this.error);
260
+ }
261
+ /**
262
+ * Set multiple attributes on the span-end entry (row 1).
263
+ * Deferred - applied when span()/trace() completes.
264
+ *
265
+ * @example ctx.err(error).with({ user_id: 'u1' })
266
+ */
267
+ with(attributes) {
268
+ this._resultWriter()?.with(attributes);
269
+ return this;
270
+ }
271
+ /**
272
+ * Set result message on span-end entry (row 1).
273
+ * Overwrites the default span name in the message column.
274
+ *
275
+ * @example ctx.err('ERROR', details).message('Operation failed')
276
+ */
277
+ message(text) {
278
+ this._resultWriter()?.message(text);
279
+ return this;
280
+ }
281
+ /**
282
+ * Set source code line number on span-end entry (row 1).
283
+ * Typically injected by transformer.
284
+ *
285
+ * @example ctx.err('ERROR', details).line(42)
286
+ */
287
+ line(lineNumber) {
288
+ this._resultWriter()?.line(lineNumber);
289
+ return this;
290
+ }
291
+ [Symbol.for('nodejs.util.inspect.custom')]() {
292
+ return { ok: false, error: this.error };
293
+ }
294
+ toJSON() {
295
+ return { ok: false, error: this.error };
296
+ }
297
+ }
298
+ /**
299
+ * Create a callable error class with `code` on prototype.
300
+ *
301
+ * The returned class can be called without `new` and supports `instanceof`.
302
+ *
303
+ * @param code - The error code string (becomes a literal type)
304
+ * @returns A curried function that takes type parameter for fields
305
+ *
306
+ * @example
307
+ * ```typescript
308
+ * const NOT_FOUND = defineCodeError('NOT_FOUND')<{ userId: string }>();
309
+ * const VALIDATION_FAILED = defineCodeError('VALIDATION_FAILED')<{ field: string }>();
310
+ *
311
+ * // Call without 'new'
312
+ * const err = NOT_FOUND({ userId: 'u1' });
313
+ * err.code; // 'NOT_FOUND' (from prototype)
314
+ * err.userId; // 'u1' (own property)
315
+ *
316
+ * // instanceof works
317
+ * err instanceof NOT_FOUND; // true
318
+ *
319
+ * // Use with ctx.err()
320
+ * return ctx.err(NOT_FOUND({ userId }));
321
+ *
322
+ * // Type narrowing with isErr()
323
+ * if (result.isErr(NOT_FOUND)) {
324
+ * result.error.userId; // typed!
325
+ * }
326
+ * ```
327
+ */
328
+ export function defineCodeError(code) {
329
+ return () => {
330
+ // Constructor function that works with or without 'new'
331
+ const CodeError = function (fields) {
332
+ // Allow calling without 'new'
333
+ if (!(this instanceof CodeError)) {
334
+ return createCodeErrorValue(CodeError.prototype, fields);
335
+ }
336
+ // Assign fields as own properties
337
+ Object.assign(this, fields);
338
+ return this;
339
+ };
340
+ // Put code on prototype so all instances share it
341
+ Object.defineProperty(CodeError.prototype, 'code', {
342
+ value: code,
343
+ writable: false,
344
+ enumerable: true,
345
+ configurable: false,
346
+ });
347
+ return CodeError;
348
+ };
349
+ }
350
+ /**
351
+ * Check if an error has a `code` property.
352
+ * Used by writeSpanEnd to extract error_code for logging.
353
+ */
354
+ export function hasErrorCode(error) {
355
+ return (error !== null &&
356
+ typeof error === 'object' &&
357
+ 'code' in error &&
358
+ typeof error.code === 'string');
359
+ }