@murumets-ee/db 0.106.0 → 0.108.0

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.
package/dist/index.d.mts CHANGED
@@ -107,6 +107,171 @@ declare function createDbClient(config: DbConfig): PostgresJsDatabase;
107
107
  */
108
108
  declare function createReadOnlyClient(config: DbConfig): PostgresJsDatabase;
109
109
  //#endregion
110
+ //#region src/deploy/advisory-lock.d.ts
111
+ /**
112
+ * An advisory lock's two-part key. Both halves are signed 32-bit integers —
113
+ * Postgres' `(int4, int4)` form, so toolkit locks sit in their own namespace
114
+ * (`space`) and cannot collide with an application's single-`bigint` keys.
115
+ */
116
+ interface AdvisoryLockKey {
117
+ readonly space: number;
118
+ readonly id: number;
119
+ }
120
+ /** The first half of every toolkit-owned advisory lock key: ASCII `LUMI`. */
121
+ declare const TOOLKIT_ADVISORY_LOCK_SPACE = 1280658761;
122
+ /** One deploy-step runner per database. */
123
+ declare const DEPLOY_STEPS_LOCK: AdvisoryLockKey;
124
+ type AdvisoryLockResult<T> = {
125
+ readonly acquired: true;
126
+ readonly value: T;
127
+ } | {
128
+ readonly acquired: false;
129
+ };
130
+ /**
131
+ * Run `fn` while holding the advisory lock `key`, or return
132
+ * `{ acquired: false }` without running it when someone else holds it.
133
+ */
134
+ declare function withAdvisoryLock<T>(db: PostgresJsDatabase, key: AdvisoryLockKey, fn: () => Promise<T>): Promise<AdvisoryLockResult<T>>;
135
+ //#endregion
136
+ //#region src/deploy/deploy-steps-table.d.ts
137
+ /**
138
+ * The deploy-step ledger (plan `deploy-drift` D002): one row per ATTEMPT of a
139
+ * deploy step on a site. Nothing here is ever updated or deleted — the current
140
+ * state of a step on a site is its NEWEST row, and the older ones are its
141
+ * history. Resetting a step is a new attempt, never a removed row.
142
+ *
143
+ * A framework table, not a plugin's: every lumi-cms project has deploy steps
144
+ * available and therefore has this table, whichever plugins it loads. It is
145
+ * wired where `entity_refs` is — `createApp`, `buildCliApp` and `lumi migrate`'s
146
+ * schema map — so it reaches the schema snapshot and gets a generated
147
+ * migration like any other table (unlike `_toolkit_migrations`, which is raw
148
+ * SQL outside the snapshots and is not the shape to copy).
149
+ *
150
+ * It lives in `@murumets-ee/db` because the runner that writes it lives in
151
+ * `@murumets-ee/core`, and core owns no tables of its own.
152
+ */
153
+ /** The table's name — also its key in the migration schema map. */
154
+ declare const DEPLOY_STEPS_TABLE_NAME = "toolkit_deploy_steps";
155
+ /**
156
+ * What an attempt ended as. STORED states only: "waiting" and "waiting for
157
+ * another step" are computed on every read from what is declared and what is
158
+ * recorded, and are never written (a cached pending list is the bug Drupal had).
159
+ */
160
+ declare const DEPLOY_STEP_STATES: readonly ["applied", "needs-a-person", "marked-done"];
161
+ type DeployStepState = (typeof DEPLOY_STEP_STATES)[number];
162
+ declare const deployStepsTable: {
163
+ table: import("drizzle-orm/pg-core").PgTableWithColumns<{
164
+ name: string;
165
+ schema: undefined;
166
+ columns: {
167
+ [x: string]: import("drizzle-orm/pg-core").PgColumn<{
168
+ name: string;
169
+ tableName: string;
170
+ dataType: import("drizzle-orm").ColumnDataType;
171
+ columnType: string;
172
+ data: unknown;
173
+ driverParam: unknown;
174
+ notNull: false;
175
+ hasDefault: false;
176
+ isPrimaryKey: false;
177
+ isAutoincrement: false;
178
+ hasRuntimeDefault: false;
179
+ enumValues: string[] | undefined;
180
+ baseColumn: never;
181
+ identity: undefined;
182
+ generated: undefined;
183
+ }, {}, {}>;
184
+ };
185
+ dialect: "pg";
186
+ }>;
187
+ schema: TableDefinition<{
188
+ readonly id: ColumnFactory<string, "uuid", true, true>; /** The seeder's `name`. */
189
+ readonly step: ColumnFactory<string, "varchar", true, false>; /** The site handle the attempt was for. */
190
+ readonly site: ColumnFactory<string, "varchar", true, false>; /** One of {@link DEPLOY_STEP_STATES}. */
191
+ readonly state: ColumnFactory<string, "varchar", true, false>; /** Why it needs a person — the step's own words, or the error's message. */
192
+ readonly reason: ColumnFactory<string, "text", false, false>; /** What a person should do about it — the step's own words. */
193
+ readonly whatToDo: ColumnFactory<string, "text", false, false>; /** Rows the step said it created. Null for a mark and for a throw. */
194
+ readonly created: ColumnFactory<number, "integer", false, false>;
195
+ readonly at: ColumnFactory<Date, "timestamp", true, true>;
196
+ /**
197
+ * Who ran it: `deploy`, `cli`, or a user id. A user id is varchar, never
198
+ * uuid — better-auth ids are random strings.
199
+ */
200
+ readonly by: ColumnFactory<string, "varchar", true, false>; /** That person's name or e-mail as it was then; null for `deploy` / `cli`. */
201
+ readonly byName: ColumnFactory<string, "varchar", false, false>; /** The commit of the build that ran it; null when the build was not told. */
202
+ readonly buildCommit: ColumnFactory<string, "varchar", false, false>; /** The toolkit version that ran it. */
203
+ readonly toolkitVersion: ColumnFactory<string, "varchar", false, false>;
204
+ }>;
205
+ columnKinds: Readonly<Record<string, ColumnKind>>;
206
+ primaryKeyColumns: readonly string[];
207
+ makeClient: (database: import("drizzle-orm/postgres-js").PostgresJsDatabase, partitionValue?: string) => TableClient<{
208
+ readonly id: ColumnFactory<string, "uuid", true, true>; /** The seeder's `name`. */
209
+ readonly step: ColumnFactory<string, "varchar", true, false>; /** The site handle the attempt was for. */
210
+ readonly site: ColumnFactory<string, "varchar", true, false>; /** One of {@link DEPLOY_STEP_STATES}. */
211
+ readonly state: ColumnFactory<string, "varchar", true, false>; /** Why it needs a person — the step's own words, or the error's message. */
212
+ readonly reason: ColumnFactory<string, "text", false, false>; /** What a person should do about it — the step's own words. */
213
+ readonly whatToDo: ColumnFactory<string, "text", false, false>; /** Rows the step said it created. Null for a mark and for a throw. */
214
+ readonly created: ColumnFactory<number, "integer", false, false>;
215
+ readonly at: ColumnFactory<Date, "timestamp", true, true>;
216
+ /**
217
+ * Who ran it: `deploy`, `cli`, or a user id. A user id is varchar, never
218
+ * uuid — better-auth ids are random strings.
219
+ */
220
+ readonly by: ColumnFactory<string, "varchar", true, false>; /** That person's name or e-mail as it was then; null for `deploy` / `cli`. */
221
+ readonly byName: ColumnFactory<string, "varchar", false, false>; /** The commit of the build that ran it; null when the build was not told. */
222
+ readonly buildCommit: ColumnFactory<string, "varchar", false, false>; /** The toolkit version that ran it. */
223
+ readonly toolkitVersion: ColumnFactory<string, "varchar", false, false>;
224
+ }, import("drizzle-orm/pg-core").PgTableWithColumns<{
225
+ name: string;
226
+ schema: undefined;
227
+ columns: {
228
+ [x: string]: import("drizzle-orm/pg-core").PgColumn<{
229
+ name: string;
230
+ tableName: string;
231
+ dataType: import("drizzle-orm").ColumnDataType;
232
+ columnType: string;
233
+ data: unknown;
234
+ driverParam: unknown;
235
+ notNull: false;
236
+ hasDefault: false;
237
+ isPrimaryKey: false;
238
+ isAutoincrement: false;
239
+ hasRuntimeDefault: false;
240
+ enumValues: string[] | undefined;
241
+ baseColumn: never;
242
+ identity: undefined;
243
+ generated: undefined;
244
+ }, {}, {}>;
245
+ };
246
+ dialect: "pg";
247
+ }>>;
248
+ partitionColumn: "step" | "site" | "at" | "id" | "state" | "reason" | "whatToDo" | "created" | "by" | "byName" | "buildCommit" | "toolkitVersion" | undefined;
249
+ };
250
+ declare const toolkitDeploySteps: import("drizzle-orm/pg-core").PgTableWithColumns<{
251
+ name: string;
252
+ schema: undefined;
253
+ columns: {
254
+ [x: string]: import("drizzle-orm/pg-core").PgColumn<{
255
+ name: string;
256
+ tableName: string;
257
+ dataType: import("drizzle-orm").ColumnDataType;
258
+ columnType: string;
259
+ data: unknown;
260
+ driverParam: unknown;
261
+ notNull: false;
262
+ hasDefault: false;
263
+ isPrimaryKey: false;
264
+ isAutoincrement: false;
265
+ hasRuntimeDefault: false;
266
+ enumValues: string[] | undefined;
267
+ baseColumn: never;
268
+ identity: undefined;
269
+ generated: undefined;
270
+ }, {}, {}>;
271
+ };
272
+ dialect: "pg";
273
+ }>;
274
+ //#endregion
110
275
  //#region src/extensions.d.ts
111
276
  /**
112
277
  * Postgres extension helpers — the single source of truth for how the toolkit
@@ -489,6 +654,15 @@ interface IndexDefinition<TCols extends Record<string, ColumnFactory>> {
489
654
  */
490
655
  interface UniqueDefinition<TCols extends Record<string, ColumnFactory>> {
491
656
  on: (keyof TCols)[];
657
+ /**
658
+ * The constraint (or, with `where`, unique index) name in Postgres.
659
+ *
660
+ * Without it, a plain unique is named by drizzle — `<table>_<db col
661
+ * names>_unique`, using each column's `pgName` when set — and a partial
662
+ * unique is named `uq_<table>_<props>`. Either way `defineTable` throws when
663
+ * the resulting identifier exceeds Postgres's 63-character limit (which
664
+ * would otherwise truncate it silently); supply a shorter `name` then.
665
+ */
492
666
  name?: string;
493
667
  /**
494
668
  * Optional partial-uniqueness predicate — emits a partial UNIQUE **INDEX**
@@ -1471,5 +1645,5 @@ declare function onCommit(executor: object | null | undefined, callback: CommitC
1471
1645
  /** Whether `executor` is a transaction handle that is open and tracked right now. */
1472
1646
  declare function isTrackedTransaction(executor: object | null | undefined): boolean;
1473
1647
  //#endregion
1474
- export { type AnyPgColumn, type ClaimOptions, type ColumnFactory, type ColumnKind, type ColumnOperators, type ColumnValue, type CommitCallback, DEFAULT_LIMIT, DEFAULT_READ_ONLY_STATEMENT_TIMEOUT_MS, type DbConfig, type DefinedTable, type DependentCleanup, EXTENSION_NAME_PATTERN, type FindManyOptions, type IndexDefinition, type InsertRow, MAX_BATCH, MAX_LIMIT, MAX_STATEMENT_TIMEOUT_MS, type MigrateArgs, type MigrationLoader, type MigrationModule, type MigrationSource, type MigrationStatus, type OrderBySpec, type QueryStats, type Row, type SchemaRegistry, type TableCleanupDescriptor, TableClient, TableClientError, type TableDefinition, type TableDependency, type UniqueDefinition, WhereBuilderError, type WhereClause, __clearDependentCleanups, assertValidExtensionName, column, createDbClient, createExtensionStatement, createListenClient, createReadOnlyClient, defineTable, getDependentCleanups, getMigrationStatus, getQueryStats, getTableCleanupDescriptors, getTablePartitionColumn, isNonEmptyWhere, isQueryCounterEnabled, isTrackedTransaction, onCommit, parseStatementTimeoutEnv, queryCountingLogger, registerDependentCleanup, rollbackMigrations, runMigrations, runWithQueryStats, schemaRegistry, tableRegistry, trackTransactions };
1648
+ export { type AdvisoryLockKey, type AdvisoryLockResult, type AnyPgColumn, type ClaimOptions, type ColumnFactory, type ColumnKind, type ColumnOperators, type ColumnValue, type CommitCallback, DEFAULT_LIMIT, DEFAULT_READ_ONLY_STATEMENT_TIMEOUT_MS, DEPLOY_STEPS_LOCK, DEPLOY_STEPS_TABLE_NAME, DEPLOY_STEP_STATES, type DbConfig, type DefinedTable, type DependentCleanup, type DeployStepState, EXTENSION_NAME_PATTERN, type FindManyOptions, type IndexDefinition, type InsertRow, MAX_BATCH, MAX_LIMIT, MAX_STATEMENT_TIMEOUT_MS, type MigrateArgs, type MigrationLoader, type MigrationModule, type MigrationSource, type MigrationStatus, type OrderBySpec, type QueryStats, type Row, type SchemaRegistry, TOOLKIT_ADVISORY_LOCK_SPACE, type TableCleanupDescriptor, TableClient, TableClientError, type TableDefinition, type TableDependency, type UniqueDefinition, WhereBuilderError, type WhereClause, __clearDependentCleanups, assertValidExtensionName, column, createDbClient, createExtensionStatement, createListenClient, createReadOnlyClient, defineTable, deployStepsTable, getDependentCleanups, getMigrationStatus, getQueryStats, getTableCleanupDescriptors, getTablePartitionColumn, isNonEmptyWhere, isQueryCounterEnabled, isTrackedTransaction, onCommit, parseStatementTimeoutEnv, queryCountingLogger, registerDependentCleanup, rollbackMigrations, runMigrations, runWithQueryStats, schemaRegistry, tableRegistry, toolkitDeploySteps, trackTransactions, withAdvisoryLock };
1475
1649
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/client.ts","../src/extensions.ts","../src/listen.ts","../src/migrate.ts","../src/query-counter.ts","../src/schema-registry.ts","../src/table/types.ts","../src/table/client.ts","../src/table/columns.ts","../src/table/define.ts","../src/table/dependency-registry.ts","../src/table/registry.ts","../src/table/where-builder.ts","../src/transaction-hooks.ts"],"mappings":";;;;;;;UAMiB,QAAA;EACf,GAAA;EACA,WAAA;EACA,OAAA;EACA,OAAA;;AAJF;;;;;;;;;EAeE,0BAAA;AAAA;AAmBF;;;;AAAmD;AAUnD;;;;AAAqC;AAoBrC;;;;AAAgE;AAmChE;AAjEA,cAAa,sCAAA;;;;;;;AAiEuD;AAuCpE;cA9Fa,wBAAA;;;;;;;AA8F6D;;;;ACtH1E;;;;AAA0D;AAO1D;;;iBDqCgB,wBAAA,CAAyB,GAAuB;ACrCX;AAkBrD;;;;AAAqD;;;;AAlBA,iBDwErC,cAAA,CAAe,MAAA,EAAQ,QAAA,GAAW,kBAAkB;;;;;;;;;;;;;AEtFE;;;;ACUtE;;;;AACwB;AASxB;;;;;;;iBHyGgB,oBAAA,CAAqB,MAAA,EAAQ,QAAA,GAAW,kBAAkB;;;;;;;;;;AA1I1E;;;;;;;;;;AAe4B;AAmB5B;;;;AAAmD;AAUnD;;AA7B4B,cCKf,sBAAA,EAAsB,MAAuB;;ADwBrB;AAoBrC;;;iBCrCgB,wBAAA,CAAyB,IAAY;ADqCW;AAmChE;;;;;;;AAnCgE,iBCnBhD,wBAAA,CAAyB,IAAY;;;;;;;;AD7CrD;;;;;;;;;;AAe4B;iBEFZ,kBAAA,CAAmB,MAAA,EAAQ,IAAA,CAAK,QAAA,WAAmB,GAAA;;;;;;;;;AFbnE;;;;UGuBiB,WAAA;EACf,EAAA,EAAI,kBAAkB;AAAA;;;;AHTI;AAmB5B;;UGDiB,eAAA;EACf,EAAA,GAAK,IAAA,EAAM,WAAA,KAAgB,OAAA;EAC3B,IAAA,IAAQ,IAAA,EAAM,WAAA,KAAgB,OAAA;AAAA;AAAA,UAGf,eAAA;;EAEf,IAAA;EHImC;EGFnC,SAAA;EHsBsC;EGpBtC,IAAA;AAAA;AAAA,UAGe,eAAA;EACf,OAAA,EAAS,eAAA;EACT,OAAA,EAAS,eAAe;AAAA;;;;;;AHkD0C;AAuCpE;;KG9EY,eAAA,IAAmB,YAAA,aAAyB,OAAO,CAAC,eAAA;;iBAqD1C,kBAAA,CACpB,EAAA,EAAI,kBAAA,EACJ,WAAA,WACC,OAAA,CAAQ,eAAA;;;;AHsB+D;;;;ACtH1E;;;;AAA0D;iBEgIpC,aAAA,CACpB,EAAA,EAAI,kBAAA,EACJ,WAAA,UACA,MAAA,EAAQ,eAAA,GACP,OAAA;;;;AF7HkD;AAkBrD;;;iBE2JsB,kBAAA,CACpB,EAAA,EAAI,kBAAA,EACJ,WAAA,UACA,MAAA,EAAQ,eAAA,EACR,KAAA,YACC,OAAA;;;;;;;;;AH7MH;;;;;;;UIWiB,UAAA;EACf,KAAK;AAAA;AAAA,iBAKS,aAAA,CAAA,GAAiB,UAAU;AAAA,iBAI3B,iBAAA,GAAA,CAAqB,EAAA,GAAK,KAAA,EAAO,UAAA,KAAe,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;AAAA,cAYxE,mBAAA,EAAqB,MAAkC;AAAA,iBAEpD,qBAAA,CAAA;;;;;;;;;AJnChB;;KKMK,QAAA,GAAW,kBAAkB;AAAA,UAEjB,cAAA;EACf,QAAA,CAAS,IAAA,UAAc,MAAA,EAAQ,QAAA;EAC/B,GAAA,CAAI,IAAA,WAAe,QAAA;EACnB,GAAA,IAAO,MAAA,SAAe,QAAA;EACtB,GAAA,CAAI,IAAA;AAAA;AAAA,cAGA,kBAAA,YAA8B,cAAA;EAAA,QAC1B,OAAA;EAER,QAAA,CAAS,IAAA,UAAc,MAAA,EAAQ,QAAA;EAI/B,GAAA,CAAI,IAAA,WAAe,QAAA;EAInB,GAAA,CAAA,GAAO,MAAA,SAAe,QAAA;EAQtB,GAAA,CAAI,IAAA;AAAA;ALUN;;;;AAAA,cKDa,cAAA,EAAc,kBAA2B;;;AL5B1B;AAmB5B;;;;AAAmD;AAUnD;AA7B4B,KMKhB,UAAA;;;ANwByB;AAoBrC;;;;AAAgE;AAmChE;;;;UMvDiB,aAAA,gCAED,UAAA,GAAa,UAAA;ENqDE;EAAA,CMhD5B,IAAA,WAAe,mBAAA;EAAA,SACP,MAAA,EAAQ,KAAA;EAAA,SACR,MAAA,EAAQ,KAAA;EAAA,SACR,SAAA,EAAW,QAAA;EAAA,SACX,YAAA,EAAc,WAAA;;;;;;WAMd,QAAA;EN6E+D;EAAA,SM3E/D,YAAA;AAAA;;AL3CX;;;;AAA0D;KKoD9C,WAAA,MACV,CAAA,SAAU,aAAA,UAAuB,UAAA,cAAwB,CAAA,gBAAiB,CAAA,GAAI,CAAA;;;;KAKpE,GAAA,eAAkB,MAAA,SAAe,aAAA,mBAC/B,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,CAAA;;;ALlCa;;;;AChCrD;KI4EY,SAAA,eAAwB,MAAA,SAAe,aAAA,mBAErC,KAAA,IAAS,KAAA,CAAM,CAAA,UAAW,aAAA,UAAuB,UAAA,iBACzD,CAAA,WACQ,WAAA,CAAY,KAAA,CAAM,CAAA,qBAGlB,KAAA,IAAS,KAAA,CAAM,CAAA,UAAW,aAAA,UAAuB,UAAA,yBAEzD,CAAA,IAAK,WAAA,CAAY,KAAA,CAAM,CAAA;;;;;;;;AJrFyC;;;;ACUtE;;;;AACwB;AASxB;;;KG2FY,eAAA,MACR,CAAA;EAEE,EAAA,EAAI,CAAA;AAAA;EACJ,EAAA,EAAI,CAAA;AAAA;EACJ,EAAA,EAAI,CAAA;AAAA;EACJ,KAAA,EAAO,CAAA;AAAA;EACP,EAAA,EAAI,CAAA;AAAA;EACJ,GAAA,EAAK,CAAA;AAAA;EACL,EAAA,EAAI,CAAA;AAAA;EACJ,GAAA,EAAK,CAAA;AAAA;EACL,MAAA;AAAA;EACA,SAAA;AAAA;EACA,KAAA;AAAA;EACA,UAAA;AAAA;AH3FN;;;;;;;;;AAE0B;AAW1B;;;;;;;;AAA+E;AAqD/E;;;;;;;;;;;;AAlEA,KG4HY,WAAA,eAA0B,MAAA,SAAe,aAAA,mBACvC,KAAA,IAAS,eAAA,CAAgB,WAAA,CAAY,KAAA,CAAM,CAAA;EAAA,CAGtD,GAAA,0BAA6B,eAAA;AAAA;EAE9B,IAAA,GAAO,WAAA,CAAY,KAAA;EACnB,GAAA,GAAM,WAAA,CAAY,KAAA;EAClB,IAAA,GAAO,WAAA,CAAY,KAAA;AAAA;;;;;;;;;;AH3BX;AAgDV;;;;;;;;;;;;;;;;AAKU;;;;AClMV;;;;AACO;AAKP;KE6MY,cAAA,GAAiB,GAAA,KAAQ,OAAA,EAAS,MAAA,SAAe,aAAA,MAAiB,GAAA;;;AF7MnC;AAI3C;;;;UEkNiB,eAAA,eAA8B,MAAA,SAAe,aAAA;EAC5D,EAAA,SAAW,KAAA;EACX,IAAA;EFpN2E;;;;EEyN3E,KAAA,GAAQ,cAAA;AAAA;;;;;;;AFzN4E;UEmOrE,gBAAA,eAA+B,MAAA,SAAe,aAAA;EAC7D,EAAA,SAAW,KAAA;EACX,IAAA;EFzNkE;AAAA;AAEpE;;;;AAAqC;;EEgOnC,KAAA,GAAQ,cAAA;AAAA;ADzQmD;;;;AAY3B;AAElC;;;;;;AAd6D,UCuR5C,eAAA,eAA8B,MAAA,SAAe,aAAA;EDtQ/C;ECwQb,MAAA;ED1QA;EC4QA,MAAA,QAAc,KAAA;ED5QiB;EC8Q/B,QAAA;AAAA;;;;;;;;;AD3QgB;AACjB;;;;;;;;UC8RgB,eAAA,eAA8B,MAAA,SAAe,aAAA;ED5RZ;;;;;;;ECoShD,IAAA;EACA,OAAA,EAAS,KAAA;ED9RU;;;;;;;AAYH;EC2RhB,UAAA,SAAmB,KAAA,UAAe,KAAA;EAClC,MAAA,GAAS,gBAAA,CAAiB,KAAA;EAC1B,OAAA,GAAU,eAAA,CAAgB,KAAA;EDpR0B;AAAA;;;;EC0RpD,SAAA,GAAY,eAAA,CAAgB,KAAA;EAjTR;;;AAAA;AAwBtB;;;;;;;;;;;;;EA2SE,eAAA,SAAwB,KAAA;AAAA;;;AN3SW;AAoBrC;;;;AAAgE;AApB3B,cOsBxB,aAAA;;;;;cAMA,SAAA;;;AP2BuD;cOtBvD,SAAA;;;;;;;;cASA,gBAAA,SAAyB,KAAK;cAC7B,OAAA;AAAA;;ANnEd;;UM4EiB,WAAA,eAA0B,MAAA,SAAe,aAAA;EACxD,MAAA,QAAc,KAAA;EACd,GAAA;AAAA;;;;UAMe,eAAA,eAA8B,MAAA,SAAe,aAAA;EAC5D,KAAA,GAAQ,WAAA,CAAY,KAAA;EACpB,OAAA,GAAU,WAAA,CAAY,KAAA;EACtB,KAAA;EACA,MAAA;AAAA;;;;AL/FF;;UKuGiB,YAAA,eACD,MAAA,SAAe,aAAA,kBACd,OAAA,GAAU,OAAA;ELzGqB;EK4G9C,KAAA,EAAO,WAAA,CAAY,KAAA;EL5G8C;EK8GjE,GAAA,GAAM,OAAA,CAAQ,gBAAA,CAAiB,MAAA;EL9GqC;EKgHpE,MAAA,GAAS,MAAA,SAAe,GAAA;ELhHsB;EKkH9C,OAAA,GAAU,WAAA,CAAY,KAAA;ELlH2C;EKoHjE,KAAA;AAAA;;;;AJ1GF;;UIkHiB,eAAA,eACD,MAAA,SAAe,aAAA,kBACd,OAAA,GAAU,OAAA;EJnHzB;AAAsB;AASxB;;;;EIkHE,MAAA,SAAe,KAAA,oBAAyB,KAAA;EJhH1B;;;;;;;;;;;;;AAAuB;AAGvC;EI6HE,WAAA,EAAa,WAAA,CAAY,KAAA;;;;;EAKzB,GAAA,GAAM,OAAA,CAAQ,gBAAA,CAAiB,MAAA;AAAA;AJ5H3B;AAGN;;AAHM,KIkIM,aAAA,eAA4B,MAAA,SAAe,aAAA;EACjD,EAAA;AAAA;EACA,EAAA;EAAa,MAAA,QAAc,KAAA;AAAA;EAC3B,EAAA;EAAmC,MAAA,QAAc,KAAA;AAAA;;;;UAKtC,gBAAA,eAA+B,MAAA,SAAe,aAAA;EJ1HP;EI4HtD,MAAA,EAAQ,MAAA,SAAe,aAAA,CAAc,KAAA;EJ5HwC;EI8H7E,OAAA,UAAiB,KAAA;EJzEG;EI2EpB,KAAA,GAAQ,WAAA,CAAY,KAAA;;EAEpB,OAAA,GAAU,WAAA,CAAY,KAAA;EJ1Eb;EI4ET,KAAA;AAAA;;;;;;;;AJ5EwB;AAgC1B;;;;;;;;;cIgEa,WAAA,eACG,MAAA,SAAe,aAAA,kBACd,OAAA,GAAU,OAAA;EJhEzB;EAAA,SIuEkB,KAAA,EAAO,MAAA;EJtEzB;EAAA,iBIwEmB,WAAA;EJvEX;AAAA;AAgDV;;;EAhDU,iBI6EW,EAAA;EJ1BX;EAAA,iBI4BW,iBAAA;EJ1BX;;;;EAAA,iBI+BW,SAAA;EJjCX;;;cAEA;;EIgBU,KAAA,EAAO,MAAA;;EAEN,WAAA,EAAa,QAAA,CAAS,MAAA,SAAe,UAAA;;AHpN1D;;;;;EG0NqB,EAAA,EAAI,kBAAA,EHpNT;;EGsNK,iBAAA;;;AHtNsB;AAI3C;;EGuNqB,SAAA;IAAA,SAAuB,GAAA;IAAA,SAAsB,KAAA;EAAA;EHvNF;EAAA,QG2NtD,kBAAA;EH3NmE;EAAA,QGiOnE,OAAA;EHjO0E;EAAA,QGyO1E,KAAA;EHzOuC;EAAA,QG+OvC,oBAAA;EH/OsD;EAAA,QGwPtD,eAAA;EHxP2B;;;;AAAiD;AAYtF;;;;AAAoE;AAEpE;;;EAdqC,YG0QvB,YAAA,CAAA;EH5PuB;;;;ACzCwB;;EDyCxB,QG+Q3B,gBAAA;EF5SwB;AAAA;AAElC;;EAFkC,QEwTxB,YAAA;EFrTuB;;;;;;EAAA,QEkUvB,oBAAA;EFlUC;;;;;;EAAA,QE8UD,kBAAA;EF5UD;;;;;AACS;AACjB;;;EEiWO,OAAA,CAAQ,KAAA,EAAO,WAAA,CAAY,KAAA,IAAS,OAAA,CAAQ,GAAA,CAAI,KAAA;EFxVnC;;;;;;;;;;;;;EE4Wb,QAAA,CAAS,OAAA,GAAS,eAAA,CAAgB,KAAA,IAAc,OAAA,CAAQ,GAAA,CAAI,KAAA;EF5W/C;;;;;;;AAYH;AASlB;;EE8XQ,KAAA,CAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,IAAS,OAAA;EF9XW;AAAA;;;;EE2Y9C,MAAA,CAAO,KAAA,EAAO,WAAA,CAAY,KAAA,IAAS,OAAA;EDlarB;;;AAAA;AAwBtB;;;;;;;;;;;;;;;;ECyaQ,QAAA,iBAAyB,KAAA,UAAA,CAC7B,MAAA,EAAQ,CAAA,EACR,OAAA;IACE,KAAA,GAAQ,WAAA,CAAY,KAAA;IACpB,OAAA,mBDtaY;ICwaZ,WAAA;EAAA,IAED,OAAA,CAAQ,WAAA,CAAY,KAAA,CAAM,CAAA;EDxapB;;;;EC+cH,MAAA,CAAO,MAAA,EAAQ,gBAAA,CAAiB,MAAA,IAAU,OAAA,CAAQ,GAAA,CAAI,KAAA;ED7crC;;;;AAQF;AASvB;;;;;;;;;;;;;;;;;;;AACiF;AAKjF;;;;;;;;;;;;;;;;;;;;AACyC;AAUzC;;;ECieQ,MAAA,CACJ,MAAA,EAAQ,gBAAA,CAAiB,MAAA,GACzB,IAAA;IACE,MAAA,SAAe,KAAA,oBAAyB,KAAA;IACxC,GAAA,GAAM,OAAA,CAAQ,gBAAA,CAAiB,MAAA,IDned;ICqejB,QAAA,GAAW,WAAA,CAAY,KAAA,GDrekC;ICuezD,UAAA,mBAA6B,KAAA;EAAA,IAE9B,OAAA,CAAQ,GAAA,CAAI,KAAA;EDveS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKI;AA0B9B;;;;EC0kBQ,QAAA,CACJ,MAAA,EAAQ,gBAAA,CAAiB,MAAA,GACzB,IAAA,EAAM,eAAA,CAAgB,KAAA,EAAO,MAAA,IAC5B,OAAA;IAAU,QAAA;IAAgB,GAAA,EAAK,GAAA,CAAI,KAAA;EAAA;IAAa,QAAA;IAAiB,GAAA,EAAK,GAAA,CAAI,KAAA;EAAA;EDnkBpE;;;;EC8nBH,UAAA,CAAW,MAAA,EAAQ,gBAAA,CAAiB,MAAA,MAAY,OAAA,CAAQ,GAAA,CAAI,KAAA;EDroB9D;;;;;;;;;;;;;;;;;;;;;ECyqBE,MAAA,CACJ,KAAA,EAAO,WAAA,CAAY,KAAA,GACnB,KAAA,EAAO,OAAA,CAAQ,gBAAA,CAAiB,MAAA,KAC/B,OAAA,CAAQ,GAAA,CAAI,KAAA;EDhoBL;;;;ECmpBJ,UAAA,CACJ,KAAA,EAAO,WAAA,CAAY,KAAA,GACnB,KAAA,EAAO,OAAA,CAAQ,gBAAA,CAAiB,MAAA,KAC/B,OAAA,CAAQ,GAAA,CAAI,KAAA;EDrpBH;;;;;;;;;;;;;;;EC6qBN,MAAA,CAAO,KAAA,EAAO,WAAA,CAAY,KAAA,IAAS,OAAA,CAAQ,GAAA,CAAI,KAAA;ED9qBF;;;;EC+rB7C,UAAA,CAAW,KAAA,EAAO,WAAA,CAAY,KAAA,IAAS,OAAA,CAAQ,GAAA,CAAI,KAAA;ED9rBR;;;;;;;;;;;;;;AAOzB;AA2C1B;ECuqBQ,WAAA,GAAA,CAAe,EAAA,GAAK,EAAA,EAAI,WAAA,CAAY,KAAA,EAAO,MAAA,MAAY,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;;;;;;;;;;;;;;ADvqBH;AASjF;;;;;;;;ECqsBQ,KAAA,CAAM,OAAA,EAAS,YAAA,CAAa,KAAA,EAAO,MAAA,IAAU,OAAA,CAAQ,GAAA,CAAI,KAAA;EDrsBhC;;;;;;;;;AAOT;AAUxB;;;;;;;;;;;;;;;EC2yBQ,SAAA,iBAA0B,MAAA,oBAA0B,MAAA,kBAAA,CACxD,OAAA,EAAS,gBAAA,CAAiB,KAAA,IACzB,OAAA,CAAQ,OAAA;EDlyBH;;AAAc;AAcxB;;;;;;;;;;;;;;;;AAMU;EC21BF,aAAA,CAAA,GAAiB,OAAA;EDv0BO;EAAA,QC61BtB,kBAAA;EAAA,QAyBA,iBAAA;EAAA,QAiBA,aAAA;AAAA;;;;APtoC2B;AAoBrC;;;;AAAgE;AAmChE;;;;;;UQTU,cAAA;EACR,IAAA,6GAIE,IAAA;IACA,UAAA,GAAa,WAAA;IACb,OAAA,GAAU,QAAA;IACV,aAAA,GAAgB,WAAA;IAChB,MAAA;EAAA,IACE,aAAA,iBAGF,WAAA,uBAAkC,QAAA,8BAClC,WAAA,uBAAkC,WAAA;EAIpC,OAAA,mCAA0C,IAAA;IACxC,MAAA;IACA,OAAA,GAAU,QAAA;IACV,OAAA;IACA,MAAA;EAAA,IACE,aAAA,oBAAiC,QAAA;EAErC,OAAA,mCAA0C,IAAA;IACxC,MAAA;IACA,OAAA,GAAU,QAAA;IACV,MAAA;EAAA,IACE,aAAA,oBAAiC,QAAA;EAGrC,IAAA,mCAAuC,IAAA;IACrC,OAAA,GAAU,QAAA;IACV,OAAA;IACA,MAAA;EAAA,IACE,aAAA,iBAA8B,QAAA;EAElC,IAAA,mCAAuC,IAAA;IACrC,OAAA,GAAU,QAAA;IACV,MAAA;EAAA,IACE,aAAA,iBAA8B,QAAA;EAGlC,OAAA,mCAA0C,IAAA;IACxC,OAAA,GAAU,QAAA;IACV,OAAA;IACA,MAAA;EAAA,IACE,aAAA,oBAAiC,QAAA;EAErC,OAAA,mCAA0C,IAAA;IACxC,OAAA,GAAU,QAAA;IACV,MAAA;EAAA,IACE,aAAA,oBAAiC,QAAA;EAGrC,MAAA,iFAAuF,IAAA;IACrF,IAAA,GAAO,KAAA;IACP,OAAA,GAAU,QAAA;IACV,OAAA,EAAS,KAAA;IACT,MAAA;EAAA,IACE,aAAA,CACF,KAAA,+CAEA,QAAA;EAIF,MAAA,iFAAuF,IAAA;IACrF,IAAA,GAAO,KAAA;IACP,OAAA,GAAU,QAAA;IACV,MAAA;EAAA,IACE,aAAA,CACF,KAAA,+CAEA,QAAA;EAKF,MAAA,mCAAyC,IAAA;IACvC,OAAA,GAAU,QAAA;IACV,OAAA;IACA,MAAA;EAAA,IACE,aAAA,mBAAgC,QAAA;EAEpC,MAAA,mCAAyC,IAAA;IACvC,OAAA,GAAU,QAAA;IACV,MAAA;EAAA,IACE,aAAA,mBAAgC,QAAA;EAGpC,OAAA,mCAA0C,IAAA;IACxC,OAAA,GAAU,QAAA;IACV,OAAA;IACA,MAAA;EAAA,IACE,aAAA,qBAAkC,QAAA;EAEtC,OAAA,mCAA0C,IAAA;IACxC,OAAA,GAAU,QAAA;IACV,MAAA;EAAA,IACE,aAAA,qBAAkC,QAAA;EAEtC,SAAA,wEAAiF,IAAA;IAC/E,OAAA,GAAU,QAAA;IACV,UAAA,GAAa,WAAA;IACb,YAAA;IACA,MAAA;EAAA,IACE,aAAA,CACF,IAAA,eAEA,QAAA,8BACA,WAAA;EAIF,KAAA,gDAAqD,IAAA;IACnD,OAAA,GAAU,QAAA;IACV,OAAA,EAAS,CAAA;IACT,MAAA;EAAA,IACE,aAAA,CAAc,CAAA,WAAY,QAAA;EAE9B,KAAA,gDAAqD,IAAA;IACnD,OAAA,GAAU,QAAA;IACV,MAAA;EAAA,IACE,aAAA,CAAc,CAAA,WAAY,QAAA;EAE9B,SAAA,mCAA4C,IAAA;IAC1C,OAAA,GAAU,QAAA;IACV,MAAA;EAAA,IACE,aAAA,wBAAqC,QAAA;AAAA;;;;;;;cAuT9B,MAAA,EAAQ,cAA0C;;;;;ARhbK;AAuCpE;;;;;;;UShCiB,YAAA,eACD,MAAA,SAAe,aAAA,kBACd,OAAA,GAAU,kBAAA,CAAmB,WAAA;ET8B4B;;;;ACtH1E;EQ+FE,KAAA,EAAO,MAAA;;;AR/FiD;AAO1D;EQ6FE,MAAA,EAAQ,eAAA,CAAgB,KAAA;;;AR7F2B;AAkBrD;EQgFE,WAAA,EAAa,QAAA,CAAS,MAAA,SAAe,UAAA;;;ARhFc;;;EQsFnD,iBAAA;EPtHc;;;;;;;EO8Hd,UAAA,CAAW,EAAA,EAAI,kBAAA,EAAoB,cAAA,YAA0B,WAAA,CAAY,KAAA,EAAO,MAAA;EP9HvC;EOgIzC,eAAA;AAAA;;;APhIoE;;;;ACUtE;;;;AACwB;iBMmIR,WAAA,qBAAgC,MAAA,SAAe,aAAA,EAAA,CAC7D,GAAA,EAAK,eAAA,CAAgB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA+MT,kBAAA,EAAkB,cAAA,cAE3B,WAAA,CAAY,KAAA,EAAK,kBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ATjUtB;AAAA,KUxBY,gBAAA,IAAoB,EAAA,EAAI,kBAAA,EAAoB,SAAA,eAAwB,OAAO;;UAGtE,sBAAA;EVqBoB;EUnBnC,MAAA;EVuCsC;EUrCtC,OAAA,EAAS,gBAAgB;AAAA;AVqCqC;AAAA,iBU7BhD,wBAAA,CAAyB,UAAA,UAAoB,OAAA,EAAS,gBAAgB;;iBAOtE,oBAAA,CAAqB,UAAA,oBAA8B,gBAAgB;;iBAKnE,wBAAA,CAAA;;iBAiBA,0BAAA,CAA2B,KAAA,EAAO,KAAA,YAAiB,sBAAsB;;;;;;;iBAmBzE,uBAAA,CAAwB,KAAY,EAAL,KAAK;;;cChC9C,iBAAA;EAAA,QACI,MAAA;EXlByC;EAAA,QWoBzC,gBAAA;EXVG;;;;AAAwB;EWiBnC,QAAA,CAAS,IAAA,UAAc,KAAA,EAAO,OAAA,EAAS,MAAA;EXGD;;;EWsDtC,GAAA,CAAI,IAAA,WAAe,OAAA;EXnBL;;;EW0Bd,GAAA,CAAI,IAAA;EX1BiC;;;;AAA6B;AAuCpE;EWHE,SAAA,CAAA,GAAa,MAAA,SAAe,OAAA;;;;;;;AXG4C;;;;ACtH1E;;EUuIE,KAAA,CAAA;AAAA;AVvIwD;AAO1D;;;;AAAqD;AAkBrD;AAzB0D,cU2J7C,aAAA,EAAa,iBAA0B;;;AX/GpD;;;;AAAgE;AAmChE;AAnCA,cYoBa,iBAAA,SAA0B,KAAK;cAC9B,OAAA;AAAA;;;AXjEd;;;;AAA0D;AAO1D;iBW8XgB,eAAA,CAAgB,MAAe;;;;KCjUnC,cAAA,gBAA8B,OAAO;AVhEzB;AASxB;;;;;AATwB,iBU4GR,iBAAA,aAA8B,kBAAA,CAAA,CAAoB,EAAA,EAAI,GAAA,GAAM,GAAA;;;;;;;iBAoB5D,QAAA,CAAS,QAAA,6BAAqC,QAAA,EAAU,cAAc;;iBAUtE,oBAAA,CAAqB,QAAmC"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/client.ts","../src/deploy/advisory-lock.ts","../src/deploy/deploy-steps-table.ts","../src/extensions.ts","../src/listen.ts","../src/migrate.ts","../src/query-counter.ts","../src/schema-registry.ts","../src/table/types.ts","../src/table/client.ts","../src/table/columns.ts","../src/table/define.ts","../src/table/dependency-registry.ts","../src/table/registry.ts","../src/table/where-builder.ts","../src/transaction-hooks.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,4 +1,5 @@
1
- import{a as e,i as t,n,o as r,r as i,t as a}from"./extensions-CEyIHQA7.mjs";import{drizzle as o}from"drizzle-orm/postgres-js";import s from"postgres";import{AsyncLocalStorage as c}from"node:async_hooks";import{readdir as l}from"node:fs/promises";import{join as u}from"node:path";import{and as d,count as f,eq as p,getTableColumns as m,getTableName as h,gt as g,gte as ee,ilike as _,inArray as v,isNotNull as y,isNull as b,lt as te,lte as ne,ne as x,not as re,notInArray as ie,or as ae,sql as S}from"drizzle-orm";import{bigint as oe,boolean as se,doublePrecision as ce,index as le,integer as ue,jsonb as de,pgTable as C,primaryKey as fe,real as pe,text as me,timestamp as he,unique as ge,uniqueIndex as _e,uuid as w,varchar as T}from"drizzle-orm/pg-core";const E=new c;function ve(){return E.getStore()}function ye(e){let t={count:0};return E.run(t,()=>e(t))}const D=new class{logQuery(e,t){let n=E.getStore();n&&n.count++}};function O(){return process.env.LUMI_DB_QUERY_COUNTER===`1`}const k=5e3,A=2147483647;function be(e){if(e===void 0||e.trim()===``)return;let t=e.trim(),n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isInteger(n)||n<=0||n>2147483647){console.warn(`[db] Ignoring invalid read-only statement timeout override ${JSON.stringify(e)}: expected an integer between 1 and ${A} milliseconds. Falling back to the ${k} ms default.`);return}return n}function j(){return O()?{logger:D}:void 0}function M(e){let t=s(e.url,{max:e.poolMax||10,idle_timeout:20,max_lifetime:1800}),n=j();return r(n?o(t,n):o(t))}function N(e){let t=e.readOnlyUrl||e.url,n=e.readOnlyStatementTimeoutMs??5e3;if(!Number.isInteger(n)||n<=0||n>2147483647)throw Error(`Invalid db.readOnlyStatementTimeoutMs: expected an integer between 1 and ${A} milliseconds, got ${String(e.readOnlyStatementTimeoutMs)}. To relax the ceiling, raise the value; it cannot be disabled.`);let r=s(t,{max:e.poolMax||10,idle_timeout:20,max_lifetime:1800,connection:{application_name:`toolkit_readonly`,default_transaction_read_only:!0,statement_timeout:n},onnotice:()=>{}}),i=j();return i?o(r,i):o(r)}function xe(e){return s(e.url,{max:2,idle_timeout:0,max_lifetime:3600,connection:{application_name:`toolkit_realtime`},onnotice:()=>{}})}async function P(e){try{return(await l(e)).filter(e=>e.endsWith(`.ts`))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function F(e){await e.execute(S`
1
+ import{a as e,i as t,n,o as r,r as i,t as a}from"./extensions-CEyIHQA7.mjs";import{drizzle as o}from"drizzle-orm/postgres-js";import s from"postgres";import{AsyncLocalStorage as c}from"node:async_hooks";import{and as l,count as u,eq as d,getTableColumns as f,getTableName as p,gt as m,gte as h,ilike as g,inArray as _,isNotNull as v,isNull as ee,lt as te,lte as ne,ne as re,not as ie,notInArray as ae,or as oe,sql as y}from"drizzle-orm";import{bigint as se,boolean as ce,doublePrecision as le,index as ue,integer as de,jsonb as fe,pgTable as b,primaryKey as pe,real as me,text as he,timestamp as ge,unique as _e,uniqueIndex as ve,uuid as x,varchar as S}from"drizzle-orm/pg-core";import{readdir as ye}from"node:fs/promises";import{join as C}from"node:path";const w=new c;function be(){return w.getStore()}function xe(e){let t={count:0};return w.run(t,()=>e(t))}const T=new class{logQuery(e,t){let n=w.getStore();n&&n.count++}};function E(){return process.env.LUMI_DB_QUERY_COUNTER===`1`}const D=5e3,O=2147483647;function Se(e){if(e===void 0||e.trim()===``)return;let t=e.trim(),n=/^\d+$/.test(t)?Number(t):NaN;if(!Number.isInteger(n)||n<=0||n>2147483647){console.warn(`[db] Ignoring invalid read-only statement timeout override ${JSON.stringify(e)}: expected an integer between 1 and ${O} milliseconds. Falling back to the ${D} ms default.`);return}return n}function k(){return E()?{logger:T}:void 0}function Ce(e){let t=s(e.url,{max:e.poolMax||10,idle_timeout:20,max_lifetime:1800}),n=k();return r(n?o(t,n):o(t))}function we(e){let t=e.readOnlyUrl||e.url,n=e.readOnlyStatementTimeoutMs??5e3;if(!Number.isInteger(n)||n<=0||n>2147483647)throw Error(`Invalid db.readOnlyStatementTimeoutMs: expected an integer between 1 and ${O} milliseconds, got ${String(e.readOnlyStatementTimeoutMs)}. To relax the ceiling, raise the value; it cannot be disabled.`);let r=s(t,{max:e.poolMax||10,idle_timeout:20,max_lifetime:1800,connection:{application_name:`toolkit_readonly`,default_transaction_read_only:!0,statement_timeout:n},onnotice:()=>{}}),i=k();return i?o(r,i):o(r)}const A=1280658761,Te={space:A,id:1};function j(e,t){if(!Number.isInteger(e)||e<-2147483648||e>2147483647)throw Error(`Advisory lock ${t} must be a signed 32-bit integer (got ${e})`)}async function Ee(e,t,n){j(t.space,`space`),j(t.id,`id`);let r;try{return await e.transaction(e=>i(e))}catch(e){if(r===void 0)throw e;return{acquired:!0,value:await r}}async function i(e){return(await e.execute(y`select pg_try_advisory_xact_lock(${t.space}::int4, ${t.id}::int4) as acquired`))[0]?.acquired===!0?(r=n(),{acquired:!0,value:await r}):{acquired:!1}}}const De=/^[a-zA-Z_][a-zA-Z0-9_-]*$|^\d+$/,Oe=new Set([`$and`,`$or`,`$not`]),ke=new Set([`eq`,`ne`,`in`,`notIn`,`gt`,`gte`,`lt`,`lte`,`isNull`,`isNotNull`,`ilike`,`startsWith`]);var M=class extends Error{constructor(e){super(`WhereBuilder: ${e}`),this.name=`WhereBuilderError`}};function N(e){return e.replace(/[\\%_]/g,`\\$&`)}function Ae(e,t,n){let r=f(e);if(!n.includes(`.`)){let e=r[n];if(!e)throw new M(`unknown column "${n}"`);return e}let[i,...a]=n.split(`.`);if(!i||a.length===0)throw new M(`malformed dotted key "${n}"`);let o=t[i];if(!o)throw new M(`unknown column "${i}" in dotted key "${n}"`);if(o!==`jsonb`)throw new M(`dotted-path access is only supported on jsonb columns, but "${i}" is ${o}`);for(let e of a)if(!De.test(e))throw new M(`invalid jsonb path segment "${e}" — must match [a-zA-Z_][a-zA-Z0-9_-]* or be a non-negative integer`);let s=r[i];if(!s)throw new M(`unknown column "${i}"`);let c=y`${s}`;for(let e=0;e<a.length;e++){let t=a[e];if(t===void 0)throw new M(`jsonb path segment at index ${e} is undefined`);let n=e===a.length-1;if(/^\d+$/.test(t)){if(t.length>10)throw new M(`jsonb path index "${t}" is too large`);let e=y.raw(t);c=n?y`${c}->>${e}`:y`${c}->${e}`}else c=n?y`${c}->>${t}`:y`${c}->${t}`}return c}function je(e,t){if(t===null)return ee(e);if(typeof t==`string`||typeof t==`number`||typeof t==`boolean`||typeof t==`bigint`||t instanceof Date)return d(e,t);if(Array.isArray(t))throw new M(`arrays must be wrapped in an operator (e.g. { in: [...] }) — bare arrays are not allowed`);if(typeof t!=`object`)throw new M(`unsupported value type: ${typeof t}`);let n=t,r=Object.keys(n);if(r.length===0)throw new M(`empty operator object`);let i=[];for(let t of r){if(!ke.has(t))throw new M(`unknown operator "${t}"`);let r=n[t];switch(t){case`eq`:i.push(d(e,r));break;case`ne`:i.push(re(e,r));break;case`in`:if(!Array.isArray(r))throw new M(`"in" operator requires an array`);r.length===0?i.push(y`false`):i.push(_(e,r));break;case`notIn`:if(!Array.isArray(r))throw new M(`"notIn" operator requires an array`);r.length===0?i.push(y`true`):i.push(ae(e,r));break;case`gt`:i.push(m(e,r));break;case`gte`:i.push(h(e,r));break;case`lt`:i.push(te(e,r));break;case`lte`:i.push(ne(e,r));break;case`isNull`:if(r!==!0)throw new M('"isNull" operator must be `true`');i.push(ee(e));break;case`isNotNull`:if(r!==!0)throw new M('"isNotNull" operator must be `true`');i.push(v(e));break;case`ilike`:if(typeof r!=`string`)throw new M(`"ilike" operator requires a string`);i.push(g(e,`%${N(r)}%`));break;case`startsWith`:if(typeof r!=`string`)throw new M(`"startsWith" operator requires a string`);i.push(g(e,`${N(r)}%`));break}}if(i.length!==0)return i.length===1?i[0]:l(...i)}function P(e,t,n,r=0){if(!n)return;if(typeof n!=`object`||Array.isArray(n))throw new M(`where clause must be a plain object`);if(r>16)throw new M(`where clause exceeds maximum nesting depth of 16 — real queries should not need this much nesting; if yours does, reconsider whether it should be expressed differently`);let i=[];for(let a of Object.keys(n)){let o=n[a];if(a===`$and`){if(!Array.isArray(o))throw new M(`$and must be an array`);if(o.length===0)throw new M(`$and must contain at least one clause`);let n=o.map(n=>P(e,t,n,r+1)).filter(e=>e!==void 0);n.length>0&&i.push(l(...n));continue}if(a===`$or`){if(!Array.isArray(o))throw new M(`$or must be an array`);if(o.length===0)throw new M(`$or must contain at least one clause`);let n=o.map(n=>P(e,t,n,r+1)).filter(e=>e!==void 0);n.length>0&&i.push(oe(...n));continue}if(a===`$not`){if(!F(o))throw new M(`$not must contain a non-empty clause`);let n=P(e,t,o,r+1);n&&i.push(ie(n));continue}if(Oe.has(a))continue;let s=je(Ae(e,t,a),o);s&&i.push(s)}if(i.length!==0)return i.length===1?i[0]:l(...i)}function F(e){return typeof e!=`object`||!e||Array.isArray(e)?!1:Object.keys(e).length>0}const I=/^[a-zA-Z_][a-zA-Z0-9_]*$/,L=b(`pg_class`,{relname:S(`relname`,{length:63}).notNull(),reltuples:me(`reltuples`).notNull()}),Me=100,R=1e3,z=1e3;var B=class extends Error{constructor(e){super(`TableClient: ${e}`),this.name=`TableClientError`}},V=class e{table;columnKinds;db;primaryKeyColumns;partition;constructor(e,t,n,r=[],i){this.table=e,this.columnKinds=t,this.db=n,this.primaryKeyColumns=r,this.partition=i}partitionCondition(){if(this.partition)return d(this.getColumnOrThrow(this.partition.key,`partition`),this.partition.value)}confine(e){let t=this.partitionCondition();return t?e?l(t,e):t:e}stamp(e){return this.partition?{...e,[this.partition.key]:this.partition.value}:e}refusePartitionPatch(e,t){if(this.partition&&e.includes(this.partition.key))throw new B(`${t}: "${this.partition.key}" is this table's partition column and cannot be changed`)}partitionTarget(e){return!this.partition||e.includes(this.partition.key)?[...e]:[this.partition.key,...e]}get _selectTable(){return this.table}getColumnOrThrow(e,t){let n=f(this.table)[e];if(!n)throw new B(`${t}: unknown column "${e}"`);return n}buildOrderBy(e,t){return e.map(e=>{let n=this.getColumnOrThrow(e.column,`${t}: orderBy`);return e.dir===`desc`?y`${n} DESC`:y`${n} ASC`})}requireNonEmptyWhere(e,t){if(!F(e))throw new B(`${t} requires a non-empty where clause`)}validateColumnKeys(e,t){if(e.length===0)return;let n=f(this.table);for(let r of e)if(!Object.hasOwn(n,r))throw new B(`${t}: unknown column "${r}"`)}async findOne(e){this.requireNonEmptyWhere(e,`findOne`);let t=this.buildWhereOrThrow(e);return(await this.db.select().from(this._selectTable).where(t).limit(1))[0]??null}async findMany(e={}){let t=this.validateLimit(e.limit);if(e.offset!==void 0&&(!Number.isInteger(e.offset)||e.offset<0))throw new B(`offset must be a non-negative integer, got ${e.offset}`);let n=e.orderBy&&e.orderBy.length>0?this.buildOrderBy(e.orderBy,`findMany`):void 0,r=e.where?this.buildWhereOrThrow(e.where):this.partitionCondition(),i=this.db.select().from(this._selectTable).$dynamic();return r&&(i=i.where(r)),n&&(i=i.orderBy(...n)),i=i.limit(t),e.offset!==void 0&&(i=i.offset(e.offset)),await i}async count(e){let t=e?this.buildWhereOrThrow(e):this.partitionCondition(),n=this.db.select({value:u()}).from(this._selectTable).$dynamic();t&&(n=n.where(t));let r=await n;return Number(r[0]?.value??0)}async exists(e){this.requireNonEmptyWhere(e,`exists`);let t=this.buildWhereOrThrow(e);return(await this.db.select({one:y`1`}).from(this._selectTable).where(t).limit(1)).length>0}async distinct(e,t){let n=this.getColumnOrThrow(e,`distinct`),r=[];if(t?.includeNull||r.push(v(n)),t?.where)r.push(this.buildWhereOrThrow(t.where));else{let e=this.partitionCondition();e&&r.push(e)}let i=this.db.selectDistinct({value:n}).from(this._selectTable).$dynamic();if(r.length===1?i=i.where(r[0]):r.length>1&&(i=i.where(l(...r))),t?.orderBy){let e=t.orderBy===`desc`?y`${n} DESC`:y`${n} ASC`;i=i.orderBy(e)}return(await i).map(e=>e.value)}async insert(e){return(await this.db.insert(this.table).values(this.stamp(e)).returning())[0]}async upsert(e,t){let n=Array.isArray(t.target)?t.target:[t.target];if(n.length===0)throw new B(`upsert requires at least one target column`);let r=this.partitionTarget(n),i=r.map(e=>this.getColumnOrThrow(e,`upsert target`));e=this.stamp(e);let a=t.set??e;t.set&&(this.validateColumnKeys(Object.keys(t.set),`upsert set`),this.refusePartitionPatch(Object.keys(t.set),`upsert set`));let o=t.setWhere&&F(t.setWhere)?this.buildWhereOrThrow(t.setWhere):void 0,s={...a};for(let n of t.mergeJsonb??[]){if(this.columnKinds[n]!==`jsonb`)throw new B(`upsert mergeJsonb: '${n}' is not a jsonb column (kind: ${this.columnKinds[n]??`unknown`})`);let t=this.getColumnOrThrow(n,`upsert mergeJsonb`),r=e[n];if(typeof r!=`object`||!r||Array.isArray(r))throw new B(`upsert mergeJsonb: '${n}' must be a JSON object to merge (got ${Array.isArray(r)?`array`:r===null?`null`:typeof r})`);s[n]=y`COALESCE(NULLIF(${t}, 'null'::jsonb), '{}'::jsonb) || ${JSON.stringify(r)}::jsonb`}let c=await this.db.insert(this.table).values(e).onConflictDoUpdate({target:i,set:s,...o?{setWhere:o}:{}}).returning();if(c.length>0)return c[0];let l={};for(let t of r)l[t]=e[t];let u=await this.findOne(l);if(!u)throw new B(`upsert with setWhere: conflicting row was deleted concurrently — retry the operation`);return u}async tryClaim(e,t){let n=Array.isArray(t.target)?t.target:[t.target];if(n.length===0)throw new B(`tryClaim requires at least one target column`);let r=this.partitionTarget(n),i=r.map(e=>this.getColumnOrThrow(e,`tryClaim target`));e=this.stamp(e);let a=t.set??e;if(t.set&&(this.validateColumnKeys(Object.keys(t.set),`tryClaim set`),this.refusePartitionPatch(Object.keys(t.set),`tryClaim set`)),!F(t.replaceWhen))throw new B(`tryClaim requires a non-empty replaceWhen clause`);let o=this.buildWhereOrThrow(t.replaceWhen),s=await this.db.insert(this.table).values(e).onConflictDoUpdate({target:i,set:a,setWhere:o}).returning();if(s.length>0)return{acquired:!0,row:s[0]};let c={};for(let t of r)c[t]=e[t];let l=await this.findOne(c);if(!l)throw new B(`tryClaim: conflicting row was deleted concurrently — retry the operation`);return{acquired:!1,row:l}}async insertMany(e){if(!Array.isArray(e))throw new B(`insertMany requires an array of rows`);if(e.length===0)return[];if(e.length>1e3)throw new B(`insertMany batch too large: ${e.length} > ${z}`);return await this.db.insert(this.table).values(e.map(e=>this.stamp(e))).returning()}async update(e,t){this.requireNonEmptyWhere(e,`update`),this.validateColumnKeys(Object.keys(t),`update`),this.refusePartitionPatch(Object.keys(t),`update`);let n=this.buildWhereOrThrow(e),r=await this.db.update(this.table).set(t).where(n).returning();if(r.length>1)throw new B(`update matched ${r.length} rows but is expected to match at most one — use updateMany for bulk updates. WARNING: the update has already been applied; wrap in a transaction if you need rollback.`);return r[0]??null}async updateMany(e,t){this.requireNonEmptyWhere(e,`updateMany`),this.validateColumnKeys(Object.keys(t),`updateMany`),this.refusePartitionPatch(Object.keys(t),`updateMany`);let n=this.buildWhereOrThrow(e);return await this.db.update(this.table).set(t).where(n).returning()}async delete(e){this.requireNonEmptyWhere(e,`delete`);let t=this.buildWhereOrThrow(e),n=await this.db.delete(this.table).where(t).returning();if(n.length>1)throw new B(`delete matched ${n.length} rows but is expected to match at most one — use deleteMany for bulk deletes. WARNING: the delete has already been applied; wrap in a transaction if you need rollback.`);return n[0]??null}async deleteMany(e){this.requireNonEmptyWhere(e,`deleteMany`);let t=this.buildWhereOrThrow(e);return await this.db.delete(this.table).where(t).returning()}async transaction(t){return await this.db.transaction(async n=>await t(new e(this.table,this.columnKinds,n,this.primaryKeyColumns,this.partition)))}async claim(e){if(this.primaryKeyColumns.length===0)throw new B(`claim() requires the table to have a primary key — declare primaryKey in defineTable() or use column.uuid({ primaryKey: true })`);if(this.primaryKeyColumns.length>1)throw new B(`claim() does not support composite primary keys — use a single-column primary key or call transaction() with FOR UPDATE directly`);if(this.requireNonEmptyWhere(e.where,`claim`),!Number.isInteger(e.limit)||e.limit<1)throw new B(`claim limit must be a positive integer, got ${e.limit}`);if(e.limit>1e3)throw new B(`claim limit ${e.limit} exceeds MAX_LIMIT ${R}`);let t=Object.keys(e.set??{}),n=Object.keys(e.setSql??{});if(t.length===0&&n.length===0)throw new B(`claim requires at least one field in set or setSql`);this.validateColumnKeys(t,`claim set`),this.validateColumnKeys(n,`claim setSql`),this.refusePartitionPatch([...t,...n],`claim`);let r=this.buildWhereOrThrow(e.where),i=e.orderBy&&e.orderBy.length>0?this.buildOrderBy(e.orderBy,`claim`):void 0,a=this.primaryKeyColumns[0],o=this.getColumnOrThrow(a,`claim primary key`);return await this.db.transaction(async t=>{let n=t.select({_pk:o}).from(this._selectTable).where(r).limit(e.limit).for(`update`,{skipLocked:!0}).$dynamic();i&&(n=n.orderBy(...i));let a=await n;if(a.length===0)return[];let s=a.map(e=>e._pk),c={...e.set??{}};if(e.setSql)for(let[t,n]of Object.entries(e.setSql))c[t]=n;return await t.update(this.table).set(c).where(_(o,s)).returning()})}async aggregate(e){let t=Object.entries(e.select);if(t.length===0)throw new B(`aggregate requires at least one select field`);for(let[e]of t)if(!I.test(e))throw new B(`aggregate: invalid output alias "${e}" — must match ${I.source}`);let n={};if(e.groupBy)for(let t of e.groupBy)n[t]=this.getColumnOrThrow(t,`aggregate groupBy`);for(let[e,r]of t)n[e]=this.buildAggregateExpr(r);let r=this.db.select(n).from(this._selectTable).$dynamic(),i=e.where?this.buildWhereOrThrow(e.where):this.partitionCondition();if(i&&(r=r.where(i)),e.groupBy&&e.groupBy.length>0){let t=e.groupBy.map(e=>this.getColumnOrThrow(e,`aggregate groupBy`));r=r.groupBy(...t)}return e.orderBy&&e.orderBy.length>0&&(r=r.orderBy(...this.buildOrderBy(e.orderBy,`aggregate`))),e.limit!==void 0&&(r=r.limit(this.validateLimit(e.limit))),await r}async countEstimate(){if(this.partition)throw new B(`countEstimate reads table-wide statistics and cannot be confined to a partition — use count()`);let e=p(this.table),[t]=await this.db.select({estimate:y`greatest(${L.reltuples}::bigint, 0)`}).from(L).where(d(L.relname,e)).limit(1);return t?Number(t.estimate):0}buildAggregateExpr(e){if(`column`in e&&e.column){let t=this.getColumnOrThrow(e.column,`aggregate`);switch(e.fn){case`count`:return y`count(${t})::int`;case`sum`:return y`sum(${t})`;case`avg`:return y`avg(${t})`;case`min`:return y`min(${t})`;case`max`:return y`max(${t})`;default:throw new B(`aggregate: unknown function "${e.fn}"`)}}if(e.fn===`count`)return y`count(*)::int`;throw new B(`aggregate: ${e.fn} requires a column`)}buildWhereOrThrow(e){try{let t=P(this.table,this.columnKinds,e);if(!t)throw new B(`where clause produced no SQL predicate`);return this.confine(t)??t}catch(e){throw e instanceof M?new B(e.message.replace(/^WhereBuilder: /,``)):e}}validateLimit(e){if(e===void 0)return 100;if(!Number.isInteger(e)||e<1)throw new B(`limit must be a positive integer, got ${e}`);if(e>1e3)throw new B(`limit ${e} exceeds MAX_LIMIT ${R} — paginate or use claim() for batch processing`);return e}};function H(e,t){let n=e;return Object.defineProperty(n,"__kind",{value:t.kind,enumerable:!1}),Object.defineProperty(n,"__notNull",{value:t.notNull,enumerable:!1}),Object.defineProperty(n,"__hasDefault",{value:t.hasDefault,enumerable:!1}),Object.defineProperty(n,"__type",{value:void 0,enumerable:!1}),t.pgName&&Object.defineProperty(n,"__pgName",{value:t.pgName,enumerable:!1}),t.primaryKey&&Object.defineProperty(n,"__primaryKey",{value:!0,enumerable:!1}),n}const U={uuid(e){let t=e?.notNull??!1,n=e?.defaultRandom??!1,r=e?.primaryKey??!1;return H(n=>{let i=x(n);return r&&(i=i.primaryKey()),e?.defaultRandom&&(i=i.defaultRandom()),t&&!r&&(i=i.notNull()),i},{kind:`uuid`,notNull:t||r,hasDefault:n||r,pgName:e?.pgName,primaryKey:r||void 0})},varchar(e){if(!Number.isInteger(e.length)||e.length<1||e.length>1073741823)throw Error(`column.varchar: length must be an integer between 1 and 1073741823, got ${e.length}`);let t=e.notNull??!1;return H(n=>{let r=S(n,{length:e.length});return t&&(r=r.notNull()),e.default!==void 0&&(r=r.default(e.default)),r},{kind:`varchar`,notNull:t,hasDefault:e.default!==void 0,pgName:e.pgName})},text(e){let t=e?.notNull??!1;return H(n=>{let r=he(n);return t&&(r=r.notNull()),e?.default!==void 0&&(r=r.default(e.default)),r},{kind:`text`,notNull:t,hasDefault:e?.default!==void 0,pgName:e?.pgName})},integer(e){let t=e?.notNull??!1;return H(n=>{let r=de(n);return t&&(r=r.notNull()),e?.default!==void 0&&(r=r.default(e.default)),r},{kind:`integer`,notNull:t,hasDefault:e?.default!==void 0,pgName:e?.pgName})},bigint(e){let t=e?.mode??`number`,n=e?.notNull??!1;return H(r=>{let i=se(r,{mode:t});return n&&(i=i.notNull()),e?.default!==void 0&&(i=i.default(e.default)),i},{kind:`bigint`,notNull:n,hasDefault:e?.default!==void 0,pgName:e?.pgName})},double(e){let t=e?.notNull??!1;return H(n=>{let r=le(n);return t&&(r=r.notNull()),e?.default!==void 0&&(r=r.default(e.default)),r},{kind:`double`,notNull:t,hasDefault:e?.default!==void 0,pgName:e?.pgName})},boolean(e){let t=e?.notNull??!1;return H(n=>{let r=ce(n);return t&&(r=r.notNull()),e?.default!==void 0&&(r=r.default(e.default)),r},{kind:`boolean`,notNull:t,hasDefault:e?.default!==void 0,pgName:e?.pgName})},timestamp(e){let t=e?.notNull??!1,n=e?.defaultNow??!1,r=e?.withTimezone??!0;return H(n=>{let i=ge(n,{withTimezone:r});return t&&(i=i.notNull()),e?.defaultNow&&(i=i.defaultNow()),i},{kind:`timestamp`,notNull:t,hasDefault:n,pgName:e?.pgName})},jsonb(e){let t=e?.notNull??!1;return H(n=>{let r=fe(n);return t&&(r=r.notNull()),e?.default!==void 0&&(r=r.default(e.default)),r},{kind:`jsonb`,notNull:t,hasDefault:e?.default!==void 0,pgName:e?.pgName})},uuidArray(e){let t=e?.notNull??!1;return H(e=>{let n=x(e).array();return t?n.notNull():n},{kind:`uuidArray`,notNull:t,hasDefault:!1,pgName:e?.pgName})}},W=new Map;function Ne(e,t){let n=W.get(e);n?n.push(t):W.set(e,[t])}function Pe(e){return W.get(e)??[]}function Fe(){W.clear()}const G=new WeakMap;function Ie(e,t){G.set(e,t)}function Le(e){return G.get(e)??[]}const K=new WeakMap;function Re(e,t){K.set(e,t)}function ze(e){return K.get(e)}function q(e){let t=f(e),n=Object.entries(t).map(([e,t])=>`${e}:${t.name}:${t.getSQLType()}:${t.notNull?`1`:`0`}`).sort().join(`|`);return`${p(e)}#${n}`}function Be(e,t){try{return q(e)===q(t)}catch{return!1}}const J=new class{byName=new Map;warnedDuplicates=new Set;register(e,t,n){let r=this.byName.get(e);if(r){if(r.table===t||r.source&&n&&r.source===n)return;if(r.source&&n&&r.source!==n&&Be(r.table,t)){this.warnedDuplicates.has(e)||(this.warnedDuplicates.add(e),process.emitWarning(`table "${e}" was registered from two different bundles (first "${r.source}", now "${n}"). Tolerated because the definitions are structurally identical — a bundler inlined one defineTable() into separate output chunks. Emit the shared table from a single chunk to remove the duplicate.`,{code:`TOOLKIT_TABLE_REGISTRY_DUPLICATE`}));return}throw Error(`tableRegistry: a different table is already registered under name "${e}". Did you call defineTable twice? First registered from ${r.source??`<unknown>`}, now from ${n??`<unknown>`}.`)}this.byName.set(e,{name:e,table:t,source:n})}get(e){return this.byName.get(e)?.table}has(e){return this.byName.has(e)}allTables(){let e={};for(let t of this.byName.values())e[t.name]=t.table;return e}clear(){if(process.env.NODE_ENV===`production`)throw Error(`tableRegistry.clear() is not allowed when NODE_ENV=production — this is a test-only utility. If you reached this from production code, you have a bug.`);this.byName.clear(),this.warnedDuplicates.clear()}},Ve=/^[a-z][a-z0-9_]*$/;function Y(e,t,n){let r=Buffer.byteLength(e,`utf8`);if(r>63)throw Error(`defineTable: ${t} "${e}" is ${r} bytes — Postgres truncates identifiers at 63 bytes (63 chars of plain ASCII) silently, which can cause name collisions${n?`. ${n}`:``}`)}function X(e){if(!Ve.test(e.name))throw Error(`defineTable: invalid table name "${e.name}" — must match /^[a-z][a-z0-9_]*$/`);Y(e.name,`table name`);let t={},n={};for(let[r,i]of Object.entries(e.columns)){if(typeof i!=`function`)throw Error(`defineTable: column "${r}" is not a column factory — did you call e.g. column.uuid() with parens?`);Y(r,`column name in table "${e.name}"`);let a=i.__pgName;a&&Y(a,`pgName for column "${r}" in table "${e.name}"`),t[r]=i(a??r),n[r]=i.__kind}let r=new Set(Object.keys(t));if(e.primaryKey!==void 0){let t=Array.isArray(e.primaryKey)?e.primaryKey:[e.primaryKey];for(let e of t)if(!r.has(String(e)))throw Error(`defineTable: primaryKey references unknown column "${String(e)}"`)}if(e.unique)for(let t of e.unique){for(let e of t.on)if(!r.has(String(e)))throw Error(`defineTable: unique constraint references unknown column "${String(e)}"`);Y(t.name??(t.where===void 0?`${e.name}_${t.on.map(t=>e.columns[String(t)]?.__pgName??String(t)).join(`_`)}_unique`:`uq_${e.name}_${t.on.map(String).join(`_`)}`),t.name?`unique constraint name`:`auto-generated unique constraint name`,t.name?void 0:"Supply a shorter explicit `name` to the unique definition.")}if(e.indexes)for(let t of e.indexes){for(let e of t.on)if(!r.has(String(e)))throw Error(`defineTable: index references unknown column "${String(e)}"`);Y(t.name??`idx_${e.name}_${t.on.map(String).join(`_`)}`,t.name?`index name`:`auto-generated index name`,t.name?void 0:"Supply a shorter explicit `name` to the index definition.")}let i=e.primaryKey!==void 0||e.unique&&e.unique.length>0||e.indexes&&e.indexes.length>0;function a(e,t,n){let r=e[t];if(!r)throw Error(`defineTable: ${n} references unknown column "${t}"`);return r}function o(e,t){return typeof e==`function`?e(t):e}let s=i?b(e.name,t,t=>{let n=t,r=[];if(e.primaryKey!==void 0){let t=Array.isArray(e.primaryKey)?e.primaryKey:[e.primaryKey],i=a(n,String(t[0]),`primaryKey`),o=t.slice(1).map(e=>a(n,String(e),`primaryKey`));r.push(pe({columns:[i,...o]}))}if(e.unique)for(let t of e.unique){let i=a(n,String(t.on[0]),`unique constraint`),s=t.on.slice(1).map(e=>a(n,String(e),`unique constraint`));if(t.where!==void 0){let a=t.name??`uq_${e.name}_${t.on.map(String).join(`_`)}`;r.push(ve(a).on(i,...s).where(o(t.where,n)))}else r.push(_e(t.name).on(i,...s))}if(e.indexes)for(let t of e.indexes){let i=a(n,String(t.on[0]),`index`),s=t.on.slice(1).map(e=>a(n,String(e),`index`)),c=ue(t.name??`idx_${e.name}_${t.on.map(String).join(`_`)}`).on(i,...s);r.push(t.where===void 0?c:c.where(o(t.where,n)))}return r}):b(e.name,t),c=He();J.register(e.name,s,c);let l=Object.freeze({...n}),u;if(e.primaryKey!==void 0)u=Array.isArray(e.primaryKey)?e.primaryKey.map(String):[String(e.primaryKey)];else{u=[];for(let[t,n]of Object.entries(e.columns))n.__primaryKey&&u.push(t)}let d=Object.freeze([...u]),f=e.partitionColumn;if(f!==void 0&&!r.has(f))throw Error(`defineTable: partitionColumn references unknown column "${f}" on "${e.name}"`);if(f!==void 0){for(let t of e.unique??[])if(String(t.on[0])!==f)throw Error(`defineTable: on partitioned "${e.name}", every unique must lead with "${f}" (got [${t.on.map(String).join(`, `)}])`);if((e.dependsOn??[]).length>0)throw Error(`defineTable: partitioned "${e.name}" cannot declare dependsOn — its cleanup runs unconfined`)}let p=(t,n)=>{if(f===void 0){if(n!==void 0)throw new B(`table "${e.name}" declares no partitionColumn — a partition value makes no sense here`);return new V(s,l,t,d)}if(typeof n!=`string`||n===``)throw new B(`table "${e.name}" is partitioned by "${f}" — makeClient(db, value) needs the partition value (e.g. the site). Refusing to build an unconfined client.`);return new V(s,l,t,d,{key:f,value:n})},m=e.dependsOn??[];for(let t of m){if(typeof t.entity!=`string`||t.entity.trim().length===0)throw Error(`defineTable: dependsOn.entity must be a non-empty string on table "${e.name}"`);let n=e.columns[t.column];if(!r.has(String(t.column))||n===void 0)throw Error(`defineTable: dependsOn references unknown column "${String(t.column)}" on table "${e.name}"`);if(t.onDelete!==`cascade`&&t.onDelete!==`set-null`)throw Error(`defineTable: dependsOn.onDelete must be 'cascade' or 'set-null' on table "${e.name}", got "${String(t.onDelete)}"`);if(t.onDelete===`set-null`&&n.__notNull===!0)throw Error(`defineTable: dependsOn onDelete:'set-null' targets non-nullable column "${String(t.column)}" on table "${e.name}" — make the column nullable or use 'cascade'`)}function h(e){let t=e.column;return async(n,r)=>{if(r.length===0)return;let i=p(n),a={[t]:{in:r}};if(e.onDelete===`cascade`)await i.deleteMany(a);else{let e={[t]:null};await i.updateMany(a,e)}}}let g=m.map(e=>({entity:e.entity,cleanup:h(e)}));return g.length>0&&Ie(s,g),f!==void 0&&Re(s,f),{table:s,schema:e,columnKinds:l,primaryKeyColumns:d,makeClient:p,partitionColumn:f}}function He(){let e=Error().stack;if(!e)return;let t=e.split(`
2
+ `).slice(1);for(let e of t){if(e.includes(`/table/define.`)||e.includes(`/table/registry.`))continue;let t=e.match(/\(([^)]+)\)/)??e.match(/at (.+)$/);if(t?.[1])return t[1].trim()}}const Z=`toolkit_deploy_steps`,Ue=[`applied`,`needs-a-person`,`marked-done`],We=X({name:Z,columns:{id:U.uuid({primaryKey:!0,defaultRandom:!0}),step:U.varchar({length:255,notNull:!0}),site:U.varchar({length:64,notNull:!0}),state:U.varchar({length:32,notNull:!0}),reason:U.text(),whatToDo:U.text({pgName:`what_to_do`}),created:U.integer(),at:U.timestamp({notNull:!0,defaultNow:!0,withTimezone:!0}),by:U.varchar({length:255,notNull:!0}),byName:U.varchar({length:255,pgName:`by_name`}),buildCommit:U.varchar({length:64,pgName:`build_commit`}),toolkitVersion:U.varchar({length:64,pgName:`toolkit_version`})},indexes:[{on:[`step`,`site`,`at`],name:`idx_deploy_steps_step_site_at`}]}),Ge=We.table;function Ke(e){return s(e.url,{max:2,idle_timeout:0,max_lifetime:3600,connection:{application_name:`toolkit_realtime`},onnotice:()=>{}})}async function qe(e){try{return(await ye(e)).filter(e=>e.endsWith(`.ts`))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function Q(e){await e.execute(y`
2
3
  CREATE TABLE IF NOT EXISTS _toolkit_migrations (
3
4
  id SERIAL PRIMARY KEY,
4
5
  namespace VARCHAR(50) NOT NULL,
@@ -6,15 +7,14 @@ import{a as e,i as t,n,o as r,r as i,t as a}from"./extensions-CEyIHQA7.mjs";impo
6
7
  applied_at TIMESTAMP NOT NULL DEFAULT NOW(),
7
8
  UNIQUE(namespace, name)
8
9
  )
9
- `)}async function Se(e){let t=u(e,`migrations`),n=u(t,`.toolkit`),[r,i]=await Promise.all([P(n),P(t)]),a=r.map(e=>({path:u(n,e),namespace:`toolkit`,name:e})).sort((e,t)=>e.name.localeCompare(t.name)),o=i.filter(e=>e!==`.toolkit`).map(e=>({path:u(t,e),namespace:`project`,name:e})).sort((e,t)=>e.name.localeCompare(t.name));return[...a,...o]}async function I(e,t){await F(e);let n=await Se(t),r=await e.execute(S`
10
+ `)}async function Je(e){let t=C(e,`migrations`),n=C(t,`.toolkit`),[r,i]=await Promise.all([qe(n),qe(t)]),a=r.map(e=>({path:C(n,e),namespace:`toolkit`,name:e})).sort((e,t)=>e.name.localeCompare(t.name)),o=i.filter(e=>e!==`.toolkit`).map(e=>({path:C(t,e),namespace:`project`,name:e})).sort((e,t)=>e.name.localeCompare(t.name));return[...a,...o]}async function $(e,t){await Q(e);let n=await Je(t),r=await e.execute(y`
10
11
  SELECT namespace, name FROM _toolkit_migrations
11
12
  ORDER BY applied_at ASC
12
- `),i=new Set(r.map(e=>`${e.namespace}:${e.name}`)),a=[],o=[];for(let e of n)i.has(`${e.namespace}:${e.name}`)?a.push(e):o.push(e);return{applied:a,pending:o}}async function Ce(e,t,n){await F(e);let{pending:r}=await I(e,t);if(r.length===0){console.log(`No pending migrations`);return}console.log(`Running ${r.length} pending migration${r.length===1?``:`s`}...`);for(let t of r){console.log(` Applying ${t.namespace}/${t.name}...`);let r=await n(t.path);if(typeof r.up!=`function`)throw Error(`Migration ${t.namespace}/${t.name} has no \`up\` export. Every migration file must export an async \`up({ db })\` function.`);try{await e.transaction(async e=>{await r.up({db:e}),await e.execute(S`
13
+ `),i=new Set(r.map(e=>`${e.namespace}:${e.name}`)),a=[],o=[];for(let e of n)i.has(`${e.namespace}:${e.name}`)?a.push(e):o.push(e);return{applied:a,pending:o}}async function Ye(e,t,n){await Q(e);let{pending:r}=await $(e,t);if(r.length===0){console.log(`No pending migrations`);return}console.log(`Running ${r.length} pending migration${r.length===1?``:`s`}...`);for(let t of r){console.log(` Applying ${t.namespace}/${t.name}...`);let r=await n(t.path);if(typeof r.up!=`function`)throw Error(`Migration ${t.namespace}/${t.name} has no \`up\` export. Every migration file must export an async \`up({ db })\` function.`);try{await e.transaction(async e=>{await r.up({db:e}),await e.execute(y`
13
14
  INSERT INTO _toolkit_migrations (namespace, name)
14
15
  VALUES (${t.namespace}, ${t.name})
15
- `)}),console.log(` ✓ Applied ${t.namespace}/${t.name}`)}catch(e){throw console.error(` ✗ Failed to apply ${t.namespace}/${t.name}:`,e),e}}console.log(`Successfully applied ${r.length} migration${r.length===1?``:`s`}`)}async function we(e,t,n,r=1){await F(e);let{applied:i}=await I(e,t);if(i.length===0){console.log(`No applied migrations to roll back`);return}let a=i.slice(-r).reverse(),o=await Promise.all(a.map(async e=>({meta:e,mod:await n(e.path)})));for(let{meta:e,mod:t}of o)if(typeof t.down!=`function`)throw Error(`Migration ${e.namespace}/${e.name} has no \`down\` export — cannot roll back. Add an async \`down({ db })\` function to the migration file.`);for(let{meta:t,mod:n}of o){console.log(` Rolling back ${t.namespace}/${t.name}...`);try{await e.transaction(async e=>{await n.down({db:e}),await e.execute(S`
16
+ `)}),console.log(` ✓ Applied ${t.namespace}/${t.name}`)}catch(e){throw console.error(` ✗ Failed to apply ${t.namespace}/${t.name}:`,e),e}}console.log(`Successfully applied ${r.length} migration${r.length===1?``:`s`}`)}async function Xe(e,t,n,r=1){await Q(e);let{applied:i}=await $(e,t);if(i.length===0){console.log(`No applied migrations to roll back`);return}let a=i.slice(-r).reverse(),o=await Promise.all(a.map(async e=>({meta:e,mod:await n(e.path)})));for(let{meta:e,mod:t}of o)if(typeof t.down!=`function`)throw Error(`Migration ${e.namespace}/${e.name} has no \`down\` export — cannot roll back. Add an async \`down({ db })\` function to the migration file.`);for(let{meta:t,mod:n}of o){console.log(` Rolling back ${t.namespace}/${t.name}...`);try{await e.transaction(async e=>{await n.down({db:e}),await e.execute(y`
16
17
  DELETE FROM _toolkit_migrations
17
18
  WHERE namespace = ${t.namespace} AND name = ${t.name}
18
- `)}),console.log(` ✓ Rolled back ${t.namespace}/${t.name}`)}catch(e){throw console.error(` ✗ Failed to roll back ${t.namespace}/${t.name}:`,e),e}}console.log(`Successfully rolled back ${o.length} migration${o.length===1?``:`s`}`)}const Te=new class{schemas=new Map;register(e,t){this.schemas.set(e,t)}get(e){return this.schemas.get(e)}all(){let e={};for(let[t,n]of this.schemas.entries())e[t]=n;return e}has(e){return this.schemas.has(e)}},Ee=/^[a-zA-Z_][a-zA-Z0-9_-]*$|^\d+$/,De=new Set([`$and`,`$or`,`$not`]),Oe=new Set([`eq`,`ne`,`in`,`notIn`,`gt`,`gte`,`lt`,`lte`,`isNull`,`isNotNull`,`ilike`,`startsWith`]);var L=class extends Error{constructor(e){super(`WhereBuilder: ${e}`),this.name=`WhereBuilderError`}};function R(e){return e.replace(/[\\%_]/g,`\\$&`)}function ke(e,t,n){let r=m(e);if(!n.includes(`.`)){let e=r[n];if(!e)throw new L(`unknown column "${n}"`);return e}let[i,...a]=n.split(`.`);if(!i||a.length===0)throw new L(`malformed dotted key "${n}"`);let o=t[i];if(!o)throw new L(`unknown column "${i}" in dotted key "${n}"`);if(o!==`jsonb`)throw new L(`dotted-path access is only supported on jsonb columns, but "${i}" is ${o}`);for(let e of a)if(!Ee.test(e))throw new L(`invalid jsonb path segment "${e}" — must match [a-zA-Z_][a-zA-Z0-9_-]* or be a non-negative integer`);let s=r[i];if(!s)throw new L(`unknown column "${i}"`);let c=S`${s}`;for(let e=0;e<a.length;e++){let t=a[e];if(t===void 0)throw new L(`jsonb path segment at index ${e} is undefined`);let n=e===a.length-1;if(/^\d+$/.test(t)){if(t.length>10)throw new L(`jsonb path index "${t}" is too large`);let e=S.raw(t);c=n?S`${c}->>${e}`:S`${c}->${e}`}else c=n?S`${c}->>${t}`:S`${c}->${t}`}return c}function Ae(e,t){if(t===null)return b(e);if(typeof t==`string`||typeof t==`number`||typeof t==`boolean`||typeof t==`bigint`||t instanceof Date)return p(e,t);if(Array.isArray(t))throw new L(`arrays must be wrapped in an operator (e.g. { in: [...] }) — bare arrays are not allowed`);if(typeof t!=`object`)throw new L(`unsupported value type: ${typeof t}`);let n=t,r=Object.keys(n);if(r.length===0)throw new L(`empty operator object`);let i=[];for(let t of r){if(!Oe.has(t))throw new L(`unknown operator "${t}"`);let r=n[t];switch(t){case`eq`:i.push(p(e,r));break;case`ne`:i.push(x(e,r));break;case`in`:if(!Array.isArray(r))throw new L(`"in" operator requires an array`);r.length===0?i.push(S`false`):i.push(v(e,r));break;case`notIn`:if(!Array.isArray(r))throw new L(`"notIn" operator requires an array`);r.length===0?i.push(S`true`):i.push(ie(e,r));break;case`gt`:i.push(g(e,r));break;case`gte`:i.push(ee(e,r));break;case`lt`:i.push(te(e,r));break;case`lte`:i.push(ne(e,r));break;case`isNull`:if(r!==!0)throw new L('"isNull" operator must be `true`');i.push(b(e));break;case`isNotNull`:if(r!==!0)throw new L('"isNotNull" operator must be `true`');i.push(y(e));break;case`ilike`:if(typeof r!=`string`)throw new L(`"ilike" operator requires a string`);i.push(_(e,`%${R(r)}%`));break;case`startsWith`:if(typeof r!=`string`)throw new L(`"startsWith" operator requires a string`);i.push(_(e,`${R(r)}%`));break}}if(i.length!==0)return i.length===1?i[0]:d(...i)}function z(e,t,n,r=0){if(!n)return;if(typeof n!=`object`||Array.isArray(n))throw new L(`where clause must be a plain object`);if(r>16)throw new L(`where clause exceeds maximum nesting depth of 16 — real queries should not need this much nesting; if yours does, reconsider whether it should be expressed differently`);let i=[];for(let a of Object.keys(n)){let o=n[a];if(a===`$and`){if(!Array.isArray(o))throw new L(`$and must be an array`);if(o.length===0)throw new L(`$and must contain at least one clause`);let n=o.map(n=>z(e,t,n,r+1)).filter(e=>e!==void 0);n.length>0&&i.push(d(...n));continue}if(a===`$or`){if(!Array.isArray(o))throw new L(`$or must be an array`);if(o.length===0)throw new L(`$or must contain at least one clause`);let n=o.map(n=>z(e,t,n,r+1)).filter(e=>e!==void 0);n.length>0&&i.push(ae(...n));continue}if(a===`$not`){if(!B(o))throw new L(`$not must contain a non-empty clause`);let n=z(e,t,o,r+1);n&&i.push(re(n));continue}if(De.has(a))continue;let s=Ae(ke(e,t,a),o);s&&i.push(s)}if(i.length!==0)return i.length===1?i[0]:d(...i)}function B(e){return typeof e!=`object`||!e||Array.isArray(e)?!1:Object.keys(e).length>0}const V=/^[a-zA-Z_][a-zA-Z0-9_]*$/,H=C(`pg_class`,{relname:T(`relname`,{length:63}).notNull(),reltuples:pe(`reltuples`).notNull()}),je=100,U=1e3,W=1e3;var G=class extends Error{constructor(e){super(`TableClient: ${e}`),this.name=`TableClientError`}},K=class e{table;columnKinds;db;primaryKeyColumns;partition;constructor(e,t,n,r=[],i){this.table=e,this.columnKinds=t,this.db=n,this.primaryKeyColumns=r,this.partition=i}partitionCondition(){if(this.partition)return p(this.getColumnOrThrow(this.partition.key,`partition`),this.partition.value)}confine(e){let t=this.partitionCondition();return t?e?d(t,e):t:e}stamp(e){return this.partition?{...e,[this.partition.key]:this.partition.value}:e}refusePartitionPatch(e,t){if(this.partition&&e.includes(this.partition.key))throw new G(`${t}: "${this.partition.key}" is this table's partition column and cannot be changed`)}partitionTarget(e){return!this.partition||e.includes(this.partition.key)?[...e]:[this.partition.key,...e]}get _selectTable(){return this.table}getColumnOrThrow(e,t){let n=m(this.table)[e];if(!n)throw new G(`${t}: unknown column "${e}"`);return n}buildOrderBy(e,t){return e.map(e=>{let n=this.getColumnOrThrow(e.column,`${t}: orderBy`);return e.dir===`desc`?S`${n} DESC`:S`${n} ASC`})}requireNonEmptyWhere(e,t){if(!B(e))throw new G(`${t} requires a non-empty where clause`)}validateColumnKeys(e,t){if(e.length===0)return;let n=m(this.table);for(let r of e)if(!Object.hasOwn(n,r))throw new G(`${t}: unknown column "${r}"`)}async findOne(e){this.requireNonEmptyWhere(e,`findOne`);let t=this.buildWhereOrThrow(e);return(await this.db.select().from(this._selectTable).where(t).limit(1))[0]??null}async findMany(e={}){let t=this.validateLimit(e.limit);if(e.offset!==void 0&&(!Number.isInteger(e.offset)||e.offset<0))throw new G(`offset must be a non-negative integer, got ${e.offset}`);let n=e.orderBy&&e.orderBy.length>0?this.buildOrderBy(e.orderBy,`findMany`):void 0,r=e.where?this.buildWhereOrThrow(e.where):this.partitionCondition(),i=this.db.select().from(this._selectTable).$dynamic();return r&&(i=i.where(r)),n&&(i=i.orderBy(...n)),i=i.limit(t),e.offset!==void 0&&(i=i.offset(e.offset)),await i}async count(e){let t=e?this.buildWhereOrThrow(e):this.partitionCondition(),n=this.db.select({value:f()}).from(this._selectTable).$dynamic();t&&(n=n.where(t));let r=await n;return Number(r[0]?.value??0)}async exists(e){this.requireNonEmptyWhere(e,`exists`);let t=this.buildWhereOrThrow(e);return(await this.db.select({one:S`1`}).from(this._selectTable).where(t).limit(1)).length>0}async distinct(e,t){let n=this.getColumnOrThrow(e,`distinct`),r=[];if(t?.includeNull||r.push(y(n)),t?.where)r.push(this.buildWhereOrThrow(t.where));else{let e=this.partitionCondition();e&&r.push(e)}let i=this.db.selectDistinct({value:n}).from(this._selectTable).$dynamic();if(r.length===1?i=i.where(r[0]):r.length>1&&(i=i.where(d(...r))),t?.orderBy){let e=t.orderBy===`desc`?S`${n} DESC`:S`${n} ASC`;i=i.orderBy(e)}return(await i).map(e=>e.value)}async insert(e){return(await this.db.insert(this.table).values(this.stamp(e)).returning())[0]}async upsert(e,t){let n=Array.isArray(t.target)?t.target:[t.target];if(n.length===0)throw new G(`upsert requires at least one target column`);let r=this.partitionTarget(n),i=r.map(e=>this.getColumnOrThrow(e,`upsert target`));e=this.stamp(e);let a=t.set??e;t.set&&(this.validateColumnKeys(Object.keys(t.set),`upsert set`),this.refusePartitionPatch(Object.keys(t.set),`upsert set`));let o=t.setWhere&&B(t.setWhere)?this.buildWhereOrThrow(t.setWhere):void 0,s={...a};for(let n of t.mergeJsonb??[]){if(this.columnKinds[n]!==`jsonb`)throw new G(`upsert mergeJsonb: '${n}' is not a jsonb column (kind: ${this.columnKinds[n]??`unknown`})`);let t=this.getColumnOrThrow(n,`upsert mergeJsonb`),r=e[n];if(typeof r!=`object`||!r||Array.isArray(r))throw new G(`upsert mergeJsonb: '${n}' must be a JSON object to merge (got ${Array.isArray(r)?`array`:r===null?`null`:typeof r})`);s[n]=S`COALESCE(NULLIF(${t}, 'null'::jsonb), '{}'::jsonb) || ${JSON.stringify(r)}::jsonb`}let c=await this.db.insert(this.table).values(e).onConflictDoUpdate({target:i,set:s,...o?{setWhere:o}:{}}).returning();if(c.length>0)return c[0];let l={};for(let t of r)l[t]=e[t];let u=await this.findOne(l);if(!u)throw new G(`upsert with setWhere: conflicting row was deleted concurrently — retry the operation`);return u}async tryClaim(e,t){let n=Array.isArray(t.target)?t.target:[t.target];if(n.length===0)throw new G(`tryClaim requires at least one target column`);let r=this.partitionTarget(n),i=r.map(e=>this.getColumnOrThrow(e,`tryClaim target`));e=this.stamp(e);let a=t.set??e;if(t.set&&(this.validateColumnKeys(Object.keys(t.set),`tryClaim set`),this.refusePartitionPatch(Object.keys(t.set),`tryClaim set`)),!B(t.replaceWhen))throw new G(`tryClaim requires a non-empty replaceWhen clause`);let o=this.buildWhereOrThrow(t.replaceWhen),s=await this.db.insert(this.table).values(e).onConflictDoUpdate({target:i,set:a,setWhere:o}).returning();if(s.length>0)return{acquired:!0,row:s[0]};let c={};for(let t of r)c[t]=e[t];let l=await this.findOne(c);if(!l)throw new G(`tryClaim: conflicting row was deleted concurrently — retry the operation`);return{acquired:!1,row:l}}async insertMany(e){if(!Array.isArray(e))throw new G(`insertMany requires an array of rows`);if(e.length===0)return[];if(e.length>1e3)throw new G(`insertMany batch too large: ${e.length} > ${W}`);return await this.db.insert(this.table).values(e.map(e=>this.stamp(e))).returning()}async update(e,t){this.requireNonEmptyWhere(e,`update`),this.validateColumnKeys(Object.keys(t),`update`),this.refusePartitionPatch(Object.keys(t),`update`);let n=this.buildWhereOrThrow(e),r=await this.db.update(this.table).set(t).where(n).returning();if(r.length>1)throw new G(`update matched ${r.length} rows but is expected to match at most one — use updateMany for bulk updates. WARNING: the update has already been applied; wrap in a transaction if you need rollback.`);return r[0]??null}async updateMany(e,t){this.requireNonEmptyWhere(e,`updateMany`),this.validateColumnKeys(Object.keys(t),`updateMany`),this.refusePartitionPatch(Object.keys(t),`updateMany`);let n=this.buildWhereOrThrow(e);return await this.db.update(this.table).set(t).where(n).returning()}async delete(e){this.requireNonEmptyWhere(e,`delete`);let t=this.buildWhereOrThrow(e),n=await this.db.delete(this.table).where(t).returning();if(n.length>1)throw new G(`delete matched ${n.length} rows but is expected to match at most one — use deleteMany for bulk deletes. WARNING: the delete has already been applied; wrap in a transaction if you need rollback.`);return n[0]??null}async deleteMany(e){this.requireNonEmptyWhere(e,`deleteMany`);let t=this.buildWhereOrThrow(e);return await this.db.delete(this.table).where(t).returning()}async transaction(t){return await this.db.transaction(async n=>await t(new e(this.table,this.columnKinds,n,this.primaryKeyColumns,this.partition)))}async claim(e){if(this.primaryKeyColumns.length===0)throw new G(`claim() requires the table to have a primary key — declare primaryKey in defineTable() or use column.uuid({ primaryKey: true })`);if(this.primaryKeyColumns.length>1)throw new G(`claim() does not support composite primary keys — use a single-column primary key or call transaction() with FOR UPDATE directly`);if(this.requireNonEmptyWhere(e.where,`claim`),!Number.isInteger(e.limit)||e.limit<1)throw new G(`claim limit must be a positive integer, got ${e.limit}`);if(e.limit>1e3)throw new G(`claim limit ${e.limit} exceeds MAX_LIMIT ${U}`);let t=Object.keys(e.set??{}),n=Object.keys(e.setSql??{});if(t.length===0&&n.length===0)throw new G(`claim requires at least one field in set or setSql`);this.validateColumnKeys(t,`claim set`),this.validateColumnKeys(n,`claim setSql`),this.refusePartitionPatch([...t,...n],`claim`);let r=this.buildWhereOrThrow(e.where),i=e.orderBy&&e.orderBy.length>0?this.buildOrderBy(e.orderBy,`claim`):void 0,a=this.primaryKeyColumns[0],o=this.getColumnOrThrow(a,`claim primary key`);return await this.db.transaction(async t=>{let n=t.select({_pk:o}).from(this._selectTable).where(r).limit(e.limit).for(`update`,{skipLocked:!0}).$dynamic();i&&(n=n.orderBy(...i));let a=await n;if(a.length===0)return[];let s=a.map(e=>e._pk),c={...e.set??{}};if(e.setSql)for(let[t,n]of Object.entries(e.setSql))c[t]=n;return await t.update(this.table).set(c).where(v(o,s)).returning()})}async aggregate(e){let t=Object.entries(e.select);if(t.length===0)throw new G(`aggregate requires at least one select field`);for(let[e]of t)if(!V.test(e))throw new G(`aggregate: invalid output alias "${e}" — must match ${V.source}`);let n={};if(e.groupBy)for(let t of e.groupBy)n[t]=this.getColumnOrThrow(t,`aggregate groupBy`);for(let[e,r]of t)n[e]=this.buildAggregateExpr(r);let r=this.db.select(n).from(this._selectTable).$dynamic(),i=e.where?this.buildWhereOrThrow(e.where):this.partitionCondition();if(i&&(r=r.where(i)),e.groupBy&&e.groupBy.length>0){let t=e.groupBy.map(e=>this.getColumnOrThrow(e,`aggregate groupBy`));r=r.groupBy(...t)}return e.orderBy&&e.orderBy.length>0&&(r=r.orderBy(...this.buildOrderBy(e.orderBy,`aggregate`))),e.limit!==void 0&&(r=r.limit(this.validateLimit(e.limit))),await r}async countEstimate(){if(this.partition)throw new G(`countEstimate reads table-wide statistics and cannot be confined to a partition — use count()`);let e=h(this.table),[t]=await this.db.select({estimate:S`greatest(${H.reltuples}::bigint, 0)`}).from(H).where(p(H.relname,e)).limit(1);return t?Number(t.estimate):0}buildAggregateExpr(e){if(`column`in e&&e.column){let t=this.getColumnOrThrow(e.column,`aggregate`);switch(e.fn){case`count`:return S`count(${t})::int`;case`sum`:return S`sum(${t})`;case`avg`:return S`avg(${t})`;case`min`:return S`min(${t})`;case`max`:return S`max(${t})`;default:throw new G(`aggregate: unknown function "${e.fn}"`)}}if(e.fn===`count`)return S`count(*)::int`;throw new G(`aggregate: ${e.fn} requires a column`)}buildWhereOrThrow(e){try{let t=z(this.table,this.columnKinds,e);if(!t)throw new G(`where clause produced no SQL predicate`);return this.confine(t)??t}catch(e){throw e instanceof L?new G(e.message.replace(/^WhereBuilder: /,``)):e}}validateLimit(e){if(e===void 0)return 100;if(!Number.isInteger(e)||e<1)throw new G(`limit must be a positive integer, got ${e}`);if(e>1e3)throw new G(`limit ${e} exceeds MAX_LIMIT ${U} — paginate or use claim() for batch processing`);return e}};function q(e,t){let n=e;return Object.defineProperty(n,"__kind",{value:t.kind,enumerable:!1}),Object.defineProperty(n,"__notNull",{value:t.notNull,enumerable:!1}),Object.defineProperty(n,"__hasDefault",{value:t.hasDefault,enumerable:!1}),Object.defineProperty(n,"__type",{value:void 0,enumerable:!1}),t.pgName&&Object.defineProperty(n,"__pgName",{value:t.pgName,enumerable:!1}),t.primaryKey&&Object.defineProperty(n,"__primaryKey",{value:!0,enumerable:!1}),n}const Me={uuid(e){let t=e?.notNull??!1,n=e?.defaultRandom??!1,r=e?.primaryKey??!1;return q(n=>{let i=w(n);return r&&(i=i.primaryKey()),e?.defaultRandom&&(i=i.defaultRandom()),t&&!r&&(i=i.notNull()),i},{kind:`uuid`,notNull:t||r,hasDefault:n||r,pgName:e?.pgName,primaryKey:r||void 0})},varchar(e){if(!Number.isInteger(e.length)||e.length<1||e.length>1073741823)throw Error(`column.varchar: length must be an integer between 1 and 1073741823, got ${e.length}`);let t=e.notNull??!1;return q(n=>{let r=T(n,{length:e.length});return t&&(r=r.notNull()),e.default!==void 0&&(r=r.default(e.default)),r},{kind:`varchar`,notNull:t,hasDefault:e.default!==void 0,pgName:e.pgName})},text(e){let t=e?.notNull??!1;return q(n=>{let r=me(n);return t&&(r=r.notNull()),e?.default!==void 0&&(r=r.default(e.default)),r},{kind:`text`,notNull:t,hasDefault:e?.default!==void 0,pgName:e?.pgName})},integer(e){let t=e?.notNull??!1;return q(n=>{let r=ue(n);return t&&(r=r.notNull()),e?.default!==void 0&&(r=r.default(e.default)),r},{kind:`integer`,notNull:t,hasDefault:e?.default!==void 0,pgName:e?.pgName})},bigint(e){let t=e?.mode??`number`,n=e?.notNull??!1;return q(r=>{let i=oe(r,{mode:t});return n&&(i=i.notNull()),e?.default!==void 0&&(i=i.default(e.default)),i},{kind:`bigint`,notNull:n,hasDefault:e?.default!==void 0,pgName:e?.pgName})},double(e){let t=e?.notNull??!1;return q(n=>{let r=ce(n);return t&&(r=r.notNull()),e?.default!==void 0&&(r=r.default(e.default)),r},{kind:`double`,notNull:t,hasDefault:e?.default!==void 0,pgName:e?.pgName})},boolean(e){let t=e?.notNull??!1;return q(n=>{let r=se(n);return t&&(r=r.notNull()),e?.default!==void 0&&(r=r.default(e.default)),r},{kind:`boolean`,notNull:t,hasDefault:e?.default!==void 0,pgName:e?.pgName})},timestamp(e){let t=e?.notNull??!1,n=e?.defaultNow??!1,r=e?.withTimezone??!0;return q(n=>{let i=he(n,{withTimezone:r});return t&&(i=i.notNull()),e?.defaultNow&&(i=i.defaultNow()),i},{kind:`timestamp`,notNull:t,hasDefault:n,pgName:e?.pgName})},jsonb(e){let t=e?.notNull??!1;return q(n=>{let r=de(n);return t&&(r=r.notNull()),e?.default!==void 0&&(r=r.default(e.default)),r},{kind:`jsonb`,notNull:t,hasDefault:e?.default!==void 0,pgName:e?.pgName})},uuidArray(e){let t=e?.notNull??!1;return q(e=>{let n=w(e).array();return t?n.notNull():n},{kind:`uuidArray`,notNull:t,hasDefault:!1,pgName:e?.pgName})}},J=new Map;function Ne(e,t){let n=J.get(e);n?n.push(t):J.set(e,[t])}function Pe(e){return J.get(e)??[]}function Fe(){J.clear()}const Y=new WeakMap;function Ie(e,t){Y.set(e,t)}function Le(e){return Y.get(e)??[]}const X=new WeakMap;function Re(e,t){X.set(e,t)}function ze(e){return X.get(e)}function Z(e){let t=m(e),n=Object.entries(t).map(([e,t])=>`${e}:${t.name}:${t.getSQLType()}:${t.notNull?`1`:`0`}`).sort().join(`|`);return`${h(e)}#${n}`}function Be(e,t){try{return Z(e)===Z(t)}catch{return!1}}const Q=new class{byName=new Map;warnedDuplicates=new Set;register(e,t,n){let r=this.byName.get(e);if(r){if(r.table===t||r.source&&n&&r.source===n)return;if(r.source&&n&&r.source!==n&&Be(r.table,t)){this.warnedDuplicates.has(e)||(this.warnedDuplicates.add(e),process.emitWarning(`table "${e}" was registered from two different bundles (first "${r.source}", now "${n}"). Tolerated because the definitions are structurally identical — a bundler inlined one defineTable() into separate output chunks. Emit the shared table from a single chunk to remove the duplicate.`,{code:`TOOLKIT_TABLE_REGISTRY_DUPLICATE`}));return}throw Error(`tableRegistry: a different table is already registered under name "${e}". Did you call defineTable twice? First registered from ${r.source??`<unknown>`}, now from ${n??`<unknown>`}.`)}this.byName.set(e,{name:e,table:t,source:n})}get(e){return this.byName.get(e)?.table}has(e){return this.byName.has(e)}allTables(){let e={};for(let t of this.byName.values())e[t.name]=t.table;return e}clear(){if(process.env.NODE_ENV===`production`)throw Error(`tableRegistry.clear() is not allowed when NODE_ENV=production — this is a test-only utility. If you reached this from production code, you have a bug.`);this.byName.clear(),this.warnedDuplicates.clear()}},Ve=/^[a-z][a-z0-9_]*$/;function $(e,t,n){if(e.length>63)throw Error(`defineTable: ${t} "${e}" is ${e.length} characters — Postgres truncates identifiers at 63 chars silently, which can cause name collisions${n?`. ${n}`:``}`)}function He(e){if(!Ve.test(e.name))throw Error(`defineTable: invalid table name "${e.name}" — must match /^[a-z][a-z0-9_]*$/`);$(e.name,`table name`);let t={},n={};for(let[r,i]of Object.entries(e.columns)){if(typeof i!=`function`)throw Error(`defineTable: column "${r}" is not a column factory — did you call e.g. column.uuid() with parens?`);$(r,`column name in table "${e.name}"`);let a=i.__pgName;a&&$(a,`pgName for column "${r}" in table "${e.name}"`),t[r]=i(a??r),n[r]=i.__kind}let r=new Set(Object.keys(t));if(e.primaryKey!==void 0){let t=Array.isArray(e.primaryKey)?e.primaryKey:[e.primaryKey];for(let e of t)if(!r.has(String(e)))throw Error(`defineTable: primaryKey references unknown column "${String(e)}"`)}if(e.unique)for(let t of e.unique){for(let e of t.on)if(!r.has(String(e)))throw Error(`defineTable: unique constraint references unknown column "${String(e)}"`);$(t.name??`uq_${e.name}_${t.on.map(String).join(`_`)}`,t.name?`unique constraint name`:`auto-generated unique constraint name`,t.name?void 0:"Supply a shorter explicit `name` to the unique definition.")}if(e.indexes)for(let t of e.indexes){for(let e of t.on)if(!r.has(String(e)))throw Error(`defineTable: index references unknown column "${String(e)}"`);$(t.name??`idx_${e.name}_${t.on.map(String).join(`_`)}`,t.name?`index name`:`auto-generated index name`,t.name?void 0:"Supply a shorter explicit `name` to the index definition.")}let i=e.primaryKey!==void 0||e.unique&&e.unique.length>0||e.indexes&&e.indexes.length>0;function a(e,t,n){let r=e[t];if(!r)throw Error(`defineTable: ${n} references unknown column "${t}"`);return r}function o(e,t){return typeof e==`function`?e(t):e}let s=i?C(e.name,t,t=>{let n=t,r=[];if(e.primaryKey!==void 0){let t=Array.isArray(e.primaryKey)?e.primaryKey:[e.primaryKey],i=a(n,String(t[0]),`primaryKey`),o=t.slice(1).map(e=>a(n,String(e),`primaryKey`));r.push(fe({columns:[i,...o]}))}if(e.unique)for(let t of e.unique){let i=a(n,String(t.on[0]),`unique constraint`),s=t.on.slice(1).map(e=>a(n,String(e),`unique constraint`));if(t.where!==void 0){let a=t.name??`uq_${e.name}_${t.on.map(String).join(`_`)}`;r.push(_e(a).on(i,...s).where(o(t.where,n)))}else r.push(ge().on(i,...s))}if(e.indexes)for(let t of e.indexes){let i=a(n,String(t.on[0]),`index`),s=t.on.slice(1).map(e=>a(n,String(e),`index`)),c=le(t.name??`idx_${e.name}_${t.on.map(String).join(`_`)}`).on(i,...s);r.push(t.where===void 0?c:c.where(o(t.where,n)))}return r}):C(e.name,t),c=Ue();Q.register(e.name,s,c);let l=Object.freeze({...n}),u;if(e.primaryKey!==void 0)u=Array.isArray(e.primaryKey)?e.primaryKey.map(String):[String(e.primaryKey)];else{u=[];for(let[t,n]of Object.entries(e.columns))n.__primaryKey&&u.push(t)}let d=Object.freeze([...u]),f=e.partitionColumn;if(f!==void 0&&!r.has(f))throw Error(`defineTable: partitionColumn references unknown column "${f}" on "${e.name}"`);if(f!==void 0){for(let t of e.unique??[])if(String(t.on[0])!==f)throw Error(`defineTable: on partitioned "${e.name}", every unique must lead with "${f}" (got [${t.on.map(String).join(`, `)}])`);if((e.dependsOn??[]).length>0)throw Error(`defineTable: partitioned "${e.name}" cannot declare dependsOn — its cleanup runs unconfined`)}let p=(t,n)=>{if(f===void 0){if(n!==void 0)throw new G(`table "${e.name}" declares no partitionColumn — a partition value makes no sense here`);return new K(s,l,t,d)}if(typeof n!=`string`||n===``)throw new G(`table "${e.name}" is partitioned by "${f}" — makeClient(db, value) needs the partition value (e.g. the site). Refusing to build an unconfined client.`);return new K(s,l,t,d,{key:f,value:n})},m=e.dependsOn??[];for(let t of m){if(typeof t.entity!=`string`||t.entity.trim().length===0)throw Error(`defineTable: dependsOn.entity must be a non-empty string on table "${e.name}"`);let n=e.columns[t.column];if(!r.has(String(t.column))||n===void 0)throw Error(`defineTable: dependsOn references unknown column "${String(t.column)}" on table "${e.name}"`);if(t.onDelete!==`cascade`&&t.onDelete!==`set-null`)throw Error(`defineTable: dependsOn.onDelete must be 'cascade' or 'set-null' on table "${e.name}", got "${String(t.onDelete)}"`);if(t.onDelete===`set-null`&&n.__notNull===!0)throw Error(`defineTable: dependsOn onDelete:'set-null' targets non-nullable column "${String(t.column)}" on table "${e.name}" — make the column nullable or use 'cascade'`)}function h(e){let t=e.column;return async(n,r)=>{if(r.length===0)return;let i=p(n),a={[t]:{in:r}};if(e.onDelete===`cascade`)await i.deleteMany(a);else{let e={[t]:null};await i.updateMany(a,e)}}}let g=m.map(e=>({entity:e.entity,cleanup:h(e)}));return g.length>0&&Ie(s,g),f!==void 0&&Re(s,f),{table:s,schema:e,columnKinds:l,primaryKeyColumns:d,makeClient:p,partitionColumn:f}}function Ue(){let e=Error().stack;if(!e)return;let t=e.split(`
19
- `).slice(1);for(let e of t){if(e.includes(`/table/define.`)||e.includes(`/table/registry.`))continue;let t=e.match(/\(([^)]+)\)/)??e.match(/at (.+)$/);if(t?.[1])return t[1].trim()}}export{je as DEFAULT_LIMIT,k as DEFAULT_READ_ONLY_STATEMENT_TIMEOUT_MS,a as EXTENSION_NAME_PATTERN,W as MAX_BATCH,U as MAX_LIMIT,A as MAX_STATEMENT_TIMEOUT_MS,K as TableClient,G as TableClientError,L as WhereBuilderError,Fe as __clearDependentCleanups,n as assertValidExtensionName,Me as column,M as createDbClient,i as createExtensionStatement,xe as createListenClient,N as createReadOnlyClient,He as defineTable,Pe as getDependentCleanups,I as getMigrationStatus,ve as getQueryStats,Le as getTableCleanupDescriptors,ze as getTablePartitionColumn,B as isNonEmptyWhere,O as isQueryCounterEnabled,t as isTrackedTransaction,e as onCommit,be as parseStatementTimeoutEnv,D as queryCountingLogger,Ne as registerDependentCleanup,we as rollbackMigrations,Ce as runMigrations,ye as runWithQueryStats,Te as schemaRegistry,Q as tableRegistry,r as trackTransactions};
19
+ `)}),console.log(` ✓ Rolled back ${t.namespace}/${t.name}`)}catch(e){throw console.error(` ✗ Failed to roll back ${t.namespace}/${t.name}:`,e),e}}console.log(`Successfully rolled back ${o.length} migration${o.length===1?``:`s`}`)}const Ze=new class{schemas=new Map;register(e,t){this.schemas.set(e,t)}get(e){return this.schemas.get(e)}all(){let e={};for(let[t,n]of this.schemas.entries())e[t]=n;return e}has(e){return this.schemas.has(e)}};export{Me as DEFAULT_LIMIT,D as DEFAULT_READ_ONLY_STATEMENT_TIMEOUT_MS,Te as DEPLOY_STEPS_LOCK,Z as DEPLOY_STEPS_TABLE_NAME,Ue as DEPLOY_STEP_STATES,a as EXTENSION_NAME_PATTERN,z as MAX_BATCH,R as MAX_LIMIT,O as MAX_STATEMENT_TIMEOUT_MS,A as TOOLKIT_ADVISORY_LOCK_SPACE,V as TableClient,B as TableClientError,M as WhereBuilderError,Fe as __clearDependentCleanups,n as assertValidExtensionName,U as column,Ce as createDbClient,i as createExtensionStatement,Ke as createListenClient,we as createReadOnlyClient,X as defineTable,We as deployStepsTable,Pe as getDependentCleanups,$ as getMigrationStatus,be as getQueryStats,Le as getTableCleanupDescriptors,ze as getTablePartitionColumn,F as isNonEmptyWhere,E as isQueryCounterEnabled,t as isTrackedTransaction,e as onCommit,Se as parseStatementTimeoutEnv,T as queryCountingLogger,Ne as registerDependentCleanup,Xe as rollbackMigrations,Ye as runMigrations,xe as runWithQueryStats,Ze as schemaRegistry,J as tableRegistry,Ge as toolkitDeploySteps,r as trackTransactions,Ee as withAdvisoryLock};
20
20
  //# sourceMappingURL=index.mjs.map