pipework 0.251.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 (730) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/core/config/load.d.ts +2 -0
  3. package/dist/core/config/load.d.ts.map +1 -1
  4. package/dist/core/config/load.js +1 -0
  5. package/dist/core/config/load.js.map +1 -1
  6. package/dist/core/config/namespace.d.ts +1 -0
  7. package/dist/core/config/namespace.d.ts.map +1 -1
  8. package/dist/core/config/schema.d.ts +2 -0
  9. package/dist/core/config/schema.d.ts.map +1 -1
  10. package/dist/core/config/schema.js +1 -0
  11. package/dist/core/config/schema.js.map +1 -1
  12. package/dist/core/surface/types.d.ts +1 -0
  13. package/dist/core/surface/types.d.ts.map +1 -1
  14. package/dist/data/db/namespace.d.ts +3 -0
  15. package/dist/data/db/namespace.d.ts.map +1 -1
  16. package/dist/data/db/namespace.js +3 -0
  17. package/dist/data/db/namespace.js.map +1 -1
  18. package/dist/data/db/pool.d.ts.map +1 -1
  19. package/dist/data/db/pool.js +6 -1
  20. package/dist/data/db/pool.js.map +1 -1
  21. package/dist/data/db/query-label.d.ts +5 -0
  22. package/dist/data/db/query-label.d.ts.map +1 -0
  23. package/dist/data/db/query-label.js +11 -0
  24. package/dist/data/db/query-label.js.map +1 -0
  25. package/dist/data/db/query-watch.d.ts +21 -0
  26. package/dist/data/db/query-watch.d.ts.map +1 -0
  27. package/dist/data/db/query-watch.js +90 -0
  28. package/dist/data/db/query-watch.js.map +1 -0
  29. package/dist/data/query/postgres-js/driver.js +1 -1
  30. package/dist/data/query/postgres-js/driver.js.map +1 -1
  31. package/dist/data/query/postgres-js/session.d.ts +5 -1
  32. package/dist/data/query/postgres-js/session.d.ts.map +1 -1
  33. package/dist/data/query/postgres-js/session.js +16 -11
  34. package/dist/data/query/postgres-js/session.js.map +1 -1
  35. package/dist/data/query/utils.d.ts +2 -0
  36. package/dist/data/query/utils.d.ts.map +1 -1
  37. package/dist/data/query/utils.js.map +1 -1
  38. package/dist/infra/credits/schema.d.ts +1 -1
  39. package/dist/test/plugin.d.ts.map +1 -1
  40. package/dist/test/plugin.js +10 -4
  41. package/dist/test/plugin.js.map +1 -1
  42. package/package.json +4 -3
  43. package/src/async/jobs/abortable-delay.ts +18 -0
  44. package/src/async/jobs/claims.ts +52 -0
  45. package/src/async/jobs/cron.ts +179 -0
  46. package/src/async/jobs/errors.ts +56 -0
  47. package/src/async/jobs/exclusion.ts +117 -0
  48. package/src/async/jobs/execute.ts +219 -0
  49. package/src/async/jobs/index.ts +10 -0
  50. package/src/async/jobs/listener.ts +135 -0
  51. package/src/async/jobs/namespace.ts +20 -0
  52. package/src/async/jobs/queue-door.ts +44 -0
  53. package/src/async/jobs/queue.ts +1012 -0
  54. package/src/async/jobs/run-script.ts +67 -0
  55. package/src/async/jobs/scheduler.ts +218 -0
  56. package/src/async/jobs/schedules-table.ts +37 -0
  57. package/src/async/jobs/serialize-error.ts +48 -0
  58. package/src/async/jobs/table.ts +191 -0
  59. package/src/async/pipeline/define.ts +53 -0
  60. package/src/async/pipeline/errors.ts +35 -0
  61. package/src/async/pipeline/execute.ts +53 -0
  62. package/src/async/pipeline/index.ts +13 -0
  63. package/src/async/pipeline/namespace.ts +12 -0
  64. package/src/async/pipeline/resume.ts +67 -0
  65. package/src/async/pipeline/run-steps.ts +98 -0
  66. package/src/async/pipeline/types.ts +57 -0
  67. package/src/async/state-machine/define.ts +64 -0
  68. package/src/async/state-machine/errors.ts +29 -0
  69. package/src/async/state-machine/index.ts +3 -0
  70. package/src/async/state-machine/namespace.ts +12 -0
  71. package/src/async/state-machine/transition.ts +90 -0
  72. package/src/async/state-machine/types.ts +37 -0
  73. package/src/async/steps/errors.ts +31 -0
  74. package/src/async/steps/graph.ts +1214 -0
  75. package/src/async/steps/hash.ts +40 -0
  76. package/src/async/steps/index.ts +7 -0
  77. package/src/async/steps/namespace.ts +7 -0
  78. package/src/async/steps/table.ts +97 -0
  79. package/src/async/steps/types.ts +318 -0
  80. package/src/audit/chain/index.ts +9 -0
  81. package/src/audit/chain/install.ts +113 -0
  82. package/src/audit/chain/retire.ts +52 -0
  83. package/src/audit/chain/verify.ts +257 -0
  84. package/src/audit/query/cursor.ts +37 -0
  85. package/src/audit/query/index.ts +9 -0
  86. package/src/audit/query/query.ts +223 -0
  87. package/src/audit/schema/audit-record-fields.ts +68 -0
  88. package/src/audit/schema/audit-record.ts +23 -0
  89. package/src/auth/auth/audit.ts +31 -0
  90. package/src/auth/auth/chain.ts +84 -0
  91. package/src/auth/auth/cookie.ts +136 -0
  92. package/src/auth/auth/email-links.ts +311 -0
  93. package/src/auth/auth/guard.ts +128 -0
  94. package/src/auth/auth/index.ts +18 -0
  95. package/src/auth/auth/multi-org.ts +337 -0
  96. package/src/auth/auth/namespace.ts +34 -0
  97. package/src/auth/auth/parse-expiry.ts +13 -0
  98. package/src/auth/auth/passwords.ts +110 -0
  99. package/src/auth/auth/schema.ts +110 -0
  100. package/src/auth/auth/sessions.ts +565 -0
  101. package/src/auth/auth/sign-in.ts +156 -0
  102. package/src/auth/auth/signing-keys.ts +69 -0
  103. package/src/auth/auth/types.ts +26 -0
  104. package/src/auth/auth/uuid.ts +10 -0
  105. package/src/auth/rbac/cache.ts +55 -0
  106. package/src/auth/rbac/check.ts +30 -0
  107. package/src/auth/rbac/create.ts +35 -0
  108. package/src/auth/rbac/index.ts +5 -0
  109. package/src/auth/rbac/middleware.ts +20 -0
  110. package/src/auth/rbac/namespace.ts +15 -0
  111. package/src/auth/rbac/resolve.ts +31 -0
  112. package/src/auth/rbac/schema.sql +31 -0
  113. package/src/auth/rbac/seed.ts +67 -0
  114. package/src/auth/rbac/tables.ts +32 -0
  115. package/src/auth/rbac/types.ts +65 -0
  116. package/src/auth/tenant/extract.ts +33 -0
  117. package/src/auth/tenant/in-tenant.ts +49 -0
  118. package/src/auth/tenant/index.ts +7 -0
  119. package/src/auth/tenant/namespace.ts +23 -0
  120. package/src/auth/tenant/propagate.ts +20 -0
  121. package/src/auth/tenant/rls.ts +120 -0
  122. package/src/auth/tenant/scope.ts +33 -0
  123. package/src/auth/tenant/scoped-db.ts +581 -0
  124. package/src/auth/tenant/types.ts +14 -0
  125. package/src/auth/tenant/validate.ts +27 -0
  126. package/src/cli/commands/add.ts +158 -0
  127. package/src/cli/commands/alerts.ts +98 -0
  128. package/src/cli/commands/check.ts +1418 -0
  129. package/src/cli/commands/codemod.ts +78 -0
  130. package/src/cli/commands/db.ts +356 -0
  131. package/src/cli/commands/dev.ts +101 -0
  132. package/src/cli/commands/generate.ts +75 -0
  133. package/src/cli/commands/init.ts +36 -0
  134. package/src/cli/commands/install.ts +28 -0
  135. package/src/cli/commands/lint.ts +62 -0
  136. package/src/cli/commands/migrate.ts +132 -0
  137. package/src/cli/commands/openapi.ts +63 -0
  138. package/src/cli/commands/remove.ts +72 -0
  139. package/src/cli/commands/run.ts +50 -0
  140. package/src/cli/commands/scope.ts +54 -0
  141. package/src/cli/commands/serve.ts +68 -0
  142. package/src/cli/commands/shard.ts +31 -0
  143. package/src/cli/commands/shared/config-pipework-version.ts +28 -0
  144. package/src/cli/commands/shared/find-config.ts +22 -0
  145. package/src/cli/commands/shared/load-config.ts +35 -0
  146. package/src/cli/commands/shared/pnpm-install.ts +95 -0
  147. package/src/cli/commands/shared/report-removed.ts +8 -0
  148. package/src/cli/commands/sync.ts +32 -0
  149. package/src/cli/commands/test.ts +307 -0
  150. package/src/cli/commands/upgrade.ts +48 -0
  151. package/src/cli/dev-bootstrap.ts +24 -0
  152. package/src/cli/errors.ts +10 -0
  153. package/src/cli/index.ts +303 -0
  154. package/src/cli/output.ts +17 -0
  155. package/src/cli/port.ts +15 -0
  156. package/src/cli/surface-kinds.ts +20 -0
  157. package/src/client/index.ts +4 -0
  158. package/src/client/poll.ts +130 -0
  159. package/src/client/report-fault.ts +119 -0
  160. package/src/core/config/app-pool.ts +19 -0
  161. package/src/core/config/aws-env.ts +29 -0
  162. package/src/core/config/base-dir.ts +24 -0
  163. package/src/core/config/discover.ts +64 -0
  164. package/src/core/config/env-resolve.ts +87 -0
  165. package/src/core/config/env-types.ts +116 -0
  166. package/src/core/config/env.ts +55 -0
  167. package/src/core/config/errors.ts +9 -0
  168. package/src/core/config/import-config.ts +40 -0
  169. package/src/core/config/index.ts +8 -0
  170. package/src/core/config/load.ts +417 -0
  171. package/src/core/config/namespace.ts +14 -0
  172. package/src/core/config/resolve.ts +195 -0
  173. package/src/core/config/schema.ts +488 -0
  174. package/src/core/config/statement-observer.ts +48 -0
  175. package/src/core/config/ts-inline-hooks.ts +75 -0
  176. package/src/core/config/ts-register.ts +4 -0
  177. package/src/core/config/ts-resolve-hooks.ts +101 -0
  178. package/src/core/errors/base.ts +49 -0
  179. package/src/core/errors/http.ts +146 -0
  180. package/src/core/errors/index.ts +2 -0
  181. package/src/core/errors/namespace.ts +31 -0
  182. package/src/core/lifecycle/drain.ts +33 -0
  183. package/src/core/lifecycle/health.ts +72 -0
  184. package/src/core/lifecycle/index.ts +4 -0
  185. package/src/core/lifecycle/namespace.ts +7 -0
  186. package/src/core/lifecycle/startup.ts +102 -0
  187. package/src/core/lifecycle/types.ts +36 -0
  188. package/src/core/logging/context.ts +60 -0
  189. package/src/core/logging/error-chain.ts +68 -0
  190. package/src/core/logging/index.ts +5 -0
  191. package/src/core/logging/logger.ts +65 -0
  192. package/src/core/logging/namespace.ts +16 -0
  193. package/src/core/logging/proxy.ts +22 -0
  194. package/src/core/logging/redact-match.ts +24 -0
  195. package/src/core/logging/types.ts +47 -0
  196. package/src/core/pipework.ts +566 -0
  197. package/src/core/runtime/broker.ts +69 -0
  198. package/src/core/surface/http.ts +133 -0
  199. package/src/core/surface/index.ts +11 -0
  200. package/src/core/surface/job-timeout.ts +40 -0
  201. package/src/core/surface/namespace.ts +13 -0
  202. package/src/core/surface/script.ts +33 -0
  203. package/src/core/surface/start.ts +142 -0
  204. package/src/core/surface/types.ts +225 -0
  205. package/src/core/surface/validate.ts +88 -0
  206. package/src/core/surface/worker.ts +528 -0
  207. package/src/core/validation/connectivity.ts +49 -0
  208. package/src/core/validation/domain.ts +99 -0
  209. package/src/core/validation/index.ts +5 -0
  210. package/src/core/validation/queue-tables.ts +312 -0
  211. package/src/core/validation/rls-role.ts +138 -0
  212. package/src/core/validation/startup.ts +51 -0
  213. package/src/core/validation/surfaces.ts +65 -0
  214. package/src/core/validation/types.ts +25 -0
  215. package/src/data/db/advisory-lock.ts +55 -0
  216. package/src/data/db/aggregates.ts +172 -0
  217. package/src/data/db/array-elements.ts +111 -0
  218. package/src/data/db/bulk-set.ts +53 -0
  219. package/src/data/db/col/index.ts +14 -0
  220. package/src/data/db/composed.ts +53 -0
  221. package/src/data/db/db.ts +276 -0
  222. package/src/data/db/excluded.ts +16 -0
  223. package/src/data/db/expressions.ts +473 -0
  224. package/src/data/db/filter.ts +90 -0
  225. package/src/data/db/function-source.ts +114 -0
  226. package/src/data/db/identifiers.ts +16 -0
  227. package/src/data/db/idx/index.ts +9 -0
  228. package/src/data/db/in-list.ts +49 -0
  229. package/src/data/db/index.ts +9 -0
  230. package/src/data/db/insert-split.ts +137 -0
  231. package/src/data/db/instrumentation.ts +82 -0
  232. package/src/data/db/maintenance.ts +28 -0
  233. package/src/data/db/namespace.ts +107 -0
  234. package/src/data/db/owner-labels.ts +9 -0
  235. package/src/data/db/pool.ts +187 -0
  236. package/src/data/db/query-label.ts +13 -0
  237. package/src/data/db/query-watch.ts +116 -0
  238. package/src/data/db/raw-client-warning.ts +37 -0
  239. package/src/data/db/readonly.ts +23 -0
  240. package/src/data/db/reservation.ts +151 -0
  241. package/src/data/db/schema-features.ts +14 -0
  242. package/src/data/db/serializable.ts +83 -0
  243. package/src/data/db/sql.ts +1 -0
  244. package/src/data/db/timeouts.ts +76 -0
  245. package/src/data/db/types.ts +18 -0
  246. package/src/data/db/unbound.ts +33 -0
  247. package/src/data/db/values.ts +29 -0
  248. package/src/data/domain/brand.ts +15 -0
  249. package/src/data/domain/build-factory.ts +193 -0
  250. package/src/data/domain/build-schema.ts +161 -0
  251. package/src/data/domain/build-table.ts +355 -0
  252. package/src/data/domain/define.ts +239 -0
  253. package/src/data/domain/external-registry.ts +34 -0
  254. package/src/data/domain/external.ts +77 -0
  255. package/src/data/domain/field.ts +279 -0
  256. package/src/data/domain/index.ts +13 -0
  257. package/src/data/domain/naming.ts +6 -0
  258. package/src/data/domain/projections.ts +57 -0
  259. package/src/data/domain/trace-safe-projection.ts +31 -0
  260. package/src/data/domain/traits.ts +108 -0
  261. package/src/data/domain/types.ts +289 -0
  262. package/src/data/jsonb/composed.ts +18 -0
  263. package/src/data/jsonb/index.ts +1 -0
  264. package/src/data/jsonb/namespace.ts +30 -0
  265. package/src/data/jsonb/query.ts +86 -0
  266. package/src/data/migrate/append-only-generate.ts +47 -0
  267. package/src/data/migrate/applied.ts +47 -0
  268. package/src/data/migrate/apply.ts +309 -0
  269. package/src/data/migrate/check.ts +119 -0
  270. package/src/data/migrate/diff.ts +357 -0
  271. package/src/data/migrate/door-generate.ts +130 -0
  272. package/src/data/migrate/framework-rls.ts +58 -0
  273. package/src/data/migrate/generate.ts +201 -0
  274. package/src/data/migrate/history.ts +215 -0
  275. package/src/data/migrate/index.ts +9 -0
  276. package/src/data/migrate/internal-definitions.ts +175 -0
  277. package/src/data/migrate/post-process.ts +73 -0
  278. package/src/data/migrate/pragma.ts +73 -0
  279. package/src/data/migrate/provision-framework.ts +147 -0
  280. package/src/data/migrate/rls-generate.ts +61 -0
  281. package/src/data/migrate/run.ts +124 -0
  282. package/src/data/migrate/safety.ts +167 -0
  283. package/src/data/migrate/snapshot.ts +368 -0
  284. package/src/data/migrate/sql-emit.ts +392 -0
  285. package/src/data/migrate/statements.ts +312 -0
  286. package/src/data/query/alias.ts +126 -0
  287. package/src/data/query/batch.ts +8 -0
  288. package/src/data/query/cache/core/cache.ts +78 -0
  289. package/src/data/query/cache/core/index.ts +1 -0
  290. package/src/data/query/cache/core/types.ts +29 -0
  291. package/src/data/query/cache/readme.md +230 -0
  292. package/src/data/query/casing.ts +76 -0
  293. package/src/data/query/collation.ts +11 -0
  294. package/src/data/query/column-builder.ts +370 -0
  295. package/src/data/query/column.ts +150 -0
  296. package/src/data/query/entity.ts +42 -0
  297. package/src/data/query/errors.ts +33 -0
  298. package/src/data/query/index.ts +14 -0
  299. package/src/data/query/logger.ts +47 -0
  300. package/src/data/query/operations.ts +45 -0
  301. package/src/data/query/pg-core/alias.ts +12 -0
  302. package/src/data/query/pg-core/checks.ts +32 -0
  303. package/src/data/query/pg-core/columns/all.ts +71 -0
  304. package/src/data/query/pg-core/columns/bigint.ts +110 -0
  305. package/src/data/query/pg-core/columns/bigserial.ts +128 -0
  306. package/src/data/query/pg-core/columns/boolean.ts +43 -0
  307. package/src/data/query/pg-core/columns/char.ts +85 -0
  308. package/src/data/query/pg-core/columns/cidr.ts +43 -0
  309. package/src/data/query/pg-core/columns/common.ts +366 -0
  310. package/src/data/query/pg-core/columns/custom.ts +232 -0
  311. package/src/data/query/pg-core/columns/date.common.ts +15 -0
  312. package/src/data/query/pg-core/columns/date.ts +112 -0
  313. package/src/data/query/pg-core/columns/double-precision.ts +55 -0
  314. package/src/data/query/pg-core/columns/enum.ts +201 -0
  315. package/src/data/query/pg-core/columns/index.ts +35 -0
  316. package/src/data/query/pg-core/columns/inet.ts +43 -0
  317. package/src/data/query/pg-core/columns/int.common.ts +57 -0
  318. package/src/data/query/pg-core/columns/integer.ts +53 -0
  319. package/src/data/query/pg-core/columns/interval.ts +83 -0
  320. package/src/data/query/pg-core/columns/json.ts +58 -0
  321. package/src/data/query/pg-core/columns/jsonb.ts +56 -0
  322. package/src/data/query/pg-core/columns/line.ts +117 -0
  323. package/src/data/query/pg-core/columns/macaddr.ts +43 -0
  324. package/src/data/query/pg-core/columns/macaddr8.ts +43 -0
  325. package/src/data/query/pg-core/columns/numeric.ts +227 -0
  326. package/src/data/query/pg-core/columns/point.ts +127 -0
  327. package/src/data/query/pg-core/columns/postgis_extension/geometry.ts +119 -0
  328. package/src/data/query/pg-core/columns/postgis_extension/utils.ts +47 -0
  329. package/src/data/query/pg-core/columns/real.ts +58 -0
  330. package/src/data/query/pg-core/columns/serial.ts +55 -0
  331. package/src/data/query/pg-core/columns/smallint.ts +53 -0
  332. package/src/data/query/pg-core/columns/smallserial.ts +60 -0
  333. package/src/data/query/pg-core/columns/text.ts +67 -0
  334. package/src/data/query/pg-core/columns/time.ts +72 -0
  335. package/src/data/query/pg-core/columns/timestamp.ts +163 -0
  336. package/src/data/query/pg-core/columns/uuid.ts +51 -0
  337. package/src/data/query/pg-core/columns/varchar.ts +89 -0
  338. package/src/data/query/pg-core/columns/vector_extension/bit.ts +68 -0
  339. package/src/data/query/pg-core/columns/vector_extension/halfvec.ts +80 -0
  340. package/src/data/query/pg-core/columns/vector_extension/sparsevec.ts +67 -0
  341. package/src/data/query/pg-core/columns/vector_extension/vector.ts +80 -0
  342. package/src/data/query/pg-core/db.ts +674 -0
  343. package/src/data/query/pg-core/dialect.ts +1404 -0
  344. package/src/data/query/pg-core/expressions.ts +25 -0
  345. package/src/data/query/pg-core/foreign-keys.ts +130 -0
  346. package/src/data/query/pg-core/index.ts +21 -0
  347. package/src/data/query/pg-core/indexes.ts +276 -0
  348. package/src/data/query/pg-core/policies.ts +56 -0
  349. package/src/data/query/pg-core/primary-keys.ts +62 -0
  350. package/src/data/query/pg-core/query-builders/count.ts +86 -0
  351. package/src/data/query/pg-core/query-builders/delete.ts +293 -0
  352. package/src/data/query/pg-core/query-builders/index.ts +7 -0
  353. package/src/data/query/pg-core/query-builders/insert.ts +452 -0
  354. package/src/data/query/pg-core/query-builders/query-builder.ts +123 -0
  355. package/src/data/query/pg-core/query-builders/query.ts +157 -0
  356. package/src/data/query/pg-core/query-builders/raw.ts +49 -0
  357. package/src/data/query/pg-core/query-builders/refresh-materialized-view.ts +108 -0
  358. package/src/data/query/pg-core/query-builders/select.ts +1346 -0
  359. package/src/data/query/pg-core/query-builders/select.types.ts +437 -0
  360. package/src/data/query/pg-core/query-builders/update.ts +626 -0
  361. package/src/data/query/pg-core/roles.ts +41 -0
  362. package/src/data/query/pg-core/schema.ts +72 -0
  363. package/src/data/query/pg-core/sequence.ts +41 -0
  364. package/src/data/query/pg-core/session.ts +292 -0
  365. package/src/data/query/pg-core/subquery.ts +46 -0
  366. package/src/data/query/pg-core/table.ts +252 -0
  367. package/src/data/query/pg-core/unique-constraint.ts +73 -0
  368. package/src/data/query/pg-core/utils/array.ts +95 -0
  369. package/src/data/query/pg-core/utils/index.ts +1 -0
  370. package/src/data/query/pg-core/utils.ts +104 -0
  371. package/src/data/query/pg-core/view-base.ts +14 -0
  372. package/src/data/query/pg-core/view-common.ts +1 -0
  373. package/src/data/query/pg-core/view.ts +435 -0
  374. package/src/data/query/pg-core/with-builder.ts +41 -0
  375. package/src/data/query/postgres-js/README.md +46 -0
  376. package/src/data/query/postgres-js/array-parser.ts +45 -0
  377. package/src/data/query/postgres-js/driver-error-boundary.ts +149 -0
  378. package/src/data/query/postgres-js/driver.ts +163 -0
  379. package/src/data/query/postgres-js/index.ts +2 -0
  380. package/src/data/query/postgres-js/session.ts +234 -0
  381. package/src/data/query/primary-key.ts +11 -0
  382. package/src/data/query/query-builders/query-builder.ts +19 -0
  383. package/src/data/query/query-builders/select.types.ts +175 -0
  384. package/src/data/query/query-promise.ts +35 -0
  385. package/src/data/query/relations.ts +725 -0
  386. package/src/data/query/runnable-query.ts +12 -0
  387. package/src/data/query/selection-proxy.ts +121 -0
  388. package/src/data/query/session.ts +8 -0
  389. package/src/data/query/sql/expressions/conditions.ts +741 -0
  390. package/src/data/query/sql/expressions/index.ts +2 -0
  391. package/src/data/query/sql/expressions/select.ts +45 -0
  392. package/src/data/query/sql/functions/aggregate.ts +129 -0
  393. package/src/data/query/sql/functions/index.ts +2 -0
  394. package/src/data/query/sql/functions/vector.ts +178 -0
  395. package/src/data/query/sql/index.ts +3 -0
  396. package/src/data/query/sql/sql.ts +794 -0
  397. package/src/data/query/subquery.ts +53 -0
  398. package/src/data/query/table.ts +208 -0
  399. package/src/data/query/table.utils.ts +2 -0
  400. package/src/data/query/tracing-utils.ts +3 -0
  401. package/src/data/query/tracing.ts +11 -0
  402. package/src/data/query/utils.ts +357 -0
  403. package/src/data/query/version.ts +4 -0
  404. package/src/data/query/view-common.ts +1 -0
  405. package/src/data/schema/branded.ts +13 -0
  406. package/src/data/schema/generated/coerce.ts +5 -0
  407. package/src/data/schema/generated/combinator.ts +6 -0
  408. package/src/data/schema/generated/encoding.ts +5 -0
  409. package/src/data/schema/generated/error.ts +6 -0
  410. package/src/data/schema/generated/format.ts +5 -0
  411. package/src/data/schema/generated/type-constructor.ts +10 -0
  412. package/src/data/schema/generated/type.ts +6 -0
  413. package/src/data/schema/index.ts +6 -0
  414. package/src/data/schema/json-schema.ts +33 -0
  415. package/src/data/schema/namespace.ts +55 -0
  416. package/src/data/schema/parse.ts +39 -0
  417. package/src/data/schema/types.ts +39 -0
  418. package/src/data/temporal/append-only.ts +134 -0
  419. package/src/data/temporal/close.ts +27 -0
  420. package/src/data/temporal/columns.ts +10 -0
  421. package/src/data/temporal/definition-queries.ts +70 -0
  422. package/src/data/temporal/errors.ts +10 -0
  423. package/src/data/temporal/get-current.ts +22 -0
  424. package/src/data/temporal/index.ts +9 -0
  425. package/src/data/temporal/namespace.ts +36 -0
  426. package/src/data/temporal/query.ts +25 -0
  427. package/src/data/temporal/resolve.ts +17 -0
  428. package/src/data/temporal/revise.ts +67 -0
  429. package/src/data/temporal/types.ts +22 -0
  430. package/src/data/valve/artifact.ts +33 -0
  431. package/src/data/valve/contract-diff.ts +21 -0
  432. package/src/data/valve/cross.ts +57 -0
  433. package/src/data/valve/crossing-ledger.ts +50 -0
  434. package/src/data/valve/decision.ts +44 -0
  435. package/src/data/valve/durable-crossing.ts +52 -0
  436. package/src/data/valve/execute-crossing.ts +77 -0
  437. package/src/data/valve/faucet.ts +56 -0
  438. package/src/data/valve/gate.ts +114 -0
  439. package/src/data/valve/graph.ts +77 -0
  440. package/src/data/valve/index.ts +53 -0
  441. package/src/data/valve/namespace.ts +57 -0
  442. package/src/data/valve/registry.ts +50 -0
  443. package/src/data/valve/schema/valve-crossing-fields.ts +23 -0
  444. package/src/data/valve/schema/valve-crossing.ts +9 -0
  445. package/src/data/valve/supply.ts +154 -0
  446. package/src/data/valve/types.ts +143 -0
  447. package/src/data/vector/columns.ts +27 -0
  448. package/src/data/vector/index.ts +4 -0
  449. package/src/data/vector/namespace.ts +33 -0
  450. package/src/data/vector/query.ts +85 -0
  451. package/src/data/vector/validate.ts +16 -0
  452. package/src/data/write/audit/actor.ts +15 -0
  453. package/src/data/write/audit/audit-columns.ts +18 -0
  454. package/src/data/write/audit/audit-select.ts +111 -0
  455. package/src/data/write/audit/bound-transaction.ts +14 -0
  456. package/src/data/write/audit/cte-compile.ts +32 -0
  457. package/src/data/write/audit/decode-returning.ts +47 -0
  458. package/src/data/write/audit/final-select.ts +43 -0
  459. package/src/data/write/audit/infra-audit.ts +36 -0
  460. package/src/data/write/audit/primary-key.ts +65 -0
  461. package/src/data/write/audit/projection.ts +41 -0
  462. package/src/data/write/audit/read-touches.ts +86 -0
  463. package/src/data/write/audit/touch-match.ts +78 -0
  464. package/src/data/write/audit/verb-delete.ts +62 -0
  465. package/src/data/write/audit/verb-insert.ts +36 -0
  466. package/src/data/write/audit/verb-select.ts +47 -0
  467. package/src/data/write/audit/verb-update.ts +60 -0
  468. package/src/data/write/audit/verb-upsert.ts +104 -0
  469. package/src/data/write/conflict.ts +43 -0
  470. package/src/data/write/delete.ts +38 -0
  471. package/src/data/write/execute.ts +243 -0
  472. package/src/data/write/index.ts +11 -0
  473. package/src/data/write/insert.ts +63 -0
  474. package/src/data/write/state.ts +43 -0
  475. package/src/data/write/update.ts +54 -0
  476. package/src/data/write/upsert.ts +58 -0
  477. package/src/data/write/values.ts +19 -0
  478. package/src/index.ts +230 -0
  479. package/src/infra/access-links/code.ts +70 -0
  480. package/src/infra/access-links/handle.ts +892 -0
  481. package/src/infra/access-links/index.ts +9 -0
  482. package/src/infra/access-links/namespace.ts +30 -0
  483. package/src/infra/access-links/person-check.ts +177 -0
  484. package/src/infra/access-links/schema.ts +71 -0
  485. package/src/infra/alerts/async-sources.ts +231 -0
  486. package/src/infra/alerts/audit.ts +36 -0
  487. package/src/infra/alerts/beat.ts +123 -0
  488. package/src/infra/alerts/client-faults.ts +111 -0
  489. package/src/infra/alerts/faults.ts +156 -0
  490. package/src/infra/alerts/handle.ts +778 -0
  491. package/src/infra/alerts/http.ts +192 -0
  492. package/src/infra/alerts/index.ts +12 -0
  493. package/src/infra/alerts/infra-sources.ts +180 -0
  494. package/src/infra/alerts/namespace.ts +81 -0
  495. package/src/infra/alerts/redact.ts +21 -0
  496. package/src/infra/alerts/request-faults.ts +41 -0
  497. package/src/infra/alerts/schema.ts +124 -0
  498. package/src/infra/alerts/sinks.ts +125 -0
  499. package/src/infra/alerts/source-options.ts +26 -0
  500. package/src/infra/alerts/sources.ts +503 -0
  501. package/src/infra/alerts/subsystem-sources.ts +137 -0
  502. package/src/infra/audit/emit.ts +87 -0
  503. package/src/infra/audit/index.ts +2 -0
  504. package/src/infra/audit/namespace.ts +22 -0
  505. package/src/infra/audit/schema.sql +35 -0
  506. package/src/infra/audit/types.ts +18 -0
  507. package/src/infra/aws/credentials.ts +147 -0
  508. package/src/infra/aws/sigv4.ts +140 -0
  509. package/src/infra/cache/create.ts +58 -0
  510. package/src/infra/cache/entry.ts +81 -0
  511. package/src/infra/cache/index.ts +4 -0
  512. package/src/infra/cache/namespace.ts +10 -0
  513. package/src/infra/cache/tenant.ts +93 -0
  514. package/src/infra/cache/types.ts +24 -0
  515. package/src/infra/crawl/audit.ts +35 -0
  516. package/src/infra/crawl/errors.ts +25 -0
  517. package/src/infra/crawl/handle.ts +693 -0
  518. package/src/infra/crawl/index.ts +9 -0
  519. package/src/infra/crawl/links.ts +160 -0
  520. package/src/infra/crawl/namespace.ts +36 -0
  521. package/src/infra/crawl/robots.ts +100 -0
  522. package/src/infra/crawl/schema.ts +89 -0
  523. package/src/infra/credit-line/handle.ts +883 -0
  524. package/src/infra/credit-line/index.ts +6 -0
  525. package/src/infra/credit-line/namespace.ts +7 -0
  526. package/src/infra/credit-line/schema.ts +96 -0
  527. package/src/infra/credits/handle.ts +706 -0
  528. package/src/infra/credits/index.ts +5 -0
  529. package/src/infra/credits/namespace.ts +7 -0
  530. package/src/infra/credits/schema.ts +83 -0
  531. package/src/infra/email/audit.ts +36 -0
  532. package/src/infra/email/inbound.ts +622 -0
  533. package/src/infra/email/index.ts +11 -0
  534. package/src/infra/email/mail.ts +517 -0
  535. package/src/infra/email/mime.ts +447 -0
  536. package/src/infra/email/namespace.ts +22 -0
  537. package/src/infra/email/providers.ts +111 -0
  538. package/src/infra/email/schema.ts +96 -0
  539. package/src/infra/email/sns.ts +200 -0
  540. package/src/infra/email/unsubscribe.ts +44 -0
  541. package/src/infra/fetch/address.ts +88 -0
  542. package/src/infra/fetch/connect-retry.ts +87 -0
  543. package/src/infra/fetch/handle.ts +329 -0
  544. package/src/infra/fetch/index.ts +7 -0
  545. package/src/infra/fetch/namespace.ts +70 -0
  546. package/src/infra/idempotency/index.ts +3 -0
  547. package/src/infra/idempotency/middleware.ts +87 -0
  548. package/src/infra/idempotency/store.ts +92 -0
  549. package/src/infra/idempotency/types.ts +30 -0
  550. package/src/infra/join-requests/handle.ts +312 -0
  551. package/src/infra/join-requests/index.ts +2 -0
  552. package/src/infra/join-requests/namespace.ts +7 -0
  553. package/src/infra/join-requests/schema.ts +33 -0
  554. package/src/infra/outbox/core.ts +165 -0
  555. package/src/infra/quota/errors.ts +32 -0
  556. package/src/infra/quota/handle.ts +215 -0
  557. package/src/infra/quota/index.ts +5 -0
  558. package/src/infra/quota/namespace.ts +7 -0
  559. package/src/infra/quota/schema.ts +15 -0
  560. package/src/infra/storage/backend.ts +34 -0
  561. package/src/infra/storage/handle.ts +513 -0
  562. package/src/infra/storage/index.ts +9 -0
  563. package/src/infra/storage/local.ts +104 -0
  564. package/src/infra/storage/namespace.ts +13 -0
  565. package/src/infra/storage/s3.ts +257 -0
  566. package/src/infra/storage/schema.ts +24 -0
  567. package/src/infra/support/handle.ts +854 -0
  568. package/src/infra/support/http.ts +229 -0
  569. package/src/infra/support/index.ts +7 -0
  570. package/src/infra/support/namespace.ts +12 -0
  571. package/src/infra/support/schema.ts +96 -0
  572. package/src/infra/webhook/inbound.ts +45 -0
  573. package/src/infra/webhook/index.ts +5 -0
  574. package/src/infra/webhook/namespace.ts +24 -0
  575. package/src/infra/webhook/outbound.ts +315 -0
  576. package/src/infra/webhook/sign.ts +32 -0
  577. package/src/infra/webhook/verify.ts +82 -0
  578. package/src/invariants/assert.ts +26 -0
  579. package/src/invariants/index.ts +1 -0
  580. package/src/lint/config.ts +56 -0
  581. package/src/lint/doctrine.ts +163 -0
  582. package/src/lint/include.ts +97 -0
  583. package/src/lint/index.ts +3 -0
  584. package/src/lint/preset.ts +10 -0
  585. package/src/lint/resolver.ts +218 -0
  586. package/src/lint/rules/no-reexports.ts +46 -0
  587. package/src/request/behavior/audited.ts +85 -0
  588. package/src/request/behavior/cached.ts +62 -0
  589. package/src/request/behavior/compose.ts +28 -0
  590. package/src/request/behavior/index.ts +5 -0
  591. package/src/request/behavior/namespace.ts +16 -0
  592. package/src/request/behavior/types.ts +26 -0
  593. package/src/request/behavior/versioned.ts +54 -0
  594. package/src/request/context/create.ts +103 -0
  595. package/src/request/context/guard.ts +49 -0
  596. package/src/request/context/index.ts +4 -0
  597. package/src/request/context/run-in-transaction.ts +200 -0
  598. package/src/request/context/store.ts +28 -0
  599. package/src/request/context/types.ts +50 -0
  600. package/src/request/di/builder.ts +535 -0
  601. package/src/request/di/index.ts +8 -0
  602. package/src/request/di/resolve.ts +271 -0
  603. package/src/request/di/types.ts +262 -0
  604. package/src/request/fitting/namespace.ts +7 -0
  605. package/src/request/fixture/batch.ts +71 -0
  606. package/src/request/fixture/builder.ts +26 -0
  607. package/src/request/fixture/errors.ts +10 -0
  608. package/src/request/fixture/index.ts +8 -0
  609. package/src/request/fixture/namespace.ts +23 -0
  610. package/src/request/fixture/paginate.ts +44 -0
  611. package/src/request/fixture/to-handlers.ts +260 -0
  612. package/src/request/fixture/types.ts +79 -0
  613. package/src/request/flow/act-as.ts +78 -0
  614. package/src/request/flow/namespace.ts +17 -0
  615. package/src/request/http/error-step.ts +42 -0
  616. package/src/request/http/file.ts +141 -0
  617. package/src/request/http/index.ts +4 -0
  618. package/src/request/http/middleware.ts +141 -0
  619. package/src/request/http/namespace.ts +5 -0
  620. package/src/request/http/rate-limit-classes.ts +170 -0
  621. package/src/request/http/response.ts +82 -0
  622. package/src/request/http/server.ts +916 -0
  623. package/src/request/http/sniff.ts +261 -0
  624. package/src/request/http/types.ts +250 -0
  625. package/src/request/http/upload.ts +284 -0
  626. package/src/request/internal/text.ts +6 -0
  627. package/src/request/openapi/generate.ts +205 -0
  628. package/src/request/openapi/index.ts +2 -0
  629. package/src/request/openapi/namespace.ts +7 -0
  630. package/src/test/auth.ts +13 -0
  631. package/src/test/auto-setup.ts +45 -0
  632. package/src/test/context.ts +91 -0
  633. package/src/test/crawl-fixture.ts +157 -0
  634. package/src/test/discover-fork.ts +17 -0
  635. package/src/test/fingerprint.ts +135 -0
  636. package/src/test/globals.d.ts +7 -0
  637. package/src/test/index.ts +19 -0
  638. package/src/test/namespace.ts +87 -0
  639. package/src/test/plugin.ts +189 -0
  640. package/src/test/progress.ts +185 -0
  641. package/src/test/reap-after-run.ts +28 -0
  642. package/src/test/reap.ts +286 -0
  643. package/src/test/reset.ts +253 -0
  644. package/src/test/savepoints.ts +172 -0
  645. package/src/test/setup.ts +1422 -0
  646. package/src/test/system-channel.ts +50 -0
  647. package/src/test/vitest-plugin.ts +142 -0
  648. package/src/test/vitest-workspace.ts +507 -0
  649. package/src/test/vitest.ts +333 -0
  650. package/src/test/watch.ts +105 -0
  651. package/src/trace/capture/bounded-serializer.ts +146 -0
  652. package/src/trace/cardinality/analyze.ts +173 -0
  653. package/src/trace/cardinality/branch-context.ts +214 -0
  654. package/src/trace/cardinality/check.ts +33 -0
  655. package/src/trace/cardinality/classify-edge.ts +64 -0
  656. package/src/trace/cardinality/structural-max.ts +107 -0
  657. package/src/trace/check/coverage-check.ts +188 -0
  658. package/src/trace/check/flow-check.ts +103 -0
  659. package/src/trace/check/flow-step-site.ts +234 -0
  660. package/src/trace/check/io-pattern.ts +116 -0
  661. package/src/trace/codemod/add-cardinality.ts +152 -0
  662. package/src/trace/codemod/run.ts +80 -0
  663. package/src/trace/entry/child-trace.ts +21 -0
  664. package/src/trace/entry/close-trace.ts +87 -0
  665. package/src/trace/entry/finalize-trace.ts +28 -0
  666. package/src/trace/entry/open-trace.ts +138 -0
  667. package/src/trace/entry/parent-trace.ts +20 -0
  668. package/src/trace/entry/parse-traceparent.ts +39 -0
  669. package/src/trace/entry/process-start.ts +38 -0
  670. package/src/trace/entry/trace-context.ts +26 -0
  671. package/src/trace/entry/tracing-enabled.ts +10 -0
  672. package/src/trace/external/record.ts +195 -0
  673. package/src/trace/external/report.ts +66 -0
  674. package/src/trace/namespace.ts +19 -0
  675. package/src/trace/partition/day.ts +47 -0
  676. package/src/trace/partition/index.ts +14 -0
  677. package/src/trace/partition/partition-name.ts +23 -0
  678. package/src/trace/partition/plan.ts +82 -0
  679. package/src/trace/partition/schedule.ts +26 -0
  680. package/src/trace/partition/startup-hook.ts +39 -0
  681. package/src/trace/partition/sync.ts +154 -0
  682. package/src/trace/partition/tables.ts +53 -0
  683. package/src/trace/read/tree.ts +83 -0
  684. package/src/trace/retain/copy-on-error.ts +76 -0
  685. package/src/trace/runtime/expire-stale-traces.ts +54 -0
  686. package/src/trace/runtime/flow-step.ts +147 -0
  687. package/src/trace/runtime/flush-steps.ts +31 -0
  688. package/src/trace/runtime/pending-writes.ts +54 -0
  689. package/src/trace/runtime/step-buffer.ts +298 -0
  690. package/src/trace/runtime/step-error.ts +21 -0
  691. package/src/trace/runtime/step-meta.ts +55 -0
  692. package/src/trace/runtime/thenable.ts +12 -0
  693. package/src/trace/runtime/truncate-trace.ts +62 -0
  694. package/src/trace/schema/trace-fields.ts +52 -0
  695. package/src/trace/schema/trace-retained.ts +22 -0
  696. package/src/trace/schema/trace-step-fields.ts +44 -0
  697. package/src/trace/schema/trace-step-retained.ts +25 -0
  698. package/src/trace/schema/trace-step.ts +18 -0
  699. package/src/trace/schema/trace.ts +12 -0
  700. package/src/trace/transformer/apply.ts +79 -0
  701. package/src/trace/transformer/build-meta-literal.ts +30 -0
  702. package/src/trace/transformer/find-flow-step-sites.ts +85 -0
  703. package/src/trace/transformer/inject-flow-step-import.ts +39 -0
  704. package/src/trace/transformer/transform-error.ts +14 -0
  705. package/src/trace/transformer/transform-flow-steps.ts +123 -0
  706. package/src/trace/transformer/wrap-function-declaration.ts +62 -0
  707. package/src/trace/transformer/wrap-variable-declaration.ts +67 -0
  708. package/src/workspace/affected.ts +110 -0
  709. package/src/workspace/changed-files.ts +163 -0
  710. package/src/workspace/check-deps.ts +213 -0
  711. package/src/workspace/checksum.ts +20 -0
  712. package/src/workspace/dependency-graph.ts +67 -0
  713. package/src/workspace/detect-pipework-copies.ts +93 -0
  714. package/src/workspace/discover.ts +206 -0
  715. package/src/workspace/generate.ts +401 -0
  716. package/src/workspace/index.ts +7 -0
  717. package/src/workspace/module-imports-pipework.ts +39 -0
  718. package/src/workspace/module-package-name.ts +12 -0
  719. package/src/workspace/scrub-git-env.ts +23 -0
  720. package/src/workspace/source-paths.ts +36 -0
  721. package/src/workspace/sync.ts +182 -0
  722. package/dist/REFERENCE.md +0 -1477
  723. package/dist/infra/access-links/rate-limit.d.ts +0 -10
  724. package/dist/infra/access-links/rate-limit.d.ts.map +0 -1
  725. package/dist/infra/access-links/rate-limit.js +0 -28
  726. package/dist/infra/access-links/rate-limit.js.map +0 -1
  727. package/dist/infra/email/sigv4.d.ts +0 -24
  728. package/dist/infra/email/sigv4.d.ts.map +0 -1
  729. package/dist/infra/email/sigv4.js +0 -55
  730. package/dist/infra/email/sigv4.js.map +0 -1
@@ -0,0 +1,60 @@
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 type { AnyPgTable } from '../table.js';
11
+ import { PgColumn, PgColumnBuilder } from './common.js';
12
+
13
+ export type PgSmallSerialBuilderInitial<TName extends string> = NotNull<
14
+ HasDefault<
15
+ PgSmallSerialBuilder<{
16
+ name: TName;
17
+ dataType: 'number';
18
+ columnType: 'PgSmallSerial';
19
+ data: number;
20
+ driverParam: number;
21
+ enumValues: undefined;
22
+ }>
23
+ >
24
+ >;
25
+
26
+ export class PgSmallSerialBuilder<T extends ColumnBuilderBaseConfig<'number', 'PgSmallSerial'>>
27
+ extends PgColumnBuilder<T>
28
+ {
29
+ static override readonly [entityKind]: string = 'PgSmallSerialBuilder';
30
+
31
+ constructor(name: T['name']) {
32
+ super(name, 'number', 'PgSmallSerial');
33
+ this.config.hasDefault = true;
34
+ this.config.notNull = true;
35
+ }
36
+
37
+ /** @internal */
38
+ override build<TTableName extends string>(
39
+ table: AnyPgTable<{ name: TTableName }>,
40
+ ): PgSmallSerial<MakeColumnConfig<T, TTableName>> {
41
+ return new PgSmallSerial<MakeColumnConfig<T, TTableName>>(
42
+ table,
43
+ this.config as ColumnBuilderRuntimeConfig<any, any>,
44
+ );
45
+ }
46
+ }
47
+
48
+ export class PgSmallSerial<T extends ColumnBaseConfig<'number', 'PgSmallSerial'>> extends PgColumn<T> {
49
+ static override readonly [entityKind]: string = 'PgSmallSerial';
50
+
51
+ getSQLType(): string {
52
+ return 'smallserial';
53
+ }
54
+ }
55
+
56
+ export function smallserial(): PgSmallSerialBuilderInitial<''>;
57
+ export function smallserial<TName extends string>(name: TName): PgSmallSerialBuilderInitial<TName>;
58
+ export function smallserial(name?: string) {
59
+ return new PgSmallSerialBuilder(name ?? '');
60
+ }
@@ -0,0 +1,67 @@
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
+ import { getColumnNameAndConfig, type Writable } from '../../utils.js';
6
+ import { PgColumn, PgColumnBuilder } from './common.js';
7
+
8
+ export type PgTextBuilderInitial<TName extends string, TEnum extends [string, ...string[]]> = PgTextBuilder<{
9
+ name: TName;
10
+ dataType: 'string';
11
+ columnType: 'PgText';
12
+ data: TEnum[number];
13
+ enumValues: TEnum;
14
+ driverParam: string;
15
+ }>;
16
+
17
+ export class PgTextBuilder<
18
+ T extends ColumnBuilderBaseConfig<'string', 'PgText'>,
19
+ > extends PgColumnBuilder<T, { enumValues: T['enumValues'] }> {
20
+ static override readonly [entityKind]: string = 'PgTextBuilder';
21
+
22
+ constructor(
23
+ name: T['name'],
24
+ config: PgTextConfig<T['enumValues']>,
25
+ ) {
26
+ super(name, 'string', 'PgText');
27
+ this.config.enumValues = config.enum;
28
+ }
29
+
30
+ /** @internal */
31
+ override build<TTableName extends string>(
32
+ table: AnyPgTable<{ name: TTableName }>,
33
+ ): PgText<MakeColumnConfig<T, TTableName>> {
34
+ return new PgText<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);
35
+ }
36
+ }
37
+
38
+ export class PgText<T extends ColumnBaseConfig<'string', 'PgText'>>
39
+ extends PgColumn<T, { enumValues: T['enumValues'] }>
40
+ {
41
+ static override readonly [entityKind]: string = 'PgText';
42
+
43
+ override readonly enumValues = this.config.enumValues;
44
+
45
+ getSQLType(): string {
46
+ return 'text';
47
+ }
48
+ }
49
+
50
+ export interface PgTextConfig<
51
+ TEnum extends readonly string[] | string[] | undefined = readonly string[] | string[] | undefined,
52
+ > {
53
+ enum?: TEnum;
54
+ }
55
+
56
+ export function text(): PgTextBuilderInitial<'', [string, ...string[]]>;
57
+ export function text<U extends string, T extends Readonly<[U, ...U[]]>>(
58
+ config?: PgTextConfig<T | Writable<T>>,
59
+ ): PgTextBuilderInitial<'', Writable<T>>;
60
+ export function text<TName extends string, U extends string, T extends Readonly<[U, ...U[]]>>(
61
+ name: TName,
62
+ config?: PgTextConfig<T | Writable<T>>,
63
+ ): PgTextBuilderInitial<TName, Writable<T>>;
64
+ export function text(a?: string | PgTextConfig, b: PgTextConfig = {}): any {
65
+ const { name, config } = getColumnNameAndConfig<PgTextConfig>(a, b);
66
+ return new PgTextBuilder(name, config as any);
67
+ }
@@ -0,0 +1,72 @@
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
+ import { getColumnNameAndConfig } from '../../utils.js';
6
+ import { PgColumn } from './common.js';
7
+ import { PgDateColumnBaseBuilder } from './date.common.js';
8
+ import type { Precision } from './timestamp.js';
9
+
10
+ export type PgTimeBuilderInitial<TName extends string> = PgTimeBuilder<{
11
+ name: TName;
12
+ dataType: 'string';
13
+ columnType: 'PgTime';
14
+ data: string;
15
+ driverParam: string;
16
+ enumValues: undefined;
17
+ }>;
18
+
19
+ export class PgTimeBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgTime'>> extends PgDateColumnBaseBuilder<
20
+ T,
21
+ { withTimezone: boolean; precision: number | undefined }
22
+ > {
23
+ static override readonly [entityKind]: string = 'PgTimeBuilder';
24
+
25
+ constructor(
26
+ name: T['name'],
27
+ readonly withTimezone: boolean,
28
+ readonly precision: number | undefined,
29
+ ) {
30
+ super(name, 'string', 'PgTime');
31
+ this.config.withTimezone = withTimezone;
32
+ this.config.precision = precision;
33
+ }
34
+
35
+ /** @internal */
36
+ override build<TTableName extends string>(
37
+ table: AnyPgTable<{ name: TTableName }>,
38
+ ): PgTime<MakeColumnConfig<T, TTableName>> {
39
+ return new PgTime<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);
40
+ }
41
+ }
42
+
43
+ export class PgTime<T extends ColumnBaseConfig<'string', 'PgTime'>> extends PgColumn<T> {
44
+ static override readonly [entityKind]: string = 'PgTime';
45
+
46
+ readonly withTimezone: boolean;
47
+ readonly precision: number | undefined;
48
+
49
+ constructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgTimeBuilder<T>['config']) {
50
+ super(table, config);
51
+ this.withTimezone = config.withTimezone;
52
+ this.precision = config.precision;
53
+ }
54
+
55
+ getSQLType(): string {
56
+ const precision = this.precision === undefined ? '' : `(${this.precision})`;
57
+ return `time${precision}${this.withTimezone ? ' with time zone' : ''}`;
58
+ }
59
+ }
60
+
61
+ export interface TimeConfig {
62
+ precision?: Precision;
63
+ withTimezone?: boolean;
64
+ }
65
+
66
+ export function time(): PgTimeBuilderInitial<''>;
67
+ export function time(config?: TimeConfig): PgTimeBuilderInitial<''>;
68
+ export function time<TName extends string>(name: TName, config?: TimeConfig): PgTimeBuilderInitial<TName>;
69
+ export function time(a?: string | TimeConfig, b: TimeConfig = {}) {
70
+ const { name, config } = getColumnNameAndConfig<TimeConfig>(a, b);
71
+ return new PgTimeBuilder(name, config.withTimezone ?? false, config.precision);
72
+ }
@@ -0,0 +1,163 @@
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
+ import { type Equal, getColumnNameAndConfig } from '../../utils.js';
6
+ import { PgColumn } from './common.js';
7
+ import { PgDateColumnBaseBuilder } from './date.common.js';
8
+
9
+ export type PgTimestampBuilderInitial<TName extends string> = PgTimestampBuilder<{
10
+ name: TName;
11
+ dataType: 'date';
12
+ columnType: 'PgTimestamp';
13
+ data: Date;
14
+ driverParam: string;
15
+ enumValues: undefined;
16
+ }>;
17
+
18
+ export class PgTimestampBuilder<T extends ColumnBuilderBaseConfig<'date', 'PgTimestamp'>>
19
+ extends PgDateColumnBaseBuilder<
20
+ T,
21
+ { withTimezone: boolean; precision: number | undefined }
22
+ >
23
+ {
24
+ static override readonly [entityKind]: string = 'PgTimestampBuilder';
25
+
26
+ constructor(
27
+ name: T['name'],
28
+ withTimezone: boolean,
29
+ precision: number | undefined,
30
+ ) {
31
+ super(name, 'date', 'PgTimestamp');
32
+ this.config.withTimezone = withTimezone;
33
+ this.config.precision = precision;
34
+ }
35
+
36
+ /** @internal */
37
+ override build<TTableName extends string>(
38
+ table: AnyPgTable<{ name: TTableName }>,
39
+ ): PgTimestamp<MakeColumnConfig<T, TTableName>> {
40
+ return new PgTimestamp<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);
41
+ }
42
+ }
43
+
44
+ export class PgTimestamp<T extends ColumnBaseConfig<'date', 'PgTimestamp'>> extends PgColumn<T> {
45
+ static override readonly [entityKind]: string = 'PgTimestamp';
46
+
47
+ readonly withTimezone: boolean;
48
+ readonly precision: number | undefined;
49
+
50
+ constructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgTimestampBuilder<T>['config']) {
51
+ super(table, config);
52
+ this.withTimezone = config.withTimezone;
53
+ this.precision = config.precision;
54
+ }
55
+
56
+ getSQLType(): string {
57
+ const precision = this.precision === undefined ? '' : ` (${this.precision})`;
58
+ return `timestamp${precision}${this.withTimezone ? ' with time zone' : ''}`;
59
+ }
60
+
61
+ override mapFromDriverValue(value: Date | string): Date {
62
+ if (typeof value === 'string') return new Date(this.withTimezone ? value : value + '+0000');
63
+
64
+ return value;
65
+ }
66
+
67
+ override mapToDriverValue = (value: Date): string => {
68
+ return value.toISOString();
69
+ };
70
+ }
71
+
72
+ export type PgTimestampStringBuilderInitial<TName extends string> = PgTimestampStringBuilder<{
73
+ name: TName;
74
+ dataType: 'string';
75
+ columnType: 'PgTimestampString';
76
+ data: string;
77
+ driverParam: string;
78
+ enumValues: undefined;
79
+ }>;
80
+
81
+ export class PgTimestampStringBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgTimestampString'>>
82
+ extends PgDateColumnBaseBuilder<
83
+ T,
84
+ { withTimezone: boolean; precision: number | undefined }
85
+ >
86
+ {
87
+ static override readonly [entityKind]: string = 'PgTimestampStringBuilder';
88
+
89
+ constructor(
90
+ name: T['name'],
91
+ withTimezone: boolean,
92
+ precision: number | undefined,
93
+ ) {
94
+ super(name, 'string', 'PgTimestampString');
95
+ this.config.withTimezone = withTimezone;
96
+ this.config.precision = precision;
97
+ }
98
+
99
+ /** @internal */
100
+ override build<TTableName extends string>(
101
+ table: AnyPgTable<{ name: TTableName }>,
102
+ ): PgTimestampString<MakeColumnConfig<T, TTableName>> {
103
+ return new PgTimestampString<MakeColumnConfig<T, TTableName>>(
104
+ table,
105
+ this.config as ColumnBuilderRuntimeConfig<any, any>,
106
+ );
107
+ }
108
+ }
109
+
110
+ export class PgTimestampString<T extends ColumnBaseConfig<'string', 'PgTimestampString'>> extends PgColumn<T> {
111
+ static override readonly [entityKind]: string = 'PgTimestampString';
112
+
113
+ readonly withTimezone: boolean;
114
+ readonly precision: number | undefined;
115
+
116
+ constructor(table: AnyPgTable<{ name: T['tableName'] }>, config: PgTimestampStringBuilder<T>['config']) {
117
+ super(table, config);
118
+ this.withTimezone = config.withTimezone;
119
+ this.precision = config.precision;
120
+ }
121
+
122
+ getSQLType(): string {
123
+ const precision = this.precision === undefined ? '' : `(${this.precision})`;
124
+ return `timestamp${precision}${this.withTimezone ? ' with time zone' : ''}`;
125
+ }
126
+
127
+ override mapFromDriverValue(value: Date | string): string {
128
+ if (typeof value === 'string') return value;
129
+
130
+ const shortened = value.toISOString().slice(0, -1).replace('T', ' ');
131
+ if (this.withTimezone) {
132
+ const offset = value.getTimezoneOffset();
133
+ const sign = offset <= 0 ? '+' : '-';
134
+ return `${shortened}${sign}${Math.floor(Math.abs(offset) / 60).toString().padStart(2, '0')}`;
135
+ }
136
+
137
+ return shortened;
138
+ }
139
+ }
140
+
141
+ export type Precision = 0 | 1 | 2 | 3 | 4 | 5 | 6;
142
+
143
+ export interface PgTimestampConfig<TMode extends 'date' | 'string' = 'date' | 'string'> {
144
+ mode?: TMode;
145
+ precision?: Precision;
146
+ withTimezone?: boolean;
147
+ }
148
+
149
+ export function timestamp(): PgTimestampBuilderInitial<''>;
150
+ export function timestamp<TMode extends PgTimestampConfig['mode'] & {}>(
151
+ config?: PgTimestampConfig<TMode>,
152
+ ): Equal<TMode, 'string'> extends true ? PgTimestampStringBuilderInitial<''> : PgTimestampBuilderInitial<''>;
153
+ export function timestamp<TName extends string, TMode extends PgTimestampConfig['mode'] & {}>(
154
+ name: TName,
155
+ config?: PgTimestampConfig<TMode>,
156
+ ): Equal<TMode, 'string'> extends true ? PgTimestampStringBuilderInitial<TName> : PgTimestampBuilderInitial<TName>;
157
+ export function timestamp(a?: string | PgTimestampConfig, b: PgTimestampConfig = {}) {
158
+ const { name, config } = getColumnNameAndConfig<PgTimestampConfig | undefined>(a, b);
159
+ if (config?.mode === 'string') {
160
+ return new PgTimestampStringBuilder(name, config.withTimezone ?? false, config.precision);
161
+ }
162
+ return new PgTimestampBuilder(name, config?.withTimezone ?? false, config?.precision);
163
+ }
@@ -0,0 +1,51 @@
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
+ import { sql } from '../../sql/sql.js';
6
+ import { PgColumn, PgColumnBuilder } from './common.js';
7
+
8
+ export type PgUUIDBuilderInitial<TName extends string> = PgUUIDBuilder<{
9
+ name: TName;
10
+ dataType: 'string';
11
+ columnType: 'PgUUID';
12
+ data: string;
13
+ driverParam: string;
14
+ enumValues: undefined;
15
+ }>;
16
+
17
+ export class PgUUIDBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgUUID'>> extends PgColumnBuilder<T> {
18
+ static override readonly [entityKind]: string = 'PgUUIDBuilder';
19
+
20
+ constructor(name: T['name']) {
21
+ super(name, 'string', 'PgUUID');
22
+ }
23
+
24
+ /**
25
+ * Adds `default gen_random_uuid()` to the column definition.
26
+ */
27
+ defaultRandom(): ReturnType<this['default']> {
28
+ return this.default(sql`gen_random_uuid()`) as ReturnType<this['default']>;
29
+ }
30
+
31
+ /** @internal */
32
+ override build<TTableName extends string>(
33
+ table: AnyPgTable<{ name: TTableName }>,
34
+ ): PgUUID<MakeColumnConfig<T, TTableName>> {
35
+ return new PgUUID<MakeColumnConfig<T, TTableName>>(table, this.config as ColumnBuilderRuntimeConfig<any, any>);
36
+ }
37
+ }
38
+
39
+ export class PgUUID<T extends ColumnBaseConfig<'string', 'PgUUID'>> extends PgColumn<T> {
40
+ static override readonly [entityKind]: string = 'PgUUID';
41
+
42
+ getSQLType(): string {
43
+ return 'uuid';
44
+ }
45
+ }
46
+
47
+ export function uuid(): PgUUIDBuilderInitial<''>;
48
+ export function uuid<TName extends string>(name: TName): PgUUIDBuilderInitial<TName>;
49
+ export function uuid(name?: string) {
50
+ return new PgUUIDBuilder(name ?? '');
51
+ }
@@ -0,0 +1,89 @@
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
+ import { getColumnNameAndConfig, type Writable } from '../../utils.js';
6
+ import { PgColumn, PgColumnBuilder } from './common.js';
7
+
8
+ export type PgVarcharBuilderInitial<
9
+ TName extends string,
10
+ TEnum extends [string, ...string[]],
11
+ TLength extends number | undefined,
12
+ > = PgVarcharBuilder<{
13
+ name: TName;
14
+ dataType: 'string';
15
+ columnType: 'PgVarchar';
16
+ data: TEnum[number];
17
+ driverParam: string;
18
+ enumValues: TEnum;
19
+ length: TLength;
20
+ }>;
21
+
22
+ export class PgVarcharBuilder<
23
+ T extends ColumnBuilderBaseConfig<'string', 'PgVarchar'> & { length?: number | undefined },
24
+ > extends PgColumnBuilder<
25
+ T,
26
+ { length: T['length']; enumValues: T['enumValues'] },
27
+ { length: T['length'] }
28
+ > {
29
+ static override readonly [entityKind]: string = 'PgVarcharBuilder';
30
+
31
+ constructor(name: T['name'], config: PgVarcharConfig<T['enumValues'], T['length']>) {
32
+ super(name, 'string', 'PgVarchar');
33
+ this.config.length = config.length;
34
+ this.config.enumValues = config.enum;
35
+ }
36
+
37
+ /** @internal */
38
+ override build<TTableName extends string>(
39
+ table: AnyPgTable<{ name: TTableName }>,
40
+ ): PgVarchar<MakeColumnConfig<T, TTableName> & { length: T['length'] }> {
41
+ return new PgVarchar<MakeColumnConfig<T, TTableName> & { length: T['length'] }>(
42
+ table,
43
+ this.config as ColumnBuilderRuntimeConfig<any, any>,
44
+ );
45
+ }
46
+ }
47
+
48
+ export class PgVarchar<T extends ColumnBaseConfig<'string', 'PgVarchar'> & { length?: number | undefined }>
49
+ extends PgColumn<T, { length: T['length']; enumValues: T['enumValues'] }, { length: T['length'] }>
50
+ {
51
+ static override readonly [entityKind]: string = 'PgVarchar';
52
+
53
+ readonly length = this.config.length;
54
+ override readonly enumValues = this.config.enumValues;
55
+
56
+ getSQLType(): string {
57
+ return this.length === undefined ? `varchar` : `varchar(${this.length})`;
58
+ }
59
+ }
60
+
61
+ export interface PgVarcharConfig<
62
+ TEnum extends readonly string[] | string[] | undefined = readonly string[] | string[] | undefined,
63
+ TLength extends number | undefined = number | undefined,
64
+ > {
65
+ enum?: TEnum;
66
+ length?: TLength;
67
+ }
68
+
69
+ export function varchar(): PgVarcharBuilderInitial<'', [string, ...string[]], undefined>;
70
+ export function varchar<
71
+ U extends string,
72
+ T extends Readonly<[U, ...U[]]>,
73
+ L extends number | undefined,
74
+ >(
75
+ config?: PgVarcharConfig<T | Writable<T>, L>,
76
+ ): PgVarcharBuilderInitial<'', Writable<T>, L>;
77
+ export function varchar<
78
+ TName extends string,
79
+ U extends string,
80
+ T extends Readonly<[U, ...U[]]>,
81
+ L extends number | undefined,
82
+ >(
83
+ name: TName,
84
+ config?: PgVarcharConfig<T | Writable<T>, L>,
85
+ ): PgVarcharBuilderInitial<TName, Writable<T>, L>;
86
+ export function varchar(a?: string | PgVarcharConfig, b: PgVarcharConfig = {}): any {
87
+ const { name, config } = getColumnNameAndConfig<PgVarcharConfig>(a, b);
88
+ return new PgVarcharBuilder(name, config as any);
89
+ }
@@ -0,0 +1,68 @@
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
+ import { getColumnNameAndConfig } from '../../../utils.js';
6
+ import { PgColumn, PgColumnBuilder } from '../common.js';
7
+
8
+ export type PgBinaryVectorBuilderInitial<TName extends string, TDimensions extends number> = PgBinaryVectorBuilder<{
9
+ name: TName;
10
+ dataType: 'string';
11
+ columnType: 'PgBinaryVector';
12
+ data: string;
13
+ driverParam: string;
14
+ enumValues: undefined;
15
+ dimensions: TDimensions;
16
+ }>;
17
+
18
+ export class PgBinaryVectorBuilder<
19
+ T extends ColumnBuilderBaseConfig<'string', 'PgBinaryVector'> & { dimensions: number },
20
+ > extends PgColumnBuilder<
21
+ T,
22
+ { dimensions: T['dimensions'] }
23
+ > {
24
+ static override readonly [entityKind]: string = 'PgBinaryVectorBuilder';
25
+
26
+ constructor(name: string, config: PgBinaryVectorConfig<T['dimensions']>) {
27
+ super(name, 'string', 'PgBinaryVector');
28
+ this.config.dimensions = config.dimensions;
29
+ }
30
+
31
+ /** @internal */
32
+ override build<TTableName extends string>(
33
+ table: AnyPgTable<{ name: TTableName }>,
34
+ ): PgBinaryVector<MakeColumnConfig<T, TTableName> & { dimensions: T['dimensions'] }> {
35
+ return new PgBinaryVector<MakeColumnConfig<T, TTableName> & { dimensions: T['dimensions'] }>(
36
+ table,
37
+ this.config as ColumnBuilderRuntimeConfig<any, any>,
38
+ );
39
+ }
40
+ }
41
+
42
+ export class PgBinaryVector<T extends ColumnBaseConfig<'string', 'PgBinaryVector'> & { dimensions: number }>
43
+ extends PgColumn<T, { dimensions: T['dimensions'] }, { dimensions: T['dimensions'] }>
44
+ {
45
+ static override readonly [entityKind]: string = 'PgBinaryVector';
46
+
47
+ readonly dimensions = this.config.dimensions;
48
+
49
+ getSQLType(): string {
50
+ return `bit(${this.dimensions})`;
51
+ }
52
+ }
53
+
54
+ export interface PgBinaryVectorConfig<TDimensions extends number = number> {
55
+ dimensions: TDimensions;
56
+ }
57
+
58
+ export function bit<D extends number>(
59
+ config: PgBinaryVectorConfig<D>,
60
+ ): PgBinaryVectorBuilderInitial<'', D>;
61
+ export function bit<TName extends string, D extends number>(
62
+ name: TName,
63
+ config: PgBinaryVectorConfig<D>,
64
+ ): PgBinaryVectorBuilderInitial<TName, D>;
65
+ export function bit(a: string | PgBinaryVectorConfig, b?: PgBinaryVectorConfig) {
66
+ const { name, config } = getColumnNameAndConfig<PgBinaryVectorConfig>(a, b);
67
+ return new PgBinaryVectorBuilder(name, config);
68
+ }
@@ -0,0 +1,80 @@
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
+ import { getColumnNameAndConfig } from '../../../utils.js';
6
+ import { PgColumn, PgColumnBuilder } from '../common.js';
7
+
8
+ export type PgHalfVectorBuilderInitial<TName extends string, TDimensions extends number> = PgHalfVectorBuilder<{
9
+ name: TName;
10
+ dataType: 'array';
11
+ columnType: 'PgHalfVector';
12
+ data: number[];
13
+ driverParam: string;
14
+ enumValues: undefined;
15
+ dimensions: TDimensions;
16
+ }>;
17
+
18
+ export class PgHalfVectorBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgHalfVector'> & { dimensions: number }>
19
+ extends PgColumnBuilder<
20
+ T,
21
+ { dimensions: T['dimensions'] },
22
+ { dimensions: T['dimensions'] }
23
+ >
24
+ {
25
+ static override readonly [entityKind]: string = 'PgHalfVectorBuilder';
26
+
27
+ constructor(name: string, config: PgHalfVectorConfig<T['dimensions']>) {
28
+ super(name, 'array', 'PgHalfVector');
29
+ this.config.dimensions = config.dimensions;
30
+ }
31
+
32
+ /** @internal */
33
+ override build<TTableName extends string>(
34
+ table: AnyPgTable<{ name: TTableName }>,
35
+ ): PgHalfVector<MakeColumnConfig<T, TTableName> & { dimensions: T['dimensions'] }> {
36
+ return new PgHalfVector<MakeColumnConfig<T, TTableName> & { dimensions: T['dimensions'] }>(
37
+ table,
38
+ this.config as ColumnBuilderRuntimeConfig<any, any>,
39
+ );
40
+ }
41
+ }
42
+
43
+ export class PgHalfVector<T extends ColumnBaseConfig<'array', 'PgHalfVector'> & { dimensions: number }>
44
+ extends PgColumn<T, { dimensions: T['dimensions'] }, { dimensions: T['dimensions'] }>
45
+ {
46
+ static override readonly [entityKind]: string = 'PgHalfVector';
47
+
48
+ readonly dimensions: T['dimensions'] = this.config.dimensions;
49
+
50
+ getSQLType(): string {
51
+ return `halfvec(${this.dimensions})`;
52
+ }
53
+
54
+ override mapToDriverValue(value: unknown): unknown {
55
+ return JSON.stringify(value);
56
+ }
57
+
58
+ override mapFromDriverValue(value: string): unknown {
59
+ return value
60
+ .slice(1, -1)
61
+ .split(',')
62
+ .map((v) => Number.parseFloat(v));
63
+ }
64
+ }
65
+
66
+ export interface PgHalfVectorConfig<TDimensions extends number = number> {
67
+ dimensions: TDimensions;
68
+ }
69
+
70
+ export function halfvec<D extends number>(
71
+ config: PgHalfVectorConfig<D>,
72
+ ): PgHalfVectorBuilderInitial<'', D>;
73
+ export function halfvec<TName extends string, D extends number>(
74
+ name: TName,
75
+ config: PgHalfVectorConfig,
76
+ ): PgHalfVectorBuilderInitial<TName, D>;
77
+ export function halfvec(a: string | PgHalfVectorConfig, b?: PgHalfVectorConfig) {
78
+ const { name, config } = getColumnNameAndConfig<PgHalfVectorConfig>(a, b);
79
+ return new PgHalfVectorBuilder(name, config);
80
+ }