pipework 0.8.2 → 0.8.5

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 (355) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/async/jobs/execute.d.ts +2 -0
  3. package/dist/async/jobs/execute.d.ts.map +1 -1
  4. package/dist/async/jobs/execute.js +17 -2
  5. package/dist/async/jobs/execute.js.map +1 -1
  6. package/dist/audit/query/cursor.d.ts +7 -0
  7. package/dist/audit/query/cursor.d.ts.map +1 -0
  8. package/dist/audit/query/cursor.js +25 -0
  9. package/dist/audit/query/cursor.js.map +1 -0
  10. package/dist/audit/query/index.d.ts +5 -0
  11. package/dist/audit/query/index.d.ts.map +1 -0
  12. package/dist/audit/query/index.js +3 -0
  13. package/dist/audit/query/index.js.map +1 -0
  14. package/dist/audit/query/query.d.ts +49 -0
  15. package/dist/audit/query/query.d.ts.map +1 -0
  16. package/dist/audit/query/query.js +119 -0
  17. package/dist/audit/query/query.js.map +1 -0
  18. package/dist/audit/schema/audit-record-fields.d.ts +15 -0
  19. package/dist/audit/schema/audit-record-fields.d.ts.map +1 -0
  20. package/dist/audit/schema/audit-record-fields.js +50 -0
  21. package/dist/audit/schema/audit-record-fields.js.map +1 -0
  22. package/dist/audit/schema/audit-record.d.ts +15 -0
  23. package/dist/audit/schema/audit-record.d.ts.map +1 -0
  24. package/dist/audit/schema/audit-record.js +12 -0
  25. package/dist/audit/schema/audit-record.js.map +1 -0
  26. package/dist/auth/tenant/scope.js +1 -1
  27. package/dist/auth/tenant/scope.js.map +1 -1
  28. package/dist/auth/tenant/scoped-db.d.ts.map +1 -1
  29. package/dist/auth/tenant/scoped-db.js +1 -2
  30. package/dist/auth/tenant/scoped-db.js.map +1 -1
  31. package/dist/cli/commands/check.d.ts +4 -0
  32. package/dist/cli/commands/check.d.ts.map +1 -1
  33. package/dist/cli/commands/check.js +181 -14
  34. package/dist/cli/commands/check.js.map +1 -1
  35. package/dist/cli/commands/codemod.d.ts +6 -0
  36. package/dist/cli/commands/codemod.d.ts.map +1 -0
  37. package/dist/cli/commands/codemod.js +63 -0
  38. package/dist/cli/commands/codemod.js.map +1 -0
  39. package/dist/cli/index.d.ts.map +1 -1
  40. package/dist/cli/index.js +9 -0
  41. package/dist/cli/index.js.map +1 -1
  42. package/dist/core/config/load.d.ts +23 -0
  43. package/dist/core/config/load.d.ts.map +1 -1
  44. package/dist/core/config/load.js +8 -0
  45. package/dist/core/config/load.js.map +1 -1
  46. package/dist/core/config/namespace.d.ts +19 -0
  47. package/dist/core/config/namespace.d.ts.map +1 -1
  48. package/dist/core/config/schema.d.ts +41 -0
  49. package/dist/core/config/schema.d.ts.map +1 -1
  50. package/dist/core/config/schema.js +27 -0
  51. package/dist/core/config/schema.js.map +1 -1
  52. package/dist/core/logging/logger.d.ts +3 -1
  53. package/dist/core/logging/logger.d.ts.map +1 -1
  54. package/dist/core/logging/logger.js +2 -2
  55. package/dist/core/logging/logger.js.map +1 -1
  56. package/dist/core/pipework.d.ts +2 -2
  57. package/dist/core/pipework.d.ts.map +1 -1
  58. package/dist/data/db/bulk-set.js +1 -1
  59. package/dist/data/db/bulk-set.js.map +1 -1
  60. package/dist/data/db/composed.js +1 -1
  61. package/dist/data/db/composed.js.map +1 -1
  62. package/dist/data/db/db.d.ts +10 -0
  63. package/dist/data/db/db.d.ts.map +1 -1
  64. package/dist/data/db/db.js +12 -0
  65. package/dist/data/db/db.js.map +1 -1
  66. package/dist/data/db/filter.d.ts +42 -43
  67. package/dist/data/db/filter.d.ts.map +1 -1
  68. package/dist/data/db/filter.js +7 -6
  69. package/dist/data/db/filter.js.map +1 -1
  70. package/dist/data/db/namespace.d.ts +90 -82
  71. package/dist/data/db/namespace.d.ts.map +1 -1
  72. package/dist/data/db/namespace.js +21 -5
  73. package/dist/data/db/namespace.js.map +1 -1
  74. package/dist/data/migrate/post-process.d.ts +2 -1
  75. package/dist/data/migrate/post-process.d.ts.map +1 -1
  76. package/dist/data/migrate/post-process.js +2 -1
  77. package/dist/data/migrate/post-process.js.map +1 -1
  78. package/dist/data/temporal/definition-queries.js +1 -1
  79. package/dist/data/temporal/definition-queries.js.map +1 -1
  80. package/dist/data/temporal/query.js +1 -1
  81. package/dist/data/temporal/query.js.map +1 -1
  82. package/dist/data/temporal/resolve.js +1 -1
  83. package/dist/data/temporal/resolve.js.map +1 -1
  84. package/dist/data/write/audit/actor.d.ts +3 -0
  85. package/dist/data/write/audit/actor.d.ts.map +1 -0
  86. package/dist/data/write/audit/actor.js +15 -0
  87. package/dist/data/write/audit/actor.js.map +1 -0
  88. package/dist/data/write/audit/audit-columns.d.ts +6 -0
  89. package/dist/data/write/audit/audit-columns.d.ts.map +1 -0
  90. package/dist/data/write/audit/audit-columns.js +15 -0
  91. package/dist/data/write/audit/audit-columns.js.map +1 -0
  92. package/dist/data/write/audit/audit-select.d.ts +28 -0
  93. package/dist/data/write/audit/audit-select.d.ts.map +1 -0
  94. package/dist/data/write/audit/audit-select.js +49 -0
  95. package/dist/data/write/audit/audit-select.js.map +1 -0
  96. package/dist/data/write/audit/cte-compile.d.ts +7 -0
  97. package/dist/data/write/audit/cte-compile.d.ts.map +1 -0
  98. package/dist/data/write/audit/cte-compile.js +23 -0
  99. package/dist/data/write/audit/cte-compile.js.map +1 -0
  100. package/dist/data/write/audit/final-select.d.ts +4 -0
  101. package/dist/data/write/audit/final-select.d.ts.map +1 -0
  102. package/dist/data/write/audit/final-select.js +28 -0
  103. package/dist/data/write/audit/final-select.js.map +1 -0
  104. package/dist/data/write/audit/primary-key.d.ts +7 -0
  105. package/dist/data/write/audit/primary-key.d.ts.map +1 -0
  106. package/dist/data/write/audit/primary-key.js +32 -0
  107. package/dist/data/write/audit/primary-key.js.map +1 -0
  108. package/dist/data/write/audit/projection.d.ts +11 -0
  109. package/dist/data/write/audit/projection.d.ts.map +1 -0
  110. package/dist/data/write/audit/projection.js +37 -0
  111. package/dist/data/write/audit/projection.js.map +1 -0
  112. package/dist/data/write/audit/read-touches.d.ts +10 -0
  113. package/dist/data/write/audit/read-touches.d.ts.map +1 -0
  114. package/dist/data/write/audit/read-touches.js +63 -0
  115. package/dist/data/write/audit/read-touches.js.map +1 -0
  116. package/dist/data/write/audit/verb-delete.d.ts +7 -0
  117. package/dist/data/write/audit/verb-delete.d.ts.map +1 -0
  118. package/dist/data/write/audit/verb-delete.js +53 -0
  119. package/dist/data/write/audit/verb-delete.js.map +1 -0
  120. package/dist/data/write/audit/verb-insert.d.ts +7 -0
  121. package/dist/data/write/audit/verb-insert.d.ts.map +1 -0
  122. package/dist/data/write/audit/verb-insert.js +28 -0
  123. package/dist/data/write/audit/verb-insert.js.map +1 -0
  124. package/dist/data/write/audit/verb-update.d.ts +7 -0
  125. package/dist/data/write/audit/verb-update.d.ts.map +1 -0
  126. package/dist/data/write/audit/verb-update.js +52 -0
  127. package/dist/data/write/audit/verb-update.js.map +1 -0
  128. package/dist/data/write/audit/verb-upsert.d.ts +7 -0
  129. package/dist/data/write/audit/verb-upsert.d.ts.map +1 -0
  130. package/dist/data/write/audit/verb-upsert.js +81 -0
  131. package/dist/data/write/audit/verb-upsert.js.map +1 -0
  132. package/dist/data/write/delete.d.ts +15 -0
  133. package/dist/data/write/delete.d.ts.map +1 -0
  134. package/dist/data/write/delete.js +25 -0
  135. package/dist/data/write/delete.js.map +1 -0
  136. package/dist/data/write/execute.d.ts +3 -0
  137. package/dist/data/write/execute.d.ts.map +1 -0
  138. package/dist/data/write/execute.js +162 -0
  139. package/dist/data/write/execute.js.map +1 -0
  140. package/dist/data/write/index.d.ts +6 -0
  141. package/dist/data/write/index.d.ts.map +1 -0
  142. package/dist/data/write/index.js +10 -0
  143. package/dist/data/write/index.js.map +1 -0
  144. package/dist/data/write/insert.d.ts +18 -0
  145. package/dist/data/write/insert.d.ts.map +1 -0
  146. package/dist/data/write/insert.js +29 -0
  147. package/dist/data/write/insert.js.map +1 -0
  148. package/dist/data/write/state.d.ts +29 -0
  149. package/dist/data/write/state.d.ts.map +1 -0
  150. package/dist/data/write/state.js +9 -0
  151. package/dist/data/write/state.js.map +1 -0
  152. package/dist/data/write/update.d.ts +17 -0
  153. package/dist/data/write/update.d.ts.map +1 -0
  154. package/dist/data/write/update.js +39 -0
  155. package/dist/data/write/update.js.map +1 -0
  156. package/dist/data/write/upsert.d.ts +21 -0
  157. package/dist/data/write/upsert.d.ts.map +1 -0
  158. package/dist/data/write/upsert.js +42 -0
  159. package/dist/data/write/upsert.js.map +1 -0
  160. package/dist/index.d.ts +3 -0
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +1 -0
  163. package/dist/index.js.map +1 -1
  164. package/dist/infra/audit/namespace.d.ts +3 -0
  165. package/dist/infra/audit/namespace.d.ts.map +1 -1
  166. package/dist/infra/audit/namespace.js +3 -0
  167. package/dist/infra/audit/namespace.js.map +1 -1
  168. package/dist/lint/config.d.ts +4 -2
  169. package/dist/lint/config.d.ts.map +1 -1
  170. package/dist/lint/config.js +9 -5
  171. package/dist/lint/config.js.map +1 -1
  172. package/dist/lint/index.d.ts +2 -1
  173. package/dist/lint/index.d.ts.map +1 -1
  174. package/dist/lint/index.js +1 -0
  175. package/dist/lint/index.js.map +1 -1
  176. package/dist/lint/resolver.d.ts +16 -0
  177. package/dist/lint/resolver.d.ts.map +1 -0
  178. package/dist/lint/resolver.js +61 -0
  179. package/dist/lint/resolver.js.map +1 -0
  180. package/dist/request/context/create.d.ts +4 -0
  181. package/dist/request/context/create.d.ts.map +1 -1
  182. package/dist/request/context/create.js +3 -0
  183. package/dist/request/context/create.js.map +1 -1
  184. package/dist/request/context/types.d.ts +3 -0
  185. package/dist/request/context/types.d.ts.map +1 -1
  186. package/dist/request/http/middleware.d.ts.map +1 -1
  187. package/dist/request/http/middleware.js +30 -0
  188. package/dist/request/http/middleware.js.map +1 -1
  189. package/dist/request/http/server.d.ts.map +1 -1
  190. package/dist/request/http/server.js +6 -1
  191. package/dist/request/http/server.js.map +1 -1
  192. package/dist/test/context.d.ts.map +1 -1
  193. package/dist/test/context.js +43 -2
  194. package/dist/test/context.js.map +1 -1
  195. package/dist/test/index.d.ts +1 -1
  196. package/dist/test/index.d.ts.map +1 -1
  197. package/dist/test/index.js +1 -1
  198. package/dist/test/index.js.map +1 -1
  199. package/dist/test/vitest-workspace.d.ts +15 -2
  200. package/dist/test/vitest-workspace.d.ts.map +1 -1
  201. package/dist/test/vitest-workspace.js +60 -7
  202. package/dist/test/vitest-workspace.js.map +1 -1
  203. package/dist/trace/cardinality/analyze.d.ts +26 -0
  204. package/dist/trace/cardinality/analyze.d.ts.map +1 -0
  205. package/dist/trace/cardinality/analyze.js +129 -0
  206. package/dist/trace/cardinality/analyze.js.map +1 -0
  207. package/dist/trace/cardinality/branch-context.d.ts +13 -0
  208. package/dist/trace/cardinality/branch-context.d.ts.map +1 -0
  209. package/dist/trace/cardinality/branch-context.js +182 -0
  210. package/dist/trace/cardinality/branch-context.js.map +1 -0
  211. package/dist/trace/cardinality/check.d.ts +4 -0
  212. package/dist/trace/cardinality/check.d.ts.map +1 -0
  213. package/dist/trace/cardinality/check.js +29 -0
  214. package/dist/trace/cardinality/check.js.map +1 -0
  215. package/dist/trace/cardinality/classify-edge.d.ts +31 -0
  216. package/dist/trace/cardinality/classify-edge.d.ts.map +1 -0
  217. package/dist/trace/cardinality/classify-edge.js +27 -0
  218. package/dist/trace/cardinality/classify-edge.js.map +1 -0
  219. package/dist/trace/cardinality/structural-max.d.ts +14 -0
  220. package/dist/trace/cardinality/structural-max.d.ts.map +1 -0
  221. package/dist/trace/cardinality/structural-max.js +83 -0
  222. package/dist/trace/cardinality/structural-max.js.map +1 -0
  223. package/dist/trace/check/coverage-check.d.ts +20 -0
  224. package/dist/trace/check/coverage-check.d.ts.map +1 -0
  225. package/dist/trace/check/coverage-check.js +146 -0
  226. package/dist/trace/check/coverage-check.js.map +1 -0
  227. package/dist/trace/check/flow-check.d.ts +13 -0
  228. package/dist/trace/check/flow-check.d.ts.map +1 -0
  229. package/dist/trace/check/flow-check.js +82 -0
  230. package/dist/trace/check/flow-check.js.map +1 -0
  231. package/dist/trace/check/flow-step-site.d.ts +62 -0
  232. package/dist/trace/check/flow-step-site.d.ts.map +1 -0
  233. package/dist/trace/check/flow-step-site.js +142 -0
  234. package/dist/trace/check/flow-step-site.js.map +1 -0
  235. package/dist/trace/check/io-pattern.d.ts +14 -0
  236. package/dist/trace/check/io-pattern.d.ts.map +1 -0
  237. package/dist/trace/check/io-pattern.js +113 -0
  238. package/dist/trace/check/io-pattern.js.map +1 -0
  239. package/dist/trace/codemod/add-cardinality.d.ts +38 -0
  240. package/dist/trace/codemod/add-cardinality.d.ts.map +1 -0
  241. package/dist/trace/codemod/add-cardinality.js +106 -0
  242. package/dist/trace/codemod/add-cardinality.js.map +1 -0
  243. package/dist/trace/codemod/run.d.ts +25 -0
  244. package/dist/trace/codemod/run.d.ts.map +1 -0
  245. package/dist/trace/codemod/run.js +47 -0
  246. package/dist/trace/codemod/run.js.map +1 -0
  247. package/dist/trace/entry/close-trace.d.ts +7 -0
  248. package/dist/trace/entry/close-trace.d.ts.map +1 -0
  249. package/dist/trace/entry/close-trace.js +54 -0
  250. package/dist/trace/entry/close-trace.js.map +1 -0
  251. package/dist/trace/entry/finalize-trace.d.ts +5 -0
  252. package/dist/trace/entry/finalize-trace.d.ts.map +1 -0
  253. package/dist/trace/entry/finalize-trace.js +23 -0
  254. package/dist/trace/entry/finalize-trace.js.map +1 -0
  255. package/dist/trace/entry/open-trace.d.ts +26 -0
  256. package/dist/trace/entry/open-trace.d.ts.map +1 -0
  257. package/dist/trace/entry/open-trace.js +75 -0
  258. package/dist/trace/entry/open-trace.js.map +1 -0
  259. package/dist/trace/entry/parent-trace.d.ts +4 -0
  260. package/dist/trace/entry/parent-trace.d.ts.map +1 -0
  261. package/dist/trace/entry/parent-trace.js +10 -0
  262. package/dist/trace/entry/parent-trace.js.map +1 -0
  263. package/dist/trace/entry/parse-traceparent.d.ts +8 -0
  264. package/dist/trace/entry/parse-traceparent.d.ts.map +1 -0
  265. package/dist/trace/entry/parse-traceparent.js +37 -0
  266. package/dist/trace/entry/parse-traceparent.js.map +1 -0
  267. package/dist/trace/entry/trace-context.d.ts +19 -0
  268. package/dist/trace/entry/trace-context.d.ts.map +1 -0
  269. package/dist/trace/entry/trace-context.js +5 -0
  270. package/dist/trace/entry/trace-context.js.map +1 -0
  271. package/dist/trace/entry/tracing-enabled.d.ts +4 -0
  272. package/dist/trace/entry/tracing-enabled.d.ts.map +1 -0
  273. package/dist/trace/entry/tracing-enabled.js +8 -0
  274. package/dist/trace/entry/tracing-enabled.js.map +1 -0
  275. package/dist/trace/partition/plan.d.ts +2 -0
  276. package/dist/trace/partition/plan.d.ts.map +1 -1
  277. package/dist/trace/partition/plan.js +8 -1
  278. package/dist/trace/partition/plan.js.map +1 -1
  279. package/dist/trace/partition/schedule.d.ts.map +1 -1
  280. package/dist/trace/partition/schedule.js +6 -4
  281. package/dist/trace/partition/schedule.js.map +1 -1
  282. package/dist/trace/partition/startup-hook.d.ts.map +1 -1
  283. package/dist/trace/partition/startup-hook.js +6 -2
  284. package/dist/trace/partition/startup-hook.js.map +1 -1
  285. package/dist/trace/partition/tables.d.ts +1 -1
  286. package/dist/trace/partition/tables.d.ts.map +1 -1
  287. package/dist/trace/partition/tables.js +13 -5
  288. package/dist/trace/partition/tables.js.map +1 -1
  289. package/dist/trace/runtime/expire-stale-traces.d.ts +10 -0
  290. package/dist/trace/runtime/expire-stale-traces.d.ts.map +1 -0
  291. package/dist/trace/runtime/expire-stale-traces.js +36 -0
  292. package/dist/trace/runtime/expire-stale-traces.js.map +1 -0
  293. package/dist/trace/runtime/flow-step.d.ts +6 -0
  294. package/dist/trace/runtime/flow-step.d.ts.map +1 -0
  295. package/dist/trace/runtime/flow-step.js +122 -0
  296. package/dist/trace/runtime/flow-step.js.map +1 -0
  297. package/dist/trace/runtime/flush-steps.d.ts +5 -0
  298. package/dist/trace/runtime/flush-steps.d.ts.map +1 -0
  299. package/dist/trace/runtime/flush-steps.js +23 -0
  300. package/dist/trace/runtime/flush-steps.js.map +1 -0
  301. package/dist/trace/runtime/step-buffer.d.ts +139 -0
  302. package/dist/trace/runtime/step-buffer.d.ts.map +1 -0
  303. package/dist/trace/runtime/step-buffer.js +140 -0
  304. package/dist/trace/runtime/step-buffer.js.map +1 -0
  305. package/dist/trace/runtime/step-error.d.ts +8 -0
  306. package/dist/trace/runtime/step-error.d.ts.map +1 -0
  307. package/dist/trace/runtime/step-error.js +13 -0
  308. package/dist/trace/runtime/step-error.js.map +1 -0
  309. package/dist/trace/runtime/step-meta.d.ts +48 -0
  310. package/dist/trace/runtime/step-meta.d.ts.map +1 -0
  311. package/dist/trace/runtime/step-meta.js +6 -0
  312. package/dist/trace/runtime/step-meta.js.map +1 -0
  313. package/dist/trace/runtime/thenable.d.ts +3 -0
  314. package/dist/trace/runtime/thenable.d.ts.map +1 -0
  315. package/dist/trace/runtime/thenable.js +12 -0
  316. package/dist/trace/runtime/thenable.js.map +1 -0
  317. package/dist/trace/runtime/truncate-trace.d.ts +5 -0
  318. package/dist/trace/runtime/truncate-trace.d.ts.map +1 -0
  319. package/dist/trace/runtime/truncate-trace.js +44 -0
  320. package/dist/trace/runtime/truncate-trace.js.map +1 -0
  321. package/dist/trace/schema/trace-fields.d.ts +1 -1
  322. package/dist/trace/schema/trace-retained.d.ts +1 -1
  323. package/dist/trace/schema/trace.d.ts +1 -1
  324. package/dist/trace/transformer/build-meta-literal.d.ts +3 -0
  325. package/dist/trace/transformer/build-meta-literal.d.ts.map +1 -0
  326. package/dist/trace/transformer/build-meta-literal.js +8 -0
  327. package/dist/trace/transformer/build-meta-literal.js.map +1 -0
  328. package/dist/trace/transformer/find-flow-step-sites.d.ts +24 -0
  329. package/dist/trace/transformer/find-flow-step-sites.d.ts.map +1 -0
  330. package/dist/trace/transformer/find-flow-step-sites.js +69 -0
  331. package/dist/trace/transformer/find-flow-step-sites.js.map +1 -0
  332. package/dist/trace/transformer/inject-flow-step-import.d.ts +3 -0
  333. package/dist/trace/transformer/inject-flow-step-import.d.ts.map +1 -0
  334. package/dist/trace/transformer/inject-flow-step-import.js +28 -0
  335. package/dist/trace/transformer/inject-flow-step-import.js.map +1 -0
  336. package/dist/trace/transformer/transform-error.d.ts +8 -0
  337. package/dist/trace/transformer/transform-error.d.ts.map +1 -0
  338. package/dist/trace/transformer/transform-error.js +5 -0
  339. package/dist/trace/transformer/transform-error.js.map +1 -0
  340. package/dist/trace/transformer/transform-flow-steps.d.ts +12 -0
  341. package/dist/trace/transformer/transform-flow-steps.d.ts.map +1 -0
  342. package/dist/trace/transformer/transform-flow-steps.js +85 -0
  343. package/dist/trace/transformer/transform-flow-steps.js.map +1 -0
  344. package/dist/trace/transformer/wrap-function-declaration.d.ts +3 -0
  345. package/dist/trace/transformer/wrap-function-declaration.d.ts.map +1 -0
  346. package/dist/trace/transformer/wrap-function-declaration.js +28 -0
  347. package/dist/trace/transformer/wrap-function-declaration.js.map +1 -0
  348. package/dist/trace/transformer/wrap-variable-declaration.d.ts +3 -0
  349. package/dist/trace/transformer/wrap-variable-declaration.d.ts.map +1 -0
  350. package/dist/trace/transformer/wrap-variable-declaration.js +30 -0
  351. package/dist/trace/transformer/wrap-variable-declaration.js.map +1 -0
  352. package/dist/workspace/generate.d.ts.map +1 -1
  353. package/dist/workspace/generate.js +5 -8
  354. package/dist/workspace/generate.js.map +1 -1
  355. package/package.json +21 -6
@@ -0,0 +1,162 @@
1
+ // Execution path for the write surface. Two branches: vanilla DML via drizzle
2
+ // when there is no active audit-emitting step, and a single statement with
3
+ // `before` / `updated|inserted|deleted|upserted` / `audit_inserts` CTEs
4
+ // when the current `flow_step` carries `@touches`. The two branches produce
5
+ // the same observable return — the difference is whether an audit_record
6
+ // row lands atomically with the write.
7
+ //
8
+ // Bulk-write chunking (Q8 / Phase 6c): when an insert/upsert under audit
9
+ // would emit more than `trace.auditChunkSize` audit rows
10
+ // (`values.length × touches.length`), the executor splits `state.values`
11
+ // into chunks and runs each one as its own write+audit CTE, wrapped in a
12
+ // transaction so the chunks commit or abort together. Update/delete are not
13
+ // chunked — affected row counts are dynamic at SQL-generation time, so
14
+ // chunking would need a separate strategy.
15
+ import { pipe, pipeRaw } from '../db/db.js';
16
+ import { getContext } from '../../request/context/store.js';
17
+ import { compileAuditWrite } from './audit/cte-compile.js';
18
+ import { resolveActorId } from './audit/actor.js';
19
+ export async function executeWrite(state) {
20
+ const db = pipe(state.table.$options.database);
21
+ const flow = getContext();
22
+ if (flow !== undefined && flow.trace !== null) {
23
+ const stepCtx = flow.trace.buffer.currentStep();
24
+ if (stepCtx !== null) {
25
+ const auditCtx = {
26
+ step: stepCtx,
27
+ actorId: resolveActorId(flow),
28
+ tenantId: flow.tenant,
29
+ };
30
+ const chunkValueSize = computeChunkValueSize(flow, state, stepCtx.touches.length);
31
+ if (chunkValueSize !== null) {
32
+ return executeChunkedAuditWrite(state, auditCtx, chunkValueSize);
33
+ }
34
+ const stmt = compileAuditWrite(db, state, auditCtx);
35
+ // The compiled CTE is already tenant-scoped at compile time (the user
36
+ // write inside the CTE was built against the scoped `pipe()` DB, so it
37
+ // carries the tenant filter). Execute it against the raw handle — the
38
+ // scoped proxy refuses `.execute()` because CTEs would otherwise bypass
39
+ // its per-table filtering.
40
+ const rawDb = pipeRaw(state.table.$options.database);
41
+ const rows = await rawDb.execute(stmt);
42
+ stepCtx.markWrote();
43
+ return projectExecuteResult(state, rows);
44
+ }
45
+ }
46
+ switch (state.verb) {
47
+ case 'update': return executeUpdate(db, state);
48
+ case 'insert': return executeInsert(db, state);
49
+ case 'delete': return executeDelete(db, state);
50
+ case 'upsert': return executeUpsert(db, state);
51
+ }
52
+ }
53
+ /**
54
+ * Returns the per-chunk `values.length` to slice at, or `null` when the write
55
+ * fits in a single statement. Only insert/upsert are chunkable: update/delete
56
+ * affected-row counts depend on the `WHERE` clause, unknown at compile time.
57
+ */
58
+ function computeChunkValueSize(flow, state, touches) {
59
+ if (state.verb !== 'insert' && state.verb !== 'upsert')
60
+ return null;
61
+ if (state.values === undefined)
62
+ return null;
63
+ if (touches === 0)
64
+ return null;
65
+ const limit = flow.instance.config.trace.auditChunkSize;
66
+ const projectedAuditRows = state.values.length * touches;
67
+ if (projectedAuditRows <= limit)
68
+ return null;
69
+ // Floor by touches so the per-chunk audit row count never exceeds `limit`;
70
+ // at least one row per chunk so single-touch writes still make progress.
71
+ return Math.max(1, Math.floor(limit / touches));
72
+ }
73
+ async function executeChunkedAuditWrite(state, ctx, chunkValueSize) {
74
+ const allValues = state.values ?? [];
75
+ const collectsRows = state.returning !== undefined && state.returning !== null;
76
+ const collected = [];
77
+ const dbName = state.table.$options.database;
78
+ // `pipe.transaction` opens a transaction when none is active and a
79
+ // savepoint when nested — so chunked execution is atomic in both call sites
80
+ // (HTTP fittings with transactionPerRequest enabled, and ad-hoc callers).
81
+ const runChunks = async () => {
82
+ for (let i = 0; i < allValues.length; i += chunkValueSize) {
83
+ const chunk = allValues.slice(i, i + chunkValueSize);
84
+ const chunkState = { ...state, values: chunk };
85
+ const scoped = pipe(dbName);
86
+ const stmt = compileAuditWrite(scoped, chunkState, ctx);
87
+ const rawDb = pipeRaw(dbName);
88
+ const rows = await rawDb.execute(stmt);
89
+ if (collectsRows && Array.isArray(rows)) {
90
+ for (const row of rows)
91
+ collected.push(row);
92
+ }
93
+ }
94
+ };
95
+ if (dbName === undefined) {
96
+ await pipe.transaction(runChunks);
97
+ }
98
+ else {
99
+ await pipe.transaction(dbName, runChunks);
100
+ }
101
+ ctx.step.markWrote();
102
+ return collectsRows ? collected : undefined;
103
+ }
104
+ /**
105
+ * Match the vanilla-DML return shape from the CTE statement's result. Vanilla
106
+ * DML returns `void` when `returning` is null, otherwise an array of rows.
107
+ * `db.execute` always returns an array; we strip it to undefined when the
108
+ * caller asked for no `RETURNING`.
109
+ */
110
+ function projectExecuteResult(state, rows) {
111
+ if (state.returning === undefined || state.returning === null)
112
+ return undefined;
113
+ return rows;
114
+ }
115
+ async function executeUpdate(db, state) {
116
+ let q = db.update(state.table).set(state.set ?? {});
117
+ if (state.where !== undefined)
118
+ q = q.where(state.where);
119
+ return runWithReturning(q, state.returning);
120
+ }
121
+ async function executeInsert(db, state) {
122
+ const q = db.insert(state.table).values(state.values ?? []);
123
+ return runWithReturning(q, state.returning);
124
+ }
125
+ async function executeDelete(db, state) {
126
+ let q = db.delete(state.table);
127
+ if (state.where !== undefined)
128
+ q = q.where(state.where);
129
+ return runWithReturning(q, state.returning);
130
+ }
131
+ async function executeUpsert(db, state) {
132
+ if (state.onConflictColumns === undefined || state.onConflictColumns.length === 0) {
133
+ throw new Error('pipe.upsert requires .onConflict([...columns]). ' +
134
+ 'Pass the conflict-target columns that determine "this row already exists" — ' +
135
+ 'usually the primary key or a unique index.');
136
+ }
137
+ const targetColumns = state.onConflictColumns.map(key => {
138
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- DefinedTable columns are indexed by field key; the lookup is validated at the builder surface
139
+ const col = state.table[key];
140
+ if (col === undefined) {
141
+ throw new Error(`pipe.upsert: onConflict column "${key}" is not a field of "${state.table.$name}". ` +
142
+ `Use a field key declared on the table.`);
143
+ }
144
+ return col;
145
+ });
146
+ let q = db.insert(state.table).values(state.values ?? []);
147
+ if (state.set === undefined) {
148
+ q = q.onConflictDoNothing({ target: targetColumns });
149
+ }
150
+ else {
151
+ q = q.onConflictDoUpdate({ target: targetColumns, set: state.set });
152
+ }
153
+ return runWithReturning(q, state.returning);
154
+ }
155
+ function runWithReturning(q, returning) {
156
+ if (returning === undefined || returning === null)
157
+ return q;
158
+ if (returning === 'all')
159
+ return q.returning();
160
+ return q.returning(returning);
161
+ }
162
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/data/write/execute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { update, UpdateBuilder } from './update.js';
2
+ export { insert, InsertBuilder } from './insert.js';
3
+ export { remove, DeleteBuilder } from './delete.js';
4
+ export { upsert, UpsertBuilder } from './upsert.js';
5
+ export type { WriteState, WriteVerb, ReturningShape } from './state.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/write/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,10 @@
1
+ // Re-exports the pipework-owned write surface. Wired into the `pipe` namespace
2
+ // in src/data/db/namespace.ts as `pipe.update / pipe.insert / pipe.delete /
3
+ // pipe.upsert` — the only consumer-facing way to mutate pipework-managed
4
+ // tables (Q8). The raw-write lint rule (#47) enforces that callers don't
5
+ // reach past this surface into drizzle directly.
6
+ export { update, UpdateBuilder } from './update.js';
7
+ export { insert, InsertBuilder } from './insert.js';
8
+ export { remove, DeleteBuilder } from './delete.js';
9
+ export { upsert, UpsertBuilder } from './upsert.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/write/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4EAA4E;AAC5E,yEAAyE;AACzE,yEAAyE;AACzE,iDAAiD;AAEjD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,18 @@
1
+ import type { PgTable } from '../query/pg-core/index.js';
2
+ import type { DefinedTable, FieldRecord } from '../domain/types.js';
3
+ import type { WriteState } from './state.js';
4
+ type InsertValues<T extends PgTable> = T extends {
5
+ $inferInsert: infer V;
6
+ } ? V : Record<string, any>;
7
+ export declare class InsertBuilder<T extends PgTable, TResult = unknown> implements PromiseLike<TResult> {
8
+ private readonly state;
9
+ constructor(state: WriteState);
10
+ values(rows: InsertValues<T> | ReadonlyArray<InsertValues<T>>): InsertBuilder<T, TResult>;
11
+ returning(): InsertBuilder<T, Record<string, unknown>[]>;
12
+ returning<TShape extends Record<string, unknown>>(shape: TShape): InsertBuilder<T, Record<string, unknown>[]>;
13
+ then<TFulfilled = TResult, TRejected = never>(onfulfilled?: ((value: TResult) => TFulfilled | PromiseLike<TFulfilled>) | null, onrejected?: ((reason: unknown) => TRejected | PromiseLike<TRejected>) | null): PromiseLike<TFulfilled | TRejected>;
14
+ }
15
+ /** Starts a pipework-owned insert against `table`. Chain with `.values(...).returning(...)`. */
16
+ export declare function insert<T extends DefinedTable<FieldRecord> & PgTable>(table: T): InsertBuilder<T, any>;
17
+ export {};
18
+ //# sourceMappingURL=insert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../src/data/write/insert.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAI5C,KAAK,YAAY,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS;IAAE,YAAY,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEpG,qBAAa,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,GAAG,OAAO,CAAE,YAAW,WAAW,CAAC,OAAO,CAAC;IAClF,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,UAAU;IAE9C,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC;IAQzF,SAAS,IAAI,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACxD,SAAS,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAM7G,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,SAAS,GAAG,KAAK,EAC1C,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,EAC/E,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,GAC5E,WAAW,CAAC,UAAU,GAAG,SAAS,CAAC;CAGvC;AAED,gGAAgG;AAEhG,wBAAgB,MAAM,CAAC,CAAC,SAAS,YAAY,CAAC,WAAW,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAErG"}
@@ -0,0 +1,29 @@
1
+ // `pipe.insert(table)` — the pipework-owned insert builder. Same intent-based
2
+ // design as UpdateBuilder; see update.ts for the rationale.
3
+ import { executeWrite } from './execute.js';
4
+ export class InsertBuilder {
5
+ state;
6
+ constructor(state) {
7
+ this.state = state;
8
+ }
9
+ values(rows) {
10
+ const normalized = Array.isArray(rows) ? rows : [rows];
11
+ return new InsertBuilder({
12
+ ...this.state,
13
+ values: normalized,
14
+ });
15
+ }
16
+ returning(shape) {
17
+ const returning = shape === undefined ? 'all' : shape;
18
+ return new InsertBuilder({ ...this.state, returning });
19
+ }
20
+ then(onfulfilled, onrejected) {
21
+ return executeWrite(this.state).then(onfulfilled, onrejected);
22
+ }
23
+ }
24
+ /** Starts a pipework-owned insert against `table`. Chain with `.values(...).returning(...)`. */
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ export function insert(table) {
27
+ return new InsertBuilder({ verb: 'insert', table });
28
+ }
29
+ //# sourceMappingURL=insert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../src/data/write/insert.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4DAA4D;AAK5D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAK3C,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;IAAG,CAAC;IAElD,MAAM,CAAC,IAAsD;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACtD,OAAO,IAAI,aAAa,CAAa;YACnC,GAAG,IAAI,CAAC,KAAK;YACb,MAAM,EAAE,UAAoD;SAC7D,CAAC,CAAA;IACJ,CAAC;IAID,SAAS,CAAC,KAA+B;QACvC,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAc,CAAC,CAAC,CAAC,KAAK,CAAA;QAC9D,OAAO,IAAI,aAAa,CAA+B,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IACtF,CAAC;IAED,IAAI,CACF,WAA+E,EAC/E,UAA6E;QAE7E,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAA6C,EAAE,UAAU,CAAwC,CAAA;IACxI,CAAC;CACF;AAED,gGAAgG;AAChG,8DAA8D;AAC9D,MAAM,UAAU,MAAM,CAAgD,KAAQ;IAC5E,OAAO,IAAI,aAAa,CAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;AACjE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { SQL } from '../db/types.js';
2
+ import type { DefinedTable, FieldRecord } from '../domain/types.js';
3
+ export type WriteVerb = 'insert' | 'update' | 'delete' | 'upsert';
4
+ /**
5
+ * What the caller asked the write to return.
6
+ *
7
+ * - `null` (default) — no `RETURNING` clause; the executor resolves to `void`.
8
+ * - `'all'` — `RETURNING *`; the executor resolves to every column on the row.
9
+ * - `Record<string, unknown>` — a per-field projection, as accepted by
10
+ * drizzle's `.returning(...)` (column references, sql expressions, etc.).
11
+ */
12
+ export type ReturningShape = Record<string, unknown> | 'all' | null;
13
+ export interface WriteState {
14
+ readonly verb: WriteVerb;
15
+ readonly table: DefinedTable<any>;
16
+ /** `set` clause for `update` / `upsert`. */
17
+ readonly set?: Record<string, unknown>;
18
+ /** Row values for `insert` / `upsert`. */
19
+ readonly values?: ReadonlyArray<Record<string, unknown>>;
20
+ /** `where` clause for `update` / `delete`. */
21
+ readonly where?: SQL;
22
+ /** Conflict-target columns for `upsert`. */
23
+ readonly onConflictColumns?: readonly string[];
24
+ /** What `RETURNING` should produce. `null` (default) emits no RETURNING. */
25
+ readonly returning?: ReturningShape;
26
+ }
27
+ /** Carrier type used by the builders' chain methods to mutate `WriteState` immutably. */
28
+ export type FieldRecordTable = DefinedTable<FieldRecord>;
29
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/data/write/state.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEnE,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEjE;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,GAAG,IAAI,CAAA;AAEnE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IAExB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAA;IACjC,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACxD,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAA;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9C,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAA;CACpC;AAED,yFAAyF;AACzF,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ // The intent of a pending write — the data shape every write builder hands to
2
+ // the executor. Today (#44) the executor compiles it to vanilla DML through
3
+ // drizzle. The CTE generator (#45) reads the same shape to compile to a single
4
+ // statement with `before` / `updated` / `diffs` / `audit_inserts` CTEs when an
5
+ // active flow_step carries `@touches`. Keeping the intent on a plain data
6
+ // object — never on the builder's drizzle handle — is what makes both paths
7
+ // produce the same observable behavior.
8
+ export {};
9
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/data/write/state.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,0EAA0E;AAC1E,4EAA4E;AAC5E,wCAAwC"}
@@ -0,0 +1,17 @@
1
+ import type { PgTable } from '../query/pg-core/index.js';
2
+ import type { PgUpdateSetSource } from '../query/pg-core/query-builders/update.js';
3
+ import type { SQL } from '../db/types.js';
4
+ import type { DefinedTable, FieldRecord } from '../domain/types.js';
5
+ import type { WriteState } from './state.js';
6
+ export declare class UpdateBuilder<T extends PgTable, TResult = unknown> implements PromiseLike<TResult> {
7
+ private readonly state;
8
+ constructor(state: WriteState);
9
+ set(values: PgUpdateSetSource<T>): UpdateBuilder<T, TResult>;
10
+ where(condition: SQL): UpdateBuilder<T, TResult>;
11
+ returning(): UpdateBuilder<T, Record<string, unknown>[]>;
12
+ returning<TShape extends Record<string, unknown>>(shape: TShape): UpdateBuilder<T, Record<string, unknown>[]>;
13
+ then<TFulfilled = TResult, TRejected = never>(onfulfilled?: ((value: TResult) => TFulfilled | PromiseLike<TFulfilled>) | null, onrejected?: ((reason: unknown) => TRejected | PromiseLike<TRejected>) | null): PromiseLike<TFulfilled | TRejected>;
14
+ }
15
+ /** Starts a pipework-owned update against `table`. Chain with `.set(...).where(...).returning(...)`. */
16
+ export declare function update<T extends DefinedTable<FieldRecord> & PgTable>(table: T): UpdateBuilder<T, any>;
17
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/data/write/update.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAA;AAClF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,qBAAa,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,GAAG,OAAO,CAAE,YAAW,WAAW,CAAC,OAAO,CAAC;IAClF,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,UAAU;IAE9C,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC;IAI5D,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC;IAIhD,SAAS,IAAI,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACxD,SAAS,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAM7G,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,SAAS,GAAG,KAAK,EAC1C,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,EAC/E,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,GAC5E,WAAW,CAAC,UAAU,GAAG,SAAS,CAAC;CAGvC;AAED,wGAAwG;AAExG,wBAAgB,MAAM,CAAC,CAAC,SAAS,YAAY,CAAC,WAAW,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAErG"}
@@ -0,0 +1,39 @@
1
+ // `pipe.update(table)` — the pipework-owned update builder. Mirrors drizzle's
2
+ // `db.update(table).set(...).where(...).returning(...)` API, but the chain
3
+ // returns a builder that holds the intent as `WriteState` (see state.ts)
4
+ // rather than a drizzle handle. That separation is what lets the CTE generator
5
+ // (#45) intercept at execute time: it reads the same intent and compiles to a
6
+ // single statement with `before` / `updated` / `diffs` / `audit_inserts` CTEs
7
+ // when the active flow_step carries `@touches`. Without `@touches`, the
8
+ // executor takes the vanilla-DML branch and the call behaves exactly like
9
+ // drizzle's update would.
10
+ //
11
+ // The builder is `PromiseLike`: awaiting it runs the execute step. Before /
12
+ // after capture is a side channel onto trace_step / audit_record (Q8) — it
13
+ // never appears in the awaited shape.
14
+ import { executeWrite } from './execute.js';
15
+ export class UpdateBuilder {
16
+ state;
17
+ constructor(state) {
18
+ this.state = state;
19
+ }
20
+ set(values) {
21
+ return new UpdateBuilder({ ...this.state, set: values });
22
+ }
23
+ where(condition) {
24
+ return new UpdateBuilder({ ...this.state, where: condition });
25
+ }
26
+ returning(shape) {
27
+ const returning = shape === undefined ? 'all' : shape;
28
+ return new UpdateBuilder({ ...this.state, returning });
29
+ }
30
+ then(onfulfilled, onrejected) {
31
+ return executeWrite(this.state).then(onfulfilled, onrejected);
32
+ }
33
+ }
34
+ /** Starts a pipework-owned update against `table`. Chain with `.set(...).where(...).returning(...)`. */
35
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- DefinedTable's field generics are unused by the builder; PgTable is the surface drizzle's set/returning need
36
+ export function update(table) {
37
+ return new UpdateBuilder({ verb: 'update', table });
38
+ }
39
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/data/write/update.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,yEAAyE;AACzE,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,0EAA0E;AAC1E,0BAA0B;AAC1B,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,sCAAsC;AAOtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;IAAG,CAAC;IAElD,GAAG,CAAC,MAA4B;QAC9B,OAAO,IAAI,aAAa,CAAa,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,MAAiC,EAAE,CAAC,CAAA;IACjG,CAAC;IAED,KAAK,CAAC,SAAc;QAClB,OAAO,IAAI,aAAa,CAAa,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IAC3E,CAAC;IAID,SAAS,CAAC,KAA+B;QACvC,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAc,CAAC,CAAC,CAAC,KAAK,CAAA;QAC9D,OAAO,IAAI,aAAa,CAA+B,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IACtF,CAAC;IAED,IAAI,CACF,WAA+E,EAC/E,UAA6E;QAE7E,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAA6C,EAAE,UAAU,CAAwC,CAAA;IACxI,CAAC;CACF;AAED,wGAAwG;AACxG,8KAA8K;AAC9K,MAAM,UAAU,MAAM,CAAgD,KAAQ;IAC5E,OAAO,IAAI,aAAa,CAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;AACjE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { PgTable } from '../query/pg-core/index.js';
2
+ import type { PgUpdateSetSource } from '../query/pg-core/query-builders/update.js';
3
+ import type { DefinedTable, FieldRecord } from '../domain/types.js';
4
+ import type { WriteState } from './state.js';
5
+ type InsertValues<T extends PgTable> = T extends {
6
+ $inferInsert: infer V;
7
+ } ? V : Record<string, any>;
8
+ export declare class UpsertBuilder<T extends PgTable, TResult = unknown> implements PromiseLike<TResult> {
9
+ private readonly state;
10
+ constructor(state: WriteState);
11
+ values(rows: InsertValues<T> | ReadonlyArray<InsertValues<T>>): UpsertBuilder<T, TResult>;
12
+ onConflict(columns: readonly (keyof T['$inferSelect'] & string)[]): UpsertBuilder<T, TResult>;
13
+ set(values: PgUpdateSetSource<T>): UpsertBuilder<T, TResult>;
14
+ returning(): UpsertBuilder<T, Record<string, unknown>[]>;
15
+ returning<TShape extends Record<string, unknown>>(shape: TShape): UpsertBuilder<T, Record<string, unknown>[]>;
16
+ then<TFulfilled = TResult, TRejected = never>(onfulfilled?: ((value: TResult) => TFulfilled | PromiseLike<TFulfilled>) | null, onrejected?: ((reason: unknown) => TRejected | PromiseLike<TRejected>) | null): PromiseLike<TFulfilled | TRejected>;
17
+ }
18
+ /** Starts a pipework-owned upsert against `table`. Chain with `.values(...).onConflict([...]).set(...).returning(...)`. */
19
+ export declare function upsert<T extends DefinedTable<FieldRecord> & PgTable>(table: T): UpsertBuilder<T, any>;
20
+ export {};
21
+ //# sourceMappingURL=upsert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../../../src/data/write/upsert.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAA;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAI5C,KAAK,YAAY,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS;IAAE,YAAY,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEpG,qBAAa,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,GAAG,OAAO,CAAE,YAAW,WAAW,CAAC,OAAO,CAAC;IAClF,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,UAAU;IAE9C,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC;IAQzF,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC;IAO7F,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC;IAI5D,SAAS,IAAI,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACxD,SAAS,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAM7G,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,SAAS,GAAG,KAAK,EAC1C,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,EAC/E,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,GAC5E,WAAW,CAAC,UAAU,GAAG,SAAS,CAAC;CAGvC;AAED,2HAA2H;AAE3H,wBAAgB,MAAM,CAAC,CAAC,SAAS,YAAY,CAAC,WAAW,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAErG"}
@@ -0,0 +1,42 @@
1
+ // `pipe.upsert(table)` — the pipework-owned upsert builder. Insert with a
2
+ // conflict target; if `.set(...)` is provided, conflict rows are updated to
3
+ // those values, otherwise the conflict is silently ignored (DO NOTHING).
4
+ //
5
+ // Same intent-based design as the other write builders — see update.ts for
6
+ // the CTE-vs-vanilla rationale.
7
+ import { executeWrite } from './execute.js';
8
+ export class UpsertBuilder {
9
+ state;
10
+ constructor(state) {
11
+ this.state = state;
12
+ }
13
+ values(rows) {
14
+ const normalized = Array.isArray(rows) ? rows : [rows];
15
+ return new UpsertBuilder({
16
+ ...this.state,
17
+ values: normalized,
18
+ });
19
+ }
20
+ onConflict(columns) {
21
+ return new UpsertBuilder({
22
+ ...this.state,
23
+ onConflictColumns: columns,
24
+ });
25
+ }
26
+ set(values) {
27
+ return new UpsertBuilder({ ...this.state, set: values });
28
+ }
29
+ returning(shape) {
30
+ const returning = shape === undefined ? 'all' : shape;
31
+ return new UpsertBuilder({ ...this.state, returning });
32
+ }
33
+ then(onfulfilled, onrejected) {
34
+ return executeWrite(this.state).then(onfulfilled, onrejected);
35
+ }
36
+ }
37
+ /** Starts a pipework-owned upsert against `table`. Chain with `.values(...).onConflict([...]).set(...).returning(...)`. */
38
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+ export function upsert(table) {
40
+ return new UpsertBuilder({ verb: 'upsert', table });
41
+ }
42
+ //# sourceMappingURL=upsert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../../src/data/write/upsert.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,4EAA4E;AAC5E,yEAAyE;AACzE,EAAE;AACF,2EAA2E;AAC3E,gCAAgC;AAMhC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAK3C,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;IAAG,CAAC;IAElD,MAAM,CAAC,IAAsD;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACtD,OAAO,IAAI,aAAa,CAAa;YACnC,GAAG,IAAI,CAAC,KAAK;YACb,MAAM,EAAE,UAAoD;SAC7D,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,CAAC,OAAsD;QAC/D,OAAO,IAAI,aAAa,CAAa;YACnC,GAAG,IAAI,CAAC,KAAK;YACb,iBAAiB,EAAE,OAA4B;SAChD,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,MAA4B;QAC9B,OAAO,IAAI,aAAa,CAAa,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,MAAiC,EAAE,CAAC,CAAA;IACjG,CAAC;IAID,SAAS,CAAC,KAA+B;QACvC,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAc,CAAC,CAAC,CAAC,KAAK,CAAA;QAC9D,OAAO,IAAI,aAAa,CAA+B,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IACtF,CAAC;IAED,IAAI,CACF,WAA+E,EAC/E,UAA6E;QAE7E,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAA6C,EAAE,UAAU,CAAwC,CAAA;IACxI,CAAC;CACF;AAED,2HAA2H;AAC3H,8DAA8D;AAC9D,MAAM,UAAU,MAAM,CAAgD,KAAQ;IAC5E,OAAO,IAAI,aAAa,CAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;AACjE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -30,6 +30,7 @@ export { rbac } from './auth/rbac/namespace.js';
30
30
  export type { RbacConfig, Rbac, PermissionSet, ResolvedPermission, Scope, SeedData, SeedPermission, SeedRole, SeedRolePermission, SeedUserRole } from './auth/rbac/index.js';
31
31
  export { audit } from './infra/audit/namespace.js';
32
32
  export type { AuditConfig, AuditEmitOptions, Audit } from './infra/audit/index.js';
33
+ export type { AuditQueryFilters, AuditQueryOptions, AuditQueryResult, AuditRecordRow, AuditCursor } from './audit/query/index.js';
33
34
  export { jobs } from './async/jobs/namespace.js';
34
35
  export type { Queue, QueueConfig, EnqueueOptions, ClaimedJob, JobResult, BackoffConfig, WaitOptions, WaitResult, ListenClient, ListenHandle, CronSchedule, ScheduleSpec, ScheduleInfo, SchedulerOptions } from './async/jobs/index.js';
35
36
  export { cache } from './infra/cache/namespace.js';
@@ -65,4 +66,6 @@ export type { ResolvedConfig, ResolvedDatabase, ResolvedObservability, Blueprint
65
66
  export { ConfigError } from './core/config/index.js';
66
67
  export { log } from './core/logging/namespace.js';
67
68
  export type { LoggerConfig, LogLevel, PipeworkLogger, LoggingConfig, ContextField } from './core/logging/index.js';
69
+ export { __flowStep } from './trace/runtime/flow-step.js';
70
+ export type { FlowStepMeta } from './trace/runtime/step-meta.js';
68
71
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -28,4 +28,5 @@ export { PipeworkError, NotFoundError, UnauthorizedError, ForbiddenError, Valida
28
28
  export { config } from './core/config/namespace.js';
29
29
  export { ConfigError } from './core/config/index.js';
30
30
  export { log } from './core/logging/namespace.js';
31
+ export { __flowStep } from './trace/runtime/flow-step.js';
31
32
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAW/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAIxD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAOlD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAQ/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAI/C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AAKhD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAIlD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAKxD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAIxD,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAI1D,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAI1D,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGhE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAKtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAMrD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EACtE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAW/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAIxD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAOlD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAQ/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAI/C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAKlD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AAKhD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAIlD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAKxD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAIxD,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAI1D,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAI1D,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGhE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAKtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAMrD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EACtE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA"}
@@ -1,7 +1,10 @@
1
1
  import { createAudit } from './index.js';
2
+ import { query } from '../../audit/query/index.js';
2
3
  /** Audit logging namespace — structured audit trail for data changes. */
3
4
  export declare const audit: {
4
5
  /** Creates an Audit instance that writes audit records to a Postgres table. */
5
6
  create: typeof createAudit;
7
+ /** Queries the framework-managed `audit_record` table. Tenant-scoped via the active Flow. */
8
+ query: typeof query;
6
9
  };
7
10
  //# sourceMappingURL=namespace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/infra/audit/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,yEAAyE;AACzE,eAAO,MAAM,KAAK;IAChB,+EAA+E;;CAEhF,CAAA"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/infra/audit/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,yEAAyE;AACzE,eAAO,MAAM,KAAK;IAChB,+EAA+E;;IAE/E,6FAA6F;;CAE9F,CAAA"}
@@ -1,7 +1,10 @@
1
1
  import { createAudit } from './index.js';
2
+ import { query } from '../../audit/query/index.js';
2
3
  /** Audit logging namespace — structured audit trail for data changes. */
3
4
  export const audit = {
4
5
  /** Creates an Audit instance that writes audit records to a Postgres table. */
5
6
  create: createAudit,
7
+ /** Queries the framework-managed `audit_record` table. Tenant-scoped via the active Flow. */
8
+ query,
6
9
  };
7
10
  //# sourceMappingURL=namespace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/infra/audit/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,yEAAyE;AACzE,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,+EAA+E;IAC/E,MAAM,EAAE,WAAW;CACpB,CAAA"}
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/infra/audit/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,yEAAyE;AACzE,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,+EAA+E;IAC/E,MAAM,EAAE,WAAW;IACnB,6FAA6F;IAC7F,KAAK;CACN,CAAA"}
@@ -10,11 +10,13 @@ export declare const rules: {
10
10
  readonly '@typescript-eslint/strict-boolean-expressions': "error";
11
11
  readonly 'pipework/no-reexports': "error";
12
12
  };
13
- export interface LintConfig {
13
+ export interface LintOptions {
14
14
  readonly tsconfigRootDir?: string;
15
15
  readonly include?: readonly string[];
16
16
  readonly ignores?: readonly string[];
17
17
  readonly extraRules?: Readonly<Record<string, unknown>>;
18
+ readonly extraPlugins?: Readonly<Record<string, unknown>>;
19
+ readonly extraConfigs?: readonly unknown[];
18
20
  }
19
- export declare function createLintConfig(config?: LintConfig): unknown[];
21
+ export declare function createLintConfig(config?: LintOptions): unknown[];
20
22
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lint/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK;;;;;;;;;;;CASR,CAAA;AAEV,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACxD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,EAAE,CA0B/D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lint/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK;;;;;;;;;;;CASR,CAAA;AAEV,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;CAC3C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,EAAE,CA+BhE"}
@@ -18,22 +18,26 @@ export function createLintConfig(config) {
18
18
  parserOptions['tsconfigRootDir'] = config.tsconfigRootDir;
19
19
  }
20
20
  const appliedRules = { ...rules, ...config?.extraRules };
21
- return [
21
+ const appliedPlugins = {
22
+ '@typescript-eslint': tseslint,
23
+ 'pipework': { rules: { 'no-reexports': noReexports } },
24
+ ...config?.extraPlugins,
25
+ };
26
+ const blocks = [
22
27
  {
23
28
  files: [...files],
24
29
  languageOptions: {
25
30
  parser: tsparser,
26
31
  parserOptions,
27
32
  },
28
- plugins: {
29
- '@typescript-eslint': tseslint,
30
- 'pipework': { rules: { 'no-reexports': noReexports } },
31
- },
33
+ plugins: appliedPlugins,
32
34
  rules: appliedRules,
33
35
  },
36
+ ...(config?.extraConfigs ?? []),
34
37
  {
35
38
  ignores: ['dist/', 'node_modules/', ...(config?.ignores ?? [])],
36
39
  },
37
40
  ];
41
+ return blocks;
38
42
  }
39
43
  //# sourceMappingURL=config.js.map