pipework 0.252.0 → 0.252.1

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 (690) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/package.json +4 -3
  3. package/src/async/jobs/abortable-delay.ts +18 -0
  4. package/src/async/jobs/claims.ts +52 -0
  5. package/src/async/jobs/cron.ts +179 -0
  6. package/src/async/jobs/errors.ts +56 -0
  7. package/src/async/jobs/exclusion.ts +117 -0
  8. package/src/async/jobs/execute.ts +219 -0
  9. package/src/async/jobs/index.ts +10 -0
  10. package/src/async/jobs/listener.ts +135 -0
  11. package/src/async/jobs/namespace.ts +20 -0
  12. package/src/async/jobs/queue-door.ts +44 -0
  13. package/src/async/jobs/queue.ts +1012 -0
  14. package/src/async/jobs/run-script.ts +67 -0
  15. package/src/async/jobs/scheduler.ts +218 -0
  16. package/src/async/jobs/schedules-table.ts +37 -0
  17. package/src/async/jobs/serialize-error.ts +48 -0
  18. package/src/async/jobs/table.ts +191 -0
  19. package/src/async/pipeline/define.ts +53 -0
  20. package/src/async/pipeline/errors.ts +35 -0
  21. package/src/async/pipeline/execute.ts +53 -0
  22. package/src/async/pipeline/index.ts +13 -0
  23. package/src/async/pipeline/namespace.ts +12 -0
  24. package/src/async/pipeline/resume.ts +67 -0
  25. package/src/async/pipeline/run-steps.ts +98 -0
  26. package/src/async/pipeline/types.ts +57 -0
  27. package/src/async/state-machine/define.ts +64 -0
  28. package/src/async/state-machine/errors.ts +29 -0
  29. package/src/async/state-machine/index.ts +3 -0
  30. package/src/async/state-machine/namespace.ts +12 -0
  31. package/src/async/state-machine/transition.ts +90 -0
  32. package/src/async/state-machine/types.ts +37 -0
  33. package/src/async/steps/errors.ts +31 -0
  34. package/src/async/steps/graph.ts +1214 -0
  35. package/src/async/steps/hash.ts +40 -0
  36. package/src/async/steps/index.ts +7 -0
  37. package/src/async/steps/namespace.ts +7 -0
  38. package/src/async/steps/table.ts +97 -0
  39. package/src/async/steps/types.ts +318 -0
  40. package/src/audit/chain/index.ts +9 -0
  41. package/src/audit/chain/install.ts +113 -0
  42. package/src/audit/chain/retire.ts +52 -0
  43. package/src/audit/chain/verify.ts +257 -0
  44. package/src/audit/query/cursor.ts +37 -0
  45. package/src/audit/query/index.ts +9 -0
  46. package/src/audit/query/query.ts +223 -0
  47. package/src/audit/schema/audit-record-fields.ts +68 -0
  48. package/src/audit/schema/audit-record.ts +23 -0
  49. package/src/auth/auth/audit.ts +31 -0
  50. package/src/auth/auth/chain.ts +84 -0
  51. package/src/auth/auth/cookie.ts +136 -0
  52. package/src/auth/auth/email-links.ts +311 -0
  53. package/src/auth/auth/guard.ts +128 -0
  54. package/src/auth/auth/index.ts +18 -0
  55. package/src/auth/auth/multi-org.ts +337 -0
  56. package/src/auth/auth/namespace.ts +34 -0
  57. package/src/auth/auth/parse-expiry.ts +13 -0
  58. package/src/auth/auth/passwords.ts +110 -0
  59. package/src/auth/auth/schema.ts +110 -0
  60. package/src/auth/auth/sessions.ts +565 -0
  61. package/src/auth/auth/sign-in.ts +156 -0
  62. package/src/auth/auth/signing-keys.ts +69 -0
  63. package/src/auth/auth/types.ts +26 -0
  64. package/src/auth/auth/uuid.ts +10 -0
  65. package/src/auth/rbac/cache.ts +55 -0
  66. package/src/auth/rbac/check.ts +30 -0
  67. package/src/auth/rbac/create.ts +35 -0
  68. package/src/auth/rbac/index.ts +5 -0
  69. package/src/auth/rbac/middleware.ts +20 -0
  70. package/src/auth/rbac/namespace.ts +15 -0
  71. package/src/auth/rbac/resolve.ts +31 -0
  72. package/src/auth/rbac/schema.sql +31 -0
  73. package/src/auth/rbac/seed.ts +67 -0
  74. package/src/auth/rbac/tables.ts +32 -0
  75. package/src/auth/rbac/types.ts +65 -0
  76. package/src/auth/tenant/extract.ts +33 -0
  77. package/src/auth/tenant/in-tenant.ts +49 -0
  78. package/src/auth/tenant/index.ts +7 -0
  79. package/src/auth/tenant/namespace.ts +23 -0
  80. package/src/auth/tenant/propagate.ts +20 -0
  81. package/src/auth/tenant/rls.ts +120 -0
  82. package/src/auth/tenant/scope.ts +33 -0
  83. package/src/auth/tenant/scoped-db.ts +581 -0
  84. package/src/auth/tenant/types.ts +14 -0
  85. package/src/auth/tenant/validate.ts +27 -0
  86. package/src/cli/commands/add.ts +158 -0
  87. package/src/cli/commands/alerts.ts +98 -0
  88. package/src/cli/commands/check.ts +1418 -0
  89. package/src/cli/commands/codemod.ts +78 -0
  90. package/src/cli/commands/db.ts +356 -0
  91. package/src/cli/commands/dev.ts +101 -0
  92. package/src/cli/commands/generate.ts +75 -0
  93. package/src/cli/commands/init.ts +36 -0
  94. package/src/cli/commands/install.ts +28 -0
  95. package/src/cli/commands/lint.ts +62 -0
  96. package/src/cli/commands/migrate.ts +132 -0
  97. package/src/cli/commands/openapi.ts +63 -0
  98. package/src/cli/commands/remove.ts +72 -0
  99. package/src/cli/commands/run.ts +50 -0
  100. package/src/cli/commands/scope.ts +54 -0
  101. package/src/cli/commands/serve.ts +68 -0
  102. package/src/cli/commands/shard.ts +31 -0
  103. package/src/cli/commands/shared/config-pipework-version.ts +28 -0
  104. package/src/cli/commands/shared/find-config.ts +22 -0
  105. package/src/cli/commands/shared/load-config.ts +35 -0
  106. package/src/cli/commands/shared/pnpm-install.ts +95 -0
  107. package/src/cli/commands/shared/report-removed.ts +8 -0
  108. package/src/cli/commands/sync.ts +32 -0
  109. package/src/cli/commands/test.ts +307 -0
  110. package/src/cli/commands/upgrade.ts +48 -0
  111. package/src/cli/dev-bootstrap.ts +24 -0
  112. package/src/cli/errors.ts +10 -0
  113. package/src/cli/index.ts +303 -0
  114. package/src/cli/output.ts +17 -0
  115. package/src/cli/port.ts +15 -0
  116. package/src/cli/surface-kinds.ts +20 -0
  117. package/src/client/index.ts +4 -0
  118. package/src/client/poll.ts +130 -0
  119. package/src/client/report-fault.ts +119 -0
  120. package/src/core/config/app-pool.ts +19 -0
  121. package/src/core/config/aws-env.ts +29 -0
  122. package/src/core/config/base-dir.ts +24 -0
  123. package/src/core/config/discover.ts +64 -0
  124. package/src/core/config/env-resolve.ts +87 -0
  125. package/src/core/config/env-types.ts +116 -0
  126. package/src/core/config/env.ts +55 -0
  127. package/src/core/config/errors.ts +9 -0
  128. package/src/core/config/import-config.ts +40 -0
  129. package/src/core/config/index.ts +8 -0
  130. package/src/core/config/load.ts +417 -0
  131. package/src/core/config/namespace.ts +14 -0
  132. package/src/core/config/resolve.ts +195 -0
  133. package/src/core/config/schema.ts +488 -0
  134. package/src/core/config/statement-observer.ts +48 -0
  135. package/src/core/config/ts-inline-hooks.ts +75 -0
  136. package/src/core/config/ts-register.ts +4 -0
  137. package/src/core/config/ts-resolve-hooks.ts +101 -0
  138. package/src/core/errors/base.ts +49 -0
  139. package/src/core/errors/http.ts +146 -0
  140. package/src/core/errors/index.ts +2 -0
  141. package/src/core/errors/namespace.ts +31 -0
  142. package/src/core/lifecycle/drain.ts +33 -0
  143. package/src/core/lifecycle/health.ts +72 -0
  144. package/src/core/lifecycle/index.ts +4 -0
  145. package/src/core/lifecycle/namespace.ts +7 -0
  146. package/src/core/lifecycle/startup.ts +102 -0
  147. package/src/core/lifecycle/types.ts +36 -0
  148. package/src/core/logging/context.ts +60 -0
  149. package/src/core/logging/error-chain.ts +68 -0
  150. package/src/core/logging/index.ts +5 -0
  151. package/src/core/logging/logger.ts +65 -0
  152. package/src/core/logging/namespace.ts +16 -0
  153. package/src/core/logging/proxy.ts +22 -0
  154. package/src/core/logging/redact-match.ts +24 -0
  155. package/src/core/logging/types.ts +47 -0
  156. package/src/core/pipework.ts +566 -0
  157. package/src/core/runtime/broker.ts +69 -0
  158. package/src/core/surface/http.ts +133 -0
  159. package/src/core/surface/index.ts +11 -0
  160. package/src/core/surface/job-timeout.ts +40 -0
  161. package/src/core/surface/namespace.ts +13 -0
  162. package/src/core/surface/script.ts +33 -0
  163. package/src/core/surface/start.ts +142 -0
  164. package/src/core/surface/types.ts +225 -0
  165. package/src/core/surface/validate.ts +88 -0
  166. package/src/core/surface/worker.ts +528 -0
  167. package/src/core/validation/connectivity.ts +49 -0
  168. package/src/core/validation/domain.ts +99 -0
  169. package/src/core/validation/index.ts +5 -0
  170. package/src/core/validation/queue-tables.ts +312 -0
  171. package/src/core/validation/rls-role.ts +138 -0
  172. package/src/core/validation/startup.ts +51 -0
  173. package/src/core/validation/surfaces.ts +65 -0
  174. package/src/core/validation/types.ts +25 -0
  175. package/src/data/db/advisory-lock.ts +55 -0
  176. package/src/data/db/aggregates.ts +172 -0
  177. package/src/data/db/array-elements.ts +111 -0
  178. package/src/data/db/bulk-set.ts +53 -0
  179. package/src/data/db/col/index.ts +14 -0
  180. package/src/data/db/composed.ts +53 -0
  181. package/src/data/db/db.ts +276 -0
  182. package/src/data/db/excluded.ts +16 -0
  183. package/src/data/db/expressions.ts +473 -0
  184. package/src/data/db/filter.ts +90 -0
  185. package/src/data/db/function-source.ts +114 -0
  186. package/src/data/db/identifiers.ts +16 -0
  187. package/src/data/db/idx/index.ts +9 -0
  188. package/src/data/db/in-list.ts +49 -0
  189. package/src/data/db/index.ts +9 -0
  190. package/src/data/db/insert-split.ts +137 -0
  191. package/src/data/db/instrumentation.ts +82 -0
  192. package/src/data/db/maintenance.ts +28 -0
  193. package/src/data/db/namespace.ts +107 -0
  194. package/src/data/db/owner-labels.ts +9 -0
  195. package/src/data/db/pool.ts +187 -0
  196. package/src/data/db/query-label.ts +13 -0
  197. package/src/data/db/query-watch.ts +116 -0
  198. package/src/data/db/raw-client-warning.ts +37 -0
  199. package/src/data/db/readonly.ts +23 -0
  200. package/src/data/db/reservation.ts +151 -0
  201. package/src/data/db/schema-features.ts +14 -0
  202. package/src/data/db/serializable.ts +83 -0
  203. package/src/data/db/sql.ts +1 -0
  204. package/src/data/db/timeouts.ts +76 -0
  205. package/src/data/db/types.ts +18 -0
  206. package/src/data/db/unbound.ts +33 -0
  207. package/src/data/db/values.ts +29 -0
  208. package/src/data/domain/brand.ts +15 -0
  209. package/src/data/domain/build-factory.ts +193 -0
  210. package/src/data/domain/build-schema.ts +161 -0
  211. package/src/data/domain/build-table.ts +355 -0
  212. package/src/data/domain/define.ts +239 -0
  213. package/src/data/domain/external-registry.ts +34 -0
  214. package/src/data/domain/external.ts +77 -0
  215. package/src/data/domain/field.ts +279 -0
  216. package/src/data/domain/index.ts +13 -0
  217. package/src/data/domain/naming.ts +6 -0
  218. package/src/data/domain/projections.ts +57 -0
  219. package/src/data/domain/trace-safe-projection.ts +31 -0
  220. package/src/data/domain/traits.ts +108 -0
  221. package/src/data/domain/types.ts +289 -0
  222. package/src/data/jsonb/composed.ts +18 -0
  223. package/src/data/jsonb/index.ts +1 -0
  224. package/src/data/jsonb/namespace.ts +30 -0
  225. package/src/data/jsonb/query.ts +86 -0
  226. package/src/data/migrate/append-only-generate.ts +47 -0
  227. package/src/data/migrate/applied.ts +47 -0
  228. package/src/data/migrate/apply.ts +309 -0
  229. package/src/data/migrate/check.ts +119 -0
  230. package/src/data/migrate/diff.ts +357 -0
  231. package/src/data/migrate/door-generate.ts +130 -0
  232. package/src/data/migrate/framework-rls.ts +58 -0
  233. package/src/data/migrate/generate.ts +201 -0
  234. package/src/data/migrate/history.ts +215 -0
  235. package/src/data/migrate/index.ts +9 -0
  236. package/src/data/migrate/internal-definitions.ts +175 -0
  237. package/src/data/migrate/post-process.ts +73 -0
  238. package/src/data/migrate/pragma.ts +73 -0
  239. package/src/data/migrate/provision-framework.ts +147 -0
  240. package/src/data/migrate/rls-generate.ts +61 -0
  241. package/src/data/migrate/run.ts +124 -0
  242. package/src/data/migrate/safety.ts +167 -0
  243. package/src/data/migrate/snapshot.ts +368 -0
  244. package/src/data/migrate/sql-emit.ts +392 -0
  245. package/src/data/migrate/statements.ts +312 -0
  246. package/src/data/query/alias.ts +126 -0
  247. package/src/data/query/batch.ts +8 -0
  248. package/src/data/query/cache/core/cache.ts +78 -0
  249. package/src/data/query/cache/core/index.ts +1 -0
  250. package/src/data/query/cache/core/types.ts +29 -0
  251. package/src/data/query/cache/readme.md +230 -0
  252. package/src/data/query/casing.ts +76 -0
  253. package/src/data/query/collation.ts +11 -0
  254. package/src/data/query/column-builder.ts +370 -0
  255. package/src/data/query/column.ts +150 -0
  256. package/src/data/query/entity.ts +42 -0
  257. package/src/data/query/errors.ts +33 -0
  258. package/src/data/query/index.ts +14 -0
  259. package/src/data/query/logger.ts +47 -0
  260. package/src/data/query/operations.ts +45 -0
  261. package/src/data/query/pg-core/alias.ts +12 -0
  262. package/src/data/query/pg-core/checks.ts +32 -0
  263. package/src/data/query/pg-core/columns/all.ts +71 -0
  264. package/src/data/query/pg-core/columns/bigint.ts +110 -0
  265. package/src/data/query/pg-core/columns/bigserial.ts +128 -0
  266. package/src/data/query/pg-core/columns/boolean.ts +43 -0
  267. package/src/data/query/pg-core/columns/char.ts +85 -0
  268. package/src/data/query/pg-core/columns/cidr.ts +43 -0
  269. package/src/data/query/pg-core/columns/common.ts +366 -0
  270. package/src/data/query/pg-core/columns/custom.ts +232 -0
  271. package/src/data/query/pg-core/columns/date.common.ts +15 -0
  272. package/src/data/query/pg-core/columns/date.ts +112 -0
  273. package/src/data/query/pg-core/columns/double-precision.ts +55 -0
  274. package/src/data/query/pg-core/columns/enum.ts +201 -0
  275. package/src/data/query/pg-core/columns/index.ts +35 -0
  276. package/src/data/query/pg-core/columns/inet.ts +43 -0
  277. package/src/data/query/pg-core/columns/int.common.ts +57 -0
  278. package/src/data/query/pg-core/columns/integer.ts +53 -0
  279. package/src/data/query/pg-core/columns/interval.ts +83 -0
  280. package/src/data/query/pg-core/columns/json.ts +58 -0
  281. package/src/data/query/pg-core/columns/jsonb.ts +56 -0
  282. package/src/data/query/pg-core/columns/line.ts +117 -0
  283. package/src/data/query/pg-core/columns/macaddr.ts +43 -0
  284. package/src/data/query/pg-core/columns/macaddr8.ts +43 -0
  285. package/src/data/query/pg-core/columns/numeric.ts +227 -0
  286. package/src/data/query/pg-core/columns/point.ts +127 -0
  287. package/src/data/query/pg-core/columns/postgis_extension/geometry.ts +119 -0
  288. package/src/data/query/pg-core/columns/postgis_extension/utils.ts +47 -0
  289. package/src/data/query/pg-core/columns/real.ts +58 -0
  290. package/src/data/query/pg-core/columns/serial.ts +55 -0
  291. package/src/data/query/pg-core/columns/smallint.ts +53 -0
  292. package/src/data/query/pg-core/columns/smallserial.ts +60 -0
  293. package/src/data/query/pg-core/columns/text.ts +67 -0
  294. package/src/data/query/pg-core/columns/time.ts +72 -0
  295. package/src/data/query/pg-core/columns/timestamp.ts +163 -0
  296. package/src/data/query/pg-core/columns/uuid.ts +51 -0
  297. package/src/data/query/pg-core/columns/varchar.ts +89 -0
  298. package/src/data/query/pg-core/columns/vector_extension/bit.ts +68 -0
  299. package/src/data/query/pg-core/columns/vector_extension/halfvec.ts +80 -0
  300. package/src/data/query/pg-core/columns/vector_extension/sparsevec.ts +67 -0
  301. package/src/data/query/pg-core/columns/vector_extension/vector.ts +80 -0
  302. package/src/data/query/pg-core/db.ts +674 -0
  303. package/src/data/query/pg-core/dialect.ts +1404 -0
  304. package/src/data/query/pg-core/expressions.ts +25 -0
  305. package/src/data/query/pg-core/foreign-keys.ts +130 -0
  306. package/src/data/query/pg-core/index.ts +21 -0
  307. package/src/data/query/pg-core/indexes.ts +276 -0
  308. package/src/data/query/pg-core/policies.ts +56 -0
  309. package/src/data/query/pg-core/primary-keys.ts +62 -0
  310. package/src/data/query/pg-core/query-builders/count.ts +86 -0
  311. package/src/data/query/pg-core/query-builders/delete.ts +293 -0
  312. package/src/data/query/pg-core/query-builders/index.ts +7 -0
  313. package/src/data/query/pg-core/query-builders/insert.ts +452 -0
  314. package/src/data/query/pg-core/query-builders/query-builder.ts +123 -0
  315. package/src/data/query/pg-core/query-builders/query.ts +157 -0
  316. package/src/data/query/pg-core/query-builders/raw.ts +49 -0
  317. package/src/data/query/pg-core/query-builders/refresh-materialized-view.ts +108 -0
  318. package/src/data/query/pg-core/query-builders/select.ts +1346 -0
  319. package/src/data/query/pg-core/query-builders/select.types.ts +437 -0
  320. package/src/data/query/pg-core/query-builders/update.ts +626 -0
  321. package/src/data/query/pg-core/roles.ts +41 -0
  322. package/src/data/query/pg-core/schema.ts +72 -0
  323. package/src/data/query/pg-core/sequence.ts +41 -0
  324. package/src/data/query/pg-core/session.ts +292 -0
  325. package/src/data/query/pg-core/subquery.ts +46 -0
  326. package/src/data/query/pg-core/table.ts +252 -0
  327. package/src/data/query/pg-core/unique-constraint.ts +73 -0
  328. package/src/data/query/pg-core/utils/array.ts +95 -0
  329. package/src/data/query/pg-core/utils/index.ts +1 -0
  330. package/src/data/query/pg-core/utils.ts +104 -0
  331. package/src/data/query/pg-core/view-base.ts +14 -0
  332. package/src/data/query/pg-core/view-common.ts +1 -0
  333. package/src/data/query/pg-core/view.ts +435 -0
  334. package/src/data/query/pg-core/with-builder.ts +41 -0
  335. package/src/data/query/postgres-js/README.md +46 -0
  336. package/src/data/query/postgres-js/array-parser.ts +45 -0
  337. package/src/data/query/postgres-js/driver-error-boundary.ts +149 -0
  338. package/src/data/query/postgres-js/driver.ts +163 -0
  339. package/src/data/query/postgres-js/index.ts +2 -0
  340. package/src/data/query/postgres-js/session.ts +234 -0
  341. package/src/data/query/primary-key.ts +11 -0
  342. package/src/data/query/query-builders/query-builder.ts +19 -0
  343. package/src/data/query/query-builders/select.types.ts +175 -0
  344. package/src/data/query/query-promise.ts +35 -0
  345. package/src/data/query/relations.ts +725 -0
  346. package/src/data/query/runnable-query.ts +12 -0
  347. package/src/data/query/selection-proxy.ts +121 -0
  348. package/src/data/query/session.ts +8 -0
  349. package/src/data/query/sql/expressions/conditions.ts +741 -0
  350. package/src/data/query/sql/expressions/index.ts +2 -0
  351. package/src/data/query/sql/expressions/select.ts +45 -0
  352. package/src/data/query/sql/functions/aggregate.ts +129 -0
  353. package/src/data/query/sql/functions/index.ts +2 -0
  354. package/src/data/query/sql/functions/vector.ts +178 -0
  355. package/src/data/query/sql/index.ts +3 -0
  356. package/src/data/query/sql/sql.ts +794 -0
  357. package/src/data/query/subquery.ts +53 -0
  358. package/src/data/query/table.ts +208 -0
  359. package/src/data/query/table.utils.ts +2 -0
  360. package/src/data/query/tracing-utils.ts +3 -0
  361. package/src/data/query/tracing.ts +11 -0
  362. package/src/data/query/utils.ts +357 -0
  363. package/src/data/query/version.ts +4 -0
  364. package/src/data/query/view-common.ts +1 -0
  365. package/src/data/schema/branded.ts +13 -0
  366. package/src/data/schema/generated/coerce.ts +5 -0
  367. package/src/data/schema/generated/combinator.ts +6 -0
  368. package/src/data/schema/generated/encoding.ts +5 -0
  369. package/src/data/schema/generated/error.ts +6 -0
  370. package/src/data/schema/generated/format.ts +5 -0
  371. package/src/data/schema/generated/type-constructor.ts +10 -0
  372. package/src/data/schema/generated/type.ts +6 -0
  373. package/src/data/schema/index.ts +6 -0
  374. package/src/data/schema/json-schema.ts +33 -0
  375. package/src/data/schema/namespace.ts +55 -0
  376. package/src/data/schema/parse.ts +39 -0
  377. package/src/data/schema/types.ts +39 -0
  378. package/src/data/temporal/append-only.ts +134 -0
  379. package/src/data/temporal/close.ts +27 -0
  380. package/src/data/temporal/columns.ts +10 -0
  381. package/src/data/temporal/definition-queries.ts +70 -0
  382. package/src/data/temporal/errors.ts +10 -0
  383. package/src/data/temporal/get-current.ts +22 -0
  384. package/src/data/temporal/index.ts +9 -0
  385. package/src/data/temporal/namespace.ts +36 -0
  386. package/src/data/temporal/query.ts +25 -0
  387. package/src/data/temporal/resolve.ts +17 -0
  388. package/src/data/temporal/revise.ts +67 -0
  389. package/src/data/temporal/types.ts +22 -0
  390. package/src/data/valve/artifact.ts +33 -0
  391. package/src/data/valve/contract-diff.ts +21 -0
  392. package/src/data/valve/cross.ts +57 -0
  393. package/src/data/valve/crossing-ledger.ts +50 -0
  394. package/src/data/valve/decision.ts +44 -0
  395. package/src/data/valve/durable-crossing.ts +52 -0
  396. package/src/data/valve/execute-crossing.ts +77 -0
  397. package/src/data/valve/faucet.ts +56 -0
  398. package/src/data/valve/gate.ts +114 -0
  399. package/src/data/valve/graph.ts +77 -0
  400. package/src/data/valve/index.ts +53 -0
  401. package/src/data/valve/namespace.ts +57 -0
  402. package/src/data/valve/registry.ts +50 -0
  403. package/src/data/valve/schema/valve-crossing-fields.ts +23 -0
  404. package/src/data/valve/schema/valve-crossing.ts +9 -0
  405. package/src/data/valve/supply.ts +154 -0
  406. package/src/data/valve/types.ts +143 -0
  407. package/src/data/vector/columns.ts +27 -0
  408. package/src/data/vector/index.ts +4 -0
  409. package/src/data/vector/namespace.ts +33 -0
  410. package/src/data/vector/query.ts +85 -0
  411. package/src/data/vector/validate.ts +16 -0
  412. package/src/data/write/audit/actor.ts +15 -0
  413. package/src/data/write/audit/audit-columns.ts +18 -0
  414. package/src/data/write/audit/audit-select.ts +111 -0
  415. package/src/data/write/audit/bound-transaction.ts +14 -0
  416. package/src/data/write/audit/cte-compile.ts +32 -0
  417. package/src/data/write/audit/decode-returning.ts +47 -0
  418. package/src/data/write/audit/final-select.ts +43 -0
  419. package/src/data/write/audit/infra-audit.ts +36 -0
  420. package/src/data/write/audit/primary-key.ts +65 -0
  421. package/src/data/write/audit/projection.ts +41 -0
  422. package/src/data/write/audit/read-touches.ts +86 -0
  423. package/src/data/write/audit/touch-match.ts +78 -0
  424. package/src/data/write/audit/verb-delete.ts +62 -0
  425. package/src/data/write/audit/verb-insert.ts +36 -0
  426. package/src/data/write/audit/verb-select.ts +47 -0
  427. package/src/data/write/audit/verb-update.ts +60 -0
  428. package/src/data/write/audit/verb-upsert.ts +104 -0
  429. package/src/data/write/conflict.ts +43 -0
  430. package/src/data/write/delete.ts +38 -0
  431. package/src/data/write/execute.ts +243 -0
  432. package/src/data/write/index.ts +11 -0
  433. package/src/data/write/insert.ts +63 -0
  434. package/src/data/write/state.ts +43 -0
  435. package/src/data/write/update.ts +54 -0
  436. package/src/data/write/upsert.ts +58 -0
  437. package/src/data/write/values.ts +19 -0
  438. package/src/index.ts +230 -0
  439. package/src/infra/access-links/code.ts +70 -0
  440. package/src/infra/access-links/handle.ts +892 -0
  441. package/src/infra/access-links/index.ts +9 -0
  442. package/src/infra/access-links/namespace.ts +30 -0
  443. package/src/infra/access-links/person-check.ts +177 -0
  444. package/src/infra/access-links/schema.ts +71 -0
  445. package/src/infra/alerts/async-sources.ts +231 -0
  446. package/src/infra/alerts/audit.ts +36 -0
  447. package/src/infra/alerts/beat.ts +123 -0
  448. package/src/infra/alerts/client-faults.ts +111 -0
  449. package/src/infra/alerts/faults.ts +156 -0
  450. package/src/infra/alerts/handle.ts +778 -0
  451. package/src/infra/alerts/http.ts +192 -0
  452. package/src/infra/alerts/index.ts +12 -0
  453. package/src/infra/alerts/infra-sources.ts +180 -0
  454. package/src/infra/alerts/namespace.ts +81 -0
  455. package/src/infra/alerts/redact.ts +21 -0
  456. package/src/infra/alerts/request-faults.ts +41 -0
  457. package/src/infra/alerts/schema.ts +124 -0
  458. package/src/infra/alerts/sinks.ts +125 -0
  459. package/src/infra/alerts/source-options.ts +26 -0
  460. package/src/infra/alerts/sources.ts +503 -0
  461. package/src/infra/alerts/subsystem-sources.ts +137 -0
  462. package/src/infra/audit/emit.ts +87 -0
  463. package/src/infra/audit/index.ts +2 -0
  464. package/src/infra/audit/namespace.ts +22 -0
  465. package/src/infra/audit/schema.sql +35 -0
  466. package/src/infra/audit/types.ts +18 -0
  467. package/src/infra/aws/credentials.ts +147 -0
  468. package/src/infra/aws/sigv4.ts +140 -0
  469. package/src/infra/cache/create.ts +58 -0
  470. package/src/infra/cache/entry.ts +81 -0
  471. package/src/infra/cache/index.ts +4 -0
  472. package/src/infra/cache/namespace.ts +10 -0
  473. package/src/infra/cache/tenant.ts +93 -0
  474. package/src/infra/cache/types.ts +24 -0
  475. package/src/infra/crawl/audit.ts +35 -0
  476. package/src/infra/crawl/errors.ts +25 -0
  477. package/src/infra/crawl/handle.ts +693 -0
  478. package/src/infra/crawl/index.ts +9 -0
  479. package/src/infra/crawl/links.ts +160 -0
  480. package/src/infra/crawl/namespace.ts +36 -0
  481. package/src/infra/crawl/robots.ts +100 -0
  482. package/src/infra/crawl/schema.ts +89 -0
  483. package/src/infra/credit-line/handle.ts +883 -0
  484. package/src/infra/credit-line/index.ts +6 -0
  485. package/src/infra/credit-line/namespace.ts +7 -0
  486. package/src/infra/credit-line/schema.ts +96 -0
  487. package/src/infra/credits/handle.ts +706 -0
  488. package/src/infra/credits/index.ts +5 -0
  489. package/src/infra/credits/namespace.ts +7 -0
  490. package/src/infra/credits/schema.ts +83 -0
  491. package/src/infra/email/audit.ts +36 -0
  492. package/src/infra/email/inbound.ts +622 -0
  493. package/src/infra/email/index.ts +11 -0
  494. package/src/infra/email/mail.ts +517 -0
  495. package/src/infra/email/mime.ts +447 -0
  496. package/src/infra/email/namespace.ts +22 -0
  497. package/src/infra/email/providers.ts +111 -0
  498. package/src/infra/email/schema.ts +96 -0
  499. package/src/infra/email/sns.ts +200 -0
  500. package/src/infra/email/unsubscribe.ts +44 -0
  501. package/src/infra/fetch/address.ts +88 -0
  502. package/src/infra/fetch/connect-retry.ts +87 -0
  503. package/src/infra/fetch/handle.ts +329 -0
  504. package/src/infra/fetch/index.ts +7 -0
  505. package/src/infra/fetch/namespace.ts +70 -0
  506. package/src/infra/idempotency/index.ts +3 -0
  507. package/src/infra/idempotency/middleware.ts +87 -0
  508. package/src/infra/idempotency/store.ts +92 -0
  509. package/src/infra/idempotency/types.ts +30 -0
  510. package/src/infra/join-requests/handle.ts +312 -0
  511. package/src/infra/join-requests/index.ts +2 -0
  512. package/src/infra/join-requests/namespace.ts +7 -0
  513. package/src/infra/join-requests/schema.ts +33 -0
  514. package/src/infra/outbox/core.ts +165 -0
  515. package/src/infra/quota/errors.ts +32 -0
  516. package/src/infra/quota/handle.ts +215 -0
  517. package/src/infra/quota/index.ts +5 -0
  518. package/src/infra/quota/namespace.ts +7 -0
  519. package/src/infra/quota/schema.ts +15 -0
  520. package/src/infra/storage/backend.ts +34 -0
  521. package/src/infra/storage/handle.ts +513 -0
  522. package/src/infra/storage/index.ts +9 -0
  523. package/src/infra/storage/local.ts +104 -0
  524. package/src/infra/storage/namespace.ts +13 -0
  525. package/src/infra/storage/s3.ts +257 -0
  526. package/src/infra/storage/schema.ts +24 -0
  527. package/src/infra/support/handle.ts +854 -0
  528. package/src/infra/support/http.ts +229 -0
  529. package/src/infra/support/index.ts +7 -0
  530. package/src/infra/support/namespace.ts +12 -0
  531. package/src/infra/support/schema.ts +96 -0
  532. package/src/infra/webhook/inbound.ts +45 -0
  533. package/src/infra/webhook/index.ts +5 -0
  534. package/src/infra/webhook/namespace.ts +24 -0
  535. package/src/infra/webhook/outbound.ts +315 -0
  536. package/src/infra/webhook/sign.ts +32 -0
  537. package/src/infra/webhook/verify.ts +82 -0
  538. package/src/invariants/assert.ts +26 -0
  539. package/src/invariants/index.ts +1 -0
  540. package/src/lint/config.ts +56 -0
  541. package/src/lint/doctrine.ts +163 -0
  542. package/src/lint/include.ts +97 -0
  543. package/src/lint/index.ts +3 -0
  544. package/src/lint/preset.ts +10 -0
  545. package/src/lint/resolver.ts +218 -0
  546. package/src/lint/rules/no-reexports.ts +46 -0
  547. package/src/request/behavior/audited.ts +85 -0
  548. package/src/request/behavior/cached.ts +62 -0
  549. package/src/request/behavior/compose.ts +28 -0
  550. package/src/request/behavior/index.ts +5 -0
  551. package/src/request/behavior/namespace.ts +16 -0
  552. package/src/request/behavior/types.ts +26 -0
  553. package/src/request/behavior/versioned.ts +54 -0
  554. package/src/request/context/create.ts +103 -0
  555. package/src/request/context/guard.ts +49 -0
  556. package/src/request/context/index.ts +4 -0
  557. package/src/request/context/run-in-transaction.ts +200 -0
  558. package/src/request/context/store.ts +28 -0
  559. package/src/request/context/types.ts +50 -0
  560. package/src/request/di/builder.ts +535 -0
  561. package/src/request/di/index.ts +8 -0
  562. package/src/request/di/resolve.ts +271 -0
  563. package/src/request/di/types.ts +262 -0
  564. package/src/request/fitting/namespace.ts +7 -0
  565. package/src/request/fixture/batch.ts +71 -0
  566. package/src/request/fixture/builder.ts +26 -0
  567. package/src/request/fixture/errors.ts +10 -0
  568. package/src/request/fixture/index.ts +8 -0
  569. package/src/request/fixture/namespace.ts +23 -0
  570. package/src/request/fixture/paginate.ts +44 -0
  571. package/src/request/fixture/to-handlers.ts +260 -0
  572. package/src/request/fixture/types.ts +79 -0
  573. package/src/request/flow/act-as.ts +78 -0
  574. package/src/request/flow/namespace.ts +17 -0
  575. package/src/request/http/error-step.ts +42 -0
  576. package/src/request/http/file.ts +141 -0
  577. package/src/request/http/index.ts +4 -0
  578. package/src/request/http/middleware.ts +141 -0
  579. package/src/request/http/namespace.ts +5 -0
  580. package/src/request/http/rate-limit-classes.ts +170 -0
  581. package/src/request/http/response.ts +82 -0
  582. package/src/request/http/server.ts +916 -0
  583. package/src/request/http/sniff.ts +261 -0
  584. package/src/request/http/types.ts +250 -0
  585. package/src/request/http/upload.ts +284 -0
  586. package/src/request/internal/text.ts +6 -0
  587. package/src/request/openapi/generate.ts +205 -0
  588. package/src/request/openapi/index.ts +2 -0
  589. package/src/request/openapi/namespace.ts +7 -0
  590. package/src/test/auth.ts +13 -0
  591. package/src/test/auto-setup.ts +45 -0
  592. package/src/test/context.ts +91 -0
  593. package/src/test/crawl-fixture.ts +157 -0
  594. package/src/test/discover-fork.ts +17 -0
  595. package/src/test/fingerprint.ts +135 -0
  596. package/src/test/globals.d.ts +7 -0
  597. package/src/test/index.ts +19 -0
  598. package/src/test/namespace.ts +87 -0
  599. package/src/test/plugin.ts +189 -0
  600. package/src/test/progress.ts +185 -0
  601. package/src/test/reap-after-run.ts +28 -0
  602. package/src/test/reap.ts +286 -0
  603. package/src/test/reset.ts +253 -0
  604. package/src/test/savepoints.ts +172 -0
  605. package/src/test/setup.ts +1422 -0
  606. package/src/test/system-channel.ts +50 -0
  607. package/src/test/vitest-plugin.ts +142 -0
  608. package/src/test/vitest-workspace.ts +507 -0
  609. package/src/test/vitest.ts +333 -0
  610. package/src/test/watch.ts +105 -0
  611. package/src/trace/capture/bounded-serializer.ts +146 -0
  612. package/src/trace/cardinality/analyze.ts +173 -0
  613. package/src/trace/cardinality/branch-context.ts +214 -0
  614. package/src/trace/cardinality/check.ts +33 -0
  615. package/src/trace/cardinality/classify-edge.ts +64 -0
  616. package/src/trace/cardinality/structural-max.ts +107 -0
  617. package/src/trace/check/coverage-check.ts +188 -0
  618. package/src/trace/check/flow-check.ts +103 -0
  619. package/src/trace/check/flow-step-site.ts +234 -0
  620. package/src/trace/check/io-pattern.ts +116 -0
  621. package/src/trace/codemod/add-cardinality.ts +152 -0
  622. package/src/trace/codemod/run.ts +80 -0
  623. package/src/trace/entry/child-trace.ts +21 -0
  624. package/src/trace/entry/close-trace.ts +87 -0
  625. package/src/trace/entry/finalize-trace.ts +28 -0
  626. package/src/trace/entry/open-trace.ts +138 -0
  627. package/src/trace/entry/parent-trace.ts +20 -0
  628. package/src/trace/entry/parse-traceparent.ts +39 -0
  629. package/src/trace/entry/process-start.ts +38 -0
  630. package/src/trace/entry/trace-context.ts +26 -0
  631. package/src/trace/entry/tracing-enabled.ts +10 -0
  632. package/src/trace/external/record.ts +195 -0
  633. package/src/trace/external/report.ts +66 -0
  634. package/src/trace/namespace.ts +19 -0
  635. package/src/trace/partition/day.ts +47 -0
  636. package/src/trace/partition/index.ts +14 -0
  637. package/src/trace/partition/partition-name.ts +23 -0
  638. package/src/trace/partition/plan.ts +82 -0
  639. package/src/trace/partition/schedule.ts +26 -0
  640. package/src/trace/partition/startup-hook.ts +39 -0
  641. package/src/trace/partition/sync.ts +154 -0
  642. package/src/trace/partition/tables.ts +53 -0
  643. package/src/trace/read/tree.ts +83 -0
  644. package/src/trace/retain/copy-on-error.ts +76 -0
  645. package/src/trace/runtime/expire-stale-traces.ts +54 -0
  646. package/src/trace/runtime/flow-step.ts +147 -0
  647. package/src/trace/runtime/flush-steps.ts +31 -0
  648. package/src/trace/runtime/pending-writes.ts +54 -0
  649. package/src/trace/runtime/step-buffer.ts +298 -0
  650. package/src/trace/runtime/step-error.ts +21 -0
  651. package/src/trace/runtime/step-meta.ts +55 -0
  652. package/src/trace/runtime/thenable.ts +12 -0
  653. package/src/trace/runtime/truncate-trace.ts +62 -0
  654. package/src/trace/schema/trace-fields.ts +52 -0
  655. package/src/trace/schema/trace-retained.ts +22 -0
  656. package/src/trace/schema/trace-step-fields.ts +44 -0
  657. package/src/trace/schema/trace-step-retained.ts +25 -0
  658. package/src/trace/schema/trace-step.ts +18 -0
  659. package/src/trace/schema/trace.ts +12 -0
  660. package/src/trace/transformer/apply.ts +79 -0
  661. package/src/trace/transformer/build-meta-literal.ts +30 -0
  662. package/src/trace/transformer/find-flow-step-sites.ts +85 -0
  663. package/src/trace/transformer/inject-flow-step-import.ts +39 -0
  664. package/src/trace/transformer/transform-error.ts +14 -0
  665. package/src/trace/transformer/transform-flow-steps.ts +123 -0
  666. package/src/trace/transformer/wrap-function-declaration.ts +62 -0
  667. package/src/trace/transformer/wrap-variable-declaration.ts +67 -0
  668. package/src/workspace/affected.ts +110 -0
  669. package/src/workspace/changed-files.ts +163 -0
  670. package/src/workspace/check-deps.ts +213 -0
  671. package/src/workspace/checksum.ts +20 -0
  672. package/src/workspace/dependency-graph.ts +67 -0
  673. package/src/workspace/detect-pipework-copies.ts +93 -0
  674. package/src/workspace/discover.ts +206 -0
  675. package/src/workspace/generate.ts +401 -0
  676. package/src/workspace/index.ts +7 -0
  677. package/src/workspace/module-imports-pipework.ts +39 -0
  678. package/src/workspace/module-package-name.ts +12 -0
  679. package/src/workspace/scrub-git-env.ts +23 -0
  680. package/src/workspace/source-paths.ts +36 -0
  681. package/src/workspace/sync.ts +182 -0
  682. package/dist/REFERENCE.md +0 -1477
  683. package/dist/infra/access-links/rate-limit.d.ts +0 -10
  684. package/dist/infra/access-links/rate-limit.d.ts.map +0 -1
  685. package/dist/infra/access-links/rate-limit.js +0 -28
  686. package/dist/infra/access-links/rate-limit.js.map +0 -1
  687. package/dist/infra/email/sigv4.d.ts +0 -24
  688. package/dist/infra/email/sigv4.d.ts.map +0 -1
  689. package/dist/infra/email/sigv4.js +0 -55
  690. package/dist/infra/email/sigv4.js.map +0 -1
@@ -0,0 +1,54 @@
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
+
15
+ import type { PgTable } from '../query/pg-core/index.js'
16
+ import type { UpdateSetValues } from './values.js'
17
+ import type { SQL } from '../db/types.js'
18
+ import { assertNotExternal } from '../domain/external-registry.js'
19
+ import type { DefinedTable } from '../domain/types.js'
20
+ import type { WriteState } from './state.js'
21
+ import { executeWrite } from './execute.js'
22
+
23
+ export class UpdateBuilder<T extends PgTable, TResult = unknown> implements PromiseLike<TResult> {
24
+ constructor(private readonly state: WriteState) {}
25
+
26
+ set(values: UpdateSetValues<T>): UpdateBuilder<T, TResult> {
27
+ return new UpdateBuilder<T, TResult>({ ...this.state, set: values as Record<string, unknown> })
28
+ }
29
+
30
+ where(condition: SQL): UpdateBuilder<T, TResult> {
31
+ return new UpdateBuilder<T, TResult>({ ...this.state, where: condition })
32
+ }
33
+
34
+ returning(): UpdateBuilder<T, Record<string, unknown>[]>
35
+ returning<TShape extends Record<string, unknown>>(shape: TShape): UpdateBuilder<T, Record<string, unknown>[]>
36
+ returning(shape?: Record<string, unknown>): UpdateBuilder<T, Record<string, unknown>[]> {
37
+ const returning = shape === undefined ? 'all' as const : shape
38
+ return new UpdateBuilder<T, Record<string, unknown>[]>({ ...this.state, returning })
39
+ }
40
+
41
+ then<TFulfilled = TResult, TRejected = never>(
42
+ onfulfilled?: ((value: TResult) => TFulfilled | PromiseLike<TFulfilled>) | null,
43
+ onrejected?: ((reason: unknown) => TRejected | PromiseLike<TRejected>) | null,
44
+ ): PromiseLike<TFulfilled | TRejected> {
45
+ return executeWrite(this.state).then(onfulfilled as (value: unknown) => TFulfilled, onrejected) as PromiseLike<TFulfilled | TRejected>
46
+ }
47
+ }
48
+
49
+ /** Starts a pipework-owned update against `table`. Chain with `.set(...).where(...).returning(...)`. */
50
+ // 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
51
+ export function update<T extends DefinedTable<any> & PgTable>(table: T): UpdateBuilder<T, any> {
52
+ assertNotExternal(table, 'update')
53
+ return new UpdateBuilder<T, unknown>({ verb: 'update', table })
54
+ }
@@ -0,0 +1,58 @@
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
+
8
+ import type { PgTable } from '../query/pg-core/index.js'
9
+ import type { UpdateSetValues } from './values.js'
10
+ import { assertNotExternal } from '../domain/external-registry.js'
11
+ import type { DefinedTable } from '../domain/types.js'
12
+ import type { WriteState } from './state.js'
13
+ import type { InsertValues } from './values.js'
14
+ import { executeWrite } from './execute.js'
15
+
16
+ export class UpsertBuilder<T extends PgTable, TResult = unknown> implements PromiseLike<TResult> {
17
+ constructor(private readonly state: WriteState) {}
18
+
19
+ values(rows: InsertValues<T> | ReadonlyArray<InsertValues<T>>): UpsertBuilder<T, TResult> {
20
+ const normalized = Array.isArray(rows) ? rows : [rows]
21
+ return new UpsertBuilder<T, TResult>({
22
+ ...this.state,
23
+ values: normalized as ReadonlyArray<Record<string, unknown>>,
24
+ })
25
+ }
26
+
27
+ onConflict(columns: readonly (keyof T['$inferSelect'] & string)[]): UpsertBuilder<T, TResult> {
28
+ return new UpsertBuilder<T, TResult>({
29
+ ...this.state,
30
+ onConflictColumns: columns as readonly string[],
31
+ })
32
+ }
33
+
34
+ set(values: UpdateSetValues<T>): UpsertBuilder<T, TResult> {
35
+ return new UpsertBuilder<T, TResult>({ ...this.state, set: values as Record<string, unknown> })
36
+ }
37
+
38
+ returning(): UpsertBuilder<T, Record<string, unknown>[]>
39
+ returning<TShape extends Record<string, unknown>>(shape: TShape): UpsertBuilder<T, Record<string, unknown>[]>
40
+ returning(shape?: Record<string, unknown>): UpsertBuilder<T, Record<string, unknown>[]> {
41
+ const returning = shape === undefined ? 'all' as const : shape
42
+ return new UpsertBuilder<T, Record<string, unknown>[]>({ ...this.state, returning })
43
+ }
44
+
45
+ then<TFulfilled = TResult, TRejected = never>(
46
+ onfulfilled?: ((value: TResult) => TFulfilled | PromiseLike<TFulfilled>) | null,
47
+ onrejected?: ((reason: unknown) => TRejected | PromiseLike<TRejected>) | null,
48
+ ): PromiseLike<TFulfilled | TRejected> {
49
+ return executeWrite(this.state).then(onfulfilled as (value: unknown) => TFulfilled, onrejected) as PromiseLike<TFulfilled | TRejected>
50
+ }
51
+ }
52
+
53
+ /** Starts a pipework-owned upsert against `table`. Chain with `.values(...).onConflict([...]).set(...).returning(...)`. */
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+ export function upsert<T extends DefinedTable<any> & PgTable>(table: T): UpsertBuilder<T, any> {
56
+ assertNotExternal(table, 'upsert')
57
+ return new UpsertBuilder<T, unknown>({ verb: 'upsert', table })
58
+ }
@@ -0,0 +1,19 @@
1
+ import type { InferInsertModel } from '../query/index.js'
2
+ import type { PgTable } from '../query/pg-core/index.js'
3
+ import type { PgUpdateSetSource } from '../query/pg-core/query-builders/update.js'
4
+
5
+ export type { AcceptReadonly } from '../db/readonly.js'
6
+ import type { AcceptReadonly } from '../db/readonly.js'
7
+
8
+ /**
9
+ * The table's column-level insert shape: NOT NULL columns without a default are
10
+ * required, nullable or defaulted ones optional, no other keys. Auto-managed
11
+ * columns stay insertable. Tuple and array values may be readonly. Falls back to
12
+ * an open record for a table whose columns are not statically known (generic
13
+ * framework code).
14
+ */
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- the open arm is the deliberate untyped fallback for DefinedTable<any>
16
+ export type InsertValues<T extends PgTable> = string extends keyof InferInsertModel<T> ? Record<string, any> : T['$inferInsert'] | InferInsertModel<T> | { [K in keyof InferInsertModel<T>]: AcceptReadonly<InferInsertModel<T>[K]> }
17
+
18
+ /** The `set(...)` shape of update and upsert, with tuple and array values allowed readonly. */
19
+ export type UpdateSetValues<T extends PgTable> = PgUpdateSetSource<T> | { [K in keyof PgUpdateSetSource<T>]: AcceptReadonly<PgUpdateSetSource<T>[K]> }
package/src/index.ts ADDED
@@ -0,0 +1,230 @@
1
+ export { StartupValidationError, type ValidationIssue, type ValidationPhase } from './core/validation/index.js'
2
+ export { createManifold } from './core/pipework.js'
3
+ export { discoverInstance, findConfig } from './core/config/discover.js'
4
+ export type { ConnectionBudget } from './data/db/reservation.js'
5
+ export type { Manifold, PoolState, IsolationState, ConnectionTracker, SeedOptions, ScriptOptions, StopResult } from './core/pipework.js'
6
+
7
+ export { pipe, filter, excluded } from './data/db/namespace.js'
8
+ export type { DB, SQL, Table, Column, TransactionConfig } from './data/db/namespace.js'
9
+ export type { WindowSpec, WindowFrame, FrameBound } from './data/db/expressions.js'
10
+ export type { Aggregate, EmptyableAggregate, AggregateOptions, JsonOf } from './data/db/aggregates.js'
11
+ export type { ValueColumnDef } from './data/db/values.js'
12
+ export type { ArraySource, ElementOf, JsonbElements } from './data/db/array-elements.js'
13
+ export type { FunctionSpec, FunctionSource, FunctionSourceFields } from './data/db/function-source.js'
14
+ export type { SerializableOptions } from './data/db/serializable.js'
15
+ export { StatementTimeoutError, LockTimeoutError } from './data/db/timeouts.js'
16
+ export type { TimeoutOptions } from './data/db/timeouts.js'
17
+
18
+ // Standalone managed connection for contexts outside the manifold's AsyncLocalStorage —
19
+ // worker_threads, detached monitors — where pipe()/pipeSystem() cannot resolve. The one
20
+ // sanctioned door to a raw connection; keeps the WRAPPED_PACKAGES postgres ban airtight.
21
+ export { tap } from './data/db/pool.js'
22
+ export type { ManagedConnection, ConnectOptions } from './data/db/pool.js'
23
+ export type { StatementObserver, StatementEvent } from './core/config/statement-observer.js'
24
+
25
+ export type { DefinedTable, ExternalTable, DomainDefinition, DefinitionMethods, FieldDescriptor, FieldModifiers, FieldMeta, DefineOptions,
26
+ FactoryBuilder, FactoryOptions, TraitDefinition, FieldColumn, ProjectedColumns,
27
+ EffectiveDatedFields, AppendOnlyVersionsFields, AuditedFields, SoftDeletedFields,
28
+ FieldKind, FieldFlags, FieldRecord, ForeignKeyAction, CompositeForeignKey, PartitionSpec,
29
+ InsertProjection, SelectProjection, UpdateProjection,
30
+ Branded, Brand, InferSelect, InferFieldOutput } from './data/domain/index.js'
31
+
32
+ export { schema } from './data/schema/namespace.js'
33
+ export type { JsonSchema } from './data/schema/namespace.js'
34
+ export type { Schema, Infer, StringSchema, NumberSchema, BooleanSchema, EnumSchema, LiteralSchema, ArraySchema, OptionalSchema, NullableSchema, ObjectSchema, ObjectOps } from './data/schema/types.js'
35
+ // zod classes the validator types are made of, exported so an app without zod can name them in declaration emit
36
+ export type { ZodString, ZodNumber, ZodBoolean, ZodEnum, ZodLiteral, ZodArray, ZodOptional, ZodNullable, ZodObject, ZodType, $strip, $ZodTypeInternals } from './data/schema/types.js'
37
+
38
+ export { fitting } from './request/fitting/namespace.js'
39
+ export type { Handler, HandlerMeta, RouteMeta, HttpMethod, InferDeps, InferReturn, DatabaseDeps, UploadConfig, BinaryUploadConfig, MultipartUploadConfig, BinaryUpload, MultipartUpload, UploadRefusal, UploadRefuseHook, RouteRefusal, RouteRefusedHook, FileConfig } from './request/di/types.js'
40
+ export type { PermissionMeta, JobRetryConfig, JobTransactionMode, Checkpoint } from './request/di/types.js'
41
+ export type { RouteScreen, ScreenedRequest, ScreenRefusal } from './request/di/types.js'
42
+
43
+ export { http } from './request/http/namespace.js'
44
+ export { createServer } from './request/http/server.js'
45
+ export { detectMediaType, resolveMediaType, SNIFF_BYTES } from './request/http/sniff.js'
46
+ export type { ServerConfig, CorsConfig, SecurityConfig, RateLimitConfig,
47
+ RateLimitClassesConfig, RateLimitClass, RateLimitWindow, RateLimitRefusal, InternalErrorFault,
48
+ ErrorResponse, HandlerResponse, InjectOptions, InjectResponse } from './request/http/types.js'
49
+ export type { PipeworkServer } from './request/http/server.js'
50
+ export type { FileResponse, FileResponseInit } from './request/http/file.js'
51
+
52
+ export type { HttpRequest, HttpResponse } from './request/http/types.js'
53
+
54
+ export { auth } from './auth/auth/namespace.js'
55
+ export type { AuthStrategy, AuthRequest, AuthContext, BaseAuth } from './auth/auth/types.js'
56
+ export type { AuthEnricher, TenantResolver, AuthChainConfig } from './auth/auth/chain.js'
57
+ export type { SessionAuth, SessionStrategyOptions } from './auth/auth/sessions.js'
58
+ export type { Sessions, SessionConfig, TokenPair, TokenPayload, HttpTokenResult } from './auth/auth/sessions.js'
59
+ export type { CookieConfig } from './auth/auth/cookie.js'
60
+ export type { Passwords, PasswordsConfig, ScryptParams, VerifyResult } from './auth/auth/passwords.js'
61
+ export type { SignIn, SignInConfig, SignInAttempt, SignInResult } from './auth/auth/sign-in.js'
62
+ export type { MultiOrgConfig, MultiOrgSessions, ResolveLoginResult,
63
+ AuthenticatedResult, OrgSelectResult, OrgMembership, OrgInfo, OrgMembershipDetail } from './auth/auth/multi-org.js'
64
+
65
+ export { flow } from './request/flow/namespace.js'
66
+ export type { Flow, RequestMetadata, BoundTransaction } from './request/context/index.js'
67
+
68
+ export { tenant } from './auth/tenant/namespace.js'
69
+ export type { TenantConfig, TenantContext, TenantExtractionResult } from './auth/tenant/index.js'
70
+
71
+ export { rbac } from './auth/rbac/namespace.js'
72
+ export type { RbacConfig, Rbac, PermissionSet, ResolvedPermission, Scope,
73
+ SeedData, SeedPermission, SeedRole, SeedRolePermission, SeedUserRole } from './auth/rbac/index.js'
74
+
75
+ export { audit } from './infra/audit/namespace.js'
76
+ export type { AuditConfig, AuditEmitOptions, Audit } from './infra/audit/index.js'
77
+ export type { AuditQueryFilters, AuditQueryOptions, AuditQueryResult, AuditRecordRow,
78
+ AuditCursor } from './audit/query/index.js'
79
+ export type { AuditChainHead, AuditChainBreak, AuditChainBreakReason, AuditVerifyOptions,
80
+ AuditVerifyResult } from './audit/chain/index.js'
81
+
82
+ export { jobs } from './async/jobs/namespace.js'
83
+ export { JobAbortedError, JobLaterError, JobPermanentError } from './async/jobs/index.js'
84
+ export { serializeError } from './async/jobs/serialize-error.js'
85
+ export type { ExecuteJobOptions, Queue, QueueConfig, EnqueueOptions, ClaimedJob, JobClaim, JobClaimReason, ReapedJob, FailedAttempt, QueueTotals, QueueTypeTotals, JobResult, BackoffConfig,
86
+ WaitOptions, WaitResult, ListenClient, ListenHandle, CronSchedule, ScheduleSpec,
87
+ ScheduleInfo, SchedulerOptions } from './async/jobs/index.js'
88
+
89
+ export { steps } from './async/steps/namespace.js'
90
+ export type { GraphConfig, GraphStepDefinition, GraphStepContext, GraphForEachContext, GraphRunInfo, GraphFailure,
91
+ GraphRunStatus, RequestOptions as StepRequestOptions, RequestResult as StepRequestResult, PlanOptions as StepPlanOptions,
92
+ PlanResult as StepPlanResult, StepPlan, StepCounts, TaskState as StepTaskState, RunTask as StepRunTask, RunStatus as StepRunStatus, EndedRun as StepEndedRun, EndedRunsOptions as StepEndedRunsOptions, DecideOptions as StepDecideOptions,
93
+ StepResultRecord, RemoveItemOptions as StepRemoveItemOptions, RemoveItemResult as StepRemoveItemResult,
94
+ StepGraph, GraphSelection } from './async/steps/index.js'
95
+ export { StepItemRunningError } from './async/steps/index.js'
96
+
97
+ export { cache } from './infra/cache/namespace.js'
98
+ export type { CacheConfig, CacheStats, Cache, TenantCacheConfig, TenantCacheStats,
99
+ TenantCache } from './infra/cache/index.js'
100
+
101
+ export { fixture } from './request/fixture/namespace.js'
102
+ export type { Resource, ResourceOperations, ResourceMeta, ResourceId, PaginationConfig,
103
+ PaginationParams, PaginatedResponse, PageResult, CursorPaginationParams,
104
+ BatchAction, BatchTargets, BatchRequest } from './request/fixture/index.js'
105
+
106
+ export { temporal } from './data/temporal/namespace.js'
107
+ export type { TemporalOptions, ReviseOptions, ReviseResult, GetCurrentResult, DefinitionReviseOptions } from './data/temporal/index.js'
108
+
109
+ export { vector } from './data/vector/namespace.js'
110
+ export type { HeadlineOptions } from './data/vector/index.js'
111
+
112
+ export { jsonb } from './data/jsonb/namespace.js'
113
+
114
+ export { valve } from './data/valve/namespace.js'
115
+ export type { ValveKind, ValveTopology, ValveDefinition, HandoffTrigger, CrossingMode,
116
+ ContractShape, ContractPayload, SupplyDefinition, SupplyBuilder,
117
+ GateTrigger, GateRetraction, GateDecision, GateDefinition, GateBuilder,
118
+ FaucetHandler, FaucetDefinition, FaucetBuilder,
119
+ CrossedResult, BlockedResult, HeldResult, FailedResult, SkippedResult,
120
+ SupplyCrossingResult, GateCrossingResult, CrossingResult, CrossingRecord, CrossingJobPayload,
121
+ DecisionOutcome, Crossed, Held, Failed, ContractArtifact, ContractDiff,
122
+ ValveGraph, ValveGraphNode, ValveGraphEdge, ValveNodeKind, ValveEdgeKind } from './data/valve/index.js'
123
+
124
+ export { pipeline } from './async/pipeline/namespace.js'
125
+ export type { PipelineConfig, Pipeline, PipelineRun, PipelineExecuteContext,
126
+ StepDefinition, StepContext, StepRunResult } from './async/pipeline/index.js'
127
+
128
+ export { state } from './async/state-machine/namespace.js'
129
+ export type { StateMachineConfig, TransitionDef, TransitionContext, TransitionResult,
130
+ StateMachine } from './async/state-machine/index.js'
131
+
132
+ export { behavior } from './request/behavior/namespace.js'
133
+ export type { BehaviorConfig, VersionedBehaviorConfig, AuditedBehaviorConfig,
134
+ InvalidationBehaviorConfig } from './request/behavior/index.js'
135
+
136
+ export { openapi } from './request/openapi/namespace.js'
137
+ export type { OpenAPIDocument, OpenAPIInfo } from './request/openapi/index.js'
138
+
139
+ export { lifecycle } from './core/lifecycle/namespace.js'
140
+ export type { LifecycleConfig, StartupHook, ShutdownHook, HealthCheck,
141
+ HealthCheckResult, HealthStatus, StartupOptions } from './core/lifecycle/index.js'
142
+
143
+ export { createIdempotency } from './infra/idempotency/index.js'
144
+ export type { IdempotencyConfig, IdempotencyMiddleware, IdempotencyRecord, IdempotencyStore } from './infra/idempotency/index.js'
145
+
146
+ export { webhook } from './infra/webhook/namespace.js'
147
+ export { defineInboundWebhook, createOutboundWebhook } from './infra/webhook/index.js'
148
+ export type { InboundWebhookConfig, InboundWebhookContext, SignatureVerifier,
149
+ OutboundWebhookConfig, OutboundWebhook, WebhookEndpoint, DeliveryAttempt,
150
+ SignedPayload, WebhookSignatureOptions } from './infra/webhook/index.js'
151
+
152
+ export { mail } from './infra/email/namespace.js'
153
+ export { awsCredentials, SEND_JOB, RECEIVE_JOB } from './infra/email/index.js'
154
+ export type { Mail, MailConfig, SendInput, SendResult, RenderedEmail, EmailTemplates, EmailRenderMeta,
155
+ MailProvider, OutgoingMessage, SesConfig, SnsWebhookConfig, AwsCredentials,
156
+ Inbound, InboundConfig, InboundSource, InboundRecord, InboundScanResult, InboundSweepResult, ReceivedEmail, ReceivedAttachment,
157
+ EmailAddress, EmailVerdicts, FromProblem, UnthreadedEmail, SesReceiptConfig } from './infra/email/index.js'
158
+
159
+ export { credits } from './infra/credits/namespace.js'
160
+ export type { Credits, CreditsConfig, CreditGrant, GrantOptions, GrantResult, CreditReservation, ReserveResult,
161
+ CreditBalance, CreditLedgerEntry, HistoryOptions, HistoryPage, LowBalanceState, LowBalanceCrossing } from './infra/credits/index.js'
162
+ export { creditLine } from './infra/credit-line/namespace.js'
163
+ export type { CreditLine, CreditLineConfig, CreditLineCap, CapWindow, LineCrossing, LimitRef, LineReserveResult,
164
+ LineReservation, LineState, LineCapState, LineEntry, Payment, PaymentApplication, PaymentWithEntries,
165
+ Authorization, AuthorizationStatus, Statement, OpenLineOptions, AuthorizeOptions } from './infra/credit-line/index.js'
166
+ export { quota } from './infra/quota/namespace.js'
167
+ export { QuotaExhaustedError } from './infra/quota/index.js'
168
+ export type { Quota, QuotaConfig, QuotaHeaders, QuotaHeaderInput, QuotaBudget, QuotaState, QuotaCallOptions } from './infra/quota/index.js'
169
+ export { alerts } from './infra/alerts/namespace.js'
170
+ export type { Alerts, AlertsConfig, Alert, AlertSeverity, AlertSubject, RaiseOptions as AlertRaiseOptions, DeliveryRow as AlertDeliveryRow,
171
+ TickResult as AlertsTickResult, AlertSink, AlertDelivery, AlertPayload, AlertEventPayload, AlertDigestPayload, AlertWebhookConfig, MemoryAlertSink, AlertSource,
172
+ AlertCondition, AlertStatus, JsonValue as AlertJsonValue, AlertOccurrence, Page as AlertPage, AlertTotals, DeliveryHealth as AlertDeliveryHealth,
173
+ ResolveOptions as AlertResolveOptions, AlertsHttpOptions, ClientFaultsOptions,
174
+ OwnerChange as AlertOwnerChange, ClientFaultReport, RequestFaultsOptions as AlertRequestFaultsOptions } from './infra/alerts/index.js'
175
+ export { support } from './infra/support/namespace.js'
176
+ export { DraftStateError } from './infra/support/index.js'
177
+ export type { SupportHttpOptions } from './infra/support/index.js'
178
+ export type { Support, SupportConfig, TicketApi as SupportTicketApi, Ticket as SupportTicket, TicketMessage as SupportMessage,
179
+ TicketLink as SupportLink, TicketDetail as SupportTicketDetail, TicketState as SupportTicketState, ListOptions as SupportListOptions,
180
+ ListPage as SupportListPage, DraftInput as SupportDraftInput, ReceiveResult as SupportReceiveResult, ReceiveInput as SupportReceiveInput,
181
+ SupportEventKind, SupportEventPayload, SupportSink, SupportDelivery, ScreenVerdict as SupportScreenVerdict } from './infra/support/index.js'
182
+ export type { Sink, SinkDelivery } from './infra/outbox/core.js'
183
+ export { storage } from './infra/storage/namespace.js'
184
+ export type { Storage, StorageConfig, StoredFile, PutOptions as StoragePutOptions, FindOptions as StorageFindOptions, SignedUrlOptions as StorageSignedUrlOptions,
185
+ SweepOptions as StorageSweepOptions, SweepResult as StorageSweepResult, StorageBackend, S3Config, S3Encryption,
186
+ LocalConfig as StorageLocalConfig } from './infra/storage/index.js'
187
+ export { untrustedFetch, connectRetry } from './infra/fetch/namespace.js'
188
+ export type {
189
+ ConnectRetryOptions, UntrustedFetchOptions, UntrustedPostOptions, UntrustedFetchResult, FetchHead, FetchTarget, FetchRefusal } from './infra/fetch/index.js'
190
+ export { crawl } from './infra/crawl/namespace.js'
191
+ export type {
192
+ CrawlConfig, CrawlSite, CrawlStartOptions, CrawlLimits, CrawlScope, CrawlState, CrawlStoppedBy, CrawlStatus, CrawlCounts,
193
+ CrawlResource, CrawlRefusal, CrawlPage } from './infra/crawl/index.js'
194
+ export { CrawlNotEnabledError, CrawlSeedError } from './infra/crawl/index.js'
195
+ export { accessLinks } from './infra/access-links/namespace.js'
196
+ export type { AccessLinks, AccessLinksConfig, AccessLink, PublicLink, AccessLinkUse, AccessLinkTarget, AccessLinkListed, AccessLinkPage,
197
+ AccessLinkCheck, AccessLinkCheckArgs, LinkOptions, ResolveResult, BeginUseResult,
198
+ CompleteUseResult, AbandonUseResult, PersonCheck, PersonCheckConfig, PersonChallenge, PersonPass,
199
+ CodeConfig as AccessLinkCodeConfig } from './infra/access-links/index.js'
200
+
201
+ export { joinRequests } from './infra/join-requests/namespace.js'
202
+ export type { JoinRequests, JoinRequestsConfig, JoinRequest, JoinRequestStatus, SettleResult as JoinRequestSettleResult } from './infra/join-requests/index.js'
203
+
204
+ export { surface } from './core/surface/namespace.js'
205
+ export type { Surface, SurfaceKind, SurfaceHandle, SurfaceManifest, SurfaceContext, SurfaceMap,
206
+ HttpSurfaceConfig, HttpSurfaceBuilder, TestClient,
207
+ WorkerSurfaceConfig, JobEvent, JobEventJob, ScriptSurfaceConfig, ScriptContext,
208
+ RetryConfig } from './core/surface/index.js'
209
+
210
+ export { errors } from './core/errors/namespace.js'
211
+ export { PipeworkError, isPipeworkError, NotFoundError, UnauthorizedError, ForbiddenError, CrossSiteRequestError,
212
+ ValidationError, ConflictError, TooManyRequestsError, PayloadTooLargeError, UnsupportedMediaTypeError, MalformedMultipartError } from './core/errors/index.js'
213
+
214
+ export { config } from './core/config/namespace.js'
215
+ export type { ResolvedConfig, ResolvedDatabase, ResolvedObservability, Blueprint, DatabaseConfig,
216
+ TestConfig, Environment, IsolationStrategy, ObservabilityConfig, ModuleConfig,
217
+ EnvVarDef, EnvDefs, ResolveEnvDefs } from './core/config/index.js'
218
+ export { ConfigError } from './core/config/index.js'
219
+
220
+ export { log } from './core/logging/namespace.js'
221
+ export { describeError } from './core/logging/error-chain.js'
222
+ export type { ErrorLink, ErrorDescription } from './core/logging/error-chain.js'
223
+ export type { LoggerConfig, LogLevel, PipeworkLogger, LoggingConfig, ContextField } from './core/logging/index.js'
224
+
225
+ export { __flowStep } from './trace/runtime/flow-step.js'
226
+ export type { FlowStepMeta } from './trace/runtime/step-meta.js'
227
+
228
+ export { trace } from './trace/namespace.js'
229
+ export type { ExternalStepReport, ExternalRecordResult } from './trace/external/report.js'
230
+ export type { TraceTree, TraceNode, TraceStepNode } from './trace/read/tree.js'
@@ -0,0 +1,70 @@
1
+ // Random short codes. Every character is drawn by rejection sampling over
2
+ // crypto bytes, so no character is more likely than another (a plain modulo
3
+ // would favour the first `256 % alphabetSize` characters).
4
+
5
+ import { randomBytes } from 'node:crypto'
6
+
7
+ export const BASE62 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
8
+ export const LOOKALIKES = '0Oo1lI'
9
+ export const DEFAULT_CODE_LENGTH = 6
10
+ export const MIN_CODE_LENGTH = 4
11
+ export const MAX_CODE_LENGTH = 32
12
+
13
+ export interface CodeConfig {
14
+ /** Characters per code. Default 6, min 4, max 32. */
15
+ readonly length?: number
16
+ /** The characters a code is drawn from. Default base62 (`0-9A-Za-z`), case-sensitive. */
17
+ readonly alphabet?: string
18
+ /** Drop `0 O o 1 l I` from the alphabet. Default false. */
19
+ readonly excludeLookalikes?: boolean
20
+ }
21
+
22
+ export interface CodeGenerator {
23
+ readonly length: number
24
+ readonly alphabet: string
25
+ next(): string
26
+ }
27
+
28
+ export function createCodeGenerator(config: CodeConfig = {}): CodeGenerator {
29
+ const length = config.length ?? DEFAULT_CODE_LENGTH
30
+ if (!Number.isInteger(length) || length < MIN_CODE_LENGTH || length > MAX_CODE_LENGTH) {
31
+ throw new Error(
32
+ `[pipework] accessLinks code length must be an integer from ${MIN_CODE_LENGTH} to ${MAX_CODE_LENGTH}, got ${String(length)}.\n`,
33
+ )
34
+ }
35
+
36
+ let chars = [...new Set(config.alphabet ?? BASE62)]
37
+ if (config.excludeLookalikes === true) chars = chars.filter(c => !LOOKALIKES.includes(c))
38
+ if (chars.length < 2 || chars.length > 256) {
39
+ throw new Error(
40
+ `[pipework] accessLinks code alphabet must have 2 to 256 distinct characters after exclusions, got ${chars.length}.\n`,
41
+ )
42
+ }
43
+ if (chars.some(c => c.length !== 1 || c === '.' || /\s/.test(c))) {
44
+ throw new Error(
45
+ '[pipework] accessLinks code alphabet must be single characters without "." or whitespace — a code appears in URLs and in use tokens.\n',
46
+ )
47
+ }
48
+
49
+ const alphabet = chars.join('')
50
+ const size = chars.length
51
+ // Bytes at or above `limit` are rejected: the rest map onto the alphabet evenly.
52
+ const limit = Math.floor(256 / size) * size
53
+
54
+ return {
55
+ length,
56
+ alphabet,
57
+ next(): string {
58
+ let out = ''
59
+ while (out.length < length) {
60
+ const bytes = randomBytes((length - out.length) * 2)
61
+ for (const byte of bytes) {
62
+ if (byte >= limit) continue
63
+ out += chars[byte % size]
64
+ if (out.length === length) break
65
+ }
66
+ }
67
+ return out
68
+ },
69
+ }
70
+ }