@voltro/database 0.23.0 → 0.25.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 +537 -0
- package/dist/{frameworkLiveTables-BvPIm2cD.js → frameworkLiveTables-BQwB8K6R.js} +9 -0
- package/dist/index.d.ts +178 -0
- package/dist/index.js +457 -426
- package/dist/sql.d.ts +143 -6
- package/dist/sql.js +600 -497
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as e, A as t, At as n, B as r, C as i, Ct as a, D as o, Dt as s, E as c, Et as l, F as u, Ft as d, G as f, H as p, I as m, It as h, J as g, K as _, L as ee, M as
|
|
1
|
+
import { $ as e, A as t, At as n, B as r, C as i, Ct as a, D as o, Dt as s, E as c, Et as l, F as u, Ft as d, G as f, H as p, I as m, It as h, J as g, K as _, L as ee, M as v, Mt as te, N as ne, Nt as y, O as re, Ot as b, P as ie, Pt as x, Q as ae, R as S, S as oe, St as se, T as ce, Tt as C, U as le, V as ue, W as de, X as fe, Y as pe, Z as me, _ as he, _t as ge, a as _e, at as ve, b as ye, bt as be, c as xe, ct as Se, d as Ce, dt as we, et as Te, f as Ee, ft as De, g as Oe, gt as ke, h as Ae, ht as je, i as Me, it as Ne, j as Pe, jt as Fe, k as Ie, kt as Le, l as Re, lt as ze, m as Be, mt as Ve, n as He, nt as Ue, o as We, ot as Ge, p as Ke, pt as qe, q as Je, rt as Ye, s as w, st as Xe, t as Ze, tt as Qe, u as $e, ut as et, v as tt, vt as nt, w as rt, wt as T, x as it, xt as at, y as ot, yt as st, z as ct } from "./frameworkLiveTables-BQwB8K6R.js";
|
|
2
2
|
import { timestampMs as lt, timestampMsOrNull as ut } from "./wire.js";
|
|
3
3
|
import { Cause as dt, Chunk as ft, Data as pt, Effect as mt, Exit as ht, Option as gt, Schema as E, Stream as _t } from "effect";
|
|
4
4
|
import { AsyncLocalStorage as vt } from "node:async_hooks";
|
|
@@ -316,15 +316,15 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
316
316
|
}, hn = async (e, t, n, r, i, a) => {
|
|
317
317
|
let o = n.target(), s = n.sourceKey ?? yn(i, o.tableName);
|
|
318
318
|
if (s !== void 0) {
|
|
319
|
-
let n =
|
|
319
|
+
let n = bn(e, s), i = n.length === 0 ? [] : await xn(o, "id", n, r, a), c = new Map(i.map((e) => [e.id, e]));
|
|
320
320
|
for (let n of e) {
|
|
321
321
|
let e = n[s];
|
|
322
322
|
n[t] = e == null ? null : c.get(e) ?? null;
|
|
323
323
|
}
|
|
324
|
-
await
|
|
324
|
+
await Sn(i, r.with, o, a);
|
|
325
325
|
return;
|
|
326
326
|
}
|
|
327
|
-
let c = n.foreignKey ?? O(o, i.tableName, t), l = n.sourceKey ?? "id", u =
|
|
327
|
+
let c = n.foreignKey ?? O(o, i.tableName, t), l = n.sourceKey ?? "id", u = bn(e, l), d = u.length === 0 ? [] : await xn(o, c, u, r, a), f = /* @__PURE__ */ new Map();
|
|
328
328
|
for (let e of d) {
|
|
329
329
|
let n = e[c];
|
|
330
330
|
if (f.has(n)) throw new dn(fn({
|
|
@@ -340,9 +340,9 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
340
340
|
let e = n[l];
|
|
341
341
|
n[t] = e == null ? null : f.get(e) ?? null;
|
|
342
342
|
}
|
|
343
|
-
await
|
|
343
|
+
await Sn(d, r.with, o, a);
|
|
344
344
|
}, gn = async (e, t, n, r, i, a) => {
|
|
345
|
-
let o = n.target(), s = n.foreignKey ?? O(o, i.tableName, t), c = n.sourceKey ?? "id", l =
|
|
345
|
+
let o = n.target(), s = n.foreignKey ?? O(o, i.tableName, t), c = n.sourceKey ?? "id", l = bn(e, c), u = _n(r), d = l.length === 0 ? [] : await xn(o, s, l, u, a), f = /* @__PURE__ */ new Map();
|
|
346
346
|
for (let e of d) {
|
|
347
347
|
let t = e[s], n = f.get(t);
|
|
348
348
|
n ? n.push(e) : f.set(t, [e]);
|
|
@@ -358,12 +358,12 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
358
358
|
let e = n[c];
|
|
359
359
|
n[t] = f.get(e) ?? [];
|
|
360
360
|
}
|
|
361
|
-
await
|
|
361
|
+
await Sn(d, r.with, o, a);
|
|
362
362
|
}, _n = (e) => {
|
|
363
363
|
let { limit: t, offset: n, ...r } = e;
|
|
364
364
|
return r;
|
|
365
365
|
}, vn = async (e, t, n, r, i, a) => {
|
|
366
|
-
let o = n.target(), s = n.through(), c =
|
|
366
|
+
let o = n.target(), s = n.through(), c = bn(e, "id");
|
|
367
367
|
if (c.length === 0) {
|
|
368
368
|
for (let n of e) n[t] = [];
|
|
369
369
|
return;
|
|
@@ -384,8 +384,8 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
384
384
|
for (let n of e) n[t] = [];
|
|
385
385
|
return;
|
|
386
386
|
}
|
|
387
|
-
let f = await
|
|
388
|
-
await
|
|
387
|
+
let f = await xn(o, "id", bn(d, n.targetKey), r, a), p = new Map(f.map((e) => [e.id, e]));
|
|
388
|
+
await Sn(f, r.with, o, a);
|
|
389
389
|
let m = r.junction === void 0 ? void 0 : r.junction === !0 ? Object.keys(s.fields) : r.junction, h = /* @__PURE__ */ new Map();
|
|
390
390
|
for (let e of d) {
|
|
391
391
|
let t = e[n.sourceKey], r = e[n.targetKey], i = p.get(r);
|
|
@@ -399,14 +399,14 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
399
399
|
for (let n of e) n[t] = h.get(n.id) ?? [];
|
|
400
400
|
}, yn = (e, t) => {
|
|
401
401
|
for (let [n, r] of Object.entries(e.fields)) if (r.type === "reference" && r.references?.()?.tableName === t) return n;
|
|
402
|
-
},
|
|
402
|
+
}, bn = (e, t) => {
|
|
403
403
|
let n = /* @__PURE__ */ new Set();
|
|
404
404
|
for (let r of e) {
|
|
405
405
|
let e = r[t];
|
|
406
406
|
e != null && n.add(e);
|
|
407
407
|
}
|
|
408
408
|
return [...n];
|
|
409
|
-
},
|
|
409
|
+
}, xn = (e, t, n, r, i) => {
|
|
410
410
|
let a = {
|
|
411
411
|
column: t,
|
|
412
412
|
op: "in",
|
|
@@ -420,50 +420,50 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
420
420
|
skip: r.offset,
|
|
421
421
|
projection: void 0
|
|
422
422
|
});
|
|
423
|
-
},
|
|
423
|
+
}, Sn = async (e, t, n, r) => {
|
|
424
424
|
t !== void 0 && e.length !== 0 && (await pn(e, t, n, r)).forEach((t, n) => {
|
|
425
425
|
let r = e[n];
|
|
426
426
|
for (let [e, n] of Object.entries(t)) e in r || (r[e] = n);
|
|
427
427
|
});
|
|
428
|
-
},
|
|
428
|
+
}, Cn = (e) => e.eager !== void 0 && Object.keys(e.eager).length > 0, wn = class extends Error {
|
|
429
429
|
_tag = "TenantNamespaceUnresolved";
|
|
430
430
|
constructor(e) {
|
|
431
431
|
super(e), this.name = "TenantNamespaceUnresolved";
|
|
432
432
|
}
|
|
433
|
-
},
|
|
433
|
+
}, Tn = class extends Error {
|
|
434
434
|
_tag = "TenantNamespaceInvalid";
|
|
435
435
|
constructor(e) {
|
|
436
436
|
super(e), this.name = "TenantNamespaceInvalid";
|
|
437
437
|
}
|
|
438
|
-
},
|
|
439
|
-
if (e == null || e === "") throw new
|
|
440
|
-
let t =
|
|
441
|
-
if (t.replace(/_/g, "") === "") throw new
|
|
442
|
-
let n = `${
|
|
443
|
-
if (n.length >
|
|
438
|
+
}, En = 63, Dn = "tenant_", On = (e) => e.toLowerCase().replace(/[^a-z0-9_]/g, "_"), kn = (e) => {
|
|
439
|
+
if (e == null || e === "") throw new wn("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.");
|
|
440
|
+
let t = On(e);
|
|
441
|
+
if (t.replace(/_/g, "") === "") throw new Tn(`tenant id '${e}' has no usable identifier characters after sanitisation — cannot derive a distinct namespace.`);
|
|
442
|
+
let n = `${Dn}${t}`;
|
|
443
|
+
if (n.length > En) throw new Tn(`namespace '${n}' for tenant '${e}' exceeds the ${En}-byte identifier limit. Use a shorter tenant id.`);
|
|
444
444
|
return n;
|
|
445
|
-
},
|
|
446
|
-
if (e === void 0 || t == null || !
|
|
445
|
+
}, An = (e, t) => e === null ? t : `${e}.${t}`, jn = /* @__PURE__ */ new Set(["timestamp", "date"]), Mn = /^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2})?/, Nn = (e, t) => {
|
|
446
|
+
if (e === void 0 || t == null || !jn.has(e) || t instanceof Date) return t;
|
|
447
447
|
if (typeof t == "number" && Number.isFinite(t)) return new Date(t);
|
|
448
|
-
if (typeof t == "string" &&
|
|
448
|
+
if (typeof t == "string" && Mn.test(t)) {
|
|
449
449
|
let e = new Date(t);
|
|
450
450
|
return Number.isNaN(e.getTime()) ? t : e;
|
|
451
451
|
}
|
|
452
452
|
return t;
|
|
453
|
-
},
|
|
453
|
+
}, Pn = (e, t) => e === void 0 || !jn.has(e) ? t : t.map((t) => Nn(e, t)), Fn = (e, t) => {
|
|
454
454
|
let { strings: n, values: r } = e, i = t.unsafe(n[0] ?? "");
|
|
455
455
|
for (let e = 0; e < r.length; e++) i = t`${i}${r[e]}${t.unsafe(n[e + 1] ?? "")}`;
|
|
456
456
|
return t`${i}`;
|
|
457
|
-
},
|
|
458
|
-
if ("not" in e) return t`NOT (${
|
|
459
|
-
if ("and" in e) return e.and.length === 0 ? t`TRUE` : t.and(e.and.map((e) =>
|
|
460
|
-
if ("or" in e) return e.or.length === 0 ? t`FALSE` : t.or(e.or.map((e) =>
|
|
457
|
+
}, j = (e) => e.replace(/[\\%_]/g, (e) => `\\${e}`), M = (e, t, n = null, r) => {
|
|
458
|
+
if ("not" in e) return t`NOT (${M(e.not, t, n, r)})`;
|
|
459
|
+
if ("and" in e) return e.and.length === 0 ? t`TRUE` : t.and(e.and.map((e) => M(e, t, n, r)));
|
|
460
|
+
if ("or" in e) return e.or.length === 0 ? t`FALSE` : t.or(e.or.map((e) => M(e, t, n, r)));
|
|
461
461
|
if (e.op === "subquery-in" || e.op === "subquery-not-in") {
|
|
462
|
-
let r = e, i =
|
|
462
|
+
let r = e, i = N(r.subquery, t, n);
|
|
463
463
|
return r.op === "subquery-in" ? t`${t(r.column)} IN (${i})` : t`${t(r.column)} NOT IN (${i})`;
|
|
464
464
|
}
|
|
465
465
|
if (e.op === "exists" || e.op === "not-exists") {
|
|
466
|
-
let r = e, i =
|
|
466
|
+
let r = e, i = N(r.subquery, t, n);
|
|
467
467
|
return r.op === "exists" ? t`EXISTS (${i})` : t`NOT EXISTS (${i})`;
|
|
468
468
|
}
|
|
469
469
|
let i = e, a = t(i.column), o = i.path, s = o !== void 0 && o.length > 0, c = () => t.onDialectOrElse({
|
|
@@ -476,7 +476,7 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
476
476
|
mssql: () => t.unsafe(w(i.column, o, "mssql", { numeric: !0 })),
|
|
477
477
|
sqlite: () => t.unsafe(w(i.column, o, "sqlite", { numeric: !0 })),
|
|
478
478
|
orElse: () => t.unsafe(w(i.column, o, "postgres", { numeric: !0 }))
|
|
479
|
-
}), 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 : S(r)?.fields?.[i.column]?.type, h = (e) =>
|
|
479
|
+
}), 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 : S(r)?.fields?.[i.column]?.type, h = (e) => Nn(m, e);
|
|
480
480
|
switch (i.op) {
|
|
481
481
|
case "eq": return t`${u} = ${f(h(i.value))}`;
|
|
482
482
|
case "neq": return t`${u} <> ${f(h(i.value))}`;
|
|
@@ -493,7 +493,7 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
493
493
|
return e.length === 0 ? t`TRUE` : t`${u} NOT IN ${t.in(s ? e.map((e) => f(e)) : e)}`;
|
|
494
494
|
}
|
|
495
495
|
case "contains": {
|
|
496
|
-
let e = `%${
|
|
496
|
+
let e = `%${j(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
|
|
497
497
|
return t.onDialectOrElse({
|
|
498
498
|
mysql: () => t`LOWER(${u}) LIKE LOWER(${e})`,
|
|
499
499
|
mssql: () => t`LOWER(${u}) LIKE LOWER(${e})`,
|
|
@@ -502,7 +502,7 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
502
502
|
});
|
|
503
503
|
}
|
|
504
504
|
case "startsWith": {
|
|
505
|
-
let e = `${
|
|
505
|
+
let e = `${j(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
|
|
506
506
|
return t.onDialectOrElse({
|
|
507
507
|
mysql: () => t`${u} LIKE ${e}`,
|
|
508
508
|
orElse: () => t`${u} LIKE ${e} ESCAPE '\\'`
|
|
@@ -550,13 +550,13 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
550
550
|
});
|
|
551
551
|
}
|
|
552
552
|
}
|
|
553
|
-
},
|
|
553
|
+
}, In = (e, t) => {
|
|
554
554
|
let n = [];
|
|
555
555
|
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}`);
|
|
556
|
-
},
|
|
556
|
+
}, Ln = (e, t) => t.csv(e.map((e) => {
|
|
557
557
|
let n = e.column === void 0 ? t.unsafe("*") : t`${t(e.column)}`;
|
|
558
558
|
if (e.op.startsWith("window-")) {
|
|
559
|
-
let r =
|
|
559
|
+
let r = In(e.window ?? {}, t);
|
|
560
560
|
switch (e.op) {
|
|
561
561
|
case "window-row-number": return t`ROW_NUMBER() OVER (${r}) AS ${t(e.alias)}`;
|
|
562
562
|
case "window-rank": return t`RANK() OVER (${r}) AS ${t(e.alias)}`;
|
|
@@ -580,43 +580,43 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
580
580
|
return t`${t(e.column)} AS ${t(e.alias)}`;
|
|
581
581
|
default: throw Error(`compileAggregateProjection: unknown op '${e.op}'`);
|
|
582
582
|
}
|
|
583
|
-
})),
|
|
583
|
+
})), Rn = (e) => `[${e.join(",")}]`, zn = (e, t) => {
|
|
584
584
|
if (e.queryVector === void 0) return null;
|
|
585
|
-
let n = t(e.column), r =
|
|
585
|
+
let n = t(e.column), r = Rn(e.queryVector), i = e.distance === "cosine" ? "<=>" : e.distance === "l2" ? "<->" : "<#>", a = e.distance === "cosine" ? "VEC_DISTANCE_COSINE" : "VEC_DISTANCE_EUCLIDEAN";
|
|
586
586
|
return t.onDialectOrElse({
|
|
587
587
|
mysql: () => t`${t.unsafe(a)}(${n}, ${r})`,
|
|
588
588
|
mssql: () => t`NULL`,
|
|
589
589
|
sqlite: () => t`NULL`,
|
|
590
590
|
orElse: () => t`${n} ${t.unsafe(i)} ${r}::vector`
|
|
591
591
|
});
|
|
592
|
-
},
|
|
592
|
+
}, Bn = (e, t) => {
|
|
593
593
|
let n = t.unsafe(e.useGeography ? "::geography" : "::geometry");
|
|
594
594
|
return t`ST_Distance(${t(e.column)}${n}, ${e.geom}${n})`;
|
|
595
|
-
},
|
|
596
|
-
let r = n.csv(e.columns.map((e) => n`${n(e)}`)), i = `%${
|
|
595
|
+
}, Vn = (e, t) => t`${t(e.column)} <-> ${e.geom}::geometry`, Hn = (e, t) => t`${t(`${e.indexName}_tsv`)}`, Un = (e, t) => `${t}_${e.indexName}_fts`, Wn = (e, t, n) => {
|
|
596
|
+
let r = n.csv(e.columns.map((e) => n`${n(e)}`)), i = `%${j(e.query)}%`;
|
|
597
597
|
return n.onDialectOrElse({
|
|
598
598
|
mysql: () => n`MATCH(${r}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)`,
|
|
599
599
|
sqlite: () => {
|
|
600
|
-
let r = n(
|
|
600
|
+
let r = n(Un(e, t));
|
|
601
601
|
return n`${n("id")} IN (SELECT ${n("row_id")} FROM ${r} WHERE ${r} MATCH ${e.query})`;
|
|
602
602
|
},
|
|
603
603
|
mssql: () => n.or(e.columns.map((e) => n`LOWER(${n(e)}) LIKE LOWER(${i}) ESCAPE '\\'`)),
|
|
604
|
-
orElse: () => n`${
|
|
604
|
+
orElse: () => n`${Hn(e, n)} @@ plainto_tsquery(${e.config ?? "english"}, ${e.query})`
|
|
605
605
|
});
|
|
606
|
-
},
|
|
607
|
-
let r = `%${
|
|
606
|
+
}, Gn = (e, t, n) => {
|
|
607
|
+
let r = `%${j(e.query)}%`;
|
|
608
608
|
return n.onDialectOrElse({
|
|
609
609
|
mysql: () => n`MATCH(${n.csv(e.columns.map((e) => n`${n(e)}`))}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)`,
|
|
610
610
|
sqlite: () => {
|
|
611
|
-
let r = n(
|
|
611
|
+
let r = n(Un(e, t));
|
|
612
612
|
return n`COALESCE((SELECT -bm25(${r}) FROM ${r} WHERE ${r} MATCH ${e.query} AND ${r}.${n("row_id")} = ${n("id")}), 0)`;
|
|
613
613
|
},
|
|
614
614
|
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}`),
|
|
615
|
-
orElse: () => n`ts_rank(${
|
|
615
|
+
orElse: () => n`ts_rank(${Hn(e, n)}, plainto_tsquery(${e.config ?? "english"}, ${e.query}))`
|
|
616
616
|
});
|
|
617
|
-
},
|
|
617
|
+
}, N = (e, t, n = null) => {
|
|
618
618
|
if (e.setOp && e.setOp.queries.length >= 2) {
|
|
619
|
-
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`(${
|
|
619
|
+
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`(${N(e, t, n)})`).reduce((e, n, i) => i === 0 ? n : t`${e} ${t.unsafe(r)} ${n}`), a = [];
|
|
620
620
|
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) {
|
|
621
621
|
if (!Number.isInteger(e.take) || e.take < 0) throw Error(`compileSelect: invalid take ${e.take}`);
|
|
622
622
|
a.push(t` LIMIT ${t.unsafe(String(e.take))}`);
|
|
@@ -627,7 +627,7 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
627
627
|
}
|
|
628
628
|
return t`${i}${a.reduce((e, n) => t`${e}${n}`, t``)}`;
|
|
629
629
|
}
|
|
630
|
-
let r = e.annClause === void 0 ? null :
|
|
630
|
+
let r = e.annClause === void 0 ? null : zn(e.annClause, t);
|
|
631
631
|
e.spatialClause !== void 0 && t.onDialectOrElse({
|
|
632
632
|
mysql: () => {
|
|
633
633
|
throw Error("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
|
|
@@ -640,57 +640,57 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
640
640
|
},
|
|
641
641
|
orElse: () => t``
|
|
642
642
|
});
|
|
643
|
-
let i = e.spatialClause?.projectAs === void 0 ? null :
|
|
643
|
+
let i = e.spatialClause?.projectAs === void 0 ? null : Bn(e.spatialClause, t), a = e.aggregations && e.aggregations.length > 0 ? Ln(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 ? Gn(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({
|
|
644
644
|
orElse: () => t`DISTINCT ON (${t.csv(e.distinctOn.map((e) => t`${t(e)}`))}) `,
|
|
645
645
|
mysql: () => t`DISTINCT `,
|
|
646
646
|
mssql: () => t`DISTINCT `,
|
|
647
647
|
sqlite: () => t`DISTINCT `
|
|
648
|
-
}) : e.distinct ? t`DISTINCT ` : t``, p = e.alias === void 0 ? t`${t(
|
|
648
|
+
}) : e.distinct ? t`DISTINCT ` : t``, p = e.alias === void 0 ? t`${t(An(n, e.table))}` : t`${t(An(n, e.table))} AS ${t(e.alias)}`, m = (e.joins ?? []).map((e) => {
|
|
649
649
|
let r = e.kind === "inner" ? "INNER" : "LEFT";
|
|
650
|
-
return t` ${t.unsafe(r)} JOIN ${t(
|
|
651
|
-
}), h = m.length > 0 ? m.reduce((e, n) => t`${e}${n}`, p) : p, g = c === void 0 ? null :
|
|
652
|
-
r !== null && y.push(t`${r} ASC`), e.spatialClause?.order !== void 0 && y.push(e.spatialClause.order === "desc" ? t`${
|
|
650
|
+
return t` ${t.unsafe(r)} JOIN ${t(An(n, e.table))} AS ${t(e.alias)} ON ${M(e.on, t, n)}`;
|
|
651
|
+
}), h = m.length > 0 ? m.reduce((e, n) => t`${e}${n}`, p) : p, g = c === void 0 ? null : Wn(c, e.table, t), _ = [e.predicate ? M(e.predicate, t, n, e.table) : null, g].filter((e) => e !== null), ee = _.length > 0 ? t` WHERE ${t.and(_)}` : t``, v = e.groupBy && e.groupBy.length > 0 ? t` GROUP BY ${t.csv(e.groupBy.map((e) => t`${t(e)}`))}` : t``, te = e.having ? t` HAVING ${M(e.having, t, n, e.table)}` : t``, ne = e.skip !== void 0, y = [];
|
|
652
|
+
r !== null && y.push(t`${r} ASC`), e.spatialClause?.order !== void 0 && y.push(e.spatialClause.order === "desc" ? t`${Vn(e.spatialClause, t)} DESC` : t`${Vn(e.spatialClause, t)} ASC`), l !== null && c?.rank?.order === !0 && y.push(t`${l} DESC`);
|
|
653
653
|
for (let n of e.order) y.push(n.direction === "desc" ? t`${t(n.column)} DESC` : t`${t(n.column)} ASC`);
|
|
654
|
-
let re = y.length > 0 ? t` ORDER BY ${t.csv(y)}` :
|
|
654
|
+
let re = y.length > 0 ? t` ORDER BY ${t.csv(y)}` : ne ? t.onDialectOrElse({
|
|
655
655
|
mssql: () => t` ORDER BY (SELECT NULL)`,
|
|
656
656
|
orElse: () => t``
|
|
657
657
|
}) : t``, b = (e) => {
|
|
658
658
|
if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw Error(`compileSelect: expected non-negative integer take/skip, got ${e}`);
|
|
659
659
|
return t.unsafe(String(e));
|
|
660
|
-
}, ie = (e.ctes ?? []).map((e) => t`${t(e.name)} AS (${
|
|
660
|
+
}, ie = (e.ctes ?? []).map((e) => t`${t(e.name)} AS (${N(e.descriptor, t, n)})`), x = (e.ctes ?? []).some((e) => e.recursive === !0), ae = ie.length > 0 ? t`WITH ${t.unsafe(x ? "RECURSIVE " : "")}${t.csv(ie)} ` : t``;
|
|
661
661
|
return t.onDialectOrElse({
|
|
662
662
|
mssql: () => {
|
|
663
|
-
let n = e.take !== void 0 && !
|
|
664
|
-
return t`${ae}SELECT ${n}${f}${d} FROM ${h}${ee}${
|
|
663
|
+
let n = e.take !== void 0 && !ne ? t`TOP ${b(e.take)} ` : t``, r = ne ? t` OFFSET ${b(e.skip)} ROWS FETCH NEXT ${b(e.take ?? 2 ** 53 - 1)} ROWS ONLY` : t``;
|
|
664
|
+
return t`${ae}SELECT ${n}${f}${d} FROM ${h}${ee}${v}${te}${re}${r}`;
|
|
665
665
|
},
|
|
666
666
|
orElse: () => {
|
|
667
|
-
let n = e.take === void 0 ? t`` : t` LIMIT ${b(e.take)}`, r =
|
|
668
|
-
return t`${ae}SELECT ${f}${d} FROM ${h}${ee}${
|
|
667
|
+
let n = e.take === void 0 ? t`` : t` LIMIT ${b(e.take)}`, r = ne ? t` OFFSET ${b(e.skip)}` : t``;
|
|
668
|
+
return t`${ae}SELECT ${f}${d} FROM ${h}${ee}${v}${te}${re}${n}${r}`;
|
|
669
669
|
}
|
|
670
670
|
});
|
|
671
|
-
},
|
|
671
|
+
}, Kn = (e, t, n) => {
|
|
672
672
|
if (e.eager === void 0) return null;
|
|
673
|
-
let r =
|
|
673
|
+
let r = Jn(e.table, e.eager, e.sourceTable);
|
|
674
674
|
if (r === null) return null;
|
|
675
|
-
let i =
|
|
675
|
+
let i = tr(n, e, r, er(t, n));
|
|
676
676
|
return i === null ? null : {
|
|
677
677
|
fragment: i,
|
|
678
|
-
decode:
|
|
678
|
+
decode: ir(r, n)
|
|
679
679
|
};
|
|
680
|
-
},
|
|
680
|
+
}, P = (e) => e.relation.kind === "one" && e.fkSide === "target", qn = (e) => ({
|
|
681
681
|
...e,
|
|
682
682
|
branch: {
|
|
683
683
|
...e.branch,
|
|
684
684
|
limit: 2
|
|
685
685
|
}
|
|
686
|
-
}),
|
|
686
|
+
}), Jn = (e, t, n) => {
|
|
687
687
|
let r = n ?? ue(e), i = Zt(e);
|
|
688
688
|
if (i === void 0) return null;
|
|
689
689
|
let a = [];
|
|
690
690
|
for (let [e, n] of Object.entries(t)) {
|
|
691
691
|
let t = i[e];
|
|
692
692
|
if (t === void 0) return null;
|
|
693
|
-
let o =
|
|
693
|
+
let o = Yn(e, t, r, n === !0 ? {} : n);
|
|
694
694
|
if (o === null) return null;
|
|
695
695
|
a.push(o);
|
|
696
696
|
}
|
|
@@ -698,11 +698,11 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
698
698
|
table: r,
|
|
699
699
|
children: a
|
|
700
700
|
};
|
|
701
|
-
},
|
|
701
|
+
}, Yn = (e, t, n, r) => {
|
|
702
702
|
let i = t.target(), a = (t.kind === "manyToMany" ? void 0 : t.sourceKey) ?? "id", o, s;
|
|
703
703
|
if (t.kind === "manyToMany") o = t.targetKey, s = "target";
|
|
704
704
|
else if (t.kind === "one") {
|
|
705
|
-
let r = t.sourceKey ??
|
|
705
|
+
let r = t.sourceKey ?? $n(n, i.tableName);
|
|
706
706
|
if (r !== void 0) o = r, s = "source";
|
|
707
707
|
else try {
|
|
708
708
|
o = t.foreignKey ?? O(i, n.tableName, e), s = "target";
|
|
@@ -721,7 +721,7 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
721
721
|
for (let [n, a] of Object.entries(r.with)) {
|
|
722
722
|
let r = e?.[n];
|
|
723
723
|
if (r === void 0) return null;
|
|
724
|
-
let o =
|
|
724
|
+
let o = Yn(n, r, i, a === !0 ? {} : a);
|
|
725
725
|
if (o === null) return null;
|
|
726
726
|
t.push(o);
|
|
727
727
|
}
|
|
@@ -737,9 +737,9 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
737
737
|
fkSide: s,
|
|
738
738
|
branch: r,
|
|
739
739
|
children: c,
|
|
740
|
-
junction:
|
|
740
|
+
junction: Xn(t, r)
|
|
741
741
|
};
|
|
742
|
-
},
|
|
742
|
+
}, Xn = (e, t) => {
|
|
743
743
|
if (e.kind !== "manyToMany" || t.junction === void 0) return;
|
|
744
744
|
let n = e.through(), r = t.junction === !0 ? Object.keys(n.fields) : t.junction, i = r.filter((e) => e in n.fields);
|
|
745
745
|
return {
|
|
@@ -751,35 +751,35 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
751
751
|
return t !== void 0 && (t.type === "timestamp" || t.type === "date");
|
|
752
752
|
})
|
|
753
753
|
};
|
|
754
|
-
},
|
|
754
|
+
}, Zn = (e) => `__j_${e}`, Qn = "__j", $n = (e, t) => {
|
|
755
755
|
for (let [n, r] of Object.entries(e.fields)) if (r.type === "reference" && r.references?.()?.tableName === t) return n;
|
|
756
|
-
},
|
|
756
|
+
}, er = (e, t) => {
|
|
757
757
|
let n = 0;
|
|
758
758
|
return {
|
|
759
759
|
sql: e,
|
|
760
760
|
dialect: t,
|
|
761
761
|
nextAlias: () => `__a${n++}`
|
|
762
762
|
};
|
|
763
|
-
},
|
|
763
|
+
}, tr = (e, t, n, r) => {
|
|
764
764
|
switch (e) {
|
|
765
|
-
case "postgres": return
|
|
765
|
+
case "postgres": return sr(t, n, r);
|
|
766
766
|
case "sqlite":
|
|
767
|
-
case "turso": return
|
|
767
|
+
case "turso": return hr(t, n, r);
|
|
768
768
|
case "mysql":
|
|
769
|
-
case "mariadb": return
|
|
770
|
-
case "mssql": return
|
|
769
|
+
case "mariadb": return Tr(t, n, r);
|
|
770
|
+
case "mssql": return Mr(t, n, r);
|
|
771
771
|
}
|
|
772
|
-
},
|
|
773
|
-
let n =
|
|
772
|
+
}, nr = (e, t) => t === "mssql" && !rr.test(e) ? /* @__PURE__ */ new Date(`${e}Z`) : new Date(e), rr = /(?:Z|[+-]\d{2}:?\d{2})$/, ir = (e, t) => {
|
|
773
|
+
let n = ar(e.table, e.children, t);
|
|
774
774
|
return (e) => e.map((e) => {
|
|
775
775
|
let t = e.__row, r = typeof t == "string" ? JSON.parse(t) : t;
|
|
776
776
|
return n(r);
|
|
777
777
|
});
|
|
778
|
-
},
|
|
778
|
+
}, ar = (e, t, n) => {
|
|
779
779
|
let r = [];
|
|
780
780
|
for (let [t, n] of Object.entries(e.fields)) (n.type === "timestamp" || n.type === "date") && r.push(t);
|
|
781
781
|
let i = t.map((e) => {
|
|
782
|
-
let t =
|
|
782
|
+
let t = ar(e.target, e.children, n), r = e.relation.kind === "one", i = P(e), a = i ? fn({
|
|
783
783
|
relationName: e.relationName,
|
|
784
784
|
sourceTableName: e.source.tableName,
|
|
785
785
|
targetTableName: e.target.tableName,
|
|
@@ -792,14 +792,14 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
792
792
|
isSingle: r,
|
|
793
793
|
fromOverFetch: i,
|
|
794
794
|
cardinalityMessage: a,
|
|
795
|
-
junction:
|
|
795
|
+
junction: or(e.junction, n)
|
|
796
796
|
};
|
|
797
797
|
});
|
|
798
798
|
return (e) => {
|
|
799
799
|
let t = { ...e };
|
|
800
800
|
for (let e of r) {
|
|
801
801
|
let r = t[e];
|
|
802
|
-
typeof r == "string" && (t[e] =
|
|
802
|
+
typeof r == "string" && (t[e] = nr(r, n));
|
|
803
803
|
}
|
|
804
804
|
for (let e of i) {
|
|
805
805
|
let n = t[e.name];
|
|
@@ -821,204 +821,204 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
821
821
|
}
|
|
822
822
|
return t;
|
|
823
823
|
};
|
|
824
|
-
},
|
|
824
|
+
}, or = (e, t) => {
|
|
825
825
|
if (e === void 0) return;
|
|
826
826
|
let n = new Set(e.dateColumns), r = e.requested;
|
|
827
827
|
return (e) => {
|
|
828
828
|
let i = e._junction ?? {}, a = {};
|
|
829
829
|
for (let e of r) {
|
|
830
830
|
let r = i[e];
|
|
831
|
-
a[e] = n.has(e) && typeof r == "string" ?
|
|
831
|
+
a[e] = n.has(e) && typeof r == "string" ? nr(r, t) : r;
|
|
832
832
|
}
|
|
833
833
|
return {
|
|
834
834
|
...e,
|
|
835
835
|
_junction: a
|
|
836
836
|
};
|
|
837
837
|
};
|
|
838
|
-
},
|
|
839
|
-
let r = n.sql, i = n.nextAlias(), a = r(t.table.tableName), o = r(i), s =
|
|
840
|
-
return s === null ? null : r`SELECT ${s} AS "__row" FROM ${a} AS ${o}${e.predicate ? r` WHERE ${
|
|
841
|
-
},
|
|
842
|
-
let i = n.sql, a = r === void 0 ? i`to_jsonb(${i(e)}.*)` : i`(to_jsonb(${i(e)}.*) - ${
|
|
838
|
+
}, sr = (e, t, n) => {
|
|
839
|
+
let r = n.sql, i = n.nextAlias(), a = r(t.table.tableName), o = r(i), s = cr(i, t.children, n);
|
|
840
|
+
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)}`}`;
|
|
841
|
+
}, cr = (e, t, n, r) => {
|
|
842
|
+
let i = n.sql, a = r === void 0 ? i`to_jsonb(${i(e)}.*)` : i`(to_jsonb(${i(e)}.*) - ${R(Qn, i)}::text)`;
|
|
843
843
|
if (t.length === 0 && r === void 0) return a;
|
|
844
844
|
let o = [];
|
|
845
|
-
r !== void 0 && o.push(i`${
|
|
845
|
+
r !== void 0 && o.push(i`${R("_junction", i)}, ${L(e, Qn, i)}`);
|
|
846
846
|
for (let r of t) {
|
|
847
|
-
let t =
|
|
847
|
+
let t = lr(r, e, n);
|
|
848
848
|
if (t === null) return null;
|
|
849
|
-
o.push(i`${
|
|
849
|
+
o.push(i`${R(r.relationName, i)}, ${t}`);
|
|
850
850
|
}
|
|
851
851
|
return i`${a} || jsonb_build_object(${i.csv(o)})`;
|
|
852
|
-
},
|
|
852
|
+
}, lr = (e, t, n) => {
|
|
853
853
|
switch (e.relation.kind) {
|
|
854
|
-
case "one": return
|
|
855
|
-
case "many": return
|
|
856
|
-
case "manyToMany": return
|
|
854
|
+
case "one": return P(e) ? dr(qn(e), t, n) : ur(e, t, n);
|
|
855
|
+
case "many": return dr(e, t, n);
|
|
856
|
+
case "manyToMany": return fr(e, t, n);
|
|
857
857
|
}
|
|
858
|
-
},
|
|
859
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
858
|
+
}, ur = (e, t, n) => {
|
|
859
|
+
let r = n.sql, i = n.nextAlias(), a = cr(i, e.children, n);
|
|
860
860
|
if (a === null) return null;
|
|
861
|
-
let o = e.fkSide === "source" ? r`${
|
|
861
|
+
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);
|
|
862
862
|
return r`(SELECT ${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o}${s}${c} LIMIT 1)`;
|
|
863
|
-
},
|
|
864
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
863
|
+
}, dr = (e, t, n) => {
|
|
864
|
+
let r = n.sql, i = n.nextAlias(), a = cr(i, e.children, n);
|
|
865
865
|
if (a === null) return null;
|
|
866
|
-
let o = r`${
|
|
866
|
+
let o = r`${L(void 0, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${M(e.branch.where, r)}`, c = mr(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)}`;
|
|
867
867
|
return r`COALESCE((SELECT jsonb_agg(${a}) FROM (SELECT * FROM ${r(e.target.tableName)} WHERE ${o}${s}${c}${l}${u}) AS ${r(i)}), '[]'::jsonb)`;
|
|
868
|
-
},
|
|
869
|
-
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c =
|
|
868
|
+
}, fr = (e, t, n) => {
|
|
869
|
+
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = cr(o, e.children, n, e.junction);
|
|
870
870
|
if (c === null) return null;
|
|
871
|
-
let l = e.branch.where === void 0 ? r`` : r` AND ${
|
|
872
|
-
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 ${
|
|
873
|
-
},
|
|
874
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
871
|
+
let l = e.branch.where === void 0 ? r`` : r` AND ${M(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`, ${pr(e.junction, s, r)} AS ${r(Qn)}`;
|
|
872
|
+
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)`;
|
|
873
|
+
}, pr = (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`))}`, mr = (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`))}`, hr = (e, t, n) => {
|
|
874
|
+
let r = n.sql, i = n.nextAlias(), a = gr(i, t.table, t.children, n);
|
|
875
875
|
if (a === null) return null;
|
|
876
|
-
let o = e.predicate ? r` WHERE ${
|
|
876
|
+
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)}`;
|
|
877
877
|
return r`SELECT ${a} AS "__row" FROM ${r(t.table.tableName)} AS ${r(i)}${o}${s}${c}${l}`;
|
|
878
|
-
},
|
|
878
|
+
}, gr = (e, t, n, r, i) => {
|
|
879
879
|
let a = r.sql, o = [];
|
|
880
|
-
for (let n of Object.keys(t.fields)) o.push(a`${
|
|
880
|
+
for (let n of Object.keys(t.fields)) o.push(a`${R(n, a)}, ${L(e, n, a)}`);
|
|
881
881
|
if (i !== void 0) {
|
|
882
|
-
let e =
|
|
883
|
-
o.push(a`${
|
|
882
|
+
let e = _r(i.projection, i.source, a);
|
|
883
|
+
o.push(a`${R("_junction", a)}, json_object(${e})`);
|
|
884
884
|
}
|
|
885
885
|
for (let t of n) {
|
|
886
|
-
let n =
|
|
886
|
+
let n = xr(t, e, r);
|
|
887
887
|
if (n === null) return null;
|
|
888
|
-
o.push(a`${
|
|
888
|
+
o.push(a`${R(t.relationName, a)}, ${n}`);
|
|
889
889
|
}
|
|
890
890
|
return a`json_object(${a.csv(o)})`;
|
|
891
|
-
},
|
|
891
|
+
}, _r = (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)}`)), vr = (e, t, n) => e.present.length === 0 ? n`` : n`, ${n.csv(e.present.map((e) => n`${L(t, e, n)} AS ${n(Zn(e))}`))}`, yr = (e) => ({
|
|
892
892
|
alias: e,
|
|
893
|
-
physical:
|
|
894
|
-
}),
|
|
893
|
+
physical: Zn
|
|
894
|
+
}), br = (e) => ({
|
|
895
895
|
alias: e,
|
|
896
896
|
physical: (e) => e
|
|
897
|
-
}),
|
|
897
|
+
}), xr = (e, t, n) => {
|
|
898
898
|
switch (e.relation.kind) {
|
|
899
|
-
case "one": return
|
|
900
|
-
case "many": return
|
|
901
|
-
case "manyToMany": return
|
|
899
|
+
case "one": return P(e) ? Cr(qn(e), t, n) : Sr(e, t, n);
|
|
900
|
+
case "many": return Cr(e, t, n);
|
|
901
|
+
case "manyToMany": return wr(e, t, n);
|
|
902
902
|
}
|
|
903
|
-
},
|
|
904
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
903
|
+
}, Sr = (e, t, n) => {
|
|
904
|
+
let r = n.sql, i = n.nextAlias(), a = gr(i, e.target, e.children, n);
|
|
905
905
|
if (a === null) return null;
|
|
906
|
-
let o = e.fkSide === "source" ? r`${
|
|
906
|
+
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)}`;
|
|
907
907
|
return r`(SELECT ${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o} LIMIT 1)`;
|
|
908
|
-
},
|
|
909
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
908
|
+
}, Cr = (e, t, n) => {
|
|
909
|
+
let r = n.sql, i = n.nextAlias(), a = gr(i, e.target, e.children, n);
|
|
910
910
|
if (a === null) return null;
|
|
911
|
-
let o = r`${
|
|
911
|
+
let o = r`${L(void 0, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${M(H(e.branch.where), r)}`, c = mr(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)}`;
|
|
912
912
|
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('[]'))`;
|
|
913
|
-
},
|
|
914
|
-
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c =
|
|
913
|
+
}, wr = (e, t, n) => {
|
|
914
|
+
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = gr(o, e.target, e.children, n, e.junction === void 0 ? void 0 : {
|
|
915
915
|
projection: e.junction,
|
|
916
|
-
source:
|
|
916
|
+
source: yr(o)
|
|
917
917
|
});
|
|
918
918
|
if (c === null) return null;
|
|
919
|
-
let l = e.branch.where === void 0 ? r`` : r` AND ${
|
|
920
|
-
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 ${
|
|
921
|
-
},
|
|
922
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
919
|
+
let l = e.branch.where === void 0 ? r`` : r` AND ${M(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`` : vr(e.junction, s, r);
|
|
920
|
+
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('[]'))`;
|
|
921
|
+
}, Tr = (e, t, n) => {
|
|
922
|
+
let r = n.sql, i = n.nextAlias(), a = I(i, t.table, t.children, n);
|
|
923
923
|
if (a === null) return null;
|
|
924
|
-
let o = e.predicate ? r` WHERE ${
|
|
924
|
+
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)}`;
|
|
925
925
|
return r`SELECT ${a} AS \`__row\` FROM ${r(t.table.tableName)} AS ${r(i)}${o}${s}${c}${l}`;
|
|
926
|
-
},
|
|
926
|
+
}, I = (e, t, n, r, i) => {
|
|
927
927
|
let a = r.sql, o = [];
|
|
928
|
-
for (let n of Object.keys(t.fields)) o.push(a`${
|
|
928
|
+
for (let n of Object.keys(t.fields)) o.push(a`${R(n, a)}, ${L(e, n, a)}`);
|
|
929
929
|
if (i !== void 0) {
|
|
930
|
-
let e =
|
|
931
|
-
o.push(a`${
|
|
930
|
+
let e = _r(i.projection, i.source, a);
|
|
931
|
+
o.push(a`${R("_junction", a)}, JSON_OBJECT(${e})`);
|
|
932
932
|
}
|
|
933
933
|
for (let t of n) {
|
|
934
|
-
let n =
|
|
934
|
+
let n = Er(t, e, r);
|
|
935
935
|
if (n === null) return null;
|
|
936
|
-
o.push(a`${
|
|
936
|
+
o.push(a`${R(t.relationName, a)}, ${n}`);
|
|
937
937
|
}
|
|
938
938
|
return a`JSON_OBJECT(${a.csv(o)})`;
|
|
939
|
-
},
|
|
939
|
+
}, Er = (e, t, n) => {
|
|
940
940
|
switch (e.relation.kind) {
|
|
941
941
|
case "one":
|
|
942
|
-
if (
|
|
943
|
-
let r =
|
|
944
|
-
return n.dialect === "mariadb" ?
|
|
942
|
+
if (P(e)) {
|
|
943
|
+
let r = qn(e);
|
|
944
|
+
return n.dialect === "mariadb" ? Ar(r, t, n) : Or(r, t, n);
|
|
945
945
|
}
|
|
946
|
-
return
|
|
947
|
-
case "many": return n.dialect === "mariadb" ?
|
|
948
|
-
case "manyToMany": return n.dialect === "mariadb" ?
|
|
946
|
+
return Dr(e, t, n);
|
|
947
|
+
case "many": return n.dialect === "mariadb" ? Ar(e, t, n) : Or(e, t, n);
|
|
948
|
+
case "manyToMany": return n.dialect === "mariadb" ? jr(e, t, n) : kr(e, t, n);
|
|
949
949
|
}
|
|
950
|
-
},
|
|
951
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
950
|
+
}, Dr = (e, t, n) => {
|
|
951
|
+
let r = n.sql, i = n.nextAlias(), a = I(i, e.target, e.children, n);
|
|
952
952
|
if (a === null) return null;
|
|
953
|
-
let o = e.fkSide === "source" ? r`${
|
|
953
|
+
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)}`;
|
|
954
954
|
return r`(SELECT ${a} FROM ${r(e.target.tableName)} AS ${r(i)} WHERE ${o} LIMIT 1)`;
|
|
955
|
-
},
|
|
956
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
955
|
+
}, Or = (e, t, n) => {
|
|
956
|
+
let r = n.sql, i = n.nextAlias(), a = I(i, e.target, e.children, n);
|
|
957
957
|
if (a === null) return null;
|
|
958
|
-
let o = r`${
|
|
958
|
+
let o = r`${L(void 0, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${M(H(e.branch.where), r)}`, c = mr(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)}`;
|
|
959
959
|
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())`;
|
|
960
|
-
},
|
|
961
|
-
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c =
|
|
960
|
+
}, kr = (e, t, n) => {
|
|
961
|
+
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 : {
|
|
962
962
|
projection: e.junction,
|
|
963
|
-
source:
|
|
963
|
+
source: yr(o)
|
|
964
964
|
});
|
|
965
965
|
if (c === null) return null;
|
|
966
|
-
let l = e.branch.where === void 0 ? r`` : r` AND ${
|
|
967
|
-
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 ${
|
|
968
|
-
}, kr = (e, t, n) => {
|
|
969
|
-
let r = n.sql, i = n.nextAlias(), a = L(i, e.target, e.children, n);
|
|
970
|
-
if (a === null) return null;
|
|
971
|
-
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 ?? [];
|
|
972
|
-
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())`;
|
|
973
|
-
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)}`;
|
|
974
|
-
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())`;
|
|
966
|
+
let l = e.branch.where === void 0 ? r`` : r` AND ${M(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`` : vr(e.junction, s, r);
|
|
967
|
+
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())`;
|
|
975
968
|
}, Ar = (e, t, n) => {
|
|
969
|
+
let r = n.sql, i = n.nextAlias(), a = I(i, e.target, e.children, n);
|
|
970
|
+
if (a === null) return null;
|
|
971
|
+
let o = r`${L(i, e.foreignKey, r)} = ${L(t, e.sourceKey, r)}`, s = e.branch.where === void 0 ? r`` : r` AND ${M(H(e.branch.where), r)}`, c = e.branch.orderBy ?? [];
|
|
972
|
+
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())`;
|
|
973
|
+
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)}`;
|
|
974
|
+
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())`;
|
|
975
|
+
}, jr = (e, t, n) => {
|
|
976
976
|
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = (t) => e.junction === void 0 ? void 0 : {
|
|
977
977
|
projection: e.junction,
|
|
978
978
|
source: t
|
|
979
|
-
}, l = r`${
|
|
979
|
+
}, 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 ${M(H(e.branch.where), r)}`, f = V(e, s, r, !0), p = e.branch.orderBy ?? [];
|
|
980
980
|
if (!(e.branch.limit !== void 0 || e.branch.offset !== void 0)) {
|
|
981
|
-
let t =
|
|
982
|
-
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`${
|
|
983
|
-
}
|
|
984
|
-
let m = p.length > 0 ? r` ORDER BY ${r.csv(p.map((e) => e.direction === "desc" ? r`${
|
|
985
|
-
if (
|
|
986
|
-
let
|
|
987
|
-
return r`COALESCE((SELECT JSON_ARRAYAGG(${
|
|
988
|
-
},
|
|
989
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
981
|
+
let t = I(o, e.target, e.children, n, c(br(s)));
|
|
982
|
+
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())`;
|
|
983
|
+
}
|
|
984
|
+
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)}`, ee = e.branch.onJunction === void 0 ? r`` : r` WHERE ${B(H(e.branch.onJunction), s, r)}`, v = I(o, e.target, e.children, n, c(yr(o)));
|
|
985
|
+
if (v === null) return null;
|
|
986
|
+
let te = e.junction === void 0 ? r`` : vr(e.junction, s, r);
|
|
987
|
+
return r`COALESCE((SELECT JSON_ARRAYAGG(${v} ORDER BY ${L(o, "rn", r)}) FROM (SELECT ${r(o)}.*${te}, ${L(s, i.sourceKey, r)} AS ${r(`__src_${i.sourceKey}`)}, ROW_NUMBER() OVER (PARTITION BY ${L(s, i.sourceKey, r)}${m}) AS rn FROM ${r(a.tableName)} AS ${r(s)} INNER JOIN ${r(e.target.tableName)} AS ${r(o)} ON ${u}${ee}) AS ${r(o)} WHERE ${L(o, `__src_${i.sourceKey}`, r)} = ${L(t, "id", r)}${d}${_}), JSON_ARRAY())`;
|
|
988
|
+
}, Mr = (e, t, n) => {
|
|
989
|
+
let r = n.sql, i = n.nextAlias(), a = Nr(i, t.table, t.children, n);
|
|
990
990
|
if (a === null) return null;
|
|
991
|
-
let o = e.predicate ? r` WHERE ${
|
|
991
|
+
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``;
|
|
992
992
|
if (e.skip !== void 0) {
|
|
993
993
|
let t = e.order.length > 0 ? s : r` ORDER BY (SELECT NULL)`;
|
|
994
|
-
l = e.take === void 0 ? r`${t} OFFSET ${
|
|
995
|
-
} else e.take !== void 0 && (c = r`TOP ${
|
|
994
|
+
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`;
|
|
995
|
+
} else e.take !== void 0 && (c = r`TOP ${z(e.take, r)} `);
|
|
996
996
|
let u = e.skip === void 0 ? s : r``;
|
|
997
997
|
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}`;
|
|
998
|
-
},
|
|
998
|
+
}, Nr = (e, t, n, r, i) => {
|
|
999
999
|
let a = r.sql, o = [];
|
|
1000
|
-
for (let n of Object.keys(t.fields)) o.push(a`${
|
|
1001
|
-
if (i !== void 0) for (let e of i.projection.present) o.push(a`${
|
|
1000
|
+
for (let n of Object.keys(t.fields)) o.push(a`${L(e, n, a)} AS ${a(n)}`);
|
|
1001
|
+
if (i !== void 0) for (let e of i.projection.present) o.push(a`${L(i.source.alias, i.source.physical(e), a)} AS ${Pr(`_junction.${e}`, a)}`);
|
|
1002
1002
|
for (let t of n) {
|
|
1003
|
-
let n =
|
|
1003
|
+
let n = Fr(t, e, r);
|
|
1004
1004
|
if (n === null) return null;
|
|
1005
1005
|
o.push(n);
|
|
1006
1006
|
}
|
|
1007
1007
|
return a.csv(o);
|
|
1008
|
-
},
|
|
1008
|
+
}, Pr = (e, t) => t.unsafe(`[${e.replace(/]/g, "]]")}]`), Fr = (e, t, n) => {
|
|
1009
1009
|
switch (e.relation.kind) {
|
|
1010
|
-
case "one": return
|
|
1011
|
-
case "many": return
|
|
1012
|
-
case "manyToMany": return
|
|
1010
|
+
case "one": return P(e) ? Rr(qn(e), t, n) : Ir(e, t, n);
|
|
1011
|
+
case "many": return Rr(e, t, n);
|
|
1012
|
+
case "manyToMany": return zr(e, t, n);
|
|
1013
1013
|
}
|
|
1014
|
-
},
|
|
1015
|
-
let r = n.sql, i = n.nextAlias(), a =
|
|
1014
|
+
}, Ir = (e, t, n) => {
|
|
1015
|
+
let r = n.sql, i = n.nextAlias(), a = Nr(i, e.target, e.children, n);
|
|
1016
1016
|
if (a === null) return null;
|
|
1017
|
-
let o = e.fkSide === "source" ? r`${
|
|
1017
|
+
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)}`;
|
|
1018
1018
|
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)}`;
|
|
1019
|
-
},
|
|
1019
|
+
}, Lr = (e, t, n) => {
|
|
1020
1020
|
if (e.offset !== void 0) {
|
|
1021
|
-
let r = e.orderBy && e.orderBy.length > 0 ? t : n` ORDER BY (SELECT NULL)`, i = e.limit === void 0 ? n`${r} OFFSET ${
|
|
1021
|
+
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`;
|
|
1022
1022
|
return {
|
|
1023
1023
|
top: n``,
|
|
1024
1024
|
pagination: i,
|
|
@@ -1026,33 +1026,33 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1026
1026
|
};
|
|
1027
1027
|
}
|
|
1028
1028
|
return {
|
|
1029
|
-
top: e.limit === void 0 ? n`` : n`TOP ${
|
|
1029
|
+
top: e.limit === void 0 ? n`` : n`TOP ${z(e.limit, n)} `,
|
|
1030
1030
|
pagination: n``,
|
|
1031
1031
|
finalOrder: t
|
|
1032
1032
|
};
|
|
1033
|
-
}, Lr = (e, t, n) => {
|
|
1034
|
-
let r = n.sql, i = n.nextAlias(), a = Mr(i, e.target, e.children, n);
|
|
1035
|
-
if (a === null) return null;
|
|
1036
|
-
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 } = Ir(e.branch, s, r);
|
|
1037
|
-
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)}`;
|
|
1038
1033
|
}, Rr = (e, t, n) => {
|
|
1039
|
-
let r = n.sql, i =
|
|
1034
|
+
let r = n.sql, i = n.nextAlias(), a = Nr(i, e.target, e.children, n);
|
|
1035
|
+
if (a === null) return null;
|
|
1036
|
+
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 } = Lr(e.branch, s, r);
|
|
1037
|
+
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)}`;
|
|
1038
|
+
}, zr = (e, t, n) => {
|
|
1039
|
+
let r = n.sql, i = e.relation, a = i.through(), o = n.nextAlias(), s = n.nextAlias(), c = Nr(o, e.target, e.children, n, e.junction === void 0 ? void 0 : {
|
|
1040
1040
|
projection: e.junction,
|
|
1041
|
-
source:
|
|
1041
|
+
source: br(s)
|
|
1042
1042
|
});
|
|
1043
1043
|
if (c === null) return null;
|
|
1044
|
-
let l = e.branch.where === void 0 ? r`` : r` AND ${
|
|
1045
|
-
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 ${
|
|
1046
|
-
},
|
|
1044
|
+
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 } = Lr(e.branch, d, r);
|
|
1045
|
+
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)}`;
|
|
1046
|
+
}, 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) => {
|
|
1047
1047
|
if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw Error(`literalInt: expected non-negative integer, got ${e}`);
|
|
1048
1048
|
return t.unsafe(String(e));
|
|
1049
|
-
},
|
|
1049
|
+
}, B = (e, t, n) => M(Br(e, t), n), V = (e, t, n, r = !1) => {
|
|
1050
1050
|
let i = e.branch.onJunction;
|
|
1051
|
-
return i === void 0 ? n`` : n` AND ${
|
|
1052
|
-
},
|
|
1053
|
-
if ("not" in e) return { not:
|
|
1054
|
-
if ("and" in e) return { and: e.and.map((e) =>
|
|
1055
|
-
if ("or" in e) return { or: e.or.map((e) =>
|
|
1051
|
+
return i === void 0 ? n`` : n` AND ${B(r ? H(i) : i, t, n)}`;
|
|
1052
|
+
}, Br = (e, t) => {
|
|
1053
|
+
if ("not" in e) return { not: Br(e.not, t) };
|
|
1054
|
+
if ("and" in e) return { and: e.and.map((e) => Br(e, t)) };
|
|
1055
|
+
if ("or" in e) return { or: e.or.map((e) => Br(e, t)) };
|
|
1056
1056
|
if (e.op === "subquery-in" || e.op === "subquery-not-in") {
|
|
1057
1057
|
let n = e;
|
|
1058
1058
|
return {
|
|
@@ -1066,23 +1066,23 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1066
1066
|
...n,
|
|
1067
1067
|
column: `${t}.${n.column}`
|
|
1068
1068
|
};
|
|
1069
|
-
},
|
|
1070
|
-
if ("not" in e) return { not:
|
|
1071
|
-
if ("and" in e) return { and: e.and.map((e) =>
|
|
1072
|
-
if ("or" in e) return { or: e.or.map((e) =>
|
|
1069
|
+
}, H = (e) => {
|
|
1070
|
+
if ("not" in e) return { not: H(e.not) };
|
|
1071
|
+
if ("and" in e) return { and: e.and.map((e) => H(e)) };
|
|
1072
|
+
if ("or" in e) return { or: e.or.map((e) => H(e)) };
|
|
1073
1073
|
if (e.op === "subquery-in" || e.op === "subquery-not-in" || e.op === "exists" || e.op === "not-exists") return e;
|
|
1074
1074
|
let t = e;
|
|
1075
1075
|
return {
|
|
1076
1076
|
...t,
|
|
1077
|
-
value:
|
|
1077
|
+
value: Vr(t.value)
|
|
1078
1078
|
};
|
|
1079
|
-
},
|
|
1080
|
-
e.actors !== void 0 && (
|
|
1081
|
-
},
|
|
1079
|
+
}, Vr = (e) => e == null ? e : e instanceof Date ? e.toISOString() : typeof e == "boolean" ? +!!e : Array.isArray(e) ? e.map((e) => Vr(e)) : e, Hr = Symbol.for("@voltro/database/coreTablesRegistry"), Ur = globalThis, Wr = Ur[Hr] ?? (Ur[Hr] = {}), Gr = (e) => {
|
|
1080
|
+
e.actors !== void 0 && (Wr.actors = e.actors), e.tenants !== void 0 && (Wr.tenants = e.tenants);
|
|
1081
|
+
}, Kr = (e, t) => () => {
|
|
1082
1082
|
let n = e();
|
|
1083
1083
|
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`);
|
|
1084
1084
|
return n();
|
|
1085
|
-
},
|
|
1085
|
+
}, qr = () => Kr(() => Wr.actors, "actors"), Jr = () => Kr(() => Wr.tenants, "tenants"), Yr = _("actors", {
|
|
1086
1086
|
id: T(),
|
|
1087
1087
|
kind: x().oneOf([
|
|
1088
1088
|
"user",
|
|
@@ -1092,73 +1092,73 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1092
1092
|
]),
|
|
1093
1093
|
displayName: x().nullable(),
|
|
1094
1094
|
createdAt: d().default("now")
|
|
1095
|
-
}),
|
|
1095
|
+
}), Xr = (e, t) => ({
|
|
1096
1096
|
column: e,
|
|
1097
1097
|
op: "eq",
|
|
1098
1098
|
value: t
|
|
1099
|
-
}),
|
|
1099
|
+
}), Zr = (e, t) => ({
|
|
1100
1100
|
column: e,
|
|
1101
1101
|
op: "neq",
|
|
1102
1102
|
value: t
|
|
1103
|
-
}),
|
|
1103
|
+
}), Qr = (e, t) => ({
|
|
1104
1104
|
column: e,
|
|
1105
1105
|
op: "gt",
|
|
1106
1106
|
value: t
|
|
1107
|
-
}),
|
|
1107
|
+
}), $r = (e, t) => ({
|
|
1108
1108
|
column: e,
|
|
1109
1109
|
op: "gte",
|
|
1110
1110
|
value: t
|
|
1111
|
-
}),
|
|
1111
|
+
}), ei = (e, t) => ({
|
|
1112
1112
|
column: e,
|
|
1113
1113
|
op: "lt",
|
|
1114
1114
|
value: t
|
|
1115
|
-
}),
|
|
1115
|
+
}), ti = (e, t) => ({
|
|
1116
1116
|
column: e,
|
|
1117
1117
|
op: "lte",
|
|
1118
1118
|
value: t
|
|
1119
|
-
}),
|
|
1119
|
+
}), ni = (e, t) => ({
|
|
1120
1120
|
column: e,
|
|
1121
1121
|
op: "in",
|
|
1122
1122
|
value: t
|
|
1123
|
-
}),
|
|
1123
|
+
}), ri = (e, t) => ({
|
|
1124
1124
|
column: e,
|
|
1125
1125
|
op: "notIn",
|
|
1126
1126
|
value: t
|
|
1127
|
-
}),
|
|
1127
|
+
}), ii = (e, t) => ({
|
|
1128
1128
|
column: e,
|
|
1129
1129
|
op: "contains",
|
|
1130
1130
|
value: t
|
|
1131
|
-
}),
|
|
1131
|
+
}), ai = (e, t) => ({
|
|
1132
1132
|
column: e,
|
|
1133
1133
|
op: "startsWith",
|
|
1134
1134
|
value: t
|
|
1135
|
-
}),
|
|
1135
|
+
}), oi = (e, t) => ({
|
|
1136
1136
|
column: e,
|
|
1137
1137
|
op: "arrayContains",
|
|
1138
1138
|
value: t
|
|
1139
|
-
}),
|
|
1139
|
+
}), si = (e, t) => ({
|
|
1140
1140
|
column: e,
|
|
1141
1141
|
op: "arrayOverlaps",
|
|
1142
1142
|
value: t
|
|
1143
|
-
}),
|
|
1143
|
+
}), ci = (e, t) => ({
|
|
1144
1144
|
column: e,
|
|
1145
1145
|
op: "arrayHas",
|
|
1146
1146
|
value: t
|
|
1147
|
-
}),
|
|
1147
|
+
}), li = {
|
|
1148
1148
|
column: "id",
|
|
1149
1149
|
op: "in",
|
|
1150
1150
|
value: []
|
|
1151
|
-
},
|
|
1151
|
+
}, ui = (e) => ({
|
|
1152
1152
|
column: e,
|
|
1153
1153
|
op: "isNull"
|
|
1154
|
-
}),
|
|
1154
|
+
}), di = (e) => ({
|
|
1155
1155
|
column: e,
|
|
1156
1156
|
op: "isNotNull"
|
|
1157
|
-
}),
|
|
1157
|
+
}), fi = (e, t) => ({
|
|
1158
1158
|
column: e,
|
|
1159
1159
|
op: "spatial",
|
|
1160
1160
|
value: t
|
|
1161
|
-
}),
|
|
1161
|
+
}), pi = (...e) => ({ and: e }), mi = (...e) => ({ or: e }), hi = (e) => ({ not: e }), gi = (e, ...t) => {
|
|
1162
1162
|
if (t.length === 0) throw Error(`jsonField("${e}"): at least one path segment is required`);
|
|
1163
1163
|
let n = (n, r) => ({
|
|
1164
1164
|
column: e,
|
|
@@ -1180,29 +1180,29 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1180
1180
|
isNull: () => n("isNull"),
|
|
1181
1181
|
isNotNull: () => n("isNotNull")
|
|
1182
1182
|
};
|
|
1183
|
-
},
|
|
1183
|
+
}, _i = (e) => "descriptor" in e ? e.descriptor : e, vi = (e, t) => ({
|
|
1184
1184
|
column: e,
|
|
1185
1185
|
op: "subquery-in",
|
|
1186
|
-
subquery:
|
|
1187
|
-
}),
|
|
1186
|
+
subquery: _i(t)
|
|
1187
|
+
}), yi = (e, t) => ({
|
|
1188
1188
|
column: e,
|
|
1189
1189
|
op: "subquery-not-in",
|
|
1190
|
-
subquery:
|
|
1191
|
-
}), yi = (e) => ({
|
|
1192
|
-
op: "exists",
|
|
1193
|
-
subquery: gi(e)
|
|
1190
|
+
subquery: _i(t)
|
|
1194
1191
|
}), bi = (e) => ({
|
|
1192
|
+
op: "exists",
|
|
1193
|
+
subquery: _i(e)
|
|
1194
|
+
}), xi = (e) => ({
|
|
1195
1195
|
op: "not-exists",
|
|
1196
|
-
subquery:
|
|
1197
|
-
}),
|
|
1196
|
+
subquery: _i(e)
|
|
1197
|
+
}), Si = (e, t) => e == null || t == null ? null : typeof e == typeof t ? e === t ? 0 : e > t ? 1 : -1 : null, Ci = (e, t, n = null) => {
|
|
1198
1198
|
if (!t) return !1;
|
|
1199
|
-
if ("not" in e) return !
|
|
1199
|
+
if ("not" in e) return !Ci(e.not, t, n);
|
|
1200
1200
|
if ("and" in e) {
|
|
1201
|
-
for (let r of e.and) if (!
|
|
1201
|
+
for (let r of e.and) if (!Ci(r, t, n)) return !1;
|
|
1202
1202
|
return !0;
|
|
1203
1203
|
}
|
|
1204
1204
|
if ("or" in e) {
|
|
1205
|
-
for (let r of e.or) if (
|
|
1205
|
+
for (let r of e.or) if (Ci(r, t, n)) return !0;
|
|
1206
1206
|
return !1;
|
|
1207
1207
|
}
|
|
1208
1208
|
if (e.op === "subquery-in" || e.op === "subquery-not-in") {
|
|
@@ -1221,10 +1221,10 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1221
1221
|
switch (r.op) {
|
|
1222
1222
|
case "eq": return i === r.value;
|
|
1223
1223
|
case "neq": return i !== r.value;
|
|
1224
|
-
case "gt": return (
|
|
1225
|
-
case "gte": return (
|
|
1226
|
-
case "lt": return (
|
|
1227
|
-
case "lte": return (
|
|
1224
|
+
case "gt": return (Si(i, r.value) ?? -1) > 0;
|
|
1225
|
+
case "gte": return (Si(i, r.value) ?? -1) >= 0;
|
|
1226
|
+
case "lt": return (Si(i, r.value) ?? 1) < 0;
|
|
1227
|
+
case "lte": return (Si(i, r.value) ?? 1) <= 0;
|
|
1228
1228
|
case "in": return Array.isArray(r.value) && r.value.includes(i);
|
|
1229
1229
|
case "notIn": return Array.isArray(r.value) && !r.value.includes(i);
|
|
1230
1230
|
case "contains": return typeof i == "string" && typeof r.value == "string" && i.toLowerCase().includes(r.value.toLowerCase());
|
|
@@ -1242,17 +1242,17 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1242
1242
|
case "isNotNull": return i != null;
|
|
1243
1243
|
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.");
|
|
1244
1244
|
}
|
|
1245
|
-
},
|
|
1245
|
+
}, wi = function* (e) {
|
|
1246
1246
|
if ("not" in e) {
|
|
1247
|
-
yield*
|
|
1247
|
+
yield* wi(e.not);
|
|
1248
1248
|
return;
|
|
1249
1249
|
}
|
|
1250
1250
|
if ("and" in e) {
|
|
1251
|
-
for (let t of e.and) yield*
|
|
1251
|
+
for (let t of e.and) yield* wi(t);
|
|
1252
1252
|
return;
|
|
1253
1253
|
}
|
|
1254
1254
|
if ("or" in e) {
|
|
1255
|
-
for (let t of e.or) yield*
|
|
1255
|
+
for (let t of e.or) yield* wi(t);
|
|
1256
1256
|
return;
|
|
1257
1257
|
}
|
|
1258
1258
|
e.op === "subquery-in" || e.op === "subquery-not-in" ? yield {
|
|
@@ -1262,83 +1262,83 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1262
1262
|
kind: "exists",
|
|
1263
1263
|
descriptor: e.subquery
|
|
1264
1264
|
});
|
|
1265
|
-
},
|
|
1265
|
+
}, Ti = function* (e, t = !0) {
|
|
1266
1266
|
if ("not" in e) {
|
|
1267
|
-
yield*
|
|
1267
|
+
yield* Ti(e.not, !1);
|
|
1268
1268
|
return;
|
|
1269
1269
|
}
|
|
1270
1270
|
if ("and" in e) {
|
|
1271
|
-
for (let n of e.and) yield*
|
|
1271
|
+
for (let n of e.and) yield* Ti(n, t);
|
|
1272
1272
|
return;
|
|
1273
1273
|
}
|
|
1274
1274
|
if ("or" in e) {
|
|
1275
|
-
for (let t of e.or) yield*
|
|
1275
|
+
for (let t of e.or) yield* Ti(t, !1);
|
|
1276
1276
|
return;
|
|
1277
1277
|
}
|
|
1278
1278
|
e.op === "subquery-in" || e.op === "subquery-not-in" || e.op === "exists" || e.op === "not-exists" || (yield {
|
|
1279
1279
|
...e,
|
|
1280
1280
|
conjunctive: t
|
|
1281
1281
|
});
|
|
1282
|
-
},
|
|
1283
|
-
let t = e ??
|
|
1282
|
+
}, U = new vt(), Ei = (e, t) => U.run(e, t), Di = () => U.getStore(), Oi = (e) => {
|
|
1283
|
+
let t = e ?? U.getStore();
|
|
1284
1284
|
return t === void 0 ? {} : {
|
|
1285
1285
|
...t.traceId === void 0 ? {} : { traceId: t.traceId },
|
|
1286
1286
|
...t.subjectId === void 0 ? {} : { subjectId: t.subjectId },
|
|
1287
1287
|
...t.procedure === void 0 ? {} : { procedure: t.procedure }
|
|
1288
1288
|
};
|
|
1289
|
-
},
|
|
1290
|
-
let t =
|
|
1291
|
-
return t === void 0 ? e(void 0) :
|
|
1292
|
-
},
|
|
1293
|
-
for (let [t, n] of
|
|
1294
|
-
let r = n.filter((t) => e - t.at <
|
|
1295
|
-
|
|
1296
|
-
}
|
|
1297
|
-
},
|
|
1289
|
+
}, ki = (e) => {
|
|
1290
|
+
let t = U.getStore();
|
|
1291
|
+
return t === void 0 ? e(void 0) : U.run(t, () => e(t));
|
|
1292
|
+
}, Ai = 3e4, ji = 1e4, W = /* @__PURE__ */ new Map(), G = 0, Mi = (e, t, n) => `${e}\u0000${t}\u0000${String(n)}`, Ni = (e) => {
|
|
1293
|
+
for (let [t, n] of W) {
|
|
1294
|
+
let r = n.filter((t) => e - t.at < Ai);
|
|
1295
|
+
G -= n.length - r.length, r.length === 0 ? W.delete(t) : r.length !== n.length && W.set(t, r);
|
|
1296
|
+
}
|
|
1297
|
+
}, Pi = (e, t) => {
|
|
1298
1298
|
if (t.traceId === void 0 && t.subjectId === void 0 && t.procedure === void 0) return;
|
|
1299
1299
|
let n = Date.now();
|
|
1300
|
-
if (
|
|
1301
|
-
let r =
|
|
1302
|
-
r === void 0 ?
|
|
1300
|
+
if (G >= ji && Ni(n), G >= ji) return;
|
|
1301
|
+
let r = W.get(e);
|
|
1302
|
+
r === void 0 ? W.set(e, [{
|
|
1303
1303
|
attribution: t,
|
|
1304
1304
|
at: n
|
|
1305
1305
|
}]) : r.push({
|
|
1306
1306
|
attribution: t,
|
|
1307
1307
|
at: n
|
|
1308
|
-
}),
|
|
1309
|
-
},
|
|
1310
|
-
let t =
|
|
1308
|
+
}), G += 1;
|
|
1309
|
+
}, Fi = (e) => {
|
|
1310
|
+
let t = W.get(e);
|
|
1311
1311
|
if (t === void 0 || t.length === 0) return;
|
|
1312
1312
|
let n = t.shift();
|
|
1313
|
-
if (--
|
|
1314
|
-
},
|
|
1315
|
-
let t =
|
|
1313
|
+
if (--G, t.length === 0 && W.delete(e), !(Date.now() - n.at >= Ai)) return n.attribution;
|
|
1314
|
+
}, Ii = (e) => (W.get(e)?.length ?? 0) > 0, K = /* @__PURE__ */ new Map(), q = /* @__PURE__ */ new Map(), Li = /* @__PURE__ */ new Map(), Ri = 250, zi = (e) => {
|
|
1315
|
+
let t = q.get(e);
|
|
1316
1316
|
if (t === void 0) return;
|
|
1317
|
-
|
|
1318
|
-
let n =
|
|
1319
|
-
n !== void 0 && (clearTimeout(n),
|
|
1317
|
+
q.delete(e);
|
|
1318
|
+
let n = Li.get(e);
|
|
1319
|
+
n !== void 0 && (clearTimeout(n), Li.delete(e));
|
|
1320
1320
|
for (let e of t) e();
|
|
1321
|
-
}, zi = (e) => {
|
|
1322
|
-
q.set(e, (q.get(e) ?? 0) + 1);
|
|
1323
1321
|
}, Bi = (e) => {
|
|
1324
|
-
|
|
1322
|
+
K.set(e, (K.get(e) ?? 0) + 1);
|
|
1323
|
+
}, Vi = (e) => {
|
|
1324
|
+
let t = (K.get(e) ?? 0) - 1;
|
|
1325
1325
|
if (t > 0) {
|
|
1326
|
-
|
|
1326
|
+
K.set(e, t);
|
|
1327
1327
|
return;
|
|
1328
1328
|
}
|
|
1329
|
-
|
|
1330
|
-
},
|
|
1331
|
-
let i = n == null ? void 0 :
|
|
1329
|
+
K.delete(e), zi(e);
|
|
1330
|
+
}, Hi = (e, t, n, r) => {
|
|
1331
|
+
let i = n == null ? void 0 : Mi(e, t, n), a = () => r(i === void 0 ? void 0 : Fi(i));
|
|
1332
1332
|
if (i === void 0) {
|
|
1333
1333
|
a();
|
|
1334
1334
|
return;
|
|
1335
1335
|
}
|
|
1336
|
-
if (
|
|
1336
|
+
if (Ii(i)) {
|
|
1337
1337
|
a();
|
|
1338
1338
|
return;
|
|
1339
1339
|
}
|
|
1340
|
-
let o =
|
|
1341
|
-
if (o === void 0 && (
|
|
1340
|
+
let o = q.get(e);
|
|
1341
|
+
if (o === void 0 && (K.get(e) ?? 0) === 0) {
|
|
1342
1342
|
a();
|
|
1343
1343
|
return;
|
|
1344
1344
|
}
|
|
@@ -1346,34 +1346,65 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1346
1346
|
o.push(a);
|
|
1347
1347
|
return;
|
|
1348
1348
|
}
|
|
1349
|
-
|
|
1350
|
-
let s = setTimeout(() =>
|
|
1351
|
-
typeof s == "object" && typeof s.unref == "function" && s.unref(),
|
|
1352
|
-
},
|
|
1353
|
-
|
|
1354
|
-
for (let e of
|
|
1355
|
-
|
|
1356
|
-
},
|
|
1357
|
-
|
|
1349
|
+
q.set(e, [a]);
|
|
1350
|
+
let s = setTimeout(() => zi(e), Ri);
|
|
1351
|
+
typeof s == "object" && typeof s.unref == "function" && s.unref(), Li.set(e, s);
|
|
1352
|
+
}, Ui = () => {
|
|
1353
|
+
W.clear(), G = 0, K.clear();
|
|
1354
|
+
for (let e of Li.values()) clearTimeout(e);
|
|
1355
|
+
Li.clear(), q.clear();
|
|
1356
|
+
}, Wi = () => G, J = /* @__PURE__ */ new Map(), Gi = (e, t) => {
|
|
1357
|
+
J.set(e, {
|
|
1358
1358
|
recorder: t.recorder,
|
|
1359
1359
|
tables: new Set(t.tables),
|
|
1360
1360
|
ownTables: new Set(t.ownTables)
|
|
1361
1361
|
});
|
|
1362
|
-
},
|
|
1363
|
-
|
|
1364
|
-
},
|
|
1365
|
-
if (
|
|
1366
|
-
for (let t of
|
|
1362
|
+
}, Ki = (e) => {
|
|
1363
|
+
J.delete(e);
|
|
1364
|
+
}, qi = () => J.clear(), Ji = (e) => {
|
|
1365
|
+
if (J.size === 0) return !1;
|
|
1366
|
+
for (let t of J.values()) if (!t.ownTables.has(e) && t.tables.has(e)) return !0;
|
|
1367
1367
|
return !1;
|
|
1368
|
-
},
|
|
1369
|
-
if (
|
|
1370
|
-
},
|
|
1368
|
+
}, Yi = async (e, t) => {
|
|
1369
|
+
if (J.size !== 0) for (let n of J.values()) n.ownTables.has(t.table) || n.tables.has(t.table) && await n.recorder(e, t);
|
|
1370
|
+
}, Xi = (e) => {
|
|
1371
1371
|
if (ht.isSuccess(e)) return e.value;
|
|
1372
1372
|
throw dt.squash(e.cause);
|
|
1373
|
-
},
|
|
1373
|
+
}, Zi = class extends E.TaggedError()("VersionConflict", {
|
|
1374
|
+
table: E.String,
|
|
1375
|
+
id: E.String,
|
|
1376
|
+
expected: E.Number,
|
|
1377
|
+
actual: E.NullOr(E.Number)
|
|
1378
|
+
}) {}, Qi = (e) => {
|
|
1379
|
+
for (let [t, n] of Object.entries(e)) if (n?.definition?.versionColumn === !0) return t;
|
|
1380
|
+
}, $i = (e) => {
|
|
1381
|
+
let { versionColumn: t, patch: n } = e;
|
|
1382
|
+
if (t === void 0) return {
|
|
1383
|
+
nextVersion: void 0,
|
|
1384
|
+
expected: void 0,
|
|
1385
|
+
patch: { ...n }
|
|
1386
|
+
};
|
|
1387
|
+
let r = n[t], i = typeof r == "number" && Number.isFinite(r) ? r : void 0, a = { ...n };
|
|
1388
|
+
return delete a[t], {
|
|
1389
|
+
nextVersion: i === void 0 ? void 0 : i + 1,
|
|
1390
|
+
expected: i,
|
|
1391
|
+
patch: a
|
|
1392
|
+
};
|
|
1393
|
+
}, ea = (e) => {
|
|
1394
|
+
if (e.expected !== void 0 && !(e.current !== null && e.current === e.expected)) return new Zi({
|
|
1395
|
+
table: e.table,
|
|
1396
|
+
id: e.id,
|
|
1397
|
+
expected: e.expected,
|
|
1398
|
+
actual: e.current
|
|
1399
|
+
});
|
|
1400
|
+
}, ta = 1, na = "voltro/expires", ra = () => g({
|
|
1401
|
+
id: na,
|
|
1402
|
+
fields: { expiresAt: d().nullable() },
|
|
1403
|
+
behaviors: { defaultWhere: () => "expiresAt IS NULL OR expiresAt > now()" }
|
|
1404
|
+
}), ia = class extends pt.TaggedError("TableStreamError") {}, aa = 1e3, oa = (e, t, n, r) => {
|
|
1374
1405
|
let i = gt.match(r, {
|
|
1375
1406
|
onNone: () => e.where,
|
|
1376
|
-
onSome: (n) => e.where ?
|
|
1407
|
+
onSome: (n) => e.where ? pi(e.where, Qr(t, n)) : Qr(t, n)
|
|
1377
1408
|
});
|
|
1378
1409
|
return {
|
|
1379
1410
|
table: e.table,
|
|
@@ -1388,19 +1419,19 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1388
1419
|
...e.includeDeleted === void 0 ? {} : { includeDeleted: e.includeDeleted },
|
|
1389
1420
|
...e.crossTenant === void 0 ? {} : { crossTenant: e.crossTenant }
|
|
1390
1421
|
};
|
|
1391
|
-
},
|
|
1392
|
-
let n = t.pk ?? "id", r = t.chunkSize ??
|
|
1422
|
+
}, sa = (e, t) => {
|
|
1423
|
+
let n = t.pk ?? "id", r = t.chunkSize ?? aa;
|
|
1393
1424
|
return _t.paginateChunkEffect(gt.none(), (i) => {
|
|
1394
1425
|
let a = mt.tryPromise({
|
|
1395
|
-
try: () => e.query(
|
|
1396
|
-
catch: (e) => new
|
|
1426
|
+
try: () => e.query(oa(t, n, r, i)),
|
|
1427
|
+
catch: (e) => new ia({
|
|
1397
1428
|
table: t.table,
|
|
1398
1429
|
cause: e
|
|
1399
1430
|
})
|
|
1400
1431
|
});
|
|
1401
1432
|
return (t.retry ? a.pipe(mt.retry(t.retry)) : a).pipe(mt.map((e) => [ft.fromIterable(e), e.length === r && e.length > 0 ? gt.some(gt.some(e[e.length - 1][n])) : gt.none()]));
|
|
1402
1433
|
});
|
|
1403
|
-
},
|
|
1434
|
+
}, ca = (e) => {
|
|
1404
1435
|
let t = e.alpha ?? .5;
|
|
1405
1436
|
if (t < 0 || t > 1) throw Error(`hybridSearch: alpha must be in [0, 1], got ${t}`);
|
|
1406
1437
|
return (n) => {
|
|
@@ -1427,14 +1458,14 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1427
1458
|
}
|
|
1428
1459
|
};
|
|
1429
1460
|
};
|
|
1430
|
-
},
|
|
1461
|
+
}, la = async (e, t) => {
|
|
1431
1462
|
let n = e.as ?? "embedding", r = t.row[e.from];
|
|
1432
1463
|
if (typeof r != "string" || r.length === 0) return {};
|
|
1433
1464
|
let i = await t.embed(r);
|
|
1434
1465
|
return { [n]: i };
|
|
1435
|
-
},
|
|
1466
|
+
}, ua = (e) => {
|
|
1436
1467
|
if (!Number.isInteger(e.dimensions) || e.dimensions <= 0) throw Error(`vectorEmbedding: dimensions must be a positive integer, got ${String(e.dimensions)}.`);
|
|
1437
|
-
let t = e.as ?? "embedding", n = (t) =>
|
|
1468
|
+
let t = e.as ?? "embedding", n = (t) => la(e, t);
|
|
1438
1469
|
return g({
|
|
1439
1470
|
id: "voltro/vectorEmbedding",
|
|
1440
1471
|
fields: { [t]: h(e.dimensions) },
|
|
@@ -1452,19 +1483,19 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1452
1483
|
beforeUpdate: n
|
|
1453
1484
|
}
|
|
1454
1485
|
});
|
|
1455
|
-
},
|
|
1486
|
+
}, da = 63, fa = "br_pr", Y = class extends Error {
|
|
1456
1487
|
_tag = "BranchNameInvalid";
|
|
1457
1488
|
constructor(e) {
|
|
1458
1489
|
super(e), this.name = "BranchNameInvalid";
|
|
1459
1490
|
}
|
|
1460
|
-
},
|
|
1461
|
-
if (!Number.isInteger(t) || t < 0) throw new
|
|
1462
|
-
let n =
|
|
1463
|
-
if (n.replace(/_/g, "") === "") throw new
|
|
1464
|
-
let r = `${
|
|
1465
|
-
if (r.length >
|
|
1491
|
+
}, pa = (e, t) => {
|
|
1492
|
+
if (!Number.isInteger(t) || t < 0) throw new Y(`prNumber must be a non-negative integer, got ${String(t)}`);
|
|
1493
|
+
let n = On(e);
|
|
1494
|
+
if (n.replace(/_/g, "") === "") throw new Y(`app slug '${e}' has no usable identifier characters`);
|
|
1495
|
+
let r = `${fa}${t}_${n}`;
|
|
1496
|
+
if (r.length > da) throw new Y(`branch namespace '${r}' exceeds the ${da}-byte identifier limit — use a shorter app slug`);
|
|
1466
1497
|
return r;
|
|
1467
|
-
},
|
|
1498
|
+
}, ma = (e) => e.startsWith(fa), ha = {
|
|
1468
1499
|
requested: {
|
|
1469
1500
|
provision: "provisioning",
|
|
1470
1501
|
destroy: "destroying"
|
|
@@ -1483,19 +1514,19 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1483
1514
|
fail: "failed"
|
|
1484
1515
|
},
|
|
1485
1516
|
destroyed: {}
|
|
1486
|
-
},
|
|
1517
|
+
}, ga = class extends Error {
|
|
1487
1518
|
from;
|
|
1488
1519
|
event;
|
|
1489
1520
|
_tag = "BranchTransitionInvalid";
|
|
1490
1521
|
constructor(e, t) {
|
|
1491
1522
|
super(`invalid branch transition: ${e} --${t}-->`), this.from = e, this.event = t, this.name = "BranchTransitionInvalid";
|
|
1492
1523
|
}
|
|
1493
|
-
},
|
|
1494
|
-
let n =
|
|
1495
|
-
if (n === void 0) throw new
|
|
1524
|
+
}, _a = (e, t) => {
|
|
1525
|
+
let n = ha[e][t];
|
|
1526
|
+
if (n === void 0) throw new ga(e, t);
|
|
1496
1527
|
return n;
|
|
1497
|
-
},
|
|
1498
|
-
if (n === "copy" && (r === void 0 || r === "")) throw new
|
|
1528
|
+
}, va = (e, t, n, r) => {
|
|
1529
|
+
if (n === "copy" && (r === void 0 || r === "")) throw new Y("seed 'copy' requires a parentNamespace to snapshot from");
|
|
1499
1530
|
let i = [{
|
|
1500
1531
|
kind: "create-namespace",
|
|
1501
1532
|
detail: e
|
|
@@ -1515,13 +1546,13 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1515
1546
|
detail: `run boot seeds into ${e}`
|
|
1516
1547
|
});
|
|
1517
1548
|
return i;
|
|
1518
|
-
},
|
|
1519
|
-
if (!
|
|
1549
|
+
}, ya = (e) => {
|
|
1550
|
+
if (!ma(e)) throw new Y(`refusing to plan teardown of '${e}' — not a branch namespace`);
|
|
1520
1551
|
return [{
|
|
1521
1552
|
kind: "drop-namespace",
|
|
1522
1553
|
detail: e
|
|
1523
1554
|
}];
|
|
1524
|
-
},
|
|
1555
|
+
}, ba = (e) => {
|
|
1525
1556
|
if (e === void 0 || e === "") return !1;
|
|
1526
1557
|
try {
|
|
1527
1558
|
let t = new URL(e).hostname.toLowerCase();
|
|
@@ -1529,27 +1560,27 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1529
1560
|
} catch {
|
|
1530
1561
|
return /\bneon\.(tech|build)\b/i.test(e);
|
|
1531
1562
|
}
|
|
1532
|
-
},
|
|
1563
|
+
}, xa = (e) => e.prefer === void 0 ? e.seed === "copy" && ba(e.dbUrl) ? "neon-cow" : "namespace" : e.prefer, Sa = (e, t = {}) => [{
|
|
1533
1564
|
kind: "neon-branch-create",
|
|
1534
1565
|
detail: `${t.parentBranch ?? "main"} → ${e} (copy-on-write)`
|
|
1535
|
-
}],
|
|
1536
|
-
if (!
|
|
1566
|
+
}], Ca = (e) => {
|
|
1567
|
+
if (!ma(e)) throw new Y(`refusing to plan teardown of '${e}' — not a branch namespace`);
|
|
1537
1568
|
return [{
|
|
1538
1569
|
kind: "neon-branch-delete",
|
|
1539
1570
|
detail: e
|
|
1540
1571
|
}];
|
|
1541
|
-
},
|
|
1572
|
+
}, wa = (e) => e.mechanism === "neon-cow" ? Sa(e.branchId, e.neonParentBranch === void 0 ? {} : { parentBranch: e.neonParentBranch }) : va(e.branchId, e.tableNames, e.seed, e.parentNamespace), Ta = (e, t) => e === "neon-cow" ? Ca(t) : ya(t), Ea = (e, t, n) => {
|
|
1542
1573
|
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);
|
|
1543
1574
|
return {
|
|
1544
1575
|
evict: i,
|
|
1545
1576
|
rejectNew: r.filter((e) => !a.has(e.namespace)).length >= t.maxBranches
|
|
1546
1577
|
};
|
|
1547
|
-
},
|
|
1548
|
-
let n =
|
|
1578
|
+
}, Da = async (e, t) => {
|
|
1579
|
+
let n = pa(e.appSlug, e.prNumber), r = xa({
|
|
1549
1580
|
seed: e.seed,
|
|
1550
1581
|
...e.dbUrl === void 0 ? {} : { dbUrl: e.dbUrl },
|
|
1551
1582
|
...e.prefer === void 0 ? {} : { prefer: e.prefer }
|
|
1552
|
-
}), i =
|
|
1583
|
+
}), i = wa({
|
|
1553
1584
|
mechanism: r,
|
|
1554
1585
|
branchId: n,
|
|
1555
1586
|
tableNames: e.tableNames,
|
|
@@ -1574,33 +1605,33 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1574
1605
|
mechanism: r,
|
|
1575
1606
|
steps: i
|
|
1576
1607
|
};
|
|
1577
|
-
},
|
|
1578
|
-
let r =
|
|
1608
|
+
}, Oa = async (e, t, n) => {
|
|
1609
|
+
let r = Ta(t, e);
|
|
1579
1610
|
return t === "neon-cow" ? await n.neonBranchDelete(e) : await n.dropNamespace(e), r;
|
|
1580
|
-
},
|
|
1611
|
+
}, ka = (e, t, n) => Ea(e, t, n), X = (e) => `"${e.replace(/"/g, "\"\"")}"`, Aa = (e) => {
|
|
1581
1612
|
let t = () => {
|
|
1582
1613
|
throw Error("namespace branch executor: Neon ops require a neon-cow executor (use a Neon connection for copy-on-write branches)");
|
|
1583
1614
|
};
|
|
1584
1615
|
return {
|
|
1585
|
-
createNamespace: (t) => e.run(`CREATE SCHEMA IF NOT EXISTS ${
|
|
1586
|
-
createTable: (t, n) => e.run(`CREATE TABLE IF NOT EXISTS ${
|
|
1587
|
-
copyTable: (t, n, r) => e.run(`INSERT INTO ${
|
|
1588
|
-
dropNamespace: (t) => e.run(`DROP SCHEMA IF EXISTS ${
|
|
1616
|
+
createNamespace: (t) => e.run(`CREATE SCHEMA IF NOT EXISTS ${X(t)}`),
|
|
1617
|
+
createTable: (t, n) => e.run(`CREATE TABLE IF NOT EXISTS ${X(t)}.${X(n)} (LIKE ${X(n)} INCLUDING ALL)`),
|
|
1618
|
+
copyTable: (t, n, r) => e.run(`INSERT INTO ${X(n)}.${X(r)} SELECT * FROM ${X(t)}.${X(r)}`),
|
|
1619
|
+
dropNamespace: (t) => e.run(`DROP SCHEMA IF EXISTS ${X(t)} CASCADE`),
|
|
1589
1620
|
neonBranchCreate: t,
|
|
1590
1621
|
neonBranchDelete: t
|
|
1591
1622
|
};
|
|
1592
|
-
},
|
|
1623
|
+
}, ja = class extends Error {
|
|
1593
1624
|
_tag = "TenantResidencyUnresolved";
|
|
1594
1625
|
constructor(e) {
|
|
1595
1626
|
super(e), this.name = "TenantResidencyUnresolved";
|
|
1596
1627
|
}
|
|
1597
|
-
},
|
|
1628
|
+
}, Ma = class extends Error {
|
|
1598
1629
|
region;
|
|
1599
1630
|
_tag = "TenantRegionUnavailable";
|
|
1600
1631
|
constructor(e, t) {
|
|
1601
1632
|
super(t), this.region = e, this.name = "TenantRegionUnavailable";
|
|
1602
1633
|
}
|
|
1603
|
-
},
|
|
1634
|
+
}, Na, Pa = (e) => {
|
|
1604
1635
|
if (e.homes === void 0) throw Error("setResidencyConfig: `homes` is required");
|
|
1605
1636
|
if (e.servableRegions === void 0 || e.servableRegions.length === 0) throw Error("setResidencyConfig: `servableRegions` must be non-empty (which regions this deployment serves)");
|
|
1606
1637
|
let t = /* @__PURE__ */ new Map();
|
|
@@ -1609,98 +1640,98 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1609
1640
|
if (e !== void 0 && e !== n.region) throw Error(`residency: tenant '${n.tenantId}' is mapped to two regions ('${e}' and '${n.region}')`);
|
|
1610
1641
|
t.set(n.tenantId, n.region);
|
|
1611
1642
|
}
|
|
1612
|
-
return
|
|
1613
|
-
},
|
|
1614
|
-
|
|
1615
|
-
},
|
|
1616
|
-
if (e == null || e === "") throw new
|
|
1643
|
+
return Na = e, e;
|
|
1644
|
+
}, Fa = () => Na, Ia = () => {
|
|
1645
|
+
Na = void 0;
|
|
1646
|
+
}, La = (e, t) => {
|
|
1647
|
+
if (e == null || e === "") throw new ja("residency is on but the request has no resolvable tenant — refusing to bind a store");
|
|
1617
1648
|
let n = t.homes.find((t) => t.tenantId === e);
|
|
1618
|
-
if (n === void 0) throw new
|
|
1649
|
+
if (n === void 0) throw new ja(`no residency home is mapped for tenant '${e}' — refusing to fall back to a default store (would be a residency violation)`);
|
|
1619
1650
|
return n;
|
|
1620
|
-
},
|
|
1621
|
-
let n =
|
|
1651
|
+
}, Ra = (e, t) => t.servableRegions.includes(e), za = (e, t) => {
|
|
1652
|
+
let n = La(e.tenantId, t), r = kn(n.tenantId);
|
|
1622
1653
|
return {
|
|
1623
1654
|
region: n.region,
|
|
1624
1655
|
namespace: r,
|
|
1625
1656
|
...n.connectionKey === void 0 ? {} : { connectionKey: n.connectionKey }
|
|
1626
1657
|
};
|
|
1627
|
-
},
|
|
1628
|
-
let r =
|
|
1629
|
-
if (!
|
|
1658
|
+
}, Ba = (e, t, n) => {
|
|
1659
|
+
let r = za(e, t);
|
|
1660
|
+
if (!Ra(r.region, t)) throw new Ma(r.region, `tenant homed in region '${r.region}', which this deployment does not serve — route to the home region`);
|
|
1630
1661
|
let i = n.get(r.region);
|
|
1631
|
-
if (i === void 0) throw new
|
|
1662
|
+
if (i === void 0) throw new Ma(r.region, `no store handle for home region '${r.region}' (declared servable but not wired) — failing closed`);
|
|
1632
1663
|
return {
|
|
1633
1664
|
store: i,
|
|
1634
1665
|
placement: r
|
|
1635
1666
|
};
|
|
1636
|
-
},
|
|
1637
|
-
let { store: i, placement: a } =
|
|
1667
|
+
}, Va = async (e, t, n, r) => {
|
|
1668
|
+
let { store: i, placement: a } = Ba(e, t, n);
|
|
1638
1669
|
return await r(i, a), a;
|
|
1639
|
-
},
|
|
1670
|
+
}, Ha = (e) => {
|
|
1640
1671
|
if (typeof e == "string") return e;
|
|
1641
1672
|
if ("jsonPath" in e) {
|
|
1642
1673
|
let { column: t, path: n, numeric: r } = e.jsonPath;
|
|
1643
1674
|
return `(json:${t}->${n.join(".")}${r ? "::num" : ""})`;
|
|
1644
1675
|
}
|
|
1645
1676
|
return `(${e.expr})`;
|
|
1646
|
-
},
|
|
1677
|
+
}, Z = (e) => e.map(Ha), Ua = (e, t) => {
|
|
1647
1678
|
if (e.length !== t.length) return !1;
|
|
1648
|
-
for (let n = 0; n < e.length; n++) if (
|
|
1679
|
+
for (let n = 0; n < e.length; n++) if (Ha(e[n]) !== Ha(t[n])) return !1;
|
|
1649
1680
|
return !0;
|
|
1650
|
-
},
|
|
1681
|
+
}, Wa = (e, t) => {
|
|
1651
1682
|
if (e.length >= t.length) return !1;
|
|
1652
|
-
for (let n = 0; n < e.length; n++) if (
|
|
1683
|
+
for (let n = 0; n < e.length; n++) if (Ha(e[n]) !== Ha(t[n])) return !1;
|
|
1653
1684
|
return !0;
|
|
1654
|
-
},
|
|
1685
|
+
}, Ga = (e) => {
|
|
1655
1686
|
let t = [], n = e.appliedIndexes, r = e.tableName;
|
|
1656
1687
|
for (let e = 0; e < n.length; e++) {
|
|
1657
1688
|
let i = n[e];
|
|
1658
1689
|
for (let a = e + 1; a < n.length; a++) {
|
|
1659
1690
|
let e = n[a];
|
|
1660
|
-
if (
|
|
1691
|
+
if (Ua(i.fields, e.fields)) {
|
|
1661
1692
|
let [n, a] = i.name < e.name ? [i, e] : [e, i];
|
|
1662
1693
|
t.push({
|
|
1663
1694
|
kind: "duplicate-fields",
|
|
1664
1695
|
table: r,
|
|
1665
1696
|
redundant: n,
|
|
1666
1697
|
coveredBy: a,
|
|
1667
|
-
message: `'${r}' has two indexes on the same fields [${
|
|
1698
|
+
message: `'${r}' has two indexes on the same fields [${Z(i.fields).join(", ")}]: '${i.name}' and '${e.name}'. The B-tree engine builds both, costing write throughput + disk space for no read benefit. Drop '${n.name}' (or '${a.name}' if you prefer the other name). Applies to every supported dialect (Postgres / MySQL / MariaDB / MSSQL / SQLite).`
|
|
1668
1699
|
});
|
|
1669
1700
|
continue;
|
|
1670
1701
|
}
|
|
1671
|
-
|
|
1702
|
+
Wa(i.fields, e.fields) ? t.push({
|
|
1672
1703
|
kind: "redundant-prefix",
|
|
1673
1704
|
table: r,
|
|
1674
1705
|
redundant: i,
|
|
1675
1706
|
coveredBy: e,
|
|
1676
|
-
message: `'${r}' index '${i.name}' on [${
|
|
1677
|
-
}) :
|
|
1707
|
+
message: `'${r}' index '${i.name}' on [${Z(i.fields).join(", ")}] is a leading prefix of '${e.name}' on [${Z(e.fields).join(", ")}]. Every B-tree dialect we support (Postgres / MySQL / MariaDB / MSSQL / SQLite) can serve a [${Z(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).`
|
|
1708
|
+
}) : Wa(e.fields, i.fields) && t.push({
|
|
1678
1709
|
kind: "redundant-prefix",
|
|
1679
1710
|
table: r,
|
|
1680
1711
|
redundant: e,
|
|
1681
1712
|
coveredBy: i,
|
|
1682
|
-
message: `'${r}' index '${e.name}' on [${
|
|
1713
|
+
message: `'${r}' index '${e.name}' on [${Z(e.fields).join(", ")}] is a leading prefix of '${i.name}' on [${Z(i.fields).join(", ")}]. Every B-tree dialect we support (Postgres / MySQL / MariaDB / MSSQL / SQLite) can serve a [${Z(e.fields).join(", ")}] query from '${i.name}' too via the leading-prefix rule, so '${e.name}' adds write cost without read benefit. Drop '${e.name}' — unless you specifically need a smaller index for cache locality on a write-heavy table (rare; profile first).`
|
|
1683
1714
|
});
|
|
1684
1715
|
}
|
|
1685
1716
|
}
|
|
1686
1717
|
return t;
|
|
1687
|
-
},
|
|
1718
|
+
}, Ka = (e) => {
|
|
1688
1719
|
let t = [];
|
|
1689
|
-
for (let n of e) t.push(...
|
|
1720
|
+
for (let n of e) t.push(...Ga(n));
|
|
1690
1721
|
return t;
|
|
1691
|
-
},
|
|
1692
|
-
let n = t.color ?? !0, r = t.indent ?? " ", i = (e) =>
|
|
1722
|
+
}, qa = "\x1B[", Ja = `${qa}38;2;245;158;11m`, Ya = `${qa}38;2;16;185;129m`, Xa = (e, t) => `${e}${t}${D.reset}`, Q = (e, t, n) => e ? typeof t == "function" ? t(n) : Xa(t, n) : n, Za = (e, t = {}) => {
|
|
1723
|
+
let n = t.color ?? !0, r = t.indent ?? " ", i = (e) => Q(n, D.dim, e.padEnd(11)), a = (e) => Q(n, (e) => D.bold(D.brand(e)), e), o = (e) => Q(n, D.brightRed24, e), s = (e) => Q(n, Ya, e), c = (e) => Q(n, Ja, e), l = (e) => Q(n, D.dim, e), u = `${c("index audit")} ${l("·")} ${Q(n, D.bold, e.kind)}`, d = e.redundant.fields.length, f = Z(e.coveredBy.fields.slice(d)), p = (e, t) => {
|
|
1693
1724
|
let n = e.slice(0, t), r = e.slice(t), i = [];
|
|
1694
1725
|
return n.length > 0 && i.push(s(`[${n.join(", ")}]`)), r.length > 0 && i.push(c(`+ [${r.join(", ")}]`)), i.join(" ");
|
|
1695
1726
|
}, m = [];
|
|
1696
|
-
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(
|
|
1697
|
-
},
|
|
1727
|
+
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(Z(e.redundant.fields), d)}`), m.push(""), m.push(`${i("covered by")}${s(e.coveredBy.name)}`), m.push(`${i("")}${p(Z(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 ${Q(n, D.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");
|
|
1728
|
+
}, Qa = (e, t) => ({
|
|
1698
1729
|
name: e,
|
|
1699
1730
|
body: t
|
|
1700
|
-
}),
|
|
1731
|
+
}), $a = (e) => {
|
|
1701
1732
|
if (e.lifecycle === "cron" && !e.cron) throw Error(`seed "${e.id}": lifecycle 'cron' requires a 'cron' field`);
|
|
1702
1733
|
if (e.lifecycle === "onSchemaChange" && (!e.watchedTables || e.watchedTables.length === 0)) throw Error(`seed "${e.id}": lifecycle 'onSchemaChange' requires at least one entry in 'watchedTables'`);
|
|
1703
|
-
let t = e.steps({ step:
|
|
1734
|
+
let t = e.steps({ step: Qa });
|
|
1704
1735
|
if (t.length === 0) throw Error(`seed "${e.id}": at least one step is required`);
|
|
1705
1736
|
return {
|
|
1706
1737
|
__seed: !0,
|
|
@@ -1712,13 +1743,13 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1712
1743
|
...e.fingerprint === void 0 ? {} : { fingerprint: e.fingerprint },
|
|
1713
1744
|
steps: t
|
|
1714
1745
|
};
|
|
1715
|
-
},
|
|
1746
|
+
}, eo = (e) => typeof e == "object" && !!e && "__seed" in e && e.__seed === !0, to = (e, { apply: t, undo: n }) => ({
|
|
1716
1747
|
name: e,
|
|
1717
1748
|
apply: t,
|
|
1718
1749
|
undo: n
|
|
1719
|
-
}),
|
|
1750
|
+
}), no = (e) => {
|
|
1720
1751
|
if (!/^\d{14}_/.test(e.id)) throw Error(`migration "${e.id}": id must start with a 14-digit timestamp followed by "_" (convention: <YYYYMMDDHHMMSS>_<slug>)`);
|
|
1721
|
-
let t = e.steps({ step:
|
|
1752
|
+
let t = e.steps({ step: to });
|
|
1722
1753
|
if (t.length === 0) throw Error(`migration "${e.id}": at least one step is required`);
|
|
1723
1754
|
return {
|
|
1724
1755
|
__migration: !0,
|
|
@@ -1726,7 +1757,7 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1726
1757
|
name: e.name,
|
|
1727
1758
|
steps: t
|
|
1728
1759
|
};
|
|
1729
|
-
},
|
|
1760
|
+
}, ro = (e) => typeof e == "object" && !!e && "__migration" in e && e.__migration === !0, io = _("_voltro_migrations", {
|
|
1730
1761
|
id: T({ prefix: "mig" }),
|
|
1731
1762
|
name: x(),
|
|
1732
1763
|
hash: x(),
|
|
@@ -1738,7 +1769,7 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1738
1769
|
workflowRunId: x().nullable(),
|
|
1739
1770
|
createdAt: d().default("now"),
|
|
1740
1771
|
updatedAt: d().default("now").onUpdate("now")
|
|
1741
|
-
}).index(["status"]),
|
|
1772
|
+
}).index(["status"]), ao = _("_voltro_seeds", {
|
|
1742
1773
|
id: T({ prefix: "seed" }),
|
|
1743
1774
|
name: x(),
|
|
1744
1775
|
lifecycle: x(),
|
|
@@ -1754,7 +1785,7 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1754
1785
|
workflowRunId: x().nullable(),
|
|
1755
1786
|
createdAt: d().default("now"),
|
|
1756
1787
|
updatedAt: d().default("now").onUpdate("now")
|
|
1757
|
-
}).index(["lifecycle"]).index(["nextRunAt"]),
|
|
1788
|
+
}).index(["lifecycle"]).index(["nextRunAt"]), oo = _("_voltro_migration_plans", {
|
|
1758
1789
|
id: T({ prefix: "plan" }),
|
|
1759
1790
|
fingerprint: x(),
|
|
1760
1791
|
liveFingerprint: x().nullable(),
|
|
@@ -1770,21 +1801,21 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1770
1801
|
appliedAt: d().default("now"),
|
|
1771
1802
|
createdAt: d().default("now"),
|
|
1772
1803
|
updatedAt: d().default("now").onUpdate("now")
|
|
1773
|
-
}).index(["fingerprint"]).index(["environment"]),
|
|
1804
|
+
}).index(["fingerprint"]).index(["environment"]), so = _("_voltro_idempotency", {
|
|
1774
1805
|
id: T({ prefix: "idem" }),
|
|
1775
1806
|
scope: x(),
|
|
1776
1807
|
key: x(),
|
|
1777
1808
|
status: x(),
|
|
1778
1809
|
response: s().nullable(),
|
|
1779
1810
|
createdAt: d().default("now")
|
|
1780
|
-
}).unique(["scope", "key"]).index(["createdAt"]),
|
|
1811
|
+
}).unique(["scope", "key"]).index(["createdAt"]), co = _("_voltro_kv", {
|
|
1781
1812
|
id: T({ prefix: "kv" }),
|
|
1782
1813
|
key: x().unique(),
|
|
1783
1814
|
value: x().nullable(),
|
|
1784
1815
|
expiresAt: d().nullable(),
|
|
1785
1816
|
createdAt: d().default("now"),
|
|
1786
1817
|
updatedAt: d().default("now").onUpdate("now")
|
|
1787
|
-
}).index(["expiresAt"]),
|
|
1818
|
+
}).index(["expiresAt"]), lo = _("_voltro_api_keys", {
|
|
1788
1819
|
id: T({ prefix: "apikey" }),
|
|
1789
1820
|
tenantId: x().nullable(),
|
|
1790
1821
|
name: x(),
|
|
@@ -1799,72 +1830,72 @@ var bt = (e) => e === "mysql" || e === "mariadb" || e === "mssql" || e === "sqli
|
|
|
1799
1830
|
onBehalfOf: x().nullable(),
|
|
1800
1831
|
metadata: s().nullable(),
|
|
1801
1832
|
createdAt: d().default("now")
|
|
1802
|
-
}).index("byApiKeyTenant", ["tenantId"]),
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
],
|
|
1833
|
+
}).index("byApiKeyTenant", ["tenantId"]), uo = [
|
|
1834
|
+
io,
|
|
1835
|
+
ao,
|
|
1836
|
+
oo
|
|
1837
|
+
], $ = "id", fo = (e, t) => {
|
|
1807
1838
|
let n = S(e);
|
|
1808
1839
|
if (n === void 0) return t;
|
|
1809
|
-
let r = n.fields[
|
|
1810
|
-
if (r === void 0 || t[
|
|
1840
|
+
let r = n.fields[$]?.idScheme;
|
|
1841
|
+
if (r === void 0 || t[$] != null) return t;
|
|
1811
1842
|
if (r.kind === "numeric") {
|
|
1812
|
-
if (!(
|
|
1843
|
+
if (!($ in t)) return t;
|
|
1813
1844
|
let e = { ...t };
|
|
1814
|
-
return delete e[
|
|
1845
|
+
return delete e[$], e;
|
|
1815
1846
|
}
|
|
1816
1847
|
let i = ae(r, e);
|
|
1817
1848
|
return i === null ? t : {
|
|
1818
1849
|
...t,
|
|
1819
|
-
[
|
|
1850
|
+
[$]: i
|
|
1820
1851
|
};
|
|
1821
|
-
},
|
|
1852
|
+
}, po = (e, t) => t.map((t) => fo(e, t)), mo = (e, t) => {
|
|
1822
1853
|
let n = [], r = t;
|
|
1823
1854
|
for (let [t, i] of Object.entries(e.fields)) {
|
|
1824
1855
|
let e = i;
|
|
1825
1856
|
e.nullable || e.hasDefault || e.idScheme !== void 0 || e.generatedAs !== void 0 || (r[t] === void 0 || r[t] === null) && n.push(t);
|
|
1826
1857
|
}
|
|
1827
1858
|
return n;
|
|
1828
|
-
},
|
|
1859
|
+
}, ho = (e, t) => {
|
|
1829
1860
|
let n = t;
|
|
1830
1861
|
return e.filter((e) => n[e] === void 0 || n[e] === null);
|
|
1831
|
-
},
|
|
1862
|
+
}, go = (e, t, n) => e.insert(t.tableName, n), _o = (e, t, n, r) => e.upsert(t.tableName, n, {
|
|
1832
1863
|
conflictColumns: r.conflictColumns,
|
|
1833
1864
|
...r.update === void 0 ? {} : { update: r.update }
|
|
1834
|
-
}),
|
|
1865
|
+
}), vo = (e, t, n, r) => e.updateMany(t.tableName, n, { where: r.where }), yo = 512, bo = (e) => {
|
|
1835
1866
|
e.setMaxListeners(512);
|
|
1836
|
-
},
|
|
1867
|
+
}, xo = (e, t, n) => ({
|
|
1837
1868
|
_tag: "PrimaryKeyConflictError",
|
|
1838
1869
|
table: e,
|
|
1839
1870
|
key: t,
|
|
1840
1871
|
cause: n
|
|
1841
|
-
}),
|
|
1872
|
+
}), So = (e) => typeof e == "object" && !!e && e._tag === "PrimaryKeyConflictError", Co = /* @__PURE__ */ new Map(), wo = (e) => {
|
|
1842
1873
|
if (!e.table || !e.timeColumn) throw Error("registerRetention: table + timeColumn are required");
|
|
1843
1874
|
if (!Number.isFinite(e.ttlMs) || e.ttlMs <= 0) throw Error(`registerRetention(${e.table}): ttlMs must be a positive number`);
|
|
1844
|
-
|
|
1845
|
-
},
|
|
1875
|
+
Co.set(e.table, e);
|
|
1876
|
+
}, To = () => [...Co.values()], Eo = () => Co.clear(), Do = async (e, t, n, r = 2e4) => {
|
|
1846
1877
|
let i = new Date(t - e.ttlMs), a = 0;
|
|
1847
1878
|
for (;;) {
|
|
1848
1879
|
let t = await n(e.table, e.timeColumn, i, r, e.where);
|
|
1849
1880
|
if (a += t, t < r) break;
|
|
1850
1881
|
}
|
|
1851
1882
|
return a;
|
|
1852
|
-
},
|
|
1883
|
+
}, Oo = (e, t) => {
|
|
1853
1884
|
let n = Number(e ?? String(t));
|
|
1854
1885
|
return (Number.isFinite(n) && n > 0 ? n : t) * 36e5;
|
|
1855
|
-
},
|
|
1886
|
+
}, ko = "_voltro_cdc_offsets", Ao = _(ko, {
|
|
1856
1887
|
id: T({ prefix: "cdcoff" }),
|
|
1857
1888
|
replicaId: x(),
|
|
1858
1889
|
streamName: x(),
|
|
1859
1890
|
binlogFile: x(),
|
|
1860
1891
|
binlogPosition: x(),
|
|
1861
1892
|
updatedAt: d()
|
|
1862
|
-
}).index(["replicaId"]),
|
|
1893
|
+
}).index(["replicaId"]), jo = _(ko, {
|
|
1863
1894
|
id: T({ prefix: "cdcoff" }),
|
|
1864
1895
|
replicaId: x(),
|
|
1865
1896
|
streamName: x(),
|
|
1866
1897
|
ctVersion: x(),
|
|
1867
1898
|
updatedAt: d()
|
|
1868
|
-
}).index(["replicaId"]),
|
|
1899
|
+
}).index(["replicaId"]), Mo = "postgres";
|
|
1869
1900
|
//#endregion
|
|
1870
|
-
export { de as AUTO_FILLED_COLUMNS,
|
|
1901
|
+
export { de as AUTO_FILLED_COLUMNS, Y as BranchNameInvalid, ga as BranchTransitionInvalid, ko as CDC_OFFSETS_TABLE, yo as CHANGE_LISTENER_CEILING, qe as ColumnBuilder, wt as ENCRYPTED_PREFIX, Mo as ENGINE, dn as EagerCardinalityError, Me as FILE_MIGRATION_PATTERN, Ze as FRAMEWORK_LIVE_TABLES, Tt as FieldDecryptionError, ta as INITIAL_VERSION, li as MATCHES_NO_ROWS, Ue as MAX_IDENTIFIER_LENGTH, yt as SqlClient, ia as TableStreamError, Tn as TenantNamespaceInvalid, wn as TenantNamespaceUnresolved, Ma as TenantRegionUnavailable, ja as TenantResidencyUnresolved, na as VOLTRO_EXPIRES_MIXIN_ID, Zi as VersionConflict, Ye as WARN_IDENTIFIER_LENGTH, lo as _voltroApiKeysTable, Ao as _voltroCdcOffsetsTable, so as _voltroIdempotencyTable, co as _voltroKvTable, oo as _voltroMigrationPlansTable, io as _voltroMigrationsTable, jo as _voltroMssqlCdcOffsetsTable, ao as _voltroSeedsTable, Yr as actorsTable, ka as admitBranch, ze as allEnumRenames, $t as allRegisteredRelations, u as allRegisteredTables, pi as and, Ve as array, oi as arrayContains, ci as arrayHas, si as arrayOverlaps, pn as attachEagerLoads, Oi as attributionFields, Mi as attributionKey, Ka as auditAllTableIndexes, Ga as auditTableIndexes, Ee as avg, Ke as avgOver, Bi as beginLocalWrite, je as bigint, Ba as bindResidentStore, ke as boolean, pa as branchNamespaceName, ge as bytes, Fi as claimPendingAttribution, et as clearEnumRenames, Ui as clearPendingAttribution, tn as clearRelationsRegistry, Ia as clearResidencyConfig, Eo as clearRetentions, m as clearTableRegistry, qi as clearWriteRecorders, Nn as coercePredicateValue, Pn as coercePredicateValues, wi as collectSubqueries, Be as column, jt as columnSchema, Kn as compileEagerJson, M as compilePredicate, Fn as compileRawFragment, N as compileSelect, la as computeEmbedding, ii as contains, Ae as count, Oe as countDistinct, Di as currentWriteAttribution, he as databaseHandle, nt as date, st as dbEnum, be as decimal, we as declareEnumRename, cn as decodeRowsFromSchema, At as decryptFieldsOnRead, no as defineMigration, g as defineMixin, $a as defineSeed, tt as denseRank, me as deriveTypeIdPrefix, Ct as deserializeArraysOnRead, Ne as drainIdentifierWarnings, at as dropped, un as encodeRowForSchema, kt as encryptFieldsForWrite, Ot as encryptedColumnsOf, Vi as endLocalWrite, Ea as enforceBranchLimits, ee as ensureTableRegistered, Xr as eq, j as escapeLike, Ci as evaluatePredicate, ot as except, bi as exists, ra as expires, Za as formatIndexAuditIssue, uo as frameworkTables, ae as generateId, Te as generateSnowflake, se as geography, a as geometry, De as getEnumRenames, Qt as getRelation, Zt as getRelations, Fa as getResidencyConfig, S as getTable, Qr as gt, $r as gte, Cn as hasEagerLoads, ca as hybridSearch, T as id, ni as inSet, vi as inSubquery, O as inferForeignKey, go as insertRow, C as integer, ye as intersect, l as interval, ma as isBranchNamespace, zt as isEmptyRelationsSpec, Dt as isEncrypted, Et as isFieldDecryptionError, _e as isFileMigration, He as isFrameworkOwnedLiveTable, ro as isMigrationDefinition, ba as isNeonConnection, di as isNotNull, ui as isNull, So as isPrimaryKeyConflictError, Ra as isRegionServable, Bt as isRelationsSpec, eo as isSeedDefinition, p as isSqliteFamily, ct as isTableReactive, xe as isView, s as json, gi as jsonField, f as jsonIndex, it as lag, oe as lead, To as listRetentions, ei as lt, ti as lte, Aa as makeNamespaceBranchExecutor, Ht as many, Ut as manyToMany, b as materializeFields, i as max, We as migration, rt as min, ho as missingConflictColumns, mo as missingRequiredColumns, pe as mixin, Zr as neq, _a as nextBranchState, hi as not, xi as notExists, ri as notInSet, yi as notInSubquery, Le as numeric, Vt as one, fn as oneCardinalityMessage, mi as or, ce as paginateBy, c as paginateById, Wi as pendingAttributionCount, wa as planBranch, va as planBranchProvision, ya as planBranchTeardown, Ta as planBranchTeardownFor, Sa as planNeonBranchProvision, Ca as planNeonBranchTeardown, $i as planVersionedUpdate, xo as primaryKeyConflictError, Da as provisionBranch, Va as provisionResidentTenant, An as qualifyTable, o as queryFor, Re as queryForView, le as quoteIdent, bo as raiseChangeListenerCeiling, re as rank, n as raw, Fe as real, Ji as recordsTable, te as reference, Gr as registerCoreTables, Xt as registerDiscoveredRelations, Pi as registerPendingAttribution, Yt as registerRelations, wo as registerRetention, r as registerTable, Gi as registerWriteRecorder, Rt as relations, qr as requireActors, ue as requireTable, Jr as requireTenants, Qe as resetSnowflake, za as residentPlacement, xa as resolveBranchMechanism, Hi as resolveEchoAttribution, Ie as resolveFullTextIndex, e as resolveIdScheme, fe as resolveMixinGraph, La as resolveTenantHome, kn as resolveTenantNamespace, Oo as retentionTtlMsFromEnv, t as rowNumber, Mt as rowSchema, Ei as runWithWriteAttribution, Yi as runWriteRecorders, On as sanitizeIdentifierFragment, St as serializeArraysForWrite, y as serverOnlyColumns, Pa as setResidencyConfig, Xi as settleTransactionExit, ea as settleVersionedUpdate, fi as spatialPredicate, fo as stampGeneratedId, po as stampGeneratedIds, ai as startsWith, sa as streamTable, Pe as sum, v as sumOver, Do as sweepRetention, _ as table, Oa as teardownBranch, x as text, d as timestamp, lt as timestampMs, ut as timestampMsOrNull, ne as union, ie as unionAll, Ki as unregisterWriteRecorder, vo as updateManyRow, _o as upsertRow, ve as validateColumnName, Ge as validateIndexName, en as validateRegisteredRelations, Kt as validateRelationConfig, Xe as validateTableName, Se as validateTypeIdPrefix, h as vector, Je as vectorDistanceToOpclass, ua as vectorEmbedding, Qi as versionColumnOf, $e as view, Ce as viewSql, Ti as walkLeaves, ki as withCapturedAttribution };
|