@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,62 @@
1
+ /**
2
+ * LogSchema class for logging-specific schema functionality
3
+ *
4
+ * Extends ColumnSchema from arrow-builder with logging-specific features:
5
+ * - Schema extension with reserved name validation
6
+ * - Integration with lmao's logging system
7
+ *
8
+ * The base ColumnSchema provides generic cached field access.
9
+ * LogSchema adds logging-specific extension capabilities.
10
+ */
11
+ import { ColumnSchema } from '@smoothbricks/arrow-builder';
12
+ import type { SchemaFields } from './types.js';
13
+ /**
14
+ * LogSchema class - extends ColumnSchema with logging-specific features
15
+ *
16
+ * Provides all the generic schema functionality from ColumnSchema plus
17
+ * logging-specific extension with reserved name validation.
18
+ *
19
+ * @template T - The schema fields type (SchemaFields)
20
+ */
21
+ export declare class LogSchema<T extends SchemaFields = SchemaFields> extends ColumnSchema<T> {
22
+ /**
23
+ * Assert that user-provided field names don't conflict with reserved names
24
+ * and don't start with underscore (reserved for system properties)
25
+ *
26
+ * @throws Error if any field name is reserved or starts with _
27
+ */
28
+ static assertUserFieldNames(fieldNames: readonly string[]): void;
29
+ /**
30
+ * Extend this schema with additional fields
31
+ *
32
+ * Creates a new LogSchema instance with merged fields.
33
+ * Validates that extension fields don't conflict with existing fields
34
+ * and don't use reserved names (logging-specific validation).
35
+ *
36
+ * @param extension - Additional schema fields to add
37
+ * @returns New LogSchema instance with merged fields
38
+ * @throws Error if field names conflict or reserved names are used
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const base = new LogSchema({ requestId: S.category() });
43
+ * const extended = base.extend({ duration: S.number() });
44
+ * // extended.fields = { requestId: ..., duration: ... }
45
+ * ```
46
+ */
47
+ extend<U extends SchemaFields>(extension: U): LogSchema<T & U>;
48
+ /**
49
+ * Check if this is a LogSchema instance
50
+ *
51
+ * Used for type guards and instanceof checks
52
+ */
53
+ static isLogSchema(value: unknown): value is LogSchema;
54
+ }
55
+ /**
56
+ * Type guard to check if a value is a LogSchema instance
57
+ *
58
+ * @param value - Value to check
59
+ * @returns True if value is a LogSchema instance
60
+ */
61
+ export declare function isLogSchema(value: unknown): value is LogSchema;
62
+ //# sourceMappingURL=LogSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogSchema.d.ts","sourceRoot":"","sources":["../../../src/lib/schema/LogSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA6C/C;;;;;;;GAOG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IACnF;;;;;OAKG;IACH,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAchE;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,CAAC,SAAS,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;IA8B9D;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS;CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * LogSchema class for logging-specific schema functionality
3
+ *
4
+ * Extends ColumnSchema from arrow-builder with logging-specific features:
5
+ * - Schema extension with reserved name validation
6
+ * - Integration with lmao's logging system
7
+ *
8
+ * The base ColumnSchema provides generic cached field access.
9
+ * LogSchema adds logging-specific extension capabilities.
10
+ */
11
+ import { ColumnSchema } from '@smoothbricks/arrow-builder';
12
+ /**
13
+ * Reserved method names that cannot be used as attribute names
14
+ *
15
+ * These names are reserved to prevent conflicts or confusion:
16
+ * - Technically conflicting: Names that would shadow actual methods/properties
17
+ * on TagWriter, SpanLogger, FluentLogEntry, or result objects
18
+ * - Confusing: Names that would create confusing code patterns even though
19
+ * they don't technically conflict (e.g., ctx.tag.tag() or ctx.scope.scope)
20
+ */
21
+ const RESERVED_NAMES = new Set([
22
+ // Technically conflicting - methods on TagWriter/FluentLogEntry/result objects
23
+ 'with', // Used on TagWriter, FluentLogEntry, Ok, Err
24
+ 'message', // Used on Ok, Err
25
+ // Technically conflicting - log level methods on SpanLogger
26
+ 'info', // ctx.log.info()
27
+ 'debug', // ctx.log.debug()
28
+ 'warn', // ctx.log.warn()
29
+ 'error', // ctx.log.error()
30
+ 'trace', // ctx.log.trace()
31
+ // Internal SpanLogger methods (prefixed with _ but included for completeness)
32
+ '_nextRow', // Internal row advancement
33
+ '_buffer', // Internal buffer reference
34
+ '_writeIndex', // Internal write position
35
+ '_getNextBuffer', // Internal buffer chaining
36
+ '_setScope', // Internal scope setter
37
+ '_prefillScopedAttributes', // Internal scope prefill
38
+ // Internal FF logging methods (called by evaluator, not on public type)
39
+ 'ffAccess', // Feature flag access logging
40
+ 'ffUsage', // Feature flag usage logging
41
+ // Confusing - properties on SpanContext (not technically conflicting)
42
+ 'tag', // ctx.tag is TagWriter; ctx.tag.tag() would be confusing
43
+ 'scope', // ctx.scope is readonly; ctx.scope.scope would be confusing
44
+ // Confusing - methods on SpanContext (not technically conflicting)
45
+ 'ok', // ctx.ok() is method; ctx.tag.ok() or ctx.ok(result).ok() would be confusing
46
+ 'err', // ctx.err() is method; ctx.tag.err() or ctx.err(code, details).err() would be confusing
47
+ 'span', // ctx.span() is method; ctx.tag.span() would be confusing
48
+ ]);
49
+ /**
50
+ * LogSchema class - extends ColumnSchema with logging-specific features
51
+ *
52
+ * Provides all the generic schema functionality from ColumnSchema plus
53
+ * logging-specific extension with reserved name validation.
54
+ *
55
+ * @template T - The schema fields type (SchemaFields)
56
+ */
57
+ export class LogSchema extends ColumnSchema {
58
+ /**
59
+ * Assert that user-provided field names don't conflict with reserved names
60
+ * and don't start with underscore (reserved for system properties)
61
+ *
62
+ * @throws Error if any field name is reserved or starts with _
63
+ */
64
+ static assertUserFieldNames(fieldNames) {
65
+ for (const name of fieldNames) {
66
+ if (name.startsWith('_')) {
67
+ throw new Error(`Field name '${name}' cannot start with '_' - this prefix is reserved for system properties`);
68
+ }
69
+ if (RESERVED_NAMES.has(name)) {
70
+ throw new Error(`Attribute name '${name}' is reserved and cannot be used. ` +
71
+ `Reserved names: ${Array.from(RESERVED_NAMES).join(', ')}`);
72
+ }
73
+ }
74
+ }
75
+ /**
76
+ * Extend this schema with additional fields
77
+ *
78
+ * Creates a new LogSchema instance with merged fields.
79
+ * Validates that extension fields don't conflict with existing fields
80
+ * and don't use reserved names (logging-specific validation).
81
+ *
82
+ * @param extension - Additional schema fields to add
83
+ * @returns New LogSchema instance with merged fields
84
+ * @throws Error if field names conflict or reserved names are used
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * const base = new LogSchema({ requestId: S.category() });
89
+ * const extended = base.extend({ duration: S.number() });
90
+ * // extended.fields = { requestId: ..., duration: ... }
91
+ * ```
92
+ */
93
+ extend(extension) {
94
+ // Check for field name conflicts
95
+ const extensionKeys = Object.keys(extension);
96
+ for (const key of extensionKeys) {
97
+ if (this._columnNames.includes(key)) {
98
+ throw new Error(`Schema conflict: attribute '${key}' already exists in base schema. ` +
99
+ `Base schema has: ${this._columnNames.join(', ')}`);
100
+ }
101
+ }
102
+ // Assert extension doesn't use reserved names (logging-specific)
103
+ LogSchema.assertUserFieldNames(extensionKeys);
104
+ // Perform shallow merge
105
+ // Create merged via explicit property assignment to preserve property order for V8 hidden class stability
106
+ const merged = Object.create(null);
107
+ for (const key of this._columnNames) {
108
+ // Use prototypeless object for stable prototype, prevents hidden class deopt
109
+ merged[key] = this.fields[key];
110
+ }
111
+ for (const key of extensionKeys) {
112
+ merged[key] = extension[key];
113
+ }
114
+ // Return new LogSchema instance
115
+ return new LogSchema(merged);
116
+ }
117
+ /**
118
+ * Check if this is a LogSchema instance
119
+ *
120
+ * Used for type guards and instanceof checks
121
+ */
122
+ static isLogSchema(value) {
123
+ return value instanceof LogSchema;
124
+ }
125
+ }
126
+ /**
127
+ * Type guard to check if a value is a LogSchema instance
128
+ *
129
+ * @param value - Value to check
130
+ * @returns True if value is a LogSchema instance
131
+ */
132
+ export function isLogSchema(value) {
133
+ return LogSchema.isLogSchema(value);
134
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Schema builder for lmao - extends arrow-builder's schema builder with feature flags, masking, and binary sugar
3
+ *
4
+ * This module re-exports the S object from arrow-builder and adds:
5
+ * - Feature flag support via .default().sync()/.async() pattern
6
+ * - Masking transformations for sensitive data
7
+ * - S.unknown() and S.object<T>() sugar for msgpack-encoded binary columns
8
+ * - S.binary() passthrough to arrow-builder's S.binary()
9
+ */
10
+ import type { SchemaBuilder } from './types.js';
11
+ export declare const S: SchemaBuilder;
12
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/lib/schema/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,OAAO,KAAK,EAAiD,aAAa,EAAuB,MAAM,YAAY,CAAC;AAoLpH,eAAO,MAAM,CAAC,eAAoB,CAAC"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Schema builder for lmao - extends arrow-builder's schema builder with feature flags, masking, and binary sugar
3
+ *
4
+ * This module re-exports the S object from arrow-builder and adds:
5
+ * - Feature flag support via .default().sync()/.async() pattern
6
+ * - Masking transformations for sensitive data
7
+ * - S.unknown() and S.object<T>() sugar for msgpack-encoded binary columns
8
+ * - S.binary() passthrough to arrow-builder's S.binary()
9
+ */
10
+ import { encode } from '@msgpack/msgpack';
11
+ import { S as ArrowS, } from '@smoothbricks/arrow-builder';
12
+ /**
13
+ * Msgpack encoder singleton -- per-value, synchronous.
14
+ * Encodes at flush time (cold path), not on the hot write path.
15
+ * @msgpack/msgpack already handles most types; functions/symbols become undefined (dropped silently).
16
+ *
17
+ * Both wrap @msgpack/msgpack's encode(). This encoder is private to the schema builder;
18
+ */
19
+ const msgpackEncoder = {
20
+ encode(value) {
21
+ return encode(value);
22
+ },
23
+ };
24
+ function createSchemaWithFlagBuilder(schema) {
25
+ const schemaWithBuilder = Object.assign(schema, {
26
+ default(defaultValue) {
27
+ return {
28
+ sync() {
29
+ return {
30
+ schema,
31
+ defaultValue,
32
+ evaluationType: 'sync',
33
+ };
34
+ },
35
+ async() {
36
+ return {
37
+ schema,
38
+ defaultValue,
39
+ evaluationType: 'async',
40
+ };
41
+ },
42
+ };
43
+ },
44
+ });
45
+ return schemaWithBuilder;
46
+ }
47
+ /**
48
+ * Schema builder that wraps arrow-builder's S with feature flag support
49
+ *
50
+ * STRING TYPE SYSTEM (See specs/lmao/01a_trace_schema_system.md):
51
+ * Three distinct string types, each with different storage strategies:
52
+ * - S.enum(['A', 'B', 'C']) - Known values at compile time (Uint8Array, 1 byte)
53
+ * - S.category() - Repeated values (raw string storage, dictionary built at Arrow conversion)
54
+ * - S.text() - Unique values (no dictionary overhead)
55
+ */
56
+ const schemaBuilderImpl = {
57
+ /**
58
+ * Create number schema
59
+ *
60
+ * Usage:
61
+ * - S.number() - any number for tag attributes
62
+ * - S.number().default(0).sync() - feature flag
63
+ */
64
+ number: () => {
65
+ const schema = ArrowS.number();
66
+ return createSchemaWithFlagBuilder(schema);
67
+ },
68
+ /**
69
+ * Create boolean schema
70
+ *
71
+ * Usage:
72
+ * - S.boolean() - for tag attributes
73
+ * - S.boolean().default(false).sync() - feature flag
74
+ */
75
+ boolean: () => {
76
+ const schema = ArrowS.boolean();
77
+ return createSchemaWithFlagBuilder(schema);
78
+ },
79
+ /**
80
+ * Wrap schema to make it optional
81
+ *
82
+ * Usage:
83
+ * - SchemaBuilder.optional(SchemaBuilder.string()) - string | undefined
84
+ */
85
+ optional: (schema) => {
86
+ return ArrowS.optional(schema);
87
+ },
88
+ /**
89
+ * Create union of multiple schemas
90
+ *
91
+ * Usage:
92
+ * - SchemaBuilder.union([SchemaBuilder.string(), SchemaBuilder.number()]) - string | number
93
+ */
94
+ union: (schemas) => {
95
+ return ArrowS.union(schemas);
96
+ },
97
+ /**
98
+ * Enum - Known values at compile time
99
+ *
100
+ * Storage: Uint8Array (1 byte) with compile-time mapping
101
+ * Arrow: Dictionary with pre-defined values (UTF-8 pre-computed at definition time)
102
+ * Use for: Operations, HTTP methods, entry types, status enums
103
+ *
104
+ * Usage:
105
+ * - S.enum(['CREATE', 'READ', 'UPDATE', 'DELETE']) - for tag attributes
106
+ * - S.enum(['dev', 'staging', 'prod']).default('dev').sync() - feature flag
107
+ */
108
+ enum: (values) => {
109
+ const schema = ArrowS.enum(values);
110
+ return createSchemaWithFlagBuilder(schema);
111
+ },
112
+ /**
113
+ * Category - Values that often repeat (limited cardinality)
114
+ *
115
+ * Storage: Raw strings (no hot-path interning)
116
+ * Arrow: Dictionary built dynamically from values at Arrow conversion
117
+ * Use for: userIds, sessionIds, moduleNames, spanNames, table names
118
+ */
119
+ category: () => {
120
+ const schema = ArrowS.category();
121
+ return createSchemaWithFlagBuilder(schema);
122
+ },
123
+ /**
124
+ * Text - Unique values that rarely repeat
125
+ *
126
+ * Storage: Raw strings without interning
127
+ * Arrow: Plain string column (no dictionary overhead)
128
+ * Use for: Unique error messages, URLs, request bodies, masked queries
129
+ */
130
+ text: () => {
131
+ const schema = ArrowS.text();
132
+ return createSchemaWithFlagBuilder(schema);
133
+ },
134
+ /**
135
+ * Binary - Raw bytes or encoder-wrapped values
136
+ *
137
+ * Passthrough to arrow-builder's S.binary().
138
+ * Without encoder: accepts Uint8Array (raw binary).
139
+ * With encoder: accepts any value T (encoded to bytes at flush time).
140
+ */
141
+ binary: ((options) => {
142
+ if (options?.encoder) {
143
+ return ArrowS.binary(options);
144
+ }
145
+ return ArrowS.binary();
146
+ }),
147
+ /**
148
+ * Unknown - accepts any value, msgpack-encoded at flush time
149
+ *
150
+ * Sugar for S.binary({ encoder: msgpackEncoder }).
151
+ * Use for: arbitrary objects, request bodies, error context, unknown-shape data.
152
+ * Hot path stores frozen object reference; flush path encodes via @msgpack/msgpack.
153
+ */
154
+ unknown: () => {
155
+ return ArrowS.binary({ encoder: msgpackEncoder });
156
+ },
157
+ /**
158
+ * Object<T> - typed variant of unknown, same underlying binary storage with msgpack encoding
159
+ *
160
+ * TypeScript enforces shape at compile time; no runtime validation on hot path.
161
+ * Sugar for S.binary<T>({ encoder: msgpackEncoder }).
162
+ */
163
+ object: () => {
164
+ return ArrowS.binary({ encoder: msgpackEncoder });
165
+ },
166
+ };
167
+ // Export as S for convenience
168
+ // Note: The SchemaBuilder type is exported from types.ts
169
+ export const S = schemaBuilderImpl;
@@ -0,0 +1,60 @@
1
+ import type { Output } from '@smoothbricks/arrow-builder';
2
+ import type { FeatureFlagDefinition } from './types.js';
3
+ /**
4
+ * Feature flag schema with sync/async markers
5
+ */
6
+ export interface FeatureFlagSchema {
7
+ [key: string]: FeatureFlagDefinition<string | number | boolean>;
8
+ }
9
+ type DefinedFeatureFlags<T extends FeatureFlagSchema> = {
10
+ schema: T;
11
+ syncFlags: SyncFlagKeys<T>[];
12
+ asyncFlags: AsyncFlagKeys<T>[];
13
+ readonly type?: InferFeatureFlags<T>;
14
+ };
15
+ /**
16
+ * Define feature flags with type-safe access patterns
17
+ *
18
+ * @param schema - Object mapping flag names to flag definitions
19
+ * @returns Feature flag definition object for use with evaluator
20
+ */
21
+ export declare function defineFeatureFlags<T extends FeatureFlagSchema>(schema: T): DefinedFeatureFlags<T>;
22
+ /**
23
+ * Extract sync flag keys
24
+ */
25
+ export type SyncFlagKeys<T extends FeatureFlagSchema> = {
26
+ [K in keyof T]: T[K]['evaluationType'] extends 'sync' ? K : never;
27
+ }[keyof T];
28
+ /**
29
+ * Extract async flag keys
30
+ */
31
+ export type AsyncFlagKeys<T extends FeatureFlagSchema> = {
32
+ [K in keyof T]: T[K]['evaluationType'] extends 'async' ? K : never;
33
+ }[keyof T];
34
+ /**
35
+ * Infer TypeScript types from feature flag schema
36
+ */
37
+ export type InferFeatureFlags<T extends FeatureFlagSchema> = {
38
+ [K in keyof T]: Output<T[K]['schema']>;
39
+ };
40
+ /**
41
+ * Evaluation context for feature flag decisions
42
+ */
43
+ export interface EvaluationContext {
44
+ userId?: string;
45
+ requestId?: string;
46
+ userPlan?: string;
47
+ region?: string;
48
+ [key: string]: string | number | boolean | undefined;
49
+ }
50
+ /**
51
+ * Usage tracking context for A/B testing analytics
52
+ */
53
+ export interface UsageContext {
54
+ action?: string;
55
+ outcome?: 'success' | 'failure';
56
+ value?: number;
57
+ metadata?: Record<string, string | number | boolean>;
58
+ }
59
+ export {};
60
+ //# sourceMappingURL=defineFeatureFlags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineFeatureFlags.d.ts","sourceRoot":"","sources":["../../../src/lib/schema/defineFeatureFlags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACjE;AAED,KAAK,mBAAmB,CAAC,CAAC,SAAS,iBAAiB,IAAI;IACtD,MAAM,EAAE,CAAC,CAAC;IACV,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;CACtC,CAAC;AAUF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,iBAAiB,EAAE,MAAM,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAiBjG;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,iBAAiB,IAAI;KACrD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,KAAK;CAClE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,iBAAiB,IAAI;KACtD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,KAAK;CACnE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,IAAI;KAC1D,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACtD"}
@@ -0,0 +1,29 @@
1
+ function isSyncFlagKey(schema, key) {
2
+ return schema[key].evaluationType === 'sync';
3
+ }
4
+ function isAsyncFlagKey(schema, key) {
5
+ return schema[key].evaluationType === 'async';
6
+ }
7
+ /**
8
+ * Define feature flags with type-safe access patterns
9
+ *
10
+ * @param schema - Object mapping flag names to flag definitions
11
+ * @returns Feature flag definition object for use with evaluator
12
+ */
13
+ export function defineFeatureFlags(schema) {
14
+ const syncFlags = [];
15
+ const asyncFlags = [];
16
+ for (const key in schema) {
17
+ if (isSyncFlagKey(schema, key)) {
18
+ syncFlags.push(key);
19
+ }
20
+ else if (isAsyncFlagKey(schema, key)) {
21
+ asyncFlags.push(key);
22
+ }
23
+ }
24
+ return {
25
+ schema,
26
+ syncFlags,
27
+ asyncFlags,
28
+ };
29
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Define log schema with runtime validation and type inference
3
+ *
4
+ * This module leverages __schema_type metadata on schema objects for:
5
+ * - Runtime validation via schema-type dispatch
6
+ * - Automatic TypeScript inference
7
+ * - Schema transformations (masking)
8
+ * - Extension composition
9
+ */
10
+ import { LogSchema } from './LogSchema.js';
11
+ import type { InferSchema, SchemaFields } from './types.js';
12
+ /**
13
+ * Brand symbol for DefinedLogSchema - used to detect this type in conditionals.
14
+ * Must be exported so types.ts can import it for ExtractOriginalSchema.
15
+ */
16
+ export declare const DEFINED_LOG_SCHEMA_BRAND: unique symbol;
17
+ /**
18
+ * Define log schema with runtime validation and type inference
19
+ *
20
+ * Example:
21
+ * ```typescript
22
+ * const schema = defineLogSchema({
23
+ * requestId: S.category(),
24
+ * userId: S.optional(S.category()),
25
+ * httpStatus: S.number(),
26
+ * operation: S.enum(['SELECT', 'INSERT', 'UPDATE'])
27
+ * });
28
+ *
29
+ * // Validate data
30
+ * const result = schema.validate({
31
+ * requestId: 'req-123',
32
+ * userId: 'user-456',
33
+ * httpStatus: 200,
34
+ * operation: 'SELECT'
35
+ * });
36
+ * ```
37
+ *
38
+ * @param schema - Object mapping field names to schema objects
39
+ * @returns Extended schema with validation and extension methods
40
+ */
41
+ /**
42
+ * DefinedLogSchema type - result of defineLogSchema()
43
+ *
44
+ * Includes:
45
+ * - All original schema fields (T)
46
+ * - Extension methods (extend)
47
+ * - Validation methods (validate, parse, safeParse)
48
+ * - LogSchema methods (fieldEntries, fieldCount, fieldNames, fields)
49
+ * - Brand marker for type detection in InferSchema
50
+ */
51
+ export type DefinedLogSchema<T extends SchemaFields> = LogSchema<T> & {
52
+ /** Brand marker - never actually set, only for type discrimination */
53
+ readonly [DEFINED_LOG_SCHEMA_BRAND]?: T;
54
+ };
55
+ type SafeParseResult<T extends SchemaFields> = {
56
+ success: true;
57
+ value: InferSchema<T>;
58
+ } | {
59
+ success: false;
60
+ error: Error;
61
+ };
62
+ /**
63
+ * Options for defineLogSchema
64
+ */
65
+ export interface DefineLogSchemaOptions {
66
+ /**
67
+ * Skip validation of reserved names.
68
+ * Only used internally for defining system schema columns.
69
+ * @internal
70
+ */
71
+ _skipReservedNameValidation?: boolean;
72
+ }
73
+ /**
74
+ * LogSchema with validation methods added by defineLogSchema.
75
+ * These methods are added via Object.assign at runtime.
76
+ */
77
+ export type ValidatedLogSchema<T extends SchemaFields> = LogSchema<T> & {
78
+ /** Validate data and throw on error */
79
+ validate(data: unknown): InferSchema<T>;
80
+ /** Validate data and return null on error */
81
+ parse(data: unknown): InferSchema<T> | null;
82
+ /** Safe parse with detailed error information */
83
+ safeParse(data: unknown): SafeParseResult<T>;
84
+ };
85
+ export declare function defineLogSchema<T extends SchemaFields>(schema: T, options?: DefineLogSchemaOptions): ValidatedLogSchema<T>;
86
+ export {};
87
+ //# sourceMappingURL=defineLogSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineLogSchema.d.ts","sourceRoot":"","sources":["../../../src/lib/schema/defineLogSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,MAAM,wBAAwB,EAAE,OAAO,MAAM,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IACpE,sEAAsE;IACtE,QAAQ,CAAC,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC;CACzC,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,YAAY,IACvC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CAAE,GACxC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IACtE,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACxC,6CAA6C;IAC7C,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5C,iDAAiD;IACjD,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAC;AAgJF,wBAAgB,eAAe,CAAC,CAAC,SAAS,YAAY,EACpD,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,sBAAsB,GAC/B,kBAAkB,CAAC,CAAC,CAAC,CAwDvB"}