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,53 @@
1
+ import { entityKind } from './entity.js';
2
+ import type { SQL, SQLWrapper } from './sql/sql.js';
3
+
4
+ export interface Subquery<
5
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
+ TAlias extends string = string,
7
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
+ TSelectedFields extends Record<string, unknown> = Record<string, unknown>,
9
+ > extends SQLWrapper {
10
+ // SQLWrapper runtime implementation is defined in 'sql/sql.ts'
11
+ }
12
+ export class Subquery<
13
+ TAlias extends string = string,
14
+ TSelectedFields extends Record<string, unknown> = Record<string, unknown>,
15
+ > implements SQLWrapper {
16
+ static readonly [entityKind]: string = 'Subquery';
17
+
18
+ declare _: {
19
+ brand: 'Subquery';
20
+ sql: SQL;
21
+ selectedFields: TSelectedFields;
22
+ alias: TAlias;
23
+ isWith: boolean;
24
+ usedTables?: string[];
25
+ /** CTE fence: `true` renders `as materialized`, `false` renders `as not materialized`, unset renders plain `as`. */
26
+ materialized?: boolean;
27
+ };
28
+
29
+ constructor(sql: SQL, fields: TSelectedFields, alias: string, isWith = false, usedTables: string[] = [], materialized?: boolean) {
30
+ this._ = {
31
+ brand: 'Subquery',
32
+ sql,
33
+ selectedFields: fields as TSelectedFields,
34
+ alias: alias as TAlias,
35
+ isWith,
36
+ usedTables,
37
+ ...(materialized === undefined ? {} : { materialized }),
38
+ };
39
+ }
40
+
41
+ // getSQL(): SQL<unknown> {
42
+ // return new SQL([this]);
43
+ // }
44
+ }
45
+
46
+ export class WithSubquery<
47
+ TAlias extends string = string,
48
+ TSelection extends Record<string, unknown> = Record<string, unknown>,
49
+ > extends Subquery<TAlias, TSelection> {
50
+ static override readonly [entityKind]: string = 'WithSubquery';
51
+ }
52
+
53
+ export type WithSubqueryWithoutSelection<TAlias extends string> = WithSubquery<TAlias, {}>;
@@ -0,0 +1,208 @@
1
+ import type { Column, GetColumnData } from './column.js';
2
+ import { entityKind } from './entity.js';
3
+ import type { OptionalKeyOnly, RequiredKeyOnly } from './operations.js';
4
+ import type { SQLWrapper } from './sql/sql.js';
5
+ import { TableName } from './table.utils.js';
6
+ import type { Simplify, Update } from './utils.js';
7
+
8
+ export interface TableConfig<TColumn extends Column = Column<any>> {
9
+ name: string;
10
+ schema: string | undefined;
11
+ columns: Record<string, TColumn>;
12
+ dialect: string;
13
+ }
14
+
15
+ export type UpdateTableConfig<T extends TableConfig, TUpdate extends Partial<TableConfig>> = Required<
16
+ Update<T, TUpdate>
17
+ >;
18
+
19
+ /** @internal */
20
+ export const Schema = Symbol.for('drizzle:Schema');
21
+
22
+ /** @internal */
23
+ export const Columns = Symbol.for('drizzle:Columns');
24
+
25
+ /** @internal */
26
+ export const ExtraConfigColumns = Symbol.for('drizzle:ExtraConfigColumns');
27
+
28
+ /** @internal */
29
+ export const OriginalName = Symbol.for('drizzle:OriginalName');
30
+
31
+ /** @internal */
32
+ export const BaseName = Symbol.for('drizzle:BaseName');
33
+
34
+ /** @internal */
35
+ export const IsAlias = Symbol.for('drizzle:IsAlias');
36
+
37
+ /** @internal */
38
+ export const ExtraConfigBuilder = Symbol.for('drizzle:ExtraConfigBuilder');
39
+
40
+ const IsDrizzleTable = Symbol.for('drizzle:IsDrizzleTable');
41
+
42
+ export interface Table<
43
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
+ T extends TableConfig = TableConfig,
45
+ > extends SQLWrapper {
46
+ // SQLWrapper runtime implementation is defined in 'sql/sql.ts'
47
+ }
48
+
49
+ export class Table<T extends TableConfig = TableConfig> implements SQLWrapper {
50
+ static readonly [entityKind]: string = 'Table';
51
+
52
+ declare readonly _: {
53
+ readonly brand: 'Table';
54
+ readonly config: T;
55
+ readonly name: T['name'];
56
+ readonly schema: T['schema'];
57
+ readonly columns: T['columns'];
58
+ readonly inferSelect: InferSelectModel<Table<T>>;
59
+ readonly inferInsert: InferInsertModel<Table<T>>;
60
+ };
61
+
62
+ declare readonly $inferSelect: InferSelectModel<Table<T>>;
63
+ declare readonly $inferInsert: InferInsertModel<Table<T>>;
64
+
65
+ /** @internal */
66
+ static readonly Symbol = {
67
+ Name: TableName as typeof TableName,
68
+ Schema: Schema as typeof Schema,
69
+ OriginalName: OriginalName as typeof OriginalName,
70
+ Columns: Columns as typeof Columns,
71
+ ExtraConfigColumns: ExtraConfigColumns as typeof ExtraConfigColumns,
72
+ BaseName: BaseName as typeof BaseName,
73
+ IsAlias: IsAlias as typeof IsAlias,
74
+ ExtraConfigBuilder: ExtraConfigBuilder as typeof ExtraConfigBuilder,
75
+ };
76
+
77
+ /**
78
+ * @internal
79
+ * Can be changed if the table is aliased.
80
+ */
81
+ [TableName]: string;
82
+
83
+ /**
84
+ * @internal
85
+ * Used to store the original name of the table, before any aliasing.
86
+ */
87
+ [OriginalName]: string;
88
+
89
+ /** @internal */
90
+ [Schema]: string | undefined;
91
+
92
+ /** @internal */
93
+ [Columns]!: T['columns'];
94
+
95
+ /** @internal */
96
+ [ExtraConfigColumns]!: Record<string, unknown>;
97
+
98
+ /**
99
+ * @internal
100
+ * Used to store the table name before the transformation via the `tableCreator` functions.
101
+ */
102
+ [BaseName]: string;
103
+
104
+ /** @internal */
105
+ [IsAlias] = false;
106
+
107
+ /** @internal */
108
+ [IsDrizzleTable] = true;
109
+
110
+ /** @internal */
111
+ [ExtraConfigBuilder]: ((self: any) => Record<string, unknown> | unknown[]) | undefined = undefined;
112
+
113
+ constructor(name: string, schema: string | undefined, baseName: string) {
114
+ this[TableName] = this[OriginalName] = name;
115
+ this[Schema] = schema;
116
+ this[BaseName] = baseName;
117
+ }
118
+ }
119
+
120
+ export function isTable(table: unknown): table is Table {
121
+ return typeof table === 'object' && table !== null && IsDrizzleTable in table;
122
+ }
123
+
124
+ /**
125
+ * Any table with a specified boundary.
126
+ *
127
+ * @example
128
+ ```ts
129
+ // Any table with a specific name
130
+ type AnyUsersTable = AnyTable<{ name: 'users' }>;
131
+ ```
132
+ *
133
+ * To describe any table with any config, simply use `Table` without any type arguments, like this:
134
+ *
135
+ ```ts
136
+ function needsTable(table: Table) {
137
+ ...
138
+ }
139
+ ```
140
+ */
141
+ export type AnyTable<TPartial extends Partial<TableConfig>> = Table<UpdateTableConfig<TableConfig, TPartial>>;
142
+
143
+ export function getTableName<T extends Table>(table: T): T['_']['name'] {
144
+ return table[TableName];
145
+ }
146
+
147
+ export function getTableUniqueName<T extends Table>(table: T): `${T['_']['schema']}.${T['_']['name']}` {
148
+ return `${table[Schema] ?? 'public'}.${table[TableName]}`;
149
+ }
150
+
151
+ export type MapColumnName<TName extends string, TColumn extends Column, TDBColumNames extends boolean> =
152
+ TDBColumNames extends true ? TColumn['_']['name']
153
+ : TName;
154
+
155
+ export type InferModelFromColumns<
156
+ TColumns extends Record<string, Column>,
157
+ TInferMode extends 'select' | 'insert' = 'select',
158
+ TConfig extends { dbColumnNames: boolean; override?: boolean } = { dbColumnNames: false; override: false },
159
+ > = Simplify<
160
+ TInferMode extends 'insert' ?
161
+ & {
162
+ [
163
+ Key in keyof TColumns & string as RequiredKeyOnly<
164
+ MapColumnName<Key, TColumns[Key], TConfig['dbColumnNames']>,
165
+ TColumns[Key]
166
+ >
167
+ ]: GetColumnData<TColumns[Key], 'query'>;
168
+ }
169
+ & {
170
+ [
171
+ Key in keyof TColumns & string as OptionalKeyOnly<
172
+ MapColumnName<Key, TColumns[Key], TConfig['dbColumnNames']>,
173
+ TColumns[Key],
174
+ TConfig['override']
175
+ >
176
+ ]?: GetColumnData<TColumns[Key], 'query'> | undefined;
177
+ }
178
+ : {
179
+ [
180
+ Key in keyof TColumns & string as MapColumnName<
181
+ Key,
182
+ TColumns[Key],
183
+ TConfig['dbColumnNames']
184
+ >
185
+ ]: GetColumnData<TColumns[Key], 'query'>;
186
+ }
187
+ >;
188
+
189
+ /** @deprecated Use one of the alternatives: {@link InferSelectModel} / {@link InferInsertModel}, or `table.$inferSelect` / `table.$inferInsert`
190
+ */
191
+ export type InferModel<
192
+ TTable extends Table,
193
+ TInferMode extends 'select' | 'insert' = 'select',
194
+ TConfig extends { dbColumnNames: boolean } = { dbColumnNames: false },
195
+ > = InferModelFromColumns<TTable['_']['columns'], TInferMode, TConfig>;
196
+
197
+ export type InferSelectModel<
198
+ TTable extends Table,
199
+ TConfig extends { dbColumnNames: boolean } = { dbColumnNames: false },
200
+ > = InferModelFromColumns<TTable['_']['columns'], 'select', TConfig>;
201
+
202
+ export type InferInsertModel<
203
+ TTable extends Table,
204
+ TConfig extends { dbColumnNames: boolean; override?: boolean } = { dbColumnNames: false; override: false },
205
+ > = InferModelFromColumns<TTable['_']['columns'], 'insert', TConfig>;
206
+
207
+ export type InferEnum<T> = T extends { enumValues: readonly (infer U)[] } ? U
208
+ : never;
@@ -0,0 +1,2 @@
1
+ /** @internal */
2
+ export const TableName = Symbol.for('drizzle:Name');
@@ -0,0 +1,3 @@
1
+ export function iife<T extends unknown[], U>(fn: (...args: T) => U, ...args: T): U {
2
+ return fn(...args);
3
+ }
@@ -0,0 +1,11 @@
1
+ /** @internal */
2
+ interface Span {
3
+ setAttributes(attributes: Record<string, string>): void;
4
+ }
5
+
6
+ /** @internal */
7
+ export const tracer = {
8
+ startActiveSpan<F extends (span?: Span) => unknown>(_name: string, fn: F): ReturnType<F> {
9
+ return fn() as ReturnType<F>;
10
+ },
11
+ };
@@ -0,0 +1,357 @@
1
+ import type { Cache } from './cache/core/cache.js';
2
+ import type { AnyColumn } from './column.js';
3
+ import { Column } from './column.js';
4
+ import { is } from './entity.js';
5
+ import type { Logger } from './logger.js';
6
+ import type { SelectedFieldsOrdered } from './operations.js';
7
+ import type { TableLike } from './query-builders/select.types.js';
8
+ import { Param, SQL, View } from './sql/sql.js';
9
+ import type { DriverValueDecoder } from './sql/sql.js';
10
+ import { Subquery } from './subquery.js';
11
+ import { getTableName, Table } from './table.js';
12
+ import { ViewBaseConfig } from './view-common.js';
13
+
14
+ /** @internal */
15
+ export function mapResultRow<TResult>(
16
+ columns: SelectedFieldsOrdered<AnyColumn>,
17
+ row: unknown[],
18
+ joinsNotNullableMap: Record<string, boolean> | undefined,
19
+ ): TResult {
20
+ // Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise
21
+ const nullifyMap: Record<string, string | false> = {};
22
+
23
+ const result = columns.reduce<Record<string, any>>(
24
+ (result, { path, field }, columnIndex) => {
25
+ let decoder: DriverValueDecoder<unknown, unknown>;
26
+ if (is(field, Column)) {
27
+ decoder = field;
28
+ } else if (is(field, SQL)) {
29
+ decoder = field.decoder;
30
+ } else if (is(field, Subquery)) {
31
+ decoder = field._.sql.decoder;
32
+ } else {
33
+ decoder = field.sql.decoder;
34
+ }
35
+ let node = result;
36
+ for (const [pathChunkIndex, pathChunk] of path.entries()) {
37
+ if (pathChunkIndex < path.length - 1) {
38
+ if (!(pathChunk in node)) {
39
+ node[pathChunk] = {};
40
+ }
41
+ node = node[pathChunk];
42
+ } else {
43
+ const rawValue = row[columnIndex]!;
44
+ const value = node[pathChunk] = rawValue === null ? null : decoder.mapFromDriverValue(rawValue);
45
+
46
+ if (joinsNotNullableMap && is(field, Column) && path.length === 2) {
47
+ const objectName = path[0]!;
48
+ if (!(objectName in nullifyMap)) {
49
+ nullifyMap[objectName] = value === null ? getTableName(field.table) : false;
50
+ } else if (
51
+ typeof nullifyMap[objectName] === 'string' && nullifyMap[objectName] !== getTableName(field.table)
52
+ ) {
53
+ nullifyMap[objectName] = false;
54
+ }
55
+ }
56
+ }
57
+ }
58
+ return result;
59
+ },
60
+ {},
61
+ );
62
+
63
+ // Nullify all nested objects from nullifyMap that are nullable
64
+ if (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {
65
+ for (const [objectName, tableName] of Object.entries(nullifyMap)) {
66
+ if (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {
67
+ result[objectName] = null;
68
+ }
69
+ }
70
+ }
71
+
72
+ return result as TResult;
73
+ }
74
+
75
+ /** @internal */
76
+ export function orderSelectedFields<TColumn extends AnyColumn>(
77
+ fields: Record<string, unknown>,
78
+ pathPrefix?: string[],
79
+ ): SelectedFieldsOrdered<TColumn> {
80
+ return Object.entries(fields).reduce<SelectedFieldsOrdered<AnyColumn>>((result, [name, field]) => {
81
+ if (typeof name !== 'string') {
82
+ return result;
83
+ }
84
+
85
+ const newPath = pathPrefix ? [...pathPrefix, name] : [name];
86
+ if (is(field, Column) || is(field, SQL) || is(field, SQL.Aliased) || is(field, Subquery)) {
87
+ result.push({ path: newPath, field });
88
+ } else if (is(field, Table)) {
89
+ result.push(...orderSelectedFields(field[Table.Symbol.Columns], newPath));
90
+ } else {
91
+ result.push(...orderSelectedFields(field as Record<string, unknown>, newPath));
92
+ }
93
+ return result;
94
+ }, []) as SelectedFieldsOrdered<TColumn>;
95
+ }
96
+
97
+ export function haveSameKeys(left: Record<string, unknown>, right: Record<string, unknown>) {
98
+ const leftKeys = Object.keys(left);
99
+ const rightKeys = Object.keys(right);
100
+
101
+ if (leftKeys.length !== rightKeys.length) {
102
+ return false;
103
+ }
104
+
105
+ for (const [index, key] of leftKeys.entries()) {
106
+ if (key !== rightKeys[index]) {
107
+ return false;
108
+ }
109
+ }
110
+
111
+ return true;
112
+ }
113
+
114
+ /** @internal */
115
+ export function mapUpdateSet(table: Table, values: Record<string, unknown>): UpdateSet {
116
+ const columns = table[Table.Symbol.Columns];
117
+
118
+ const entries: [string, UpdateSet[string]][] = Object.entries(values)
119
+ .filter(([, value]) => value !== undefined)
120
+ .map(([key, value]) => {
121
+ // A key with no column of that name would be dropped by buildUpdateSet, which
122
+ // walks the table's columns rather than this object: the write would vanish and
123
+ // the statement would still report rows updated. Refuse it here instead.
124
+ if (!(key in columns)) {
125
+ throw new Error(
126
+ `Cannot set "${key}" on "${getTableName(table)}": the table has no such column. `
127
+ + `It has: ${Object.keys(columns).join(', ')}. `
128
+ + `A column added by a migration must be added to the table definition before it can be written.`,
129
+ );
130
+ }
131
+
132
+ // eslint-disable-next-line unicorn/prefer-ternary
133
+ if (is(value, SQL) || is(value, Column)) {
134
+ return [key, value];
135
+ } else {
136
+ return [key, new Param(value, columns[key])];
137
+ }
138
+ });
139
+
140
+ if (entries.length === 0) {
141
+ throw new Error('No values to set');
142
+ }
143
+
144
+ return Object.fromEntries(entries);
145
+ }
146
+
147
+ export type UpdateSet = Record<string, SQL | Param | AnyColumn | null | undefined>;
148
+
149
+ export type OneOrMany<T> = T | T[];
150
+
151
+ export type Update<T, TUpdate> =
152
+ & {
153
+ [K in Exclude<keyof T, keyof TUpdate>]: T[K];
154
+ }
155
+ & TUpdate;
156
+
157
+ export type Simplify<T> =
158
+ & {
159
+ // @ts-ignore - "Type parameter 'K' has a circular constraint", not sure why
160
+ [K in keyof T]: T[K];
161
+ }
162
+ & {};
163
+
164
+ export type Not<T extends boolean> = T extends true ? false : true;
165
+
166
+ export type IsNever<T> = [T] extends [never] ? true : false;
167
+
168
+ export type IsUnion<T, U extends T = T> = (T extends any ? (U extends T ? false : true) : never) extends false ? false
169
+ : true;
170
+
171
+ export type SingleKeyObject<T, TError extends string, K = keyof T> = IsNever<K> extends true ? never
172
+ : IsUnion<K> extends true ? DrizzleTypeError<TError>
173
+ : T;
174
+
175
+ export type FromSingleKeyObject<T, Result, TError extends string, K = keyof T> = IsNever<K> extends true ? never
176
+ : IsUnion<K> extends true ? DrizzleTypeError<TError>
177
+ : Result;
178
+
179
+ export type SimplifyMappedType<T> = [T] extends [unknown] ? T : never;
180
+
181
+ export type ShallowRecord<K extends keyof any, T> = SimplifyMappedType<{ [P in K]: T }>;
182
+
183
+ export type Assume<T, U> = T extends U ? T : U;
184
+
185
+ export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
186
+
187
+ export interface DrizzleTypeError<T extends string> {
188
+ $drizzleTypeError: T;
189
+ }
190
+
191
+ export type ValueOrArray<T> = T | T[];
192
+
193
+ /** @internal */
194
+ export function applyMixins(baseClass: any, extendedClasses: any[]) {
195
+ for (const extendedClass of extendedClasses) {
196
+ for (const name of Object.getOwnPropertyNames(extendedClass.prototype)) {
197
+ if (name === 'constructor') continue;
198
+
199
+ Object.defineProperty(
200
+ baseClass.prototype,
201
+ name,
202
+ Object.getOwnPropertyDescriptor(extendedClass.prototype, name) || Object.create(null),
203
+ );
204
+ }
205
+ }
206
+ }
207
+
208
+ export type Or<T1, T2> = T1 extends true ? true : T2 extends true ? true : false;
209
+
210
+ export type IfThenElse<If, Then, Else> = If extends true ? Then : Else;
211
+
212
+ export type PromiseOf<T> = T extends Promise<infer U> ? U : T;
213
+
214
+ export type Writable<T> = {
215
+ -readonly [P in keyof T]: T[P];
216
+ };
217
+
218
+ export type NonArray<T> = T extends any[] ? never : T;
219
+
220
+ export function getTableColumns<T extends Table>(table: T): T['_']['columns'] {
221
+ return table[Table.Symbol.Columns];
222
+ }
223
+
224
+ export function getViewSelectedFields<T extends View>(view: T): T['_']['selectedFields'] {
225
+ return view[ViewBaseConfig].selectedFields;
226
+ }
227
+
228
+ /** @internal */
229
+ export function getTableLikeName(table: TableLike): string | undefined {
230
+ return is(table, Subquery)
231
+ ? table._.alias
232
+ : is(table, View)
233
+ ? table[ViewBaseConfig].name
234
+ : is(table, SQL)
235
+ ? undefined
236
+ : table[Table.Symbol.IsAlias]
237
+ ? table[Table.Symbol.Name]
238
+ : table[Table.Symbol.BaseName];
239
+ }
240
+
241
+ export type ColumnsWithTable<
242
+ TTableName extends string,
243
+ TForeignTableName extends string,
244
+ TColumns extends AnyColumn<{ tableName: TTableName }>[],
245
+ > = { [Key in keyof TColumns]: AnyColumn<{ tableName: TForeignTableName }> };
246
+
247
+ export type Casing = 'snake_case' | 'camelCase';
248
+
249
+ export interface DrizzleConfig<TSchema extends Record<string, unknown> = Record<string, never>> {
250
+ logger?: boolean | Logger;
251
+ schema?: TSchema;
252
+ casing?: Casing;
253
+ cache?: Cache;
254
+ /** Wraps every statement the postgres-js session runs; see `StatementWatch`. */
255
+ statementWatch?: import('./postgres-js/session.js').StatementWatch;
256
+ }
257
+ export type ValidateShape<T, ValidShape, TResult = T> = T extends ValidShape
258
+ ? Exclude<keyof T, keyof ValidShape> extends never ? TResult
259
+ : DrizzleTypeError<
260
+ `Invalid key(s): ${Exclude<(keyof T) & (string | number | bigint | boolean | null | undefined), keyof ValidShape>}`
261
+ >
262
+ : never;
263
+
264
+ export type KnownKeysOnly<T, U> = {
265
+ [K in keyof T]: K extends keyof U ? T[K] : never;
266
+ };
267
+
268
+ export type IsAny<T> = 0 extends (1 & T) ? true : false;
269
+
270
+ /** @internal */
271
+ export function getColumnNameAndConfig<
272
+ TConfig extends Record<string, any> | undefined,
273
+ >(a: string | TConfig | undefined, b: TConfig | undefined) {
274
+ return {
275
+ name: typeof a === 'string' && a.length > 0 ? a : '' as string,
276
+ config: typeof a === 'object' ? a : b as TConfig,
277
+ };
278
+ }
279
+
280
+ export type IfNotImported<T, Y, N> = unknown extends T ? Y : N;
281
+
282
+ export type ImportTypeError<TPackageName extends string> =
283
+ `Please install \`${TPackageName}\` to allow Drizzle ORM to connect to the database`;
284
+
285
+ export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Keys extends any
286
+ ? Required<Pick<T, Keys>> & Partial<Omit<T, Keys>>
287
+ : never;
288
+
289
+ type ExpectedConfigShape = {
290
+ logger?: boolean | {
291
+ logQuery(query: string, params: unknown[]): void;
292
+ };
293
+ schema?: Record<string, never>;
294
+ casing?: 'snake_case' | 'camelCase';
295
+ };
296
+
297
+ // If this errors, you must update config shape checker function with new config specs
298
+ const _: DrizzleConfig = {} as ExpectedConfigShape;
299
+ const __: ExpectedConfigShape = {} as DrizzleConfig;
300
+
301
+ export function isConfig(data: any): boolean {
302
+ if (typeof data !== 'object' || data === null) return false;
303
+
304
+ if (data.constructor.name !== 'Object') return false;
305
+
306
+ if ('logger' in data) {
307
+ const type = typeof data['logger'];
308
+ if (
309
+ type !== 'boolean' && (type !== 'object' || typeof data['logger']['logQuery'] !== 'function')
310
+ && type !== 'undefined'
311
+ ) return false;
312
+
313
+ return true;
314
+ }
315
+
316
+ if ('schema' in data) {
317
+ const type = typeof data['schema'];
318
+ if (type !== 'object' && type !== 'undefined') return false;
319
+
320
+ return true;
321
+ }
322
+
323
+ if ('casing' in data) {
324
+ const type = typeof data['casing'];
325
+ if (type !== 'string' && type !== 'undefined') return false;
326
+
327
+ return true;
328
+ }
329
+
330
+ if ('mode' in data) {
331
+ if (data['mode'] !== 'default' || data['mode'] !== 'planetscale' || data['mode'] !== undefined) return false;
332
+
333
+ return true;
334
+ }
335
+
336
+ if ('connection' in data) {
337
+ const type = typeof data['connection'];
338
+ if (type !== 'string' && type !== 'object' && type !== 'undefined') return false;
339
+
340
+ return true;
341
+ }
342
+
343
+ if ('client' in data) {
344
+ const type = typeof data['client'];
345
+ if (type !== 'object' && type !== 'function' && type !== 'undefined') return false;
346
+
347
+ return true;
348
+ }
349
+
350
+ if (Object.keys(data).length === 0) return true;
351
+
352
+ return false;
353
+ }
354
+
355
+ export type NeonAuthToken = string | (() => string | Promise<string>);
356
+
357
+ export const textDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder();
@@ -0,0 +1,4 @@
1
+ // @ts-ignore - imported using Rollup json plugin
2
+ export { version as npmVersion } from '../package.json';
3
+ // In version 7, we changed the PostgreSQL indexes API
4
+ export const compatibilityVersion = 10;
@@ -0,0 +1 @@
1
+ export const ViewBaseConfig = Symbol.for('drizzle:ViewBaseConfig');
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod/v4'
2
+
3
+ export function branded<T extends z.ZodType, B extends string>(
4
+ schema: T,
5
+ _brand: B,
6
+ refine?: (value: z.infer<T>) => boolean,
7
+ message?: string,
8
+ ) {
9
+ const refined = refine
10
+ ? schema.refine(refine, { message: message ?? `Invalid ${_brand}` })
11
+ : schema
12
+ return refined.brand<B>()
13
+ }
@@ -0,0 +1,5 @@
1
+ // Auto-generated by scaffold-namespace — do not edit re-export lines
2
+ // Run: node scripts/scaffold-namespace.js generate manifests/zod--v4.json
3
+ // Manual symbols are not included — they live in separate files.
4
+
5
+ export type { coerce } from 'zod/v4'
@@ -0,0 +1,6 @@
1
+ // Auto-generated by scaffold-namespace — do not edit re-export lines
2
+ // Run: node scripts/scaffold-namespace.js generate manifests/zod--v4.json
3
+ // Manual symbols are not included — they live in separate files.
4
+
5
+ export type { catch } from 'zod/v4'
6
+ export { _default, check, codec, describe, discriminatedUnion, exactOptional, intersection, invertCodec, keyof, looseObject, looseRecord, meta, nonoptional, nullable, nullish, optional, partialRecord, pipe, prefault, preprocess, readonly, refine, strictObject, superRefine, templateLiteral, transform, union, xor } from 'zod/v4'
@@ -0,0 +1,5 @@
1
+ // Auto-generated by scaffold-namespace — do not edit re-export lines
2
+ // Run: node scripts/scaffold-namespace.js generate manifests/zod--v4.json
3
+ // Manual symbols are not included — they live in separate files.
4
+
5
+ export { decode, decodeAsync, encode, encodeAsync, safeDecode, safeDecodeAsync, safeEncode, safeEncodeAsync } from 'zod/v4'
@@ -0,0 +1,6 @@
1
+ // Auto-generated by scaffold-namespace — do not edit re-export lines
2
+ // Run: node scripts/scaffold-namespace.js generate manifests/zod--v4.json
3
+ // Manual symbols are not included — they live in separate files.
4
+
5
+ export type { flattenError, formatError, prettifyError, treeifyError } from 'zod/v4'
6
+ export { getErrorMap, setErrorMap } from 'zod/v4'