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,150 @@
1
+ import type {
2
+ ColumnBuilderBaseConfig,
3
+ ColumnBuilderRuntimeConfig,
4
+ ColumnDataType,
5
+ GeneratedColumnConfig,
6
+ GeneratedIdentityConfig,
7
+ } from './column-builder.js';
8
+ import { entityKind } from './entity.js';
9
+ import type { DriverValueMapper, SQL, SQLWrapper } from './sql/sql.js';
10
+ import type { Table } from './table.js';
11
+ import type { Update } from './utils.js';
12
+
13
+ export interface ColumnBaseConfig<
14
+ TDataType extends ColumnDataType,
15
+ TColumnType extends string,
16
+ > extends ColumnBuilderBaseConfig<TDataType, TColumnType> {
17
+ tableName: string;
18
+ notNull: boolean;
19
+ hasDefault: boolean;
20
+ isPrimaryKey: boolean;
21
+ isAutoincrement: boolean;
22
+ hasRuntimeDefault: boolean;
23
+ }
24
+
25
+ export type ColumnTypeConfig<T extends ColumnBaseConfig<ColumnDataType, string>, TTypeConfig extends object> = T & {
26
+ brand: 'Column';
27
+ tableName: T['tableName'];
28
+ name: T['name'];
29
+ dataType: T['dataType'];
30
+ columnType: T['columnType'];
31
+ data: T['data'];
32
+ driverParam: T['driverParam'];
33
+ notNull: T['notNull'];
34
+ hasDefault: T['hasDefault'];
35
+ isPrimaryKey: T['isPrimaryKey'];
36
+ isAutoincrement: T['isAutoincrement'];
37
+ hasRuntimeDefault: T['hasRuntimeDefault'];
38
+ enumValues: T['enumValues'];
39
+ baseColumn: T extends { baseColumn: infer U } ? U : unknown;
40
+ generated: GeneratedColumnConfig<T['data']> | undefined;
41
+ identity: undefined | 'always' | 'byDefault';
42
+ } & TTypeConfig;
43
+
44
+ export type ColumnRuntimeConfig<TData, TRuntimeConfig extends object> = ColumnBuilderRuntimeConfig<
45
+ TData,
46
+ TRuntimeConfig
47
+ >;
48
+
49
+ export interface Column<
50
+ T extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,
51
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
52
+ TRuntimeConfig extends object = object,
53
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
54
+ TTypeConfig extends object = object,
55
+ > extends DriverValueMapper<T['data'], T['driverParam']>, SQLWrapper {
56
+ // SQLWrapper runtime implementation is defined in 'sql/sql.ts'
57
+ }
58
+ /*
59
+ `Column` only accepts a full `ColumnConfig` as its generic.
60
+ To infer parts of the config, use `AnyColumn` that accepts a partial config.
61
+ See `GetColumnData` for example usage of inferring.
62
+ */
63
+ export abstract class Column<
64
+ T extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,
65
+ TRuntimeConfig extends object = object,
66
+ TTypeConfig extends object = object,
67
+ > implements DriverValueMapper<T['data'], T['driverParam']>, SQLWrapper {
68
+ static readonly [entityKind]: string = 'Column';
69
+
70
+ declare readonly _: ColumnTypeConfig<T, TTypeConfig>;
71
+
72
+ readonly name: string;
73
+ readonly keyAsName: boolean;
74
+ readonly primary: boolean;
75
+ readonly notNull: boolean;
76
+ readonly default: T['data'] | SQL | undefined;
77
+ readonly defaultFn: (() => T['data'] | SQL) | undefined;
78
+ readonly onUpdateFn: (() => T['data'] | SQL) | undefined;
79
+ readonly hasDefault: boolean;
80
+ readonly isUnique: boolean;
81
+ readonly uniqueName: string | undefined;
82
+ readonly uniqueType: string | undefined;
83
+ readonly dataType: T['dataType'];
84
+ readonly columnType: T['columnType'];
85
+ readonly enumValues: T['enumValues'] = undefined;
86
+ readonly generated: GeneratedColumnConfig<T['data']> | undefined = undefined;
87
+ readonly generatedIdentity: GeneratedIdentityConfig | undefined = undefined;
88
+ readonly collation: string | undefined = undefined;
89
+
90
+ protected config: ColumnRuntimeConfig<T['data'], TRuntimeConfig>;
91
+
92
+ constructor(
93
+ readonly table: Table,
94
+ config: ColumnRuntimeConfig<T['data'], TRuntimeConfig>,
95
+ ) {
96
+ this.config = config;
97
+ this.name = config.name;
98
+ this.keyAsName = config.keyAsName;
99
+ this.notNull = config.notNull;
100
+ this.default = config.default;
101
+ this.defaultFn = config.defaultFn;
102
+ this.onUpdateFn = config.onUpdateFn;
103
+ this.hasDefault = config.hasDefault;
104
+ this.primary = config.primaryKey;
105
+ this.isUnique = config.isUnique;
106
+ this.uniqueName = config.uniqueName;
107
+ this.uniqueType = config.uniqueType;
108
+ this.dataType = config.dataType as T['dataType'];
109
+ this.columnType = config.columnType;
110
+ this.generated = config.generated;
111
+ this.generatedIdentity = config.generatedIdentity;
112
+ this.collation = config.collation;
113
+ }
114
+
115
+ abstract getSQLType(): string;
116
+
117
+ mapFromDriverValue(value: unknown): unknown {
118
+ return value;
119
+ }
120
+
121
+ mapToDriverValue(value: unknown): unknown {
122
+ return value;
123
+ }
124
+
125
+ // ** @internal */
126
+ shouldDisableInsert(): boolean {
127
+ return this.config.generated !== undefined && this.config.generated.type !== 'byDefault';
128
+ }
129
+ }
130
+
131
+ export type UpdateColConfig<
132
+ T extends ColumnBaseConfig<ColumnDataType, string>,
133
+ TUpdate extends Partial<ColumnBaseConfig<ColumnDataType, string>>,
134
+ > = Update<T, TUpdate>;
135
+
136
+ export type AnyColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = Column<
137
+ Required<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>
138
+ >;
139
+
140
+ export type GetColumnData<TColumn extends Column, TInferMode extends 'query' | 'raw' = 'query'> =
141
+ // dprint-ignore
142
+ TInferMode extends 'raw' // Raw mode
143
+ ? TColumn['_']['data'] // Just return the underlying type
144
+ : TColumn['_']['notNull'] extends true // Query mode
145
+ ? TColumn['_']['data'] // Query mode, not null
146
+ : TColumn['_']['data'] | null; // Query mode, nullable
147
+
148
+ export type InferColumnsDataTypes<TColumns extends Record<string, Column>> = {
149
+ [Key in keyof TColumns]: GetColumnData<TColumns[Key], 'query'>;
150
+ };
@@ -0,0 +1,42 @@
1
+ export const entityKind = Symbol.for('drizzle:entityKind');
2
+ export const hasOwnEntityKind = Symbol.for('drizzle:hasOwnEntityKind');
3
+
4
+ export interface DrizzleEntity {
5
+ [entityKind]: string;
6
+ }
7
+
8
+ export type DrizzleEntityClass<T> =
9
+ & ((abstract new(...args: any[]) => T) | (new(...args: any[]) => T))
10
+ & DrizzleEntity;
11
+
12
+ export function is<T extends DrizzleEntityClass<any>>(value: any, type: T): value is InstanceType<T> {
13
+ if (!value || typeof value !== 'object') {
14
+ return false;
15
+ }
16
+
17
+ if (value instanceof type) { // eslint-disable-line no-instanceof/no-instanceof
18
+ return true;
19
+ }
20
+
21
+ if (!Object.prototype.hasOwnProperty.call(type, entityKind)) {
22
+ throw new Error(
23
+ `Class "${
24
+ type.name ?? '<unknown>'
25
+ }" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`,
26
+ );
27
+ }
28
+
29
+ let cls = Object.getPrototypeOf(value).constructor;
30
+ if (cls) {
31
+ // Traverse the prototype chain to find the entityKind
32
+ while (cls) {
33
+ if (entityKind in cls && cls[entityKind] === type[entityKind]) {
34
+ return true;
35
+ }
36
+
37
+ cls = Object.getPrototypeOf(cls);
38
+ }
39
+ }
40
+
41
+ return false;
42
+ }
@@ -0,0 +1,33 @@
1
+ import { entityKind } from './entity.js';
2
+
3
+ export class DrizzleError extends Error {
4
+ static readonly [entityKind]: string = 'DrizzleError';
5
+
6
+ constructor({ message, cause }: { message?: string; cause?: unknown }) {
7
+ super(message);
8
+ this.name = 'DrizzleError';
9
+ this.cause = cause;
10
+ }
11
+ }
12
+
13
+ export class DrizzleQueryError extends Error {
14
+ constructor(
15
+ public query: string,
16
+ public params: any[],
17
+ public override cause?: Error,
18
+ ) {
19
+ super(`Failed query: ${query}\nparams: ${params}`);
20
+ Error.captureStackTrace(this, DrizzleQueryError);
21
+
22
+ // ES2022+: preserves original error on `.cause`
23
+ if (cause) (this as any).cause = cause;
24
+ }
25
+ }
26
+
27
+ export class TransactionRollbackError extends DrizzleError {
28
+ static override readonly [entityKind]: string = 'TransactionRollbackError';
29
+
30
+ constructor() {
31
+ super({ message: 'Rollback' });
32
+ }
33
+ }
@@ -0,0 +1,14 @@
1
+ export * from './alias.js';
2
+ export * from './column-builder.js';
3
+ export * from './column.js';
4
+ export * from './entity.js';
5
+ export * from './errors.js';
6
+ export * from './logger.js';
7
+ export * from './operations.js';
8
+ export * from './query-promise.js';
9
+ export * from './relations.js';
10
+ export * from './sql/index.js';
11
+ export * from './subquery.js';
12
+ export * from './table.js';
13
+ export * from './utils.js';
14
+ export * from './view-common.js';
@@ -0,0 +1,47 @@
1
+ import { entityKind } from './entity.js';
2
+
3
+ export interface Logger {
4
+ logQuery(query: string, params: unknown[]): void;
5
+ }
6
+
7
+ export interface LogWriter {
8
+ write(message: string): void;
9
+ }
10
+
11
+ export class ConsoleLogWriter implements LogWriter {
12
+ static readonly [entityKind]: string = 'ConsoleLogWriter';
13
+
14
+ write(message: string) {
15
+ console.log(message);
16
+ }
17
+ }
18
+
19
+ export class DefaultLogger implements Logger {
20
+ static readonly [entityKind]: string = 'DefaultLogger';
21
+
22
+ readonly writer: LogWriter;
23
+
24
+ constructor(config?: { writer: LogWriter }) {
25
+ this.writer = config?.writer ?? new ConsoleLogWriter();
26
+ }
27
+
28
+ logQuery(query: string, params: unknown[]): void {
29
+ const stringifiedParams = params.map((p) => {
30
+ try {
31
+ return JSON.stringify(p);
32
+ } catch {
33
+ return String(p);
34
+ }
35
+ });
36
+ const paramsStr = stringifiedParams.length ? ` -- params: [${stringifiedParams.join(', ')}]` : '';
37
+ this.writer.write(`Query: ${query}${paramsStr}`);
38
+ }
39
+ }
40
+
41
+ export class NoopLogger implements Logger {
42
+ static readonly [entityKind]: string = 'NoopLogger';
43
+
44
+ logQuery(): void {
45
+ // noop
46
+ }
47
+ }
@@ -0,0 +1,45 @@
1
+ import type { AnyColumn, Column } from './column.js';
2
+ import type { SQL } from './sql/sql.js';
3
+ import type { Subquery } from './subquery.js';
4
+ import type { Table } from './table.js';
5
+
6
+ export type RequiredKeyOnly<TKey extends string, T extends Column> = T extends AnyColumn<{
7
+ notNull: true;
8
+ hasDefault: false;
9
+ }> ? TKey
10
+ : never;
11
+
12
+ export type OptionalKeyOnly<TKey extends string, T extends Column, OverrideT extends boolean | undefined = false> =
13
+ TKey extends RequiredKeyOnly<TKey, T> ? never : T extends {
14
+ _: {
15
+ generated: undefined;
16
+ };
17
+ } ? (T extends {
18
+ _: {
19
+ identity: undefined;
20
+ };
21
+ } ? TKey
22
+ : T['_']['identity'] extends 'always' ? OverrideT extends true ? TKey : never
23
+ : TKey)
24
+ : never;
25
+
26
+ // TODO: SQL -> SQLWrapper
27
+ export type SelectedFieldsFlat<TColumn extends Column> = Record<
28
+ string,
29
+ TColumn | SQL | SQL.Aliased | Subquery
30
+ >;
31
+
32
+ export type SelectedFieldsFlatFull<TColumn extends Column> = Record<
33
+ string,
34
+ TColumn | SQL | SQL.Aliased
35
+ >;
36
+
37
+ export type SelectedFields<TColumn extends Column, TTable extends Table> = Record<
38
+ string,
39
+ SelectedFieldsFlat<TColumn>[string] | TTable | SelectedFieldsFlat<TColumn>
40
+ >;
41
+
42
+ export type SelectedFieldsOrdered<TColumn extends Column> = {
43
+ path: string[];
44
+ field: TColumn | SQL | SQL.Aliased | Subquery;
45
+ }[];
@@ -0,0 +1,12 @@
1
+ import { TableAliasProxyHandler } from '../alias.js';
2
+ import type { BuildAliasTable } from './query-builders/select.types.js';
3
+
4
+ import type { PgTable } from './table.js';
5
+ import type { PgViewBase } from './view-base.js';
6
+
7
+ export function alias<TTable extends PgTable | PgViewBase, TAlias extends string>(
8
+ table: TTable,
9
+ alias: TAlias,
10
+ ): BuildAliasTable<TTable, TAlias> {
11
+ return new Proxy(table, new TableAliasProxyHandler(alias, false)) as any;
12
+ }
@@ -0,0 +1,32 @@
1
+ import { entityKind } from '../entity.js';
2
+ import type { SQL } from '../sql/index.js';
3
+ import type { PgTable } from './table.js';
4
+
5
+ export class CheckBuilder {
6
+ static readonly [entityKind]: string = 'PgCheckBuilder';
7
+
8
+ protected brand!: 'PgConstraintBuilder';
9
+
10
+ constructor(public name: string, public value: SQL) {}
11
+
12
+ /** @internal */
13
+ build(table: PgTable): Check {
14
+ return new Check(table, this);
15
+ }
16
+ }
17
+
18
+ export class Check {
19
+ static readonly [entityKind]: string = 'PgCheck';
20
+
21
+ readonly name: string;
22
+ readonly value: SQL;
23
+
24
+ constructor(public table: PgTable, builder: CheckBuilder) {
25
+ this.name = builder.name;
26
+ this.value = builder.value;
27
+ }
28
+ }
29
+
30
+ export function check(name: string, value: SQL): CheckBuilder {
31
+ return new CheckBuilder(name, value);
32
+ }
@@ -0,0 +1,71 @@
1
+ import { bigint } from './bigint.js';
2
+ import { bigserial } from './bigserial.js';
3
+ import { boolean } from './boolean.js';
4
+ import { char } from './char.js';
5
+ import { cidr } from './cidr.js';
6
+ import { customType } from './custom.js';
7
+ import { date } from './date.js';
8
+ import { doublePrecision } from './double-precision.js';
9
+ import { inet } from './inet.js';
10
+ import { integer } from './integer.js';
11
+ import { interval } from './interval.js';
12
+ import { json } from './json.js';
13
+ import { jsonb } from './jsonb.js';
14
+ import { line } from './line.js';
15
+ import { macaddr } from './macaddr.js';
16
+ import { macaddr8 } from './macaddr8.js';
17
+ import { numeric } from './numeric.js';
18
+ import { point } from './point.js';
19
+ import { geometry } from './postgis_extension/geometry.js';
20
+ import { real } from './real.js';
21
+ import { serial } from './serial.js';
22
+ import { smallint } from './smallint.js';
23
+ import { smallserial } from './smallserial.js';
24
+ import { text } from './text.js';
25
+ import { time } from './time.js';
26
+ import { timestamp } from './timestamp.js';
27
+ import { uuid } from './uuid.js';
28
+ import { varchar } from './varchar.js';
29
+ import { bit } from './vector_extension/bit.js';
30
+ import { halfvec } from './vector_extension/halfvec.js';
31
+ import { sparsevec } from './vector_extension/sparsevec.js';
32
+ import { vector } from './vector_extension/vector.js';
33
+
34
+ export function getPgColumnBuilders() {
35
+ return {
36
+ bigint,
37
+ bigserial,
38
+ boolean,
39
+ char,
40
+ cidr,
41
+ customType,
42
+ date,
43
+ doublePrecision,
44
+ inet,
45
+ integer,
46
+ interval,
47
+ json,
48
+ jsonb,
49
+ line,
50
+ macaddr,
51
+ macaddr8,
52
+ numeric,
53
+ point,
54
+ geometry,
55
+ real,
56
+ serial,
57
+ smallint,
58
+ smallserial,
59
+ text,
60
+ time,
61
+ timestamp,
62
+ uuid,
63
+ varchar,
64
+ bit,
65
+ halfvec,
66
+ sparsevec,
67
+ vector,
68
+ };
69
+ }
70
+
71
+ export type PgColumnsBuilders = ReturnType<typeof getPgColumnBuilders>;
@@ -0,0 +1,110 @@
1
+ import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '../../column-builder.js';
2
+ import type { ColumnBaseConfig } from '../../column.js';
3
+ import { entityKind } from '../../entity.js';
4
+ import type { AnyPgTable } from '../table.js';
5
+
6
+ import { getColumnNameAndConfig } from '../../utils.js';
7
+ import { PgColumn } from './common.js';
8
+ import { PgIntColumnBaseBuilder } from './int.common.js';
9
+
10
+ export type PgBigInt53BuilderInitial<TName extends string> = PgBigInt53Builder<{
11
+ name: TName;
12
+ dataType: 'number';
13
+ columnType: 'PgBigInt53';
14
+ data: number;
15
+ driverParam: number | string;
16
+ enumValues: undefined;
17
+ }>;
18
+
19
+ export class PgBigInt53Builder<T extends ColumnBuilderBaseConfig<'number', 'PgBigInt53'>>
20
+ extends PgIntColumnBaseBuilder<T>
21
+ {
22
+ static override readonly [entityKind]: string = 'PgBigInt53Builder';
23
+
24
+ constructor(name: T['name']) {
25
+ super(name, 'number', 'PgBigInt53');
26
+ }
27
+
28
+ /** @internal */
29
+ override build<TTableName extends string>(
30
+ table: AnyPgTable<{ name: TTableName }>,
31
+ ): PgBigInt53<MakeColumnConfig<T, TTableName>> {
32
+ return new PgBigInt53<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);
33
+ }
34
+ }
35
+
36
+ export class PgBigInt53<T extends ColumnBaseConfig<'number', 'PgBigInt53'>> extends PgColumn<T> {
37
+ static override readonly [entityKind]: string = 'PgBigInt53';
38
+
39
+ getSQLType(): string {
40
+ return 'bigint';
41
+ }
42
+
43
+ override mapFromDriverValue(value: number | string): number {
44
+ if (typeof value === 'number') {
45
+ return value;
46
+ }
47
+ return Number(value);
48
+ }
49
+ }
50
+
51
+ export type PgBigInt64BuilderInitial<TName extends string> = PgBigInt64Builder<{
52
+ name: TName;
53
+ dataType: 'bigint';
54
+ columnType: 'PgBigInt64';
55
+ data: bigint;
56
+ driverParam: string;
57
+ enumValues: undefined;
58
+ }>;
59
+
60
+ export class PgBigInt64Builder<T extends ColumnBuilderBaseConfig<'bigint', 'PgBigInt64'>>
61
+ extends PgIntColumnBaseBuilder<T>
62
+ {
63
+ static override readonly [entityKind]: string = 'PgBigInt64Builder';
64
+
65
+ constructor(name: T['name']) {
66
+ super(name, 'bigint', 'PgBigInt64');
67
+ }
68
+
69
+ /** @internal */
70
+ override build<TTableName extends string>(
71
+ table: AnyPgTable<{ name: TTableName }>,
72
+ ): PgBigInt64<MakeColumnConfig<T, TTableName>> {
73
+ return new PgBigInt64<MakeColumnConfig<T, TTableName>>(
74
+ table,
75
+ this.config as ColumnBuilderRuntimeConfig<any, any>,
76
+ );
77
+ }
78
+ }
79
+
80
+ export class PgBigInt64<T extends ColumnBaseConfig<'bigint', 'PgBigInt64'>> extends PgColumn<T> {
81
+ static override readonly [entityKind]: string = 'PgBigInt64';
82
+
83
+ getSQLType(): string {
84
+ return 'bigint';
85
+ }
86
+
87
+ // eslint-disable-next-line unicorn/prefer-native-coercion-functions
88
+ override mapFromDriverValue(value: string): bigint {
89
+ return BigInt(value);
90
+ }
91
+ }
92
+
93
+ export interface PgBigIntConfig<T extends 'number' | 'bigint' = 'number' | 'bigint'> {
94
+ mode: T;
95
+ }
96
+
97
+ export function bigint<TMode extends PgBigIntConfig['mode']>(
98
+ config: PgBigIntConfig<TMode>,
99
+ ): TMode extends 'number' ? PgBigInt53BuilderInitial<''> : PgBigInt64BuilderInitial<''>;
100
+ export function bigint<TName extends string, TMode extends PgBigIntConfig['mode']>(
101
+ name: TName,
102
+ config: PgBigIntConfig<TMode>,
103
+ ): TMode extends 'number' ? PgBigInt53BuilderInitial<TName> : PgBigInt64BuilderInitial<TName>;
104
+ export function bigint(a: string | PgBigIntConfig, b?: PgBigIntConfig) {
105
+ const { name, config } = getColumnNameAndConfig<PgBigIntConfig>(a, b);
106
+ if (config.mode === 'number') {
107
+ return new PgBigInt53Builder(name);
108
+ }
109
+ return new PgBigInt64Builder(name);
110
+ }
@@ -0,0 +1,128 @@
1
+ import type {
2
+ ColumnBuilderBaseConfig,
3
+ ColumnBuilderRuntimeConfig,
4
+ HasDefault,
5
+ MakeColumnConfig,
6
+ NotNull,
7
+ } from '../../column-builder.js';
8
+ import type { ColumnBaseConfig } from '../../column.js';
9
+ import { entityKind } from '../../entity.js';
10
+ import { getColumnNameAndConfig } from '../../utils.js';
11
+ import type { AnyPgTable } from '../table.js';
12
+ import { PgColumn, PgColumnBuilder } from './common.js';
13
+
14
+ export type PgBigSerial53BuilderInitial<TName extends string> = NotNull<
15
+ HasDefault<
16
+ PgBigSerial53Builder<{
17
+ name: TName;
18
+ dataType: 'number';
19
+ columnType: 'PgBigSerial53';
20
+ data: number;
21
+ driverParam: number;
22
+ enumValues: undefined;
23
+ }>
24
+ >
25
+ >;
26
+
27
+ export class PgBigSerial53Builder<T extends ColumnBuilderBaseConfig<'number', 'PgBigSerial53'>>
28
+ extends PgColumnBuilder<T>
29
+ {
30
+ static override readonly [entityKind]: string = 'PgBigSerial53Builder';
31
+
32
+ constructor(name: string) {
33
+ super(name, 'number', 'PgBigSerial53');
34
+ this.config.hasDefault = true;
35
+ this.config.notNull = true;
36
+ }
37
+
38
+ /** @internal */
39
+ override build<TTableName extends string>(
40
+ table: AnyPgTable<{ name: TTableName }>,
41
+ ): PgBigSerial53<MakeColumnConfig<T, TTableName>> {
42
+ return new PgBigSerial53<MakeColumnConfig<T, TTableName>>(
43
+ table,
44
+ this.config as ColumnBuilderRuntimeConfig<any, any>,
45
+ );
46
+ }
47
+ }
48
+
49
+ export class PgBigSerial53<T extends ColumnBaseConfig<'number', 'PgBigSerial53'>> extends PgColumn<T> {
50
+ static override readonly [entityKind]: string = 'PgBigSerial53';
51
+
52
+ getSQLType(): string {
53
+ return 'bigserial';
54
+ }
55
+
56
+ override mapFromDriverValue(value: number): number {
57
+ if (typeof value === 'number') {
58
+ return value;
59
+ }
60
+ return Number(value);
61
+ }
62
+ }
63
+
64
+ export type PgBigSerial64BuilderInitial<TName extends string> = NotNull<
65
+ HasDefault<
66
+ PgBigSerial64Builder<{
67
+ name: TName;
68
+ dataType: 'bigint';
69
+ columnType: 'PgBigSerial64';
70
+ data: bigint;
71
+ driverParam: string;
72
+ enumValues: undefined;
73
+ }>
74
+ >
75
+ >;
76
+
77
+ export class PgBigSerial64Builder<T extends ColumnBuilderBaseConfig<'bigint', 'PgBigSerial64'>>
78
+ extends PgColumnBuilder<T>
79
+ {
80
+ static override readonly [entityKind]: string = 'PgBigSerial64Builder';
81
+
82
+ constructor(name: string) {
83
+ super(name, 'bigint', 'PgBigSerial64');
84
+ this.config.hasDefault = true;
85
+ }
86
+
87
+ /** @internal */
88
+ override build<TTableName extends string>(
89
+ table: AnyPgTable<{ name: TTableName }>,
90
+ ): PgBigSerial64<MakeColumnConfig<T, TTableName>> {
91
+ return new PgBigSerial64<MakeColumnConfig<T, TTableName>>(
92
+ table,
93
+ this.config as ColumnBuilderRuntimeConfig<any, any>,
94
+ );
95
+ }
96
+ }
97
+
98
+ export class PgBigSerial64<T extends ColumnBaseConfig<'bigint', 'PgBigSerial64'>> extends PgColumn<T> {
99
+ static override readonly [entityKind]: string = 'PgBigSerial64';
100
+
101
+ getSQLType(): string {
102
+ return 'bigserial';
103
+ }
104
+
105
+ // eslint-disable-next-line unicorn/prefer-native-coercion-functions
106
+ override mapFromDriverValue(value: string): bigint {
107
+ return BigInt(value);
108
+ }
109
+ }
110
+
111
+ export interface PgBigSerialConfig<T extends 'number' | 'bigint' = 'number' | 'bigint'> {
112
+ mode: T;
113
+ }
114
+
115
+ export function bigserial<TMode extends PgBigSerialConfig['mode']>(
116
+ config: PgBigSerialConfig<TMode>,
117
+ ): TMode extends 'number' ? PgBigSerial53BuilderInitial<''> : PgBigSerial64BuilderInitial<''>;
118
+ export function bigserial<TName extends string, TMode extends PgBigSerialConfig['mode']>(
119
+ name: TName,
120
+ config: PgBigSerialConfig<TMode>,
121
+ ): TMode extends 'number' ? PgBigSerial53BuilderInitial<TName> : PgBigSerial64BuilderInitial<TName>;
122
+ export function bigserial(a: string | PgBigSerialConfig, b?: PgBigSerialConfig) {
123
+ const { name, config } = getColumnNameAndConfig<PgBigSerialConfig>(a, b);
124
+ if (config.mode === 'number') {
125
+ return new PgBigSerial53Builder(name);
126
+ }
127
+ return new PgBigSerial64Builder(name);
128
+ }