@voltro/database 0.29.0 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +377 -0
- package/dist/index.js +541 -537
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { $ as e, A as t, At as n, B as r, Bt as i, C as a, Ct as o, D as s, Dt as c, E as l, Et as u, F as d, Ft as f, G as p, H as m, I as h, It as g, J as _, K as v, L as y, Lt as ee, M as te, Mt as b, N as ne, Nt as x, O as re, Ot as S, P as ie, Pt as ae, Q as oe, R as C, Rt as se, S as ce, St as le, T as ue, Tt as de, U as fe, V as pe, Vt as me, W as he, X as ge, Y as _e, Z as ve, _ as ye, _t as be, a as xe, at as Se, b as Ce, bt as we, c as Te, ct as Ee, d as De, dt as Oe, et as ke, f as Ae, ft as je, g as Me, gt as Ne, h as Pe, ht as Fe, i as Ie, it as Le, j as Re, jt as w, k as ze, kt as T, l as Be, lt as Ve, m as He, mt as Ue, n as We, nt as Ge, o as Ke, ot as qe, p as Je, pt as Ye, q as Xe, rt as Ze, s as E, st as Qe, t as $e, tt as et, u as tt, ut as nt, v as rt, vt as it, w as at, wt as ot, x as st, xt as ct, y as lt, yt as ut, z as dt, zt as D } from "./frameworkLiveTables-CMyumigs.js";
|
|
2
2
|
import { timestampMs as ft, timestampMsOrNull as pt } from "./wire.js";
|
|
3
|
-
import { Cause as mt, Chunk as ht, Data as gt, Effect as _t, Exit as vt, Option as
|
|
4
|
-
import { AsyncLocalStorage as
|
|
5
|
-
import { ansi as
|
|
6
|
-
import { SqlClient as
|
|
3
|
+
import { Cause as mt, Chunk as ht, Data as gt, Effect as _t, Exit as vt, Option as yt, Schema as O, Stream as bt } from "effect";
|
|
4
|
+
import { AsyncLocalStorage as xt } from "node:async_hooks";
|
|
5
|
+
import { ansi as k } from "@voltro/logger";
|
|
6
|
+
import { SqlClient as St } from "@effect/sql";
|
|
7
7
|
//#region src/actorSnapshot.ts
|
|
8
|
-
var
|
|
8
|
+
var Ct = (e) => typeof e == "string" && e !== "" ? e : null, wt = async (e, t, n) => {
|
|
9
9
|
if (!(t == null || t === "")) try {
|
|
10
10
|
let r = (await e.query({
|
|
11
11
|
table: "actors",
|
|
@@ -21,20 +21,20 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
21
21
|
}))[0];
|
|
22
22
|
return r === void 0 ? void 0 : {
|
|
23
23
|
id: t,
|
|
24
|
-
type:
|
|
25
|
-
displayName:
|
|
26
|
-
email:
|
|
24
|
+
type: Ct(r.kind) ?? n,
|
|
25
|
+
displayName: Ct(r.displayName),
|
|
26
|
+
email: Ct(r.email)
|
|
27
27
|
};
|
|
28
28
|
} catch {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
},
|
|
31
|
+
}, Tt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqlite", Et = (e) => {
|
|
32
32
|
let t = [];
|
|
33
33
|
for (let [n, r] of Object.entries(e.fields)) r.type === "array" && t.push(n);
|
|
34
34
|
return t;
|
|
35
|
-
},
|
|
36
|
-
if (!
|
|
37
|
-
let r =
|
|
35
|
+
}, Dt = (e, t, n) => {
|
|
36
|
+
if (!Tt(n) || !t) return e;
|
|
37
|
+
let r = Et(t);
|
|
38
38
|
if (r.length === 0) return e;
|
|
39
39
|
let i = { ...e };
|
|
40
40
|
for (let e of r) {
|
|
@@ -42,9 +42,9 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
42
42
|
Array.isArray(t) && (i[e] = JSON.stringify(t));
|
|
43
43
|
}
|
|
44
44
|
return i;
|
|
45
|
-
},
|
|
46
|
-
if (!
|
|
47
|
-
let r =
|
|
45
|
+
}, Ot = (e, t, n) => {
|
|
46
|
+
if (!Tt(n) || !t) return e;
|
|
47
|
+
let r = Et(t);
|
|
48
48
|
return r.length === 0 ? e : e.map((e) => {
|
|
49
49
|
let t;
|
|
50
50
|
for (let n of r) {
|
|
@@ -56,7 +56,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
56
56
|
}
|
|
57
57
|
return t ?? e;
|
|
58
58
|
});
|
|
59
|
-
},
|
|
59
|
+
}, kt = "enc:v1:", At = class extends Error {
|
|
60
60
|
_tag = "FieldDecryptionError";
|
|
61
61
|
table;
|
|
62
62
|
column;
|
|
@@ -64,33 +64,33 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
64
64
|
constructor(e) {
|
|
65
65
|
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;
|
|
66
66
|
}
|
|
67
|
-
},
|
|
67
|
+
}, jt = (e) => typeof e == "object" && !!e && e._tag === "FieldDecryptionError", Mt = (e) => typeof e == "string" && e.startsWith("enc:v1:"), Nt = (e) => {
|
|
68
68
|
let t = [];
|
|
69
69
|
for (let [n, r] of Object.entries(e.fields)) r.encrypted === !0 && t.push(n);
|
|
70
70
|
return t;
|
|
71
|
-
},
|
|
71
|
+
}, Pt = (e, t, n) => {
|
|
72
72
|
if (!t) return e;
|
|
73
|
-
let r =
|
|
73
|
+
let r = Nt(t);
|
|
74
74
|
if (r.length === 0) return e;
|
|
75
75
|
let i = { ...e };
|
|
76
76
|
for (let e of r) {
|
|
77
77
|
let r = i[e];
|
|
78
|
-
if (!(r == null ||
|
|
78
|
+
if (!(r == null || Mt(r))) {
|
|
79
79
|
if (!n) throw Error(`column "${t.tableName ?? "?"}.${e}" is .encrypted() but no field cipher is registered — wire @voltro/plugin-governance's fieldEncryption (key via the Secrets-Resolver)`);
|
|
80
80
|
i[e] = n.encrypt(JSON.stringify(r));
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
return i;
|
|
84
|
-
},
|
|
84
|
+
}, Ft = (e, t, n, r) => {
|
|
85
85
|
if (!t) return e;
|
|
86
|
-
let i =
|
|
86
|
+
let i = Nt(t);
|
|
87
87
|
if (i.length === 0 || !n) return e;
|
|
88
88
|
let a = r?.onError ?? "throw", o = t.tableName ?? "?";
|
|
89
89
|
return e.map((e) => {
|
|
90
90
|
let t;
|
|
91
91
|
for (let s of i) {
|
|
92
92
|
let i = e[s];
|
|
93
|
-
if (
|
|
93
|
+
if (Mt(i)) {
|
|
94
94
|
t ??= { ...e };
|
|
95
95
|
try {
|
|
96
96
|
t[s] = JSON.parse(n.decrypt(i));
|
|
@@ -104,7 +104,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
104
104
|
});
|
|
105
105
|
continue;
|
|
106
106
|
}
|
|
107
|
-
throw new
|
|
107
|
+
throw new At({
|
|
108
108
|
table: o,
|
|
109
109
|
column: s,
|
|
110
110
|
reason: n
|
|
@@ -114,62 +114,62 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
114
114
|
}
|
|
115
115
|
return t ?? e;
|
|
116
116
|
});
|
|
117
|
-
},
|
|
117
|
+
}, It = (e) => {
|
|
118
118
|
let t = (() => {
|
|
119
119
|
switch (e.type) {
|
|
120
120
|
case "id":
|
|
121
121
|
case "reference":
|
|
122
122
|
case "text":
|
|
123
|
-
case "enum": return
|
|
123
|
+
case "enum": return O.String;
|
|
124
124
|
case "integer":
|
|
125
125
|
case "real":
|
|
126
|
-
case "decimal": return
|
|
127
|
-
case "boolean": return
|
|
126
|
+
case "decimal": return O.Number;
|
|
127
|
+
case "boolean": return O.Boolean;
|
|
128
128
|
case "timestamp":
|
|
129
129
|
case "date": return ft;
|
|
130
|
-
case "bigint": return
|
|
131
|
-
case "bytes": return
|
|
132
|
-
case "array": return
|
|
133
|
-
case "interval": return
|
|
134
|
-
default: return
|
|
130
|
+
case "bigint": return O.BigInt;
|
|
131
|
+
case "bytes": return O.Uint8ArrayFromBase64;
|
|
132
|
+
case "array": return O.Array(O.Unknown);
|
|
133
|
+
case "interval": return O.String;
|
|
134
|
+
default: return O.Unknown;
|
|
135
135
|
}
|
|
136
136
|
})();
|
|
137
|
-
return e.nullable === !0 ?
|
|
138
|
-
},
|
|
137
|
+
return e.nullable === !0 ? O.NullOr(t) : t;
|
|
138
|
+
}, Lt = (e, t) => {
|
|
139
139
|
let n = new Set(t?.omit ?? []), r = {};
|
|
140
|
-
for (let [t, i] of Object.entries(e.fields)) n.has(t) || (r[t] =
|
|
141
|
-
return
|
|
142
|
-
},
|
|
140
|
+
for (let [t, i] of Object.entries(e.fields)) n.has(t) || (r[t] = It(i));
|
|
141
|
+
return O.Struct(r);
|
|
142
|
+
}, Rt = (e) => typeof e == "function" ? e : () => e, zt = (e, t) => ({
|
|
143
143
|
kind: "one",
|
|
144
|
-
target:
|
|
144
|
+
target: Rt(e),
|
|
145
145
|
...t?.foreignKey === void 0 ? {} : { foreignKey: t.foreignKey },
|
|
146
146
|
...t?.sourceKey === void 0 ? {} : { sourceKey: t.sourceKey }
|
|
147
|
-
}),
|
|
147
|
+
}), Bt = (e, t) => ({
|
|
148
148
|
kind: "many",
|
|
149
|
-
target:
|
|
149
|
+
target: Rt(e),
|
|
150
150
|
...t?.foreignKey === void 0 ? {} : { foreignKey: t.foreignKey },
|
|
151
151
|
...t?.sourceKey === void 0 ? {} : { sourceKey: t.sourceKey }
|
|
152
|
-
}),
|
|
152
|
+
}), Vt = (e, t) => ({
|
|
153
153
|
kind: "manyToMany",
|
|
154
|
-
target:
|
|
155
|
-
through:
|
|
154
|
+
target: Rt(e),
|
|
155
|
+
through: Rt(t.through),
|
|
156
156
|
sourceKey: t.sourceKey,
|
|
157
157
|
targetKey: t.targetKey
|
|
158
|
-
}),
|
|
159
|
-
one:
|
|
160
|
-
many:
|
|
161
|
-
manyToMany:
|
|
162
|
-
},
|
|
158
|
+
}), Ht = {
|
|
159
|
+
one: zt,
|
|
160
|
+
many: Bt,
|
|
161
|
+
manyToMany: Vt
|
|
162
|
+
}, Ut = (e, t) => {
|
|
163
163
|
let n = typeof e == "function" ? e : () => e;
|
|
164
164
|
return {
|
|
165
165
|
source: n,
|
|
166
|
-
relations: t(
|
|
166
|
+
relations: t(Ht, n())
|
|
167
167
|
};
|
|
168
|
-
},
|
|
168
|
+
}, Wt = (e) => {
|
|
169
169
|
if (typeof e != "object" || !e) return !1;
|
|
170
170
|
let t = e;
|
|
171
171
|
return typeof t.source != "function" || typeof t.relations != "object" || t.relations === null ? !1 : Object.keys(t.relations).length === 0;
|
|
172
|
-
},
|
|
172
|
+
}, Gt = (e) => {
|
|
173
173
|
if (typeof e != "object" || !e) return !1;
|
|
174
174
|
let t = e;
|
|
175
175
|
if (typeof t.source != "function" || typeof t.relations != "object" || t.relations === null) return !1;
|
|
@@ -178,35 +178,35 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
178
178
|
let t = e?.kind;
|
|
179
179
|
return t === "one" || t === "many" || t === "manyToMany";
|
|
180
180
|
});
|
|
181
|
-
},
|
|
181
|
+
}, Kt = zt, qt = Bt, Jt = Vt, A = (e, t, n) => {
|
|
182
182
|
let r = [];
|
|
183
183
|
for (let [n, i] of Object.entries(e.fields)) i.type === "reference" && i.references?.()?.tableName === t && r.push(n);
|
|
184
184
|
if (r.length === 0) throw Error(`relation '${n}': no reference() column on '${e.tableName}' points at '${t}'. Either add one or pass an explicit { foreignKey: '<column>' }.`);
|
|
185
185
|
if (r.length > 1) throw Error(`relation '${n}': multiple reference() columns on '${e.tableName}' point at '${t}' (${r.join(", ")}). Pass an explicit { foreignKey: '<column>' } to disambiguate.`);
|
|
186
186
|
return r[0];
|
|
187
|
-
}, Yt = (e) => Object.keys(e.fields),
|
|
187
|
+
}, Yt = (e) => Object.keys(e.fields), j = (e, t) => Object.prototype.hasOwnProperty.call(e.fields, t), Xt = (e) => {
|
|
188
188
|
let t = Yt(e);
|
|
189
189
|
return t.length === 0 ? "<none>" : t.join(", ");
|
|
190
|
-
},
|
|
190
|
+
}, Zt = (e, t, n) => {
|
|
191
191
|
let r = `relation '${t}' on '${e.tableName}'`, i = n.target();
|
|
192
192
|
if (n.kind === "manyToMany") {
|
|
193
193
|
let t = n.through();
|
|
194
|
-
for (let [a, o] of [["sourceKey", n.sourceKey], ["targetKey", n.targetKey]]) if (!
|
|
194
|
+
for (let [a, o] of [["sourceKey", n.sourceKey], ["targetKey", n.targetKey]]) if (!j(t, o)) throw Error(`${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}': ${Xt(t)}.`);
|
|
195
195
|
return;
|
|
196
196
|
}
|
|
197
197
|
if (n.sourceKey !== void 0 && n.foreignKey !== void 0) throw Error(`${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.`);
|
|
198
|
-
if (n.sourceKey !== void 0 && !
|
|
199
|
-
let t =
|
|
200
|
-
throw Error(`${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}': ${
|
|
198
|
+
if (n.sourceKey !== void 0 && !j(e, n.sourceKey)) {
|
|
199
|
+
let t = j(i, n.sourceKey);
|
|
200
|
+
throw Error(`${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}': ${Xt(e)}.`));
|
|
201
201
|
}
|
|
202
|
-
if (n.foreignKey !== void 0 && !
|
|
203
|
-
let t =
|
|
204
|
-
throw Error(`${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}': ${
|
|
202
|
+
if (n.foreignKey !== void 0 && !j(i, n.foreignKey)) {
|
|
203
|
+
let t = j(e, n.foreignKey);
|
|
204
|
+
throw Error(`${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}': ${Xt(i)}.`));
|
|
205
205
|
}
|
|
206
|
-
},
|
|
207
|
-
let t = e.source(), n =
|
|
206
|
+
}, Qt = Symbol.for("@voltro/database/relationsRegistry"), $t = globalThis, M = $t[Qt] ?? ($t[Qt] = /* @__PURE__ */ new Map()), en = (e) => {
|
|
207
|
+
let t = e.source(), n = M.get(t.tableName);
|
|
208
208
|
if (n === void 0) {
|
|
209
|
-
|
|
209
|
+
M.set(t.tableName, new Map(Object.entries(e.relations)));
|
|
210
210
|
return;
|
|
211
211
|
}
|
|
212
212
|
for (let [r, i] of Object.entries(e.relations)) {
|
|
@@ -216,29 +216,29 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
216
216
|
n.set(r, i);
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
|
-
},
|
|
219
|
+
}, tn = (e) => {
|
|
220
220
|
let t = 0;
|
|
221
|
-
for (let n of Object.values(e))
|
|
221
|
+
for (let n of Object.values(e)) Gt(n) && (en(n), t += 1);
|
|
222
222
|
return t;
|
|
223
|
-
},
|
|
224
|
-
let t =
|
|
223
|
+
}, nn = (e) => {
|
|
224
|
+
let t = M.get(e);
|
|
225
225
|
if (t !== void 0) return Object.fromEntries(t);
|
|
226
|
-
},
|
|
226
|
+
}, rn = (e, t) => M.get(e)?.get(t), an = () => {
|
|
227
227
|
let e = [];
|
|
228
|
-
for (let [t, n] of
|
|
228
|
+
for (let [t, n] of M) for (let [r, i] of n) e.push({
|
|
229
229
|
source: t,
|
|
230
230
|
name: r,
|
|
231
231
|
relation: i
|
|
232
232
|
});
|
|
233
233
|
return e;
|
|
234
|
-
},
|
|
235
|
-
for (let [e, t] of
|
|
234
|
+
}, on = () => {
|
|
235
|
+
for (let [e, t] of M) {
|
|
236
236
|
let n = C(e);
|
|
237
|
-
if (n !== void 0) for (let [e, r] of t)
|
|
237
|
+
if (n !== void 0) for (let [e, r] of t) Zt(n, e, r);
|
|
238
238
|
}
|
|
239
|
-
},
|
|
240
|
-
|
|
241
|
-
},
|
|
239
|
+
}, sn = () => {
|
|
240
|
+
M.clear();
|
|
241
|
+
}, cn = (e) => e == null || typeof e == "boolean" ? e : typeof e == "number" ? e !== 0 : typeof e == "bigint" ? e !== 0n : typeof e == "string" ? e === "1" || e.toLowerCase() === "true" : e, ln = (e) => {
|
|
242
242
|
if (e == null || typeof e != "string") return e;
|
|
243
243
|
let t = e.trim();
|
|
244
244
|
if (t.length === 0) return e;
|
|
@@ -249,7 +249,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
249
249
|
} catch {
|
|
250
250
|
return e;
|
|
251
251
|
}
|
|
252
|
-
},
|
|
252
|
+
}, un = (e) => e == null || typeof e == "string" ? e : typeof e == "number" || typeof e == "bigint" ? String(e) : e, dn = (e) => {
|
|
253
253
|
if (e == null || e instanceof Date) return e;
|
|
254
254
|
if (typeof e == "string") {
|
|
255
255
|
let t = new Date(e);
|
|
@@ -260,19 +260,19 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
260
260
|
return isNaN(t.getTime()) ? e : t;
|
|
261
261
|
}
|
|
262
262
|
return e;
|
|
263
|
-
},
|
|
263
|
+
}, fn = (e, t, n) => {
|
|
264
264
|
if (e == null) return e;
|
|
265
265
|
switch (t) {
|
|
266
|
-
case "boolean": return n === "postgres" ? e :
|
|
266
|
+
case "boolean": return n === "postgres" ? e : cn(e);
|
|
267
267
|
case "json":
|
|
268
|
-
case "array": return n === "postgres" ? e :
|
|
268
|
+
case "array": return n === "postgres" ? e : ln(e);
|
|
269
269
|
case "timestamp":
|
|
270
|
-
case "date": return n === "sqlite" || n === "turso" ?
|
|
270
|
+
case "date": return n === "sqlite" || n === "turso" ? dn(e) : e;
|
|
271
271
|
case "decimal":
|
|
272
|
-
case "bigint": return
|
|
272
|
+
case "bigint": return un(e);
|
|
273
273
|
default: return e;
|
|
274
274
|
}
|
|
275
|
-
},
|
|
275
|
+
}, pn = (e, t, n) => {
|
|
276
276
|
if (e.length === 0) return e;
|
|
277
277
|
let r = C(t);
|
|
278
278
|
if (r === void 0) return e;
|
|
@@ -283,36 +283,36 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
283
283
|
});
|
|
284
284
|
return e.map((e) => {
|
|
285
285
|
let t = { ...e };
|
|
286
|
-
for (let { key: e, type: r } of a) e in t && (t[e] =
|
|
286
|
+
for (let { key: e, type: r } of a) e in t && (t[e] = fn(t[e], r, n));
|
|
287
287
|
return t;
|
|
288
288
|
});
|
|
289
|
-
},
|
|
289
|
+
}, mn = (e, t) => {
|
|
290
290
|
if (e == null) return e;
|
|
291
291
|
switch (t) {
|
|
292
292
|
case "json":
|
|
293
293
|
case "array": return typeof e == "string" ? e : JSON.stringify(e);
|
|
294
294
|
default: return e;
|
|
295
295
|
}
|
|
296
|
-
},
|
|
296
|
+
}, hn = (e, t, n = ["json", "array"]) => {
|
|
297
297
|
let r = C(t);
|
|
298
298
|
if (r === void 0) return e;
|
|
299
299
|
let i = r.fields, a = null;
|
|
300
300
|
for (let [t, r] of Object.entries(i)) if (n.includes(r.type) && t in e) {
|
|
301
|
-
let n =
|
|
301
|
+
let n = mn(e[t], r.type);
|
|
302
302
|
n !== e[t] && (a === null && (a = { ...e }), a[t] = n);
|
|
303
303
|
}
|
|
304
304
|
return a ?? e;
|
|
305
|
-
},
|
|
305
|
+
}, gn = class extends Error {
|
|
306
306
|
_tag = "EagerCardinalityError";
|
|
307
307
|
constructor(e) {
|
|
308
308
|
super(e), this.name = "EagerCardinalityError";
|
|
309
309
|
}
|
|
310
|
-
},
|
|
310
|
+
}, _n = (e) => {
|
|
311
311
|
let { relationName: t, sourceTableName: n, targetTableName: r, foreignKey: i, sourceKey: a } = e, o = r === n;
|
|
312
312
|
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.");
|
|
313
|
-
},
|
|
313
|
+
}, vn = async (e, t, n, r) => {
|
|
314
314
|
if (e.length === 0) return e;
|
|
315
|
-
let i =
|
|
315
|
+
let i = nn(n.tableName);
|
|
316
316
|
if (i === void 0) throw Error(`cannot eager-load on '${n.tableName}': no relations registered. Did you forget to declare \`relations(${n.tableName}, ...)\` or import the file that does?`);
|
|
317
317
|
let a = e.map((e) => ({ ...e }));
|
|
318
318
|
for (let [e, o] of Object.entries(t)) {
|
|
@@ -321,36 +321,36 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
321
321
|
let t = Object.keys(i).join(", ") || "<none>";
|
|
322
322
|
throw Error(`unknown relation '${e}' on '${n.tableName}'. Registered relations: ${t}.`);
|
|
323
323
|
}
|
|
324
|
-
|
|
324
|
+
Zt(n, e, t), await yn(a, e, t, o === !0 ? {} : o, n, r);
|
|
325
325
|
}
|
|
326
326
|
return a;
|
|
327
|
-
},
|
|
327
|
+
}, yn = async (e, t, n, r, i, a) => {
|
|
328
328
|
switch (n.kind) {
|
|
329
329
|
case "one":
|
|
330
|
-
await
|
|
330
|
+
await bn(e, t, n, r, i, a);
|
|
331
331
|
return;
|
|
332
332
|
case "many":
|
|
333
|
-
await
|
|
333
|
+
await xn(e, t, n, r, i, a);
|
|
334
334
|
return;
|
|
335
335
|
case "manyToMany":
|
|
336
|
-
await
|
|
336
|
+
await Cn(e, t, n, r, i, a);
|
|
337
337
|
return;
|
|
338
338
|
}
|
|
339
|
-
},
|
|
340
|
-
let o = n.target(), s = n.sourceKey ??
|
|
339
|
+
}, bn = async (e, t, n, r, i, a) => {
|
|
340
|
+
let o = n.target(), s = n.sourceKey ?? wn(i, o.tableName);
|
|
341
341
|
if (s !== void 0) {
|
|
342
|
-
let n =
|
|
342
|
+
let n = N(e, s), i = n.length === 0 ? [] : await Tn(o, "id", n, r, a), c = new Map(i.map((e) => [e.id, e]));
|
|
343
343
|
for (let n of e) {
|
|
344
344
|
let e = n[s];
|
|
345
345
|
n[t] = e == null ? null : c.get(e) ?? null;
|
|
346
346
|
}
|
|
347
|
-
await
|
|
347
|
+
await En(i, r.with, o, a);
|
|
348
348
|
return;
|
|
349
349
|
}
|
|
350
|
-
let c = n.foreignKey ??
|
|
350
|
+
let c = n.foreignKey ?? A(o, i.tableName, t), l = n.sourceKey ?? "id", u = N(e, l), d = u.length === 0 ? [] : await Tn(o, c, u, r, a), f = /* @__PURE__ */ new Map();
|
|
351
351
|
for (let e of d) {
|
|
352
352
|
let n = e[c];
|
|
353
|
-
if (f.has(n)) throw new _n(
|
|
353
|
+
if (f.has(n)) throw new gn(_n({
|
|
354
354
|
relationName: t,
|
|
355
355
|
sourceTableName: i.tableName,
|
|
356
356
|
targetTableName: o.tableName,
|
|
@@ -363,9 +363,9 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
363
363
|
let e = n[l];
|
|
364
364
|
n[t] = e == null ? null : f.get(e) ?? null;
|
|
365
365
|
}
|
|
366
|
-
await
|
|
367
|
-
},
|
|
368
|
-
let o = n.target(), s = n.foreignKey ??
|
|
366
|
+
await En(d, r.with, o, a);
|
|
367
|
+
}, xn = async (e, t, n, r, i, a) => {
|
|
368
|
+
let o = n.target(), s = n.foreignKey ?? A(o, i.tableName, t), c = n.sourceKey ?? "id", l = N(e, c), u = Sn(r), d = l.length === 0 ? [] : await Tn(o, s, l, u, a), f = /* @__PURE__ */ new Map();
|
|
369
369
|
for (let e of d) {
|
|
370
370
|
let t = e[s], n = f.get(t);
|
|
371
371
|
n ? n.push(e) : f.set(t, [e]);
|
|
@@ -381,12 +381,12 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
381
381
|
let e = n[c];
|
|
382
382
|
n[t] = f.get(e) ?? [];
|
|
383
383
|
}
|
|
384
|
-
await
|
|
385
|
-
},
|
|
384
|
+
await En(d, r.with, o, a);
|
|
385
|
+
}, Sn = (e) => {
|
|
386
386
|
let { limit: t, offset: n, ...r } = e;
|
|
387
387
|
return r;
|
|
388
|
-
},
|
|
389
|
-
let o = n.target(), s = n.through(), c =
|
|
388
|
+
}, Cn = async (e, t, n, r, i, a) => {
|
|
389
|
+
let o = n.target(), s = n.through(), c = N(e, "id");
|
|
390
390
|
if (c.length === 0) {
|
|
391
391
|
for (let n of e) n[t] = [];
|
|
392
392
|
return;
|
|
@@ -407,8 +407,8 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
407
407
|
for (let n of e) n[t] = [];
|
|
408
408
|
return;
|
|
409
409
|
}
|
|
410
|
-
let f = await
|
|
411
|
-
await
|
|
410
|
+
let f = await Tn(o, "id", N(d, n.targetKey), r, a), p = new Map(f.map((e) => [e.id, e]));
|
|
411
|
+
await En(f, r.with, o, a);
|
|
412
412
|
let m = r.junction === void 0 ? void 0 : r.junction === !0 ? Object.keys(s.fields) : r.junction, h = /* @__PURE__ */ new Map();
|
|
413
413
|
for (let e of d) {
|
|
414
414
|
let t = e[n.sourceKey], r = e[n.targetKey], i = p.get(r);
|
|
@@ -420,16 +420,16 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
420
420
|
o ? o.push(a) : h.set(t, [a]);
|
|
421
421
|
}
|
|
422
422
|
for (let n of e) n[t] = h.get(n.id) ?? [];
|
|
423
|
-
},
|
|
423
|
+
}, wn = (e, t) => {
|
|
424
424
|
for (let [n, r] of Object.entries(e.fields)) if (r.type === "reference" && r.references?.()?.tableName === t) return n;
|
|
425
|
-
},
|
|
425
|
+
}, N = (e, t) => {
|
|
426
426
|
let n = /* @__PURE__ */ new Set();
|
|
427
427
|
for (let r of e) {
|
|
428
428
|
let e = r[t];
|
|
429
429
|
e != null && n.add(e);
|
|
430
430
|
}
|
|
431
431
|
return [...n];
|
|
432
|
-
},
|
|
432
|
+
}, Tn = (e, t, n, r, i) => {
|
|
433
433
|
let a = {
|
|
434
434
|
column: t,
|
|
435
435
|
op: "in",
|
|
@@ -443,50 +443,50 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
443
443
|
skip: r.offset,
|
|
444
444
|
projection: void 0
|
|
445
445
|
});
|
|
446
|
-
},
|
|
447
|
-
t !== void 0 && e.length !== 0 && (await
|
|
446
|
+
}, En = async (e, t, n, r) => {
|
|
447
|
+
t !== void 0 && e.length !== 0 && (await vn(e, t, n, r)).forEach((t, n) => {
|
|
448
448
|
let r = e[n];
|
|
449
449
|
for (let [e, n] of Object.entries(t)) e in r || (r[e] = n);
|
|
450
450
|
});
|
|
451
|
-
},
|
|
451
|
+
}, Dn = (e) => e.eager !== void 0 && Object.keys(e.eager).length > 0, On = class extends Error {
|
|
452
452
|
_tag = "TenantNamespaceUnresolved";
|
|
453
453
|
constructor(e) {
|
|
454
454
|
super(e), this.name = "TenantNamespaceUnresolved";
|
|
455
455
|
}
|
|
456
|
-
},
|
|
456
|
+
}, kn = class extends Error {
|
|
457
457
|
_tag = "TenantNamespaceInvalid";
|
|
458
458
|
constructor(e) {
|
|
459
459
|
super(e), this.name = "TenantNamespaceInvalid";
|
|
460
460
|
}
|
|
461
|
-
},
|
|
462
|
-
if (e == null || e === "") throw new
|
|
463
|
-
let t =
|
|
464
|
-
if (t.replace(/_/g, "") === "") throw new
|
|
465
|
-
let n = `${
|
|
466
|
-
if (n.length >
|
|
461
|
+
}, An = 63, jn = "tenant_", Mn = (e) => e.toLowerCase().replace(/[^a-z0-9_]/g, "_"), Nn = (e) => {
|
|
462
|
+
if (e == null || e === "") throw new On("namespace isolation is on but the request has no resolvable tenant (subject.tenantId is null/empty). Refusing to run against a shared/default namespace — this would be a cross-tenant read. Authenticate with a tenant-scoped subject, or disable namespace isolation for this surface.");
|
|
463
|
+
let t = Mn(e);
|
|
464
|
+
if (t.replace(/_/g, "") === "") throw new kn(`tenant id '${e}' has no usable identifier characters after sanitisation — cannot derive a distinct namespace.`);
|
|
465
|
+
let n = `${jn}${t}`;
|
|
466
|
+
if (n.length > An) throw new kn(`namespace '${n}' for tenant '${e}' exceeds the ${An}-byte identifier limit. Use a shorter tenant id.`);
|
|
467
467
|
return n;
|
|
468
|
-
},
|
|
469
|
-
if (e === void 0 || t == null || !
|
|
468
|
+
}, Pn = (e, t) => e === null ? t : `${e}.${t}`, Fn = /* @__PURE__ */ new Set(["timestamp", "date"]), In = /^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2})?/, Ln = (e, t) => {
|
|
469
|
+
if (e === void 0 || t == null || !Fn.has(e) || t instanceof Date) return t;
|
|
470
470
|
if (typeof t == "number" && Number.isFinite(t)) return new Date(t);
|
|
471
|
-
if (typeof t == "string" &&
|
|
471
|
+
if (typeof t == "string" && In.test(t)) {
|
|
472
472
|
let e = new Date(t);
|
|
473
473
|
return Number.isNaN(e.getTime()) ? t : e;
|
|
474
474
|
}
|
|
475
475
|
return t;
|
|
476
|
-
},
|
|
476
|
+
}, Rn = (e, t) => e === void 0 || !Fn.has(e) ? t : t.map((t) => Ln(e, t)), zn = (e, t) => {
|
|
477
477
|
let { strings: n, values: r } = e, i = t.unsafe(n[0] ?? "");
|
|
478
478
|
for (let e = 0; e < r.length; e++) i = t`${i}${r[e]}${t.unsafe(n[e + 1] ?? "")}`;
|
|
479
479
|
return t`${i}`;
|
|
480
|
-
},
|
|
481
|
-
if ("not" in e) return t`NOT (${
|
|
482
|
-
if ("and" in e) return e.and.length === 0 ? t`TRUE` : t.and(e.and.map((e) =>
|
|
483
|
-
if ("or" in e) return e.or.length === 0 ? t`FALSE` : t.or(e.or.map((e) =>
|
|
480
|
+
}, Bn = (e) => e.replace(/[\\%_]/g, (e) => `\\${e}`), P = (e, t, n = null, r) => {
|
|
481
|
+
if ("not" in e) return t`NOT (${P(e.not, t, n, r)})`;
|
|
482
|
+
if ("and" in e) return e.and.length === 0 ? t`TRUE` : t.and(e.and.map((e) => P(e, t, n, r)));
|
|
483
|
+
if ("or" in e) return e.or.length === 0 ? t`FALSE` : t.or(e.or.map((e) => P(e, t, n, r)));
|
|
484
484
|
if (e.op === "subquery-in" || e.op === "subquery-not-in") {
|
|
485
|
-
let r = e, i =
|
|
485
|
+
let r = e, i = Zn(r.subquery, t, n);
|
|
486
486
|
return r.op === "subquery-in" ? t`${t(r.column)} IN (${i})` : t`${t(r.column)} NOT IN (${i})`;
|
|
487
487
|
}
|
|
488
488
|
if (e.op === "exists" || e.op === "not-exists") {
|
|
489
|
-
let r = e, i =
|
|
489
|
+
let r = e, i = Zn(r.subquery, t, n);
|
|
490
490
|
return r.op === "exists" ? t`EXISTS (${i})` : t`NOT EXISTS (${i})`;
|
|
491
491
|
}
|
|
492
492
|
let i = e, a = t(i.column), o = i.path, s = o !== void 0 && o.length > 0, c = () => t.onDialectOrElse({
|
|
@@ -499,7 +499,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
499
499
|
mssql: () => t.unsafe(E(i.column, o, "mssql", { numeric: !0 })),
|
|
500
500
|
sqlite: () => t.unsafe(E(i.column, o, "sqlite", { numeric: !0 })),
|
|
501
501
|
orElse: () => t.unsafe(E(i.column, o, "postgres", { numeric: !0 }))
|
|
502
|
-
}), u = s ? c() : a, d = s ? l() : a, f = (e) => s && e != null ? String(e) : e, p = (e) => s ? Number(e) : e, m = s || r === void 0 ? void 0 : C(r)?.fields?.[i.column]?.type, h = (e) =>
|
|
502
|
+
}), u = s ? c() : a, d = s ? l() : a, f = (e) => s && e != null ? String(e) : e, p = (e) => s ? Number(e) : e, m = s || r === void 0 ? void 0 : C(r)?.fields?.[i.column]?.type, h = (e) => Ln(m, e);
|
|
503
503
|
switch (i.op) {
|
|
504
504
|
case "eq": return t`${u} = ${f(h(i.value))}`;
|
|
505
505
|
case "neq": return t`${u} <> ${f(h(i.value))}`;
|
|
@@ -516,7 +516,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
516
516
|
return e.length === 0 ? t`TRUE` : t`${u} NOT IN ${t.in(s ? e.map((e) => f(e)) : e)}`;
|
|
517
517
|
}
|
|
518
518
|
case "contains": {
|
|
519
|
-
let e = `%${
|
|
519
|
+
let e = `%${Bn(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
|
|
520
520
|
return t.onDialectOrElse({
|
|
521
521
|
mysql: () => t`LOWER(${u}) LIKE LOWER(${e})`,
|
|
522
522
|
mssql: () => t`LOWER(${u}) LIKE LOWER(${e})`,
|
|
@@ -525,7 +525,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
525
525
|
});
|
|
526
526
|
}
|
|
527
527
|
case "startsWith": {
|
|
528
|
-
let e = `${
|
|
528
|
+
let e = `${Bn(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
|
|
529
529
|
return t.onDialectOrElse({
|
|
530
530
|
mysql: () => t`${u} LIKE ${e}`,
|
|
531
531
|
orElse: () => t`${u} LIKE ${e} ESCAPE '\\'`
|
|
@@ -573,13 +573,13 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
573
573
|
});
|
|
574
574
|
}
|
|
575
575
|
}
|
|
576
|
-
},
|
|
576
|
+
}, Vn = (e, t) => {
|
|
577
577
|
let n = [];
|
|
578
578
|
return e.partitionBy && e.partitionBy.length > 0 && n.push(t`PARTITION BY ${t.csv(e.partitionBy.map((e) => t`${t(e)}`))}`), e.orderBy && e.orderBy.length > 0 && n.push(t`ORDER BY ${t.csv(e.orderBy.map((e) => e.direction === "desc" ? t`${t(e.column)} DESC` : t`${t(e.column)} ASC`))}`), n.length === 0 ? t`` : n.length === 1 ? n[0] : n.reduce((e, n, r) => r === 0 ? n : t`${e} ${n}`);
|
|
579
|
-
},
|
|
579
|
+
}, Hn = (e, t) => t.csv(e.map((e) => {
|
|
580
580
|
let n = e.column === void 0 ? t.unsafe("*") : t`${t(e.column)}`;
|
|
581
581
|
if (e.op.startsWith("window-")) {
|
|
582
|
-
let r =
|
|
582
|
+
let r = Vn(e.window ?? {}, t);
|
|
583
583
|
switch (e.op) {
|
|
584
584
|
case "window-row-number": return t`ROW_NUMBER() OVER (${r}) AS ${t(e.alias)}`;
|
|
585
585
|
case "window-rank": return t`RANK() OVER (${r}) AS ${t(e.alias)}`;
|
|
@@ -603,43 +603,43 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
603
603
|
return t`${t(e.column)} AS ${t(e.alias)}`;
|
|
604
604
|
default: throw Error(`compileAggregateProjection: unknown op '${e.op}'`);
|
|
605
605
|
}
|
|
606
|
-
})),
|
|
606
|
+
})), Un = (e) => `[${e.join(",")}]`, Wn = (e, t) => {
|
|
607
607
|
if (e.queryVector === void 0) return null;
|
|
608
|
-
let n = t(e.column), r =
|
|
608
|
+
let n = t(e.column), r = Un(e.queryVector), i = e.distance === "cosine" ? "<=>" : e.distance === "l2" ? "<->" : "<#>", a = e.distance === "cosine" ? "VEC_DISTANCE_COSINE" : "VEC_DISTANCE_EUCLIDEAN";
|
|
609
609
|
return t.onDialectOrElse({
|
|
610
610
|
mysql: () => t`${t.unsafe(a)}(${n}, ${r})`,
|
|
611
611
|
mssql: () => t`NULL`,
|
|
612
612
|
sqlite: () => t`NULL`,
|
|
613
613
|
orElse: () => t`${n} ${t.unsafe(i)} ${r}::vector`
|
|
614
614
|
});
|
|
615
|
-
},
|
|
615
|
+
}, Gn = (e, t) => {
|
|
616
616
|
let n = t.unsafe(e.useGeography ? "::geography" : "::geometry");
|
|
617
617
|
return t`ST_Distance(${t(e.column)}${n}, ${e.geom}${n})`;
|
|
618
|
-
},
|
|
619
|
-
let r = n.csv(e.columns.map((e) => n`${n(e)}`)), i = `%${
|
|
618
|
+
}, Kn = (e, t) => t`${t(e.column)} <-> ${e.geom}::geometry`, qn = (e, t) => t`${t(`${e.indexName}_tsv`)}`, Jn = (e, t) => `${t}_${e.indexName}_fts`, Yn = (e, t, n) => {
|
|
619
|
+
let r = n.csv(e.columns.map((e) => n`${n(e)}`)), i = `%${Bn(e.query)}%`;
|
|
620
620
|
return n.onDialectOrElse({
|
|
621
621
|
mysql: () => n`MATCH(${r}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)`,
|
|
622
622
|
sqlite: () => {
|
|
623
|
-
let r = n(
|
|
623
|
+
let r = n(Jn(e, t));
|
|
624
624
|
return n`${n("id")} IN (SELECT ${n("row_id")} FROM ${r} WHERE ${r} MATCH ${e.query})`;
|
|
625
625
|
},
|
|
626
626
|
mssql: () => n.or(e.columns.map((e) => n`LOWER(${n(e)}) LIKE LOWER(${i}) ESCAPE '\\'`)),
|
|
627
|
-
orElse: () => n`${
|
|
627
|
+
orElse: () => n`${qn(e, n)} @@ plainto_tsquery(${e.config ?? "english"}, ${e.query})`
|
|
628
628
|
});
|
|
629
|
-
},
|
|
630
|
-
let r = `%${
|
|
629
|
+
}, Xn = (e, t, n) => {
|
|
630
|
+
let r = `%${Bn(e.query)}%`;
|
|
631
631
|
return n.onDialectOrElse({
|
|
632
632
|
mysql: () => n`MATCH(${n.csv(e.columns.map((e) => n`${n(e)}`))}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)`,
|
|
633
633
|
sqlite: () => {
|
|
634
|
-
let r = n(
|
|
634
|
+
let r = n(Jn(e, t));
|
|
635
635
|
return n`COALESCE((SELECT -bm25(${r}) FROM ${r} WHERE ${r} MATCH ${e.query} AND ${r}.${n("row_id")} = ${n("id")}), 0)`;
|
|
636
636
|
},
|
|
637
637
|
mssql: () => e.columns.map((e) => n`(CASE WHEN LOWER(${n(e)}) LIKE LOWER(${r}) ESCAPE '\\' THEN 1 ELSE 0 END)`).reduce((e, t, r) => r === 0 ? t : n`${e} + ${t}`),
|
|
638
|
-
orElse: () => n`ts_rank(${
|
|
638
|
+
orElse: () => n`ts_rank(${qn(e, n)}, plainto_tsquery(${e.config ?? "english"}, ${e.query}))`
|
|
639
639
|
});
|
|
640
|
-
},
|
|
640
|
+
}, Zn = (e, t, n = null) => {
|
|
641
641
|
if (e.setOp && e.setOp.queries.length >= 2) {
|
|
642
|
-
let r = e.setOp.kind === "union" ? "UNION" : e.setOp.kind === "union-all" ? "UNION ALL" : e.setOp.kind === "intersect" ? "INTERSECT" : "EXCEPT", i = e.setOp.queries.map((e) => t`(${
|
|
642
|
+
let r = e.setOp.kind === "union" ? "UNION" : e.setOp.kind === "union-all" ? "UNION ALL" : e.setOp.kind === "intersect" ? "INTERSECT" : "EXCEPT", i = e.setOp.queries.map((e) => t`(${Zn(e, t, n)})`).reduce((e, n, i) => i === 0 ? n : t`${e} ${t.unsafe(r)} ${n}`), a = [];
|
|
643
643
|
if (e.order.length > 0 && a.push(t` ORDER BY ${t.csv(e.order.map((e) => e.direction === "desc" ? t`${t(e.column)} DESC` : t`${t(e.column)} ASC`))}`), e.take !== void 0) {
|
|
644
644
|
if (!Number.isInteger(e.take) || e.take < 0) throw Error(`compileSelect: invalid take ${e.take}`);
|
|
645
645
|
a.push(t` LIMIT ${t.unsafe(String(e.take))}`);
|
|
@@ -650,7 +650,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
650
650
|
}
|
|
651
651
|
return t`${i}${a.reduce((e, n) => t`${e}${n}`, t``)}`;
|
|
652
652
|
}
|
|
653
|
-
let r = e.annClause === void 0 ? null :
|
|
653
|
+
let r = e.annClause === void 0 ? null : Wn(e.annClause, t);
|
|
654
654
|
e.spatialClause !== void 0 && t.onDialectOrElse({
|
|
655
655
|
mysql: () => {
|
|
656
656
|
throw Error("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
|
|
@@ -663,16 +663,16 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
663
663
|
},
|
|
664
664
|
orElse: () => t``
|
|
665
665
|
});
|
|
666
|
-
let i = e.spatialClause?.projectAs === void 0 ? null :
|
|
666
|
+
let i = e.spatialClause?.projectAs === void 0 ? null : Gn(e.spatialClause, t), a = e.aggregations && e.aggregations.length > 0 ? Hn(e.aggregations, t) : e.joinedProjection && e.joinedProjection.length > 0 ? t.csv(e.joinedProjection.map((e) => t`${t(e.source)} AS ${t(e.outputKey)}`)) : e.projection && e.projection.length > 0 ? t.csv(e.projection.map((e) => t`${t(e)}`)) : t`*`, o = (e.aggregations && e.aggregations.length > 0) === !0, s = r !== null && !o ? t`${a}, ${r} AS ${t("distance")}` : a, c = e.fullTextSearch, l = c?.rank !== void 0 && !o ? Xn(c, e.table, t) : null, u = l !== null && c?.rank !== void 0 ? t`${s}, ${l} AS ${t(c.rank.alias)}` : s, d = i !== null && !o && e.spatialClause?.projectAs !== void 0 ? t`${u}, ${i} AS ${t(e.spatialClause.projectAs)}` : u, f = e.distinctOn && e.distinctOn.length > 0 ? t.onDialectOrElse({
|
|
667
667
|
orElse: () => t`DISTINCT ON (${t.csv(e.distinctOn.map((e) => t`${t(e)}`))}) `,
|
|
668
668
|
mysql: () => t`DISTINCT `,
|
|
669
669
|
mssql: () => t`DISTINCT `,
|
|
670
670
|
sqlite: () => t`DISTINCT `
|
|
671
|
-
}) : e.distinct ? t`DISTINCT ` : t``, p = e.alias === void 0 ? t`${t(
|
|
671
|
+
}) : e.distinct ? t`DISTINCT ` : t``, p = e.alias === void 0 ? t`${t(Pn(n, e.table))}` : t`${t(Pn(n, e.table))} AS ${t(e.alias)}`, m = (e.joins ?? []).map((e) => {
|
|
672
672
|
let r = e.kind === "inner" ? "INNER" : "LEFT";
|
|
673
|
-
return t` ${t.unsafe(r)} JOIN ${t(
|
|
674
|
-
}), h = m.length > 0 ? m.reduce((e, n) => t`${e}${n}`, p) : p, g = c === void 0 ? null :
|
|
675
|
-
r !== null && b.push(t`${r} ASC`), e.spatialClause?.order !== void 0 && b.push(e.spatialClause.order === "desc" ? t`${
|
|
673
|
+
return t` ${t.unsafe(r)} JOIN ${t(Pn(n, e.table))} AS ${t(e.alias)} ON ${P(e.on, t, n)}`;
|
|
674
|
+
}), h = m.length > 0 ? m.reduce((e, n) => t`${e}${n}`, p) : p, g = c === void 0 ? null : Yn(c, e.table, t), _ = [e.predicate ? P(e.predicate, t, n, e.table) : null, g].filter((e) => e !== null), v = _.length > 0 ? t` WHERE ${t.and(_)}` : t``, y = e.groupBy && e.groupBy.length > 0 ? t` GROUP BY ${t.csv(e.groupBy.map((e) => t`${t(e)}`))}` : t``, ee = e.having ? t` HAVING ${P(e.having, t, n, e.table)}` : t``, te = e.skip !== void 0, b = [];
|
|
675
|
+
r !== null && b.push(t`${r} ASC`), e.spatialClause?.order !== void 0 && b.push(e.spatialClause.order === "desc" ? t`${Kn(e.spatialClause, t)} DESC` : t`${Kn(e.spatialClause, t)} ASC`), l !== null && c?.rank?.order === !0 && b.push(t`${l} DESC`);
|
|
676
676
|
for (let n of e.order) b.push(n.direction === "desc" ? t`${t(n.column)} DESC` : t`${t(n.column)} ASC`);
|
|
677
677
|
let ne = b.length > 0 ? t` ORDER BY ${t.csv(b)}` : te ? t.onDialectOrElse({
|
|
678
678
|
mssql: () => t` ORDER BY (SELECT NULL)`,
|
|
@@ -680,7 +680,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
680
680
|
}) : t``, x = (e) => {
|
|
681
681
|
if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw Error(`compileSelect: expected non-negative integer take/skip, got ${e}`);
|
|
682
682
|
return t.unsafe(String(e));
|
|
683
|
-
}, re = (e.ctes ?? []).map((e) => t`${t(e.name)} AS (${
|
|
683
|
+
}, re = (e.ctes ?? []).map((e) => t`${t(e.name)} AS (${Zn(e.descriptor, t, n)})`), S = (e.ctes ?? []).some((e) => e.recursive === !0), ie = re.length > 0 ? t`WITH ${t.unsafe(S ? "RECURSIVE " : "")}${t.csv(re)} ` : t``;
|
|
684
684
|
return t.onDialectOrElse({
|
|
685
685
|
mssql: () => {
|
|
686
686
|
let n = e.take !== void 0 && !te ? t`TOP ${x(e.take)} ` : t``, r = te ? t` OFFSET ${x(e.skip)} ROWS FETCH NEXT ${x(e.take ?? 2 ** 53 - 1)} ROWS ONLY` : t``;
|
|
@@ -693,27 +693,27 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
693
693
|
});
|
|
694
694
|
}, Qn = (e, t, n) => {
|
|
695
695
|
if (e.eager === void 0) return null;
|
|
696
|
-
let r =
|
|
696
|
+
let r = tr(e.table, e.eager, e.sourceTable);
|
|
697
697
|
if (r === null) return null;
|
|
698
|
-
let i =
|
|
698
|
+
let i = cr(n, e, r, sr(t, n));
|
|
699
699
|
return i === null ? null : {
|
|
700
700
|
fragment: i,
|
|
701
|
-
decode:
|
|
701
|
+
decode: dr(r, n)
|
|
702
702
|
};
|
|
703
|
-
},
|
|
703
|
+
}, $n = (e) => e.relation.kind === "one" && e.fkSide === "target", er = (e) => ({
|
|
704
704
|
...e,
|
|
705
705
|
branch: {
|
|
706
706
|
...e.branch,
|
|
707
707
|
limit: 2
|
|
708
708
|
}
|
|
709
|
-
}),
|
|
710
|
-
let r = n ?? pe(e), i =
|
|
709
|
+
}), tr = (e, t, n) => {
|
|
710
|
+
let r = n ?? pe(e), i = nn(e);
|
|
711
711
|
if (i === void 0) return null;
|
|
712
712
|
let a = [];
|
|
713
713
|
for (let [e, n] of Object.entries(t)) {
|
|
714
714
|
let t = i[e];
|
|
715
715
|
if (t === void 0) return null;
|
|
716
|
-
let o =
|
|
716
|
+
let o = nr(e, t, r, n === !0 ? {} : n);
|
|
717
717
|
if (o === null) return null;
|
|
718
718
|
a.push(o);
|
|
719
719
|
}
|
|
@@ -721,30 +721,30 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
721
721
|
table: r,
|
|
722
722
|
children: a
|
|
723
723
|
};
|
|
724
|
-
},
|
|
724
|
+
}, nr = (e, t, n, r) => {
|
|
725
725
|
let i = t.target(), a = (t.kind === "manyToMany" ? void 0 : t.sourceKey) ?? "id", o, s;
|
|
726
726
|
if (t.kind === "manyToMany") o = t.targetKey, s = "target";
|
|
727
727
|
else if (t.kind === "one") {
|
|
728
|
-
let r = t.sourceKey ??
|
|
728
|
+
let r = t.sourceKey ?? or(n, i.tableName);
|
|
729
729
|
if (r !== void 0) o = r, s = "source";
|
|
730
730
|
else try {
|
|
731
|
-
o = t.foreignKey ??
|
|
731
|
+
o = t.foreignKey ?? A(i, n.tableName, e), s = "target";
|
|
732
732
|
} catch {
|
|
733
733
|
return null;
|
|
734
734
|
}
|
|
735
735
|
} else try {
|
|
736
|
-
o = t.foreignKey ??
|
|
736
|
+
o = t.foreignKey ?? A(i, n.tableName, e), s = "target";
|
|
737
737
|
} catch {
|
|
738
738
|
return null;
|
|
739
739
|
}
|
|
740
740
|
let c = r.with === void 0 ? [] : (() => {
|
|
741
|
-
let e =
|
|
741
|
+
let e = nn(i.tableName);
|
|
742
742
|
if (e === void 0 && Object.keys(r.with).length > 0) return null;
|
|
743
743
|
let t = [];
|
|
744
744
|
for (let [n, a] of Object.entries(r.with)) {
|
|
745
745
|
let r = e?.[n];
|
|
746
746
|
if (r === void 0) return null;
|
|
747
|
-
let o =
|
|
747
|
+
let o = nr(n, r, i, a === !0 ? {} : a);
|
|
748
748
|
if (o === null) return null;
|
|
749
749
|
t.push(o);
|
|
750
750
|
}
|
|
@@ -760,9 +760,9 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
760
760
|
fkSide: s,
|
|
761
761
|
branch: r,
|
|
762
762
|
children: c,
|
|
763
|
-
junction:
|
|
763
|
+
junction: rr(t, r)
|
|
764
764
|
};
|
|
765
|
-
},
|
|
765
|
+
}, rr = (e, t) => {
|
|
766
766
|
if (e.kind !== "manyToMany" || t.junction === void 0) return;
|
|
767
767
|
let n = e.through(), r = t.junction === !0 ? Object.keys(n.fields) : t.junction, i = r.filter((e) => e in n.fields);
|
|
768
768
|
return {
|
|
@@ -774,35 +774,35 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
774
774
|
return t !== void 0 && (t.type === "timestamp" || t.type === "date");
|
|
775
775
|
})
|
|
776
776
|
};
|
|
777
|
-
},
|
|
777
|
+
}, ir = (e) => `__j_${e}`, ar = "__j", or = (e, t) => {
|
|
778
778
|
for (let [n, r] of Object.entries(e.fields)) if (r.type === "reference" && r.references?.()?.tableName === t) return n;
|
|
779
|
-
},
|
|
779
|
+
}, sr = (e, t) => {
|
|
780
780
|
let n = 0;
|
|
781
781
|
return {
|
|
782
782
|
sql: e,
|
|
783
783
|
dialect: t,
|
|
784
784
|
nextAlias: () => `__a${n++}`
|
|
785
785
|
};
|
|
786
|
-
},
|
|
786
|
+
}, cr = (e, t, n, r) => {
|
|
787
787
|
switch (e) {
|
|
788
|
-
case "postgres": return
|
|
788
|
+
case "postgres": return mr(t, n, r);
|
|
789
789
|
case "sqlite":
|
|
790
|
-
case "turso": return
|
|
790
|
+
case "turso": return Sr(t, n, r);
|
|
791
791
|
case "mysql":
|
|
792
|
-
case "mariadb": return
|
|
793
|
-
case "mssql": return
|
|
792
|
+
case "mariadb": return Mr(t, n, r);
|
|
793
|
+
case "mssql": return zr(t, n, r);
|
|
794
794
|
}
|
|
795
|
-
},
|
|
796
|
-
let n =
|
|
795
|
+
}, lr = (e, t) => t === "mssql" && !ur.test(e) ? /* @__PURE__ */ new Date(`${e}Z`) : new Date(e), ur = /(?:Z|[+-]\d{2}:?\d{2})$/, dr = (e, t) => {
|
|
796
|
+
let n = fr(e.table, e.children, t);
|
|
797
797
|
return (e) => e.map((e) => {
|
|
798
798
|
let t = e.__row, r = typeof t == "string" ? JSON.parse(t) : t;
|
|
799
799
|
return n(r);
|
|
800
800
|
});
|
|
801
|
-
},
|
|
801
|
+
}, fr = (e, t, n) => {
|
|
802
802
|
let r = [];
|
|
803
803
|
for (let [t, n] of Object.entries(e.fields)) (n.type === "timestamp" || n.type === "date") && r.push(t);
|
|
804
804
|
let i = t.map((e) => {
|
|
805
|
-
let t =
|
|
805
|
+
let t = fr(e.target, e.children, n), r = e.relation.kind === "one", i = $n(e), a = i ? _n({
|
|
806
806
|
relationName: e.relationName,
|
|
807
807
|
sourceTableName: e.source.tableName,
|
|
808
808
|
targetTableName: e.target.tableName,
|
|
@@ -815,14 +815,14 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
815
815
|
isSingle: r,
|
|
816
816
|
fromOverFetch: i,
|
|
817
817
|
cardinalityMessage: a,
|
|
818
|
-
junction:
|
|
818
|
+
junction: pr(e.junction, n)
|
|
819
819
|
};
|
|
820
820
|
});
|
|
821
821
|
return (e) => {
|
|
822
822
|
let t = { ...e };
|
|
823
823
|
for (let e of r) {
|
|
824
824
|
let r = t[e];
|
|
825
|
-
typeof r == "string" && (t[e] =
|
|
825
|
+
typeof r == "string" && (t[e] = lr(r, n));
|
|
826
826
|
}
|
|
827
827
|
for (let e of i) {
|
|
828
828
|
let n = t[e.name];
|
|
@@ -832,7 +832,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
832
832
|
}
|
|
833
833
|
if (e.fromOverFetch) {
|
|
834
834
|
let r = n;
|
|
835
|
-
if (r.length > 1) throw new
|
|
835
|
+
if (r.length > 1) throw new gn(e.cardinalityMessage);
|
|
836
836
|
t[e.name] = r.length === 0 ? null : e.decode(r[0]);
|
|
837
837
|
continue;
|
|
838
838
|
}
|
|
@@ -844,204 +844,204 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
844
844
|
}
|
|
845
845
|
return t;
|
|
846
846
|
};
|
|
847
|
-
},
|
|
847
|
+
}, pr = (e, t) => {
|
|
848
848
|
if (e === void 0) return;
|
|
849
849
|
let n = new Set(e.dateColumns), r = e.requested;
|
|
850
850
|
return (e) => {
|
|
851
851
|
let i = e._junction ?? {}, a = {};
|
|
852
852
|
for (let e of r) {
|
|
853
853
|
let r = i[e];
|
|
854
|
-
a[e] = n.has(e) && typeof r == "string" ?
|
|
854
|
+
a[e] = n.has(e) && typeof r == "string" ? lr(r, t) : r;
|
|
855
855
|
}
|
|
856
856
|
return {
|
|
857
857
|
...e,
|
|
858
858
|
_junction: a
|
|
859
859
|
};
|
|
860
860
|
};
|
|
861
|
-
},
|
|
862
|
-
let r = n.sql, i = n.nextAlias(), a = r(t.table.tableName), o = r(i), s =
|
|
863
|
-
return s === null ? null : r`SELECT ${s} AS "__row" FROM ${a} AS ${o}${e.predicate ? r` WHERE ${
|
|
864
|
-
},
|
|
865
|
-
let i = n.sql, a = r === void 0 ? i`to_jsonb(${i(e)}.*)` : i`(to_jsonb(${i(e)}.*) - ${
|
|
861
|
+
}, mr = (e, t, n) => {
|
|
862
|
+
let r = n.sql, i = n.nextAlias(), a = r(t.table.tableName), o = r(i), s = hr(i, t.children, n);
|
|
863
|
+
return s === null ? null : r`SELECT ${s} AS "__row" FROM ${a} AS ${o}${e.predicate ? r` WHERE ${B(e.predicate, i, r)}` : r``}${e.order.length > 0 ? r` ORDER BY ${r.csv(e.order.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)}`}`;
|
|
864
|
+
}, hr = (e, t, n, r) => {
|
|
865
|
+
let i = n.sql, a = r === void 0 ? i`to_jsonb(${i(e)}.*)` : i`(to_jsonb(${i(e)}.*) - ${R(ar, i)}::text)`;
|
|
866
866
|
if (t.length === 0 && r === void 0) return a;
|
|
867
867
|
let o = [];
|
|
868
|
-
r !== void 0 && o.push(i`${
|
|
868
|
+
r !== void 0 && o.push(i`${R("_junction", i)}, ${L(e, ar, i)}`);
|
|
869
869
|
for (let r of t) {
|
|
870
|
-
let t =
|
|
870
|
+
let t = gr(r, e, n);
|
|
871
871
|
if (t === null) return null;
|
|
872
|
-
o.push(i`${
|
|
872
|
+
o.push(i`${R(r.relationName, i)}, ${t}`);
|
|
873
873
|
}
|
|
874
874
|
return i`${a} || jsonb_build_object(${i.csv(o)})`;
|
|
875
|
-
},
|
|
875
|
+
}, gr = (e, t, n) => {
|
|
876
876
|
switch (e.relation.kind) {
|
|
877
|
-
case "one": return
|
|
878
|
-
case "many": return
|
|
879
|
-
case "manyToMany": return
|
|
877
|
+
case "one": return $n(e) ? vr(er(e), t, n) : _r(e, t, n);
|
|
878
|
+
case "many": return vr(e, t, n);
|
|
879
|
+
case "manyToMany": return yr(e, t, n);
|
|
880
880
|
}
|
|
881
|
-
},
|
|
882
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
881
|
+
}, _r = (e, t, n) => {
|
|
882
|
+
let r = n.sql, i = n.nextAlias(), a = hr(i, e.children, n);
|
|
883
883
|
if (a === null) return null;
|
|
884
|
-
let o = e.fkSide === "source" ? r`${
|
|
884
|
+
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);
|
|
885
885
|
return r`(SELECT ${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o}${s}${c} LIMIT 1)`;
|
|
886
|
-
},
|
|
887
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
886
|
+
}, vr = (e, t, n) => {
|
|
887
|
+
let r = n.sql, i = n.nextAlias(), a = hr(i, e.children, n);
|
|
888
888
|
if (a === null) return null;
|
|
889
|
-
let o = r`${
|
|
889
|
+
let o = r`${L(void 0, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${P(e.branch.where, r)}`, c = xr(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)}`;
|
|
890
890
|
return r`COALESCE((SELECT jsonb_agg(${a}) FROM (SELECT * FROM ${r(e.target.tableName)} WHERE ${o}${s}${c}${l}${u}) AS ${r(i)}), '[]'::jsonb)`;
|
|
891
|
-
},
|
|
892
|
-
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c =
|
|
891
|
+
}, yr = (e, t, n) => {
|
|
892
|
+
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = hr(o, e.children, n, e.junction);
|
|
893
893
|
if (c === null) return null;
|
|
894
|
-
let l = e.branch.where === void 0 ? r`` : r` AND ${
|
|
895
|
-
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 ${
|
|
896
|
-
},
|
|
897
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
894
|
+
let l = e.branch.where === void 0 ? r`` : r` AND ${P(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`, ${br(e.junction, s, r)} AS ${r(ar)}`;
|
|
895
|
+
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)`;
|
|
896
|
+
}, br = (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`))}`, xr = (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`))}`, Sr = (e, t, n) => {
|
|
897
|
+
let r = n.sql, i = n.nextAlias(), a = Cr(i, t.table, t.children, n);
|
|
898
898
|
if (a === null) return null;
|
|
899
|
-
let o = e.predicate ? r` WHERE ${
|
|
899
|
+
let o = e.predicate ? r` WHERE ${B(e.predicate, i, r)}` : r``, s = e.order.length > 0 ? r` ORDER BY ${r.csv(e.order.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)}`;
|
|
900
900
|
return r`SELECT ${a} AS "__row" FROM ${r(t.table.tableName)} AS ${r(i)}${o}${s}${c}${l}`;
|
|
901
|
-
},
|
|
901
|
+
}, Cr = (e, t, n, r, i) => {
|
|
902
902
|
let a = r.sql, o = [];
|
|
903
|
-
for (let n of Object.keys(t.fields)) o.push(a`${
|
|
903
|
+
for (let n of Object.keys(t.fields)) o.push(a`${R(n, a)}, ${L(e, n, a)}`);
|
|
904
904
|
if (i !== void 0) {
|
|
905
|
-
let e =
|
|
906
|
-
o.push(a`${
|
|
905
|
+
let e = wr(i.projection, i.source, a);
|
|
906
|
+
o.push(a`${R("_junction", a)}, json_object(${e})`);
|
|
907
907
|
}
|
|
908
908
|
for (let t of n) {
|
|
909
|
-
let n =
|
|
909
|
+
let n = Or(t, e, r);
|
|
910
910
|
if (n === null) return null;
|
|
911
|
-
o.push(a`${
|
|
911
|
+
o.push(a`${R(t.relationName, a)}, ${n}`);
|
|
912
912
|
}
|
|
913
913
|
return a`json_object(${a.csv(o)})`;
|
|
914
|
-
},
|
|
914
|
+
}, wr = (e, t, n) => e.present.length === 0 ? n`` : n.csv(e.present.map((e) => n`${R(e, n)}, ${L(t.alias, t.physical(e), n)}`)), Tr = (e, t, n) => e.present.length === 0 ? n`` : n`, ${n.csv(e.present.map((e) => n`${L(t, e, n)} AS ${n(ir(e))}`))}`, Er = (e) => ({
|
|
915
915
|
alias: e,
|
|
916
|
-
physical:
|
|
917
|
-
}),
|
|
916
|
+
physical: ir
|
|
917
|
+
}), Dr = (e) => ({
|
|
918
918
|
alias: e,
|
|
919
919
|
physical: (e) => e
|
|
920
|
-
}),
|
|
920
|
+
}), Or = (e, t, n) => {
|
|
921
921
|
switch (e.relation.kind) {
|
|
922
|
-
case "one": return
|
|
923
|
-
case "many": return
|
|
924
|
-
case "manyToMany": return
|
|
922
|
+
case "one": return $n(e) ? Ar(er(e), t, n) : kr(e, t, n);
|
|
923
|
+
case "many": return Ar(e, t, n);
|
|
924
|
+
case "manyToMany": return jr(e, t, n);
|
|
925
925
|
}
|
|
926
|
-
},
|
|
927
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
926
|
+
}, kr = (e, t, n) => {
|
|
927
|
+
let r = n.sql, i = n.nextAlias(), a = Cr(i, e.target, e.children, n);
|
|
928
928
|
if (a === null) return null;
|
|
929
|
-
let o = e.fkSide === "source" ? r`${
|
|
929
|
+
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)}`;
|
|
930
930
|
return r`(SELECT ${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o} LIMIT 1)`;
|
|
931
|
-
},
|
|
932
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
931
|
+
}, Ar = (e, t, n) => {
|
|
932
|
+
let r = n.sql, i = n.nextAlias(), a = Cr(i, e.target, e.children, n);
|
|
933
933
|
if (a === null) return null;
|
|
934
|
-
let o = r`${
|
|
934
|
+
let o = r`${L(void 0, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${P(H(e.branch.where), r)}`, c = xr(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)}`;
|
|
935
935
|
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('[]'))`;
|
|
936
|
-
},
|
|
937
|
-
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c =
|
|
936
|
+
}, jr = (e, t, n) => {
|
|
937
|
+
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = Cr(o, e.target, e.children, n, e.junction === void 0 ? void 0 : {
|
|
938
938
|
projection: e.junction,
|
|
939
|
-
source:
|
|
939
|
+
source: Er(o)
|
|
940
940
|
});
|
|
941
941
|
if (c === null) return null;
|
|
942
|
-
let l = e.branch.where === void 0 ? r`` : r` AND ${
|
|
943
|
-
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 ${
|
|
944
|
-
},
|
|
945
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
942
|
+
let l = e.branch.where === void 0 ? r`` : r` AND ${P(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`` : Tr(e.junction, s, r);
|
|
943
|
+
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('[]'))`;
|
|
944
|
+
}, Mr = (e, t, n) => {
|
|
945
|
+
let r = n.sql, i = n.nextAlias(), a = I(i, t.table, t.children, n);
|
|
946
946
|
if (a === null) return null;
|
|
947
|
-
let o = e.predicate ? r` WHERE ${
|
|
947
|
+
let o = e.predicate ? r` WHERE ${B(e.predicate, i, r)}` : r``, s = e.order.length > 0 ? r` ORDER BY ${r.csv(e.order.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)}`;
|
|
948
948
|
return r`SELECT ${a} AS \`__row\` FROM ${r(t.table.tableName)} AS ${r(i)}${o}${s}${c}${l}`;
|
|
949
|
-
},
|
|
949
|
+
}, I = (e, t, n, r, i) => {
|
|
950
950
|
let a = r.sql, o = [];
|
|
951
|
-
for (let n of Object.keys(t.fields)) o.push(a`${
|
|
951
|
+
for (let n of Object.keys(t.fields)) o.push(a`${R(n, a)}, ${L(e, n, a)}`);
|
|
952
952
|
if (i !== void 0) {
|
|
953
|
-
let e =
|
|
954
|
-
o.push(a`${
|
|
953
|
+
let e = wr(i.projection, i.source, a);
|
|
954
|
+
o.push(a`${R("_junction", a)}, JSON_OBJECT(${e})`);
|
|
955
955
|
}
|
|
956
956
|
for (let t of n) {
|
|
957
|
-
let n =
|
|
957
|
+
let n = Nr(t, e, r);
|
|
958
958
|
if (n === null) return null;
|
|
959
|
-
o.push(a`${
|
|
959
|
+
o.push(a`${R(t.relationName, a)}, ${n}`);
|
|
960
960
|
}
|
|
961
961
|
return a`JSON_OBJECT(${a.csv(o)})`;
|
|
962
|
-
},
|
|
962
|
+
}, Nr = (e, t, n) => {
|
|
963
963
|
switch (e.relation.kind) {
|
|
964
964
|
case "one":
|
|
965
|
-
if (
|
|
966
|
-
let r =
|
|
967
|
-
return n.dialect === "mariadb" ?
|
|
965
|
+
if ($n(e)) {
|
|
966
|
+
let r = er(e);
|
|
967
|
+
return n.dialect === "mariadb" ? Lr(r, t, n) : Fr(r, t, n);
|
|
968
968
|
}
|
|
969
|
-
return
|
|
970
|
-
case "many": return n.dialect === "mariadb" ?
|
|
971
|
-
case "manyToMany": return n.dialect === "mariadb" ?
|
|
969
|
+
return Pr(e, t, n);
|
|
970
|
+
case "many": return n.dialect === "mariadb" ? Lr(e, t, n) : Fr(e, t, n);
|
|
971
|
+
case "manyToMany": return n.dialect === "mariadb" ? Rr(e, t, n) : Ir(e, t, n);
|
|
972
972
|
}
|
|
973
|
-
},
|
|
974
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
973
|
+
}, Pr = (e, t, n) => {
|
|
974
|
+
let r = n.sql, i = n.nextAlias(), a = I(i, e.target, e.children, n);
|
|
975
975
|
if (a === null) return null;
|
|
976
|
-
let o = e.fkSide === "source" ? r`${
|
|
976
|
+
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)}`;
|
|
977
977
|
return r`(SELECT ${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o} LIMIT 1)`;
|
|
978
|
-
},
|
|
979
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
978
|
+
}, Fr = (e, t, n) => {
|
|
979
|
+
let r = n.sql, i = n.nextAlias(), a = I(i, e.target, e.children, n);
|
|
980
980
|
if (a === null) return null;
|
|
981
|
-
let o = r`${
|
|
981
|
+
let o = r`${L(void 0, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${P(H(e.branch.where), r)}`, c = xr(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)}`;
|
|
982
982
|
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())`;
|
|
983
|
-
},
|
|
984
|
-
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c =
|
|
983
|
+
}, Ir = (e, t, n) => {
|
|
984
|
+
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 : {
|
|
985
985
|
projection: e.junction,
|
|
986
|
-
source:
|
|
986
|
+
source: Er(o)
|
|
987
987
|
});
|
|
988
988
|
if (c === null) return null;
|
|
989
|
-
let l = e.branch.where === void 0 ? r`` : r` AND ${
|
|
990
|
-
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 ${
|
|
991
|
-
}, Ir = (e, t, n) => {
|
|
992
|
-
let r = n.sql, i = n.nextAlias(), a = L(i, e.target, e.children, n);
|
|
993
|
-
if (a === null) return null;
|
|
994
|
-
let o = r`${R(i, e.foreignKey, r)} = ${R(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${N(U(e.branch.where), r)}`, c = e.branch.orderBy ?? [];
|
|
995
|
-
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`${R(i, e.column, r)} DESC` : r`${R(i, e.column, r)} ASC`))}` : r``}) FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o}${s}), JSON_ARRAY())`;
|
|
996
|
-
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 ${R(i, "rn", r)} > ${B(d, r)} AND ${R(i, "rn", r)} <= ${B(d + u, r)}` : u === void 0 ? r` AND ${R(i, "rn", r)} > ${B(d, r)}` : r` AND ${R(i, "rn", r)} <= ${B(u, r)}`;
|
|
997
|
-
return r`COALESCE((SELECT JSON_ARRAYAGG(${a} ORDER BY ${R(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())`;
|
|
989
|
+
let l = e.branch.where === void 0 ? r`` : r` AND ${P(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`` : Tr(e.junction, s, r);
|
|
990
|
+
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())`;
|
|
998
991
|
}, Lr = (e, t, n) => {
|
|
992
|
+
let r = n.sql, i = n.nextAlias(), a = I(i, e.target, e.children, n);
|
|
993
|
+
if (a === null) return null;
|
|
994
|
+
let o = r`${L(i, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${P(H(e.branch.where), r)}`, c = e.branch.orderBy ?? [];
|
|
995
|
+
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())`;
|
|
996
|
+
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)}`;
|
|
997
|
+
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())`;
|
|
998
|
+
}, Rr = (e, t, n) => {
|
|
999
999
|
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = (t) => e.junction === void 0 ? void 0 : {
|
|
1000
1000
|
projection: e.junction,
|
|
1001
1001
|
source: t
|
|
1002
|
-
}, l = r`${
|
|
1002
|
+
}, 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 ${P(H(e.branch.where), r)}`, f = V(e, s, r, !0), p = e.branch.orderBy ?? [];
|
|
1003
1003
|
if (!(e.branch.limit !== void 0 || e.branch.offset !== void 0)) {
|
|
1004
|
-
let t =
|
|
1005
|
-
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`${
|
|
1004
|
+
let t = I(o, e.target, e.children, n, c(Dr(s)));
|
|
1005
|
+
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())`;
|
|
1006
1006
|
}
|
|
1007
|
-
let m = p.length > 0 ? r` ORDER BY ${r.csv(p.map((e) => e.direction === "desc" ? r`${
|
|
1007
|
+
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)}`, y = I(o, e.target, e.children, n, c(Er(o)));
|
|
1008
1008
|
if (y === null) return null;
|
|
1009
|
-
let ee = e.junction === void 0 ? r`` :
|
|
1010
|
-
return r`COALESCE((SELECT JSON_ARRAYAGG(${y} ORDER BY ${
|
|
1011
|
-
},
|
|
1012
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
1009
|
+
let ee = e.junction === void 0 ? r`` : Tr(e.junction, s, r);
|
|
1010
|
+
return r`COALESCE((SELECT JSON_ARRAYAGG(${y} ORDER BY ${L(o, "rn", r)}) FROM (SELECT ${r(o)}.*${ee}, ${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())`;
|
|
1011
|
+
}, zr = (e, t, n) => {
|
|
1012
|
+
let r = n.sql, i = n.nextAlias(), a = Br(i, t.table, t.children, n);
|
|
1013
1013
|
if (a === null) return null;
|
|
1014
|
-
let o = e.predicate ? r` WHERE ${
|
|
1014
|
+
let o = e.predicate ? r` WHERE ${B(e.predicate, i, r)}` : r``, s = e.order.length > 0 ? r` ORDER BY ${r.csv(e.order.map((e) => e.direction === "desc" ? r`${L(i, e.column, r)} DESC` : r`${L(i, e.column, r)} ASC`))}` : r``, c = r``, l = r``;
|
|
1015
1015
|
if (e.skip !== void 0) {
|
|
1016
1016
|
let t = e.order.length > 0 ? s : r` ORDER BY (SELECT NULL)`;
|
|
1017
|
-
l = e.take === void 0 ? r`${t} OFFSET ${
|
|
1018
|
-
} else e.take !== void 0 && (c = r`TOP ${
|
|
1017
|
+
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`;
|
|
1018
|
+
} else e.take !== void 0 && (c = r`TOP ${z(e.take, r)} `);
|
|
1019
1019
|
let u = e.skip === void 0 ? s : r``;
|
|
1020
1020
|
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}`;
|
|
1021
|
-
},
|
|
1021
|
+
}, Br = (e, t, n, r, i) => {
|
|
1022
1022
|
let a = r.sql, o = [];
|
|
1023
|
-
for (let n of Object.keys(t.fields)) o.push(a`${
|
|
1024
|
-
if (i !== void 0) for (let e of i.projection.present) o.push(a`${
|
|
1023
|
+
for (let n of Object.keys(t.fields)) o.push(a`${L(e, n, a)} AS ${a(n)}`);
|
|
1024
|
+
if (i !== void 0) for (let e of i.projection.present) o.push(a`${L(i.source.alias, i.source.physical(e), a)} AS ${Vr(`_junction.${e}`, a)}`);
|
|
1025
1025
|
for (let t of n) {
|
|
1026
|
-
let n =
|
|
1026
|
+
let n = Hr(t, e, r);
|
|
1027
1027
|
if (n === null) return null;
|
|
1028
1028
|
o.push(n);
|
|
1029
1029
|
}
|
|
1030
1030
|
return a.csv(o);
|
|
1031
|
-
},
|
|
1031
|
+
}, Vr = (e, t) => t.unsafe(`[${e.replace(/]/g, "]]")}]`), Hr = (e, t, n) => {
|
|
1032
1032
|
switch (e.relation.kind) {
|
|
1033
|
-
case "one": return
|
|
1034
|
-
case "many": return
|
|
1035
|
-
case "manyToMany": return
|
|
1033
|
+
case "one": return $n(e) ? Gr(er(e), t, n) : Ur(e, t, n);
|
|
1034
|
+
case "many": return Gr(e, t, n);
|
|
1035
|
+
case "manyToMany": return Kr(e, t, n);
|
|
1036
1036
|
}
|
|
1037
|
-
},
|
|
1038
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
1037
|
+
}, Ur = (e, t, n) => {
|
|
1038
|
+
let r = n.sql, i = n.nextAlias(), a = Br(i, e.target, e.children, n);
|
|
1039
1039
|
if (a === null) return null;
|
|
1040
|
-
let o = e.fkSide === "source" ? r`${
|
|
1040
|
+
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)}`;
|
|
1041
1041
|
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)}`;
|
|
1042
|
-
},
|
|
1042
|
+
}, Wr = (e, t, n) => {
|
|
1043
1043
|
if (e.offset !== void 0) {
|
|
1044
|
-
let r = e.orderBy && e.orderBy.length > 0 ? t : n` ORDER BY (SELECT NULL)`, i = e.limit === void 0 ? n`${r} OFFSET ${
|
|
1044
|
+
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`;
|
|
1045
1045
|
return {
|
|
1046
1046
|
top: n``,
|
|
1047
1047
|
pagination: i,
|
|
@@ -1049,33 +1049,33 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1049
1049
|
};
|
|
1050
1050
|
}
|
|
1051
1051
|
return {
|
|
1052
|
-
top: e.limit === void 0 ? n`` : n`TOP ${
|
|
1052
|
+
top: e.limit === void 0 ? n`` : n`TOP ${z(e.limit, n)} `,
|
|
1053
1053
|
pagination: n``,
|
|
1054
1054
|
finalOrder: t
|
|
1055
1055
|
};
|
|
1056
|
-
}, Wr = (e, t, n) => {
|
|
1057
|
-
let r = n.sql, i = n.nextAlias(), a = zr(i, e.target, e.children, n);
|
|
1058
|
-
if (a === null) return null;
|
|
1059
|
-
let o = e.branch.where === void 0 ? r`` : r` AND ${V(e.branch.where, i, r)}`, s = I(i, e.branch.orderBy, r), { top: c, pagination: l, finalOrder: u } = Ur(e.branch, s, r);
|
|
1060
|
-
return r`ISNULL(JSON_QUERY((SELECT ${c}${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${R(i, e.foreignKey, r)} = ${R(t, e.sourceKey, r)}${o}${u}${l} FOR JSON PATH, INCLUDE_NULL_VALUES)), JSON_QUERY('[]')) AS ${r(e.relationName)}`;
|
|
1061
1056
|
}, Gr = (e, t, n) => {
|
|
1062
|
-
let r = n.sql, i =
|
|
1057
|
+
let r = n.sql, i = n.nextAlias(), a = Br(i, e.target, e.children, n);
|
|
1058
|
+
if (a === null) return null;
|
|
1059
|
+
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 } = Wr(e.branch, s, r);
|
|
1060
|
+
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)}`;
|
|
1061
|
+
}, Kr = (e, t, n) => {
|
|
1062
|
+
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = Br(o, e.target, e.children, n, e.junction === void 0 ? void 0 : {
|
|
1063
1063
|
projection: e.junction,
|
|
1064
|
-
source:
|
|
1064
|
+
source: Dr(s)
|
|
1065
1065
|
});
|
|
1066
1066
|
if (c === null) return null;
|
|
1067
|
-
let l = e.branch.where === void 0 ? r`` : r` AND ${
|
|
1068
|
-
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 ${
|
|
1069
|
-
},
|
|
1067
|
+
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 } = Wr(e.branch, d, r);
|
|
1068
|
+
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)}`;
|
|
1069
|
+
}, 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) => {
|
|
1070
1070
|
if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw Error(`literalInt: expected non-negative integer, got ${e}`);
|
|
1071
1071
|
return t.unsafe(String(e));
|
|
1072
|
-
},
|
|
1072
|
+
}, B = (e, t, n) => P(qr(e, t), n), V = (e, t, n, r = !1) => {
|
|
1073
1073
|
let i = e.branch.onJunction;
|
|
1074
|
-
return i === void 0 ? n`` : n` AND ${
|
|
1075
|
-
},
|
|
1076
|
-
if ("not" in e) return { not:
|
|
1077
|
-
if ("and" in e) return { and: e.and.map((e) =>
|
|
1078
|
-
if ("or" in e) return { or: e.or.map((e) =>
|
|
1074
|
+
return i === void 0 ? n`` : n` AND ${B(r ? H(i) : i, t, n)}`;
|
|
1075
|
+
}, qr = (e, t) => {
|
|
1076
|
+
if ("not" in e) return { not: qr(e.not, t) };
|
|
1077
|
+
if ("and" in e) return { and: e.and.map((e) => qr(e, t)) };
|
|
1078
|
+
if ("or" in e) return { or: e.or.map((e) => qr(e, t)) };
|
|
1079
1079
|
if (e.op === "subquery-in" || e.op === "subquery-not-in") {
|
|
1080
1080
|
let n = e;
|
|
1081
1081
|
return {
|
|
@@ -1089,23 +1089,23 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1089
1089
|
...n,
|
|
1090
1090
|
column: `${t}.${n.column}`
|
|
1091
1091
|
};
|
|
1092
|
-
},
|
|
1093
|
-
if ("not" in e) return { not:
|
|
1094
|
-
if ("and" in e) return { and: e.and.map((e) =>
|
|
1095
|
-
if ("or" in e) return { or: e.or.map((e) =>
|
|
1092
|
+
}, H = (e) => {
|
|
1093
|
+
if ("not" in e) return { not: H(e.not) };
|
|
1094
|
+
if ("and" in e) return { and: e.and.map((e) => H(e)) };
|
|
1095
|
+
if ("or" in e) return { or: e.or.map((e) => H(e)) };
|
|
1096
1096
|
if (e.op === "subquery-in" || e.op === "subquery-not-in" || e.op === "exists" || e.op === "not-exists") return e;
|
|
1097
1097
|
let t = e;
|
|
1098
1098
|
return {
|
|
1099
1099
|
...t,
|
|
1100
|
-
value:
|
|
1100
|
+
value: Jr(t.value)
|
|
1101
1101
|
};
|
|
1102
|
-
},
|
|
1103
|
-
e.actors !== void 0 && (
|
|
1104
|
-
},
|
|
1102
|
+
}, Jr = (e) => e == null ? e : e instanceof Date ? e.toISOString() : typeof e == "boolean" ? +!!e : Array.isArray(e) ? e.map((e) => Jr(e)) : e, Yr = Symbol.for("@voltro/database/coreTablesRegistry"), Xr = globalThis, Zr = Xr[Yr] ?? (Xr[Yr] = {}), Qr = (e) => {
|
|
1103
|
+
e.actors !== void 0 && (Zr.actors = e.actors), e.tenants !== void 0 && (Zr.tenants = e.tenants);
|
|
1104
|
+
}, $r = (e, t) => () => {
|
|
1105
1105
|
let n = e();
|
|
1106
1106
|
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`);
|
|
1107
1107
|
return n();
|
|
1108
|
-
},
|
|
1108
|
+
}, ei = () => $r(() => Zr.actors, "actors"), ti = () => $r(() => Zr.tenants, "tenants"), ni = v("actors", {
|
|
1109
1109
|
id: S(),
|
|
1110
1110
|
kind: D().oneOf([
|
|
1111
1111
|
"user",
|
|
@@ -1115,73 +1115,73 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1115
1115
|
]),
|
|
1116
1116
|
displayName: D().nullable(),
|
|
1117
1117
|
createdAt: i().default("now")
|
|
1118
|
-
}),
|
|
1118
|
+
}), ri = (e, t) => ({
|
|
1119
1119
|
column: e,
|
|
1120
1120
|
op: "eq",
|
|
1121
1121
|
value: t
|
|
1122
|
-
}),
|
|
1122
|
+
}), ii = (e, t) => ({
|
|
1123
1123
|
column: e,
|
|
1124
1124
|
op: "neq",
|
|
1125
1125
|
value: t
|
|
1126
|
-
}),
|
|
1126
|
+
}), ai = (e, t) => ({
|
|
1127
1127
|
column: e,
|
|
1128
1128
|
op: "gt",
|
|
1129
1129
|
value: t
|
|
1130
|
-
}),
|
|
1130
|
+
}), oi = (e, t) => ({
|
|
1131
1131
|
column: e,
|
|
1132
1132
|
op: "gte",
|
|
1133
1133
|
value: t
|
|
1134
|
-
}),
|
|
1134
|
+
}), si = (e, t) => ({
|
|
1135
1135
|
column: e,
|
|
1136
1136
|
op: "lt",
|
|
1137
1137
|
value: t
|
|
1138
|
-
}),
|
|
1138
|
+
}), ci = (e, t) => ({
|
|
1139
1139
|
column: e,
|
|
1140
1140
|
op: "lte",
|
|
1141
1141
|
value: t
|
|
1142
|
-
}),
|
|
1142
|
+
}), li = (e, t) => ({
|
|
1143
1143
|
column: e,
|
|
1144
1144
|
op: "in",
|
|
1145
1145
|
value: t
|
|
1146
|
-
}),
|
|
1146
|
+
}), ui = (e, t) => ({
|
|
1147
1147
|
column: e,
|
|
1148
1148
|
op: "notIn",
|
|
1149
1149
|
value: t
|
|
1150
|
-
}),
|
|
1150
|
+
}), di = (e, t) => ({
|
|
1151
1151
|
column: e,
|
|
1152
1152
|
op: "contains",
|
|
1153
1153
|
value: t
|
|
1154
|
-
}),
|
|
1154
|
+
}), fi = (e, t) => ({
|
|
1155
1155
|
column: e,
|
|
1156
1156
|
op: "startsWith",
|
|
1157
1157
|
value: t
|
|
1158
|
-
}),
|
|
1158
|
+
}), pi = (e, t) => ({
|
|
1159
1159
|
column: e,
|
|
1160
1160
|
op: "arrayContains",
|
|
1161
1161
|
value: t
|
|
1162
|
-
}),
|
|
1162
|
+
}), mi = (e, t) => ({
|
|
1163
1163
|
column: e,
|
|
1164
1164
|
op: "arrayOverlaps",
|
|
1165
1165
|
value: t
|
|
1166
|
-
}),
|
|
1166
|
+
}), hi = (e, t) => ({
|
|
1167
1167
|
column: e,
|
|
1168
1168
|
op: "arrayHas",
|
|
1169
1169
|
value: t
|
|
1170
|
-
}),
|
|
1170
|
+
}), gi = {
|
|
1171
1171
|
column: "id",
|
|
1172
1172
|
op: "in",
|
|
1173
1173
|
value: []
|
|
1174
|
-
},
|
|
1174
|
+
}, _i = (e) => ({
|
|
1175
1175
|
column: e,
|
|
1176
1176
|
op: "isNull"
|
|
1177
|
-
}),
|
|
1177
|
+
}), vi = (e) => ({
|
|
1178
1178
|
column: e,
|
|
1179
1179
|
op: "isNotNull"
|
|
1180
|
-
}),
|
|
1180
|
+
}), yi = (e, t) => ({
|
|
1181
1181
|
column: e,
|
|
1182
1182
|
op: "spatial",
|
|
1183
1183
|
value: t
|
|
1184
|
-
}),
|
|
1184
|
+
}), bi = (...e) => ({ and: e }), xi = (...e) => ({ or: e }), Si = (e) => ({ not: e }), Ci = (e, ...t) => {
|
|
1185
1185
|
if (t.length === 0) throw Error(`jsonField("${e}"): at least one path segment is required`);
|
|
1186
1186
|
let n = (n, r) => ({
|
|
1187
1187
|
column: e,
|
|
@@ -1203,29 +1203,33 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1203
1203
|
isNull: () => n("isNull"),
|
|
1204
1204
|
isNotNull: () => n("isNotNull")
|
|
1205
1205
|
};
|
|
1206
|
-
},
|
|
1206
|
+
}, wi = (e) => "descriptor" in e ? e.descriptor : e, Ti = (e, t) => ({
|
|
1207
1207
|
column: e,
|
|
1208
1208
|
op: "subquery-in",
|
|
1209
|
-
subquery:
|
|
1210
|
-
}),
|
|
1209
|
+
subquery: wi(t)
|
|
1210
|
+
}), Ei = (e, t) => ({
|
|
1211
1211
|
column: e,
|
|
1212
1212
|
op: "subquery-not-in",
|
|
1213
|
-
subquery:
|
|
1214
|
-
}), Ei = (e) => ({
|
|
1215
|
-
op: "exists",
|
|
1216
|
-
subquery: Ci(e)
|
|
1213
|
+
subquery: wi(t)
|
|
1217
1214
|
}), Di = (e) => ({
|
|
1215
|
+
op: "exists",
|
|
1216
|
+
subquery: wi(e)
|
|
1217
|
+
}), Oi = (e) => ({
|
|
1218
1218
|
op: "not-exists",
|
|
1219
|
-
subquery:
|
|
1220
|
-
}),
|
|
1219
|
+
subquery: wi(e)
|
|
1220
|
+
}), ki = (e, t) => e === t || e instanceof Date && t instanceof Date && e.getTime() === t.getTime(), Ai = (e, t) => {
|
|
1221
|
+
if (e == null || t == null) return null;
|
|
1222
|
+
let n = e instanceof Date ? e.getTime() : e, r = t instanceof Date ? t.getTime() : t;
|
|
1223
|
+
return typeof n == typeof r ? n === r ? 0 : n > r ? 1 : -1 : null;
|
|
1224
|
+
}, ji = (e, t, n = null) => {
|
|
1221
1225
|
if (!t) return !1;
|
|
1222
|
-
if ("not" in e) return !
|
|
1226
|
+
if ("not" in e) return !ji(e.not, t, n);
|
|
1223
1227
|
if ("and" in e) {
|
|
1224
|
-
for (let r of e.and) if (!
|
|
1228
|
+
for (let r of e.and) if (!ji(r, t, n)) return !1;
|
|
1225
1229
|
return !0;
|
|
1226
1230
|
}
|
|
1227
1231
|
if ("or" in e) {
|
|
1228
|
-
for (let r of e.or) if (
|
|
1232
|
+
for (let r of e.or) if (ji(r, t, n)) return !0;
|
|
1229
1233
|
return !1;
|
|
1230
1234
|
}
|
|
1231
1235
|
if (e.op === "subquery-in" || e.op === "subquery-not-in") {
|
|
@@ -1242,14 +1246,14 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1242
1246
|
}
|
|
1243
1247
|
let r = e, i = t[r.column];
|
|
1244
1248
|
switch (r.op) {
|
|
1245
|
-
case "eq": return i
|
|
1246
|
-
case "neq": return i
|
|
1247
|
-
case "gt": return (
|
|
1248
|
-
case "gte": return (
|
|
1249
|
-
case "lt": return (
|
|
1250
|
-
case "lte": return (
|
|
1251
|
-
case "in": return Array.isArray(r.value) && r.value.
|
|
1252
|
-
case "notIn": return Array.isArray(r.value) && !r.value.
|
|
1249
|
+
case "eq": return ki(i, r.value);
|
|
1250
|
+
case "neq": return !ki(i, r.value);
|
|
1251
|
+
case "gt": return (Ai(i, r.value) ?? -1) > 0;
|
|
1252
|
+
case "gte": return (Ai(i, r.value) ?? -1) >= 0;
|
|
1253
|
+
case "lt": return (Ai(i, r.value) ?? 1) < 0;
|
|
1254
|
+
case "lte": return (Ai(i, r.value) ?? 1) <= 0;
|
|
1255
|
+
case "in": return Array.isArray(r.value) && r.value.some((e) => ki(i, e));
|
|
1256
|
+
case "notIn": return Array.isArray(r.value) && !r.value.some((e) => ki(i, e));
|
|
1253
1257
|
case "contains": return typeof i == "string" && typeof r.value == "string" && i.toLowerCase().includes(r.value.toLowerCase());
|
|
1254
1258
|
case "startsWith": return typeof i == "string" && typeof r.value == "string" && i.startsWith(r.value);
|
|
1255
1259
|
case "arrayContains": {
|
|
@@ -1265,17 +1269,17 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1265
1269
|
case "isNotNull": return i != null;
|
|
1266
1270
|
case "spatial": throw Error("@voltro/plugin-postgis: spatial predicates (ST_DWithin / ST_Contains / ST_Within / ST_Intersects / bbox &&) are not evaluable in-memory — use them in one-shot ctx.store.query reads, not reactive subscriptions.");
|
|
1267
1271
|
}
|
|
1268
|
-
},
|
|
1272
|
+
}, Mi = function* (e) {
|
|
1269
1273
|
if ("not" in e) {
|
|
1270
|
-
yield*
|
|
1274
|
+
yield* Mi(e.not);
|
|
1271
1275
|
return;
|
|
1272
1276
|
}
|
|
1273
1277
|
if ("and" in e) {
|
|
1274
|
-
for (let t of e.and) yield*
|
|
1278
|
+
for (let t of e.and) yield* Mi(t);
|
|
1275
1279
|
return;
|
|
1276
1280
|
}
|
|
1277
1281
|
if ("or" in e) {
|
|
1278
|
-
for (let t of e.or) yield*
|
|
1282
|
+
for (let t of e.or) yield* Mi(t);
|
|
1279
1283
|
return;
|
|
1280
1284
|
}
|
|
1281
1285
|
e.op === "subquery-in" || e.op === "subquery-not-in" ? yield {
|
|
@@ -1285,42 +1289,42 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1285
1289
|
kind: "exists",
|
|
1286
1290
|
descriptor: e.subquery
|
|
1287
1291
|
});
|
|
1288
|
-
},
|
|
1292
|
+
}, Ni = function* (e, t = !0) {
|
|
1289
1293
|
if ("not" in e) {
|
|
1290
|
-
yield*
|
|
1294
|
+
yield* Ni(e.not, !1);
|
|
1291
1295
|
return;
|
|
1292
1296
|
}
|
|
1293
1297
|
if ("and" in e) {
|
|
1294
|
-
for (let n of e.and) yield*
|
|
1298
|
+
for (let n of e.and) yield* Ni(n, t);
|
|
1295
1299
|
return;
|
|
1296
1300
|
}
|
|
1297
1301
|
if ("or" in e) {
|
|
1298
|
-
for (let t of e.or) yield*
|
|
1302
|
+
for (let t of e.or) yield* Ni(t, !1);
|
|
1299
1303
|
return;
|
|
1300
1304
|
}
|
|
1301
1305
|
e.op === "subquery-in" || e.op === "subquery-not-in" || e.op === "exists" || e.op === "not-exists" || (yield {
|
|
1302
1306
|
...e,
|
|
1303
1307
|
conjunctive: t
|
|
1304
1308
|
});
|
|
1305
|
-
},
|
|
1309
|
+
}, Pi = (e, t, n = {}) => ({
|
|
1306
1310
|
table: e,
|
|
1307
1311
|
op: "insert",
|
|
1308
1312
|
old: null,
|
|
1309
1313
|
new: t,
|
|
1310
1314
|
...n
|
|
1311
|
-
}),
|
|
1315
|
+
}), Fi = (e, t, n, r = {}) => ({
|
|
1312
1316
|
table: e,
|
|
1313
1317
|
op: "update",
|
|
1314
1318
|
old: t,
|
|
1315
1319
|
new: n,
|
|
1316
1320
|
...r
|
|
1317
|
-
}),
|
|
1321
|
+
}), Ii = (e, t, n = {}) => ({
|
|
1318
1322
|
table: e,
|
|
1319
1323
|
op: "delete",
|
|
1320
1324
|
old: t,
|
|
1321
1325
|
new: null,
|
|
1322
1326
|
...n
|
|
1323
|
-
}),
|
|
1327
|
+
}), Li = (e, t, n = {}) => {
|
|
1324
1328
|
let { at: r = "2026-01-01T00:00:00.000Z", column: i = "deletedAt", ...a } = n;
|
|
1325
1329
|
return {
|
|
1326
1330
|
table: e,
|
|
@@ -1335,66 +1339,66 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1335
1339
|
},
|
|
1336
1340
|
...a
|
|
1337
1341
|
};
|
|
1338
|
-
},
|
|
1339
|
-
let t = e ??
|
|
1342
|
+
}, U = new xt(), Ri = (e, t) => U.run(e, t), zi = () => U.getStore(), Bi = (e) => {
|
|
1343
|
+
let t = e ?? U.getStore();
|
|
1340
1344
|
return t === void 0 ? {} : {
|
|
1341
1345
|
...t.traceId === void 0 ? {} : { traceId: t.traceId },
|
|
1342
1346
|
...t.subjectId === void 0 ? {} : { subjectId: t.subjectId },
|
|
1343
1347
|
...t.procedure === void 0 ? {} : { procedure: t.procedure }
|
|
1344
1348
|
};
|
|
1345
|
-
},
|
|
1346
|
-
let t =
|
|
1347
|
-
return t === void 0 ? e(void 0) :
|
|
1348
|
-
},
|
|
1349
|
-
for (let [t, n] of
|
|
1350
|
-
let r = n.filter((t) => e - t.at <
|
|
1351
|
-
|
|
1352
|
-
}
|
|
1353
|
-
},
|
|
1349
|
+
}, Vi = (e) => {
|
|
1350
|
+
let t = U.getStore();
|
|
1351
|
+
return t === void 0 ? e(void 0) : U.run(t, () => e(t));
|
|
1352
|
+
}, Hi = 3e4, Ui = 1e4, W = /* @__PURE__ */ new Map(), G = 0, Wi = (e, t, n) => `${e}\u0000${t}\u0000${String(n)}`, Gi = (e) => {
|
|
1353
|
+
for (let [t, n] of W) {
|
|
1354
|
+
let r = n.filter((t) => e - t.at < Hi);
|
|
1355
|
+
G -= n.length - r.length, r.length === 0 ? W.delete(t) : r.length !== n.length && W.set(t, r);
|
|
1356
|
+
}
|
|
1357
|
+
}, Ki = (e, t) => {
|
|
1354
1358
|
if (t.traceId === void 0 && t.subjectId === void 0 && t.procedure === void 0) return;
|
|
1355
1359
|
let n = Date.now();
|
|
1356
|
-
if (
|
|
1357
|
-
let r =
|
|
1358
|
-
r === void 0 ?
|
|
1360
|
+
if (G >= Ui && Gi(n), G >= Ui) return;
|
|
1361
|
+
let r = W.get(e);
|
|
1362
|
+
r === void 0 ? W.set(e, [{
|
|
1359
1363
|
attribution: t,
|
|
1360
1364
|
at: n
|
|
1361
1365
|
}]) : r.push({
|
|
1362
1366
|
attribution: t,
|
|
1363
1367
|
at: n
|
|
1364
|
-
}),
|
|
1365
|
-
},
|
|
1366
|
-
let t =
|
|
1368
|
+
}), G += 1;
|
|
1369
|
+
}, qi = (e) => {
|
|
1370
|
+
let t = W.get(e);
|
|
1367
1371
|
if (t === void 0 || t.length === 0) return;
|
|
1368
1372
|
let n = t.shift();
|
|
1369
|
-
if (--
|
|
1370
|
-
},
|
|
1371
|
-
let t =
|
|
1373
|
+
if (--G, t.length === 0 && W.delete(e), !(Date.now() - n.at >= Hi)) return n.attribution;
|
|
1374
|
+
}, Ji = (e) => (W.get(e)?.length ?? 0) > 0, K = /* @__PURE__ */ new Map(), q = /* @__PURE__ */ new Map(), J = /* @__PURE__ */ new Map(), Yi = 250, Xi = (e) => {
|
|
1375
|
+
let t = q.get(e);
|
|
1372
1376
|
if (t === void 0) return;
|
|
1373
|
-
|
|
1374
|
-
let n =
|
|
1375
|
-
n !== void 0 && (clearTimeout(n),
|
|
1377
|
+
q.delete(e);
|
|
1378
|
+
let n = J.get(e);
|
|
1379
|
+
n !== void 0 && (clearTimeout(n), J.delete(e));
|
|
1376
1380
|
for (let e of t) e();
|
|
1377
|
-
}, Xi = (e) => {
|
|
1378
|
-
q.set(e, (q.get(e) ?? 0) + 1);
|
|
1379
1381
|
}, Zi = (e) => {
|
|
1380
|
-
|
|
1382
|
+
K.set(e, (K.get(e) ?? 0) + 1);
|
|
1383
|
+
}, Qi = (e) => {
|
|
1384
|
+
let t = (K.get(e) ?? 0) - 1;
|
|
1381
1385
|
if (t > 0) {
|
|
1382
|
-
|
|
1386
|
+
K.set(e, t);
|
|
1383
1387
|
return;
|
|
1384
1388
|
}
|
|
1385
|
-
|
|
1386
|
-
},
|
|
1387
|
-
let i = n == null ? void 0 :
|
|
1389
|
+
K.delete(e), Xi(e);
|
|
1390
|
+
}, $i = (e, t, n, r) => {
|
|
1391
|
+
let i = n == null ? void 0 : Wi(e, t, n), a = () => r(i === void 0 ? void 0 : qi(i));
|
|
1388
1392
|
if (i === void 0) {
|
|
1389
1393
|
a();
|
|
1390
1394
|
return;
|
|
1391
1395
|
}
|
|
1392
|
-
if (
|
|
1396
|
+
if (Ji(i)) {
|
|
1393
1397
|
a();
|
|
1394
1398
|
return;
|
|
1395
1399
|
}
|
|
1396
|
-
let o =
|
|
1397
|
-
if (o === void 0 && (
|
|
1400
|
+
let o = q.get(e);
|
|
1401
|
+
if (o === void 0 && (K.get(e) ?? 0) === 0) {
|
|
1398
1402
|
a();
|
|
1399
1403
|
return;
|
|
1400
1404
|
}
|
|
@@ -1402,38 +1406,38 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1402
1406
|
o.push(a);
|
|
1403
1407
|
return;
|
|
1404
1408
|
}
|
|
1405
|
-
|
|
1406
|
-
let s = setTimeout(() =>
|
|
1407
|
-
typeof s == "object" && typeof s.unref == "function" && s.unref(),
|
|
1408
|
-
},
|
|
1409
|
-
|
|
1410
|
-
for (let e of
|
|
1411
|
-
|
|
1412
|
-
},
|
|
1409
|
+
q.set(e, [a]);
|
|
1410
|
+
let s = setTimeout(() => Xi(e), Yi);
|
|
1411
|
+
typeof s == "object" && typeof s.unref == "function" && s.unref(), J.set(e, s);
|
|
1412
|
+
}, ea = () => {
|
|
1413
|
+
W.clear(), G = 0, K.clear();
|
|
1414
|
+
for (let e of J.values()) clearTimeout(e);
|
|
1415
|
+
J.clear(), q.clear();
|
|
1416
|
+
}, ta = () => G, Y = /* @__PURE__ */ new Map(), na = (e, t) => {
|
|
1413
1417
|
Y.set(e, {
|
|
1414
1418
|
recorder: t.recorder,
|
|
1415
1419
|
tables: new Set(t.tables),
|
|
1416
1420
|
ownTables: new Set(t.ownTables)
|
|
1417
1421
|
});
|
|
1418
|
-
},
|
|
1422
|
+
}, ra = (e) => {
|
|
1419
1423
|
Y.delete(e);
|
|
1420
|
-
},
|
|
1424
|
+
}, ia = () => Y.clear(), aa = (e) => {
|
|
1421
1425
|
if (Y.size === 0) return !1;
|
|
1422
1426
|
for (let t of Y.values()) if (!t.ownTables.has(e) && t.tables.has(e)) return !0;
|
|
1423
1427
|
return !1;
|
|
1424
|
-
},
|
|
1428
|
+
}, oa = async (e, t) => {
|
|
1425
1429
|
if (Y.size !== 0) for (let n of Y.values()) n.ownTables.has(t.table) || n.tables.has(t.table) && await n.recorder(e, t);
|
|
1426
|
-
},
|
|
1430
|
+
}, sa = (e) => {
|
|
1427
1431
|
if (vt.isSuccess(e)) return e.value;
|
|
1428
1432
|
throw mt.squash(e.cause);
|
|
1429
|
-
},
|
|
1430
|
-
table:
|
|
1431
|
-
id:
|
|
1432
|
-
expected:
|
|
1433
|
-
actual:
|
|
1434
|
-
}) {},
|
|
1433
|
+
}, ca = class extends O.TaggedError()("VersionConflict", {
|
|
1434
|
+
table: O.String,
|
|
1435
|
+
id: O.String,
|
|
1436
|
+
expected: O.Number,
|
|
1437
|
+
actual: O.NullOr(O.Number)
|
|
1438
|
+
}) {}, la = (e) => {
|
|
1435
1439
|
for (let [t, n] of Object.entries(e)) if (n?.definition?.versionColumn === !0) return t;
|
|
1436
|
-
},
|
|
1440
|
+
}, ua = (e) => {
|
|
1437
1441
|
let { versionColumn: t, patch: n } = e;
|
|
1438
1442
|
if (t === void 0) return {
|
|
1439
1443
|
nextVersion: void 0,
|
|
@@ -1446,28 +1450,28 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1446
1450
|
expected: i,
|
|
1447
1451
|
patch: a
|
|
1448
1452
|
};
|
|
1449
|
-
},
|
|
1450
|
-
if (e.expected !== void 0 && !(e.current !== null && e.current === e.expected)) return new
|
|
1453
|
+
}, da = (e) => {
|
|
1454
|
+
if (e.expected !== void 0 && !(e.current !== null && e.current === e.expected)) return new ca({
|
|
1451
1455
|
table: e.table,
|
|
1452
1456
|
id: e.id,
|
|
1453
1457
|
expected: e.expected,
|
|
1454
1458
|
actual: e.current
|
|
1455
1459
|
});
|
|
1456
|
-
},
|
|
1457
|
-
id:
|
|
1460
|
+
}, fa = 1, pa = "voltro/expires", ma = () => _({
|
|
1461
|
+
id: pa,
|
|
1458
1462
|
fields: { expiresAt: i().nullable() },
|
|
1459
1463
|
behaviors: { defaultWhere: () => "expiresAt IS NULL OR expiresAt > now()" }
|
|
1460
|
-
}),
|
|
1461
|
-
id:
|
|
1464
|
+
}), ha = "voltro/localFirst", ga = () => _({
|
|
1465
|
+
id: ha,
|
|
1462
1466
|
fields: {}
|
|
1463
|
-
}),
|
|
1467
|
+
}), _a = (e) => e.appliedMixins.some((e) => e.id === ha), va = (e) => {
|
|
1464
1468
|
let t = [];
|
|
1465
|
-
for (let n of Object.values(e))
|
|
1469
|
+
for (let n of Object.values(e)) _a(n) && t.push(n.tableName);
|
|
1466
1470
|
return t;
|
|
1467
|
-
},
|
|
1468
|
-
let i =
|
|
1471
|
+
}, ya = class extends gt.TaggedError("TableStreamError") {}, ba = 1e3, xa = (e, t, n, r) => {
|
|
1472
|
+
let i = yt.match(r, {
|
|
1469
1473
|
onNone: () => e.where,
|
|
1470
|
-
onSome: (n) => e.where ?
|
|
1474
|
+
onSome: (n) => e.where ? bi(e.where, ai(t, n)) : ai(t, n)
|
|
1471
1475
|
});
|
|
1472
1476
|
return {
|
|
1473
1477
|
table: e.table,
|
|
@@ -1482,19 +1486,19 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1482
1486
|
...e.includeDeleted === void 0 ? {} : { includeDeleted: e.includeDeleted },
|
|
1483
1487
|
...e.crossTenant === void 0 ? {} : { crossTenant: e.crossTenant }
|
|
1484
1488
|
};
|
|
1485
|
-
},
|
|
1486
|
-
let n = t.pk ?? "id", r = t.chunkSize ??
|
|
1487
|
-
return
|
|
1489
|
+
}, Sa = (e, t) => {
|
|
1490
|
+
let n = t.pk ?? "id", r = t.chunkSize ?? ba;
|
|
1491
|
+
return bt.paginateChunkEffect(yt.none(), (i) => {
|
|
1488
1492
|
let a = _t.tryPromise({
|
|
1489
|
-
try: () => e.query(
|
|
1490
|
-
catch: (e) => new
|
|
1493
|
+
try: () => e.query(xa(t, n, r, i)),
|
|
1494
|
+
catch: (e) => new ya({
|
|
1491
1495
|
table: t.table,
|
|
1492
1496
|
cause: e
|
|
1493
1497
|
})
|
|
1494
1498
|
});
|
|
1495
|
-
return (t.retry ? a.pipe(_t.retry(t.retry)) : a).pipe(_t.map((e) => [ht.fromIterable(e), e.length === r && e.length > 0 ?
|
|
1499
|
+
return (t.retry ? a.pipe(_t.retry(t.retry)) : a).pipe(_t.map((e) => [ht.fromIterable(e), e.length === r && e.length > 0 ? yt.some(yt.some(e[e.length - 1][n])) : yt.none()]));
|
|
1496
1500
|
});
|
|
1497
|
-
},
|
|
1501
|
+
}, Ca = (e) => {
|
|
1498
1502
|
let t = e.alpha ?? .5;
|
|
1499
1503
|
if (t < 0 || t > 1) throw Error(`hybridSearch: alpha must be in [0, 1], got ${t}`);
|
|
1500
1504
|
return (n) => {
|
|
@@ -1521,14 +1525,14 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1521
1525
|
}
|
|
1522
1526
|
};
|
|
1523
1527
|
};
|
|
1524
|
-
},
|
|
1528
|
+
}, wa = async (e, t) => {
|
|
1525
1529
|
let n = e.as ?? "embedding", r = t.row[e.from];
|
|
1526
1530
|
if (typeof r != "string" || r.length === 0) return {};
|
|
1527
1531
|
let i = await t.embed(r);
|
|
1528
1532
|
return { [n]: i };
|
|
1529
|
-
},
|
|
1533
|
+
}, Ta = (e) => {
|
|
1530
1534
|
if (!Number.isInteger(e.dimensions) || e.dimensions <= 0) throw Error(`vectorEmbedding: dimensions must be a positive integer, got ${String(e.dimensions)}.`);
|
|
1531
|
-
let t = e.as ?? "embedding", n = (t) =>
|
|
1535
|
+
let t = e.as ?? "embedding", n = (t) => wa(e, t);
|
|
1532
1536
|
return _({
|
|
1533
1537
|
id: "voltro/vectorEmbedding",
|
|
1534
1538
|
fields: { [t]: me(e.dimensions) },
|
|
@@ -1546,19 +1550,19 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1546
1550
|
beforeUpdate: n
|
|
1547
1551
|
}
|
|
1548
1552
|
});
|
|
1549
|
-
},
|
|
1553
|
+
}, Ea = 63, Da = "br_pr", X = class extends Error {
|
|
1550
1554
|
_tag = "BranchNameInvalid";
|
|
1551
1555
|
constructor(e) {
|
|
1552
1556
|
super(e), this.name = "BranchNameInvalid";
|
|
1553
1557
|
}
|
|
1554
|
-
},
|
|
1558
|
+
}, Oa = (e, t) => {
|
|
1555
1559
|
if (!Number.isInteger(t) || t < 0) throw new X(`prNumber must be a non-negative integer, got ${String(t)}`);
|
|
1556
|
-
let n =
|
|
1560
|
+
let n = Mn(e);
|
|
1557
1561
|
if (n.replace(/_/g, "") === "") throw new X(`app slug '${e}' has no usable identifier characters`);
|
|
1558
|
-
let r = `${
|
|
1559
|
-
if (r.length >
|
|
1562
|
+
let r = `${Da}${t}_${n}`;
|
|
1563
|
+
if (r.length > Ea) throw new X(`branch namespace '${r}' exceeds the ${Ea}-byte identifier limit — use a shorter app slug`);
|
|
1560
1564
|
return r;
|
|
1561
|
-
},
|
|
1565
|
+
}, ka = (e) => e.startsWith(Da), Aa = {
|
|
1562
1566
|
requested: {
|
|
1563
1567
|
provision: "provisioning",
|
|
1564
1568
|
destroy: "destroying"
|
|
@@ -1577,18 +1581,18 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1577
1581
|
fail: "failed"
|
|
1578
1582
|
},
|
|
1579
1583
|
destroyed: {}
|
|
1580
|
-
},
|
|
1584
|
+
}, ja = class extends Error {
|
|
1581
1585
|
from;
|
|
1582
1586
|
event;
|
|
1583
1587
|
_tag = "BranchTransitionInvalid";
|
|
1584
1588
|
constructor(e, t) {
|
|
1585
1589
|
super(`invalid branch transition: ${e} --${t}-->`), this.from = e, this.event = t, this.name = "BranchTransitionInvalid";
|
|
1586
1590
|
}
|
|
1587
|
-
},
|
|
1588
|
-
let n =
|
|
1589
|
-
if (n === void 0) throw new
|
|
1591
|
+
}, Ma = (e, t) => {
|
|
1592
|
+
let n = Aa[e][t];
|
|
1593
|
+
if (n === void 0) throw new ja(e, t);
|
|
1590
1594
|
return n;
|
|
1591
|
-
},
|
|
1595
|
+
}, Na = (e, t, n, r) => {
|
|
1592
1596
|
if (n === "copy" && (r === void 0 || r === "")) throw new X("seed 'copy' requires a parentNamespace to snapshot from");
|
|
1593
1597
|
let i = [{
|
|
1594
1598
|
kind: "create-namespace",
|
|
@@ -1609,13 +1613,13 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1609
1613
|
detail: `run boot seeds into ${e}`
|
|
1610
1614
|
});
|
|
1611
1615
|
return i;
|
|
1612
|
-
},
|
|
1613
|
-
if (!
|
|
1616
|
+
}, Pa = (e) => {
|
|
1617
|
+
if (!ka(e)) throw new X(`refusing to plan teardown of '${e}' — not a branch namespace`);
|
|
1614
1618
|
return [{
|
|
1615
1619
|
kind: "drop-namespace",
|
|
1616
1620
|
detail: e
|
|
1617
1621
|
}];
|
|
1618
|
-
},
|
|
1622
|
+
}, Fa = (e) => {
|
|
1619
1623
|
if (e === void 0 || e === "") return !1;
|
|
1620
1624
|
try {
|
|
1621
1625
|
let t = new URL(e).hostname.toLowerCase();
|
|
@@ -1623,27 +1627,27 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1623
1627
|
} catch {
|
|
1624
1628
|
return /\bneon\.(tech|build)\b/i.test(e);
|
|
1625
1629
|
}
|
|
1626
|
-
},
|
|
1630
|
+
}, Ia = (e) => e.prefer === void 0 ? e.seed === "copy" && Fa(e.dbUrl) ? "neon-cow" : "namespace" : e.prefer, La = (e, t = {}) => [{
|
|
1627
1631
|
kind: "neon-branch-create",
|
|
1628
1632
|
detail: `${t.parentBranch ?? "main"} → ${e} (copy-on-write)`
|
|
1629
|
-
}],
|
|
1630
|
-
if (!
|
|
1633
|
+
}], Ra = (e) => {
|
|
1634
|
+
if (!ka(e)) throw new X(`refusing to plan teardown of '${e}' — not a branch namespace`);
|
|
1631
1635
|
return [{
|
|
1632
1636
|
kind: "neon-branch-delete",
|
|
1633
1637
|
detail: e
|
|
1634
1638
|
}];
|
|
1635
|
-
},
|
|
1639
|
+
}, za = (e) => e.mechanism === "neon-cow" ? La(e.branchId, e.neonParentBranch === void 0 ? {} : { parentBranch: e.neonParentBranch }) : Na(e.branchId, e.tableNames, e.seed, e.parentNamespace), Ba = (e, t) => e === "neon-cow" ? Ra(t) : Pa(t), Va = (e, t, n) => {
|
|
1636
1640
|
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);
|
|
1637
1641
|
return {
|
|
1638
1642
|
evict: i,
|
|
1639
1643
|
rejectNew: r.filter((e) => !a.has(e.namespace)).length >= t.maxBranches
|
|
1640
1644
|
};
|
|
1641
|
-
},
|
|
1642
|
-
let n =
|
|
1645
|
+
}, Ha = async (e, t) => {
|
|
1646
|
+
let n = Oa(e.appSlug, e.prNumber), r = Ia({
|
|
1643
1647
|
seed: e.seed,
|
|
1644
1648
|
...e.dbUrl === void 0 ? {} : { dbUrl: e.dbUrl },
|
|
1645
1649
|
...e.prefer === void 0 ? {} : { prefer: e.prefer }
|
|
1646
|
-
}), i =
|
|
1650
|
+
}), i = za({
|
|
1647
1651
|
mechanism: r,
|
|
1648
1652
|
branchId: n,
|
|
1649
1653
|
tableNames: e.tableNames,
|
|
@@ -1668,10 +1672,10 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1668
1672
|
mechanism: r,
|
|
1669
1673
|
steps: i
|
|
1670
1674
|
};
|
|
1671
|
-
},
|
|
1672
|
-
let r =
|
|
1675
|
+
}, Ua = async (e, t, n) => {
|
|
1676
|
+
let r = Ba(t, e);
|
|
1673
1677
|
return t === "neon-cow" ? await n.neonBranchDelete(e) : await n.dropNamespace(e), r;
|
|
1674
|
-
},
|
|
1678
|
+
}, Wa = (e, t, n) => Va(e, t, n), Z = (e) => `"${e.replace(/"/g, "\"\"")}"`, Ga = (e) => {
|
|
1675
1679
|
let t = () => {
|
|
1676
1680
|
throw Error("namespace branch executor: Neon ops require a neon-cow executor (use a Neon connection for copy-on-write branches)");
|
|
1677
1681
|
};
|
|
@@ -1683,18 +1687,18 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1683
1687
|
neonBranchCreate: t,
|
|
1684
1688
|
neonBranchDelete: t
|
|
1685
1689
|
};
|
|
1686
|
-
},
|
|
1690
|
+
}, Ka = class extends Error {
|
|
1687
1691
|
_tag = "TenantResidencyUnresolved";
|
|
1688
1692
|
constructor(e) {
|
|
1689
1693
|
super(e), this.name = "TenantResidencyUnresolved";
|
|
1690
1694
|
}
|
|
1691
|
-
},
|
|
1695
|
+
}, qa = class extends Error {
|
|
1692
1696
|
region;
|
|
1693
1697
|
_tag = "TenantRegionUnavailable";
|
|
1694
1698
|
constructor(e, t) {
|
|
1695
1699
|
super(t), this.region = e, this.name = "TenantRegionUnavailable";
|
|
1696
1700
|
}
|
|
1697
|
-
},
|
|
1701
|
+
}, Ja, Ya = (e) => {
|
|
1698
1702
|
if (e.homes === void 0) throw Error("setResidencyConfig: `homes` is required");
|
|
1699
1703
|
if (e.servableRegions === void 0 || e.servableRegions.length === 0) throw Error("setResidencyConfig: `servableRegions` must be non-empty (which regions this deployment serves)");
|
|
1700
1704
|
let t = /* @__PURE__ */ new Map();
|
|
@@ -1703,55 +1707,55 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1703
1707
|
if (e !== void 0 && e !== n.region) throw Error(`residency: tenant '${n.tenantId}' is mapped to two regions ('${e}' and '${n.region}')`);
|
|
1704
1708
|
t.set(n.tenantId, n.region);
|
|
1705
1709
|
}
|
|
1706
|
-
return
|
|
1707
|
-
},
|
|
1708
|
-
|
|
1709
|
-
},
|
|
1710
|
-
if (e == null || e === "") throw new
|
|
1710
|
+
return Ja = e, e;
|
|
1711
|
+
}, Xa = () => Ja, Za = () => {
|
|
1712
|
+
Ja = void 0;
|
|
1713
|
+
}, Qa = (e, t) => {
|
|
1714
|
+
if (e == null || e === "") throw new Ka("residency is on but the request has no resolvable tenant — refusing to bind a store");
|
|
1711
1715
|
let n = t.homes.find((t) => t.tenantId === e);
|
|
1712
|
-
if (n === void 0) throw new
|
|
1716
|
+
if (n === void 0) throw new Ka(`no residency home is mapped for tenant '${e}' — refusing to fall back to a default store (would be a residency violation)`);
|
|
1713
1717
|
return n;
|
|
1714
|
-
},
|
|
1715
|
-
let n =
|
|
1718
|
+
}, $a = (e, t) => t.servableRegions.includes(e), eo = (e, t) => {
|
|
1719
|
+
let n = Qa(e.tenantId, t), r = Nn(n.tenantId);
|
|
1716
1720
|
return {
|
|
1717
1721
|
region: n.region,
|
|
1718
1722
|
namespace: r,
|
|
1719
1723
|
...n.connectionKey === void 0 ? {} : { connectionKey: n.connectionKey }
|
|
1720
1724
|
};
|
|
1721
|
-
},
|
|
1722
|
-
let r =
|
|
1723
|
-
if (
|
|
1725
|
+
}, to = (e, t, n) => {
|
|
1726
|
+
let r = eo(e, t);
|
|
1727
|
+
if (!$a(r.region, t)) throw new qa(r.region, `tenant homed in region '${r.region}', which this deployment does not serve — route to the home region`);
|
|
1724
1728
|
let i = n.get(r.region);
|
|
1725
|
-
if (i === void 0) throw new
|
|
1729
|
+
if (i === void 0) throw new qa(r.region, `no store handle for home region '${r.region}' (declared servable but not wired) — failing closed`);
|
|
1726
1730
|
return {
|
|
1727
1731
|
store: i,
|
|
1728
1732
|
placement: r
|
|
1729
1733
|
};
|
|
1730
|
-
},
|
|
1731
|
-
let { store: i, placement: a } =
|
|
1734
|
+
}, no = async (e, t, n, r) => {
|
|
1735
|
+
let { store: i, placement: a } = to(e, t, n);
|
|
1732
1736
|
return await r(i, a), a;
|
|
1733
|
-
},
|
|
1737
|
+
}, ro = (e) => {
|
|
1734
1738
|
if (typeof e == "string") return e;
|
|
1735
1739
|
if ("jsonPath" in e) {
|
|
1736
1740
|
let { column: t, path: n, numeric: r } = e.jsonPath;
|
|
1737
1741
|
return `(json:${t}->${n.join(".")}${r ? "::num" : ""})`;
|
|
1738
1742
|
}
|
|
1739
1743
|
return `(${e.expr})`;
|
|
1740
|
-
}, Q = (e) => e.map(
|
|
1744
|
+
}, Q = (e) => e.map(ro), io = (e, t) => {
|
|
1741
1745
|
if (e.length !== t.length) return !1;
|
|
1742
|
-
for (let n = 0; n < e.length; n++) if (
|
|
1746
|
+
for (let n = 0; n < e.length; n++) if (ro(e[n]) !== ro(t[n])) return !1;
|
|
1743
1747
|
return !0;
|
|
1744
|
-
},
|
|
1748
|
+
}, ao = (e, t) => {
|
|
1745
1749
|
if (e.length >= t.length) return !1;
|
|
1746
|
-
for (let n = 0; n < e.length; n++) if (
|
|
1750
|
+
for (let n = 0; n < e.length; n++) if (ro(e[n]) !== ro(t[n])) return !1;
|
|
1747
1751
|
return !0;
|
|
1748
|
-
},
|
|
1752
|
+
}, oo = (e) => {
|
|
1749
1753
|
let t = [], n = e.appliedIndexes, r = e.tableName;
|
|
1750
1754
|
for (let e = 0; e < n.length; e++) {
|
|
1751
1755
|
let i = n[e];
|
|
1752
1756
|
for (let a = e + 1; a < n.length; a++) {
|
|
1753
1757
|
let e = n[a];
|
|
1754
|
-
if (
|
|
1758
|
+
if (io(i.fields, e.fields)) {
|
|
1755
1759
|
let [n, a] = i.name < e.name ? [i, e] : [e, i];
|
|
1756
1760
|
t.push({
|
|
1757
1761
|
kind: "duplicate-fields",
|
|
@@ -1762,13 +1766,13 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1762
1766
|
});
|
|
1763
1767
|
continue;
|
|
1764
1768
|
}
|
|
1765
|
-
|
|
1769
|
+
ao(i.fields, e.fields) ? t.push({
|
|
1766
1770
|
kind: "redundant-prefix",
|
|
1767
1771
|
table: r,
|
|
1768
1772
|
redundant: i,
|
|
1769
1773
|
coveredBy: e,
|
|
1770
1774
|
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).`
|
|
1771
|
-
}) :
|
|
1775
|
+
}) : ao(e.fields, i.fields) && t.push({
|
|
1772
1776
|
kind: "redundant-prefix",
|
|
1773
1777
|
table: r,
|
|
1774
1778
|
redundant: e,
|
|
@@ -1778,23 +1782,23 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1778
1782
|
}
|
|
1779
1783
|
}
|
|
1780
1784
|
return t;
|
|
1781
|
-
},
|
|
1785
|
+
}, so = (e) => {
|
|
1782
1786
|
let t = [];
|
|
1783
|
-
for (let n of e) t.push(...
|
|
1787
|
+
for (let n of e) t.push(...oo(n));
|
|
1784
1788
|
return t;
|
|
1785
|
-
},
|
|
1786
|
-
let n = t.color ?? !0, r = t.indent ?? " ", i = (e) => $(n,
|
|
1789
|
+
}, co = "\x1B[", lo = `${co}38;2;245;158;11m`, uo = `${co}38;2;16;185;129m`, fo = (e, t) => `${e}${t}${k.reset}`, $ = (e, t, n) => e ? typeof t == "function" ? t(n) : fo(t, n) : n, po = (e, t = {}) => {
|
|
1790
|
+
let n = t.color ?? !0, r = t.indent ?? " ", i = (e) => $(n, k.dim, e.padEnd(11)), a = (e) => $(n, (e) => k.bold(k.brand(e)), e), o = (e) => $(n, k.brightRed24, e), s = (e) => $(n, uo, e), c = (e) => $(n, lo, e), l = (e) => $(n, k.dim, e), u = `${c("index audit")} ${l("·")} ${$(n, k.bold, e.kind)}`, d = e.redundant.fields.length, f = Q(e.coveredBy.fields.slice(d)), p = (e, t) => {
|
|
1787
1791
|
let n = e.slice(0, t), r = e.slice(t), i = [];
|
|
1788
1792
|
return n.length > 0 && i.push(s(`[${n.join(", ")}]`)), r.length > 0 && i.push(c(`+ [${r.join(", ")}]`)), i.join(" ");
|
|
1789
1793
|
}, m = [];
|
|
1790
|
-
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,
|
|
1791
|
-
},
|
|
1794
|
+
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, k.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");
|
|
1795
|
+
}, mo = (e, t) => ({
|
|
1792
1796
|
name: e,
|
|
1793
1797
|
body: t
|
|
1794
|
-
}),
|
|
1798
|
+
}), ho = (e) => {
|
|
1795
1799
|
if (e.lifecycle === "cron" && !e.cron) throw Error(`seed "${e.id}": lifecycle 'cron' requires a 'cron' field`);
|
|
1796
1800
|
if (e.lifecycle === "onSchemaChange" && (!e.watchedTables || e.watchedTables.length === 0)) throw Error(`seed "${e.id}": lifecycle 'onSchemaChange' requires at least one entry in 'watchedTables'`);
|
|
1797
|
-
let t = e.steps({ step:
|
|
1801
|
+
let t = e.steps({ step: mo });
|
|
1798
1802
|
if (t.length === 0) throw Error(`seed "${e.id}": at least one step is required`);
|
|
1799
1803
|
return {
|
|
1800
1804
|
__seed: !0,
|
|
@@ -1806,13 +1810,13 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1806
1810
|
...e.fingerprint === void 0 ? {} : { fingerprint: e.fingerprint },
|
|
1807
1811
|
steps: t
|
|
1808
1812
|
};
|
|
1809
|
-
},
|
|
1813
|
+
}, go = (e) => typeof e == "object" && !!e && "__seed" in e && e.__seed === !0, _o = (e, { apply: t, undo: n }) => ({
|
|
1810
1814
|
name: e,
|
|
1811
1815
|
apply: t,
|
|
1812
1816
|
undo: n
|
|
1813
|
-
}),
|
|
1817
|
+
}), vo = (e) => {
|
|
1814
1818
|
if (!/^\d{14}_/.test(e.id)) throw Error(`migration "${e.id}": id must start with a 14-digit timestamp followed by "_" (convention: <YYYYMMDDHHMMSS>_<slug>)`);
|
|
1815
|
-
let t = e.steps({ step:
|
|
1819
|
+
let t = e.steps({ step: _o });
|
|
1816
1820
|
if (t.length === 0) throw Error(`migration "${e.id}": at least one step is required`);
|
|
1817
1821
|
return {
|
|
1818
1822
|
__migration: !0,
|
|
@@ -1820,7 +1824,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1820
1824
|
name: e.name,
|
|
1821
1825
|
steps: t
|
|
1822
1826
|
};
|
|
1823
|
-
},
|
|
1827
|
+
}, yo = (e) => typeof e == "object" && !!e && "__migration" in e && e.__migration === !0, bo = v("_voltro_migrations", {
|
|
1824
1828
|
id: S({ prefix: "mig" }),
|
|
1825
1829
|
name: D(),
|
|
1826
1830
|
hash: D(),
|
|
@@ -1832,7 +1836,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1832
1836
|
workflowRunId: D().nullable(),
|
|
1833
1837
|
createdAt: i().default("now"),
|
|
1834
1838
|
updatedAt: i().default("now").onUpdate("now")
|
|
1835
|
-
}).index(["status"]),
|
|
1839
|
+
}).index(["status"]), xo = v("_voltro_seeds", {
|
|
1836
1840
|
id: S({ prefix: "seed" }),
|
|
1837
1841
|
name: D(),
|
|
1838
1842
|
lifecycle: D(),
|
|
@@ -1848,7 +1852,7 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1848
1852
|
workflowRunId: D().nullable(),
|
|
1849
1853
|
createdAt: i().default("now"),
|
|
1850
1854
|
updatedAt: i().default("now").onUpdate("now")
|
|
1851
|
-
}).index(["lifecycle"]).index(["nextRunAt"]),
|
|
1855
|
+
}).index(["lifecycle"]).index(["nextRunAt"]), So = v("_voltro_migration_plans", {
|
|
1852
1856
|
id: S({ prefix: "plan" }),
|
|
1853
1857
|
fingerprint: D(),
|
|
1854
1858
|
liveFingerprint: D().nullable(),
|
|
@@ -1864,21 +1868,21 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1864
1868
|
appliedAt: i().default("now"),
|
|
1865
1869
|
createdAt: i().default("now"),
|
|
1866
1870
|
updatedAt: i().default("now").onUpdate("now")
|
|
1867
|
-
}).index(["fingerprint"]).index(["environment"]),
|
|
1871
|
+
}).index(["fingerprint"]).index(["environment"]), Co = v("_voltro_idempotency", {
|
|
1868
1872
|
id: S({ prefix: "idem" }),
|
|
1869
1873
|
scope: D(),
|
|
1870
1874
|
key: D(),
|
|
1871
1875
|
status: D(),
|
|
1872
1876
|
response: w().nullable(),
|
|
1873
1877
|
createdAt: i().default("now")
|
|
1874
|
-
}).unique(["scope", "key"]).index(["createdAt"]),
|
|
1878
|
+
}).unique(["scope", "key"]).index(["createdAt"]), wo = v("_voltro_kv", {
|
|
1875
1879
|
id: S({ prefix: "kv" }),
|
|
1876
1880
|
key: D().unique(),
|
|
1877
1881
|
value: D().nullable(),
|
|
1878
1882
|
expiresAt: i().nullable(),
|
|
1879
1883
|
createdAt: i().default("now"),
|
|
1880
1884
|
updatedAt: i().default("now").onUpdate("now")
|
|
1881
|
-
}).index(["expiresAt"]),
|
|
1885
|
+
}).index(["expiresAt"]), To = v("_voltro_api_keys", {
|
|
1882
1886
|
id: S({ prefix: "apikey" }),
|
|
1883
1887
|
tenantId: D().nullable(),
|
|
1884
1888
|
name: D(),
|
|
@@ -1893,72 +1897,72 @@ var St = (e) => typeof e == "string" && e !== "" ? e : null, Ct = async (e, t, n
|
|
|
1893
1897
|
onBehalfOf: D().nullable(),
|
|
1894
1898
|
metadata: w().nullable(),
|
|
1895
1899
|
createdAt: i().default("now")
|
|
1896
|
-
}).index("byApiKeyTenant", ["tenantId"]),
|
|
1897
|
-
yo,
|
|
1900
|
+
}).index("byApiKeyTenant", ["tenantId"]), Eo = [
|
|
1898
1901
|
bo,
|
|
1899
|
-
xo
|
|
1900
|
-
|
|
1902
|
+
xo,
|
|
1903
|
+
So
|
|
1904
|
+
], Do = "id", Oo = (e, t) => {
|
|
1901
1905
|
let n = C(e);
|
|
1902
1906
|
if (n === void 0) return t;
|
|
1903
|
-
let r = n.fields[
|
|
1904
|
-
if (r === void 0 || t[
|
|
1907
|
+
let r = n.fields[Do]?.idScheme;
|
|
1908
|
+
if (r === void 0 || t[Do] != null) return t;
|
|
1905
1909
|
if (r.kind === "numeric") {
|
|
1906
|
-
if (!(
|
|
1910
|
+
if (!(Do in t)) return t;
|
|
1907
1911
|
let e = { ...t };
|
|
1908
|
-
return delete e[
|
|
1912
|
+
return delete e[Do], e;
|
|
1909
1913
|
}
|
|
1910
1914
|
let i = oe(r, e);
|
|
1911
1915
|
return i === null ? t : {
|
|
1912
1916
|
...t,
|
|
1913
|
-
[
|
|
1917
|
+
[Do]: i
|
|
1914
1918
|
};
|
|
1915
|
-
},
|
|
1919
|
+
}, ko = (e, t) => t.map((t) => Oo(e, t)), Ao = (e, t) => {
|
|
1916
1920
|
let n = [], r = t;
|
|
1917
1921
|
for (let [t, i] of Object.entries(e.fields)) {
|
|
1918
1922
|
let e = i;
|
|
1919
1923
|
e.nullable || e.hasDefault || e.idScheme !== void 0 || e.generatedAs !== void 0 || (r[t] === void 0 || r[t] === null) && n.push(t);
|
|
1920
1924
|
}
|
|
1921
1925
|
return n;
|
|
1922
|
-
},
|
|
1926
|
+
}, jo = (e, t) => {
|
|
1923
1927
|
let n = t;
|
|
1924
1928
|
return e.filter((e) => n[e] === void 0 || n[e] === null);
|
|
1925
|
-
},
|
|
1929
|
+
}, Mo = (e, t, n) => e.insert(t.tableName, n), No = (e, t, n, r) => e.upsert(t.tableName, n, {
|
|
1926
1930
|
conflictColumns: r.conflictColumns,
|
|
1927
1931
|
...r.update === void 0 ? {} : { update: r.update }
|
|
1928
|
-
}),
|
|
1932
|
+
}), Po = (e, t, n, r) => e.updateMany(t.tableName, n, { where: r.where }), Fo = 512, Io = (e) => {
|
|
1929
1933
|
e.setMaxListeners(512);
|
|
1930
|
-
},
|
|
1934
|
+
}, Lo = (e, t, n) => ({
|
|
1931
1935
|
_tag: "PrimaryKeyConflictError",
|
|
1932
1936
|
table: e,
|
|
1933
1937
|
key: t,
|
|
1934
1938
|
cause: n
|
|
1935
|
-
}),
|
|
1939
|
+
}), Ro = (e) => typeof e == "object" && !!e && e._tag === "PrimaryKeyConflictError", zo = /* @__PURE__ */ new Map(), Bo = (e) => {
|
|
1936
1940
|
if (!e.table || !e.timeColumn) throw Error("registerRetention: table + timeColumn are required");
|
|
1937
1941
|
if (!Number.isFinite(e.ttlMs) || e.ttlMs <= 0) throw Error(`registerRetention(${e.table}): ttlMs must be a positive number`);
|
|
1938
|
-
|
|
1939
|
-
},
|
|
1942
|
+
zo.set(e.table, e);
|
|
1943
|
+
}, Vo = () => [...zo.values()], Ho = () => zo.clear(), Uo = async (e, t, n, r = 2e4) => {
|
|
1940
1944
|
let i = new Date(t - e.ttlMs), a = 0;
|
|
1941
1945
|
for (;;) {
|
|
1942
1946
|
let t = await n(e.table, e.timeColumn, i, r, e.where);
|
|
1943
1947
|
if (a += t, t < r) break;
|
|
1944
1948
|
}
|
|
1945
1949
|
return a;
|
|
1946
|
-
},
|
|
1950
|
+
}, Wo = (e, t) => {
|
|
1947
1951
|
let n = Number(e ?? String(t));
|
|
1948
1952
|
return (Number.isFinite(n) && n > 0 ? n : t) * 36e5;
|
|
1949
|
-
},
|
|
1953
|
+
}, Go = "_voltro_cdc_offsets", Ko = v(Go, {
|
|
1950
1954
|
id: S({ prefix: "cdcoff" }),
|
|
1951
1955
|
replicaId: D(),
|
|
1952
1956
|
streamName: D(),
|
|
1953
1957
|
binlogFile: D(),
|
|
1954
1958
|
binlogPosition: D(),
|
|
1955
1959
|
updatedAt: i()
|
|
1956
|
-
}).index(["replicaId"]),
|
|
1960
|
+
}).index(["replicaId"]), qo = v(Go, {
|
|
1957
1961
|
id: S({ prefix: "cdcoff" }),
|
|
1958
1962
|
replicaId: D(),
|
|
1959
1963
|
streamName: D(),
|
|
1960
1964
|
ctVersion: D(),
|
|
1961
1965
|
updatedAt: i()
|
|
1962
|
-
}).index(["replicaId"]),
|
|
1966
|
+
}).index(["replicaId"]), Jo = "postgres";
|
|
1963
1967
|
//#endregion
|
|
1964
|
-
export { he as AUTO_FILLED_COLUMNS, X as BranchNameInvalid,
|
|
1968
|
+
export { he as AUTO_FILLED_COLUMNS, X as BranchNameInvalid, ja as BranchTransitionInvalid, Go as CDC_OFFSETS_TABLE, Fo as CHANGE_LISTENER_CEILING, Fe as ColumnBuilder, kt as ENCRYPTED_PREFIX, Jo as ENGINE, gn as EagerCardinalityError, Ie as FILE_MIGRATION_PATTERN, $e as FRAMEWORK_LIVE_TABLES, At as FieldDecryptionError, fa as INITIAL_VERSION, gi as MATCHES_NO_ROWS, Ge as MAX_IDENTIFIER_LENGTH, St as SqlClient, ya as TableStreamError, kn as TenantNamespaceInvalid, On as TenantNamespaceUnresolved, qa as TenantRegionUnavailable, Ka as TenantResidencyUnresolved, pa as VOLTRO_EXPIRES_MIXIN_ID, ha as VOLTRO_LOCAL_FIRST_MIXIN_ID, ca as VersionConflict, Ze as WARN_IDENTIFIER_LENGTH, To as _voltroApiKeysTable, Ko as _voltroCdcOffsetsTable, Co as _voltroIdempotencyTable, wo as _voltroKvTable, So as _voltroMigrationPlansTable, bo as _voltroMigrationsTable, qo as _voltroMssqlCdcOffsetsTable, xo as _voltroSeedsTable, ni as actorsTable, Wa as admitBranch, Ve as allEnumRenames, an as allRegisteredRelations, d as allRegisteredTables, bi as and, Ne as array, pi as arrayContains, hi as arrayHas, mi as arrayOverlaps, vn as attachEagerLoads, Bi as attributionFields, Wi as attributionKey, so as auditAllTableIndexes, oo as auditTableIndexes, Ae as avg, Je as avgOver, Zi as beginLocalWrite, be as bigint, to as bindResidentStore, it as boolean, Oa as branchNamespaceName, ut as bytes, Ii as changeDelete, Pi as changeInsert, Li as changeSoftDelete, Fi as changeUpdate, qi as claimPendingAttribution, nt as clearEnumRenames, ea as clearPendingAttribution, sn as clearRelationsRegistry, Za as clearResidencyConfig, Ho as clearRetentions, h as clearTableRegistry, ia as clearWriteRecorders, Ln as coercePredicateValue, Rn as coercePredicateValues, Mi as collectSubqueries, He as column, It as columnSchema, Qn as compileEagerJson, P as compilePredicate, zn as compileRawFragment, Zn as compileSelect, wa as computeEmbedding, di as contains, Pe as count, Me as countDistinct, we as crdtManagedColumns, ct as crdtText, zi as currentWriteAttribution, ye as databaseHandle, le as date, o as dbEnum, ot as decimal, Oe as declareEnumRename, pn as decodeRowsFromSchema, Ft as decryptFieldsOnRead, vo as defineMigration, _ as defineMixin, ho as defineSeed, rt as denseRank, ve as deriveTypeIdPrefix, Ot as deserializeArraysOnRead, Le as drainIdentifierWarnings, de as dropped, hn as encodeRowForSchema, Pt as encryptFieldsForWrite, Nt as encryptedColumnsOf, Qi as endLocalWrite, Va as enforceBranchLimits, y as ensureTableRegistered, ri as eq, Bn as escapeLike, ji as evaluatePredicate, lt as except, Di as exists, ma as expires, po as formatIndexAuditIssue, Eo as frameworkTables, oe as generateId, ke as generateSnowflake, u as geography, c as geometry, je as getEnumRenames, rn as getRelation, nn as getRelations, Xa as getResidencyConfig, C as getTable, ai as gt, oi as gte, Dn as hasEagerLoads, Ca as hybridSearch, S as id, li as inSet, Ti as inSubquery, A as inferForeignKey, Mo as insertRow, T as integer, Ce as intersect, n as interval, ka as isBranchNamespace, Wt as isEmptyRelationsSpec, Mt as isEncrypted, jt as isFieldDecryptionError, xe as isFileMigration, We as isFrameworkOwnedLiveTable, _a as isLocalFirst, yo as isMigrationDefinition, Fa as isNeonConnection, vi as isNotNull, _i as isNull, Ro as isPrimaryKeyConflictError, $a as isRegionServable, Gt as isRelationsSpec, go as isSeedDefinition, m as isSqliteFamily, dt as isTableReactive, Te as isView, w as json, Ci as jsonField, p as jsonIndex, st as lag, ce as lead, Vo as listRetentions, ga as localFirst, va as localFirstTables, si as lt, ci as lte, Ga as makeNamespaceBranchExecutor, qt as many, Jt as manyToMany, b as materializeFields, a as max, Ke as migration, at as min, jo as missingConflictColumns, Ao as missingRequiredColumns, _e as mixin, ii as neq, Ma as nextBranchState, Si as not, Oi as notExists, ui as notInSet, Ei as notInSubquery, x as numeric, Kt as one, _n as oneCardinalityMessage, xi as or, ue as paginateBy, l as paginateById, ta as pendingAttributionCount, za as planBranch, Na as planBranchProvision, Pa as planBranchTeardown, Ba as planBranchTeardownFor, La as planNeonBranchProvision, Ra as planNeonBranchTeardown, ua as planVersionedUpdate, Ye as pluginRef, Ue as pluginRefSpecOf, Lo as primaryKeyConflictError, Ha as provisionBranch, no as provisionResidentTenant, Pn as qualifyTable, s as queryFor, Be as queryForView, fe as quoteIdent, Io as raiseChangeListenerCeiling, re as rank, ae as raw, f as readableByColumns, g as real, aa as recordsTable, ee as reference, Qr as registerCoreTables, tn as registerDiscoveredRelations, Ki as registerPendingAttribution, en as registerRelations, Bo as registerRetention, r as registerTable, na as registerWriteRecorder, Ut as relations, ei as requireActors, pe as requireTable, ti as requireTenants, et as resetSnowflake, eo as residentPlacement, wt as resolveActorSnapshot, Ia as resolveBranchMechanism, $i as resolveEchoAttribution, ze as resolveFullTextIndex, e as resolveIdScheme, ge as resolveMixinGraph, Qa as resolveTenantHome, Nn as resolveTenantNamespace, Wo as retentionTtlMsFromEnv, t as rowNumber, Lt as rowSchema, Ri as runWithWriteAttribution, oa as runWriteRecorders, Mn as sanitizeIdentifierFragment, Dt as serializeArraysForWrite, se as serverOnlyColumns, Ya as setResidencyConfig, sa as settleTransactionExit, da as settleVersionedUpdate, yi as spatialPredicate, Oo as stampGeneratedId, ko as stampGeneratedIds, fi as startsWith, Sa as streamTable, Re as sum, te as sumOver, Uo as sweepRetention, v as table, Ua as teardownBranch, D as text, i as timestamp, ft as timestampMs, pt as timestampMsOrNull, ne as union, ie as unionAll, ra as unregisterWriteRecorder, Po as updateManyRow, No as upsertRow, Se as validateColumnName, qe as validateIndexName, on as validateRegisteredRelations, Zt as validateRelationConfig, Qe as validateTableName, Ee as validateTypeIdPrefix, me as vector, Xe as vectorDistanceToOpclass, Ta as vectorEmbedding, la as versionColumnOf, tt as view, De as viewSql, Ni as walkLeaves, Vi as withCapturedAttribution };
|