@voltro/database 0.86.0 → 0.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5321 -0
- package/THIRD-PARTY-NOTICES.md +1 -225
- package/dist/dataTransfers.js +2 -1
- package/dist/fieldEncryption.js +64 -41
- package/dist/frameworkTables.js +15 -2
- package/dist/idGenerator.js +4 -4
- package/dist/index.d.ts +148 -15
- package/dist/index.js +77 -76
- package/dist/migrate.js +51 -31
- package/dist/migrations/applier.js +399 -384
- package/dist/migrations/ddlStatements.js +9 -0
- package/dist/migrations/fileDiscovery.js +145 -131
- package/dist/migrations/introspect.js +186 -184
- package/dist/migrations/planner.js +24 -14
- package/dist/migrations/postgresEnumCheck.js +4 -1
- package/dist/migrations/sqliteCatalogName.js +13 -0
- package/dist/predicate.js +27 -20
- package/dist/queryBuilder.js +6 -0
- package/dist/rowDecoder.js +61 -11
- package/dist/sql.d.ts +2746 -3748
- package/dist/sql.js +15 -14
- package/dist/sqlCompiler.js +88 -71
- package/dist/sqlMutation.js +55 -0
- package/dist/transactionOutcome.js +4 -1
- package/dist/typeId.js +51 -0
- package/dist/typedStore.js +1 -1
- package/dist/writeRecorder.js +21 -20
- package/package.json +2 -3
package/dist/migrate.js
CHANGED
|
@@ -403,9 +403,9 @@ $$ LANGUAGE plpgsql;
|
|
|
403
403
|
for (let n of e.stale) r.push(`DROP TRIGGER IF EXISTS ${re(n, t)} ON "${n}"`), r.push(`ALTER TABLE "${n}" REPLICA IDENTITY DEFAULT`);
|
|
404
404
|
return r;
|
|
405
405
|
}, W = (e, t) => {
|
|
406
|
-
if (t !== "postgres") return;
|
|
406
|
+
if (t !== "postgres") return [];
|
|
407
407
|
let n = [];
|
|
408
|
-
return pe(e) && n.push("CREATE EXTENSION IF NOT EXISTS vector;"), me(e) && n.push("CREATE EXTENSION IF NOT EXISTS postgis;"), e.some((e) => e.appliedIndexes?.some((e) => e.kind === "gin" && r(e.kindOptions)?.split(".").at(-1) === "gin_trgm_ops")) && n.push("CREATE EXTENSION IF NOT EXISTS pg_trgm;"), n
|
|
408
|
+
return pe(e) && n.push("CREATE EXTENSION IF NOT EXISTS vector;"), me(e) && n.push("CREATE EXTENSION IF NOT EXISTS postgis;"), e.some((e) => e.appliedIndexes?.some((e) => e.kind === "gin" && r(e.kindOptions)?.split(".").at(-1) === "gin_trgm_ops")) && n.push("CREATE EXTENSION IF NOT EXISTS pg_trgm;"), n;
|
|
409
409
|
}, pe = (e) => e.some((e) => Object.values(e.fields).some((e) => e.type === "vector")), me = (e) => e.some((e) => Object.values(e.fields).some((e) => e.spatial !== void 0)), G = (e) => {
|
|
410
410
|
let t = new Map(e.map((e) => [e.tableName, e])), n = v(e.map((e) => e.tableName), (e) => {
|
|
411
411
|
let n = t.get(e);
|
|
@@ -468,7 +468,7 @@ $$ LANGUAGE plpgsql;
|
|
|
468
468
|
}
|
|
469
469
|
return n;
|
|
470
470
|
}, J = (e, t) => {
|
|
471
|
-
if (t !== "postgres") return
|
|
471
|
+
if (t !== "postgres") return [];
|
|
472
472
|
let n = /* @__PURE__ */ new Map();
|
|
473
473
|
for (let t of e) for (let e of Object.values(t.fields)) {
|
|
474
474
|
if (e.type !== "enum" || !e.enumName || !e.enumValues) continue;
|
|
@@ -476,15 +476,15 @@ $$ LANGUAGE plpgsql;
|
|
|
476
476
|
if (t && t.length !== e.enumValues.length) throw Error(`dbEnum '${e.enumName}' declared with conflicting value sets across tables. Define it once and re-use the handle.`);
|
|
477
477
|
n.set(e.enumName, e.enumValues);
|
|
478
478
|
}
|
|
479
|
-
if (n.size === 0) return
|
|
479
|
+
if (n.size === 0) return [];
|
|
480
480
|
let r = [];
|
|
481
481
|
for (let [e, t] of n) {
|
|
482
482
|
let n = t.map((e) => `'${e.replace(/'/g, "''")}'`).join(", ");
|
|
483
483
|
r.push(`DO $$ BEGIN\n IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = '${e.replace(/'/g, "''")}') THEN\n CREATE TYPE "${e}" AS ENUM (${n});\n END IF;\nEND $$;`);
|
|
484
484
|
}
|
|
485
|
-
return r
|
|
485
|
+
return r;
|
|
486
486
|
}, Y = (e, t) => {
|
|
487
|
-
if (t !== "postgres") return
|
|
487
|
+
if (t !== "postgres") return [];
|
|
488
488
|
let r = /* @__PURE__ */ new Set();
|
|
489
489
|
for (let t of e) for (let e of Object.values(t.fields)) e.type === "enum" && e.enumName && r.add(e.enumName);
|
|
490
490
|
let i = [];
|
|
@@ -496,7 +496,7 @@ DECLARE
|
|
|
496
496
|
BEGIN
|
|
497
497
|
SELECT oid INTO type_oid FROM pg_type WHERE typname = '${n}';\n IF type_oid IS NOT NULL\n AND EXISTS (SELECT 1 FROM pg_enum WHERE enumtypid = type_oid AND enumlabel = '${a}')\n AND NOT EXISTS (SELECT 1 FROM pg_enum WHERE enumtypid = type_oid AND enumlabel = '${o}') THEN\n IF current_setting('server_version_num')::int >= 140000 THEN\n EXECUTE format('ALTER TYPE %I RENAME VALUE %L TO %L', '${n}', '${a}', '${o}');\n ELSE\n UPDATE pg_enum SET enumlabel = '${o}' WHERE enumtypid = type_oid AND enumlabel = '${a}';\n END IF;\n END IF;\nEND $$;`);
|
|
498
498
|
}
|
|
499
|
-
return i
|
|
499
|
+
return i;
|
|
500
500
|
}, he = (e) => {
|
|
501
501
|
let t = [], n = [];
|
|
502
502
|
for (let r of e) s(r) ? n.push(r) : t.push(r);
|
|
@@ -505,12 +505,8 @@ BEGIN
|
|
|
505
505
|
views: n
|
|
506
506
|
};
|
|
507
507
|
}, X = (e, t, n = x, r = {}) => {
|
|
508
|
-
let i = I(t, r), { tables: o, views: s } = he(e), { sorted: l, cyclic: u } = G(o.map((e) => _(e, t))), d = q(u, t), f = []
|
|
509
|
-
|
|
510
|
-
let m = Y(l, t);
|
|
511
|
-
m && f.push(m);
|
|
512
|
-
let h = J(l, t);
|
|
513
|
-
h && f.push(h);
|
|
508
|
+
let i = I(t, r), { tables: o, views: s } = he(e), { sorted: l, cyclic: u } = G(o.map((e) => _(e, t))), d = q(u, t), f = [];
|
|
509
|
+
f.push(...W(l, t)), f.push(...Y(l, t)), f.push(...J(l, t));
|
|
514
510
|
for (let e of l) f.push(L(e, t, null, d.get(e.tableName), i));
|
|
515
511
|
if (!a(t)) for (let e of u) f.push(K(e, t));
|
|
516
512
|
for (let e of l) {
|
|
@@ -542,10 +538,8 @@ BEGIN
|
|
|
542
538
|
}
|
|
543
539
|
return p.join("\n\n") + "\n";
|
|
544
540
|
}, ve = (e, t, n = x) => {
|
|
545
|
-
let { sorted: r, cyclic: i } = G(e), a = q(i, t), o = []
|
|
546
|
-
|
|
547
|
-
let c = J(r, t);
|
|
548
|
-
c && o.push(c);
|
|
541
|
+
let { sorted: r, cyclic: i } = G(e), a = q(i, t), o = [];
|
|
542
|
+
o.push(...Y(r, t)), o.push(...J(r, t));
|
|
549
543
|
for (let e of r) o.push(L(e, t, null, a.get(e.tableName)));
|
|
550
544
|
for (let e of i) o.push(K(e, t));
|
|
551
545
|
return o.push(...V(r, t, n)), o.join("\n\n") + "\n";
|
|
@@ -589,21 +583,47 @@ BEGIN
|
|
|
589
583
|
let i = n === "turso" ? Te(t, n, r) : e.withTransaction(Te(t, n, r)), a = (e) => e instanceof Z ? e.error : e;
|
|
590
584
|
return (r !== void 0 && ee(n) === "plan-transactional" ? i.pipe(C.retry(we((e) => r(a(e)) === "retry"))) : i).pipe(C.catch((e) => C.die(e instanceof Z ? Error(g("migrate: statement failed", e.statement, e.error, 400).trim()) : e)));
|
|
591
585
|
}, Ee = (e) => {
|
|
592
|
-
let t = [], n =
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
586
|
+
let t = [], n = 0, r = 0, i = (r) => {
|
|
587
|
+
let i = e.slice(n, r).trim();
|
|
588
|
+
i.length > 0 && t.push(i);
|
|
589
|
+
};
|
|
590
|
+
for (; r < e.length;) {
|
|
591
|
+
let t = e[r];
|
|
592
|
+
if (t === "'" || t === "\"" || t === "`") {
|
|
593
|
+
for (r++; r < e.length;) {
|
|
594
|
+
if (e[r] === t) {
|
|
595
|
+
if (e[r + 1] === t) {
|
|
596
|
+
r += 2;
|
|
597
|
+
continue;
|
|
598
|
+
}
|
|
599
|
+
break;
|
|
600
|
+
}
|
|
601
|
+
r++;
|
|
602
|
+
}
|
|
603
|
+
r++;
|
|
604
|
+
} else if (t === "-" && e[r + 1] === "-") {
|
|
605
|
+
let t = e.indexOf("\n", r);
|
|
606
|
+
r = t < 0 ? e.length : t + 1;
|
|
607
|
+
} else if (t === "/" && e[r + 1] === "*") {
|
|
608
|
+
let t = e.indexOf("*/", r + 2);
|
|
609
|
+
r = t < 0 ? e.length : t + 2;
|
|
610
|
+
} else {
|
|
611
|
+
if (t === "$") {
|
|
612
|
+
let t = /^\$[A-Za-z_]*\$/.exec(e.slice(r))?.[0];
|
|
613
|
+
if (t !== void 0) {
|
|
614
|
+
let n = e.indexOf(t, r + t.length);
|
|
615
|
+
r = n < 0 ? e.length : n + t.length;
|
|
616
|
+
continue;
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
if (t === ";") {
|
|
620
|
+
let t = e.slice(n, r);
|
|
621
|
+
(!/^\s*CREATE\s+(?:TEMP(?:ORARY)?\s+)?TRIGGER\b[\s\S]*\bBEGIN\b/i.test(t) || /\bEND\s*$/i.test(t)) && (i(r), n = r + 1);
|
|
622
|
+
}
|
|
623
|
+
r++;
|
|
597
624
|
}
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
else if (a === ";" && !r) {
|
|
601
|
-
let e = n.trim();
|
|
602
|
-
e.length > 0 && t.push(e), n = "";
|
|
603
|
-
} else n += a;
|
|
604
|
-
}
|
|
605
|
-
let i = n.trim();
|
|
606
|
-
return i.length > 0 && t.push(i), t;
|
|
625
|
+
}
|
|
626
|
+
return i(e.length), t;
|
|
607
627
|
}, De = async (e, t, n = "postgres", r = {}) => {
|
|
608
628
|
await C.runPromise(ye(e, n, void 0, r).pipe(C.provide(t)));
|
|
609
629
|
}, $ = (e, t, n = "postgres", r = {}) => C.gen(function* () {
|