@voltro/database 0.83.0 → 0.83.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.
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
- import { $ as e, $n as t, $t as n, A as r, An as i, Ar as a, At as o, B as s, Bn as c, Br as l, Bt as u, C as d, Cn as f, Cr as p, Ct as m, D as h, Dn as g, Dr as _, Dt as v, E as ee, En as te, Er as ne, Et as re, F as ie, Fn as ae, Fr as oe, Ft as se, G as ce, Gn as le, Gt as ue, H as de, Hn as fe, Hr as pe, Ht as me, I as he, In as ge, Ir as _e, J as ve, Jn as ye, Jt as be, K as xe, Kn as Se, Kt as Ce, L as we, Ln as Te, Lr as Ee, Lt as De, M as Oe, Mn as ke, Mr as Ae, Mt as je, N as Me, Nn as Ne, Nr as Pe, Nt as Fe, O as Ie, On as Le, Or as y, Ot as Re, P as ze, Pn as Be, Pr as Ve, Pt as He, Q as Ue, Qn as We, Qt as Ge, R as Ke, Rn as qe, Rr as Je, Rt as Ye, S as Xe, Sn as Ze, Sr as Qe, St as $e, T as et, Tn as tt, Tr as nt, Tt as rt, U as it, Un as at, Ut as ot, V as st, Vn as ct, Vr as b, Vt as lt, W as ut, Wn as dt, Wt as ft, X as pt, Xn as mt, Xt as ht, Y as gt, Yn as x, Yt as _t, Z as vt, Zn as yt, Zt as bt, _ as xt, _n as St, _r as Ct, _t as wt, a as Tt, an as Et, ar as Dt, at as Ot, b as kt, bn as At, br as jt, bt as Mt, c as Nt, cn as Pt, cr as Ft, ct as It, d as Lt, dn as Rt, dr as zt, dt as Bt, en as Vt, er as Ht, et as Ut, f as Wt, fn as Gt, fr as Kt, ft as qt, g as Jt, gn as Yt, gr as Xt, gt as Zt, h as Qt, hn as $t, hr as en, ht as tn, i as nn, in as rn, ir as an, it as on, j as sn, jn as cn, jr as ln, jt as un, kn as dn, kr as fn, kt as pn, l as mn, ln as hn, lr as gn, lt as _n, m as vn, mn as yn, mr as bn, mt as xn, n as Sn, nn as Cn, nr as wn, nt as Tn, o as En, on as Dn, or as On, ot as kn, p as An, pn as jn, pr as Mn, pt as Nn, q as Pn, qn as Fn, qt as In, r as Ln, rn as Rn, rr as zn, rt as Bn, s as Vn, sn as S, sr as Hn, st as Un, t as Wn, tn as Gn, tr as Kn, tt as qn, u as Jn, un as Yn, ur as Xn, ut as Zn, v as Qn, vn as $n, vr as er, vt as tr, w as nr, wn as rr, wr as ir, wt as C, x as ar, xn as or, xr as sr, xt as cr, y as lr, yn as ur, yr as dr, yt as fr, z as pr, zn as mr, zr as hr, zt as gr } from "./replaceInProgress-CncEA_Sx.js";
2
- import { a as _r, i as vr, n as yr, o as br, r as xr, s as Sr, t as Cr } from "./wire-B28cPjEp.js";
3
- import { Cause as wr, Chunk as Tr, Data as Er, Effect as w, Exit as Dr, Metric as T, MetricBoundaries as Or, Option as E, Schedule as kr, Schema as D, Stream as Ar } from "effect";
4
- import { createHash as jr } from "node:crypto";
5
- import { AsyncLocalStorage as Mr } from "node:async_hooks";
6
- import { TransactionConnection as Nr } from "@effect/sql/SqlClient";
7
- import { ansi as O } from "@voltro/logger";
8
- import { SqlClient as Pr } from "@effect/sql";
1
+ import { $ as e, $n as t, $t as n, A as r, An as i, Ar as a, At as o, B as s, Bn as c, Br as l, Bt as u, C as d, Cn as f, Cr as p, Ct as m, D as h, Dn as g, Dr as _, Dt as v, E as ee, En as te, Er as ne, Et as re, F as ie, Fn as ae, Fr as oe, Ft as se, G as ce, Gn as le, Gt as ue, H as de, Hn as fe, Hr as y, Ht as pe, I as me, In as he, Ir as ge, J as _e, Jn as ve, Jt as ye, K as be, Kn as xe, Kt as Se, L as Ce, Ln as we, Lr as Te, Lt as Ee, M as De, Mn as b, Mr as Oe, Mt as ke, N as Ae, Nn as je, Nr as Me, Nt as Ne, O as Pe, On as Fe, Or as x, Ot as Ie, P as Le, Pn as Re, Pr as S, Pt as ze, Q as Be, Qn as Ve, Qt as He, R as Ue, Rn as We, Rr as Ge, Rt as Ke, S as qe, Sn as Je, Sr as Ye, St as Xe, T as Ze, Tn as Qe, Tr as $e, Tt as et, U as tt, Un as nt, Ur as rt, Ut as it, V as at, Vn as ot, Vr as C, Vt as st, W as ct, Wn as lt, Wt as ut, X as dt, Xn as ft, Xt as pt, Y as mt, Yn as w, Yt as ht, Z as gt, Zn as _t, Zt as vt, _ as yt, _n as bt, _r as xt, _t as St, a as Ct, an as wt, ar as Tt, at as Et, b as Dt, bn as Ot, br as kt, bt as At, c as jt, cn as Mt, cr as Nt, ct as Pt, d as Ft, dn as It, dr as Lt, dt as Rt, en as zt, er as Bt, et as Vt, f as Ht, fn as Ut, fr as Wt, ft as Gt, g as Kt, gn as qt, gr as Jt, gt as Yt, h as Xt, hn as Zt, hr as Qt, ht as $t, i as en, in as tn, ir as nn, it as rn, j as an, jn as on, jr as sn, jt as cn, kn as ln, kr as un, kt as dn, l as fn, ln as pn, lr as mn, lt as hn, m as gn, mn as _n, mr as vn, mt as yn, n as bn, nn as xn, nr as Sn, nt as Cn, o as wn, on as Tn, or as En, ot as Dn, p as On, pn as kn, pr as An, pt as jn, q as Mn, qn as Nn, qt as Pn, r as Fn, rn as In, rr as Ln, rt as Rn, s as zn, sn as T, sr as Bn, st as Vn, t as Hn, tn as Un, tr as Wn, tt as Gn, u as Kn, un as qn, ur as Jn, ut as Yn, v as Xn, vn as Zn, vr as Qn, vt as $n, w as er, wn as tr, wr as nr, wt as E, x as rr, xn as ir, xr as ar, xt as or, y as sr, yn as cr, yr as lr, yt as ur, z as dr, zn as fr, zr as pr, zt as mr } from "./replaceInProgress-Z1aAw3GD.js";
2
+ import { a as hr, i as gr, n as _r, o as vr, r as yr, s as br, t as xr } from "./wire-B28cPjEp.js";
3
+ import { Cause as Sr, Chunk as Cr, Data as wr, Effect as D, Exit as Tr, Metric as O, MetricBoundaries as Er, Option as k, Schedule as Dr, Schema as A, Stream as Or } from "effect";
4
+ import { createHash as kr } from "node:crypto";
5
+ import { AsyncLocalStorage as Ar } from "node:async_hooks";
6
+ import { TransactionConnection as jr } from "@effect/sql/SqlClient";
7
+ import { ansi as j } from "@voltro/logger";
8
+ import { SqlClient as Mr } from "@effect/sql";
9
9
  //#region src/actorSnapshot.ts
10
- var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n) => {
10
+ var Nr = (e) => typeof e == "string" && e !== "" ? e : null, Pr = async (e, t, n) => {
11
11
  if (t != null && t !== "") try {
12
12
  let r = (await e.query({
13
13
  table: "actors",
@@ -23,20 +23,20 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
23
23
  }))[0];
24
24
  return r === void 0 ? void 0 : {
25
25
  id: t,
26
- type: Fr(r.kind) ?? n,
27
- displayName: Fr(r.displayName),
28
- email: Fr(r.email)
26
+ type: Nr(r.kind) ?? n,
27
+ displayName: Nr(r.displayName),
28
+ email: Nr(r.email)
29
29
  };
30
30
  } catch {
31
31
  return;
32
32
  }
33
- }, Lr = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqlite", Rr = (e) => {
33
+ }, Fr = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqlite", Ir = (e) => {
34
34
  let t = [];
35
35
  for (let [n, r] of Object.entries(e.fields)) r.type === "array" && t.push(n);
36
36
  return t;
37
- }, zr = (e, t, n) => {
38
- if (!Lr(n) || !t) return e;
39
- let r = Rr(t);
37
+ }, Lr = (e, t, n) => {
38
+ if (!Fr(n) || !t) return e;
39
+ let r = Ir(t);
40
40
  if (r.length === 0) return e;
41
41
  let i = { ...e };
42
42
  for (let e of r) {
@@ -44,9 +44,9 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
44
44
  Array.isArray(t) && (i[e] = JSON.stringify(t));
45
45
  }
46
46
  return i;
47
- }, Br = (e, t, n) => {
48
- if (!Lr(n) || !t) return e;
49
- let r = Rr(t);
47
+ }, Rr = (e, t, n) => {
48
+ if (!Fr(n) || !t) return e;
49
+ let r = Ir(t);
50
50
  return r.length === 0 ? e : e.map((e) => {
51
51
  let t;
52
52
  for (let n of r) {
@@ -58,13 +58,13 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
58
58
  }
59
59
  return t ?? e;
60
60
  });
61
- }, Vr = "enc:v1:", Hr = "enc:v2:", Ur = (e, t, n) => {
61
+ }, zr = "enc:v1:", Br = "enc:v2:", Vr = (e, t, n) => {
62
62
  let r = `${e}:${t}`, i = n == null || n === "" ? void 0 : String(n);
63
63
  return i === void 0 ? { column: r } : {
64
64
  column: r,
65
65
  row: `${r}:${i}`
66
66
  };
67
- }, Wr = (e) => typeof e == "string" && e.startsWith("enc:v2:"), Gr = class extends Error {
67
+ }, Hr = (e) => typeof e == "string" && e.startsWith("enc:v2:"), Ur = class extends Error {
68
68
  _tag = "FieldDecryptionError";
69
69
  table;
70
70
  column;
@@ -72,7 +72,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
72
72
  constructor(e) {
73
73
  super(`column "${e.table}.${e.column}" is .encrypted() but could not be decrypted (${e.reason}) — the stored value was most likely encrypted under a different key`), this.name = "FieldDecryptionError", this.table = e.table, this.column = e.column, this.reason = e.reason;
74
74
  }
75
- }, Kr = (e) => typeof e == "object" && !!e && e._tag === "FieldDecryptionError", qr = (e) => typeof e == "string" && (e.startsWith("enc:v1:") || e.startsWith("enc:v2:")), Jr = (e, t, n) => e.encrypt(JSON.stringify(t), n), Yr = /* @__PURE__ */ new Set([
75
+ }, Wr = (e) => typeof e == "object" && !!e && e._tag === "FieldDecryptionError", Gr = (e) => typeof e == "string" && (e.startsWith("enc:v1:") || e.startsWith("enc:v2:")), Kr = (e, t, n) => e.encrypt(JSON.stringify(t), n), qr = /* @__PURE__ */ new Set([
76
76
  "text",
77
77
  "id",
78
78
  "reference",
@@ -80,51 +80,51 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
80
80
  "uuid",
81
81
  "email",
82
82
  "url"
83
- ]), Xr = (e, t, n, r) => {
83
+ ]), Jr = (e, t, n, r) => {
84
84
  let i = e.decrypt(t, r), a;
85
85
  try {
86
86
  a = JSON.parse(i);
87
87
  } catch {
88
88
  return i;
89
89
  }
90
- return typeof a == "string" ? a : n === void 0 || Yr.has(n) ? i : a;
91
- }, Zr = (e, t, n, r) => {
90
+ return typeof a == "string" ? a : n === void 0 || qr.has(n) ? i : a;
91
+ }, Yr = (e, t, n, r) => {
92
92
  let i = e.decrypt(t, r);
93
93
  try {
94
- return typeof JSON.parse(i) == "string" ? !1 : n === void 0 || Yr.has(n) ? !0 : void 0;
94
+ return typeof JSON.parse(i) == "string" ? !1 : n === void 0 || qr.has(n) ? !0 : void 0;
95
95
  } catch {
96
96
  return !0;
97
97
  }
98
- }, Qr = (e, t) => e.fields[t]?.type, $r = (e) => {
98
+ }, Xr = (e, t) => e.fields[t]?.type, Zr = (e) => {
99
99
  let t = [];
100
100
  for (let [n, r] of Object.entries(e.fields)) r.encrypted === !0 && t.push(n);
101
101
  return t;
102
- }, ei = "id", ti = (e, t, n, r) => {
102
+ }, Qr = "id", $r = (e, t, n, r) => {
103
103
  if (!t) return e;
104
- let i = $r(t);
104
+ let i = Zr(t);
105
105
  if (i.length === 0) return e;
106
- let a = t.tableName ?? "?", o = r ?? e[ei], s = { ...e };
106
+ let a = t.tableName ?? "?", o = r ?? e[Qr], s = { ...e };
107
107
  for (let e of i) {
108
108
  let t = s[e];
109
- if (!(t == null || qr(t))) {
109
+ if (!(t == null || Gr(t))) {
110
110
  if (!n) throw Error(`column "${a}.${e}" is .encrypted() but no field cipher is registered — set VOLTRO_FIELD_ENCRYPTION_KEY (\`voltro dev\` mints one; \`voltro serve\` refuses to boot without it); in a test, pass \`fieldEncryptionKey\` to makeTestContext`);
111
- s[e] = Jr(n, t, Ur(a, e, o));
111
+ s[e] = Kr(n, t, Vr(a, e, o));
112
112
  }
113
113
  }
114
114
  return s;
115
- }, ni = (e, t, n, r) => {
115
+ }, ei = (e, t, n, r) => {
116
116
  if (!t) return e;
117
- let i = $r(t);
117
+ let i = Zr(t);
118
118
  if (i.length === 0 || !n) return e;
119
119
  let a = r?.onError ?? "throw", o = t.tableName ?? "?";
120
120
  return e.map((e) => {
121
121
  let s;
122
122
  for (let c of i) {
123
123
  let i = e[c];
124
- if (qr(i)) {
124
+ if (Gr(i)) {
125
125
  s ??= { ...e };
126
126
  try {
127
- s[c] = Xr(n, i, Qr(t, c), Ur(o, c, r?.rowId ?? e[ei]));
127
+ s[c] = Jr(n, i, Xr(t, c), Vr(o, c, r?.rowId ?? e[Qr]));
128
128
  } catch (e) {
129
129
  let t = String(e?.message ?? e);
130
130
  if (a === "null") {
@@ -135,7 +135,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
135
135
  });
136
136
  continue;
137
137
  }
138
- throw new Gr({
138
+ throw new Ur({
139
139
  table: o,
140
140
  column: c,
141
141
  reason: t
@@ -145,77 +145,77 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
145
145
  }
146
146
  return s ?? e;
147
147
  });
148
- }, ri = Symbol.for("@voltro/database/storeRefusal"), ii = (e) => {
149
- let t = x(e.detail);
150
- return Object.defineProperty(t, ri, {
148
+ }, ti = Symbol.for("@voltro/database/storeRefusal"), ni = (e) => {
149
+ let t = w(e.detail);
150
+ return Object.defineProperty(t, ti, {
151
151
  value: e,
152
152
  enumerable: !1
153
153
  }), t;
154
- }, ai = (e) => {
155
- for (let t of yt(e)) {
154
+ }, ri = (e) => {
155
+ for (let t of _t(e)) {
156
156
  let e = t;
157
157
  for (let t = 0; e != null && t < 8; t += 1) {
158
- let t = e[ri];
158
+ let t = e[ti];
159
159
  if (t !== void 0) return t;
160
160
  e = e.cause;
161
161
  }
162
162
  }
163
- }, oi = (e) => {
163
+ }, ii = (e) => {
164
164
  let t = (() => {
165
165
  switch (e.type) {
166
- case "id": return e.idScheme?.kind === "numeric" ? D.Number : D.String;
166
+ case "id": return e.idScheme?.kind === "numeric" ? A.Number : A.String;
167
167
  case "text":
168
- case "enum": return D.String;
169
- case "reference": return e.referenceStorage === "numeric" ? D.Number : D.String;
168
+ case "enum": return A.String;
169
+ case "reference": return e.referenceStorage === "numeric" ? A.Number : A.String;
170
170
  case "integer":
171
171
  case "real":
172
- case "decimal": return D.Number;
173
- case "boolean": return D.Boolean;
172
+ case "decimal": return A.Number;
173
+ case "boolean": return A.Boolean;
174
174
  case "timestamp":
175
- case "date": return Cr;
176
- case "bigint": return D.BigInt;
177
- case "bytes": return D.Uint8ArrayFromBase64;
178
- case "array": return D.Array(D.Unknown);
179
- case "interval": return D.String;
180
- default: return D.Unknown;
175
+ case "date": return xr;
176
+ case "bigint": return A.BigInt;
177
+ case "bytes": return A.Uint8ArrayFromBase64;
178
+ case "array": return A.Array(A.Unknown);
179
+ case "interval": return A.String;
180
+ default: return A.Unknown;
181
181
  }
182
182
  })();
183
- return e.nullable === !0 ? D.NullOr(t) : t;
184
- }, si = (e, t) => {
183
+ return e.nullable === !0 ? A.NullOr(t) : t;
184
+ }, ai = (e, t) => {
185
185
  let n = new Set(t?.omit ?? []), r = {};
186
- for (let [t, i] of Object.entries(e.fields)) n.has(t) || (r[t] = oi(i));
187
- return D.Struct(r);
188
- }, ci = (e) => typeof e == "function" ? e : () => e, li = (e, t) => ({
186
+ for (let [t, i] of Object.entries(e.fields)) n.has(t) || (r[t] = ii(i));
187
+ return A.Struct(r);
188
+ }, oi = (e) => typeof e == "function" ? e : () => e, si = (e, t) => ({
189
189
  kind: "one",
190
- target: ci(e),
190
+ target: oi(e),
191
191
  ...t?.foreignKey === void 0 ? {} : { foreignKey: t.foreignKey },
192
192
  ...t?.sourceKey === void 0 ? {} : { sourceKey: t.sourceKey }
193
- }), ui = (e, t) => ({
193
+ }), ci = (e, t) => ({
194
194
  kind: "many",
195
- target: ci(e),
195
+ target: oi(e),
196
196
  ...t?.foreignKey === void 0 ? {} : { foreignKey: t.foreignKey },
197
197
  ...t?.sourceKey === void 0 ? {} : { sourceKey: t.sourceKey }
198
- }), di = (e, t) => ({
198
+ }), li = (e, t) => ({
199
199
  kind: "manyToMany",
200
- target: ci(e),
201
- through: ci(t.through),
200
+ target: oi(e),
201
+ through: oi(t.through),
202
202
  sourceKey: t.sourceKey,
203
203
  targetKey: t.targetKey
204
- }), fi = {
205
- one: li,
206
- many: ui,
207
- manyToMany: di
208
- }, pi = (e, t) => {
204
+ }), ui = {
205
+ one: si,
206
+ many: ci,
207
+ manyToMany: li
208
+ }, di = (e, t) => {
209
209
  let n = typeof e == "function" ? e : () => e;
210
210
  return {
211
211
  source: n,
212
- relations: t(fi, n())
212
+ relations: t(ui, n())
213
213
  };
214
- }, mi = (e) => {
214
+ }, fi = (e) => {
215
215
  if (typeof e != "object" || !e) return !1;
216
216
  let t = e;
217
217
  return typeof t.source != "function" || typeof t.relations != "object" || t.relations === null ? !1 : Object.keys(t.relations).length === 0;
218
- }, hi = (e) => {
218
+ }, pi = (e) => {
219
219
  if (typeof e != "object" || !e) return !1;
220
220
  let t = e;
221
221
  if (typeof t.source != "function" || typeof t.relations != "object" || t.relations === null) return !1;
@@ -224,35 +224,35 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
224
224
  let t = e?.kind;
225
225
  return t === "one" || t === "many" || t === "manyToMany";
226
226
  });
227
- }, gi = li, _i = ui, vi = di, k = (e, t, n) => {
227
+ }, mi = si, hi = ci, gi = li, _i = (e, t, n) => {
228
228
  let r = [];
229
229
  for (let [n, i] of Object.entries(e.fields)) i.type === "reference" && i.references?.()?.tableName === t && r.push(n);
230
- if (r.length === 0) throw x(`relation '${n}': no reference() column on '${e.tableName}' points at '${t}'. Either add one or pass an explicit { foreignKey: '<column>' }.`);
231
- if (r.length > 1) throw x(`relation '${n}': multiple reference() columns on '${e.tableName}' point at '${t}' (${r.join(", ")}). Pass an explicit { foreignKey: '<column>' } to disambiguate.`);
230
+ if (r.length === 0) throw w(`relation '${n}': no reference() column on '${e.tableName}' points at '${t}'. Either add one or pass an explicit { foreignKey: '<column>' }.`);
231
+ if (r.length > 1) throw w(`relation '${n}': multiple reference() columns on '${e.tableName}' point at '${t}' (${r.join(", ")}). Pass an explicit { foreignKey: '<column>' } to disambiguate.`);
232
232
  return r[0];
233
- }, yi = (e) => Object.keys(e.fields), A = (e, t) => Object.prototype.hasOwnProperty.call(e.fields, t), bi = (e) => {
234
- let t = yi(e);
233
+ }, vi = (e) => Object.keys(e.fields), yi = (e, t) => Object.prototype.hasOwnProperty.call(e.fields, t), bi = (e) => {
234
+ let t = vi(e);
235
235
  return t.length === 0 ? "<none>" : t.join(", ");
236
236
  }, xi = (e, t, n) => {
237
237
  let r = `relation '${t}' on '${e.tableName}'`, i = n.target();
238
238
  if (n.kind === "manyToMany") {
239
239
  let t = n.through();
240
- for (let [a, o] of [["sourceKey", n.sourceKey], ["targetKey", n.targetKey]]) if (!A(t, o)) throw x(`${r}: manyToMany ${a} '${o}' is not a column on the junction table '${t.tableName}'. Both keys name columns on the JUNCTION — ${a === "sourceKey" ? `sourceKey points at '${e.tableName}'` : `targetKey points at '${i.tableName}'`}. Columns on '${t.tableName}': ${bi(t)}.`);
240
+ for (let [a, o] of [["sourceKey", n.sourceKey], ["targetKey", n.targetKey]]) if (!yi(t, o)) throw w(`${r}: manyToMany ${a} '${o}' is not a column on the junction table '${t.tableName}'. Both keys name columns on the JUNCTION — ${a === "sourceKey" ? `sourceKey points at '${e.tableName}'` : `targetKey points at '${i.tableName}'`}. Columns on '${t.tableName}': ${bi(t)}.`);
241
241
  return;
242
242
  }
243
- if (n.sourceKey !== void 0 && n.foreignKey !== void 0) throw x(`${r}: pass EITHER sourceKey OR foreignKey, not both. sourceKey '${n.sourceKey}' names a column on the source ('${e.tableName}') holding the target's id; foreignKey '${n.foreignKey}' names a column on the target ('${i.tableName}') holding the source's id. With both, foreignKey is ignored.`);
244
- if (n.sourceKey !== void 0 && !A(e, n.sourceKey)) {
245
- let t = A(i, n.sourceKey);
246
- throw x(`${r}: sourceKey '${n.sourceKey}' is not a column on the source table '${e.tableName}'.` + (t ? ` It IS a column on the target '${i.tableName}' — you probably want { foreignKey: '${n.sourceKey}' }, which names the column on the TARGET that holds this table's id.` : ` Columns on '${e.tableName}': ${bi(e)}.`));
243
+ if (n.sourceKey !== void 0 && n.foreignKey !== void 0) throw w(`${r}: pass EITHER sourceKey OR foreignKey, not both. sourceKey '${n.sourceKey}' names a column on the source ('${e.tableName}') holding the target's id; foreignKey '${n.foreignKey}' names a column on the target ('${i.tableName}') holding the source's id. With both, foreignKey is ignored.`);
244
+ if (n.sourceKey !== void 0 && !yi(e, n.sourceKey)) {
245
+ let t = yi(i, n.sourceKey);
246
+ throw w(`${r}: sourceKey '${n.sourceKey}' is not a column on the source table '${e.tableName}'.` + (t ? ` It IS a column on the target '${i.tableName}' — you probably want { foreignKey: '${n.sourceKey}' }, which names the column on the TARGET that holds this table's id.` : ` Columns on '${e.tableName}': ${bi(e)}.`));
247
247
  }
248
- if (n.foreignKey !== void 0 && !A(i, n.foreignKey)) {
249
- let t = A(e, n.foreignKey);
250
- throw x(`${r}: foreignKey '${n.foreignKey}' is not a column on the target table '${i.tableName}'.` + (t ? ` It IS a column on the source '${e.tableName}' — you want { sourceKey: '${n.foreignKey}' }. foreignKey names the column on the TARGET that points back at this table; sourceKey names the column on THIS table that holds the target's id.` : ` Columns on '${i.tableName}': ${bi(i)}.`));
248
+ if (n.foreignKey !== void 0 && !yi(i, n.foreignKey)) {
249
+ let t = yi(e, n.foreignKey);
250
+ throw w(`${r}: foreignKey '${n.foreignKey}' is not a column on the target table '${i.tableName}'.` + (t ? ` It IS a column on the source '${e.tableName}' — you want { sourceKey: '${n.foreignKey}' }. foreignKey names the column on the TARGET that points back at this table; sourceKey names the column on THIS table that holds the target's id.` : ` Columns on '${i.tableName}': ${bi(i)}.`));
251
251
  }
252
- }, Si = Symbol.for("@voltro/database/relationsRegistry"), Ci = globalThis, j = Ci[Si] ?? (Ci[Si] = /* @__PURE__ */ new Map()), wi = (e) => {
253
- let t = e.source(), n = j.get(t.tableName);
252
+ }, Si = Symbol.for("@voltro/database/relationsRegistry"), Ci = globalThis, M = Ci[Si] ?? (Ci[Si] = /* @__PURE__ */ new Map()), wi = (e) => {
253
+ let t = e.source(), n = M.get(t.tableName);
254
254
  if (n === void 0) {
255
- j.set(t.tableName, new Map(Object.entries(e.relations)));
255
+ M.set(t.tableName, new Map(Object.entries(e.relations)));
256
256
  return;
257
257
  }
258
258
  for (let [r, i] of Object.entries(e.relations)) {
@@ -264,26 +264,26 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
264
264
  }
265
265
  }, Ti = (e) => {
266
266
  let t = 0;
267
- for (let n of Object.values(e)) hi(n) && (wi(n), t += 1);
267
+ for (let n of Object.values(e)) pi(n) && (wi(n), t += 1);
268
268
  return t;
269
269
  }, Ei = (e) => {
270
- let t = j.get(e);
270
+ let t = M.get(e);
271
271
  if (t !== void 0) return Object.fromEntries(t);
272
- }, Di = (e, t) => j.get(e)?.get(t), Oi = () => {
272
+ }, Di = (e, t) => M.get(e)?.get(t), Oi = () => {
273
273
  let e = [];
274
- for (let [t, n] of j) for (let [r, i] of n) e.push({
274
+ for (let [t, n] of M) for (let [r, i] of n) e.push({
275
275
  source: t,
276
276
  name: r,
277
277
  relation: i
278
278
  });
279
279
  return e;
280
280
  }, ki = () => {
281
- for (let [e, t] of j) {
282
- let n = or(e);
281
+ for (let [e, t] of M) {
282
+ let n = ir(e);
283
283
  if (n !== void 0) for (let [e, r] of t) xi(n, e, r);
284
284
  }
285
285
  }, Ai = () => {
286
- j.clear();
286
+ M.clear();
287
287
  }, ji = 4, Mi = (e) => Object.keys(e.fields), Ni = (e, t) => Object.prototype.hasOwnProperty.call(e.fields, t), Pi = (e, t) => {
288
288
  let n = [];
289
289
  for (let [r, i] of Object.entries(e.fields)) i.type === "reference" && i.references?.()?.tableName === t && n.push(r);
@@ -336,7 +336,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
336
336
  }
337
337
  return n;
338
338
  }, Li = (e) => `${e.table}\u0000${e.hops.map((e) => `${e.table}.${e.foreignKey}<-${e.parentKey}`).join("|")}`, Ri = (e) => {
339
- let t = e.tables ?? $n(), n = e.relations ?? Oi(), r = e.maxDepth ?? 4, i = new Set(e.exclude ?? []), a = new Map(t.map((e) => [e.tableName, e])), o = [];
339
+ let t = e.tables ?? Zn(), n = e.relations ?? Oi(), r = e.maxDepth ?? 4, i = new Set(e.exclude ?? []), a = new Map(t.map((e) => [e.tableName, e])), o = [];
340
340
  if (!a.has(e.subjectTable)) return {
341
341
  subjectTable: e.subjectTable,
342
342
  paths: [],
@@ -409,7 +409,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
409
409
  return t.push(""), t.push(" WHAT THIS CANNOT SEE — a DSAR is only as complete as this list is short:"), n.length > 0 && t.push(` depth-truncated (${n.length}): ${n.map((e) => e.table).join(", ")}`), i.length > 0 && t.push(` excluded (${i.length}): ${[...new Set(i.map((e) => e.table))].join(", ")}`), t.push(r.length === 0 ? " unreachable: none — every registered table is linked to the subject." : ` unreachable (${r.length}): ${r.map((e) => e.table).join(", ")}`), t.push(" Always outside this graph: object storage / uploaded files, external processors,"), t.push(" log and metric sinks, backups, and any subject id embedded in JSON or free text."), t.join("\n");
410
410
  }, Bi = (e) => Object.fromEntries(Object.entries(e.updateValues ?? {}).filter(([t, n]) => {
411
411
  if (n === void 0) return !1;
412
- if (t === "id" || e.conflictColumns.includes(t)) throw x(`upsert: updateValues cannot rewrite row identity column '${t}'`);
412
+ if (t === "id" || e.conflictColumns.includes(t)) throw w(`upsert: updateValues cannot rewrite row identity column '${t}'`);
413
413
  return !0;
414
414
  })), Vi = (e, t, n) => {
415
415
  let r = Bi(n);
@@ -430,13 +430,13 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
430
430
  let r = new Set(Hi(e).map(([e]) => e)), i = t.split(".")[0];
431
431
  return Object.fromEntries(Object.entries(n ?? {}).filter(([e, t]) => {
432
432
  if (t === void 0) return !1;
433
- if (r.has(e) || e === i) throw x(`patchJson: additionalPatch cannot rewrite the primary key or patched JSON column '${e}'`);
433
+ if (r.has(e) || e === i) throw w(`patchJson: additionalPatch cannot rewrite the primary key or patched JSON column '${e}'`);
434
434
  return !0;
435
435
  }));
436
- }, M = (e) => typeof e == "object" && !!e && !Array.isArray(e), Ki = (e) => JSON.parse(JSON.stringify(e ?? null)), qi = (e, t, n) => {
437
- let [r, ...i] = t.split("."), a = Ki(n), o = e[r], s = (e, t) => {
436
+ }, Ki = (e) => typeof e == "object" && !!e && !Array.isArray(e), qi = (e) => JSON.parse(JSON.stringify(e ?? null)), Ji = (e, t, n) => {
437
+ let [r, ...i] = t.split("."), a = qi(n), o = e[r], s = (e, t) => {
438
438
  if (t === i.length) return a;
439
- let n = M(e) ? e : {}, r = i[t], o = Object.hasOwn(n, r) ? n[r] : void 0;
439
+ let n = Ki(e) ? e : {}, r = i[t], o = Object.hasOwn(n, r) ? n[r] : void 0;
440
440
  return {
441
441
  ...n,
442
442
  [r]: s(o, t + 1)
@@ -444,14 +444,14 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
444
444
  };
445
445
  return {
446
446
  ...e,
447
- [r]: i.length === 0 ? M(o) && M(a) ? {
447
+ [r]: i.length === 0 ? Ki(o) && Ki(a) ? {
448
448
  ...o,
449
449
  ...a
450
450
  } : a : s(o, 0)
451
451
  };
452
- }, Ji = (e, t, n, r, i) => {
453
- let [a, ...o] = n.split("."), s = i ?? e`${e(a)}`, c = Ki(r), l = (e) => /["\\\u0000-\u001f]/.test(e);
454
- if ((t === "sqlite" || t === "turso") && (o.some(l) || o.length === 0 && M(c) && Object.keys(c).some(l))) {
452
+ }, Yi = (e, t, n, r, i) => {
453
+ let [a, ...o] = n.split("."), s = i ?? e`${e(a)}`, c = qi(r), l = (e) => /["\\\u0000-\u001f]/.test(e);
454
+ if ((t === "sqlite" || t === "turso") && (o.some(l) || o.length === 0 && Ki(c) && Object.keys(c).some(l))) {
455
455
  let t = 0, n = (t) => e`CASE WHEN (SELECT _voltro_json_escape_probe.key FROM json_each(${String.raw`{"\u0061":0}`}) AS _voltro_json_escape_probe) = ${String.raw`\u0061`}
456
456
  THEN json_extract('"' || replace(${t}.key, '"', ${String.raw`\"`}) || '"', '$')
457
457
  ELSE ${t}.key END`, r = (r) => {
@@ -493,7 +493,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
493
493
  return t === "mysql" || t === "mariadb" ? e`JSON_SET(${n}, ${o}, JSON_EXTRACT(${i}, '$'))` : t === "mssql" ? a === null ? e`JSON_MODIFY(JSON_MODIFY(${n}, ${o}, 0), ${`strict ${o}`}, NULL)` : typeof a == "boolean" ? e`JSON_MODIFY(${n}, ${o}, CAST(${+!!a} AS bit))` : typeof a == "string" || typeof a == "number" ? e`JSON_MODIFY(${n}, ${o}, ${a})` : e`JSON_MODIFY(${n}, ${o}, JSON_QUERY(${i}))` : e`json_set(${n}, ${o}, json(${i}))`;
494
494
  }, v;
495
495
  if (o.length === 0) {
496
- if (!M(c)) v = g(c);
496
+ if (!Ki(c)) v = g(c);
497
497
  else {
498
498
  v = h([]);
499
499
  for (let [e, t] of Object.entries(c)) v = _(v, [e], g(t), t);
@@ -507,55 +507,55 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
507
507
  v = _(v, o, g(c), c);
508
508
  }
509
509
  return e`${e(a)} = ${v}`;
510
- }, Yi = class extends Error {
510
+ }, Xi = class extends Error {
511
511
  _tag = "EagerCardinalityError";
512
512
  constructor(e) {
513
513
  super(e), this.name = "EagerCardinalityError";
514
514
  }
515
- }, Xi = (e) => {
515
+ }, Zi = (e) => {
516
516
  let { relationName: t, sourceTableName: n, targetTableName: r, foreignKey: i, sourceKey: a } = e, o = r === n;
517
517
  return `relation '${t}' on '${n}' is declared \`one\`, but ${r}.${i} matches MORE than one row for the same ${n}.${a} — so there is no single related row to return.` + (o ? ` Because this relation is self-referential, check which side the key is on: \`foreignKey: '${i}'\` means "rows whose ${i} points AT me" (my children — there can be many). If you meant "the row my ${i} points to" (my parent), that is \`sourceKey: '${i}'\`.` : " Use `many(...)` if several are expected, or narrow the key.");
518
- }, Zi = async (e, t, n, r) => {
518
+ }, Qi = async (e, t, n, r) => {
519
519
  if (e.length === 0) return e;
520
520
  let i = Ei(n.tableName);
521
- if (i === void 0) throw x(`cannot eager-load on '${n.tableName}': no relations registered. Did you forget to declare \`relations(${n.tableName}, ...)\` or import the file that does?`);
521
+ if (i === void 0) throw w(`cannot eager-load on '${n.tableName}': no relations registered. Did you forget to declare \`relations(${n.tableName}, ...)\` or import the file that does?`);
522
522
  let a = e.map((e) => ({ ...e }));
523
523
  for (let [e, o] of Object.entries(t)) {
524
524
  let t = i[e];
525
525
  if (t === void 0) {
526
526
  let t = Object.keys(i).join(", ") || "<none>";
527
- throw x(`unknown relation '${e}' on '${n.tableName}'. Registered relations: ${t}.`);
527
+ throw w(`unknown relation '${e}' on '${n.tableName}'. Registered relations: ${t}.`);
528
528
  }
529
- xi(n, e, t), await Qi(a, e, t, o === !0 ? {} : o, n, r);
529
+ xi(n, e, t), await $i(a, e, t, o === !0 ? {} : o, n, r);
530
530
  }
531
531
  return a;
532
- }, Qi = async (e, t, n, r, i, a) => {
532
+ }, $i = async (e, t, n, r, i, a) => {
533
533
  switch (n.kind) {
534
534
  case "one":
535
- await $i(e, t, n, r, i, a);
535
+ await ea(e, t, n, r, i, a);
536
536
  return;
537
537
  case "many":
538
- await ea(e, t, n, r, i, a);
538
+ await ta(e, t, n, r, i, a);
539
539
  return;
540
540
  case "manyToMany":
541
- await na(e, t, n, r, i, a);
541
+ await ra(e, t, n, r, i, a);
542
542
  return;
543
543
  }
544
- }, $i = async (e, t, n, r, i, a) => {
545
- let o = n.target(), s = n.sourceKey ?? ra(i, o.tableName);
544
+ }, ea = async (e, t, n, r, i, a) => {
545
+ let o = n.target(), s = n.sourceKey ?? ia(i, o.tableName);
546
546
  if (s !== void 0) {
547
- let n = N(e, s), i = n.length === 0 ? [] : await ia(o, "id", n, r, a), c = new Map(i.map((e) => [e.id, e]));
547
+ let n = N(e, s), i = n.length === 0 ? [] : await aa(o, "id", n, r, a), c = new Map(i.map((e) => [e.id, e]));
548
548
  for (let n of e) {
549
549
  let e = n[s];
550
550
  n[t] = e == null ? null : c.get(e) ?? null;
551
551
  }
552
- await aa(i, r.with, o, a);
552
+ await oa(i, r.with, o, a);
553
553
  return;
554
554
  }
555
- let c = n.foreignKey ?? k(o, i.tableName, t), l = n.sourceKey ?? "id", u = N(e, l), d = u.length === 0 ? [] : await ia(o, c, u, r, a), f = /* @__PURE__ */ new Map();
555
+ let c = n.foreignKey ?? _i(o, i.tableName, t), l = n.sourceKey ?? "id", u = N(e, l), d = u.length === 0 ? [] : await aa(o, c, u, r, a), f = /* @__PURE__ */ new Map();
556
556
  for (let e of d) {
557
557
  let n = e[c];
558
- if (f.has(n)) throw new Yi(Xi({
558
+ if (f.has(n)) throw new Xi(Zi({
559
559
  relationName: t,
560
560
  sourceTableName: i.tableName,
561
561
  targetTableName: o.tableName,
@@ -568,9 +568,9 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
568
568
  let e = n[l];
569
569
  n[t] = e == null ? null : f.get(e) ?? null;
570
570
  }
571
- await aa(d, r.with, o, a);
572
- }, ea = async (e, t, n, r, i, a) => {
573
- let o = n.target(), s = n.foreignKey ?? k(o, i.tableName, t), c = n.sourceKey ?? "id", l = N(e, c), u = ta(r), d = l.length === 0 ? [] : await ia(o, s, l, u, a), f = /* @__PURE__ */ new Map();
571
+ await oa(d, r.with, o, a);
572
+ }, ta = async (e, t, n, r, i, a) => {
573
+ let o = n.target(), s = n.foreignKey ?? _i(o, i.tableName, t), c = n.sourceKey ?? "id", l = N(e, c), u = na(r), d = l.length === 0 ? [] : await aa(o, s, l, u, a), f = /* @__PURE__ */ new Map();
574
574
  for (let e of d) {
575
575
  let t = e[s], n = f.get(t);
576
576
  n ? n.push(e) : f.set(t, [e]);
@@ -586,11 +586,11 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
586
586
  let e = n[c];
587
587
  n[t] = f.get(e) ?? [];
588
588
  }
589
- await aa(d, r.with, o, a);
590
- }, ta = (e) => {
589
+ await oa(d, r.with, o, a);
590
+ }, na = (e) => {
591
591
  let { limit: t, offset: n, ...r } = e;
592
592
  return r;
593
- }, na = async (e, t, n, r, i, a) => {
593
+ }, ra = async (e, t, n, r, i, a) => {
594
594
  let o = n.target(), s = n.through(), c = N(e, "id");
595
595
  if (c.length === 0) {
596
596
  for (let n of e) n[t] = [];
@@ -612,9 +612,9 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
612
612
  for (let n of e) n[t] = [];
613
613
  return;
614
614
  }
615
- let f = await ia(o, "id", N(d, n.targetKey), r, a), p = new Map(f.map((e) => [e.id, e]));
616
- await aa(f, r.with, o, a);
617
- let m = r.junction === void 0 ? void 0 : r.junction === !0 ? Object.keys(s.fields) : r.junction, h = /* @__PURE__ */ new Map();
615
+ let f = await aa(o, "id", N(d, n.targetKey), r, a), p = new Map(f.map((e) => [e.id, e]));
616
+ await oa(f, r.with, o, a);
617
+ let m = r.junction === void 0 ? void 0 : r.junction === !0 ? S(s) : r.junction, h = /* @__PURE__ */ new Map();
618
618
  for (let e of d) {
619
619
  let t = e[n.sourceKey], r = e[n.targetKey], i = p.get(r);
620
620
  if (i === void 0) continue;
@@ -625,7 +625,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
625
625
  o ? o.push(a) : h.set(t, [a]);
626
626
  }
627
627
  for (let n of e) n[t] = h.get(n.id) ?? [];
628
- }, ra = (e, t) => {
628
+ }, ia = (e, t) => {
629
629
  for (let [n, r] of Object.entries(e.fields)) if (r.type === "reference" && r.references?.()?.tableName === t) return n;
630
630
  }, N = (e, t) => {
631
631
  let n = /* @__PURE__ */ new Set();
@@ -634,7 +634,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
634
634
  e != null && n.add(e);
635
635
  }
636
636
  return [...n];
637
- }, ia = (e, t, n, r, i) => {
637
+ }, aa = (e, t, n, r, i) => {
638
638
  let a = {
639
639
  column: t,
640
640
  op: "in",
@@ -648,12 +648,12 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
648
648
  skip: r.offset,
649
649
  projection: void 0
650
650
  });
651
- }, aa = async (e, t, n, r) => {
652
- t !== void 0 && e.length !== 0 && (await Zi(e, t, n, r)).forEach((t, n) => {
651
+ }, oa = async (e, t, n, r) => {
652
+ t !== void 0 && e.length !== 0 && (await Qi(e, t, n, r)).forEach((t, n) => {
653
653
  let r = e[n];
654
654
  for (let [e, n] of Object.entries(t)) e in r || (r[e] = n);
655
655
  });
656
- }, oa = (e) => e.eager !== void 0 && Object.keys(e.eager).length > 0, sa = (e, t, n) => {
656
+ }, sa = (e) => e.eager !== void 0 && Object.keys(e.eager).length > 0, ca = (e, t, n) => {
657
657
  if (e.eager === void 0) return null;
658
658
  let r = ua(e.table, e.eager, e.sourceTable);
659
659
  if (r === null) return null;
@@ -662,14 +662,14 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
662
662
  fragment: i,
663
663
  decode: ba(r, n)
664
664
  };
665
- }, ca = (e) => e.relation.kind === "one" && e.fkSide === "target", la = (e) => ({
665
+ }, P = (e) => e.relation.kind === "one" && e.fkSide === "target", la = (e) => ({
666
666
  ...e,
667
667
  branch: {
668
668
  ...e.branch,
669
669
  limit: 2
670
670
  }
671
671
  }), ua = (e, t, n) => {
672
- let r = n ?? rr(e), i = Ei(e);
672
+ let r = n ?? tr(e), i = Ei(e);
673
673
  if (i === void 0) return null;
674
674
  let a = [];
675
675
  for (let [e, n] of Object.entries(t)) {
@@ -690,12 +690,12 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
690
690
  let r = t.sourceKey ?? ha(n, i.tableName);
691
691
  if (r !== void 0) o = r, s = "source";
692
692
  else try {
693
- o = t.foreignKey ?? k(i, n.tableName, e), s = "target";
693
+ o = t.foreignKey ?? _i(i, n.tableName, e), s = "target";
694
694
  } catch {
695
695
  return null;
696
696
  }
697
697
  } else try {
698
- o = t.foreignKey ?? k(i, n.tableName, e), s = "target";
698
+ o = t.foreignKey ?? _i(i, n.tableName, e), s = "target";
699
699
  } catch {
700
700
  return null;
701
701
  }
@@ -726,12 +726,12 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
726
726
  };
727
727
  }, fa = (e, t) => {
728
728
  if (e.kind !== "manyToMany" || t.junction === void 0) return;
729
- let n = e.through(), r = t.junction === !0 ? Object.keys(n.fields) : t.junction, i = r.filter((e) => e in n.fields);
729
+ let n = e.through(), r = S(n), i = t.junction === !0 ? r : t.junction, a = i.filter((e) => r.includes(e));
730
730
  return {
731
731
  through: n,
732
- requested: r,
733
- present: i,
734
- dateColumns: i.filter((e) => {
732
+ requested: i,
733
+ present: a,
734
+ dateColumns: a.filter((e) => {
735
735
  let t = n.fields[e];
736
736
  return t !== void 0 && (t.type === "timestamp" || t.type === "date");
737
737
  })
@@ -764,7 +764,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
764
764
  let r = [], i = [];
765
765
  for (let [t, n] of Object.entries(e.fields)) (n.type === "timestamp" || n.type === "date") && r.push(t), n.type === "vector" && i.push(t);
766
766
  let a = t.map((e) => {
767
- let t = xa(e.target, e.children, n), r = e.relation.kind === "one", i = ca(e), a = i ? Xi({
767
+ let t = xa(e.target, e.children, n), r = e.relation.kind === "one", i = P(e), a = i ? Zi({
768
768
  relationName: e.relationName,
769
769
  sourceTableName: e.source.tableName,
770
770
  targetTableName: e.target.tableName,
@@ -795,7 +795,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
795
795
  }
796
796
  if (e.fromOverFetch) {
797
797
  let r = n;
798
- if (r.length > 1) throw new Yi(e.cardinalityMessage);
798
+ if (r.length > 1) throw new Xi(e.cardinalityMessage);
799
799
  t[e.name] = r.length === 0 ? null : e.decode(r[0]);
800
800
  continue;
801
801
  }
@@ -823,67 +823,67 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
823
823
  };
824
824
  }, Ca = (e, t, n) => {
825
825
  let r = n.sql, i = n.nextAlias(), a = r(t.table.tableName), o = r(i), s = wa(i, t.children, n);
826
- return s === null ? null : r`SELECT ${s} AS "__row" FROM ${a} AS ${o}${e.predicate ? r` WHERE ${z(e.predicate, i, r)}` : r``}${S(e).length > 0 ? r` ORDER BY ${r.csv(S(e).map((e) => e.direction === "desc" ? r`${I(i, e.column, r)} DESC` : r`${I(i, e.column, r)} ASC`))}` : r``}${e.take === void 0 ? r`` : r` LIMIT ${R(e.take, r)}`}${e.skip === void 0 ? r`` : r` OFFSET ${R(e.skip, r)}`}`;
826
+ return s === null ? null : r`SELECT ${s} AS "__row" FROM ${a} AS ${o}${e.predicate ? r` WHERE ${B(e.predicate, i, r)}` : r``}${T(e).length > 0 ? r` ORDER BY ${r.csv(T(e).map((e) => e.direction === "desc" ? r`${L(i, e.column, r)} DESC` : r`${L(i, e.column, r)} ASC`))}` : r``}${e.take === void 0 ? r`` : r` LIMIT ${z(e.take, r)}`}${e.skip === void 0 ? r`` : r` OFFSET ${z(e.skip, r)}`}`;
827
827
  }, wa = (e, t, n, r) => {
828
- let i = n.sql, a = r === void 0 ? i`to_jsonb(${i(e)}.*)` : i`(to_jsonb(${i(e)}.*) - ${L(ma, i)}::text)`;
828
+ let i = n.sql, a = r === void 0 ? i`to_jsonb(${i(e)}.*)` : i`(to_jsonb(${i(e)}.*) - ${R(ma, i)}::text)`;
829
829
  if (t.length === 0 && r === void 0) return a;
830
830
  let o = [];
831
- r !== void 0 && o.push(i`${L("_junction", i)}, ${I(e, ma, i)}`);
831
+ r !== void 0 && o.push(i`${R("_junction", i)}, ${L(e, ma, i)}`);
832
832
  for (let r of t) {
833
833
  let t = Ta(r, e, n);
834
834
  if (t === null) return null;
835
- o.push(i`${L(r.relationName, i)}, ${t}`);
835
+ o.push(i`${R(r.relationName, i)}, ${t}`);
836
836
  }
837
837
  return i`${a} || jsonb_build_object(${i.csv(o)})`;
838
838
  }, Ta = (e, t, n) => {
839
839
  switch (e.relation.kind) {
840
- case "one": return ca(e) ? Da(la(e), t, n) : Ea(e, t, n);
840
+ case "one": return P(e) ? Da(la(e), t, n) : Ea(e, t, n);
841
841
  case "many": return Da(e, t, n);
842
842
  case "manyToMany": return Oa(e, t, n);
843
843
  }
844
844
  }, Ea = (e, t, n) => {
845
845
  let r = n.sql, i = n.nextAlias(), a = wa(i, e.children, n);
846
846
  if (a === null) return null;
847
- let o = e.fkSide === "source" ? r`${I(i, "id", r)} = ${I(t, e.foreignKey, r)}` : r`${I(i, e.foreignKey, r)} = ${I(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${z(e.branch.where, i, r)}`, c = P(i, e.branch.orderBy, r);
847
+ let o = e.fkSide === "source" ? r`${L(i, "id", r)} = ${L(t, e.foreignKey, r)}` : r`${L(i, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${B(e.branch.where, i, r)}`, c = F(i, e.branch.orderBy, r);
848
848
  return r`(SELECT ${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o}${s}${c} LIMIT 1)`;
849
849
  }, Da = (e, t, n) => {
850
850
  let r = n.sql, i = n.nextAlias(), a = wa(i, e.children, n);
851
851
  if (a === null) return null;
852
- let o = r`${I(void 0, e.foreignKey, r)} = ${I(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${C(e.branch.where, r)}`, c = Aa(e.branch.orderBy, r), l = e.branch.limit === void 0 ? r`` : r` LIMIT ${R(e.branch.limit, r)}`, u = e.branch.offset === void 0 ? r`` : r` OFFSET ${R(e.branch.offset, r)}`;
852
+ let o = r`${L(void 0, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${E(e.branch.where, r)}`, c = Aa(e.branch.orderBy, r), l = e.branch.limit === void 0 ? r`` : r` LIMIT ${z(e.branch.limit, r)}`, u = e.branch.offset === void 0 ? r`` : r` OFFSET ${z(e.branch.offset, r)}`;
853
853
  return r`COALESCE((SELECT jsonb_agg(${a}) FROM (SELECT * FROM ${r(e.target.tableName)} WHERE ${o}${s}${c}${l}${u}) AS ${r(i)}), '[]'::jsonb)`;
854
854
  }, Oa = (e, t, n) => {
855
855
  let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = wa(o, e.children, n, e.junction);
856
856
  if (c === null) return null;
857
- let l = e.branch.where === void 0 ? r`` : r` AND ${C(e.branch.where, r)}`, u = no(e, s, r), d = P(o, e.branch.orderBy, r), f = e.branch.limit === void 0 ? r`` : r` LIMIT ${R(e.branch.limit, r)}`, p = e.branch.offset === void 0 ? r`` : r` OFFSET ${R(e.branch.offset, r)}`, m = e.junction === void 0 ? r`` : r`, ${ka(e.junction, s, r)} AS ${r(ma)}`;
858
- return r`COALESCE((SELECT jsonb_agg(${c}) FROM (SELECT ${r(o)}.*${m} FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${I(o, "id", r)} = ${I(s, i.targetKey, r)} WHERE ${I(s, i.sourceKey, r)} = ${I(t, "id", r)}${u}${l}${d}${f}${p}) AS ${r(o)}), '[]'::jsonb)`;
859
- }, ka = (e, t, n) => e.present.length === 0 ? n`jsonb_build_object()` : n`jsonb_build_object(${n.csv(e.present.map((e) => n`${L(e, n)}, ${I(t, e, n)}`))})`, P = (e, t, n) => t === void 0 || t.length === 0 ? n`` : n` ORDER BY ${n.csv(t.map((t) => t.direction === "desc" ? n`${I(e, t.column, n)} DESC` : n`${I(e, t.column, n)} ASC`))}`, Aa = (e, t) => e === void 0 || e.length === 0 ? t`` : t` ORDER BY ${t.csv(e.map((e) => e.direction === "desc" ? t`${t(e.column)} DESC` : t`${t(e.column)} ASC`))}`, ja = (e, t, n) => {
857
+ let l = e.branch.where === void 0 ? r`` : r` AND ${E(e.branch.where, r)}`, u = V(e, s, r), d = F(o, e.branch.orderBy, r), f = e.branch.limit === void 0 ? r`` : r` LIMIT ${z(e.branch.limit, r)}`, p = e.branch.offset === void 0 ? r`` : r` OFFSET ${z(e.branch.offset, r)}`, m = e.junction === void 0 ? r`` : r`, ${ka(e.junction, s, r)} AS ${r(ma)}`;
858
+ return r`COALESCE((SELECT jsonb_agg(${c}) FROM (SELECT ${r(o)}.*${m} FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${L(o, "id", r)} = ${L(s, i.targetKey, r)} WHERE ${L(s, i.sourceKey, r)} = ${L(t, "id", r)}${u}${l}${d}${f}${p}) AS ${r(o)}), '[]'::jsonb)`;
859
+ }, ka = (e, t, n) => e.present.length === 0 ? n`jsonb_build_object()` : n`jsonb_build_object(${n.csv(e.present.map((e) => n`${R(e, n)}, ${L(t, e, n)}`))})`, F = (e, t, n) => t === void 0 || t.length === 0 ? n`` : n` ORDER BY ${n.csv(t.map((t) => t.direction === "desc" ? n`${L(e, t.column, n)} DESC` : n`${L(e, t.column, n)} ASC`))}`, Aa = (e, t) => e === void 0 || e.length === 0 ? t`` : t` ORDER BY ${t.csv(e.map((e) => e.direction === "desc" ? t`${t(e.column)} DESC` : t`${t(e.column)} ASC`))}`, ja = (e, t, n) => {
860
860
  let r = n.sql, i = n.nextAlias(), a = Ma(i, t.table, t.children, n);
861
861
  if (a === null) return null;
862
- let o = e.predicate ? r` WHERE ${z(e.predicate, i, r)}` : r``, s = S(e).length > 0 ? r` ORDER BY ${r.csv(S(e).map((e) => e.direction === "desc" ? r`${I(i, e.column, r)} DESC` : r`${I(i, e.column, r)} ASC`))}` : r``, c = e.take === void 0 ? r`` : r` LIMIT ${R(e.take, r)}`, l = e.skip === void 0 ? r`` : r` OFFSET ${R(e.skip, r)}`;
862
+ let o = e.predicate ? r` WHERE ${B(e.predicate, i, r)}` : r``, s = T(e).length > 0 ? r` ORDER BY ${r.csv(T(e).map((e) => e.direction === "desc" ? r`${L(i, e.column, r)} DESC` : r`${L(i, e.column, r)} ASC`))}` : r``, c = e.take === void 0 ? r`` : r` LIMIT ${z(e.take, r)}`, l = e.skip === void 0 ? r`` : r` OFFSET ${z(e.skip, r)}`;
863
863
  return r`SELECT ${a} AS "__row" FROM ${r(t.table.tableName)} AS ${r(i)}${o}${s}${c}${l}`;
864
864
  }, Ma = (e, t, n, r, i) => {
865
865
  let a = r.sql, o = [];
866
- for (let n of Object.keys(t.fields)) {
867
- let r = I(e, n, a), i = t.fields[n]?.type === "bigint" ? a`CAST(${r} AS TEXT)` : r;
868
- o.push(a`${L(n, a)}, ${i}`);
866
+ for (let n of S(t)) {
867
+ let r = L(e, n, a), i = t.fields[n]?.type === "bigint" ? a`CAST(${r} AS TEXT)` : r;
868
+ o.push(a`${R(n, a)}, ${i}`);
869
869
  }
870
870
  if (i !== void 0) {
871
871
  let e = Na(i.projection, i.source, a);
872
- o.push(a`${L("_junction", a)}, json_object(${e})`);
872
+ o.push(a`${R("_junction", a)}, json_object(${e})`);
873
873
  }
874
874
  for (let t of n) {
875
875
  let n = La(t, e, r);
876
876
  if (n === null) return null;
877
- o.push(a`${L(t.relationName, a)}, ${n}`);
877
+ o.push(a`${R(t.relationName, a)}, ${n}`);
878
878
  }
879
879
  return a`json_object(${a.csv(o)})`;
880
880
  }, Na = (e, t, n) => e.present.length === 0 ? n`` : n.csv(e.present.map((r) => {
881
- let i = I(t.alias, t.physical(r), n), a = e.through.fields[r]?.type === "bigint" ? n.onDialectOrElse({
881
+ let i = L(t.alias, t.physical(r), n), a = e.through.fields[r]?.type === "bigint" ? n.onDialectOrElse({
882
882
  sqlite: () => n`CAST(${i} AS TEXT)`,
883
883
  orElse: () => i
884
884
  }) : i;
885
- return n`${L(r, n)}, ${a}`;
886
- })), Pa = (e, t, n) => e.present.length === 0 ? n`` : n`, ${n.csv(e.present.map((e) => n`${I(t, e, n)} AS ${n(pa(e))}`))}`, Fa = (e) => ({
885
+ return n`${R(r, n)}, ${a}`;
886
+ })), Pa = (e, t, n) => e.present.length === 0 ? n`` : n`, ${n.csv(e.present.map((e) => n`${L(t, e, n)} AS ${n(pa(e))}`))}`, Fa = (e) => ({
887
887
  alias: e,
888
888
  physical: pa
889
889
  }), Ia = (e) => ({
@@ -891,19 +891,19 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
891
891
  physical: (e) => e
892
892
  }), La = (e, t, n) => {
893
893
  switch (e.relation.kind) {
894
- case "one": return ca(e) ? za(la(e), t, n) : Ra(e, t, n);
894
+ case "one": return P(e) ? za(la(e), t, n) : Ra(e, t, n);
895
895
  case "many": return za(e, t, n);
896
896
  case "manyToMany": return Ba(e, t, n);
897
897
  }
898
898
  }, Ra = (e, t, n) => {
899
899
  let r = n.sql, i = n.nextAlias(), a = Ma(i, e.target, e.children, n);
900
900
  if (a === null) return null;
901
- let o = e.fkSide === "source" ? r`${I(i, "id", r)} = ${I(t, e.foreignKey, r)}` : r`${I(i, e.foreignKey, r)} = ${I(t, e.sourceKey, r)}`;
901
+ let o = e.fkSide === "source" ? r`${L(i, "id", r)} = ${L(t, e.foreignKey, r)}` : r`${L(i, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`;
902
902
  return r`(SELECT ${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o} LIMIT 1)`;
903
903
  }, za = (e, t, n) => {
904
904
  let r = n.sql, i = n.nextAlias(), a = Ma(i, e.target, e.children, n);
905
905
  if (a === null) return null;
906
- let o = r`${I(void 0, e.foreignKey, r)} = ${I(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${C(B(e.branch.where), r)}`, c = Aa(e.branch.orderBy, r), l = e.branch.limit === void 0 ? r`` : r` LIMIT ${R(e.branch.limit, r)}`, u = e.branch.offset === void 0 ? r`` : r` OFFSET ${R(e.branch.offset, r)}`;
906
+ let o = r`${L(void 0, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${E(H(e.branch.where), r)}`, c = Aa(e.branch.orderBy, r), l = e.branch.limit === void 0 ? r`` : r` LIMIT ${z(e.branch.limit, r)}`, u = e.branch.offset === void 0 ? r`` : r` OFFSET ${z(e.branch.offset, r)}`;
907
907
  return r`COALESCE((SELECT json_group_array(${a}) FROM (SELECT * FROM ${r(e.target.tableName)} WHERE ${o}${s}${c}${l}${u}) AS ${r(i)}), json('[]'))`;
908
908
  }, Ba = (e, t, n) => {
909
909
  let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = Ma(o, e.target, e.children, n, e.junction === void 0 ? void 0 : {
@@ -911,30 +911,30 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
911
911
  source: Fa(o)
912
912
  });
913
913
  if (c === null) return null;
914
- let l = e.branch.where === void 0 ? r`` : r` AND ${C(B(e.branch.where), r)}`, u = no(e, s, r, !0), d = P(o, e.branch.orderBy, r), f = e.branch.limit === void 0 ? r`` : r` LIMIT ${R(e.branch.limit, r)}`, p = e.branch.offset === void 0 ? r`` : r` OFFSET ${R(e.branch.offset, r)}`, m = e.junction === void 0 ? r`` : Pa(e.junction, s, r);
915
- return r`COALESCE((SELECT json_group_array(${c}) FROM (SELECT ${r(o)}.*${m} FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${I(o, "id", r)} = ${I(s, i.targetKey, r)} WHERE ${I(s, i.sourceKey, r)} = ${I(t, "id", r)}${u}${l}${d}${f}${p}) AS ${r(o)}), json('[]'))`;
914
+ let l = e.branch.where === void 0 ? r`` : r` AND ${E(H(e.branch.where), r)}`, u = V(e, s, r, !0), d = F(o, e.branch.orderBy, r), f = e.branch.limit === void 0 ? r`` : r` LIMIT ${z(e.branch.limit, r)}`, p = e.branch.offset === void 0 ? r`` : r` OFFSET ${z(e.branch.offset, r)}`, m = e.junction === void 0 ? r`` : Pa(e.junction, s, r);
915
+ return r`COALESCE((SELECT json_group_array(${c}) FROM (SELECT ${r(o)}.*${m} FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${L(o, "id", r)} = ${L(s, i.targetKey, r)} WHERE ${L(s, i.sourceKey, r)} = ${L(t, "id", r)}${u}${l}${d}${f}${p}) AS ${r(o)}), json('[]'))`;
916
916
  }, Va = (e, t, n) => {
917
- let r = n.sql, i = n.nextAlias(), a = F(i, t.table, t.children, n);
917
+ let r = n.sql, i = n.nextAlias(), a = I(i, t.table, t.children, n);
918
918
  if (a === null) return null;
919
- let o = e.predicate ? r` WHERE ${z(e.predicate, i, r)}` : r``, s = S(e).length > 0 ? r` ORDER BY ${r.csv(S(e).map((e) => e.direction === "desc" ? r`${I(i, e.column, r)} DESC` : r`${I(i, e.column, r)} ASC`))}` : r``, c = e.take === void 0 ? r`` : r` LIMIT ${R(e.take, r)}`, l = e.skip === void 0 ? r`` : r` OFFSET ${R(e.skip, r)}`;
919
+ let o = e.predicate ? r` WHERE ${B(e.predicate, i, r)}` : r``, s = T(e).length > 0 ? r` ORDER BY ${r.csv(T(e).map((e) => e.direction === "desc" ? r`${L(i, e.column, r)} DESC` : r`${L(i, e.column, r)} ASC`))}` : r``, c = e.take === void 0 ? r`` : r` LIMIT ${z(e.take, r)}`, l = e.skip === void 0 ? r`` : r` OFFSET ${z(e.skip, r)}`;
920
920
  return r`SELECT ${a} AS \`__row\` FROM ${r(t.table.tableName)} AS ${r(i)}${o}${s}${c}${l}`;
921
- }, F = (e, t, n, r, i) => {
921
+ }, I = (e, t, n, r, i) => {
922
922
  let a = r.sql, o = [];
923
- for (let n of Object.keys(t.fields)) o.push(a`${L(n, a)}, ${I(e, n, a)}`);
923
+ for (let n of S(t)) o.push(a`${R(n, a)}, ${L(e, n, a)}`);
924
924
  if (i !== void 0) {
925
925
  let e = Na(i.projection, i.source, a);
926
- o.push(a`${L("_junction", a)}, JSON_OBJECT(${e})`);
926
+ o.push(a`${R("_junction", a)}, JSON_OBJECT(${e})`);
927
927
  }
928
928
  for (let t of n) {
929
929
  let n = Ha(t, e, r);
930
930
  if (n === null) return null;
931
- o.push(a`${L(t.relationName, a)}, ${n}`);
931
+ o.push(a`${R(t.relationName, a)}, ${n}`);
932
932
  }
933
933
  return a`JSON_OBJECT(${a.csv(o)})`;
934
934
  }, Ha = (e, t, n) => {
935
935
  switch (e.relation.kind) {
936
936
  case "one":
937
- if (ca(e)) {
937
+ if (P(e)) {
938
938
  let r = la(e);
939
939
  return n.dialect === "mariadb" ? Ka(r, t, n) : Wa(r, t, n);
940
940
  }
@@ -943,57 +943,57 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
943
943
  case "manyToMany": return n.dialect === "mariadb" ? qa(e, t, n) : Ga(e, t, n);
944
944
  }
945
945
  }, Ua = (e, t, n) => {
946
- let r = n.sql, i = n.nextAlias(), a = F(i, e.target, e.children, n);
946
+ let r = n.sql, i = n.nextAlias(), a = I(i, e.target, e.children, n);
947
947
  if (a === null) return null;
948
- let o = e.fkSide === "source" ? r`${I(i, "id", r)} = ${I(t, e.foreignKey, r)}` : r`${I(i, e.foreignKey, r)} = ${I(t, e.sourceKey, r)}`;
948
+ let o = e.fkSide === "source" ? r`${L(i, "id", r)} = ${L(t, e.foreignKey, r)}` : r`${L(i, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`;
949
949
  return r`(SELECT ${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o} LIMIT 1)`;
950
950
  }, Wa = (e, t, n) => {
951
- let r = n.sql, i = n.nextAlias(), a = F(i, e.target, e.children, n);
951
+ let r = n.sql, i = n.nextAlias(), a = I(i, e.target, e.children, n);
952
952
  if (a === null) return null;
953
- let o = r`${I(void 0, e.foreignKey, r)} = ${I(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${C(B(e.branch.where), r)}`, c = Aa(e.branch.orderBy, r), l = e.branch.limit === void 0 ? r`` : r` LIMIT ${R(e.branch.limit, r)}`, u = e.branch.offset === void 0 ? r`` : r` OFFSET ${R(e.branch.offset, r)}`;
953
+ let o = r`${L(void 0, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${E(H(e.branch.where), r)}`, c = Aa(e.branch.orderBy, r), l = e.branch.limit === void 0 ? r`` : r` LIMIT ${z(e.branch.limit, r)}`, u = e.branch.offset === void 0 ? r`` : r` OFFSET ${z(e.branch.offset, r)}`;
954
954
  return r`COALESCE((SELECT JSON_ARRAYAGG(${a}) FROM (SELECT * FROM ${r(e.target.tableName)} WHERE ${o}${s}${c}${l}${u}) AS ${r(i)}), JSON_ARRAY())`;
955
955
  }, Ga = (e, t, n) => {
956
- let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = F(o, e.target, e.children, n, e.junction === void 0 ? void 0 : {
956
+ let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = I(o, e.target, e.children, n, e.junction === void 0 ? void 0 : {
957
957
  projection: e.junction,
958
958
  source: Fa(o)
959
959
  });
960
960
  if (c === null) return null;
961
- let l = e.branch.where === void 0 ? r`` : r` AND ${C(B(e.branch.where), r)}`, u = no(e, s, r, !0), d = P(o, e.branch.orderBy, r), f = e.branch.limit === void 0 ? r`` : r` LIMIT ${R(e.branch.limit, r)}`, p = e.branch.offset === void 0 ? r`` : r` OFFSET ${R(e.branch.offset, r)}`, m = e.junction === void 0 ? r`` : Pa(e.junction, s, r);
962
- return r`COALESCE((SELECT JSON_ARRAYAGG(${c}) FROM (SELECT ${r(o)}.*${m} FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${I(o, "id", r)} = ${I(s, i.targetKey, r)} WHERE ${I(s, i.sourceKey, r)} = ${I(t, "id", r)}${u}${l}${d}${f}${p}) AS ${r(o)}), JSON_ARRAY())`;
961
+ let l = e.branch.where === void 0 ? r`` : r` AND ${E(H(e.branch.where), r)}`, u = V(e, s, r, !0), d = F(o, e.branch.orderBy, r), f = e.branch.limit === void 0 ? r`` : r` LIMIT ${z(e.branch.limit, r)}`, p = e.branch.offset === void 0 ? r`` : r` OFFSET ${z(e.branch.offset, r)}`, m = e.junction === void 0 ? r`` : Pa(e.junction, s, r);
962
+ return r`COALESCE((SELECT JSON_ARRAYAGG(${c}) FROM (SELECT ${r(o)}.*${m} FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${L(o, "id", r)} = ${L(s, i.targetKey, r)} WHERE ${L(s, i.sourceKey, r)} = ${L(t, "id", r)}${u}${l}${d}${f}${p}) AS ${r(o)}), JSON_ARRAY())`;
963
963
  }, Ka = (e, t, n) => {
964
- let r = n.sql, i = n.nextAlias(), a = F(i, e.target, e.children, n);
964
+ let r = n.sql, i = n.nextAlias(), a = I(i, e.target, e.children, n);
965
965
  if (a === null) return null;
966
- let o = r`${I(i, e.foreignKey, r)} = ${I(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${C(B(e.branch.where), r)}`, c = e.branch.orderBy ?? [];
967
- if (e.branch.limit === void 0 && e.branch.offset === void 0) return r`COALESCE((SELECT JSON_ARRAYAGG(${a}${c.length > 0 ? r` ORDER BY ${r.csv(c.map((e) => e.direction === "desc" ? r`${I(i, e.column, r)} DESC` : r`${I(i, e.column, r)} ASC`))}` : r``}) FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o}${s}), JSON_ARRAY())`;
968
- let l = c.length > 0 ? r` ORDER BY ${r.csv(c.map((e) => e.direction === "desc" ? r`${r(e.column)} DESC` : r`${r(e.column)} ASC`))}` : r` ORDER BY ${r("id")}`, u = e.branch.limit, d = e.branch.offset, f = u !== void 0 && d !== void 0 ? r` AND ${I(i, "rn", r)} > ${R(d, r)} AND ${I(i, "rn", r)} <= ${R(d + u, r)}` : u === void 0 ? r` AND ${I(i, "rn", r)} > ${R(d, r)}` : r` AND ${I(i, "rn", r)} <= ${R(u, r)}`;
969
- return r`COALESCE((SELECT JSON_ARRAYAGG(${a} ORDER BY ${I(i, "rn", r)}) FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY ${r(e.foreignKey)}${l}) AS rn FROM ${r(e.target.tableName)}) AS ${r(i)} WHERE ${o}${s}${f}), JSON_ARRAY())`;
966
+ let o = r`${L(i, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${E(H(e.branch.where), r)}`, c = e.branch.orderBy ?? [];
967
+ if (e.branch.limit === void 0 && e.branch.offset === void 0) return r`COALESCE((SELECT JSON_ARRAYAGG(${a}${c.length > 0 ? r` ORDER BY ${r.csv(c.map((e) => e.direction === "desc" ? r`${L(i, e.column, r)} DESC` : r`${L(i, e.column, r)} ASC`))}` : r``}) FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o}${s}), JSON_ARRAY())`;
968
+ let l = c.length > 0 ? r` ORDER BY ${r.csv(c.map((e) => e.direction === "desc" ? r`${r(e.column)} DESC` : r`${r(e.column)} ASC`))}` : r` ORDER BY ${r("id")}`, u = e.branch.limit, d = e.branch.offset, f = u !== void 0 && d !== void 0 ? r` AND ${L(i, "rn", r)} > ${z(d, r)} AND ${L(i, "rn", r)} <= ${z(d + u, r)}` : u === void 0 ? r` AND ${L(i, "rn", r)} > ${z(d, r)}` : r` AND ${L(i, "rn", r)} <= ${z(u, r)}`;
969
+ return r`COALESCE((SELECT JSON_ARRAYAGG(${a} ORDER BY ${L(i, "rn", r)}) FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY ${r(e.foreignKey)}${l}) AS rn FROM ${r(e.target.tableName)}) AS ${r(i)} WHERE ${o}${s}${f}), JSON_ARRAY())`;
970
970
  }, qa = (e, t, n) => {
971
971
  let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = (t) => e.junction === void 0 ? void 0 : {
972
972
  projection: e.junction,
973
973
  source: t
974
- }, l = r`${I(s, i.sourceKey, r)} = ${I(t, "id", r)}`, u = r`${I(o, "id", r)} = ${I(s, i.targetKey, r)}`, d = e.branch.where === void 0 ? r`` : r` AND ${C(B(e.branch.where), r)}`, f = no(e, s, r, !0), p = e.branch.orderBy ?? [];
974
+ }, l = r`${L(s, i.sourceKey, r)} = ${L(t, "id", r)}`, u = r`${L(o, "id", r)} = ${L(s, i.targetKey, r)}`, d = e.branch.where === void 0 ? r`` : r` AND ${E(H(e.branch.where), r)}`, f = V(e, s, r, !0), p = e.branch.orderBy ?? [];
975
975
  if (e.branch.limit === void 0 && e.branch.offset === void 0) {
976
- let t = F(o, e.target, e.children, n, c(Ia(s)));
977
- return t === null ? null : r`COALESCE((SELECT JSON_ARRAYAGG(${t}${p.length > 0 ? r` ORDER BY ${r.csv(p.map((e) => e.direction === "desc" ? r`${I(o, e.column, r)} DESC` : r`${I(o, e.column, r)} ASC`))}` : r``}) FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${u} WHERE ${l}${f}${d}), JSON_ARRAY())`;
976
+ let t = I(o, e.target, e.children, n, c(Ia(s)));
977
+ return t === null ? null : r`COALESCE((SELECT JSON_ARRAYAGG(${t}${p.length > 0 ? r` ORDER BY ${r.csv(p.map((e) => e.direction === "desc" ? r`${L(o, e.column, r)} DESC` : r`${L(o, e.column, r)} ASC`))}` : r``}) FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${u} WHERE ${l}${f}${d}), JSON_ARRAY())`;
978
978
  }
979
- let m = p.length > 0 ? r` ORDER BY ${r.csv(p.map((e) => e.direction === "desc" ? r`${I(o, e.column, r)} DESC` : r`${I(o, e.column, r)} ASC`))}` : r` ORDER BY ${I(o, "id", r)}`, h = e.branch.limit, g = e.branch.offset, _ = h !== void 0 && g !== void 0 ? r` AND ${I(o, "rn", r)} > ${R(g, r)} AND ${I(o, "rn", r)} <= ${R(g + h, r)}` : h === void 0 ? r` AND ${I(o, "rn", r)} > ${R(g, r)}` : r` AND ${I(o, "rn", r)} <= ${R(h, r)}`, v = e.branch.onJunction === void 0 ? r`` : r` WHERE ${z(B(e.branch.onJunction), s, r)}`, ee = F(o, e.target, e.children, n, c(Fa(o)));
979
+ let m = p.length > 0 ? r` ORDER BY ${r.csv(p.map((e) => e.direction === "desc" ? r`${L(o, e.column, r)} DESC` : r`${L(o, e.column, r)} ASC`))}` : r` ORDER BY ${L(o, "id", r)}`, h = e.branch.limit, g = e.branch.offset, _ = h !== void 0 && g !== void 0 ? r` AND ${L(o, "rn", r)} > ${z(g, r)} AND ${L(o, "rn", r)} <= ${z(g + h, r)}` : h === void 0 ? r` AND ${L(o, "rn", r)} > ${z(g, r)}` : r` AND ${L(o, "rn", r)} <= ${z(h, r)}`, v = e.branch.onJunction === void 0 ? r`` : r` WHERE ${B(H(e.branch.onJunction), s, r)}`, ee = I(o, e.target, e.children, n, c(Fa(o)));
980
980
  if (ee === null) return null;
981
981
  let te = e.junction === void 0 ? r`` : Pa(e.junction, s, r);
982
- return r`COALESCE((SELECT JSON_ARRAYAGG(${ee} ORDER BY ${I(o, "rn", r)}) FROM (SELECT ${r(o)}.*${te}, ${I(s, i.sourceKey, r)} AS ${r(`__src_${i.sourceKey}`)}, ROW_NUMBER() OVER (PARTITION BY ${I(s, i.sourceKey, r)}${m}) AS rn FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${u}${v}) AS ${r(o)} WHERE ${I(o, `__src_${i.sourceKey}`, r)} = ${I(t, "id", r)}${d}${_}), JSON_ARRAY())`;
982
+ return r`COALESCE((SELECT JSON_ARRAYAGG(${ee} ORDER BY ${L(o, "rn", r)}) FROM (SELECT ${r(o)}.*${te}, ${L(s, i.sourceKey, r)} AS ${r(`__src_${i.sourceKey}`)}, ROW_NUMBER() OVER (PARTITION BY ${L(s, i.sourceKey, r)}${m}) AS rn FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${u}${v}) AS ${r(o)} WHERE ${L(o, `__src_${i.sourceKey}`, r)} = ${L(t, "id", r)}${d}${_}), JSON_ARRAY())`;
983
983
  }, Ja = (e, t, n) => {
984
984
  let r = n.sql, i = n.nextAlias(), a = Ya(i, t.table, t.children, n);
985
985
  if (a === null) return null;
986
- let o = e.predicate ? r` WHERE ${z(e.predicate, i, r)}` : r``, s = S(e).length > 0 ? r` ORDER BY ${r.csv(S(e).map((e) => e.direction === "desc" ? r`${I(i, e.column, r)} DESC` : r`${I(i, e.column, r)} ASC`))}` : r``, c = r``, l = r``;
986
+ let o = e.predicate ? r` WHERE ${B(e.predicate, i, r)}` : r``, s = T(e).length > 0 ? r` ORDER BY ${r.csv(T(e).map((e) => e.direction === "desc" ? r`${L(i, e.column, r)} DESC` : r`${L(i, e.column, r)} ASC`))}` : r``, c = r``, l = r``;
987
987
  if (e.skip !== void 0) {
988
- let t = S(e).length > 0 ? s : r` ORDER BY (SELECT NULL)`;
989
- l = e.take === void 0 ? r`${t} OFFSET ${R(e.skip, r)} ROWS` : r`${t} OFFSET ${R(e.skip, r)} ROWS FETCH NEXT ${R(e.take, r)} ROWS ONLY`;
990
- } else e.take !== void 0 && (c = r`TOP ${R(e.take, r)} `);
988
+ let t = T(e).length > 0 ? s : r` ORDER BY (SELECT NULL)`;
989
+ l = e.take === void 0 ? r`${t} OFFSET ${z(e.skip, r)} ROWS` : r`${t} OFFSET ${z(e.skip, r)} ROWS FETCH NEXT ${z(e.take, r)} ROWS ONLY`;
990
+ } else e.take !== void 0 && (c = r`TOP ${z(e.take, r)} `);
991
991
  let u = e.skip === void 0 ? s : r``;
992
992
  return r`SELECT ${c}(SELECT ${a} FOR JSON PATH, INCLUDE_NULL_VALUES, WITHOUT_ARRAY_WRAPPER) AS ${r("__row")} FROM ${r(t.table.tableName)} AS ${r(i)}${o}${u}${l}`;
993
993
  }, Ya = (e, t, n, r, i) => {
994
994
  let a = r.sql, o = [];
995
- for (let n of Object.keys(t.fields)) o.push(a`${I(e, n, a)} AS ${a(n)}`);
996
- if (i !== void 0) for (let e of i.projection.present) o.push(a`${I(i.source.alias, i.source.physical(e), a)} AS ${Xa(`_junction.${e}`, a)}`);
995
+ for (let n of S(t)) o.push(a`${L(e, n, a)} AS ${a(n)}`);
996
+ if (i !== void 0) for (let e of i.projection.present) o.push(a`${L(i.source.alias, i.source.physical(e), a)} AS ${Xa(`_junction.${e}`, a)}`);
997
997
  for (let t of n) {
998
998
  let n = Za(t, e, r);
999
999
  if (n === null) return null;
@@ -1002,18 +1002,18 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1002
1002
  return a.csv(o);
1003
1003
  }, Xa = (e, t) => t.unsafe(`[${e.replace(/]/g, "]]")}]`), Za = (e, t, n) => {
1004
1004
  switch (e.relation.kind) {
1005
- case "one": return ca(e) ? eo(la(e), t, n) : Qa(e, t, n);
1005
+ case "one": return P(e) ? eo(la(e), t, n) : Qa(e, t, n);
1006
1006
  case "many": return eo(e, t, n);
1007
1007
  case "manyToMany": return to(e, t, n);
1008
1008
  }
1009
1009
  }, Qa = (e, t, n) => {
1010
1010
  let r = n.sql, i = n.nextAlias(), a = Ya(i, e.target, e.children, n);
1011
1011
  if (a === null) return null;
1012
- let o = e.fkSide === "source" ? r`${I(i, "id", r)} = ${I(t, e.foreignKey, r)}` : r`${I(i, e.foreignKey, r)} = ${I(t, e.sourceKey, r)}`;
1012
+ let o = e.fkSide === "source" ? r`${L(i, "id", r)} = ${L(t, e.foreignKey, r)}` : r`${L(i, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`;
1013
1013
  return r`JSON_QUERY((SELECT TOP 1 ${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o} FOR JSON PATH, INCLUDE_NULL_VALUES, WITHOUT_ARRAY_WRAPPER)) AS ${r(e.relationName)}`;
1014
1014
  }, $a = (e, t, n) => {
1015
1015
  if (e.offset !== void 0) {
1016
- let r = e.orderBy && e.orderBy.length > 0 ? t : n` ORDER BY (SELECT NULL)`, i = e.limit === void 0 ? n`${r} OFFSET ${R(e.offset, n)} ROWS` : n`${r} OFFSET ${R(e.offset, n)} ROWS FETCH NEXT ${R(e.limit, n)} ROWS ONLY`;
1016
+ let r = e.orderBy && e.orderBy.length > 0 ? t : n` ORDER BY (SELECT NULL)`, i = e.limit === void 0 ? n`${r} OFFSET ${z(e.offset, n)} ROWS` : n`${r} OFFSET ${z(e.offset, n)} ROWS FETCH NEXT ${z(e.limit, n)} ROWS ONLY`;
1017
1017
  return {
1018
1018
  top: n``,
1019
1019
  pagination: i,
@@ -1021,36 +1021,36 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1021
1021
  };
1022
1022
  }
1023
1023
  return {
1024
- top: e.limit === void 0 ? n`` : n`TOP ${R(e.limit, n)} `,
1024
+ top: e.limit === void 0 ? n`` : n`TOP ${z(e.limit, n)} `,
1025
1025
  pagination: n``,
1026
1026
  finalOrder: t
1027
1027
  };
1028
1028
  }, eo = (e, t, n) => {
1029
1029
  let r = n.sql, i = n.nextAlias(), a = Ya(i, e.target, e.children, n);
1030
1030
  if (a === null) return null;
1031
- let o = e.branch.where === void 0 ? r`` : r` AND ${z(e.branch.where, i, r)}`, s = P(i, e.branch.orderBy, r), { top: c, pagination: l, finalOrder: u } = $a(e.branch, s, r);
1032
- return r`ISNULL(JSON_QUERY((SELECT ${c}${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${I(i, e.foreignKey, r)} = ${I(t, e.sourceKey, r)}${o}${u}${l} FOR JSON PATH, INCLUDE_NULL_VALUES)), JSON_QUERY('[]')) AS ${r(e.relationName)}`;
1031
+ let o = e.branch.where === void 0 ? r`` : r` AND ${B(e.branch.where, i, r)}`, s = F(i, e.branch.orderBy, r), { top: c, pagination: l, finalOrder: u } = $a(e.branch, s, r);
1032
+ return r`ISNULL(JSON_QUERY((SELECT ${c}${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${L(i, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}${o}${u}${l} FOR JSON PATH, INCLUDE_NULL_VALUES)), JSON_QUERY('[]')) AS ${r(e.relationName)}`;
1033
1033
  }, to = (e, t, n) => {
1034
1034
  let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = Ya(o, e.target, e.children, n, e.junction === void 0 ? void 0 : {
1035
1035
  projection: e.junction,
1036
1036
  source: Ia(s)
1037
1037
  });
1038
1038
  if (c === null) return null;
1039
- let l = e.branch.where === void 0 ? r`` : r` AND ${z(e.branch.where, o, r)}`, u = no(e, s, r), d = P(o, e.branch.orderBy, r), { top: f, pagination: p, finalOrder: m } = $a(e.branch, d, r);
1040
- return r`ISNULL(JSON_QUERY((SELECT ${f}${c} FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${I(o, "id", r)} = ${I(s, i.targetKey, r)} WHERE ${I(s, i.sourceKey, r)} = ${I(t, "id", r)}${u}${l}${m}${p} FOR JSON PATH, INCLUDE_NULL_VALUES)), JSON_QUERY('[]')) AS ${r(e.relationName)}`;
1041
- }, I = (e, t, n) => e === void 0 ? n`${n(t)}` : n`${n(e)}.${n(t)}`, L = (e, t) => t.unsafe(`'${e.replace(/'/g, "''")}'`), R = (e, t) => {
1042
- if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw x(`literalInt: expected non-negative integer, got ${e}`);
1039
+ let l = e.branch.where === void 0 ? r`` : r` AND ${B(e.branch.where, o, r)}`, u = V(e, s, r), d = F(o, e.branch.orderBy, r), { top: f, pagination: p, finalOrder: m } = $a(e.branch, d, r);
1040
+ return r`ISNULL(JSON_QUERY((SELECT ${f}${c} FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${L(o, "id", r)} = ${L(s, i.targetKey, r)} WHERE ${L(s, i.sourceKey, r)} = ${L(t, "id", r)}${u}${l}${m}${p} FOR JSON PATH, INCLUDE_NULL_VALUES)), JSON_QUERY('[]')) AS ${r(e.relationName)}`;
1041
+ }, L = (e, t, n) => e === void 0 ? n`${n(t)}` : n`${n(e)}.${n(t)}`, R = (e, t) => t.unsafe(`'${e.replace(/'/g, "''")}'`), z = (e, t) => {
1042
+ if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw w(`literalInt: expected non-negative integer, got ${e}`);
1043
1043
  return t.unsafe(String(e));
1044
- }, z = (e, t, n) => {
1045
- let r = ro(e, t);
1046
- return C(r, n);
1047
- }, no = (e, t, n, r = !1) => {
1044
+ }, B = (e, t, n) => {
1045
+ let r = no(e, t);
1046
+ return E(r, n);
1047
+ }, V = (e, t, n, r = !1) => {
1048
1048
  let i = e.branch.onJunction;
1049
- return i === void 0 ? n`` : n` AND ${z(r ? B(i) : i, t, n)}`;
1050
- }, ro = (e, t) => {
1051
- if ("not" in e) return { not: ro(e.not, t) };
1052
- if ("and" in e) return { and: e.and.map((e) => ro(e, t)) };
1053
- if ("or" in e) return { or: e.or.map((e) => ro(e, t)) };
1049
+ return i === void 0 ? n`` : n` AND ${B(r ? H(i) : i, t, n)}`;
1050
+ }, no = (e, t) => {
1051
+ if ("not" in e) return { not: no(e.not, t) };
1052
+ if ("and" in e) return { and: e.and.map((e) => no(e, t)) };
1053
+ if ("or" in e) return { or: e.or.map((e) => no(e, t)) };
1054
1054
  if (e.op === "subquery-in" || e.op === "subquery-not-in") {
1055
1055
  let n = e;
1056
1056
  return {
@@ -1063,57 +1063,57 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1063
1063
  return {
1064
1064
  ...n,
1065
1065
  column: `${t}.${n.column}`,
1066
- ...gr(n.value) ? { value: Ye(`${t}.${n.value.column}`) } : {}
1066
+ ...mr(n.value) ? { value: Ke(`${t}.${n.value.column}`) } : {}
1067
1067
  };
1068
- }, B = (e) => {
1069
- if ("not" in e) return { not: B(e.not) };
1070
- if ("and" in e) return { and: e.and.map((e) => B(e)) };
1071
- if ("or" in e) return { or: e.or.map((e) => B(e)) };
1068
+ }, H = (e) => {
1069
+ if ("not" in e) return { not: H(e.not) };
1070
+ if ("and" in e) return { and: e.and.map((e) => H(e)) };
1071
+ if ("or" in e) return { or: e.or.map((e) => H(e)) };
1072
1072
  if (e.op === "subquery-in" || e.op === "subquery-not-in" || e.op === "exists" || e.op === "not-exists") return e;
1073
1073
  let t = e;
1074
1074
  return {
1075
1075
  ...t,
1076
- value: De(t.value)
1076
+ value: Ee(t.value)
1077
1077
  };
1078
- }, io = Symbol.for("@voltro/database/coreTablesRegistry"), ao = globalThis, oo = ao[io] ?? (ao[io] = {}), so = (e) => {
1079
- e.actors !== void 0 && (oo.actors = e.actors), e.tenants !== void 0 && (oo.tenants = e.tenants);
1080
- }, co = (e, t) => () => {
1078
+ }, ro = Symbol.for("@voltro/database/coreTablesRegistry"), io = globalThis, ao = io[ro] ?? (io[ro] = {}), oo = (e) => {
1079
+ e.actors !== void 0 && (ao.actors = e.actors), e.tenants !== void 0 && (ao.tenants = e.tenants);
1080
+ }, so = (e, t) => () => {
1081
1081
  let n = e();
1082
1082
  if (n === void 0) throw Error(`core '${t}' table not registered; expected the framework CLI or your migrate step to call registerCoreTables({ ${t}: () => ${t}Table }) before the database handle is constructed`);
1083
1083
  return n();
1084
- }, lo = () => co(() => oo.actors, "actors"), uo = () => co(() => oo.tenants, "tenants"), fo = ke("actors", {
1085
- id: y(),
1086
- kind: l().oneOf([
1084
+ }, co = () => so(() => ao.actors, "actors"), lo = () => so(() => ao.tenants, "tenants"), uo = b("actors", {
1085
+ id: x(),
1086
+ kind: C().oneOf([
1087
1087
  "user",
1088
1088
  "serviceAccount",
1089
1089
  "apiKey",
1090
1090
  "system"
1091
1091
  ]).safe(),
1092
- displayName: l().nullable().sensitive("fullName"),
1093
- createdAt: b().default("now")
1094
- }), po = (e, t) => ({
1092
+ displayName: C().nullable().sensitive("fullName"),
1093
+ createdAt: y().default("now")
1094
+ }), fo = (e, t) => ({
1095
1095
  ...t,
1096
1096
  ...e,
1097
1097
  origin: e.origin ?? "injected"
1098
- }), mo = (e, t, n = {}) => ({
1098
+ }), po = (e, t, n = {}) => ({
1099
1099
  table: e,
1100
1100
  op: "insert",
1101
1101
  old: null,
1102
1102
  new: t,
1103
1103
  ...n
1104
- }), ho = (e, t, n, r = {}) => ({
1104
+ }), mo = (e, t, n, r = {}) => ({
1105
1105
  table: e,
1106
1106
  op: "update",
1107
1107
  old: t,
1108
1108
  new: n,
1109
1109
  ...r
1110
- }), go = (e, t, n = {}) => ({
1110
+ }), ho = (e, t, n = {}) => ({
1111
1111
  table: e,
1112
1112
  op: "delete",
1113
1113
  old: t,
1114
1114
  new: null,
1115
1115
  ...n
1116
- }), _o = (e, t, n = {}) => {
1116
+ }), go = (e, t, n = {}) => {
1117
1117
  let { at: r = "2026-01-01T00:00:00.000Z", column: i = "deletedAt", ...a } = n;
1118
1118
  return {
1119
1119
  table: e,
@@ -1128,13 +1128,13 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1128
1128
  },
1129
1129
  ...a
1130
1130
  };
1131
- }, vo = (e) => e == null ? "null" : e instanceof Date ? JSON.stringify(e.toISOString()) : typeof e == "bigint" ? JSON.stringify(e.toString()) : Array.isArray(e) ? `[${e.map(vo).join(",")}]` : typeof e == "object" ? `{${Object.entries(e).filter(([, e]) => e !== void 0).sort(([e], [t]) => e < t ? -1 : +(e > t)).map(([e, t]) => `${JSON.stringify(e)}:${vo(t)}`).join(",")}}` : JSON.stringify(e) ?? "null", yo = (e) => jr("sha256").update([
1131
+ }, _o = (e) => e == null ? "null" : e instanceof Date ? JSON.stringify(e.toISOString()) : typeof e == "bigint" ? JSON.stringify(e.toString()) : Array.isArray(e) ? `[${e.map(_o).join(",")}]` : typeof e == "object" ? `{${Object.entries(e).filter(([, e]) => e !== void 0).sort(([e], [t]) => e < t ? -1 : +(e > t)).map(([e, t]) => `${JSON.stringify(e)}:${_o(t)}`).join(",")}}` : JSON.stringify(e) ?? "null", vo = (e) => kr("sha256").update([
1132
1132
  e.pipe,
1133
1133
  e.op,
1134
1134
  e.key,
1135
- vo(e.next),
1136
- vo(e.prev)
1137
- ].join("\0")).digest("hex").slice(0, 32), bo = (e, t) => `${e}:${t}`, xo = (e) => {
1135
+ _o(e.next),
1136
+ _o(e.prev)
1137
+ ].join("\0")).digest("hex").slice(0, 32), yo = (e, t) => `${e}:${t}`, bo = (e) => {
1138
1138
  let t = e.lastIndexOf(":");
1139
1139
  if (t <= 0) return null;
1140
1140
  let n = Number(e.slice(t + 1));
@@ -1142,7 +1142,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1142
1142
  digest: e.slice(0, t),
1143
1143
  occurrence: n
1144
1144
  };
1145
- }, So = class {
1145
+ }, xo = class {
1146
1146
  #e = /* @__PURE__ */ new Map();
1147
1147
  #t;
1148
1148
  #n;
@@ -1164,7 +1164,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1164
1164
  }
1165
1165
  seedFromChangeKeys(e, t) {
1166
1166
  for (let n of e) {
1167
- let e = xo(n);
1167
+ let e = bo(n);
1168
1168
  if (e === null) continue;
1169
1169
  let r = this.#e.get(e.digest), i = Math.max(r?.count ?? 0, e.occurrence + 1);
1170
1170
  this.#e.set(e.digest, {
@@ -1185,70 +1185,70 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1185
1185
  this.#e.delete(e.value);
1186
1186
  }
1187
1187
  }
1188
- }, Co = "VOLTRO_CHANGE_CLAIMS_TTL_HOURS", wo = 1, To = (e = process.env) => {
1189
- let t = Number(e[Co]);
1188
+ }, So = "VOLTRO_CHANGE_CLAIMS_TTL_HOURS", Co = 1, wo = (e = process.env) => {
1189
+ let t = Number(e[So]);
1190
1190
  return (Number.isFinite(t) && t > 0 ? t : 1) * 2 * 36e5;
1191
- }, Eo = new Mr(), Do = (e, t) => Eo.run(e, t), Oo = () => Eo.getStore(), ko = (e) => {
1192
- let t = e ?? Eo.getStore();
1191
+ }, U = new Ar(), To = (e, t) => U.run(e, t), Eo = () => U.getStore(), Do = (e) => {
1192
+ let t = e ?? U.getStore();
1193
1193
  return t === void 0 ? {} : {
1194
1194
  ...t.traceId === void 0 ? {} : { traceId: t.traceId },
1195
1195
  ...t.subjectId === void 0 ? {} : { subjectId: t.subjectId },
1196
1196
  ...t.procedure === void 0 ? {} : { procedure: t.procedure },
1197
1197
  ...t.via === void 0 ? {} : { via: t.via }
1198
1198
  };
1199
- }, Ao = (e) => {
1200
- let t = Eo.getStore();
1201
- return t === void 0 ? e(void 0) : Eo.run(t, () => e(t));
1202
- }, jo = 3e4, Mo = 1e4, V = /* @__PURE__ */ new Map(), H = 0, No = (e, t, n) => `${e}\u0000${t}\u0000${String(n)}`, Po = (e) => {
1203
- for (let [t, n] of V) {
1204
- let r = n.filter((t) => e - t.at < jo);
1205
- H -= n.length - r.length, r.length === 0 ? V.delete(t) : r.length !== n.length && V.set(t, r);
1206
- }
1207
- }, Fo = (e, t) => {
1199
+ }, Oo = (e) => {
1200
+ let t = U.getStore();
1201
+ return t === void 0 ? e(void 0) : U.run(t, () => e(t));
1202
+ }, ko = 3e4, Ao = 1e4, W = /* @__PURE__ */ new Map(), G = 0, jo = (e, t, n) => `${e}\u0000${t}\u0000${String(n)}`, Mo = (e) => {
1203
+ for (let [t, n] of W) {
1204
+ let r = n.filter((t) => e - t.at < ko);
1205
+ G -= n.length - r.length, r.length === 0 ? W.delete(t) : r.length !== n.length && W.set(t, r);
1206
+ }
1207
+ }, No = (e, t) => {
1208
1208
  if (t.traceId === void 0 && t.subjectId === void 0 && t.procedure === void 0) return;
1209
1209
  let n = Date.now();
1210
- if (H >= Mo && Po(n), H >= Mo) return;
1211
- let r = V.get(e);
1212
- r === void 0 ? V.set(e, [{
1210
+ if (G >= Ao && Mo(n), G >= Ao) return;
1211
+ let r = W.get(e);
1212
+ r === void 0 ? W.set(e, [{
1213
1213
  attribution: t,
1214
1214
  at: n
1215
1215
  }]) : r.push({
1216
1216
  attribution: t,
1217
1217
  at: n
1218
- }), H += 1;
1219
- }, Io = (e) => {
1220
- let t = V.get(e);
1218
+ }), G += 1;
1219
+ }, Po = (e) => {
1220
+ let t = W.get(e);
1221
1221
  if (t === void 0 || t.length === 0) return;
1222
1222
  let n = t.shift();
1223
- if (--H, t.length === 0 && V.delete(e), !(Date.now() - n.at >= jo)) return n.attribution;
1224
- }, Lo = (e) => (V.get(e)?.length ?? 0) > 0, U = /* @__PURE__ */ new Map(), W = /* @__PURE__ */ new Map(), G = /* @__PURE__ */ new Map(), Ro = 250, zo = (e) => {
1225
- let t = W.get(e);
1223
+ if (--G, t.length === 0 && W.delete(e), !(Date.now() - n.at >= ko)) return n.attribution;
1224
+ }, Fo = (e) => (W.get(e)?.length ?? 0) > 0, K = /* @__PURE__ */ new Map(), q = /* @__PURE__ */ new Map(), Io = /* @__PURE__ */ new Map(), Lo = 250, Ro = (e) => {
1225
+ let t = q.get(e);
1226
1226
  if (t === void 0) return;
1227
- W.delete(e);
1228
- let n = G.get(e);
1229
- n !== void 0 && (clearTimeout(n), G.delete(e));
1227
+ q.delete(e);
1228
+ let n = Io.get(e);
1229
+ n !== void 0 && (clearTimeout(n), Io.delete(e));
1230
1230
  for (let e of t) e();
1231
+ }, zo = (e) => {
1232
+ K.set(e, (K.get(e) ?? 0) + 1);
1231
1233
  }, Bo = (e) => {
1232
- U.set(e, (U.get(e) ?? 0) + 1);
1233
- }, Vo = (e) => {
1234
- let t = (U.get(e) ?? 0) - 1;
1234
+ let t = (K.get(e) ?? 0) - 1;
1235
1235
  if (t > 0) {
1236
- U.set(e, t);
1236
+ K.set(e, t);
1237
1237
  return;
1238
1238
  }
1239
- U.delete(e), zo(e);
1240
- }, Ho = (e, t, n, r) => {
1241
- let i = n == null ? void 0 : No(e, t, n), a = () => r(i === void 0 ? void 0 : Io(i));
1239
+ K.delete(e), Ro(e);
1240
+ }, Vo = (e, t, n, r) => {
1241
+ let i = n == null ? void 0 : jo(e, t, n), a = () => r(i === void 0 ? void 0 : Po(i));
1242
1242
  if (i === void 0) {
1243
1243
  a();
1244
1244
  return;
1245
1245
  }
1246
- if (Lo(i)) {
1246
+ if (Fo(i)) {
1247
1247
  a();
1248
1248
  return;
1249
1249
  }
1250
- let o = W.get(e);
1251
- if (o === void 0 && (U.get(e) ?? 0) === 0) {
1250
+ let o = q.get(e);
1251
+ if (o === void 0 && (K.get(e) ?? 0) === 0) {
1252
1252
  a();
1253
1253
  return;
1254
1254
  }
@@ -1256,91 +1256,91 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1256
1256
  o.push(a);
1257
1257
  return;
1258
1258
  }
1259
- W.set(e, [a]);
1260
- let s = setTimeout(() => zo(e), Ro);
1261
- typeof s == "object" && typeof s.unref == "function" && s.unref(), G.set(e, s);
1262
- }, Uo = () => {
1263
- V.clear(), H = 0, U.clear();
1264
- for (let e of G.values()) clearTimeout(e);
1265
- G.clear(), W.clear();
1266
- }, Wo = () => H, Go = 64, Ko = "\0", qo = 32, Jo = (e, ...t) => `${e}_${jr("sha256").update(t.map(String).join(Ko)).digest("hex").slice(0, qo)}`, Yo = (e) => e.length + 1 + qo, K = /* @__PURE__ */ new Map(), Xo = (e, t) => {
1267
- K.set(e, {
1259
+ q.set(e, [a]);
1260
+ let s = setTimeout(() => Ro(e), Lo);
1261
+ typeof s == "object" && typeof s.unref == "function" && s.unref(), Io.set(e, s);
1262
+ }, Ho = () => {
1263
+ W.clear(), G = 0, K.clear();
1264
+ for (let e of Io.values()) clearTimeout(e);
1265
+ Io.clear(), q.clear();
1266
+ }, Uo = () => G, Wo = 64, Go = "\0", Ko = 32, qo = (e, ...t) => `${e}_${kr("sha256").update(t.map(String).join(Go)).digest("hex").slice(0, Ko)}`, Jo = (e) => e.length + 1 + Ko, J = /* @__PURE__ */ new Map(), Yo = (e, t) => {
1267
+ J.set(e, {
1268
1268
  recorder: t.recorder,
1269
1269
  tables: new Set(t.tables),
1270
1270
  ownTables: new Set(t.ownTables)
1271
1271
  });
1272
- }, Zo = (e) => {
1273
- K.delete(e);
1274
- }, Qo = () => K.clear(), q = new Mr(), $o = (e) => q.run({ n: 1 }, e), es = (e) => w.suspend(() => {
1275
- let t = q.getStore();
1276
- if (t !== void 0) return t.n += 1, w.ensuring(e, w.sync(() => {
1272
+ }, Xo = (e) => {
1273
+ J.delete(e);
1274
+ }, Zo = () => J.clear(), Qo = new Ar(), $o = (e) => Qo.run({ n: 1 }, e), es = (e) => D.suspend(() => {
1275
+ let t = Qo.getStore();
1276
+ if (t !== void 0) return t.n += 1, D.ensuring(e, D.sync(() => {
1277
1277
  --t.n;
1278
1278
  }));
1279
1279
  let n = { n: 1 };
1280
- return q.enterWith(n), w.ensuring(e, w.sync(() => {
1280
+ return Qo.enterWith(n), D.ensuring(e, D.sync(() => {
1281
1281
  --n.n;
1282
1282
  }));
1283
- }), ts = () => (q.getStore()?.n ?? 0) > 0, ns = (e) => {
1284
- if (K.size === 0 || (q.getStore()?.n ?? 0) > 0) return !1;
1285
- for (let t of K.values()) if (!t.ownTables.has(e) && t.tables.has(e)) return !0;
1283
+ }), ts = () => (Qo.getStore()?.n ?? 0) > 0, ns = (e) => {
1284
+ if (J.size === 0 || (Qo.getStore()?.n ?? 0) > 0) return !1;
1285
+ for (let t of J.values()) if (!t.ownTables.has(e) && t.tables.has(e)) return !0;
1286
1286
  return !1;
1287
1287
  }, rs = async (e, t) => {
1288
- if (K.size !== 0) {
1289
- for (let [n, r] of K.entries()) if (!r.ownTables.has(t.table) && r.tables.has(t.table)) try {
1288
+ if (J.size !== 0) {
1289
+ for (let [n, r] of J.entries()) if (!r.ownTables.has(t.table) && r.tables.has(t.table)) try {
1290
1290
  await r.recorder(e, t);
1291
1291
  } catch (e) {
1292
- let r = Ht(e);
1292
+ let r = Bt(e);
1293
1293
  throw r === void 0 ? e : Error(`write recorder '${n}' failed while recording a ${t.op} on '${t.table}': ${r}`, { cause: e });
1294
1294
  }
1295
1295
  }
1296
- }, is = Or.exponential({
1296
+ }, is = Er.exponential({
1297
1297
  start: 5e-4,
1298
1298
  factor: 2,
1299
1299
  count: 16
1300
- }), as = T.counter("voltro_db_queries_total", { description: "Database operations executed, by dialect and operation kind." }), os = T.histogram("voltro_db_query_duration_seconds", is, "Database operation duration in seconds, by dialect and operation kind."), ss = T.counter("voltro_db_errors_total", { description: "Database operations that threw, by dialect and operation kind." }), cs = T.gauge("voltro_db_operations_in_flight", { description: "Database operations currently executing, by dialect. An upper bound on connections the framework holds; NOT the driver pool's waiting count." }), ls = T.counter("voltro_db_eager_fallback_total", { description: "Eager-load queries that degraded from the single-roundtrip JSON-agg path to the multi-query walker, by dialect and reason." }), J = [], us = /* @__PURE__ */ new Map(), ds = /* @__PURE__ */ new Map(), fs = /* @__PURE__ */ new Map(), ps = (e, t) => {
1301
- let n = `${e}\u0000${t}`, r = us.get(n);
1300
+ }), as = O.counter("voltro_db_queries_total", { description: "Database operations executed, by dialect and operation kind." }), os = O.histogram("voltro_db_query_duration_seconds", is, "Database operation duration in seconds, by dialect and operation kind."), ss = O.counter("voltro_db_errors_total", { description: "Database operations that threw, by dialect and operation kind." }), cs = O.gauge("voltro_db_operations_in_flight", { description: "Database operations currently executing, by dialect. An upper bound on connections the framework holds; NOT the driver pool's waiting count." }), ls = O.counter("voltro_db_eager_fallback_total", { description: "Eager-load queries that degraded from the single-roundtrip JSON-agg path to the multi-query walker, by dialect and reason." }), us = [], ds = /* @__PURE__ */ new Map(), fs = /* @__PURE__ */ new Map(), ps = /* @__PURE__ */ new Map(), ms = (e, t) => {
1301
+ let n = `${e}\u0000${t}`, r = ds.get(n);
1302
1302
  if (r !== void 0) return r;
1303
- let i = (n) => T.tagged(T.tagged(n, "dialect", e), "op", t), a = {
1303
+ let i = (n) => O.tagged(O.tagged(n, "dialect", e), "op", t), a = {
1304
1304
  count: i(as),
1305
1305
  duration: i(os),
1306
1306
  errors: i(ss)
1307
1307
  };
1308
- return us.set(n, a), a;
1309
- }, ms = () => {
1310
- us.clear(), ds.clear(), fs.clear();
1311
- }, hs = () => us.size + ds.size + fs.size, gs = /* @__PURE__ */ new Map(), _s = (e, t) => {
1312
- let n = Math.max(0, (gs.get(e) ?? 0) + t);
1313
- n === 0 ? gs.delete(e) : gs.set(e, n);
1314
- let r = ds.get(e);
1315
- r === void 0 && (r = T.tagged(cs, "dialect", e), ds.set(e, r)), r.unsafeUpdate(n, J);
1316
- }, vs = (e) => gs.get(e) ?? 0, ys = (e) => {
1317
- let t = ps(String(e.dialect), e.op);
1318
- t.count.unsafeUpdate(1, J), t.duration.unsafeUpdate(e.durationMs / 1e3, J), e.status === "error" && t.errors.unsafeUpdate(1, J);
1319
- }, bs = async (e, t, n) => {
1308
+ return ds.set(n, a), a;
1309
+ }, hs = () => {
1310
+ ds.clear(), fs.clear(), ps.clear();
1311
+ }, gs = () => ds.size + fs.size + ps.size, _s = /* @__PURE__ */ new Map(), vs = (e, t) => {
1312
+ let n = Math.max(0, (_s.get(e) ?? 0) + t);
1313
+ n === 0 ? _s.delete(e) : _s.set(e, n);
1314
+ let r = fs.get(e);
1315
+ r === void 0 && (r = O.tagged(cs, "dialect", e), fs.set(e, r)), r.unsafeUpdate(n, us);
1316
+ }, ys = (e) => _s.get(e) ?? 0, bs = (e) => {
1317
+ let t = ms(String(e.dialect), e.op);
1318
+ t.count.unsafeUpdate(1, us), t.duration.unsafeUpdate(e.durationMs / 1e3, us), e.status === "error" && t.errors.unsafeUpdate(1, us);
1319
+ }, xs = async (e, t, n) => {
1320
1320
  let r = performance.now(), i = String(e);
1321
- _s(i, 1);
1321
+ vs(i, 1);
1322
1322
  let a = "ok";
1323
1323
  try {
1324
1324
  return await n();
1325
1325
  } catch (e) {
1326
1326
  throw a = "error", e;
1327
1327
  } finally {
1328
- _s(i, -1), ys({
1328
+ vs(i, -1), bs({
1329
1329
  dialect: e,
1330
1330
  op: t,
1331
1331
  durationMs: performance.now() - r,
1332
1332
  status: a
1333
1333
  });
1334
1334
  }
1335
- }, xs = 3e5, Ss = (e) => {
1335
+ }, Ss = 3e5, Cs = (e) => {
1336
1336
  if (e == null || e === "") return;
1337
1337
  let t = Number(e);
1338
1338
  return Number.isFinite(t) && t >= 0 ? Math.floor(t) : void 0;
1339
- }, Cs = (e, t = process.env) => Ss(t.VOLTRO_DB_EAGER_FALLBACK_WARN_INTERVAL_MS) ?? Ss(e) ?? 3e5, ws = (e, t = {}) => {
1340
- let n = Cs(t.warnIntervalMs), r = t.now ?? (() => Date.now()), i = /* @__PURE__ */ new Map();
1339
+ }, ws = (e, t = process.env) => Cs(t.VOLTRO_DB_EAGER_FALLBACK_WARN_INTERVAL_MS) ?? Cs(e) ?? 3e5, Ts = (e, t = {}) => {
1340
+ let n = ws(t.warnIntervalMs), r = t.now ?? (() => Date.now()), i = /* @__PURE__ */ new Map();
1341
1341
  return (t) => {
1342
- let a = `${t.dialect} ${t.reason}`, o = fs.get(a);
1343
- o === void 0 && (o = T.tagged(T.tagged(ls, "dialect", String(t.dialect)), "reason", t.reason), fs.set(a, o)), o.unsafeUpdate(1, J);
1342
+ let a = `${t.dialect} ${t.reason}`, o = ps.get(a);
1343
+ o === void 0 && (o = O.tagged(O.tagged(ls, "dialect", String(t.dialect)), "reason", t.reason), ps.set(a, o)), o.unsafeUpdate(1, us);
1344
1344
  let s = `${t.table}\u0000${t.reason}`, c = i.get(s), l = c === void 0 || n > 0 && r() - c >= n, u = {
1345
1345
  table: t.table,
1346
1346
  dialect: String(t.dialect),
@@ -1354,37 +1354,37 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1354
1354
  }
1355
1355
  i.set(s, r()), e.warn(t.reason === "execute-failed" ? "eager-load JSON-agg statement FAILED and was re-run on the multi-query walker — this query pays both paths on every call. Counted as voltro_db_eager_fallback_total{reason=\"execute-failed\"}." : "eager-load could not be compiled to a single JSON-agg roundtrip and is running on the multi-query walker — one round trip per relation level, on every call. Counted as voltro_db_eager_fallback_total{reason=\"not-compilable\"}.", u);
1356
1356
  };
1357
- }, Ts = (e) => {
1358
- if (Dr.isSuccess(e)) return e.value;
1359
- throw wr.squash(e.cause);
1360
- }, Es = "10 millis", Ds = 3, Os = (e) => kr.exponential(Es).pipe(kr.compose(kr.recurs(Ds)), kr.whileInput(e)), ks = async (e) => {
1361
- let t = 0, n = w.suspend(() => {
1357
+ }, Es = (e) => {
1358
+ if (Tr.isSuccess(e)) return e.value;
1359
+ throw Sr.squash(e.cause);
1360
+ }, Ds = "10 millis", Os = 3, ks = (e) => Dr.exponential(Ds).pipe(Dr.compose(Dr.recurs(Os)), Dr.whileInput(e)), As = async (e) => {
1361
+ let t = 0, n = D.suspend(() => {
1362
1362
  let n = ++t;
1363
- return e.withTransaction(w.flatMap(w.serviceOption(Nr), (t) => {
1364
- if (E.isNone(t)) return w.fail(/* @__PURE__ */ Error(`${e.label}: TransactionConnection unexpectedly missing inside withTransaction.`));
1365
- let r = t.value, i = w.tryPromise({
1363
+ return e.withTransaction(D.flatMap(D.serviceOption(jr), (t) => {
1364
+ if (k.isNone(t)) return D.fail(/* @__PURE__ */ Error(`${e.label}: TransactionConnection unexpectedly missing inside withTransaction.`));
1365
+ let r = t.value, i = D.tryPromise({
1366
1366
  try: () => e.body(r, n),
1367
1367
  catch: (e) => e
1368
1368
  });
1369
- return e.prepare === void 0 ? i : w.flatMap(e.prepare(r), () => i);
1370
- })).pipe(w.catchAllDefect((t) => e.isRetryable(t) ? w.fail(t) : w.die(t)));
1371
- }).pipe(w.retry(Os(e.isRetryable)), w.withSpan(e.span.name, { attributes: { ...e.span.attributes } }));
1372
- return bs(e.dialect, "transaction", async () => Ts(await e.runPromiseExit(e.wrapProgram === void 0 ? n : e.wrapProgram(n))));
1373
- }, As = class extends Error {
1369
+ return e.prepare === void 0 ? i : D.flatMap(e.prepare(r), () => i);
1370
+ })).pipe(D.catchAllDefect((t) => e.isRetryable(t) ? D.fail(t) : D.die(t)));
1371
+ }).pipe(D.retry(ks(e.isRetryable)), D.withSpan(e.span.name, { attributes: { ...e.span.attributes } }));
1372
+ return xs(e.dialect, "transaction", async () => Es(await e.runPromiseExit(e.wrapProgram === void 0 ? n : e.wrapProgram(n))));
1373
+ }, js = class extends Error {
1374
1374
  swallowed;
1375
1375
  _tag = "TransactionAborted";
1376
1376
  constructor(e, t) {
1377
1377
  super(`${e}: a statement failed inside this transaction and the error was caught, but the database had already aborted the transaction — every later statement was refused, and COMMIT would have rolled back ALL of its writes, including the ones that succeeded. Nothing was committed.
1378
- the caught failure: ${Ps(t)}\n to tolerate a failing statement and keep the rest, run it inside \`tx.savepoint(() => …)\` — only that statement is rolled back. To keep all-or-nothing, let the error propagate.`, { cause: t }), this.swallowed = t, this.name = "TransactionAbortedError";
1378
+ the caught failure: ${Fs(t)}\n to tolerate a failing statement and keep the rest, run it inside \`tx.savepoint(() => …)\` — only that statement is rolled back. To keep all-or-nothing, let the error propagate.`, { cause: t }), this.swallowed = t, this.name = "TransactionAbortedError";
1379
1379
  }
1380
- }, js = (e, t = "transactional()") => {
1380
+ }, Ms = (e, t = "transactional()") => {
1381
1381
  let n = 0, r, i = (e) => {
1382
1382
  r === void 0 && (r = { error: e });
1383
1383
  };
1384
1384
  return {
1385
1385
  track: (a) => r === void 0 ? n > 0 ? a() : a().catch((t) => {
1386
1386
  throw e(t) && i(t), t;
1387
- }) : Promise.reject(new As(t, r.error)),
1387
+ }) : Promise.reject(new js(t, r.error)),
1388
1388
  inSavepoint: async (e) => {
1389
1389
  n++;
1390
1390
  try {
@@ -1396,7 +1396,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1396
1396
  record: i,
1397
1397
  abortedBy: () => r
1398
1398
  };
1399
- }, Ms = async (e, t) => {
1399
+ }, Ns = async (e, t) => {
1400
1400
  let { tracker: n, name: r, exec: i, spelling: a } = e;
1401
1401
  await n.track(() => i(a === "mssql" ? `SAVE TRANSACTION ${r}` : `SAVEPOINT ${r}`));
1402
1402
  try {
@@ -1405,8 +1405,8 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1405
1405
  } catch (e) {
1406
1406
  throw await i(a === "mssql" ? `ROLLBACK TRANSACTION ${r}` : `ROLLBACK TO SAVEPOINT ${r}`).catch((e) => n.record(e)), a === "standard" && await i(`RELEASE SAVEPOINT ${r}`).catch(() => void 0), e;
1407
1407
  }
1408
- }, Ns = (e) => e instanceof As || typeof e == "object" && !!e && e._tag === "TransactionAborted", Ps = (e) => {
1409
- for (let t of yt(e)) {
1408
+ }, Ps = (e) => e instanceof js || typeof e == "object" && !!e && e._tag === "TransactionAborted", Fs = (e) => {
1409
+ for (let t of _t(e)) {
1410
1410
  let e = t;
1411
1411
  for (let t = 0; t < 5 && typeof e == "object" && e; t++) {
1412
1412
  let t = e.code, n = e.message;
@@ -1415,14 +1415,14 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1415
1415
  }
1416
1416
  }
1417
1417
  return e instanceof Error ? e.message : String(e);
1418
- }, Fs = async (e) => {
1419
- let t = Oo(), n = t === void 0 ? (e) => e() : (e) => Do(t, e), r = await ks({
1418
+ }, Is = async (e) => {
1419
+ let t = Eo(), n = t === void 0 ? (e) => e() : (e) => To(t, e), r = await As({
1420
1420
  ...e,
1421
1421
  body: (r) => {
1422
1422
  let i = e.makeView(r, t);
1423
1423
  return n(() => e.work(i)).then((t) => {
1424
1424
  let n = i.abortedBy?.();
1425
- if (n !== void 0) throw e.isRetryable(n.error) ? n.error : new As(e.label, n.error);
1425
+ if (n !== void 0) throw e.isRetryable(n.error) ? n.error : new js(e.label, n.error);
1426
1426
  return {
1427
1427
  result: t,
1428
1428
  view: i
@@ -1434,50 +1434,50 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1434
1434
  }
1435
1435
  });
1436
1436
  return r.view.commitEvents(), r.result;
1437
- }, Is = /* @__PURE__ */ new Set([
1437
+ }, Ls = /* @__PURE__ */ new Set([
1438
1438
  "1213",
1439
1439
  "ER_LOCK_DEADLOCK",
1440
1440
  "1205",
1441
1441
  "ER_LOCK_WAIT_TIMEOUT",
1442
1442
  "1020",
1443
1443
  "ER_CHECKREAD"
1444
- ]), Ls = /* @__PURE__ */ new Set(["40001", "40P01"]), Rs = /* @__PURE__ */ new Set(["1205"]), zs = /* @__PURE__ */ new Set([
1444
+ ]), Rs = /* @__PURE__ */ new Set(["40001", "40P01"]), zs = /* @__PURE__ */ new Set(["1205"]), Bs = /* @__PURE__ */ new Set([
1445
1445
  "SQLITE_BUSY",
1446
1446
  "5",
1447
1447
  "SQLITE_LOCKED",
1448
1448
  "6"
1449
- ]), Bs = /write-write conflict|write-read conflict|database is locked|table is locked|database is busy/i, Vs = /* @__PURE__ */ new Set([
1449
+ ]), Vs = /write-write conflict|write-read conflict|database is locked|table is locked|database is busy/i, Hs = /* @__PURE__ */ new Set([
1450
1450
  1213,
1451
1451
  1205,
1452
1452
  1020
1453
- ]), Hs = /* @__PURE__ */ new Set([
1454
- ...Is,
1453
+ ]), Us = /* @__PURE__ */ new Set([
1455
1454
  ...Ls,
1456
1455
  ...Rs,
1457
- ...zs
1458
- ]), Us = (e) => yt(e).some(Ws), Ws = (e) => {
1456
+ ...zs,
1457
+ ...Bs
1458
+ ]), Ws = (e) => _t(e).some(Gs), Gs = (e) => {
1459
1459
  let t = e;
1460
1460
  for (let e = 0; e < 6 && typeof t == "object" && t; e++) {
1461
1461
  let e = t;
1462
- if (typeof e.errno == "number" && Vs.has(e.errno) || typeof e.number == "number" && Rs.has(String(e.number)) || typeof e.code == "string" && Hs.has(e.code) || typeof e.sqlState == "string" && Ls.has(e.sqlState) || typeof e.message == "string" && Bs.test(e.message)) return !0;
1462
+ if (typeof e.errno == "number" && Hs.has(e.errno) || typeof e.number == "number" && zs.has(String(e.number)) || typeof e.code == "string" && Us.has(e.code) || typeof e.sqlState == "string" && Rs.has(e.sqlState) || typeof e.message == "string" && Vs.test(e.message)) return !0;
1463
1463
  t = e.cause;
1464
1464
  }
1465
1465
  return !1;
1466
- }, Gs = "voltro/expires", Ks = () => Be({
1467
- id: Gs,
1468
- fields: { expiresAt: b().nullable() },
1466
+ }, Ks = "voltro/expires", qs = () => Re({
1467
+ id: Ks,
1468
+ fields: { expiresAt: y().nullable() },
1469
1469
  behaviors: { defaultWhere: () => "expiresAt IS NULL OR expiresAt > now()" }
1470
- }), qs = "voltro/localFirst", Js = () => Be({
1471
- id: qs,
1470
+ }), Js = "voltro/localFirst", Ys = () => Re({
1471
+ id: Js,
1472
1472
  fields: {}
1473
- }), Ys = (e) => e.appliedMixins.some((e) => e.id === qs), Xs = (e) => {
1473
+ }), Xs = (e) => e.appliedMixins.some((e) => e.id === Js), Zs = (e) => {
1474
1474
  let t = [];
1475
- for (let n of Object.values(e)) Ys(n) && t.push(n.tableName);
1475
+ for (let n of Object.values(e)) Xs(n) && t.push(n.tableName);
1476
1476
  return t;
1477
- }, Zs = class extends Er.TaggedError("TableStreamError") {}, Qs = 1e3, $s = (e, t, n, r) => {
1478
- let i = E.match(r, {
1477
+ }, Qs = class extends wr.TaggedError("TableStreamError") {}, $s = 1e3, ec = (e, t, n, r) => {
1478
+ let i = k.match(r, {
1479
1479
  onNone: () => e.where,
1480
- onSome: (n) => e.where ? pt(e.where, Ot(t, n)) : Ot(t, n)
1480
+ onSome: (n) => e.where ? dt(e.where, Et(t, n)) : Et(t, n)
1481
1481
  });
1482
1482
  return {
1483
1483
  table: e.table,
@@ -1492,19 +1492,19 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1492
1492
  ...e.includeDeleted === void 0 ? {} : { includeDeleted: e.includeDeleted },
1493
1493
  ...e.crossTenant === void 0 ? {} : { crossTenant: e.crossTenant }
1494
1494
  };
1495
- }, ec = (e, t) => {
1496
- let n = t.pk ?? "id", r = t.chunkSize ?? Qs;
1497
- return Ar.paginateChunkEffect(E.none(), (i) => {
1498
- let a = w.tryPromise({
1499
- try: () => e.query($s(t, n, r, i)),
1500
- catch: (e) => new Zs({
1495
+ }, tc = (e, t) => {
1496
+ let n = t.pk ?? "id", r = t.chunkSize ?? $s;
1497
+ return Or.paginateChunkEffect(k.none(), (i) => {
1498
+ let a = D.tryPromise({
1499
+ try: () => e.query(ec(t, n, r, i)),
1500
+ catch: (e) => new Qs({
1501
1501
  table: t.table,
1502
1502
  cause: e
1503
1503
  })
1504
1504
  });
1505
- return (t.retry ? a.pipe(w.retry(t.retry)) : a).pipe(w.map((e) => [Tr.fromIterable(e), e.length === r && e.length > 0 ? E.some(E.some(e[e.length - 1][n])) : E.none()]));
1505
+ return (t.retry ? a.pipe(D.retry(t.retry)) : a).pipe(D.map((e) => [Cr.fromIterable(e), e.length === r && e.length > 0 ? k.some(k.some(e[e.length - 1][n])) : k.none()]));
1506
1506
  });
1507
- }, tc = (e) => {
1507
+ }, nc = (e) => {
1508
1508
  let t = e.alpha ?? .5;
1509
1509
  if (t < 0 || t > 1) throw Error(`hybridSearch: alpha must be in [0, 1], got ${t}`);
1510
1510
  return (n) => {
@@ -1518,7 +1518,7 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1518
1518
  queryText: e.vector.query,
1519
1519
  distance: e.vector.distance ?? "cosine",
1520
1520
  alpha: t
1521
- }, i = Gt(n.table, e.fts.indexName, n.fullTextIndexes);
1521
+ }, i = Ut(n.table, e.fts.indexName, n.fullTextIndexes);
1522
1522
  return {
1523
1523
  ...n,
1524
1524
  annClause: r,
@@ -1531,17 +1531,17 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1531
1531
  }
1532
1532
  };
1533
1533
  };
1534
- }, nc = async (e, t) => {
1534
+ }, rc = async (e, t) => {
1535
1535
  let n = e.as ?? "embedding", r = t.row[e.from];
1536
1536
  if (typeof r != "string" || r.length === 0) return {};
1537
1537
  let i = await t.embed(r);
1538
1538
  return { [n]: i };
1539
- }, rc = (e) => {
1539
+ }, ic = (e) => {
1540
1540
  if (!Number.isInteger(e.dimensions) || e.dimensions <= 0) throw Error(`vectorEmbedding: dimensions must be a positive integer, got ${String(e.dimensions)}.`);
1541
- let t = e.as ?? "embedding", n = (t) => nc(e, t);
1542
- return Be({
1541
+ let t = e.as ?? "embedding", n = (t) => rc(e, t);
1542
+ return Re({
1543
1543
  id: "voltro/vectorEmbedding",
1544
- fields: { [t]: pe(e.dimensions) },
1544
+ fields: { [t]: rt(e.dimensions) },
1545
1545
  ...e.index === !1 ? {} : { indexes: [{
1546
1546
  fields: [t],
1547
1547
  kind: "hnsw",
@@ -1556,19 +1556,19 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1556
1556
  beforeUpdate: n
1557
1557
  }
1558
1558
  });
1559
- }, ic = 63, ac = "br_pr", Y = class extends Error {
1559
+ }, ac = 63, oc = "br_pr", Y = class extends Error {
1560
1560
  _tag = "BranchNameInvalid";
1561
1561
  constructor(e) {
1562
1562
  super(e), this.name = "BranchNameInvalid";
1563
1563
  }
1564
- }, oc = (e, t) => {
1564
+ }, sc = (e, t) => {
1565
1565
  if (!Number.isInteger(t) || t < 0) throw new Y(`prNumber must be a non-negative integer, got ${String(t)}`);
1566
1566
  let n = se(e);
1567
1567
  if (n.replace(/_/g, "") === "") throw new Y(`app slug '${e}' has no usable identifier characters`);
1568
- let r = `${ac}${t}_${n}`;
1569
- if (r.length > ic) throw new Y(`branch namespace '${r}' exceeds the ${ic}-byte identifier limit — use a shorter app slug`);
1568
+ let r = `${oc}${t}_${n}`;
1569
+ if (r.length > ac) throw new Y(`branch namespace '${r}' exceeds the ${ac}-byte identifier limit — use a shorter app slug`);
1570
1570
  return r;
1571
- }, sc = (e) => e.startsWith(ac), cc = {
1571
+ }, cc = (e) => e.startsWith(oc), lc = {
1572
1572
  requested: {
1573
1573
  provision: "provisioning",
1574
1574
  destroy: "destroying"
@@ -1587,18 +1587,18 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1587
1587
  fail: "failed"
1588
1588
  },
1589
1589
  destroyed: {}
1590
- }, lc = class extends Error {
1590
+ }, uc = class extends Error {
1591
1591
  from;
1592
1592
  event;
1593
1593
  _tag = "BranchTransitionInvalid";
1594
1594
  constructor(e, t) {
1595
1595
  super(`invalid branch transition: ${e} --${t}-->`), this.from = e, this.event = t, this.name = "BranchTransitionInvalid";
1596
1596
  }
1597
- }, uc = (e, t) => {
1598
- let n = cc[e][t];
1599
- if (n === void 0) throw new lc(e, t);
1597
+ }, dc = (e, t) => {
1598
+ let n = lc[e][t];
1599
+ if (n === void 0) throw new uc(e, t);
1600
1600
  return n;
1601
- }, dc = (e, t, n, r, i = [], a = []) => {
1601
+ }, fc = (e, t, n, r, i = [], a = []) => {
1602
1602
  if (n === "copy" && (r === void 0 || r === "")) throw new Y("seed 'copy' requires a parentNamespace to snapshot from");
1603
1603
  let o = [{
1604
1604
  kind: "create-namespace",
@@ -1628,13 +1628,13 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1628
1628
  kind: "seed",
1629
1629
  detail: `run boot seeds into ${e}`
1630
1630
  }), o;
1631
- }, fc = (e) => {
1632
- if (!sc(e)) throw new Y(`refusing to plan teardown of '${e}' — not a branch namespace`);
1631
+ }, pc = (e) => {
1632
+ if (!cc(e)) throw new Y(`refusing to plan teardown of '${e}' — not a branch namespace`);
1633
1633
  return [{
1634
1634
  kind: "drop-namespace",
1635
1635
  detail: e
1636
1636
  }];
1637
- }, pc = (e) => {
1637
+ }, mc = (e) => {
1638
1638
  if (e === void 0 || e === "") return !1;
1639
1639
  try {
1640
1640
  let t = new URL(e).hostname.toLowerCase();
@@ -1642,27 +1642,27 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1642
1642
  } catch {
1643
1643
  return /\bneon\.(tech|build)\b/i.test(e);
1644
1644
  }
1645
- }, mc = (e) => e.prefer === void 0 ? e.seed === "copy" && pc(e.dbUrl) ? "neon-cow" : "namespace" : e.prefer, hc = (e, t = {}) => [{
1645
+ }, hc = (e) => e.prefer === void 0 ? e.seed === "copy" && mc(e.dbUrl) ? "neon-cow" : "namespace" : e.prefer, gc = (e, t = {}) => [{
1646
1646
  kind: "neon-branch-create",
1647
1647
  detail: `${t.parentBranch ?? "main"} → ${e} (copy-on-write)`
1648
- }], gc = (e) => {
1649
- if (!sc(e)) throw new Y(`refusing to plan teardown of '${e}' — not a branch namespace`);
1648
+ }], _c = (e) => {
1649
+ if (!cc(e)) throw new Y(`refusing to plan teardown of '${e}' — not a branch namespace`);
1650
1650
  return [{
1651
1651
  kind: "neon-branch-delete",
1652
1652
  detail: e
1653
1653
  }];
1654
- }, _c = (e) => e.mechanism === "neon-cow" ? hc(e.branchId, e.neonParentBranch === void 0 ? {} : { parentBranch: e.neonParentBranch }) : dc(e.branchId, e.tableNames, e.seed, e.parentNamespace, e.foreignKeys, e.indexNames), vc = (e, t) => e === "neon-cow" ? gc(t) : fc(t), yc = (e, t, n) => {
1654
+ }, vc = (e) => e.mechanism === "neon-cow" ? gc(e.branchId, e.neonParentBranch === void 0 ? {} : { parentBranch: e.neonParentBranch }) : fc(e.branchId, e.tableNames, e.seed, e.parentNamespace, e.foreignKeys, e.indexNames), yc = (e, t) => e === "neon-cow" ? _c(t) : pc(t), bc = (e, t, n) => {
1655
1655
  let r = e.filter((e) => e.state !== "destroyed" && e.state !== "destroying"), i = r.filter((e) => n - e.createdAtMs > t.ttlMs).map((e) => e.namespace), a = new Set(i);
1656
1656
  return {
1657
1657
  evict: i,
1658
1658
  rejectNew: r.filter((e) => !a.has(e.namespace)).length >= t.maxBranches
1659
1659
  };
1660
- }, bc = async (e, t) => {
1661
- let n = oc(e.appSlug, e.prNumber), r = mc({
1660
+ }, xc = async (e, t) => {
1661
+ let n = sc(e.appSlug, e.prNumber), r = hc({
1662
1662
  seed: e.seed,
1663
1663
  ...e.dbUrl === void 0 ? {} : { dbUrl: e.dbUrl },
1664
1664
  ...e.prefer === void 0 ? {} : { prefer: e.prefer }
1665
- }), i = _c({
1665
+ }), i = vc({
1666
1666
  mechanism: r,
1667
1667
  branchId: n,
1668
1668
  tableNames: e.tableNames,
@@ -1691,15 +1691,15 @@ var Fr = (e) => typeof e == "string" && e !== "" ? e : null, Ir = async (e, t, n
1691
1691
  mechanism: r,
1692
1692
  steps: i
1693
1693
  };
1694
- }, xc = async (e, t, n) => {
1695
- let r = vc(t, e);
1694
+ }, Sc = async (e, t, n) => {
1695
+ let r = yc(t, e);
1696
1696
  return t === "neon-cow" ? await n.neonBranchDelete(e) : await n.dropNamespace(e), r;
1697
- }, Sc = (e, t, n) => yc(e, t, n), X = (e) => `"${e.replace(/"/g, "\"\"")}"`, Cc = {
1697
+ }, Cc = (e, t, n) => bc(e, t, n), X = (e) => `"${e.replace(/"/g, "\"\"")}"`, wc = {
1698
1698
  cascade: "CASCADE",
1699
1699
  restrict: "RESTRICT",
1700
1700
  setNull: "SET NULL",
1701
1701
  noAction: "NO ACTION"
1702
- }, Z = (e) => `'${e.replace(/'/g, "''")}'`, wc = (e, t) => {
1702
+ }, Z = (e) => `'${e.replace(/'/g, "''")}'`, Tc = (e, t) => {
1703
1703
  let n = t.columns.map(Z).join(", ");
1704
1704
  return `DO $voltro_branch$
1705
1705
  DECLARE derived name;
@@ -1726,10 +1726,10 @@ BEGIN
1726
1726
  END IF;
1727
1727
  END
1728
1728
  $voltro_branch$`;
1729
- }, Tc = (e, t) => {
1730
- let n = t.onDelete === void 0 ? "" : ` ON DELETE ${Cc[t.onDelete]}`, r = t.onUpdate === void 0 ? "" : ` ON UPDATE ${Cc[t.onUpdate]}`;
1729
+ }, Ec = (e, t) => {
1730
+ let n = t.onDelete === void 0 ? "" : ` ON DELETE ${wc[t.onDelete]}`, r = t.onUpdate === void 0 ? "" : ` ON UPDATE ${wc[t.onUpdate]}`;
1731
1731
  return `ALTER TABLE ${X(e)}.${X(t.table)} ADD FOREIGN KEY (${X(t.column)}) REFERENCES ${X(e)}.${X(t.targetTable)} (${X(t.targetColumn)})${n}${r}`;
1732
- }, Ec = (e) => {
1732
+ }, Dc = (e) => {
1733
1733
  let t = () => {
1734
1734
  throw Error("namespace branch executor: Neon ops require a neon-cow executor (use a Neon connection for copy-on-write branches)");
1735
1735
  };
@@ -1737,24 +1737,24 @@ $voltro_branch$`;
1737
1737
  createNamespace: (t) => e.run(`CREATE SCHEMA IF NOT EXISTS ${X(t)}`),
1738
1738
  createTable: (t, n) => e.run(`CREATE TABLE IF NOT EXISTS ${X(t)}.${X(n)} (LIKE ${X(n)} INCLUDING ALL)`),
1739
1739
  copyTable: (t, n, r) => e.run(`INSERT INTO ${X(n)}.${X(r)} SELECT * FROM ${X(t)}.${X(r)}`),
1740
- addForeignKey: (t, n) => e.run(Tc(t, n)),
1741
- restoreIndexName: (t, n) => e.run(wc(t, n)),
1740
+ addForeignKey: (t, n) => e.run(Ec(t, n)),
1741
+ restoreIndexName: (t, n) => e.run(Tc(t, n)),
1742
1742
  dropNamespace: (t) => e.run(`DROP SCHEMA IF EXISTS ${X(t)} CASCADE`),
1743
1743
  neonBranchCreate: t,
1744
1744
  neonBranchDelete: t
1745
1745
  };
1746
- }, Dc = class extends Error {
1746
+ }, Oc = class extends Error {
1747
1747
  _tag = "TenantResidencyUnresolved";
1748
1748
  constructor(e) {
1749
1749
  super(e), this.name = "TenantResidencyUnresolved";
1750
1750
  }
1751
- }, Oc = class extends Error {
1751
+ }, kc = class extends Error {
1752
1752
  region;
1753
1753
  _tag = "TenantRegionUnavailable";
1754
1754
  constructor(e, t) {
1755
1755
  super(t), this.region = e, this.name = "TenantRegionUnavailable";
1756
1756
  }
1757
- }, kc, Ac = (e) => {
1757
+ }, Ac, jc = (e) => {
1758
1758
  if (e.homes === void 0) throw Error("setResidencyConfig: `homes` is required");
1759
1759
  if (e.servableRegions === void 0 || e.servableRegions.length === 0) throw Error("setResidencyConfig: `servableRegions` must be non-empty (which regions this deployment serves)");
1760
1760
  let t = /* @__PURE__ */ new Map();
@@ -1763,55 +1763,55 @@ $voltro_branch$`;
1763
1763
  if (e !== void 0 && e !== n.region) throw Error(`residency: tenant '${n.tenantId}' is mapped to two regions ('${e}' and '${n.region}')`);
1764
1764
  t.set(n.tenantId, n.region);
1765
1765
  }
1766
- return kc = e, e;
1767
- }, jc = () => kc, Mc = () => {
1768
- kc = void 0;
1769
- }, Nc = (e, t) => {
1770
- if (e == null || e === "") throw new Dc("residency is on but the request has no resolvable tenant — refusing to bind a store");
1766
+ return Ac = e, e;
1767
+ }, Mc = () => Ac, Nc = () => {
1768
+ Ac = void 0;
1769
+ }, Pc = (e, t) => {
1770
+ if (e == null || e === "") throw new Oc("residency is on but the request has no resolvable tenant — refusing to bind a store");
1771
1771
  let n = t.homes.find((t) => t.tenantId === e);
1772
- if (n === void 0) throw new Dc(`no residency home is mapped for tenant '${e}' — refusing to fall back to a default store (would be a residency violation)`);
1772
+ if (n === void 0) throw new Oc(`no residency home is mapped for tenant '${e}' — refusing to fall back to a default store (would be a residency violation)`);
1773
1773
  return n;
1774
- }, Pc = (e, t) => t.servableRegions.includes(e), Fc = (e, t) => {
1775
- let n = Nc(e.tenantId, t), r = He(n.tenantId);
1774
+ }, Fc = (e, t) => t.servableRegions.includes(e), Ic = (e, t) => {
1775
+ let n = Pc(e.tenantId, t), r = ze(n.tenantId);
1776
1776
  return {
1777
1777
  region: n.region,
1778
1778
  namespace: r,
1779
1779
  ...n.connectionKey === void 0 ? {} : { connectionKey: n.connectionKey }
1780
1780
  };
1781
- }, Ic = (e, t, n) => {
1782
- let r = Fc(e, t);
1783
- if (!Pc(r.region, t)) throw new Oc(r.region, `tenant homed in region '${r.region}', which this deployment does not serve — route to the home region`);
1781
+ }, Lc = (e, t, n) => {
1782
+ let r = Ic(e, t);
1783
+ if (!Fc(r.region, t)) throw new kc(r.region, `tenant homed in region '${r.region}', which this deployment does not serve — route to the home region`);
1784
1784
  let i = n.get(r.region);
1785
- if (i === void 0) throw new Oc(r.region, `no store handle for home region '${r.region}' (declared servable but not wired) — failing closed`);
1785
+ if (i === void 0) throw new kc(r.region, `no store handle for home region '${r.region}' (declared servable but not wired) — failing closed`);
1786
1786
  return {
1787
1787
  store: i,
1788
1788
  placement: r
1789
1789
  };
1790
- }, Lc = async (e, t, n, r) => {
1791
- let { store: i, placement: a } = Ic(e, t, n);
1790
+ }, Rc = async (e, t, n, r) => {
1791
+ let { store: i, placement: a } = Lc(e, t, n);
1792
1792
  return await r(i, a), a;
1793
- }, Rc = (e) => {
1793
+ }, zc = (e) => {
1794
1794
  if (typeof e == "string") return e;
1795
1795
  if ("jsonPath" in e) {
1796
1796
  let { column: t, path: n, numeric: r } = e.jsonPath;
1797
1797
  return `(json:${t}->${n.join(".")}${r ? "::num" : ""})`;
1798
1798
  }
1799
1799
  return `(${e.expr})`;
1800
- }, Q = (e) => e.map(Rc), zc = (e, t) => {
1800
+ }, Q = (e) => e.map(zc), Bc = (e, t) => {
1801
1801
  if (e.length !== t.length) return !1;
1802
- for (let n = 0; n < e.length; n++) if (Rc(e[n]) !== Rc(t[n])) return !1;
1802
+ for (let n = 0; n < e.length; n++) if (zc(e[n]) !== zc(t[n])) return !1;
1803
1803
  return !0;
1804
- }, Bc = (e, t) => {
1804
+ }, Vc = (e, t) => {
1805
1805
  if (e.length >= t.length) return !1;
1806
- for (let n = 0; n < e.length; n++) if (Rc(e[n]) !== Rc(t[n])) return !1;
1806
+ for (let n = 0; n < e.length; n++) if (zc(e[n]) !== zc(t[n])) return !1;
1807
1807
  return !0;
1808
- }, Vc = (e) => {
1808
+ }, Hc = (e) => {
1809
1809
  let t = [], n = e.appliedIndexes, r = e.tableName;
1810
1810
  for (let e = 0; e < n.length; e++) {
1811
1811
  let i = n[e];
1812
1812
  for (let a = e + 1; a < n.length; a++) {
1813
1813
  let e = n[a];
1814
- if (zc(i.fields, e.fields)) {
1814
+ if (Bc(i.fields, e.fields)) {
1815
1815
  let [n, a] = i.name < e.name ? [i, e] : [e, i];
1816
1816
  t.push({
1817
1817
  kind: "duplicate-fields",
@@ -1822,13 +1822,13 @@ $voltro_branch$`;
1822
1822
  });
1823
1823
  continue;
1824
1824
  }
1825
- Bc(i.fields, e.fields) ? t.push({
1825
+ Vc(i.fields, e.fields) ? t.push({
1826
1826
  kind: "redundant-prefix",
1827
1827
  table: r,
1828
1828
  redundant: i,
1829
1829
  coveredBy: e,
1830
1830
  message: `'${r}' index '${i.name}' on [${Q(i.fields).join(", ")}] is a leading prefix of '${e.name}' on [${Q(e.fields).join(", ")}]. Every B-tree dialect we support (Postgres / MySQL / MariaDB / MSSQL / SQLite) can serve a [${Q(i.fields).join(", ")}] query from '${e.name}' too via the leading-prefix rule, so '${i.name}' adds write cost without read benefit. Drop '${i.name}' — unless you specifically need a smaller index for cache locality on a write-heavy table (rare; profile first).`
1831
- }) : Bc(e.fields, i.fields) && t.push({
1831
+ }) : Vc(e.fields, i.fields) && t.push({
1832
1832
  kind: "redundant-prefix",
1833
1833
  table: r,
1834
1834
  redundant: e,
@@ -1838,23 +1838,23 @@ $voltro_branch$`;
1838
1838
  }
1839
1839
  }
1840
1840
  return t;
1841
- }, Hc = (e) => {
1841
+ }, Uc = (e) => {
1842
1842
  let t = [];
1843
- for (let n of e) t.push(...Vc(n));
1843
+ for (let n of e) t.push(...Hc(n));
1844
1844
  return t;
1845
- }, Uc = "\x1B[", Wc = `${Uc}38;2;245;158;11m`, Gc = `${Uc}38;2;16;185;129m`, Kc = (e, t) => `${e}${t}${O.reset}`, $ = (e, t, n) => e ? typeof t == "function" ? t(n) : Kc(t, n) : n, qc = (e, t = {}) => {
1846
- let n = t.color ?? !0, r = t.indent ?? " ", i = (e) => $(n, O.dim, e.padEnd(11)), a = (e) => $(n, (e) => O.bold(O.brand(e)), e), o = (e) => $(n, O.brightRed24, e), s = (e) => $(n, Gc, e), c = (e) => $(n, Wc, e), l = (e) => $(n, O.dim, e), u = `${c("index audit")} ${l("·")} ${$(n, O.bold, e.kind)}`, d = e.redundant.fields.length, f = Q(e.coveredBy.fields.slice(d)), p = (e, t) => {
1845
+ }, Wc = "\x1B[", Gc = `${Wc}38;2;245;158;11m`, Kc = `${Wc}38;2;16;185;129m`, qc = (e, t) => `${e}${t}${j.reset}`, $ = (e, t, n) => e ? typeof t == "function" ? t(n) : qc(t, n) : n, Jc = (e, t = {}) => {
1846
+ let n = t.color ?? !0, r = t.indent ?? " ", i = (e) => $(n, j.dim, e.padEnd(11)), a = (e) => $(n, (e) => j.bold(j.brand(e)), e), o = (e) => $(n, j.brightRed24, e), s = (e) => $(n, Kc, e), c = (e) => $(n, Gc, e), l = (e) => $(n, j.dim, e), u = `${c("index audit")} ${l("·")} ${$(n, j.bold, e.kind)}`, d = e.redundant.fields.length, f = Q(e.coveredBy.fields.slice(d)), p = (e, t) => {
1847
1847
  let n = e.slice(0, t), r = e.slice(t), i = [];
1848
1848
  return n.length > 0 && i.push(s(`[${n.join(", ")}]`)), r.length > 0 && i.push(c(`+ [${r.join(", ")}]`)), i.join(" ");
1849
1849
  }, m = [];
1850
- return m.push(u), m.push(""), m.push(`${i("table")}${a(e.table)}`), m.push(""), m.push(`${i("redundant")}${o(e.redundant.name)}`), m.push(`${i("")}${p(Q(e.redundant.fields), d)}`), m.push(""), m.push(`${i("covered by")}${s(e.coveredBy.name)}`), m.push(`${i("")}${p(Q(e.coveredBy.fields), d)}`), f.length > 0 && m.push(`${i("")}${l(`└ extra columns: ${f.join(", ")}`)}`), m.push(""), e.kind === "redundant-prefix" ? (m.push(`${i("why")}B-tree indexes serve queries that filter on a LEADING PREFIX of`), m.push(`${i("")}their column list. The wider index already covers every`), m.push(`${i("")}query the narrower one can serve.`), m.push(`${i("")}${l("Same rule on Postgres / MySQL / MariaDB / MSSQL / SQLite.")}`)) : (m.push(`${i("why")}Two indexes on the same columns under different names.`), m.push(`${i("")}The B-tree engine builds both — same coverage, double cost.`), m.push(`${i("")}${l("Same rule on Postgres / MySQL / MariaDB / MSSQL / SQLite.")}`)), m.push(""), m.push(`${i("cost")}Every ${a("INSERT")} / ${a("UPDATE")} / ${a("DELETE")} on this table writes`), m.push(`${i("")}to ${$(n, O.bold, "both")} B-trees. Pure write overhead, zero read benefit.`), m.push(""), m.push(`${i("fix")}Drop ${o(e.redundant.name)}`), m.push(`${i("")}${l("Keep only if profiling shows the smaller index gives a")}`), m.push(`${i("")}${l("measurable cache-locality boost on a write-heavy hot path.")}`), m.push(`${i("")}${l("Silence with VOLTRO_INDEX_AUDIT=off if intentional.")}`), m.map((e) => `${r}${e}`).join("\n");
1851
- }, Jc = (e, { apply: t, undo: n }) => ({
1850
+ return m.push(u), m.push(""), m.push(`${i("table")}${a(e.table)}`), m.push(""), m.push(`${i("redundant")}${o(e.redundant.name)}`), m.push(`${i("")}${p(Q(e.redundant.fields), d)}`), m.push(""), m.push(`${i("covered by")}${s(e.coveredBy.name)}`), m.push(`${i("")}${p(Q(e.coveredBy.fields), d)}`), f.length > 0 && m.push(`${i("")}${l(`└ extra columns: ${f.join(", ")}`)}`), m.push(""), e.kind === "redundant-prefix" ? (m.push(`${i("why")}B-tree indexes serve queries that filter on a LEADING PREFIX of`), m.push(`${i("")}their column list. The wider index already covers every`), m.push(`${i("")}query the narrower one can serve.`), m.push(`${i("")}${l("Same rule on Postgres / MySQL / MariaDB / MSSQL / SQLite.")}`)) : (m.push(`${i("why")}Two indexes on the same columns under different names.`), m.push(`${i("")}The B-tree engine builds both — same coverage, double cost.`), m.push(`${i("")}${l("Same rule on Postgres / MySQL / MariaDB / MSSQL / SQLite.")}`)), m.push(""), m.push(`${i("cost")}Every ${a("INSERT")} / ${a("UPDATE")} / ${a("DELETE")} on this table writes`), m.push(`${i("")}to ${$(n, j.bold, "both")} B-trees. Pure write overhead, zero read benefit.`), m.push(""), m.push(`${i("fix")}Drop ${o(e.redundant.name)}`), m.push(`${i("")}${l("Keep only if profiling shows the smaller index gives a")}`), m.push(`${i("")}${l("measurable cache-locality boost on a write-heavy hot path.")}`), m.push(`${i("")}${l("Silence with VOLTRO_INDEX_AUDIT=off if intentional.")}`), m.map((e) => `${r}${e}`).join("\n");
1851
+ }, Yc = (e, { apply: t, undo: n }) => ({
1852
1852
  name: e,
1853
1853
  apply: t,
1854
1854
  undo: n
1855
- }), Yc = (e) => {
1855
+ }), Xc = (e) => {
1856
1856
  if (!/^\d{14}_/.test(e.id)) throw Error(`migration "${e.id}": id must start with a 14-digit timestamp followed by "_" (convention: <YYYYMMDDHHMMSS>_<slug>)`);
1857
- let t = e.steps({ step: Jc });
1857
+ let t = e.steps({ step: Yc });
1858
1858
  if (t.length === 0) throw Error(`migration "${e.id}": at least one step is required`);
1859
1859
  return {
1860
1860
  __migration: !0,
@@ -1862,42 +1862,42 @@ $voltro_branch$`;
1862
1862
  name: e.name,
1863
1863
  steps: t
1864
1864
  };
1865
- }, Xc = (e) => typeof e == "object" && !!e && "__migration" in e && e.__migration === !0, Zc = lr.tableName, Qc = (e) => jr("sha256").update(`${e.type}\u0000${e.id}`, "utf8").digest("hex"), $c = async (e, t) => {
1865
+ }, Zc = (e) => typeof e == "object" && !!e && "__migration" in e && e.__migration === !0, Qc = sr.tableName, $c = (e) => kr("sha256").update(`${e.type}\u0000${e.id}`, "utf8").digest("hex"), el = async (e, t) => {
1866
1866
  let [n] = await e.query({
1867
- table: Zc,
1868
- predicate: Tn("id", Qc(t)),
1867
+ table: Qc,
1868
+ predicate: Cn("id", $c(t)),
1869
1869
  order: [],
1870
1870
  take: 1,
1871
1871
  skip: void 0,
1872
1872
  projection: void 0
1873
1873
  }), r = n?.tenantId;
1874
1874
  return typeof r == "string" ? r : null;
1875
- }, el = async (e, t, n) => {
1876
- await e.upsert(Zc, {
1877
- id: Qc(t),
1875
+ }, tl = async (e, t, n) => {
1876
+ await e.upsert(Qc, {
1877
+ id: $c(t),
1878
1878
  subjectType: t.type,
1879
1879
  subjectId: t.id,
1880
1880
  tenantId: n,
1881
1881
  selectedAt: /* @__PURE__ */ new Date()
1882
1882
  }, { conflictColumns: ["id"] });
1883
- }, tl = async (e, t) => {
1884
- await e.delete(Zc, Qc(t));
1885
- }, nl = "id", rl = (e, t) => {
1886
- let n = or(e);
1883
+ }, nl = async (e, t) => {
1884
+ await e.delete(Qc, $c(t));
1885
+ }, rl = "id", il = (e, t) => {
1886
+ let n = ir(e);
1887
1887
  if (n === void 0) return t;
1888
- let r = n.fields[nl]?.idScheme;
1889
- if (r === void 0 || t[nl] != null) return t;
1888
+ let r = n.fields[rl]?.idScheme;
1889
+ if (r === void 0 || t[rl] != null) return t;
1890
1890
  if (r.kind === "numeric") {
1891
- if (!(nl in t)) return t;
1891
+ if (!(rl in t)) return t;
1892
1892
  let e = { ...t };
1893
- return delete e[nl], e;
1893
+ return delete e[rl], e;
1894
1894
  }
1895
- let i = qe(r, e);
1895
+ let i = We(r, e);
1896
1896
  return i === null ? t : {
1897
1897
  ...t,
1898
- [nl]: i
1898
+ [rl]: i
1899
1899
  };
1900
- }, il = (e, t) => t.map((t) => rl(e, t)), al = {
1900
+ }, al = (e, t) => t.map((t) => il(e, t)), ol = {
1901
1901
  postgres: { maxBindParameters: 65535 },
1902
1902
  mysql: { maxBindParameters: 65535 },
1903
1903
  mariadb: { maxBindParameters: 65535 },
@@ -1907,25 +1907,25 @@ $voltro_branch$`;
1907
1907
  },
1908
1908
  sqlite: { maxBindParameters: 32766 },
1909
1909
  turso: { maxBindParameters: 32766 }
1910
- }, ol = (e) => al[e], sl = (e) => {
1910
+ }, sl = (e) => ol[e], cl = (e) => {
1911
1911
  let t = /* @__PURE__ */ new Set();
1912
1912
  for (let n of e) for (let e of Object.keys(n)) t.add(e);
1913
1913
  return t.size;
1914
- }, cl = (e, t) => {
1914
+ }, ll = (e, t) => {
1915
1915
  if (t === void 0 || e.length === 0) return [e];
1916
- let n = Math.max(1, sl(e)), r = Math.floor(t.maxBindParameters / n), i = t.maxRowsPerStatement ?? Infinity, a = Math.max(1, Math.min(r, i));
1916
+ let n = Math.max(1, cl(e)), r = Math.floor(t.maxBindParameters / n), i = t.maxRowsPerStatement ?? Infinity, a = Math.max(1, Math.min(r, i));
1917
1917
  if (e.length <= a) return [e];
1918
1918
  let o = [];
1919
1919
  for (let t = 0; t < e.length; t += a) o.push(e.slice(t, t + a));
1920
1920
  return o;
1921
- }, ll = (e, t) => {
1921
+ }, ul = (e, t) => {
1922
1922
  let n = [], r = t;
1923
1923
  for (let [t, i] of Object.entries(e.fields)) {
1924
1924
  let e = i;
1925
1925
  e.nullable || e.hasDefault || e.idScheme !== void 0 || e.generatedAs !== void 0 || (r[t] === void 0 || r[t] === null) && n.push(t);
1926
1926
  }
1927
1927
  return n;
1928
- }, ul = (e, t, n) => {
1928
+ }, dl = (e, t, n) => {
1929
1929
  let r = n, i = new Set(e === void 0 ? [] : Object.entries(e.fields).filter(([, e]) => e.generatedAs !== void 0).map(([e]) => e)), a = [];
1930
1930
  for (let e of t) i.has(e) || (r[e] === void 0 ? a.push({
1931
1931
  column: e,
@@ -1935,36 +1935,36 @@ $voltro_branch$`;
1935
1935
  reason: "null"
1936
1936
  }));
1937
1937
  return a;
1938
- }, dl = (e, t, n) => e.insert(t.tableName, n), fl = (e, t, n) => e.insertMany(t.tableName, n), pl = (e, t, n, r) => e.upsert(t.tableName, n, {
1938
+ }, fl = (e, t, n) => e.insert(t.tableName, n), pl = (e, t, n) => e.insertMany(t.tableName, n), ml = (e, t, n, r) => e.upsert(t.tableName, n, {
1939
1939
  conflictColumns: r.conflictColumns,
1940
1940
  ...r.update === void 0 ? {} : { update: r.update },
1941
1941
  ...r.updateValues === void 0 ? {} : { updateValues: r.updateValues }
1942
- }), ml = async (e, t, n, r) => {
1943
- if (e.upsertWithOutcome === void 0) throw x("upsertRowOutcome: this store does not implement `upsertWithOutcome`. It is provided by the framework's store wrapper, so `ctx.store` has it; a hand-written DataStore must add it.");
1942
+ }), hl = async (e, t, n, r) => {
1943
+ if (e.upsertWithOutcome === void 0) throw w("upsertRowOutcome: this store does not implement `upsertWithOutcome`. It is provided by the framework's store wrapper, so `ctx.store` has it; a hand-written DataStore must add it.");
1944
1944
  return e.upsertWithOutcome(t.tableName, n, {
1945
1945
  conflictColumns: r.conflictColumns,
1946
1946
  ...r.update === void 0 ? {} : { update: r.update },
1947
1947
  ...r.updateValues === void 0 ? {} : { updateValues: r.updateValues }
1948
1948
  });
1949
- }, hl = async (e, t, n, r) => e.insertIgnoreWithOutcome(t.tableName, n, { conflictColumns: r.conflictColumns }), gl = (e, t, n, r) => e.updateMany(t.tableName, n, { where: r.where }), _l = 512, vl = (e) => {
1949
+ }, gl = async (e, t, n, r) => e.insertIgnoreWithOutcome(t.tableName, n, { conflictColumns: r.conflictColumns }), _l = (e, t, n, r) => e.updateMany(t.tableName, n, { where: r.where }), vl = 512, yl = (e) => {
1950
1950
  e.setMaxListeners(512);
1951
- }, yl = (e, t, n) => ({
1951
+ }, bl = (e, t, n) => ({
1952
1952
  _tag: "PrimaryKeyConflictError",
1953
1953
  table: e,
1954
1954
  key: t,
1955
1955
  cause: n
1956
- }), bl = (e) => typeof e == "object" && !!e && e._tag === "PrimaryKeyConflictError", xl = {
1956
+ }), xl = (e) => typeof e == "object" && !!e && e._tag === "PrimaryKeyConflictError", Sl = {
1957
1957
  postgres: 5432,
1958
1958
  mysql: 3306,
1959
1959
  mariadb: 3306,
1960
1960
  mssql: 1433
1961
- }, Sl = /* @__PURE__ */ new Set([
1961
+ }, Cl = /* @__PURE__ */ new Set([
1962
1962
  "localhost",
1963
1963
  "127.0.0.1",
1964
1964
  "::1",
1965
1965
  "[::1]",
1966
1966
  "0.0.0.0"
1967
- ]), Cl = (e) => {
1967
+ ]), wl = (e) => {
1968
1968
  let t = e.host, n = e.port, r = e.database;
1969
1969
  if (e.url !== void 0 && e.url !== "") try {
1970
1970
  let i = new URL(e.url);
@@ -1973,29 +1973,29 @@ $voltro_branch$`;
1973
1973
  return;
1974
1974
  }
1975
1975
  if (t === void 0 || t === "" || r === void 0 || r === "") return;
1976
- let i = n ?? xl[(e.dialect ?? "").toLowerCase()];
1976
+ let i = n ?? Sl[(e.dialect ?? "").toLowerCase()];
1977
1977
  if (i === void 0 || !Number.isFinite(i)) return;
1978
1978
  let a = t.toLowerCase();
1979
1979
  return {
1980
- host: Sl.has(a) ? "localhost" : a,
1980
+ host: Cl.has(a) ? "localhost" : a,
1981
1981
  port: i,
1982
1982
  database: r.toLowerCase()
1983
1983
  };
1984
- }, wl = (e) => {
1985
- let t = Cl(e);
1986
- if (t !== void 0) return jr("sha256").update(`${t.host}\u0000${t.port}\u0000${t.database}`).digest("hex").slice(0, 32);
1987
- }, Tl = (e, t) => e === void 0 || t === void 0 ? "unknown" : e === t ? "same" : "different", El = {
1984
+ }, Tl = (e) => {
1985
+ let t = wl(e);
1986
+ if (t !== void 0) return kr("sha256").update(`${t.host}\u0000${t.port}\u0000${t.database}`).digest("hex").slice(0, 32);
1987
+ }, El = (e, t) => e === void 0 || t === void 0 ? "unknown" : e === t ? "same" : "different", Dl = {
1988
1988
  app: 3,
1989
1989
  plugin: 2,
1990
1990
  framework: 1
1991
- }, Dl = /* @__PURE__ */ new Map(), Ol = [], kl = () => [...Ol], Al = (e) => {
1991
+ }, Ol = /* @__PURE__ */ new Map(), kl = [], Al = () => [...kl], jl = (e) => {
1992
1992
  if (!e.table || !e.timeColumn) throw Error("registerRetention: table + timeColumn are required");
1993
1993
  if (!Number.isFinite(e.ttlMs) || e.ttlMs <= 0) throw Error(`registerRetention(${e.table}): ttlMs must be a positive number`);
1994
- let t = e.source ?? "app", n = Dl.get(e.table);
1994
+ let t = e.source ?? "app", n = Ol.get(e.table);
1995
1995
  if (n !== void 0) {
1996
1996
  let r = n.source ?? "app", i = n.ttlMs !== e.ttlMs || n.timeColumn !== e.timeColumn || JSON.stringify(n.activityColumns ?? []) !== JSON.stringify(e.activityColumns ?? []) || JSON.stringify(n.where) !== JSON.stringify(e.where);
1997
- if (El[t] < El[r]) {
1998
- i && Ol.push({
1997
+ if (Dl[t] < Dl[r]) {
1998
+ i && kl.push({
1999
1999
  table: e.table,
2000
2000
  kept: {
2001
2001
  source: r,
@@ -2008,7 +2008,7 @@ $voltro_branch$`;
2008
2008
  });
2009
2009
  return;
2010
2010
  }
2011
- i && r !== t && Ol.push({
2011
+ i && r !== t && kl.push({
2012
2012
  table: e.table,
2013
2013
  kept: {
2014
2014
  source: t,
@@ -2020,59 +2020,59 @@ $voltro_branch$`;
2020
2020
  }
2021
2021
  });
2022
2022
  }
2023
- Dl.set(e.table, {
2023
+ Ol.set(e.table, {
2024
2024
  ...e,
2025
2025
  source: t
2026
2026
  });
2027
- }, jl = () => [...Dl.values()], Ml = () => {
2028
- Dl.clear(), Ol.length = 0;
2029
- }, Nl = async (e, t, n, r = 2e4) => {
2030
- let i = new Date(t - e.ttlMs), a = (e.activityColumns ?? []).map((e) => fr(Zn(e), qt(e, i))), o = a.length === 0 ? e.where : pt(...e.where === void 0 ? [] : [e.where], ...a), s = 0;
2027
+ }, Ml = () => [...Ol.values()], Nl = () => {
2028
+ Ol.clear(), kl.length = 0;
2029
+ }, Pl = async (e, t, n, r = 2e4) => {
2030
+ let i = new Date(t - e.ttlMs), a = (e.activityColumns ?? []).map((e) => ur(Yn(e), Gt(e, i))), o = a.length === 0 ? e.where : dt(...e.where === void 0 ? [] : [e.where], ...a), s = 0;
2031
2031
  try {
2032
2032
  for (;;) {
2033
2033
  let t = await n(e.table, e.timeColumn, i, r, o);
2034
2034
  if (s += t, t < r) break;
2035
2035
  }
2036
2036
  } catch (t) {
2037
- throw w.runSync(T.increment(T.tagged(Fl, "table", e.table))), t;
2037
+ throw D.runSync(O.increment(O.tagged(Il, "table", e.table))), t;
2038
2038
  }
2039
- return s > 0 && w.runSync(T.incrementBy(T.tagged(Pl, "table", e.table), s)), s;
2040
- }, Pl = T.counter("voltro_retention_swept_rows_total"), Fl = T.counter("voltro_retention_sweep_errors_total"), Il = (e, t) => {
2039
+ return s > 0 && D.runSync(O.incrementBy(O.tagged(Fl, "table", e.table), s)), s;
2040
+ }, Fl = O.counter("voltro_retention_swept_rows_total"), Il = O.counter("voltro_retention_sweep_errors_total"), Ll = (e, t) => {
2041
2041
  let n = Number(e ?? String(t));
2042
2042
  return (Number.isFinite(n) && n > 0 ? n : t) * 36e5;
2043
- }, Ll = "_voltro_cdc_offsets", Rl = ke(Ll, {
2044
- id: y({ prefix: "cdcoff" }),
2045
- replicaId: l(),
2046
- streamName: l(),
2047
- binlogFile: l(),
2048
- binlogPosition: l(),
2049
- updatedAt: b()
2050
- }).index(["replicaId"]), zl = ke(Ll, {
2051
- id: y({ prefix: "cdcoff" }),
2052
- replicaId: l(),
2053
- streamName: l(),
2054
- ctVersion: l(),
2055
- updatedAt: b()
2056
- }).index(["replicaId"]), Bl = "_voltro_data_transfers", Vl = ke(Bl, {
2057
- id: y({ prefix: "dimp" }),
2058
- startedAt: b().default("now"),
2059
- finishedAt: b().nullable(),
2060
- direction: l().default("import"),
2061
- mode: l(),
2062
- via: l(),
2063
- bundle: l().nullable(),
2064
- sourceFingerprint: l().nullable(),
2065
- tablesWritten: fn().default(0),
2066
- rowsWritten: fn().default(0),
2067
- failure: l().nullable(),
2068
- staged: Xt().nullable()
2069
- }).renamedFrom("_voltro_data_imports").nonReactive(), Hl = (e) => {
2043
+ }, Rl = "_voltro_cdc_offsets", zl = b(Rl, {
2044
+ id: x({ prefix: "cdcoff" }),
2045
+ replicaId: C(),
2046
+ streamName: C(),
2047
+ binlogFile: C(),
2048
+ binlogPosition: C(),
2049
+ updatedAt: y()
2050
+ }).index(["replicaId"]), Bl = b(Rl, {
2051
+ id: x({ prefix: "cdcoff" }),
2052
+ replicaId: C(),
2053
+ streamName: C(),
2054
+ ctVersion: C(),
2055
+ updatedAt: y()
2056
+ }).index(["replicaId"]), Vl = "_voltro_data_transfers", Hl = b(Vl, {
2057
+ id: x({ prefix: "dimp" }),
2058
+ startedAt: y().default("now"),
2059
+ finishedAt: y().nullable(),
2060
+ direction: C().default("import"),
2061
+ mode: C(),
2062
+ via: C(),
2063
+ bundle: C().nullable(),
2064
+ sourceFingerprint: C().nullable(),
2065
+ tablesWritten: un().default(0),
2066
+ rowsWritten: un().default(0),
2067
+ failure: C().nullable(),
2068
+ staged: Jt().nullable()
2069
+ }).renamedFrom("_voltro_data_imports").nonReactive(), Ul = (e) => {
2070
2070
  let t = Number.isFinite(e.startedAt.getTime()) ? e.startedAt.toISOString() : "an unknown time", n = e.direction === "import" ? e.mode : `${e.direction} ${e.mode}`, r = e.failure === null ? e.finishedAt === null ? `${n} — started and never reported finishing` : e.direction === "backup" || e.direction === "restore" ? `${n} — finished${e.rowsWritten > 0 ? ` (${e.rowsWritten} blob(s))` : ""}` : `${n} — ${e.rowsWritten} row(s) across ${e.tablesWritten} table(s)` : `FAILED ${n} — ${e.failure}`, i = e.staged === null ? "" : e.staged ? " · staged (target untouched until the swap)" : " · NOT staged (target emptied first)";
2071
2071
  return `${t} · ${r} · via ${e.via}${i}` + (e.bundle === null ? "" : ` · from ${e.bundle}`) + (e.sourceFingerprint === null ? "" : ` · source schema ${e.sourceFingerprint}`);
2072
- }, Ul = 255, Wl = (e) => e == null ? "null" : typeof e == "string" || typeof e == "number" || typeof e == "boolean" ? JSON.stringify(e) : Array.isArray(e) ? `[${e.map(Wl).join(",")}]` : typeof e == "object" ? `{${Object.entries(e).filter(([, e]) => e !== void 0).sort(([e], [t]) => e < t ? -1 : +(e > t)).map(([e, t]) => `${JSON.stringify(e)}:${Wl(t)}`).join(",")}}` : JSON.stringify(String(e)), Gl = (e) => {
2072
+ }, Wl = 255, Gl = (e) => e == null ? "null" : typeof e == "string" || typeof e == "number" || typeof e == "boolean" ? JSON.stringify(e) : Array.isArray(e) ? `[${e.map(Gl).join(",")}]` : typeof e == "object" ? `{${Object.entries(e).filter(([, e]) => e !== void 0).sort(([e], [t]) => e < t ? -1 : +(e > t)).map(([e, t]) => `${JSON.stringify(e)}:${Gl(t)}`).join(",")}}` : JSON.stringify(String(e)), Kl = (e) => {
2073
2073
  if (e == null) return null;
2074
- let t = typeof e == "string" ? e : Wl(e);
2074
+ let t = typeof e == "string" ? e : Gl(e);
2075
2075
  return t.length > 255 ? t.slice(0, 255) : t;
2076
- }, Kl = "postgres";
2076
+ }, ql = "postgres";
2077
2077
  //#endregion
2078
- export { i as AUTO_FILLED_COLUMNS, Hr as BOUND_ENCRYPTED_PREFIX, al as BULK_INSERT_LIMITS, Y as BranchNameInvalid, lc as BranchTransitionInvalid, Ll as CDC_OFFSETS_TABLE, Co as CHANGE_CLAIM_TTL_ENV, _l as CHANGE_LISTENER_CEILING, Kt as ColumnBuilder, Bl as DATA_TRANSFERS_TABLE, te as DEFAULT_ACQUIRE_TIMEOUT_MS, wo as DEFAULT_CHANGE_CLAIM_TTL_HOURS, xs as DEFAULT_EAGER_FALLBACK_WARN_INTERVAL_MS, ar as DEFAULT_SOFT_DROP_RETENTION_DAYS, ji as DEFAULT_SUBJECT_GRAPH_DEPTH, Vr as ENCRYPTED_PREFIX, Kl as ENGINE, Yi as EagerCardinalityError, sn as FILE_MIGRATION_PATTERN, Xe as FRAMEWORK_LIVE_TABLES, Gr as FieldDecryptionError, Go as ID_COLUMN_MAX_LENGTH, xr as INITIAL_VERSION, Oe as IrreversibleMigrationError, gt as MATCHES_NO_ROWS, fe as MAX_IDENTIFIER_LENGTH, Me as MIGRATION_PHASES, Rs as MSSQL_TRANSIENT_NUMBERS, Is as MYSQL_TRANSIENT_CODES, ze as MigrationExpectationFailed, ie as MigrationNeedsSqlClient, he as MigrationSkipped, So as OccurrenceCounter, Ls as POSTGRES_TRANSIENT_STATES, Wn as REPLACE_IN_PROGRESS_TABLE, we as RewriteUnstableError, Ul as SCOPE_KEY_MAX_LENGTH, Mn as SELF_REFERENCE_TARGET, zs as SQLITE_TRANSIENT_CODES, Sn as STAGING_STALE_MINUTES, d as STAGING_TABLE_PREFIX, Pr as SqlClient, Zc as TENANT_SELECTIONS_TABLE, Bs as TURSO_TRANSIENT_MESSAGE, Zs as TableStreamError, un as TenantNamespaceInvalid, je as TenantNamespaceUnresolved, Oc as TenantRegionUnavailable, Dc as TenantResidencyUnresolved, As as TransactionAbortedError, Ke as TransactionBrokenByBodyError, Gs as VOLTRO_EXPIRES_MIXIN_ID, qs as VOLTRO_LOCAL_FIRST_MIXIN_ID, vr as VersionConflict, at as WARN_IDENTIFIER_LENGTH, mn as _voltroApiKeysTable, Rl as _voltroCdcOffsetsTable, Vl as _voltroDataTransfersTable, Jn as _voltroDevicesTable, Lt as _voltroIdempotencyTable, Wt as _voltroKvTable, An as _voltroMigrationPlansTable, vn as _voltroMigrationsTable, zl as _voltroMssqlCdcOffsetsTable, Qt as _voltroPluginMigrationsTable, Ln as _voltroReplaceInProgressTable, Jt as _voltroReplicaObservationsTable, xt as _voltroSchemaOwnerTable, Qn as _voltroSeedsTable, lr as _voltroTenantSelectionsTable, fo as actorsTable, Sc as admitBranch, nr as agedSoftDropSnapshots, On as allEnumRenames, Oi as allRegisteredRelations, $n as allRegisteredTables, pt as and, qi as applyJsonPatch, bn as array, vt as arrayContains, Ue as arrayHas, e as arrayOverlaps, Zi as attachEagerLoads, ko as attributionFields, No as attributionKey, Hc as auditAllTableIndexes, Vc as auditTableIndexes, x as authoredError, mt as authoredMessageOf, be as avg, _t as avgOver, Bo as beginLocalWrite, en as bigint, Ic as bindResidentStore, Xt as boolean, oc as branchNamespaceName, ol as bulkInsertLimitsFor, Ct as bytes, yt as causeBranches, go as changeDelete, yo as changeDigest, mo as changeInsert, _o as changeSoftDelete, ho as changeUpdate, cl as chunkRowsForInsert, Io as claimPendingAttribution, We as classifyConstraintViolation, Hn as clearEnumRenames, Uo as clearPendingAttribution, Ai as clearRelationsRegistry, Mc as clearResidencyConfig, Ml as clearRetentions, ur as clearTableRegistry, Qo as clearWriteRecorders, B as coercePredicateForSqlite, pn as coercePredicateValue, o as coercePredicateValues, De as coerceValueForSqlite, Ut as collectSubqueries, ht as column, Ye as columnRef, oi as columnSchema, sl as columnsPerRow, m as compareDecimal, sa as compileEagerJson, Ji as compileJsonPatch, C as compilePredicate, rt as compileRawFragment, re as compileRowProjection, v as compileSelect, bo as composeChangeKey, nc as computeEmbedding, wl as connectionIdentity, qn as contains, bt as count, Ge as countDistinct, er as crdtDoc, dr as crdtManagedColumns, jt as crdtManagedColumnsOf, sr as crdtText, Oo as currentWriteAttribution, n as databaseHandle, Qe as date, p as dbEnum, hs as dbMetricTagCacheSizeForTests, vs as dbOperationsInFlight, ir as decimal, Ft as declareEnumRename, Xr as decodeFieldValue, lt as decodeRowsForTable, me as decodeRowsFromSchema, ni as decryptFieldsOnRead, Yc as defineMigration, Be as defineMixin, it as defineSeed, tl as deleteTenantSelection, Vt as denseRank, Ri as deriveSubjectGraph, Te as deriveTypeIdPrefix, Jo as derivedRowId, Yo as derivedRowIdLength, et as describeAgedSoftDropSnapshots, t as describeCharsetRefusal, Ht as describeDriverError, Kn as describeRowBindings, Hl as describeTransferRun, Br as deserializeArraysOnRead, dt as drainIdentifierWarnings, nt as dropped, Jr as encodeFieldValue, ot as encodeRowForSchema, ti as encryptFieldsForWrite, $r as encryptedColumnsOf, Vo as endLocalWrite, yc as enforceBranchLimits, At as ensureTableRegistered, Tn as eq, Re as escapeLike, Bn as evaluatePredicate, Gn as except, on as exists, Ks as expires, po as externalChangeEvent, wn as extractDbCause, Ur as fieldBinding, ut as fireSchemaChangeSeeds, ce as fireTenantCreateSeeds, qc as formatIndexAuditIssue, zi as formatSubjectGraph, kt as frameworkTables, qe as generateId, c as generateSnowflake, ne as geography, _ as geometry, gn as getEnumRenames, Di as getRelation, Ei as getRelations, jc as getResidencyConfig, or as getTable, Ot as gt, kn as gte, oa as hasEagerLoads, tc as hybridSearch, y as id, Un as inSet, It as inSubquery, k as inferForeignKey, hl as insertIgnoreRowOutcome, fl as insertManyRows, dl as insertRow, fn as integer, nn as interruptedReplaceRefusal, Cn as intersect, a as interval, pr as irreversible, s as irreversibleReason, Wr as isBoundCiphertext, sc as isBranchNamespace, gr as isColumnReference, Wi as isCompositeRowKey, mi as isEmptyRelationsSpec, qr as isEncrypted, Kr as isFieldDecryptionError, st as isFileMigration, zn as isForeignKeyViolation, ee as isFrameworkOwnedLiveTable, Ys as isLocalFirst, Xc as isMigrationDefinition, g as isMysqlFamily, pc as isNeonConnection, _n as isNotNull, Zn as isNull, bl as isPrimaryKeyConflictError, an as isQueryTimeout, Zr as isRawEncoding, Pc as isRegionServable, hi as isRelationsSpec, xe as isSeedDefinition, h as isSoftDropSnapshotName, Le as isSqliteFamily, Ie as isStagingTableName, Ze as isTableReactive, Ns as isTransactionAbortedError, Us as isTransientContention, ft as isView, ln as json, Bt as jsonField, cn as jsonIndex, Gi as jsonPatchAssignments, Rn as lag, rn as lead, kl as listRetentionConflicts, jl as listRetentions, Js as localFirst, Xs as localFirstTables, qt as lt, Nn as lte, ws as makeEagerFallbackReporter, Ec as makeNamespaceBranchExecutor, js as makeTransactionAbortTracker, _i as many, vi as manyToMany, Ae as materializeFields, Et as max, de as migration, Dn as min, ul as missingConflictColumns, ll as missingRequiredColumns, ae as mixin, xn as neq, uc as nextBranchState, Cl as normaliseTarget, Ki as normalizeJsonPatchValue, tn as not, Zt as notExists, wt as notInSet, tr as notInSubquery, Pe as numeric, bs as observeDbOp, To as occurrenceWindowMs, gi as one, Xi as oneCardinalityMessage, fr as or, S as orderClausesOf, Pt as paginateBy, hn as paginateById, xo as parseChangeKey, Wo as pendingAttributionCount, _c as planBranch, dc as planBranchProvision, fc as planBranchTeardown, vc as planBranchTeardownFor, hc as planNeonBranchProvision, gc as planNeonBranchTeardown, _r as planVersionedUpdate, Xn as pluginRef, zt as pluginRefSpecOf, yl as primaryKeyConflictError, bc as provisionBranch, Lc as provisionResidentTenant, Fe as qualifyTable, Yn as queryFor, ue as queryForView, dn as quoteIdent, vl as raiseChangeListenerCeiling, Rt as rank, Ve as raw, $c as readTenantSelection, oe as readableByColumns, _e as real, ys as recordDbOp, ns as recordsTable, Ee as reference, ii as refuseWrite, so as registerCoreTables, Ti as registerDiscoveredRelations, Fo as registerPendingAttribution, wi as registerRelations, Al as registerRetention, f as registerTable, Xo as registerWriteRecorder, pi as relations, lo as requireActors, rr as requireTable, uo as requireTenants, ms as resetDbMetricTagCacheForTests, ct as resetSnowflake, Fc as residentPlacement, Ir as resolveActorSnapshot, mc as resolveBranchMechanism, Cs as resolveEagerFallbackWarnIntervalMs, Ho as resolveEchoAttribution, Gt as resolveFullTextIndex, mr as resolveIdScheme, ge as resolveMixinGraph, Nc as resolveTenantHome, He as resolveTenantNamespace, Il as retentionTtlMsFromEnv, Hi as rowKeyColumns, Ui as rowKeyIdentity, jn as rowNumber, si as rowSchema, ks as runRetryingTransaction, Ms as runSavepoint, Fs as runStoreTransaction, Do as runWithWriteAttribution, rs as runWriteRecorders, Tl as sameDatabase, se as sanitizeIdentifierFragment, Gl as scopeKeyOf, Je as selfReference, zr as serializeArraysForWrite, hr as serverOnlyColumns, Ac as setResidencyConfig, Pn as setSchemaChangeSeedHook, ve as setTenantCreateSeedHook, Ts as settleTransactionExit, br as settleVersionedUpdate, r as softDropSnapshotStamp, Mt as spatialPredicate, Tt as stagingLeftoverReport, En as stagingLeftovers, Vn as stagingNamesOf, Nt as stagingStaleAfterMs, rl as stampGeneratedId, il as stampGeneratedIds, cr as startsWith, ai as storeRefusalOf, ec as streamTable, yn as sum, $t as sumOver, $o as suspendWriteRecorders, es as suspendWriteRecordersEffect, Nl as sweepRetention, ke as table, xc as teardownBranch, Qc as tenantSelectionId, l as text, b as timestamp, Cr as timestampMs, yr as timestampMsOrNull, Os as transactionRetrySchedule, Yt as union, St as unionAll, tt as unregisterTable, Zo as unregisterWriteRecorder, gl as updateManyRow, pl as upsertRow, ml as upsertRowOutcome, Vi as upsertUpdatePatch, Bi as upsertUpdateValues, le as validateColumnName, Se as validateIndexName, ki as validateRegisteredRelations, xi as validateRelationConfig, Fn as validateTableName, ye as validateTypeIdPrefix, pe as vector, Ne as vectorDistanceToOpclass, rc as vectorEmbedding, Sr as versionColumnOf, Ce as view, In as viewSql, $e as walkLeaves, Dt as wireSafeCause, Ao as withCapturedAttribution, ts as writeRecordersSuspended, el as writeTenantSelection };
2078
+ export { i as AUTO_FILLED_COLUMNS, Br as BOUND_ENCRYPTED_PREFIX, ol as BULK_INSERT_LIMITS, Y as BranchNameInvalid, uc as BranchTransitionInvalid, Rl as CDC_OFFSETS_TABLE, So as CHANGE_CLAIM_TTL_ENV, vl as CHANGE_LISTENER_CEILING, Wt as ColumnBuilder, Vl as DATA_TRANSFERS_TABLE, te as DEFAULT_ACQUIRE_TIMEOUT_MS, Co as DEFAULT_CHANGE_CLAIM_TTL_HOURS, Ss as DEFAULT_EAGER_FALLBACK_WARN_INTERVAL_MS, rr as DEFAULT_SOFT_DROP_RETENTION_DAYS, ji as DEFAULT_SUBJECT_GRAPH_DEPTH, zr as ENCRYPTED_PREFIX, ql as ENGINE, Xi as EagerCardinalityError, an as FILE_MIGRATION_PATTERN, qe as FRAMEWORK_LIVE_TABLES, Ur as FieldDecryptionError, Wo as ID_COLUMN_MAX_LENGTH, yr as INITIAL_VERSION, De as IrreversibleMigrationError, mt as MATCHES_NO_ROWS, fe as MAX_IDENTIFIER_LENGTH, Ae as MIGRATION_PHASES, zs as MSSQL_TRANSIENT_NUMBERS, Ls as MYSQL_TRANSIENT_CODES, Le as MigrationExpectationFailed, ie as MigrationNeedsSqlClient, me as MigrationSkipped, xo as OccurrenceCounter, Rs as POSTGRES_TRANSIENT_STATES, Hn as REPLACE_IN_PROGRESS_TABLE, Ce as RewriteUnstableError, Wl as SCOPE_KEY_MAX_LENGTH, An as SELF_REFERENCE_TARGET, Bs as SQLITE_TRANSIENT_CODES, bn as STAGING_STALE_MINUTES, d as STAGING_TABLE_PREFIX, Mr as SqlClient, Qc as TENANT_SELECTIONS_TABLE, Vs as TURSO_TRANSIENT_MESSAGE, Qs as TableStreamError, cn as TenantNamespaceInvalid, ke as TenantNamespaceUnresolved, kc as TenantRegionUnavailable, Oc as TenantResidencyUnresolved, js as TransactionAbortedError, Ue as TransactionBrokenByBodyError, Ks as VOLTRO_EXPIRES_MIXIN_ID, Js as VOLTRO_LOCAL_FIRST_MIXIN_ID, gr as VersionConflict, nt as WARN_IDENTIFIER_LENGTH, fn as _voltroApiKeysTable, zl as _voltroCdcOffsetsTable, Hl as _voltroDataTransfersTable, Kn as _voltroDevicesTable, Ft as _voltroIdempotencyTable, Ht as _voltroKvTable, On as _voltroMigrationPlansTable, gn as _voltroMigrationsTable, Bl as _voltroMssqlCdcOffsetsTable, Xt as _voltroPluginMigrationsTable, Fn as _voltroReplaceInProgressTable, Kt as _voltroReplicaObservationsTable, yt as _voltroSchemaOwnerTable, Xn as _voltroSeedsTable, sr as _voltroTenantSelectionsTable, uo as actorsTable, Cc as admitBranch, er as agedSoftDropSnapshots, En as allEnumRenames, Oi as allRegisteredRelations, Zn as allRegisteredTables, dt as and, Ji as applyJsonPatch, vn as array, gt as arrayContains, Be as arrayHas, e as arrayOverlaps, Qi as attachEagerLoads, Do as attributionFields, jo as attributionKey, Uc as auditAllTableIndexes, Hc as auditTableIndexes, w as authoredError, ft as authoredMessageOf, ye as avg, ht as avgOver, zo as beginLocalWrite, Qt as bigint, Lc as bindResidentStore, Jt as boolean, sc as branchNamespaceName, sl as bulkInsertLimitsFor, xt as bytes, _t as causeBranches, ho as changeDelete, vo as changeDigest, po as changeInsert, go as changeSoftDelete, mo as changeUpdate, ll as chunkRowsForInsert, Po as claimPendingAttribution, Ve as classifyConstraintViolation, Bn as clearEnumRenames, Ho as clearPendingAttribution, Ai as clearRelationsRegistry, Nc as clearResidencyConfig, Nl as clearRetentions, cr as clearTableRegistry, Zo as clearWriteRecorders, H as coercePredicateForSqlite, dn as coercePredicateValue, o as coercePredicateValues, Ee as coerceValueForSqlite, Vt as collectSubqueries, pt as column, Ke as columnRef, ii as columnSchema, cl as columnsPerRow, m as compareDecimal, ca as compileEagerJson, Yi as compileJsonPatch, E as compilePredicate, et as compileRawFragment, re as compileRowProjection, v as compileSelect, yo as composeChangeKey, rc as computeEmbedding, Tl as connectionIdentity, Gn as contains, vt as count, He as countDistinct, Qn as crdtDoc, lr as crdtManagedColumns, kt as crdtManagedColumnsOf, ar as crdtText, Eo as currentWriteAttribution, n as databaseHandle, Ye as date, p as dbEnum, gs as dbMetricTagCacheSizeForTests, ys as dbOperationsInFlight, nr as decimal, Nt as declareEnumRename, Jr as decodeFieldValue, st as decodeRowsForTable, pe as decodeRowsFromSchema, ei as decryptFieldsOnRead, Xc as defineMigration, Re as defineMixin, tt as defineSeed, nl as deleteTenantSelection, zt as denseRank, Ri as deriveSubjectGraph, we as deriveTypeIdPrefix, qo as derivedRowId, Jo as derivedRowIdLength, Ze as describeAgedSoftDropSnapshots, t as describeCharsetRefusal, Bt as describeDriverError, Wn as describeRowBindings, Ul as describeTransferRun, Rr as deserializeArraysOnRead, lt as drainIdentifierWarnings, $e as dropped, Kr as encodeFieldValue, it as encodeRowForSchema, $r as encryptFieldsForWrite, Zr as encryptedColumnsOf, Bo as endLocalWrite, bc as enforceBranchLimits, Ot as ensureTableRegistered, Cn as eq, Ie as escapeLike, Rn as evaluatePredicate, Un as except, rn as exists, qs as expires, fo as externalChangeEvent, Sn as extractDbCause, Vr as fieldBinding, ct as fireSchemaChangeSeeds, ce as fireTenantCreateSeeds, Jc as formatIndexAuditIssue, zi as formatSubjectGraph, Dt as frameworkTables, We as generateId, c as generateSnowflake, ne as geography, _ as geometry, mn as getEnumRenames, Di as getRelation, Ei as getRelations, Mc as getResidencyConfig, ir as getTable, Et as gt, Dn as gte, sa as hasEagerLoads, nc as hybridSearch, x as id, Vn as inSet, Pt as inSubquery, _i as inferForeignKey, gl as insertIgnoreRowOutcome, pl as insertManyRows, fl as insertRow, un as integer, en as interruptedReplaceRefusal, xn as intersect, a as interval, dr as irreversible, s as irreversibleReason, Hr as isBoundCiphertext, cc as isBranchNamespace, mr as isColumnReference, Wi as isCompositeRowKey, fi as isEmptyRelationsSpec, Gr as isEncrypted, Wr as isFieldDecryptionError, at as isFileMigration, Ln as isForeignKeyViolation, ee as isFrameworkOwnedLiveTable, Xs as isLocalFirst, Zc as isMigrationDefinition, g as isMysqlFamily, mc as isNeonConnection, hn as isNotNull, Yn as isNull, xl as isPrimaryKeyConflictError, nn as isQueryTimeout, Yr as isRawEncoding, Fc as isRegionServable, pi as isRelationsSpec, be as isSeedDefinition, h as isSoftDropSnapshotName, Fe as isSqliteFamily, Pe as isStagingTableName, Je as isTableReactive, Ps as isTransactionAbortedError, Ws as isTransientContention, ut as isView, sn as json, Rt as jsonField, on as jsonIndex, Gi as jsonPatchAssignments, In as lag, tn as lead, Al as listRetentionConflicts, Ml as listRetentions, Ys as localFirst, Zs as localFirstTables, Gt as lt, jn as lte, Ts as makeEagerFallbackReporter, Dc as makeNamespaceBranchExecutor, Ms as makeTransactionAbortTracker, hi as many, gi as manyToMany, Oe as materializeFields, wt as max, de as migration, Tn as min, dl as missingConflictColumns, ul as missingRequiredColumns, ae as mixin, yn as neq, dc as nextBranchState, wl as normaliseTarget, qi as normalizeJsonPatchValue, $t as not, Yt as notExists, St as notInSet, $n as notInSubquery, Me as numeric, xs as observeDbOp, wo as occurrenceWindowMs, mi as one, Zi as oneCardinalityMessage, ur as or, T as orderClausesOf, Mt as paginateBy, pn as paginateById, bo as parseChangeKey, Uo as pendingAttributionCount, S as persistedColumns, vc as planBranch, fc as planBranchProvision, pc as planBranchTeardown, yc as planBranchTeardownFor, gc as planNeonBranchProvision, _c as planNeonBranchTeardown, hr as planVersionedUpdate, Jn as pluginRef, Lt as pluginRefSpecOf, bl as primaryKeyConflictError, xc as provisionBranch, Rc as provisionResidentTenant, Ne as qualifyTable, qn as queryFor, ue as queryForView, ln as quoteIdent, yl as raiseChangeListenerCeiling, It as rank, oe as raw, el as readTenantSelection, ge as readableByColumns, Te as real, bs as recordDbOp, ns as recordsTable, Ge as reference, ni as refuseWrite, oo as registerCoreTables, Ti as registerDiscoveredRelations, No as registerPendingAttribution, wi as registerRelations, jl as registerRetention, f as registerTable, Yo as registerWriteRecorder, di as relations, co as requireActors, tr as requireTable, lo as requireTenants, hs as resetDbMetricTagCacheForTests, ot as resetSnowflake, Ic as residentPlacement, Pr as resolveActorSnapshot, hc as resolveBranchMechanism, ws as resolveEagerFallbackWarnIntervalMs, Vo as resolveEchoAttribution, Ut as resolveFullTextIndex, fr as resolveIdScheme, he as resolveMixinGraph, Pc as resolveTenantHome, ze as resolveTenantNamespace, Ll as retentionTtlMsFromEnv, Hi as rowKeyColumns, Ui as rowKeyIdentity, kn as rowNumber, ai as rowSchema, As as runRetryingTransaction, Ns as runSavepoint, Is as runStoreTransaction, To as runWithWriteAttribution, rs as runWriteRecorders, El as sameDatabase, se as sanitizeIdentifierFragment, Kl as scopeKeyOf, pr as selfReference, Lr as serializeArraysForWrite, l as serverOnlyColumns, jc as setResidencyConfig, Mn as setSchemaChangeSeedHook, _e as setTenantCreateSeedHook, Es as settleTransactionExit, vr as settleVersionedUpdate, r as softDropSnapshotStamp, At as spatialPredicate, Ct as stagingLeftoverReport, wn as stagingLeftovers, zn as stagingNamesOf, jt as stagingStaleAfterMs, il as stampGeneratedId, al as stampGeneratedIds, or as startsWith, ri as storeRefusalOf, tc as streamTable, _n as sum, Zt as sumOver, $o as suspendWriteRecorders, es as suspendWriteRecordersEffect, Pl as sweepRetention, b as table, Sc as teardownBranch, $c as tenantSelectionId, C as text, y as timestamp, xr as timestampMs, _r as timestampMsOrNull, ks as transactionRetrySchedule, qt as union, bt as unionAll, Qe as unregisterTable, Xo as unregisterWriteRecorder, _l as updateManyRow, ml as upsertRow, hl as upsertRowOutcome, Vi as upsertUpdatePatch, Bi as upsertUpdateValues, le as validateColumnName, xe as validateIndexName, ki as validateRegisteredRelations, xi as validateRelationConfig, Nn as validateTableName, ve as validateTypeIdPrefix, rt as vector, je as vectorDistanceToOpclass, ic as vectorEmbedding, br as versionColumnOf, Se as view, Pn as viewSql, Xe as walkLeaves, Tt as wireSafeCause, Oo as withCapturedAttribution, ts as writeRecordersSuspended, tl as writeTenantSelection };