@voltro/database 0.82.0 → 0.83.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.
@@ -555,7 +555,7 @@ var se = () => new u({
555
555
  }, N = (e, t, n, r) => {
556
556
  if (We("index name", t), t.length > 63) throw Error(n ? `auto-named index '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Supply an explicit short name: .index('<shortName>', ${JSON.stringify([...r])}).` : `index name '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Shorten it.`);
557
557
  t.length > 60 && A(`index '${t}' on table '${e}' is ${t.length} chars — ${63 - t.length} from the 63-byte limit. ${n ? `Consider .index('<shortName>', ${JSON.stringify([...r])}) before it grows.` : ""}`);
558
- }, P = (e, t) => {
558
+ }, Ge = (e, t) => {
559
559
  if (e.length === 0) throw Error(`typeid prefix on table '${t.tableName}' cannot be empty.`);
560
560
  if (!/^[a-z][a-z0-9_]*$/.test(e)) {
561
561
  let n = t.kind === "derived" ? "the derived prefix doesn't match typeid's required shape — supply an explicit one via id({ prefix: '...' })." : "the prefix must match typeid's required shape /^[a-z][a-z0-9_]*$/.";
@@ -566,43 +566,43 @@ var se = () => new u({
566
566
  throw Error(`typeid prefix '${e}' on table '${t.tableName}' is ${e.length} chars — exceeds the 63-byte limit; ${n}`);
567
567
  }
568
568
  e.length > 60 && A(`typeid prefix '${e}' on table '${t.tableName}' is ${e.length} chars — close to the 63-byte limit. Generated ids will be even longer (prefix + '_' + 26).`);
569
- }, Ge = 1704067200000n, Ke = 10n, qe = 12n, Je = (1n << Ke) - 1n, Ye = (1n << qe) - 1n, Xe = qe, Ze = 22n, Qe = () => {
569
+ }, Ke = 1704067200000n, qe = 10n, Je = 12n, Ye = (1n << qe) - 1n, Xe = (1n << Je) - 1n, Ze = Je, Qe = 22n, $e = () => {
570
570
  let e = process.env.SNOWFLAKE_MACHINE_ID;
571
571
  if (e === void 0 || e === "") return 0n;
572
572
  let t = BigInt(e);
573
- if (t < 0n || t > Je) throw Error(`SNOWFLAKE_MACHINE_ID out of range: ${e}. Must be 0..${Je}.`);
573
+ if (t < 0n || t > Ye) throw Error(`SNOWFLAKE_MACHINE_ID out of range: ${e}. Must be 0..${Ye}.`);
574
574
  return t;
575
- }, $e = () => ({
575
+ }, et = () => ({
576
576
  lastMs: 0n,
577
577
  sequence: 0n,
578
- machineId: Qe()
579
- }), F, et = () => (F === void 0 && (F = $e()), F), tt = () => {
580
- F = $e();
581
- }, nt = () => BigInt(Date.now()), rt = (e) => {
582
- let t = nt();
583
- for (; t <= e;) t = nt();
578
+ machineId: $e()
579
+ }), tt, nt = () => (tt === void 0 && (tt = et()), tt), rt = () => {
580
+ tt = et();
581
+ }, it = () => BigInt(Date.now()), at = (e) => {
582
+ let t = it();
583
+ for (; t <= e;) t = it();
584
584
  return t;
585
- }, it = () => {
586
- let e = et(), t = nt();
587
- t === e.lastMs ? (e.sequence = e.sequence + 1n & Ye, e.sequence === 0n && (t = rt(e.lastMs), e.lastMs = t)) : (e.sequence = 0n, e.lastMs = t);
588
- let n = t - Ge;
585
+ }, ot = () => {
586
+ let e = nt(), t = it();
587
+ t === e.lastMs ? (e.sequence = e.sequence + 1n & Xe, e.sequence === 0n && (t = at(e.lastMs), e.lastMs = t)) : (e.sequence = 0n, e.lastMs = t);
588
+ let n = t - Ke;
589
589
  if (n < 0n) throw Error("Snowflake timestamp before configured epoch (2024-01-01). System clock is wrong.");
590
- return (n << Ze | e.machineId << Xe | e.sequence).toString();
591
- }, at = (e) => {
590
+ return (n << Qe | e.machineId << Ze | e.sequence).toString();
591
+ }, st = (e) => {
592
592
  let t = e.toLowerCase();
593
593
  if (t.startsWith("_")) throw Error(`cannot derive a typeid prefix for table '${e}' (table names starting with '_' are not valid typeid prefixes). Pick an explicit prefix via id({ prefix: '...' }) or use a different scheme like id({ scheme: 'numeric' }) for internal tables.`);
594
594
  if (!/^[a-z][a-z0-9_]*$/.test(t)) throw Error(`cannot derive a typeid prefix from table name '${e}' (must match [a-z][a-z0-9_]*). Pick an explicit prefix via id({ prefix: '...' }).`);
595
595
  let n = t.endsWith("ies") && t.length > 3 ? t.slice(0, -3) + "y" : t.endsWith("ses") || t.endsWith("xes") || t.endsWith("zes") || t.endsWith("shes") || t.endsWith("ches") ? t.slice(0, -2) : t.endsWith("s") && t.length > 1 ? t.slice(0, -1) : t;
596
- return P(n, {
596
+ return Ge(n, {
597
597
  kind: "derived",
598
598
  tableName: e
599
599
  }), n;
600
- }, ot = (e, t) => {
600
+ }, ct = (e, t) => {
601
601
  if (e === void 0) return {
602
602
  kind: "typeid",
603
- prefix: at(t)
603
+ prefix: st(t)
604
604
  };
605
- if ("prefix" in e && !("scheme" in e)) return P(e.prefix, {
605
+ if ("prefix" in e && !("scheme" in e)) return Ge(e.prefix, {
606
606
  kind: "explicit",
607
607
  tableName: t
608
608
  }), {
@@ -612,8 +612,8 @@ var se = () => new u({
612
612
  if (!("scheme" in e)) throw Error("invalid id() options: no scheme or prefix");
613
613
  switch (e.scheme) {
614
614
  case "typeid": {
615
- let n = e.prefix ?? at(t);
616
- return e.prefix !== void 0 && P(e.prefix, {
615
+ let n = e.prefix ?? st(t);
616
+ return e.prefix !== void 0 && Ge(e.prefix, {
617
617
  kind: "explicit",
618
618
  tableName: t
619
619
  }), {
@@ -629,22 +629,22 @@ var se = () => new u({
629
629
  generate: e.generate
630
630
  };
631
631
  }
632
- }, st = (e, t) => {
632
+ }, lt = (e, t) => {
633
633
  switch (e.kind) {
634
634
  case "typeid": return i(e.prefix).toString();
635
635
  case "ulid": return a();
636
636
  case "numeric": return null;
637
- case "snowflake": return it();
637
+ case "snowflake": return ot();
638
638
  case "custom": return e.generate(t);
639
639
  }
640
- }, ct = (e) => ({
640
+ }, ut = (e) => ({
641
641
  fields: C(e.fields),
642
642
  ...e.id === void 0 ? {} : { id: e.id },
643
643
  ...e.requires === void 0 ? {} : { requires: e.requires },
644
644
  ...e.indexes === void 0 ? {} : { indexes: e.indexes },
645
645
  ...e.behaviors === void 0 ? {} : { behaviors: e.behaviors },
646
646
  ...e.policies === void 0 ? {} : { policies: e.policies }
647
- }), lt = ct, ut = (e) => {
647
+ }), dt = ut, ft = (e) => {
648
648
  let t = /* @__PURE__ */ new Set(), n = [], r = (e) => {
649
649
  let i = e.id ?? e;
650
650
  if (!t.has(i)) {
@@ -654,7 +654,7 @@ var se = () => new u({
654
654
  };
655
655
  for (let t of e) r(t);
656
656
  return n;
657
- }, dt = (e, ...t) => {
657
+ }, pt = (e, ...t) => {
658
658
  if (t.length === 0) throw Error(`jsonIndex("${e}"): at least one path segment is required`);
659
659
  let n = (r) => ({
660
660
  jsonPath: {
@@ -665,14 +665,14 @@ var se = () => new u({
665
665
  numeric: () => n(!0)
666
666
  });
667
667
  return n(!1);
668
- }, ft = (e = "cosine", t = "float32") => {
668
+ }, mt = (e = "cosine", t = "float32") => {
669
669
  let n = t === "half" ? "halfvec" : "vector";
670
670
  switch (e) {
671
671
  case "cosine": return `${n}_cosine_ops`;
672
672
  case "l2": return `${n}_l2_ops`;
673
673
  case "inner": return `${n}_ip_ops`;
674
674
  }
675
- }, pt = [
675
+ }, ht = [
676
676
  "id",
677
677
  "tenantId",
678
678
  "createdAt",
@@ -681,7 +681,7 @@ var se = () => new u({
681
681
  "updatedBy",
682
682
  "deletedAt",
683
683
  "deletedBy"
684
- ], mt = (e) => e.id ?? `<anonymous mixin: ${Object.keys(e.fields).join(", ")}>`, ht = (e, t) => `${e}_${t.join("_")}_idx`, gt = (e, t) => `${e}_${t.join("_")}_uq`, _t = (e, t, n, r, i) => {
684
+ ], gt = (e) => e.id ?? `<anonymous mixin: ${Object.keys(e.fields).join(", ")}>`, _t = (e, t) => `${e}_${t.join("_")}_idx`, vt = (e, t) => `${e}_${t.join("_")}_uq`, yt = (e, t, n, r, i) => {
685
685
  if (n !== "hnsw") return;
686
686
  if (r.length !== 1) throw Error(`hnsw index '${t}' on table '${e}' must cover exactly one vector column — got ${r.length} fields. pgvector's HNSW access method indexes a single vector column.`);
687
687
  let a = r[0];
@@ -689,14 +689,14 @@ var se = () => new u({
689
689
  let o = i[a];
690
690
  if (o === void 0) throw Error(`hnsw index '${t}' on table '${e}' references unknown column '${a}'.`);
691
691
  if (o.type !== "vector") throw Error(`hnsw index '${t}' on table '${e}' requires a vector() column — column '${a}' is '${o.type}'. HNSW is the pgvector approximate-nearest-neighbour method and only applies to vectors.`);
692
- }, vt = (e, t) => {
692
+ }, bt = (e, t) => {
693
693
  let n;
694
694
  for (let [r, i] of Object.entries(e)) i.type === "id" && i.idScheme === void 0 && (n === void 0 && (n = { ...e }), n[r] = {
695
695
  ...i,
696
- idScheme: ot(i.idSchemeInput, t)
696
+ idScheme: ct(i.idSchemeInput, t)
697
697
  });
698
698
  return n ?? e;
699
- }, I = (e) => {
699
+ }, P = (e) => {
700
700
  let t = e.appliedPrimaryKey ?? [];
701
701
  return {
702
702
  tableName: e.tableName,
@@ -716,7 +716,7 @@ var se = () => new u({
716
716
  fullTextIndex: ((t, n, r) => {
717
717
  if (n.length === 0) throw Error(`fullTextIndex '${t}' on '${e.tableName}' has no columns.`);
718
718
  if (N(e.tableName, t, !1, n), e.appliedFullText.some((e) => e.name === t)) throw Error(`duplicate full-text index '${t}' on table '${e.tableName}'.`);
719
- return I({
719
+ return P({
720
720
  ...e,
721
721
  tableName: e.tableName,
722
722
  fields: e.fields,
@@ -737,27 +737,27 @@ var se = () => new u({
737
737
  });
738
738
  }),
739
739
  with: ((...t) => {
740
- let n = ut(t), r = { ...e.fields }, i = /* @__PURE__ */ new Map();
740
+ let n = ft(t), r = { ...e.fields }, i = /* @__PURE__ */ new Map();
741
741
  for (let e of Object.keys(r)) i.set(e, {
742
742
  id: "<table>",
743
743
  fields: {}
744
744
  });
745
745
  for (let t of n) for (let [n, a] of Object.entries(t.fields)) {
746
746
  let o = i.get(n);
747
- if (o !== void 0) throw Error(`mixin collision on column '${n}' in table '${e.tableName}': '${mt(o)}' and '${mt(t)}' both define it. If they're the same mixin reached via different paths, set a shared 'id' on both. If they're genuinely different concerns, rename one of the columns.`);
747
+ if (o !== void 0) throw Error(`mixin collision on column '${n}' in table '${e.tableName}': '${gt(o)}' and '${gt(t)}' both define it. If they're the same mixin reached via different paths, set a shared 'id' on both. If they're genuinely different concerns, rename one of the columns.`);
748
748
  M(e.tableName, n), r[n] = a, i.set(n, t);
749
749
  }
750
750
  let a = [...e.appliedIndexes];
751
751
  for (let t of n) for (let n of t.indexes ?? []) {
752
- let t = n.name ?? ht(e.tableName, n.fields);
753
- a.some((e) => e.name === t) || (N(e.tableName, t, n.name === void 0, n.fields), _t(e.tableName, t, n.kind, n.fields, r), a.push({
752
+ let t = n.name ?? _t(e.tableName, n.fields);
753
+ a.some((e) => e.name === t) || (N(e.tableName, t, n.name === void 0, n.fields), yt(e.tableName, t, n.kind, n.fields, r), a.push({
754
754
  name: t,
755
755
  fields: n.fields,
756
756
  ...n.kind === void 0 ? {} : { kind: n.kind },
757
757
  ...n.kindOptions === void 0 ? {} : { kindOptions: n.kindOptions }
758
758
  }));
759
759
  }
760
- return I({
760
+ return P({
761
761
  ...e,
762
762
  tableName: e.tableName,
763
763
  fields: r,
@@ -774,10 +774,10 @@ var se = () => new u({
774
774
  }),
775
775
  index: ((...t) => {
776
776
  let n, r, i, a = Array.isArray(t[0]);
777
- if (a ? (r = t[0], i = t[1], n = ht(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`index '${n}' on table '${e.tableName}' has no fields — an index must cover at least one column.`);
777
+ if (a ? (r = t[0], i = t[1], n = _t(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`index '${n}' on table '${e.tableName}' has no fields — an index must cover at least one column.`);
778
778
  let o = r.filter((e) => typeof e == "string");
779
- if (N(e.tableName, n, a, o), _t(e.tableName, n, i?.kind, r, e.fields), e.appliedIndexes.some((e) => e.name === n)) throw t.length === 1 ? Error(`duplicate auto-named index '${n}' on table '${e.tableName}' — you've called .index(${JSON.stringify(r)}) twice. Pass an explicit name to the second one if both are intended (rare).`) : Error(`duplicate index '${n}' on table '${e.tableName}': each index name must be unique within a table.`);
780
- return I({
779
+ if (N(e.tableName, n, a, o), yt(e.tableName, n, i?.kind, r, e.fields), e.appliedIndexes.some((e) => e.name === n)) throw t.length === 1 ? Error(`duplicate auto-named index '${n}' on table '${e.tableName}' — you've called .index(${JSON.stringify(r)}) twice. Pass an explicit name to the second one if both are intended (rare).`) : Error(`duplicate index '${n}' on table '${e.tableName}': each index name must be unique within a table.`);
780
+ return P({
781
781
  ...e,
782
782
  tableName: e.tableName,
783
783
  fields: e.fields,
@@ -801,8 +801,8 @@ var se = () => new u({
801
801
  expressionIndex: ((t, n, r) => {
802
802
  if (n.length === 0) throw Error(`expressionIndex '${t}' on table '${e.tableName}' has no fields — an index must cover at least one column or expression.`);
803
803
  let i = n.filter((e) => typeof e == "string");
804
- if (N(e.tableName, t, !1, i), _t(e.tableName, t, r?.kind, n, e.fields), e.appliedIndexes.some((e) => e.name === t)) throw Error(`duplicate index '${t}' on table '${e.tableName}': each index name must be unique within a table.`);
805
- return I({
804
+ if (N(e.tableName, t, !1, i), yt(e.tableName, t, r?.kind, n, e.fields), e.appliedIndexes.some((e) => e.name === t)) throw Error(`duplicate index '${t}' on table '${e.tableName}': each index name must be unique within a table.`);
805
+ return P({
806
806
  ...e,
807
807
  tableName: e.tableName,
808
808
  fields: e.fields,
@@ -825,9 +825,9 @@ var se = () => new u({
825
825
  }),
826
826
  unique: ((...t) => {
827
827
  let n, r, i, a = Array.isArray(t[0]);
828
- if (a ? (r = t[0], i = t[1], n = gt(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`unique '${n}' on table '${e.tableName}' has no fields — a UNIQUE constraint must cover at least one column.`);
828
+ if (a ? (r = t[0], i = t[1], n = vt(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`unique '${n}' on table '${e.tableName}' has no fields — a UNIQUE constraint must cover at least one column.`);
829
829
  if (N(e.tableName, n, a, r), e.appliedUniques.some((e) => e.name === n)) throw Error(a ? `duplicate auto-named UNIQUE '${n}' on table '${e.tableName}' — you've called .unique(${JSON.stringify(r)}) twice. Pass an explicit name to the second one if both are intended (very rare).` : `duplicate UNIQUE '${n}' on table '${e.tableName}': each constraint name must be unique within a table.`);
830
- return I({
830
+ return P({
831
831
  ...e,
832
832
  tableName: e.tableName,
833
833
  fields: e.fields,
@@ -848,10 +848,10 @@ var se = () => new u({
848
848
  }),
849
849
  uniqueActive: ((...t) => {
850
850
  let n, r, i, a = Array.isArray(t[0]);
851
- if (a ? (r = t[0], i = t[1], n = ht(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`uniqueActive '${n}' on table '${e.tableName}' has no fields — a partial UNIQUE must cover at least one column.`);
851
+ if (a ? (r = t[0], i = t[1], n = _t(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`uniqueActive '${n}' on table '${e.tableName}' has no fields — a partial UNIQUE must cover at least one column.`);
852
852
  if (N(e.tableName, n, a, r), e.appliedIndexes.some((e) => e.name === n)) throw Error(`duplicate index '${n}' on table '${e.tableName}': each index name must be unique within a table (uniqueActive shares the index namespace).`);
853
853
  let o = i?.where ?? "\"deletedAt\" IS NULL";
854
- return I({
854
+ return P({
855
855
  ...e,
856
856
  tableName: e.tableName,
857
857
  fields: e.fields,
@@ -874,7 +874,7 @@ var se = () => new u({
874
874
  check: ((t, n) => {
875
875
  if (n.trim().length === 0) throw Error(`CHECK '${t}' on table '${e.tableName}' has an empty expression.`);
876
876
  if (N(e.tableName, t, !1, []), e.appliedChecks.some((e) => e.name === t)) throw Error(`duplicate CHECK '${t}' on table '${e.tableName}': each constraint name must be unique within a table.`);
877
- return I({
877
+ return P({
878
878
  ...e,
879
879
  tableName: e.tableName,
880
880
  fields: e.fields,
@@ -896,7 +896,7 @@ var se = () => new u({
896
896
  if (t.trim().length === 0) throw Error(`rule on table '${e.tableName}' has an empty name.`);
897
897
  let i = e.appliedRules ?? [];
898
898
  if (i.some((e) => e.name === t)) throw Error(`duplicate rule '${t}' on table '${e.tableName}': each rule name must be unique within a table.`);
899
- return I({
899
+ return P({
900
900
  ...e,
901
901
  appliedRules: [...i, {
902
902
  name: t,
@@ -907,7 +907,7 @@ var se = () => new u({
907
907
  }),
908
908
  renamedFrom: ((t) => {
909
909
  if (t === e.tableName) throw Error(`renamedFrom('${t}') on table '${e.tableName}' names the table itself — drop the marker, there is nothing to rename.`);
910
- return j(t), I({
910
+ return j(t), P({
911
911
  ...e,
912
912
  previousTableName: t
913
913
  });
@@ -922,7 +922,7 @@ var se = () => new u({
922
922
  }
923
923
  if (t.length > 0) throw Error(`primaryKey([...]) declared twice on table '${e.tableName}'.`);
924
924
  for (let [t, r] of Object.entries(e.fields)) if (r.type === "id" && !n.includes(t)) throw Error(`primaryKey([...]) on table '${e.tableName}' conflicts with the id() column '${t}'. The explicit primary key IS the key — drop the id() column, or include '${t}' in the composite key.`);
925
- return I({
925
+ return P({
926
926
  ...e,
927
927
  tableName: e.tableName,
928
928
  fields: e.fields,
@@ -937,7 +937,7 @@ var se = () => new u({
937
937
  ...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
938
938
  });
939
939
  }),
940
- nonReactive: (() => I({
940
+ nonReactive: (() => P({
941
941
  ...e,
942
942
  tableName: e.tableName,
943
943
  fields: e.fields,
@@ -951,7 +951,7 @@ var se = () => new u({
951
951
  ...e.insertSchema === void 0 ? {} : { insertSchema: e.insertSchema },
952
952
  ...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
953
953
  })),
954
- validate: ((t) => I({
954
+ validate: ((t) => P({
955
955
  ...e,
956
956
  tableName: e.tableName,
957
957
  fields: e.fields,
@@ -965,7 +965,7 @@ var se = () => new u({
965
965
  insertSchema: t,
966
966
  ...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
967
967
  })),
968
- validatePatch: ((t) => I({
968
+ validatePatch: ((t) => P({
969
969
  ...e,
970
970
  tableName: e.tableName,
971
971
  fields: e.fields,
@@ -980,7 +980,7 @@ var se = () => new u({
980
980
  validatePatchSchema: r.partial(t)
981
981
  }))
982
982
  };
983
- }, L = (e, t) => {
983
+ }, F = (e, t) => {
984
984
  j(e);
985
985
  let n = Object.entries(t).flatMap(([e, t]) => {
986
986
  let n = he(t);
@@ -988,14 +988,14 @@ var se = () => new u({
988
988
  column: e,
989
989
  ...n
990
990
  }];
991
- }), r = vt(C(t), e);
991
+ }), r = bt(C(t), e);
992
992
  for (let t of Object.keys(r)) M(e, t);
993
993
  let i;
994
994
  for (let [t, n] of Object.entries(r)) n.references === S && (n.references = () => {
995
995
  if (i === void 0) throw Error(`selfReference() on '${e}.${t}' read before table() returned`);
996
996
  return i;
997
997
  });
998
- return i = I({
998
+ return i = P({
999
999
  appliedPluginRefs: n,
1000
1000
  tableName: e,
1001
1001
  fields: r,
@@ -1007,7 +1007,7 @@ var se = () => new u({
1007
1007
  appliedChecks: [],
1008
1008
  appliedRules: []
1009
1009
  }), i;
1010
- }, yt = (e) => e === "sqlite" || e === "turso", bt = (e) => e === "mysql" || e === "mariadb", R = (e, t) => {
1010
+ }, xt = (e) => e === "sqlite" || e === "turso", St = (e) => e === "mysql" || e === "mariadb", I = (e, t) => {
1011
1011
  switch (t) {
1012
1012
  case "mysql":
1013
1013
  case "mariadb": return `\`${e.replace(/`/g, "``")}\``;
@@ -1016,51 +1016,51 @@ var se = () => new u({
1016
1016
  case "sqlite":
1017
1017
  case "turso": return `"${e.replace(/"/g, "\"\"")}"`;
1018
1018
  }
1019
- }, xt = 1e4, St = Symbol.for("@voltro/database/tableRegistry"), Ct = globalThis, z = Ct[St] ?? (Ct[St] = /* @__PURE__ */ new Map()), wt = (e) => {
1020
- let t = z.get(e.tableName);
1019
+ }, Ct = 1e4, wt = Symbol.for("@voltro/database/tableRegistry"), Tt = globalThis, L = Tt[wt] ?? (Tt[wt] = /* @__PURE__ */ new Map()), Et = (e) => {
1020
+ let t = L.get(e.tableName);
1021
1021
  if (t === void 0) {
1022
- z.set(e.tableName, e);
1022
+ L.set(e.tableName, e);
1023
1023
  return;
1024
1024
  }
1025
1025
  if (t !== e) throw Error(`duplicate table '${e.tableName}' registration: two different table descriptors claim the same name. Rename one or import the shared module that defines it.`);
1026
- }, Tt = (e) => {
1027
- z.get(e.tableName) === void 0 && z.set(e.tableName, e);
1028
- }, B = (e) => z.get(e), Et = (e) => {
1029
- let t = z.get(e);
1026
+ }, Dt = (e) => {
1027
+ L.get(e.tableName) === void 0 && L.set(e.tableName, e);
1028
+ }, R = (e) => L.get(e), Ot = (e) => {
1029
+ let t = L.get(e);
1030
1030
  if (t === void 0) throw Error(`table '${e}' is not registered. Register it by wrapping it in \`databaseHandle({ ... })\` (the usual path) or call \`registerTable(t)\` explicitly before this runs. Note a \`queryFor(t)\` query carries its own source table, so eager-loads don't hit this — this error means a reconstructed descriptor or by-name tooling reached an unregistered table.`);
1031
1031
  return t;
1032
- }, Dt = () => [...z.values()], Ot = (e) => z.delete(e), kt = () => {
1033
- z.clear();
1034
- }, At = (e) => z.get(e)?.isReactive !== !1, V = (e) => e.order ?? [], jt = (e) => ({
1032
+ }, kt = () => [...L.values()], At = (e) => L.delete(e), jt = () => {
1033
+ L.clear();
1034
+ }, Mt = (e) => L.get(e)?.isReactive !== !1, z = (e) => e.order ?? [], Nt = (e) => ({
1035
1035
  op: "count",
1036
1036
  alias: e ?? "count"
1037
- }), Mt = (e, t) => ({
1037
+ }), Pt = (e, t) => ({
1038
1038
  op: "count-distinct",
1039
1039
  column: e,
1040
1040
  alias: t ?? `count_distinct_${e}`
1041
- }), Nt = (e, t) => ({
1041
+ }), Ft = (e, t) => ({
1042
1042
  op: "sum",
1043
1043
  column: e,
1044
1044
  alias: t ?? `sum_${e}`
1045
- }), Pt = (e, t) => ({
1045
+ }), It = (e, t) => ({
1046
1046
  op: "avg",
1047
1047
  column: e,
1048
1048
  alias: t ?? `avg_${e}`
1049
- }), Ft = (e, t) => ({
1049
+ }), Lt = (e, t) => ({
1050
1050
  op: "min",
1051
1051
  column: e,
1052
1052
  alias: t ?? `min_${e}`
1053
- }), It = (e, t) => ({
1053
+ }), Rt = (e, t) => ({
1054
1054
  op: "max",
1055
1055
  column: e,
1056
1056
  alias: t ?? `max_${e}`
1057
- }), Lt = (e, t) => ({
1057
+ }), zt = (e, t) => ({
1058
1058
  op: "column",
1059
1059
  column: e,
1060
1060
  alias: t ?? e
1061
- }), H = (e) => (...t) => {
1061
+ }), B = (e) => (...t) => {
1062
1062
  if (t.length < 2) throw Error(`${e}: requires at least two queries`);
1063
- return W({
1063
+ return H({
1064
1064
  table: t[0].descriptor.table,
1065
1065
  predicate: void 0,
1066
1066
  order: [],
@@ -1072,55 +1072,55 @@ var se = () => new u({
1072
1072
  queries: t.map((e) => e.descriptor)
1073
1073
  }
1074
1074
  });
1075
- }, Rt = H("union"), zt = H("union-all"), Bt = H("intersect"), Vt = H("except"), U = (e) => ({ over: (t) => ({
1075
+ }, Bt = B("union"), Vt = B("union-all"), Ht = B("intersect"), Ut = B("except"), V = (e) => ({ over: (t) => ({
1076
1076
  ...e,
1077
1077
  window: t
1078
- }) }), Ht = (e = "rowNumber") => U({
1078
+ }) }), Wt = (e = "rowNumber") => V({
1079
1079
  op: "window-row-number",
1080
1080
  alias: e
1081
- }), Ut = (e = "rank") => U({
1081
+ }), Gt = (e = "rank") => V({
1082
1082
  op: "window-rank",
1083
1083
  alias: e
1084
- }), Wt = (e = "denseRank") => U({
1084
+ }), Kt = (e = "denseRank") => V({
1085
1085
  op: "window-dense-rank",
1086
1086
  alias: e
1087
- }), Gt = (e, t = 1, n) => U({
1087
+ }), qt = (e, t = 1, n) => V({
1088
1088
  op: "window-lag",
1089
1089
  column: e,
1090
1090
  alias: n ?? `lag_${e}`,
1091
1091
  offset: t
1092
- }), Kt = (e, t = 1, n) => U({
1092
+ }), Jt = (e, t = 1, n) => V({
1093
1093
  op: "window-lead",
1094
1094
  column: e,
1095
1095
  alias: n ?? `lead_${e}`,
1096
1096
  offset: t
1097
- }), qt = (e, t) => U({
1097
+ }), Yt = (e, t) => V({
1098
1098
  op: "window-sum-over",
1099
1099
  column: e,
1100
1100
  alias: t ?? `sum_${e}_over`
1101
- }), Jt = (e, t) => U({
1101
+ }), Xt = (e, t) => V({
1102
1102
  op: "window-avg-over",
1103
1103
  column: e,
1104
1104
  alias: t ?? `avg_${e}_over`
1105
- }), Yt = (e, t, n) => {
1106
- let r = n?.find((e) => e.name === t) ?? B(e)?.appliedFullText?.find((e) => e.name === t);
1105
+ }), Zt = (e, t, n) => {
1106
+ let r = n?.find((e) => e.name === t) ?? R(e)?.appliedFullText?.find((e) => e.name === t);
1107
1107
  if (r === void 0) throw Error(`.matching('${t}', ...): no full-text index named '${t}' is declared on table '${e}'. Declare it with \`table(...).fullTextIndex('${t}', [columns])\` first.`);
1108
1108
  return {
1109
1109
  columns: r.columns,
1110
1110
  ...r.config === void 0 ? {} : { config: r.config },
1111
1111
  ...r.weights === void 0 ? {} : { weights: r.weights }
1112
1112
  };
1113
- }, W = (e) => ({
1113
+ }, H = (e) => ({
1114
1114
  descriptor: e,
1115
1115
  where(t) {
1116
1116
  let n = e.predicate ? { and: [e.predicate, t] } : t;
1117
- return W({
1117
+ return H({
1118
1118
  ...e,
1119
1119
  predicate: n
1120
1120
  });
1121
1121
  },
1122
1122
  orderBy(t, n = "asc") {
1123
- return W({
1123
+ return H({
1124
1124
  ...e,
1125
1125
  order: [...e.order, {
1126
1126
  column: t,
@@ -1129,43 +1129,43 @@ var se = () => new u({
1129
1129
  });
1130
1130
  },
1131
1131
  limit(t) {
1132
- return W({
1132
+ return H({
1133
1133
  ...e,
1134
1134
  take: t
1135
1135
  });
1136
1136
  },
1137
1137
  offset(t) {
1138
- return W({
1138
+ return H({
1139
1139
  ...e,
1140
1140
  skip: t
1141
1141
  });
1142
1142
  },
1143
1143
  select(...t) {
1144
- return W({
1144
+ return H({
1145
1145
  ...e,
1146
1146
  projection: t
1147
1147
  });
1148
1148
  },
1149
1149
  using(t) {
1150
- return W({
1150
+ return H({
1151
1151
  ...e,
1152
1152
  usingIndex: t
1153
1153
  });
1154
1154
  },
1155
1155
  withDeleted() {
1156
- return W({
1156
+ return H({
1157
1157
  ...e,
1158
1158
  includeDeleted: !0
1159
1159
  });
1160
1160
  },
1161
1161
  forUpdate() {
1162
- return W({
1162
+ return H({
1163
1163
  ...e,
1164
1164
  lock: "update"
1165
1165
  });
1166
1166
  },
1167
1167
  unscoped() {
1168
- return W({
1168
+ return H({
1169
1169
  ...e,
1170
1170
  crossTenant: !0
1171
1171
  });
@@ -1175,13 +1175,13 @@ var se = () => new u({
1175
1175
  ...e.eager ?? {},
1176
1176
  ...t
1177
1177
  };
1178
- return W({
1178
+ return H({
1179
1179
  ...e,
1180
1180
  eager: n
1181
1181
  });
1182
1182
  },
1183
1183
  count() {
1184
- return W({
1184
+ return H({
1185
1185
  ...e,
1186
1186
  projection: void 0,
1187
1187
  aggregations: [{
@@ -1195,15 +1195,15 @@ var se = () => new u({
1195
1195
  ...t,
1196
1196
  alias: e
1197
1197
  }));
1198
- return W({
1198
+ return H({
1199
1199
  ...e,
1200
1200
  projection: void 0,
1201
1201
  aggregations: n
1202
1202
  });
1203
1203
  },
1204
1204
  matching(t, n, r) {
1205
- let i = Yt(e.table, t, e.fullTextIndexes);
1206
- return W({
1205
+ let i = Zt(e.table, t, e.fullTextIndexes);
1206
+ return H({
1207
1207
  ...e,
1208
1208
  fullTextSearch: {
1209
1209
  indexName: t,
@@ -1218,7 +1218,7 @@ var se = () => new u({
1218
1218
  rankBy(t) {
1219
1219
  let n = e.fullTextSearch;
1220
1220
  if (n === void 0) throw Error(".rankBy() requires a preceding .matching(...) clause — there is no full-text search to rank on this query.");
1221
- return W({
1221
+ return H({
1222
1222
  ...e,
1223
1223
  fullTextSearch: {
1224
1224
  ...n,
@@ -1237,7 +1237,7 @@ var se = () => new u({
1237
1237
  distance: r?.distance ?? "cosine",
1238
1238
  ...e.annClause?.ef === void 0 ? {} : { ef: e.annClause.ef }
1239
1239
  };
1240
- return W({
1240
+ return H({
1241
1241
  ...e,
1242
1242
  annClause: i
1243
1243
  });
@@ -1249,7 +1249,7 @@ var se = () => new u({
1249
1249
  distance: "cosine",
1250
1250
  ...e.annClause?.ef === void 0 ? {} : { ef: e.annClause.ef }
1251
1251
  };
1252
- return W({
1252
+ return H({
1253
1253
  ...e,
1254
1254
  annClause: r,
1255
1255
  take: n
@@ -1262,7 +1262,7 @@ var se = () => new u({
1262
1262
  column: "",
1263
1263
  distance: "cosine"
1264
1264
  };
1265
- return W({
1265
+ return H({
1266
1266
  ...e,
1267
1267
  annClause: {
1268
1268
  ...n,
@@ -1271,22 +1271,22 @@ var se = () => new u({
1271
1271
  });
1272
1272
  },
1273
1273
  use(t) {
1274
- return W({ ...t(e) });
1274
+ return H({ ...t(e) });
1275
1275
  },
1276
1276
  distinct() {
1277
- return W({
1277
+ return H({
1278
1278
  ...e,
1279
1279
  distinct: !0
1280
1280
  });
1281
1281
  },
1282
1282
  distinctOn(t) {
1283
- return W({
1283
+ return H({
1284
1284
  ...e,
1285
1285
  distinctOn: [...t]
1286
1286
  });
1287
1287
  },
1288
1288
  as(t) {
1289
- return W({
1289
+ return H({
1290
1290
  ...e,
1291
1291
  alias: t
1292
1292
  });
@@ -1296,9 +1296,10 @@ var se = () => new u({
1296
1296
  kind: "inner",
1297
1297
  table: i,
1298
1298
  alias: n,
1299
- on: r
1299
+ on: r,
1300
+ ...typeof t == "string" ? {} : { sourceTable: t }
1300
1301
  }];
1301
- return W({
1302
+ return H({
1302
1303
  ...e,
1303
1304
  joins: a
1304
1305
  });
@@ -1308,9 +1309,10 @@ var se = () => new u({
1308
1309
  kind: "left",
1309
1310
  table: i,
1310
1311
  alias: n,
1311
- on: r
1312
+ on: r,
1313
+ ...typeof t == "string" ? {} : { sourceTable: t }
1312
1314
  }];
1313
- return W({
1315
+ return H({
1314
1316
  ...e,
1315
1317
  joins: a
1316
1318
  });
@@ -1320,7 +1322,7 @@ var se = () => new u({
1320
1322
  outputKey: e,
1321
1323
  source: t
1322
1324
  }));
1323
- return W({
1325
+ return H({
1324
1326
  ...e,
1325
1327
  projection: void 0,
1326
1328
  joinedProjection: n
@@ -1329,7 +1331,7 @@ var se = () => new u({
1329
1331
  withCte(t, n) {
1330
1332
  let r = e.ctes ?? [];
1331
1333
  if (r.some((e) => e.name === t)) throw Error(`Query.withCte: duplicate CTE name '${t}'`);
1332
- return W({
1334
+ return H({
1333
1335
  ...e,
1334
1336
  ctes: [...r, {
1335
1337
  name: t,
@@ -1340,7 +1342,7 @@ var se = () => new u({
1340
1342
  recursiveCte(t, n) {
1341
1343
  let r = e.ctes ?? [];
1342
1344
  if (r.some((e) => e.name === t)) throw Error(`Query.recursiveCte: duplicate CTE name '${t}'`);
1343
- return W({
1345
+ return H({
1344
1346
  ...e,
1345
1347
  ctes: [...r, {
1346
1348
  name: t,
@@ -1351,20 +1353,20 @@ var se = () => new u({
1351
1353
  },
1352
1354
  groupBy(t) {
1353
1355
  let n = e.groupBy ? [...e.groupBy, ...t] : [...t];
1354
- return W({
1356
+ return H({
1355
1357
  ...e,
1356
1358
  groupBy: n
1357
1359
  });
1358
1360
  },
1359
1361
  having(t) {
1360
1362
  let n = e.having ? { and: [e.having, t] } : t;
1361
- return W({
1363
+ return H({
1362
1364
  ...e,
1363
1365
  having: n
1364
1366
  });
1365
1367
  },
1366
1368
  exists() {
1367
- return W({
1369
+ return H({
1368
1370
  ...e,
1369
1371
  projection: void 0,
1370
1372
  aggregations: [{
@@ -1375,8 +1377,8 @@ var se = () => new u({
1375
1377
  });
1376
1378
  }
1377
1379
  });
1378
- function Xt(e) {
1379
- return W({
1380
+ function Qt(e) {
1381
+ return H({
1380
1382
  table: e.tableName,
1381
1383
  predicate: void 0,
1382
1384
  order: [],
@@ -1387,7 +1389,7 @@ function Xt(e) {
1387
1389
  sourceTable: e
1388
1390
  });
1389
1391
  }
1390
- var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1392
+ var $t = (e, t, n) => en(e, "id", t, n), en = (e, t, n, r, i = "asc") => {
1391
1393
  let a = [...e.order.filter((e) => e.column !== t), {
1392
1394
  column: t,
1393
1395
  direction: i
@@ -1402,11 +1404,11 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1402
1404
  order: a,
1403
1405
  take: r
1404
1406
  };
1405
- }, $t = (e) => {
1407
+ }, tn = (e) => {
1406
1408
  let t = {};
1407
- for (let [n, r] of Object.entries(e)) wt(r), t[n] = Xt(r);
1409
+ for (let [n, r] of Object.entries(e)) Et(r), t[n] = Qt(r);
1408
1410
  return t;
1409
- }, en = (e) => e.isView === !0, tn = (e, t, n) => {
1411
+ }, nn = (e) => e.isView === !0, rn = (e, t, n) => {
1410
1412
  if (j(e), n.trim().length === 0) throw Error(`view('${e}', …): the SELECT body is empty — a view must define a query.`);
1411
1413
  let r = C(t);
1412
1414
  for (let t of Object.keys(r)) M(e, t);
@@ -1416,7 +1418,7 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1416
1418
  isView: !0,
1417
1419
  viewSelect: n
1418
1420
  };
1419
- }, nn = (e) => Xt({
1421
+ }, an = (e) => Qt({
1420
1422
  ...e,
1421
1423
  isReactive: !1,
1422
1424
  appliedMixins: [],
@@ -1424,8 +1426,8 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1424
1426
  appliedUniques: [],
1425
1427
  appliedFullText: [],
1426
1428
  appliedChecks: []
1427
- }), rn = (e, t, n = null) => {
1428
- let r = n === null ? R(e.tableName, t) : `${R(n, t)}.${R(e.tableName, t)}`, i = e.viewSelect.trim();
1429
+ }), on = (e, t, n = null) => {
1430
+ let r = n === null ? I(e.tableName, t) : `${I(n, t)}.${I(e.tableName, t)}`, i = e.viewSelect.trim();
1429
1431
  switch (t) {
1430
1432
  case "postgres":
1431
1433
  case "mysql":
@@ -1434,7 +1436,7 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1434
1436
  case "sqlite":
1435
1437
  case "turso": return `DROP VIEW IF EXISTS ${r};\nCREATE VIEW ${r} AS ${i};`;
1436
1438
  }
1437
- }, an = (e) => e == null || typeof e == "boolean" ? e : typeof e == "number" ? e !== 0 : typeof e == "bigint" ? e !== 0n : typeof e == "string" ? e === "1" || e.toLowerCase() === "true" : e, on = (e) => {
1439
+ }, sn = (e) => e == null || typeof e == "boolean" ? e : typeof e == "number" ? e !== 0 : typeof e == "bigint" ? e !== 0n : typeof e == "string" ? e === "1" || e.toLowerCase() === "true" : e, cn = (e) => {
1438
1440
  if (e == null || typeof e != "string") return e;
1439
1441
  let t = e.trim();
1440
1442
  if (t.length === 0) return e;
@@ -1445,7 +1447,7 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1445
1447
  } catch {
1446
1448
  return e;
1447
1449
  }
1448
- }, sn = (e) => e == null || typeof e == "string" ? e : typeof e == "number" || typeof e == "bigint" ? String(e) : e, cn = (e) => {
1450
+ }, ln = (e) => e == null || typeof e == "string" ? e : typeof e == "number" || typeof e == "bigint" ? String(e) : e, un = (e) => {
1449
1451
  if (e == null || e instanceof Date) return e;
1450
1452
  if (typeof e == "string") {
1451
1453
  let t = new Date(e);
@@ -1456,24 +1458,24 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1456
1458
  return isNaN(t.getTime()) ? e : t;
1457
1459
  }
1458
1460
  return e;
1459
- }, ln = (e, t, n) => {
1461
+ }, dn = (e, t, n) => {
1460
1462
  if (e == null) return e;
1461
1463
  switch (t) {
1462
- case "boolean": return n === "postgres" ? e : an(e);
1463
- case "vector": return n === "postgres" ? on(e) : e;
1464
- case "json": return n === "postgres" || n === "mysql" || n === "mariadb" ? e : on(e);
1465
- case "array": return n === "postgres" ? e : on(e);
1464
+ case "boolean": return n === "postgres" ? e : sn(e);
1465
+ case "vector": return n === "postgres" ? cn(e) : e;
1466
+ case "json": return n === "postgres" || n === "mysql" || n === "mariadb" ? e : cn(e);
1467
+ case "array": return n === "postgres" ? e : cn(e);
1466
1468
  case "timestamp":
1467
- case "date": return n === "sqlite" || n === "turso" ? cn(e) : e;
1469
+ case "date": return n === "sqlite" || n === "turso" ? un(e) : e;
1468
1470
  case "decimal":
1469
- case "bigint": return sn(e);
1471
+ case "bigint": return ln(e);
1470
1472
  default: return e;
1471
1473
  }
1472
- }, un = (e, t, n) => {
1474
+ }, fn = (e, t, n) => {
1473
1475
  if (e.length === 0) return e;
1474
- let r = B(t);
1475
- return r === void 0 ? e : dn(e, r, n);
1476
- }, dn = (e, t, n) => {
1476
+ let r = R(t);
1477
+ return r === void 0 ? e : pn(e, r, n);
1478
+ }, pn = (e, t, n) => {
1477
1479
  if (e.length === 0) return e;
1478
1480
  let r = t.fields, i = [];
1479
1481
  for (let [e, t] of Object.entries(r)) i.push({
@@ -1482,10 +1484,10 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1482
1484
  });
1483
1485
  return e.map((e) => {
1484
1486
  let t = { ...e };
1485
- for (let { key: e, type: r } of i) e in t && (t[e] = ln(t[e], r, n));
1487
+ for (let { key: e, type: r } of i) e in t && (t[e] = dn(t[e], r, n));
1486
1488
  return t;
1487
1489
  });
1488
- }, fn = (e, t) => {
1490
+ }, mn = (e, t) => {
1489
1491
  if (e == null) return e;
1490
1492
  switch (t) {
1491
1493
  case "json": return JSON.stringify(e);
@@ -1493,25 +1495,38 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1493
1495
  case "vector": return typeof e == "string" ? e : JSON.stringify(e);
1494
1496
  default: return e;
1495
1497
  }
1496
- }, pn = (e, t, n = ["json", "array"]) => {
1497
- let r = B(t);
1498
+ }, hn = (e, t, n = ["json", "array"]) => {
1499
+ let r = R(t);
1498
1500
  if (r === void 0) return e;
1499
1501
  let i = r.fields, a = null;
1500
1502
  for (let [t, r] of Object.entries(i)) if (n.includes(r.type) && t in e) {
1501
- let n = fn(e[t], r.type);
1503
+ let n = mn(e[t], r.type);
1502
1504
  n !== e[t] && (a === null && (a = { ...e }), a[t] = n);
1503
1505
  }
1504
1506
  return a ?? e;
1505
- }, mn = (e) => e == null ? e : e instanceof Date ? e.toISOString() : typeof e == "boolean" ? +!!e : Array.isArray(e) ? e.map((e) => mn(e)) : e, hn = /^[A-Za-z_][A-Za-z0-9_]*$/, gn = (e) => "$" + e.map((e) => typeof e == "number" ? `[${e}]` : hn.test(e) ? `.${e}` : `."${e.replace(/"/g, "\\\"")}"`).join(""), _n = (e) => "{" + e.map((e) => {
1507
+ }, gn = (e) => {
1508
+ if (e.length === 0) throw RangeError("Column reference must not be empty");
1509
+ return {
1510
+ _tag: "ColumnReference",
1511
+ column: e
1512
+ };
1513
+ }, U = (e) => typeof e == "object" && !!e && "_tag" in e && e._tag === "ColumnReference" && "column" in e && typeof e.column == "string", _n = [
1514
+ "eq",
1515
+ "neq",
1516
+ "gt",
1517
+ "gte",
1518
+ "lt",
1519
+ "lte"
1520
+ ], vn = (e) => e == null ? e : e instanceof Date ? e.toISOString() : typeof e == "boolean" ? +!!e : Array.isArray(e) ? e.map((e) => vn(e)) : e, yn = /^[A-Za-z_][A-Za-z0-9_]*$/, bn = (e) => "$" + e.map((e) => typeof e == "number" ? `[${e}]` : yn.test(e) ? `.${e}` : `."${e.replace(/"/g, "\\\"")}"`).join(""), xn = (e) => "{" + e.map((e) => {
1506
1521
  let t = String(e);
1507
1522
  return /^[A-Za-z0-9_]+$/.test(t) ? t : `"${t.replace(/(["\\])/g, "\\$1")}"`;
1508
- }).join(",") + "}", G = (e, t, n, r = {}) => {
1509
- let i = R(e, n), a = r.numeric ?? !1;
1523
+ }).join(",") + "}", W = (e, t, n, r = {}) => {
1524
+ let i = I(e, n), a = r.numeric ?? !1;
1510
1525
  if (n === "postgres") {
1511
- let e = `(${i} #>> '${_n(t)}'::text[])`;
1526
+ let e = `(${i} #>> '${xn(t)}'::text[])`;
1512
1527
  return a ? `${e}::numeric` : e;
1513
1528
  }
1514
- let o = gn(t);
1529
+ let o = bn(t);
1515
1530
  switch (n) {
1516
1531
  case "mysql":
1517
1532
  case "mariadb": {
@@ -1528,61 +1543,77 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1528
1543
  return a ? `CAST(${e} AS REAL)` : e;
1529
1544
  }
1530
1545
  }
1531
- }, vn = class extends Error {
1546
+ }, Sn = class extends Error {
1532
1547
  _tag = "TenantNamespaceUnresolved";
1533
1548
  constructor(e) {
1534
1549
  super(e), this.name = "TenantNamespaceUnresolved";
1535
1550
  }
1536
- }, yn = class extends Error {
1551
+ }, Cn = class extends Error {
1537
1552
  _tag = "TenantNamespaceInvalid";
1538
1553
  constructor(e) {
1539
1554
  super(e), this.name = "TenantNamespaceInvalid";
1540
1555
  }
1541
- }, bn = 63, xn = "tenant_", Sn = (e) => e.toLowerCase().replace(/[^a-z0-9_]/g, "_"), Cn = (e) => {
1542
- if (e == null || e === "") throw new vn("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.");
1543
- let t = Sn(e);
1544
- if (t.replace(/_/g, "") === "") throw new yn(`tenant id '${e}' has no usable identifier characters after sanitisation — cannot derive a distinct namespace.`);
1545
- let n = `${xn}${t}`;
1546
- if (n.length > bn) throw new yn(`namespace '${n}' for tenant '${e}' exceeds the ${bn}-byte identifier limit. Use a shorter tenant id.`);
1556
+ }, wn = 63, Tn = "tenant_", En = (e) => e.toLowerCase().replace(/[^a-z0-9_]/g, "_"), Dn = (e) => {
1557
+ if (e == null || e === "") throw new Sn("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.");
1558
+ let t = En(e);
1559
+ if (t.replace(/_/g, "") === "") throw new Cn(`tenant id '${e}' has no usable identifier characters after sanitisation — cannot derive a distinct namespace.`);
1560
+ let n = `${Tn}${t}`;
1561
+ if (n.length > wn) throw new Cn(`namespace '${n}' for tenant '${e}' exceeds the ${wn}-byte identifier limit. Use a shorter tenant id.`);
1547
1562
  return n;
1548
- }, K = (e, t) => e === null ? t : `${e}.${t}`, wn = /* @__PURE__ */ new Set(["timestamp", "date"]), Tn = /^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2})?/, En = (e, t) => {
1549
- if (e === void 0 || t == null || !wn.has(e) || t instanceof Date) return t;
1563
+ }, G = (e, t) => e === null ? t : `${e}.${t}`, On = /* @__PURE__ */ new Set(["timestamp", "date"]), kn = /^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2})?/, An = (e, t) => {
1564
+ if (e === void 0 || t == null || !On.has(e) || t instanceof Date) return t;
1550
1565
  if (typeof t == "number" && Number.isFinite(t)) return new Date(t);
1551
- if (typeof t == "string" && Tn.test(t)) {
1566
+ if (typeof t == "string" && kn.test(t)) {
1552
1567
  let e = new Date(t);
1553
1568
  return Number.isNaN(e.getTime()) ? t : e;
1554
1569
  }
1555
1570
  return t;
1556
- }, Dn = (e, t) => e === void 0 || !wn.has(e) ? t : t.map((t) => En(e, t)), On = (e, t) => {
1571
+ }, jn = (e, t) => e === void 0 || !On.has(e) ? t : t.map((t) => An(e, t)), Mn = (e, t) => {
1572
+ let n = e.lastIndexOf("."), r = n < 0 ? e : e.slice(n + 1), i = n < 0 ? void 0 : e.slice(0, n), a = i === void 0 || i === t.alias || i === t.table, o = a ? void 0 : t.joins?.find((e) => e.alias === i), s = a ? t.table : o?.table, c = a ? t.sourceTable : o?.sourceTable;
1573
+ return (c?.tableName === s ? c : s === void 0 ? void 0 : R(s))?.fields[r];
1574
+ }, Nn = (e, t) => {
1557
1575
  let { strings: n, values: r } = e, i = t.unsafe(n[0] ?? "");
1558
1576
  for (let e = 0; e < r.length; e++) i = t`${i}${r[e]}${t.unsafe(n[e + 1] ?? "")}`;
1559
1577
  return t`${i}`;
1560
- }, q = (e) => e.replace(/[\\%_]/g, (e) => `\\${e}`), J = (e, t, n = null, r) => {
1561
- if ("not" in e) return t`NOT (${J(e.not, t, n, r)})`;
1562
- if ("and" in e) return e.and.length === 0 ? t`TRUE` : t.and(e.and.map((e) => J(e, t, n, r)));
1563
- if ("or" in e) return e.or.length === 0 ? t`FALSE` : t.or(e.or.map((e) => J(e, t, n, r)));
1578
+ }, K = (e) => e.replace(/[\\%_]/g, (e) => `\\${e}`), q = (e, t, n = null, r) => {
1579
+ if ("not" in e) return t`NOT (${q(e.not, t, n, r)})`;
1580
+ if ("and" in e) return e.and.length === 0 ? t`TRUE` : t.and(e.and.map((e) => q(e, t, n, r)));
1581
+ if ("or" in e) return e.or.length === 0 ? t`FALSE` : t.or(e.or.map((e) => q(e, t, n, r)));
1564
1582
  if (e.op === "subquery-in" || e.op === "subquery-not-in") {
1565
- let r = e, i = X(r.subquery, t, n);
1583
+ let r = e, i = Y(r.subquery, t, n);
1566
1584
  return r.op === "subquery-in" ? t`${t(r.column)} IN (${i})` : t`${t(r.column)} NOT IN (${i})`;
1567
1585
  }
1568
1586
  if (e.op === "exists" || e.op === "not-exists") {
1569
- let r = e, i = X(r.subquery, t, n);
1587
+ let r = e, i = Y(r.subquery, t, n);
1570
1588
  return r.op === "exists" ? t`EXISTS (${i})` : t`NOT EXISTS (${i})`;
1571
1589
  }
1572
- let i = e, a = t(i.column), o = i.path, s = o !== void 0 && o.length > 0, c = () => t.onDialectOrElse({
1573
- mysql: () => t.unsafe(G(i.column, o, "mysql")),
1574
- mssql: () => t.unsafe(G(i.column, o, "mssql")),
1575
- sqlite: () => t.unsafe(G(i.column, o, "sqlite")),
1576
- orElse: () => t.unsafe(G(i.column, o, "postgres"))
1590
+ let i = e;
1591
+ if (U(i.value)) {
1592
+ if (!_n.some((e) => e === i.op) || i.path !== void 0) throw E("Column references require a scalar comparison without a JSON path");
1593
+ let e = t(i.value.column), n = t(i.column);
1594
+ switch (i.op) {
1595
+ case "eq": return t`${n} = ${e}`;
1596
+ case "neq": return t`${n} <> ${e}`;
1597
+ case "gt": return t`${n} > ${e}`;
1598
+ case "gte": return t`${n} >= ${e}`;
1599
+ case "lt": return t`${n} < ${e}`;
1600
+ case "lte": return t`${n} <= ${e}`;
1601
+ }
1602
+ }
1603
+ let a = t(i.column), o = i.path, s = o !== void 0 && o.length > 0, c = () => t.onDialectOrElse({
1604
+ mysql: () => t.unsafe(W(i.column, o, "mysql")),
1605
+ mssql: () => t.unsafe(W(i.column, o, "mssql")),
1606
+ sqlite: () => t.unsafe(W(i.column, o, "sqlite")),
1607
+ orElse: () => t.unsafe(W(i.column, o, "postgres"))
1577
1608
  }), l = () => t.onDialectOrElse({
1578
- mysql: () => t.unsafe(G(i.column, o, "mysql", { numeric: !0 })),
1579
- mssql: () => t.unsafe(G(i.column, o, "mssql", { numeric: !0 })),
1580
- sqlite: () => t.unsafe(G(i.column, o, "sqlite", { numeric: !0 })),
1581
- orElse: () => t.unsafe(G(i.column, o, "postgres", { numeric: !0 }))
1582
- }), 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 : B(r)?.fields?.[i.column]?.type, h = (e) => {
1583
- let n = En(m, e);
1609
+ mysql: () => t.unsafe(W(i.column, o, "mysql", { numeric: !0 })),
1610
+ mssql: () => t.unsafe(W(i.column, o, "mssql", { numeric: !0 })),
1611
+ sqlite: () => t.unsafe(W(i.column, o, "sqlite", { numeric: !0 })),
1612
+ orElse: () => t.unsafe(W(i.column, o, "postgres", { numeric: !0 }))
1613
+ }), 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 : R(r)?.fields?.[i.column]?.type, h = (e) => {
1614
+ let n = An(m, e);
1584
1615
  return n instanceof Date ? t.onDialectOrElse({
1585
- sqlite: () => mn(n),
1616
+ sqlite: () => vn(n),
1586
1617
  orElse: () => n
1587
1618
  }) : n;
1588
1619
  };
@@ -1602,7 +1633,7 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1602
1633
  return e.length === 0 ? t`TRUE` : t`${u} NOT IN ${t.in(s ? e.map((e) => f(e)) : e.map(h))}`;
1603
1634
  }
1604
1635
  case "contains": {
1605
- let e = `%${q(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
1636
+ let e = `%${K(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
1606
1637
  return t.onDialectOrElse({
1607
1638
  mysql: () => t`LOWER(${u}) LIKE LOWER(${e})`,
1608
1639
  mssql: () => t`LOWER(${u}) LIKE LOWER(${e})`,
@@ -1611,7 +1642,7 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1611
1642
  });
1612
1643
  }
1613
1644
  case "startsWith": {
1614
- let e = `${q(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
1645
+ let e = `${K(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
1615
1646
  return t.onDialectOrElse({
1616
1647
  mysql: () => t`${u} LIKE ${e}`,
1617
1648
  orElse: () => t`${u} LIKE ${e} ESCAPE '\\'`
@@ -1659,13 +1690,13 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1659
1690
  });
1660
1691
  }
1661
1692
  }
1662
- }, kn = (e, t) => {
1693
+ }, Pn = (e, t) => {
1663
1694
  let n = [];
1664
1695
  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}`);
1665
- }, An = (e, t) => t.csv(e.map((e) => {
1696
+ }, Fn = (e, t) => t.csv(e.map((e) => {
1666
1697
  let n = e.column === void 0 ? t.unsafe("*") : t`${t(e.column)}`;
1667
1698
  if (e.op.startsWith("window-")) {
1668
- let r = kn(e.window ?? {}, t);
1699
+ let r = Pn(e.window ?? {}, t);
1669
1700
  switch (e.op) {
1670
1701
  case "window-row-number": return t`ROW_NUMBER() OVER (${r}) AS ${t(e.alias)}`;
1671
1702
  case "window-rank": return t`RANK() OVER (${r}) AS ${t(e.alias)}`;
@@ -1689,61 +1720,58 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1689
1720
  return t`${t(e.column)} AS ${t(e.alias)}`;
1690
1721
  default: throw E(`compileAggregateProjection: unknown op '${e.op}'`);
1691
1722
  }
1692
- })), jn = (e) => `[${e.join(",")}]`, Mn = (e, t) => {
1723
+ })), In = (e) => `[${e.join(",")}]`, Ln = (e, t) => {
1693
1724
  if (e.queryVector === void 0) return null;
1694
- let n = t(e.column), r = jn(e.queryVector), i = e.distance === "cosine" ? "<=>" : e.distance === "l2" ? "<->" : "<#>", a = e.distance === "cosine" ? "VEC_DISTANCE_COSINE" : "VEC_DISTANCE_EUCLIDEAN";
1725
+ let n = t(e.column), r = In(e.queryVector), i = e.distance === "cosine" ? "<=>" : e.distance === "l2" ? "<->" : "<#>", a = e.distance === "cosine" ? "VEC_DISTANCE_COSINE" : "VEC_DISTANCE_EUCLIDEAN";
1695
1726
  return t.onDialectOrElse({
1696
1727
  mysql: () => t`${t.unsafe(a)}(${n}, ${r})`,
1697
1728
  mssql: () => t`NULL`,
1698
1729
  sqlite: () => t`NULL`,
1699
1730
  orElse: () => t`${n} ${t.unsafe(i)} ${r}::vector`
1700
1731
  });
1701
- }, Nn = (e, t) => {
1732
+ }, Rn = (e, t) => {
1702
1733
  let n = t.unsafe(e.useGeography ? "::geography" : "::geometry");
1703
1734
  return t`ST_Distance(${t(e.column)}${n}, ${e.geom}${n})`;
1704
- }, Pn = (e, t) => t`${t(e.column)} <-> ${e.geom}::geometry`, Y = (e, t) => t`${t(`${e.indexName}_tsv`)}`, Fn = (e, t) => `${t}_${e.indexName}_fts`, In = (e) => e.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter((e) => e !== ""), Ln = (e) => {
1735
+ }, zn = (e, t) => t`${t(e.column)} <-> ${e.geom}::geometry`, J = (e, t) => t`${t(`${e.indexName}_tsv`)}`, Bn = (e, t) => `${t}_${e.indexName}_fts`, Vn = (e) => e.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter((e) => e !== ""), Hn = (e) => {
1705
1736
  if (e.prefix !== !0) return;
1706
- let t = In(e.query);
1737
+ let t = Vn(e.query);
1707
1738
  if (t.length !== 0) return {
1708
1739
  pg: t.map((e) => `${e}:*`).join(" & "),
1709
1740
  mysql: t.map((e) => `+${e}*`).join(" "),
1710
1741
  sqlite: t.map((e) => `"${e}"*`).join(" ")
1711
1742
  };
1712
- }, Rn = (e, t, n) => {
1713
- let r = n.csv(e.columns.map((e) => n`${n(e)}`)), i = `%${q(e.query)}%`, a = Ln(e), o = () => n.or(e.columns.map((e) => n`LOWER(${n(e)}) LIKE LOWER(${i}) ESCAPE '\\'`));
1743
+ }, Un = (e, t, n) => {
1744
+ let r = n.csv(e.columns.map((e) => n`${n(e)}`)), i = `%${K(e.query)}%`, a = Hn(e), o = () => n.or(e.columns.map((e) => n`LOWER(${n(e)}) LIKE LOWER(${i}) ESCAPE '\\'`));
1714
1745
  return e.fallback === "like" ? o() : n.onDialectOrElse({
1715
1746
  mysql: () => a === void 0 ? n`MATCH(${r}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)` : n`MATCH(${r}) AGAINST(${a.mysql} IN BOOLEAN MODE)`,
1716
1747
  sqlite: () => {
1717
- let r = n(Fn(e, t));
1748
+ let r = n(Bn(e, t));
1718
1749
  return n`${n("id")} IN (SELECT ${n("row_id")} FROM ${r} WHERE ${r} MATCH ${a?.sqlite ?? e.query})`;
1719
1750
  },
1720
1751
  mssql: o,
1721
- orElse: () => a === void 0 ? n`${Y(e, n)} @@ plainto_tsquery(${e.config ?? "english"}, ${e.query})` : n`${Y(e, n)} @@ to_tsquery(${e.config ?? "english"}, ${a.pg})`
1752
+ orElse: () => a === void 0 ? n`${J(e, n)} @@ plainto_tsquery(${e.config ?? "english"}, ${e.query})` : n`${J(e, n)} @@ to_tsquery(${e.config ?? "english"}, ${a.pg})`
1722
1753
  });
1723
- }, zn = (e, t, n) => {
1724
- let r = `%${q(e.query)}%`, i = Ln(e), a = () => 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}`);
1754
+ }, Wn = (e, t, n) => {
1755
+ let r = `%${K(e.query)}%`, i = Hn(e), a = () => 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}`);
1725
1756
  return e.fallback === "like" ? a() : n.onDialectOrElse({
1726
1757
  mysql: () => i === void 0 ? n`MATCH(${n.csv(e.columns.map((e) => n`${n(e)}`))}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)` : n`MATCH(${n.csv(e.columns.map((e) => n`${n(e)}`))}) AGAINST(${i.mysql} IN BOOLEAN MODE)`,
1727
1758
  sqlite: () => {
1728
- let r = n(Fn(e, t));
1759
+ let r = n(Bn(e, t));
1729
1760
  return n`COALESCE((SELECT -bm25(${r}) FROM ${r} WHERE ${r} MATCH ${i?.sqlite ?? e.query} AND ${r}.${n("row_id")} = ${n("id")}), 0)`;
1730
1761
  },
1731
1762
  mssql: a,
1732
- orElse: () => i === void 0 ? n`ts_rank(${Y(e, n)}, plainto_tsquery(${e.config ?? "english"}, ${e.query}))` : n`ts_rank(${Y(e, n)}, to_tsquery(${e.config ?? "english"}, ${i.pg}))`
1763
+ orElse: () => i === void 0 ? n`ts_rank(${J(e, n)}, plainto_tsquery(${e.config ?? "english"}, ${e.query}))` : n`ts_rank(${J(e, n)}, to_tsquery(${e.config ?? "english"}, ${i.pg}))`
1733
1764
  });
1734
- }, Bn = (e, t, n) => {
1735
- let r = () => n?.length ? t.csv(n.map((e) => t`${t(e)}`)) : t`*`, i = B(e)?.fields;
1736
- return !i || !Object.values(i).some((e) => e.type === "bigint") ? r() : t.onDialectOrElse({
1737
- sqlite: () => t.csv((n?.length ? n : Object.keys(i)).map((e) => i[e]?.type === "bigint" ? t`CAST(${t(e)} AS TEXT) AS ${t(e)}` : t`${t(e)}`)),
1738
- orElse: r
1765
+ }, Gn = (e, t, n, r) => {
1766
+ let i = (e) => t(r && !e.includes(".") ? `${r}.${e}` : e), a = () => n?.length ? t.csv(n.map((e) => t`${i(e)}`)) : r ? t`${t(r)}.*` : t`*`;
1767
+ return !e || !Object.values(e).some((e) => e.type === "bigint") ? a() : t.onDialectOrElse({
1768
+ sqlite: () => t.csv((n?.length ? n : Object.keys(e)).map((n) => e[n]?.type === "bigint" ? t`CAST(${i(n)} AS TEXT) AS ${t(n)}` : t`${i(n)}`)),
1769
+ orElse: a
1739
1770
  });
1740
- }, Vn = (e, t) => {
1741
- let n = e.lastIndexOf("."), r = n < 0 ? e : e.slice(n + 1), i = n < 0 ? void 0 : e.slice(0, n), a = i === void 0 || i === t.alias || i === t.table ? t.table : t.joins?.find((e) => e.alias === i)?.table;
1742
- return a === void 0 ? void 0 : B(a)?.fields?.[r]?.type;
1743
- }, X = (e, t, n = null) => {
1771
+ }, Kn = (e, t, n) => Gn(R(e)?.fields, t, n), Y = (e, t, n = null) => {
1744
1772
  if (e.setOp && e.setOp.queries.length >= 2) {
1745
- 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`(${X(e, t, n)})`).reduce((e, n, i) => i === 0 ? n : t`${e} ${t.unsafe(r)} ${n}`), a = [];
1746
- if (V(e).length > 0 && a.push(t` ORDER BY ${t.csv(V(e).map((e) => e.direction === "desc" ? t`${t(e.column)} DESC` : t`${t(e.column)} ASC`))}`), e.take !== void 0) {
1773
+ 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`(${Y(e, t, n)})`).reduce((e, n, i) => i === 0 ? n : t`${e} ${t.unsafe(r)} ${n}`), a = [];
1774
+ if (z(e).length > 0 && a.push(t` ORDER BY ${t.csv(z(e).map((e) => e.direction === "desc" ? t`${t(e.column)} DESC` : t`${t(e.column)} ASC`))}`), e.take !== void 0) {
1747
1775
  if (!Number.isInteger(e.take) || e.take < 0) throw E(`compileSelect: invalid take ${e.take}`);
1748
1776
  a.push(t` LIMIT ${t.unsafe(String(e.take))}`);
1749
1777
  }
@@ -1753,7 +1781,7 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1753
1781
  }
1754
1782
  return t`${i}${a.reduce((e, n) => t`${e}${n}`, t``)}`;
1755
1783
  }
1756
- let r = e.annClause === void 0 ? null : Mn(e.annClause, t);
1784
+ let r = e.annClause === void 0 ? null : Ln(e.annClause, t);
1757
1785
  e.spatialClause !== void 0 && t.onDialectOrElse({
1758
1786
  mysql: () => {
1759
1787
  throw E("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
@@ -1766,13 +1794,13 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1766
1794
  },
1767
1795
  orElse: () => t``
1768
1796
  });
1769
- let i = e.spatialClause?.projectAs === void 0 ? null : Nn(e.spatialClause, t), a = e.aggregations && e.aggregations.length > 0 ? An(e.aggregations, t) : e.joinedProjection && e.joinedProjection.length > 0 ? t.csv(e.joinedProjection.map((n) => {
1797
+ let i = e.spatialClause?.projectAs === void 0 ? null : Rn(e.spatialClause, t), a = e.aggregations && e.aggregations.length > 0 ? Fn(e.aggregations, t) : e.joinedProjection && e.joinedProjection.length > 0 ? t.csv(e.joinedProjection.map((n) => {
1770
1798
  let r = t`${t(n.source)}`;
1771
- return t`${Vn(n.source, e) === "bigint" ? t.onDialectOrElse({
1799
+ return t`${Mn(n.source, e)?.type === "bigint" ? t.onDialectOrElse({
1772
1800
  sqlite: () => t`CAST(${r} AS TEXT)`,
1773
1801
  orElse: () => r
1774
1802
  }) : r} AS ${t(n.outputKey)}`;
1775
- })) : Bn(e.table, t, e.projection), 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 ? zn(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({
1803
+ })) : Gn((e.sourceTable?.tableName === e.table ? e.sourceTable : R(e.table))?.fields, t, e.projection, (e.joins?.length ?? 0) > 0 ? e.alias ?? e.table : void 0), 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 ? Wn(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({
1776
1804
  orElse: () => t`DISTINCT ON (${t.csv(e.distinctOn.map((e) => t`${t(e)}`))}) `,
1777
1805
  mysql: () => t`DISTINCT `,
1778
1806
  mssql: () => t`DISTINCT `,
@@ -1784,13 +1812,13 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1784
1812
  mssql: () => t``,
1785
1813
  sqlite: () => t``,
1786
1814
  orElse: () => t` FOR UPDATE`
1787
- }) : t``, g = e.alias === void 0 ? t`${t(K(n, e.table))}${m}` : t`${t(K(n, e.table))} AS ${t(e.alias)}${m}`, ee = (e.joins ?? []).map((e) => {
1815
+ }) : t``, g = e.alias === void 0 ? t`${t(G(n, e.table))}${m}` : t`${t(G(n, e.table))} AS ${t(e.alias)}${m}`, ee = (e.joins ?? []).map((e) => {
1788
1816
  let r = e.kind === "inner" ? "INNER" : "LEFT";
1789
- return t` ${t.unsafe(r)} JOIN ${t(K(n, e.table))} AS ${t(e.alias)} ON ${J(e.on, t, n)}`;
1790
- }), te = ee.length > 0 ? ee.reduce((e, n) => t`${e}${n}`, g) : g, ne = c === void 0 ? null : Rn(c, e.table, t), _ = [e.predicate ? J(e.predicate, t, n, e.table) : null, ne].filter((e) => e !== null), v = _.length > 0 ? t` WHERE ${t.and(_)}` : t``, re = e.groupBy && e.groupBy.length > 0 ? t` GROUP BY ${t.csv(e.groupBy.map((e) => t`${t(e)}`))}` : t``, y = e.having ? t` HAVING ${J(e.having, t, n, e.table)}` : t``, b = e.skip !== void 0, x = [];
1791
- r !== null && x.push(t`${r} ASC`), e.spatialClause?.order !== void 0 && x.push(e.spatialClause.order === "desc" ? t`${Pn(e.spatialClause, t)} DESC` : t`${Pn(e.spatialClause, t)} ASC`), l !== null && c?.rank?.order === !0 && x.push(t`${l} DESC`);
1792
- for (let n of V(e)) {
1793
- let r = e.joinedProjection?.find((e) => e.outputKey === n.column)?.source ?? n.column, i = !o && Vn(r, e) === "bigint" ? t.onDialectOrElse({
1817
+ return t` ${t.unsafe(r)} JOIN ${t(G(n, e.table))} AS ${t(e.alias)} ON ${q(e.on, t, n)}`;
1818
+ }), te = ee.length > 0 ? ee.reduce((e, n) => t`${e}${n}`, g) : g, ne = c === void 0 ? null : Un(c, e.table, t), _ = [e.predicate ? q(e.predicate, t, n, e.table) : null, ne].filter((e) => e !== null), v = _.length > 0 ? t` WHERE ${t.and(_)}` : t``, re = e.groupBy && e.groupBy.length > 0 ? t` GROUP BY ${t.csv(e.groupBy.map((e) => t`${t(e)}`))}` : t``, y = e.having ? t` HAVING ${q(e.having, t, n, e.table)}` : t``, b = e.skip !== void 0, x = [];
1819
+ r !== null && x.push(t`${r} ASC`), e.spatialClause?.order !== void 0 && x.push(e.spatialClause.order === "desc" ? t`${zn(e.spatialClause, t)} DESC` : t`${zn(e.spatialClause, t)} ASC`), l !== null && c?.rank?.order === !0 && x.push(t`${l} DESC`);
1820
+ for (let n of z(e)) {
1821
+ let r = e.joinedProjection?.find((e) => e.outputKey === n.column)?.source ?? n.column, i = !o && Mn(r, e)?.type === "bigint" ? t.onDialectOrElse({
1794
1822
  sqlite: () => t`${t(r.includes(".") ? r : `${e.alias ?? e.table}.${r}`)}`,
1795
1823
  orElse: () => t`${t(n.column)}`
1796
1824
  }) : t`${t(n.column)}`;
@@ -1802,18 +1830,22 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1802
1830
  }) : t``, S = (e) => {
1803
1831
  if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw E(`compileSelect: expected non-negative integer take/skip, got ${e}`);
1804
1832
  return t.unsafe(String(e));
1805
- }, ae = (e.ctes ?? []).map((e) => t`${t(e.name)} AS (${X(e.descriptor, t, n)})`), oe = (e.ctes ?? []).some((e) => e.recursive === !0), se = ae.length > 0 ? t`WITH ${t.unsafe(oe ? "RECURSIVE " : "")}${t.csv(ae)} ` : t``;
1833
+ }, ae = (e.ctes ?? []).map((e) => t`${t(e.name)} AS (${Y(e.descriptor, t, n)})`), oe = (e.ctes ?? []).some((e) => e.recursive === !0), se = ae.length > 0 ? t`WITH ${t.unsafe(oe ? "RECURSIVE " : "")}${t.csv(ae)} ` : t``;
1806
1834
  return t.onDialectOrElse({
1807
1835
  mssql: () => {
1808
1836
  let n = e.take !== void 0 && !b ? t`TOP ${S(e.take)} ` : t``, r = b ? t` OFFSET ${S(e.skip)} ROWS FETCH NEXT ${S(e.take ?? 2 ** 53 - 1)} ROWS ONLY` : t``;
1809
1837
  return t`${se}SELECT ${n}${f}${d} FROM ${te}${v}${re}${y}${ie}${r}`;
1810
1838
  },
1811
1839
  orElse: () => {
1812
- let n = e.take === void 0 ? t`` : t` LIMIT ${S(e.take)}`, r = b ? t` OFFSET ${S(e.skip)}` : t``;
1840
+ let n = e.take === void 0 ? b ? t.onDialectOrElse({
1841
+ sqlite: () => t` LIMIT -1`,
1842
+ mysql: () => t` LIMIT 18446744073709551615`,
1843
+ orElse: () => t``
1844
+ }) : t`` : t` LIMIT ${S(e.take)}`, r = b ? t` OFFSET ${S(e.skip)}` : t``;
1813
1845
  return t`${se}SELECT ${f}${d} FROM ${te}${v}${re}${y}${ie}${n}${r}${h}`;
1814
1846
  }
1815
1847
  });
1816
- }, Z = (e, t) => {
1848
+ }, X = (e, t) => {
1817
1849
  let n = (e) => {
1818
1850
  if (typeof e != "string" || !/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/.test(e)) return null;
1819
1851
  let [t = "", n = ""] = e.replace(/^[+-]/, "").split("."), r = t.replace(/^0+/, "") || "0";
@@ -1831,73 +1863,73 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1831
1863
  a = t === n ? 0 : t > n ? 1 : -1;
1832
1864
  }
1833
1865
  return a === 0 ? 0 : (a > 0 ? 1 : -1) * (r.negative ? -1 : 1);
1834
- }, Hn = (e, t) => ({
1866
+ }, qn = (e, t) => ({
1835
1867
  column: e,
1836
1868
  op: "eq",
1837
1869
  value: t
1838
- }), Un = (e, t) => ({
1870
+ }), Jn = (e, t) => ({
1839
1871
  column: e,
1840
1872
  op: "neq",
1841
1873
  value: t
1842
- }), Wn = (e, t) => ({
1874
+ }), Yn = (e, t) => ({
1843
1875
  column: e,
1844
1876
  op: "gt",
1845
1877
  value: t
1846
- }), Gn = (e, t) => ({
1878
+ }), Xn = (e, t) => ({
1847
1879
  column: e,
1848
1880
  op: "gte",
1849
1881
  value: t
1850
- }), Kn = (e, t) => ({
1882
+ }), Zn = (e, t) => ({
1851
1883
  column: e,
1852
1884
  op: "lt",
1853
1885
  value: t
1854
- }), qn = (e, t) => ({
1886
+ }), Qn = (e, t) => ({
1855
1887
  column: e,
1856
1888
  op: "lte",
1857
1889
  value: t
1858
- }), Jn = (e, t) => ({
1890
+ }), $n = (e, t) => ({
1859
1891
  column: e,
1860
1892
  op: "in",
1861
1893
  value: t
1862
- }), Yn = (e, t) => ({
1894
+ }), er = (e, t) => ({
1863
1895
  column: e,
1864
1896
  op: "notIn",
1865
1897
  value: t
1866
- }), Xn = (e, t) => ({
1898
+ }), tr = (e, t) => ({
1867
1899
  column: e,
1868
1900
  op: "contains",
1869
1901
  value: t
1870
- }), Zn = (e, t) => ({
1902
+ }), nr = (e, t) => ({
1871
1903
  column: e,
1872
1904
  op: "startsWith",
1873
1905
  value: t
1874
- }), Qn = (e, t) => ({
1906
+ }), rr = (e, t) => ({
1875
1907
  column: e,
1876
1908
  op: "arrayContains",
1877
1909
  value: t
1878
- }), $n = (e, t) => ({
1910
+ }), ir = (e, t) => ({
1879
1911
  column: e,
1880
1912
  op: "arrayOverlaps",
1881
1913
  value: t
1882
- }), er = (e, t) => ({
1914
+ }), ar = (e, t) => ({
1883
1915
  column: e,
1884
1916
  op: "arrayHas",
1885
1917
  value: t
1886
- }), tr = {
1918
+ }), or = {
1887
1919
  column: "id",
1888
1920
  op: "in",
1889
1921
  value: []
1890
- }, nr = (e) => ({
1922
+ }, sr = (e) => ({
1891
1923
  column: e,
1892
1924
  op: "isNull"
1893
- }), rr = (e) => ({
1925
+ }), cr = (e) => ({
1894
1926
  column: e,
1895
1927
  op: "isNotNull"
1896
- }), ir = (e, t) => ({
1928
+ }), lr = (e, t) => ({
1897
1929
  column: e,
1898
1930
  op: "spatial",
1899
1931
  value: t
1900
- }), ar = (...e) => ({ and: e }), or = (...e) => ({ or: e }), sr = (e) => ({ not: e }), cr = (e, ...t) => {
1932
+ }), ur = (...e) => ({ and: e }), dr = (...e) => ({ or: e }), fr = (e) => ({ not: e }), pr = (e, ...t) => {
1901
1933
  if (t.length === 0) throw E(`jsonField("${e}"): at least one path segment is required`);
1902
1934
  let n = (n, r) => ({
1903
1935
  column: e,
@@ -1919,56 +1951,69 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1919
1951
  isNull: () => n("isNull"),
1920
1952
  isNotNull: () => n("isNotNull")
1921
1953
  };
1922
- }, Q = (e) => "descriptor" in e ? e.descriptor : e, lr = (e, t) => ({
1954
+ }, Z = (e) => "descriptor" in e ? e.descriptor : e, mr = (e, t) => ({
1923
1955
  column: e,
1924
1956
  op: "subquery-in",
1925
- subquery: Q(t)
1926
- }), ur = (e, t) => ({
1957
+ subquery: Z(t)
1958
+ }), hr = (e, t) => ({
1927
1959
  column: e,
1928
1960
  op: "subquery-not-in",
1929
- subquery: Q(t)
1930
- }), dr = (e) => ({
1961
+ subquery: Z(t)
1962
+ }), gr = (e) => ({
1931
1963
  op: "exists",
1932
- subquery: Q(e)
1933
- }), fr = (e) => ({
1964
+ subquery: Z(e)
1965
+ }), _r = (e) => ({
1934
1966
  op: "not-exists",
1935
- subquery: Q(e)
1936
- }), pr = /^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?)?$/, mr = (e) => {
1967
+ subquery: Z(e)
1968
+ }), vr = /^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?)?$/, yr = (e) => {
1937
1969
  if (e instanceof Date) return e.getTime();
1938
- if (typeof e == "string" && pr.test(e)) {
1970
+ if (typeof e == "string" && vr.test(e)) {
1939
1971
  let t = Date.parse(e);
1940
1972
  return Number.isNaN(t) ? void 0 : t;
1941
1973
  }
1942
- }, hr = (e, t) => {
1974
+ }, br = (e, t) => {
1943
1975
  if (!(e instanceof Date) && !(t instanceof Date)) return;
1944
- let n = mr(e), r = mr(t);
1976
+ let n = yr(e), r = yr(t);
1945
1977
  return n === void 0 || r === void 0 ? void 0 : [n, r];
1946
- }, gr = (e, t) => {
1978
+ }, xr = (e, t) => {
1947
1979
  if (e === t) return !0;
1948
- let n = hr(e, t);
1980
+ let n = br(e, t);
1949
1981
  return n !== void 0 && n[0] === n[1];
1950
- }, _r = (e, t) => {
1982
+ }, Sr = (e, t) => {
1951
1983
  if (e == null || t == null) return null;
1952
- let n = hr(e, t);
1984
+ let n = br(e, t);
1953
1985
  if (n !== void 0) return n[0] === n[1] ? 0 : n[0] > n[1] ? 1 : -1;
1954
1986
  let r = e instanceof Date ? e.getTime() : e, i = t instanceof Date ? t.getTime() : t;
1955
1987
  return typeof r == typeof i ? r === i ? 0 : r > i ? 1 : -1 : null;
1956
- }, $ = (e, t, n = null, r = {}) => {
1988
+ }, Cr = (e, t, n = null, r = {}) => Q(e, t, n, r) === !0, Q = (e, t, n = null, r = {}) => {
1957
1989
  if (!t) return !1;
1958
- if ("not" in e) return !$(e.not, t, n, r);
1990
+ if ("not" in e) {
1991
+ let i = Q(e.not, t, n, r);
1992
+ return i === null ? null : !i;
1993
+ }
1959
1994
  if ("and" in e) {
1960
- for (let i of e.and) if (!$(i, t, n, r)) return !1;
1961
- return !0;
1995
+ let i = !1;
1996
+ for (let a of e.and) {
1997
+ let e = Q(a, t, n, r);
1998
+ if (e === !1) return !1;
1999
+ e === null && (i = !0);
2000
+ }
2001
+ return !i || null;
1962
2002
  }
1963
2003
  if ("or" in e) {
1964
- for (let i of e.or) if ($(i, t, n, r)) return !0;
1965
- return !1;
2004
+ let i = !1;
2005
+ for (let a of e.or) {
2006
+ let e = Q(a, t, n, r);
2007
+ if (e === !0) return !0;
2008
+ e === null && (i = !0);
2009
+ }
2010
+ return i ? null : !1;
1966
2011
  }
1967
2012
  if (e.op === "subquery-in" || e.op === "subquery-not-in") {
1968
2013
  if (!n) return !1;
1969
2014
  let i = n.get(e.subquery);
1970
2015
  if (!(i instanceof Set)) return !1;
1971
- let a = t[e.column], o = r[e.column]?.type === "decimal" ? [...i].some((e) => Z(a, e) === 0) : i.has(a);
2016
+ let a = t[e.column], o = r[e.column]?.type === "decimal" ? [...i].some((e) => X(a, e) === 0) : i.has(a);
1972
2017
  return e.op === "subquery-in" ? o : !o;
1973
2018
  }
1974
2019
  if (e.op === "exists" || e.op === "not-exists") {
@@ -1976,42 +2021,46 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1976
2021
  let t = n.get(e.subquery), r = typeof t == "number" ? t > 0 : t instanceof Set && t.size > 0;
1977
2022
  return e.op === "exists" ? r : !r;
1978
2023
  }
1979
- let i = e, a = t[i.column], o = r[i.column]?.type === "decimal", s = (e, t) => o && e != null && t != null ? Z(e, t) === 0 : gr(e, t), c = o ? Z : _r;
2024
+ let i = e, a = t[i.column], o = U(i.value) ? i.value : void 0;
2025
+ if (o !== void 0 && (!_n.some((e) => e === i.op) || i.path !== void 0)) throw E("Column references require a scalar comparison without a JSON path");
2026
+ let s = o === void 0 ? i.value : t[o.column];
2027
+ if (o !== void 0 && (a == null || s == null)) return null;
2028
+ let c = r[i.column]?.type === "decimal", l = (e, t) => c && e != null && t != null ? X(e, t) === 0 : xr(e, t), u = c ? X : Sr;
1980
2029
  switch (i.op) {
1981
- case "eq": return s(a, i.value);
1982
- case "neq": return !s(a, i.value);
1983
- case "gt": return (c(a, i.value) ?? -1) > 0;
1984
- case "gte": return (c(a, i.value) ?? -1) >= 0;
1985
- case "lt": return (c(a, i.value) ?? 1) < 0;
1986
- case "lte": return (c(a, i.value) ?? 1) <= 0;
1987
- case "in": return Array.isArray(i.value) && i.value.some((e) => s(a, e));
1988
- case "notIn": return Array.isArray(i.value) && !i.value.some((e) => s(a, e));
1989
- case "contains": return typeof a == "string" && typeof i.value == "string" && a.toLowerCase().includes(i.value.toLowerCase());
1990
- case "startsWith": return typeof a == "string" && typeof i.value == "string" && a.startsWith(i.value);
2030
+ case "eq": return l(a, s);
2031
+ case "neq": return !l(a, s);
2032
+ case "gt": return (u(a, s) ?? -1) > 0;
2033
+ case "gte": return (u(a, s) ?? -1) >= 0;
2034
+ case "lt": return (u(a, s) ?? 1) < 0;
2035
+ case "lte": return (u(a, s) ?? 1) <= 0;
2036
+ case "in": return Array.isArray(s) && s.some((e) => l(a, e));
2037
+ case "notIn": return Array.isArray(s) && !s.some((e) => l(a, e));
2038
+ case "contains": return typeof a == "string" && typeof s == "string" && a.toLowerCase().includes(s.toLowerCase());
2039
+ case "startsWith": return typeof a == "string" && typeof s == "string" && a.startsWith(s);
1991
2040
  case "arrayContains": {
1992
2041
  let e = Array.isArray(a) ? a : [];
1993
- return (Array.isArray(i.value) ? i.value : []).every((t) => e.includes(t));
2042
+ return (Array.isArray(s) ? s : []).every((t) => e.includes(t));
1994
2043
  }
1995
2044
  case "arrayOverlaps": {
1996
2045
  let e = Array.isArray(a) ? a : [];
1997
- return (Array.isArray(i.value) ? i.value : []).some((t) => e.includes(t));
2046
+ return (Array.isArray(s) ? s : []).some((t) => e.includes(t));
1998
2047
  }
1999
- case "arrayHas": return Array.isArray(a) && a.includes(i.value);
2048
+ case "arrayHas": return Array.isArray(a) && a.includes(s);
2000
2049
  case "isNull": return a == null;
2001
2050
  case "isNotNull": return a != null;
2002
2051
  case "spatial": throw E("@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.");
2003
2052
  }
2004
- }, vr = function* (e) {
2053
+ }, $ = function* (e) {
2005
2054
  if ("not" in e) {
2006
- yield* vr(e.not);
2055
+ yield* $(e.not);
2007
2056
  return;
2008
2057
  }
2009
2058
  if ("and" in e) {
2010
- for (let t of e.and) yield* vr(t);
2059
+ for (let t of e.and) yield* $(t);
2011
2060
  return;
2012
2061
  }
2013
2062
  if ("or" in e) {
2014
- for (let t of e.or) yield* vr(t);
2063
+ for (let t of e.or) yield* $(t);
2015
2064
  return;
2016
2065
  }
2017
2066
  e.op === "subquery-in" || e.op === "subquery-not-in" ? yield {
@@ -2021,30 +2070,30 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
2021
2070
  kind: "exists",
2022
2071
  descriptor: e.subquery
2023
2072
  });
2024
- }, yr = function* (e, t = !0) {
2073
+ }, wr = function* (e, t = !0) {
2025
2074
  if ("not" in e) {
2026
- yield* yr(e.not, !1);
2075
+ yield* wr(e.not, !1);
2027
2076
  return;
2028
2077
  }
2029
2078
  if ("and" in e) {
2030
- for (let n of e.and) yield* yr(n, t);
2079
+ for (let n of e.and) yield* wr(n, t);
2031
2080
  return;
2032
2081
  }
2033
2082
  if ("or" in e) {
2034
- for (let t of e.or) yield* yr(t, !1);
2083
+ for (let t of e.or) yield* wr(t, !1);
2035
2084
  return;
2036
2085
  }
2037
2086
  e.op !== "subquery-in" && e.op !== "subquery-not-in" && e.op !== "exists" && e.op !== "not-exists" && (yield {
2038
2087
  ...e,
2039
- conjunctive: t
2088
+ conjunctive: t && !U(e.value)
2040
2089
  });
2041
- }, br = (e, t) => ({
2090
+ }, Tr = (e, t) => ({
2042
2091
  name: e,
2043
2092
  body: t
2044
- }), xr = (e) => {
2093
+ }), Er = (e) => {
2045
2094
  if (e.lifecycle === "cron" && !e.cron) throw Error(`seed "${e.id}": lifecycle 'cron' requires a 'cron' field`);
2046
2095
  if (e.lifecycle === "onSchemaChange" && (!e.watchedTables || e.watchedTables.length === 0)) throw Error(`seed "${e.id}": lifecycle 'onSchemaChange' requires at least one entry in 'watchedTables'`);
2047
- let t = e.steps({ step: br });
2096
+ let t = e.steps({ step: Tr });
2048
2097
  if (t.length === 0) throw Error(`seed "${e.id}": at least one step is required`);
2049
2098
  return {
2050
2099
  __seed: !0,
@@ -2057,76 +2106,76 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
2057
2106
  ...e.fingerprint === void 0 ? {} : { fingerprint: e.fingerprint },
2058
2107
  steps: t
2059
2108
  };
2060
- }, Sr = (e) => typeof e == "object" && !!e && "__seed" in e && e.__seed === !0, Cr = null, wr = null, Tr = (e) => {
2061
- Cr = e;
2062
- }, Er = (e) => {
2063
- wr = e;
2064
- }, Dr = async (e) => {
2065
- let t = Cr;
2109
+ }, Dr = (e) => typeof e == "object" && !!e && "__seed" in e && e.__seed === !0, Or = null, kr = null, Ar = (e) => {
2110
+ Or = e;
2111
+ }, jr = (e) => {
2112
+ kr = e;
2113
+ }, Mr = async (e) => {
2114
+ let t = Or;
2066
2115
  t !== null && await t(e);
2067
- }, Or = async (e) => {
2068
- let t = wr;
2116
+ }, Nr = async (e) => {
2117
+ let t = kr;
2069
2118
  t !== null && e.changedTables.length !== 0 && await t(e);
2070
- }, kr = ["before-schema", "after-schema"], Ar = (e) => {
2119
+ }, Pr = ["before-schema", "after-schema"], Fr = (e) => {
2071
2120
  if (!e.id || e.id.length === 0) throw Error("migration: `id` is required + must be non-empty");
2072
2121
  if (!e.up || !e.down) throw Error(`migration ${e.id}: both \`up\` and \`down\` must be functions`);
2073
- if (!kr.includes(e.phase)) throw Error(`migration ${e.id}: \`phase\` is required and must be one of ${kr.map((e) => `'${e}'`).join(" | ")} — 'before-schema' runs before the declarative apply (a shape change the planner must not compute against), 'after-schema' runs after it (a body that needs the new shape, such as a back-fill into a table this deploy creates)`);
2122
+ if (!Pr.includes(e.phase)) throw Error(`migration ${e.id}: \`phase\` is required and must be one of ${Pr.map((e) => `'${e}'`).join(" | ")} — 'before-schema' runs before the declarative apply (a shape change the planner must not compute against), 'after-schema' runs after it (a body that needs the new shape, such as a back-fill into a table this deploy creates)`);
2074
2123
  return e;
2075
- }, jr = Symbol.for("voltro.migration.irreversible"), Mr = class extends Error {
2124
+ }, Ir = Symbol.for("voltro.migration.irreversible"), Lr = class extends Error {
2076
2125
  migrationId;
2077
2126
  reason;
2078
2127
  _tag = "IrreversibleMigrationError";
2079
2128
  constructor(e, t) {
2080
2129
  super(`migration ${e} cannot be rolled back: ${t}`), this.migrationId = e, this.reason = t, this.name = "IrreversibleMigrationError";
2081
2130
  }
2082
- }, Nr = (e) => {
2131
+ }, Rr = (e) => {
2083
2132
  if (!e || e.trim().length === 0) throw Error("irreversible(): a reason is required");
2084
- return Object.assign(() => t.fail(new Mr("<unknown>", e)), { [jr]: e });
2085
- }, Pr = (e) => {
2086
- let t = e[jr];
2133
+ return Object.assign(() => t.fail(new Lr("<unknown>", e)), { [Ir]: e });
2134
+ }, zr = (e) => {
2135
+ let t = e[Ir];
2087
2136
  return typeof t == "string" ? t : void 0;
2088
- }, Fr = class {
2137
+ }, Br = class {
2089
2138
  reason;
2090
2139
  _tag = "MigrationSkipped";
2091
2140
  constructor(e) {
2092
2141
  this.reason = e;
2093
2142
  }
2094
- }, Ir = class extends Error {
2143
+ }, Vr = class extends Error {
2095
2144
  migrationId;
2096
2145
  failed;
2097
2146
  _tag = "MigrationExpectationFailed";
2098
2147
  constructor(e, t) {
2099
2148
  super(`migration ${e}: ${t.length} post-condition(s) did not hold after up():\n` + t.map((e) => ` - ${e}`).join("\n") + "\n The migration is NOT recorded; the next run applies it again."), this.migrationId = e, this.failed = t, this.name = "MigrationExpectationFailed";
2100
2149
  }
2101
- }, Lr = class extends Error {
2150
+ }, Hr = class extends Error {
2102
2151
  migrationId;
2103
2152
  dialect;
2104
2153
  _tag = "TransactionBrokenByBodyError";
2105
2154
  constructor(e, t) {
2106
2155
  super(`migration ${e} is transactional, and its body COMMITTED the transaction from inside — on ${t} a DDL statement commits everything before it. The work is in the database and the migration is recorded; it will not run again. What did not hold is the all-or-nothing guarantee. Either mark it \`transactional: false\` (per-statement, resumable through your own idempotency) or move the schema change into \`ctx.schema\` in a migration of its own and keep this one to data.`), this.migrationId = e, this.dialect = t, this.name = "TransactionBrokenByBodyError";
2107
2156
  }
2108
- }, Rr = class extends Error {
2157
+ }, Ur = class extends Error {
2109
2158
  migrationId;
2110
2159
  operation;
2111
2160
  _tag = "MigrationNeedsSqlClient";
2112
2161
  constructor(e, t, n) {
2113
2162
  super(`migration ${e}: ${t} — ${n}`), this.migrationId = e, this.operation = t, this.name = "MigrationNeedsSqlClient";
2114
2163
  }
2115
- }, zr = class extends Error {
2164
+ }, Wr = class extends Error {
2116
2165
  table;
2117
2166
  report;
2118
2167
  _tag = "RewriteUnstableError";
2119
2168
  constructor(e, t) {
2120
2169
  super(`rewrite of ${e} did not stabilise after ${t.passes} pass(es): ${t.rewritten} rewritten, ${t.contended} contended on the last pass. Check for concurrent writes and guard values that cannot round-trip exactly before raising maxPasses.`), this.table = e, this.report = t, this.name = "RewriteUnstableError";
2121
2170
  }
2122
- }, Br = /^\d{8}_\d{6}_[a-z0-9_]+\.ts$/, Vr = (e) => typeof e == "object" && !!e && "id" in e && "up" in e && "down" in e && typeof e.id == "string" && typeof e.up == "function" && typeof e.down == "function", Hr = /* @__PURE__ */ new Set(["voltro_isr_cache"]), Ur = (e) => Hr.has(e) || e.startsWith("_voltro_") || e.startsWith("_cloud_") || e.startsWith("cluster_") || e.startsWith("__turso_internal_"), Wr = "_voltro_staging_", Gr = (e) => e.startsWith(Wr), Kr = /__dropped_\d{14}$/, qr = (e) => Kr.test(e), Jr = 7, Yr = (e) => {
2171
+ }, Gr = /^\d{8}_\d{6}_[a-z0-9_]+\.ts$/, Kr = (e) => typeof e == "object" && !!e && "id" in e && "up" in e && "down" in e && typeof e.id == "string" && typeof e.up == "function" && typeof e.down == "function", qr = /* @__PURE__ */ new Set(["voltro_isr_cache"]), Jr = (e) => qr.has(e) || e.startsWith("_voltro_") || e.startsWith("_cloud_") || e.startsWith("cluster_") || e.startsWith("__turso_internal_"), Yr = "_voltro_staging_", Xr = (e) => e.startsWith(Yr), Zr = /__dropped_\d{14}$/, Qr = (e) => Zr.test(e), $r = 7, ei = (e) => {
2123
2172
  let t = /__dropped_(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/.exec(e);
2124
2173
  if (t === null) return;
2125
2174
  let [, n, r, i, a, o, s] = t;
2126
2175
  return new Date(Date.UTC(Number(n), Number(r) - 1, Number(i), Number(a), Number(o), Number(s)));
2127
- }, Xr = (e, t = {}) => {
2176
+ }, ti = (e, t = {}) => {
2128
2177
  let n = t.now ?? /* @__PURE__ */ new Date(), r = t.retentionDays ?? 7, i = [], a = (e, t) => {
2129
- let a = Yr(e);
2178
+ let a = ei(e);
2130
2179
  if (a === void 0) return;
2131
2180
  let o = Math.floor((n.getTime() - a.getTime()) / 864e5);
2132
2181
  o >= r && i.push({
@@ -2135,12 +2184,12 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
2135
2184
  ageDays: o
2136
2185
  });
2137
2186
  };
2138
- for (let t of e.tables) if (a(t.name, t.name), !qr(t.name)) for (let e of t.columns ?? []) a(e.name, `${t.name}.${e.name}`);
2187
+ for (let t of e.tables) if (a(t.name, t.name), !Qr(t.name)) for (let e of t.columns ?? []) a(e.name, `${t.name}.${e.name}`);
2139
2188
  return i;
2140
- }, Zr = (e, t) => {
2189
+ }, ni = (e, t) => {
2141
2190
  let n = e.reduce((e, t) => e.ageDays >= t.ageDays ? e : t), r = (/* @__PURE__ */ new Date(Date.now() - t * 864e5)).toISOString().slice(0, 10);
2142
2191
  return `${e.length} soft-drop snapshot(s) older than ${t} day(s) still hold the dropped data (oldest: ${n.name}, ${n.ageDays}d) — ${e.map((e) => e.name).join(", ")}. Restore with \`voltro db restore-snapshot\` or reclaim with \`voltro db gc-snapshots --before ${r}\`; the window is \`database.softDropRetentionDays\` in app.config.`;
2143
- }, Qr = (e, t) => e.filter((e) => !Ur(e.name) || t.has(e.name)), $r = L("_voltro_migrations", {
2192
+ }, ri = (e, t) => e.filter((e) => !Jr(e.name) || t.has(e.name)), ii = F("_voltro_migrations", {
2144
2193
  id: f({ prefix: "mig" }),
2145
2194
  name: p(),
2146
2195
  hash: p(),
@@ -2152,7 +2201,7 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
2152
2201
  workflowRunId: p().nullable(),
2153
2202
  createdAt: v().default("now"),
2154
2203
  updatedAt: v().default("now").onUpdate("now")
2155
- }).index(["status"]), ei = L("_voltro_seeds", {
2204
+ }).index(["status"]), ai = F("_voltro_seeds", {
2156
2205
  id: f({ prefix: "seed" }),
2157
2206
  name: p(),
2158
2207
  lifecycle: p(),
@@ -2168,19 +2217,19 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
2168
2217
  workflowRunId: p().nullable(),
2169
2218
  createdAt: v().default("now"),
2170
2219
  updatedAt: v().default("now").onUpdate("now")
2171
- }).index(["lifecycle"]).index(["nextRunAt"]), ti = L("_voltro_schema_owner", {
2220
+ }).index(["lifecycle"]).index(["nextRunAt"]), oi = F("_voltro_schema_owner", {
2172
2221
  id: f({ prefix: "own" }),
2173
2222
  appName: p(),
2174
2223
  projectName: p().nullable(),
2175
2224
  frameworkVersion: p().nullable(),
2176
2225
  claimedAt: v().default("now")
2177
- }), ni = L("_voltro_plugin_migrations", {
2226
+ }), si = F("_voltro_plugin_migrations", {
2178
2227
  id: f({ prefix: "plm" }),
2179
2228
  plugin_name: p(),
2180
2229
  migration_id: p(),
2181
2230
  description: p().nullable(),
2182
2231
  applied_at: p()
2183
- }), ri = L("_voltro_migration_plans", {
2232
+ }), ci = F("_voltro_migration_plans", {
2184
2233
  id: f({ prefix: "plan" }),
2185
2234
  fingerprint: p(),
2186
2235
  liveFingerprint: p().nullable(),
@@ -2196,14 +2245,14 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
2196
2245
  appliedAt: v().default("now"),
2197
2246
  createdAt: v().default("now"),
2198
2247
  updatedAt: v().default("now").onUpdate("now")
2199
- }).index(["fingerprint"]).index(["environment"]), ii = L("_voltro_idempotency", {
2248
+ }).index(["fingerprint"]).index(["environment"]), li = F("_voltro_idempotency", {
2200
2249
  id: f({ prefix: "idem" }),
2201
2250
  scope: p(),
2202
2251
  key: p(),
2203
2252
  status: p(),
2204
2253
  response: y().nullable(),
2205
2254
  createdAt: v().default("now")
2206
- }).unique(["scope", "key"]).index(["createdAt"]), ai = L("_voltro_devices", {
2255
+ }).unique(["scope", "key"]).index(["createdAt"]), ui = F("_voltro_devices", {
2207
2256
  id: f({ prefix: "device" }),
2208
2257
  tenantId: p(),
2209
2258
  name: p(),
@@ -2223,20 +2272,20 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
2223
2272
  createdBy: p().nullable(),
2224
2273
  metadata: y().nullable(),
2225
2274
  createdAt: v()
2226
- }).index(["tenantId"]).index(["pairingHash"]).index(["accessHash"]).index(["refreshHash"]).index(["previousRefreshHash"]), oi = L("_voltro_tenant_selections", {
2275
+ }).index(["tenantId"]).index(["pairingHash"]).index(["accessHash"]).index(["refreshHash"]).index(["previousRefreshHash"]), di = F("_voltro_tenant_selections", {
2227
2276
  id: f({ prefix: "tsel" }),
2228
2277
  subjectType: p().maxLength(32),
2229
2278
  subjectId: p(),
2230
2279
  tenantId: p(),
2231
2280
  selectedAt: v()
2232
- }).primaryKey(["id"]).nonReactive(), si = L("_voltro_kv", {
2281
+ }).primaryKey(["id"]).nonReactive(), fi = F("_voltro_kv", {
2233
2282
  id: f({ prefix: "kv" }),
2234
2283
  key: p().unique(),
2235
2284
  value: p().nullable(),
2236
2285
  expiresAt: v().nullable(),
2237
2286
  createdAt: v().default("now"),
2238
2287
  updatedAt: v().default("now").onUpdate("now")
2239
- }).index(["expiresAt"]), ci = L("_voltro_api_keys", {
2288
+ }).index(["expiresAt"]), pi = F("_voltro_api_keys", {
2240
2289
  id: f({ prefix: "apikey" }),
2241
2290
  tenantId: p().nullable(),
2242
2291
  name: p(),
@@ -2251,7 +2300,7 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
2251
2300
  onBehalfOf: p().nullable(),
2252
2301
  metadata: y().nullable(),
2253
2302
  createdAt: v().default("now")
2254
- }).index("byApiKeyTenant", ["tenantId"]), li = L("_voltro_replica_observations", {
2303
+ }).index("byApiKeyTenant", ["tenantId"]), mi = F("_voltro_replica_observations", {
2255
2304
  id: f({ prefix: "robs" }),
2256
2305
  replicaId: p().maxLength(191),
2257
2306
  startedAt: v(),
@@ -2260,11 +2309,11 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
2260
2309
  payload: p().nullable(),
2261
2310
  reachableAt: p().maxLength(255).nullable(),
2262
2311
  writtenAt: v().default("now").onUpdate("now")
2263
- }).unique(["replicaId", "kind"]).index(["kind"]), ui = [
2264
- $r,
2265
- ei,
2266
- ri
2267
- ], di = "_voltro_replace_in_progress", fi = L(di, {
2312
+ }).unique(["replicaId", "kind"]).index(["kind"]), hi = [
2313
+ ii,
2314
+ ai,
2315
+ ci
2316
+ ], gi = "_voltro_replace_in_progress", _i = F(gi, {
2268
2317
  id: f({ prefix: "repl" }),
2269
2318
  startedAt: v().default("now"),
2270
2319
  kind: p().default("replace"),
@@ -2274,10 +2323,10 @@ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
2274
2323
  staging: p().nullable(),
2275
2324
  heartbeatAt: v().nullable(),
2276
2325
  resumable: _().nullable()
2277
- }).nonReactive(), pi = 30, mi = (e, t) => {
2326
+ }).nonReactive(), vi = 30, yi = (e, t) => {
2278
2327
  let n = typeof t == "number" && Number.isFinite(t) && t > 0 ? t : 30, r = Number(e.VOLTRO_STAGING_STALE_MINUTES);
2279
2328
  return (Number.isFinite(r) && r > 0 ? r : n) * 6e4;
2280
- }, hi = (e) => e == null || String(e).length === 0 ? [] : String(e).split(",").map((e) => e.trim()).filter((e) => e.length > 0), gi = (e) => {
2329
+ }, bi = (e) => e == null || String(e).length === 0 ? [] : String(e).split(",").map((e) => e.trim()).filter((e) => e.length > 0), xi = (e) => {
2281
2330
  let t = e.filter((e) => e.kind !== "staging");
2282
2331
  if (t.length !== 0) return `refusing to start: a destructive data operation did not finish.
2283
2332
  ${t.map((e) => {
@@ -2292,7 +2341,7 @@ ${t.map((e) => {
2292
2341
 
2293
2342
  When the data is back, or you have decided the current state is correct, clear the marker:
2294
2343
  voltro data clear-replace-marker --yes`;
2295
- }, _i = (e, t, n) => {
2344
+ }, Si = (e, t, n) => {
2296
2345
  let r = e.filter((e) => e.kind === "staging");
2297
2346
  return {
2298
2347
  all: r,
@@ -2302,7 +2351,7 @@ ${t.map((e) => {
2302
2351
  return Number.isFinite(r) ? t - r >= n : !1;
2303
2352
  })
2304
2353
  };
2305
- }, vi = (e, t) => {
2354
+ }, Ci = (e, t) => {
2306
2355
  if (e.all.length === 0) return;
2307
2356
  let n = new Set(e.droppable.map((e) => e.id));
2308
2357
  return `staged data-import leftovers:
@@ -2313,4 +2362,4 @@ ${e.all.map((e) => {
2313
2362
  a reason to refuse the boot — it is a reason to know the disk is holding a copy of a bundle.`;
2314
2363
  };
2315
2364
  //#endregion
2316
- export { $n as $, Re as $n, Vt as $t, Yr as A, L as An, C as Ar, Dn as At, Pr as B, Be as Bn, ce as Br, un as Bt, Wr as C, Ot as Cn, se as Cr, Z as Ct, qr as D, R as Dn, m as Dr, X as Dt, Ur as E, yt as En, f as Er, Bn as Et, Rr as F, at as Fn, oe as Fr, Sn as Ft, Dr as G, j as Gn, rn as Gt, Ar as H, He as Hn, en as Ht, Fr as I, st as In, ae as Ir, G as It, Tr as J, De as Jn, Lt as Jt, Sr as K, P as Kn, Pt as Kt, zr as L, ot as Ln, o as Lr, mn as Lt, Mr as M, lt as Mn, pe as Mr, vn as Mt, kr as N, ct as Nn, c as Nr, K as Nt, Gr as O, pt as On, ue as Or, q as Ot, Ir as P, ut as Pn, h as Pr, Cn as Pt, er as Q, Le as Qn, Wt as Qt, Lr as R, it as Rn, p as Rr, ln as Rt, Hr as S, Et as Sn, g as Sr, yr as St, Zr as T, bt as Tn, fe as Tr, On as Tt, xr as U, M as Un, nn as Ut, Vr as V, Ve as Vn, pn as Vt, Or as W, N as Wn, tn as Wt, ar as X, Ne as Xn, Mt as Xt, tr as Y, T as Yn, jt as Yt, Qn as Z, Ie as Zn, $t as Zt, ti as _, kt as _n, l as _r, Yn as _t, vi as a, V as an, be as ar, Wn as at, ui as b, At as bn, re as br, ir as bt, mi as c, Xt as cn, ge as cr, lr as ct, ii as d, Ht as dn, S as dr, cr as dt, Bt as en, we as er, vr as et, si as f, Nt as fn, le as fr, Kn as ft, li as g, Dt as gn, ie as gr, fr as gt, ni as h, zt as hn, b as hr, sr as ht, gi as i, Ft as in, ye as ir, dr as it, Br as j, ft as jn, ee as jr, yn as jt, Qr as k, dt as kn, y as kr, En as kt, ci as l, Ut as ln, he as lr, rr as lt, $r as m, Rt as mn, _ as mr, Un as mt, pi as n, Kt as nn, Fe as nr, Hn as nt, _i as o, Qt as on, _e as or, Gn as ot, ri as p, qt as pn, te as pr, qn as pt, Er as q, E as qn, Jt as qt, fi as r, It as rn, Te as rr, $ as rt, hi as s, Zt as sn, ve as sr, Jn as st, di as t, Gt as tn, Pe as tr, Xn as tt, ai as u, Yt as un, u as ur, nr as ut, ei as v, Tt as vn, s as vr, ur as vt, Xr as w, xt as wn, de as wr, J as wt, Jr as x, wt as xn, ne as xr, Zn as xt, oi as y, B as yn, x as yr, or as yt, Nr as z, tt as zn, v as zr, dn as zt };
2365
+ export { ir as $, Ie as $n, tn as $t, ei as A, ht as An, ue as Ar, jn as At, zr as B, ot as Bn, p as Br, dn as Bt, Yr as C, Et as Cn, ne as Cr, X as Ct, Qr as D, St as Dn, fe as Dr, Y as Dt, Jr as E, Ct as En, de as Er, Kn as Et, Ur as F, ut as Fn, c as Fr, En as Ft, Mr as G, M as Gn, an as Gt, Fr as H, Be as Hn, ce as Hr, fn as Ht, Br as I, ft as In, h as Ir, W as It, Ar as J, Ge as Jn, It as Jt, Dr as K, N as Kn, rn as Kt, Wr as L, st as Ln, oe as Lr, vn as Lt, Lr as M, F as Mn, C as Mr, Sn as Mt, Pr as N, mt as Nn, ee as Nr, G as Nt, Xr as O, xt as On, f as Or, K as Ot, Vr as P, dt as Pn, pe as Pr, Dn as Pt, ar as Q, Ne as Qn, Pt as Qt, Hr as R, lt as Rn, ae as Rr, gn as Rt, qr as S, Mt as Sn, re as Sr, wr as St, ni as T, At as Tn, se as Tr, Nn as Tt, Er as U, Ve as Un, hn as Ut, Kr as V, rt as Vn, v as Vr, pn as Vt, Nr as W, He as Wn, nn as Wt, ur as X, De as Xn, zt as Xt, or as Y, E as Yn, Xt as Yt, rr as Z, T as Zn, Nt as Zt, oi as _, Vt as _n, b as _r, er as _t, Ci as a, Rt as an, Te as ar, Yn as at, hi as b, Dt as bn, s as br, lr as bt, yi as c, en as cn, _e as cr, mr as ct, li as d, Gt as dn, he as dr, pr as dt, Kt as en, Le as er, $ as et, fi as f, Zt as fn, u as fr, Zn as ft, mi as g, Bt as gn, _ as gr, _r as gt, si as h, Yt as hn, te as hr, fr as ht, xi as i, Jt as in, Fe as ir, gr as it, Gr as j, pt as jn, y as jr, Cn as jt, ri as k, I as kn, m as kr, An as kt, pi as l, $t as ln, ve as lr, cr as lt, ii as m, Ft as mn, le as mr, Jn as mt, vi as n, Ht as nn, we as nr, qn as nt, Si as o, Lt as on, ye as or, Xn as ot, ci as p, Wt as pn, S as pr, Qn as pt, jr as q, j as qn, on as qt, _i as r, qt as rn, Pe as rr, Cr as rt, bi as s, z as sn, be as sr, $n as st, gi as t, Ut as tn, Re as tr, tr as tt, ui as u, Qt as un, ge as ur, sr as ut, ai as v, kt as vn, ie as vr, hr as vt, ti as w, Ot as wn, g as wr, q as wt, $r as x, R as xn, x as xr, nr as xt, di as y, jt as yn, l as yr, dr as yt, Rr as z, ct as zn, o as zr, U as zt };