@voltro/database 0.86.0 → 0.88.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.
Files changed (172) hide show
  1. package/CHANGELOG.md +5484 -0
  2. package/THIRD-PARTY-NOTICES.md +2 -226
  3. package/dist/actorSnapshot.js +1 -2
  4. package/dist/arrayCodec.js +1 -2
  5. package/dist/branchExecute.js +1 -2
  6. package/dist/branching.js +1 -2
  7. package/dist/bulkInsertLimits.js +16 -12
  8. package/dist/cdcOffsetsTables.js +1 -2
  9. package/dist/changeEvent.js +1 -2
  10. package/dist/changeIdentity.js +1 -2
  11. package/dist/changeListenerCeiling.js +1 -2
  12. package/dist/columnReference.js +1 -2
  13. package/dist/columns.js +1 -2
  14. package/dist/committedChanges.js +1 -2
  15. package/dist/connectionIdentity.js +1 -2
  16. package/dist/coreTables.js +1 -2
  17. package/dist/coreTablesRegistry.js +1 -2
  18. package/dist/dataTransfers.js +3 -3
  19. package/dist/dbCause.js +1 -2
  20. package/dist/dbMetrics.js +1 -2
  21. package/dist/decimalComparison.js +1 -2
  22. package/dist/derivedRowId.js +1 -2
  23. package/dist/dialect.js +1 -2
  24. package/dist/enumRenames.js +1 -2
  25. package/dist/expiresMixin.js +1 -2
  26. package/dist/fieldEncryption.js +65 -43
  27. package/dist/frameworkTables.js +16 -4
  28. package/dist/ginIndex.js +1 -2
  29. package/dist/hybridSearch.js +1 -2
  30. package/dist/idGenerator.js +5 -6
  31. package/dist/identifierLimits.js +1 -2
  32. package/dist/index.d.ts +153 -22
  33. package/dist/index.js +78 -78
  34. package/dist/indexAudit.js +45 -44
  35. package/dist/indexStorage.js +1 -2
  36. package/dist/joinCompiler.js +1 -2
  37. package/dist/jsonEagerCompiler.js +1 -2
  38. package/dist/jsonPatch.js +1 -2
  39. package/dist/jsonPatchAssignments.js +1 -2
  40. package/dist/jsonPath.js +1 -2
  41. package/dist/localFirstMixin.js +1 -2
  42. package/dist/migrate.js +52 -33
  43. package/dist/migration.js +1 -2
  44. package/dist/migrations/appliedAtValue.js +1 -2
  45. package/dist/migrations/applier.js +400 -386
  46. package/dist/migrations/boot.js +2 -3
  47. package/dist/migrations/branchRehearsal.js +1 -2
  48. package/dist/migrations/columnEquivalence.js +1 -2
  49. package/dist/migrations/ddlError.js +1 -2
  50. package/dist/migrations/ddlStatements.js +8 -0
  51. package/dist/migrations/declaredSchema.js +2 -3
  52. package/dist/migrations/deployLedger.js +1 -2
  53. package/dist/migrations/fileBased.js +1 -2
  54. package/dist/migrations/fileContext.js +1 -2
  55. package/dist/migrations/fileDiscovery.js +146 -133
  56. package/dist/migrations/fileSkipProbes.js +1 -2
  57. package/dist/migrations/fingerprint.js +1 -2
  58. package/dist/migrations/fkCycles.js +1 -2
  59. package/dist/migrations/frameworkLiveTables.js +1 -2
  60. package/dist/migrations/idempotentDdl.js +1 -2
  61. package/dist/migrations/indexPredicate.js +1 -2
  62. package/dist/migrations/introspect.js +188 -187
  63. package/dist/migrations/ledgerRows.js +1 -2
  64. package/dist/migrations/lock.js +1 -2
  65. package/dist/migrations/migrationTableExists.js +1 -2
  66. package/dist/migrations/mssqlColumnDependencies.js +1 -2
  67. package/dist/migrations/mysqlEngine.js +1 -2
  68. package/dist/migrations/namespaceCharset.js +1 -2
  69. package/dist/migrations/planner.js +25 -16
  70. package/dist/migrations/postgresEnumCheck.js +5 -3
  71. package/dist/migrations/reactiveTriggerDrift.js +1 -2
  72. package/dist/migrations/reactiveTriggerName.js +1 -2
  73. package/dist/migrations/renameMssqlCheck.js +1 -2
  74. package/dist/migrations/restoreSnapshots.js +1 -2
  75. package/dist/migrations/resumeLedger.js +1 -2
  76. package/dist/migrations/rollingDeploy.js +1 -2
  77. package/dist/migrations/schemaOwner.js +1 -2
  78. package/dist/migrations/schemaOwnerTable.js +1 -2
  79. package/dist/migrations/softDropSnapshot.js +1 -2
  80. package/dist/migrations/sqlLimit.js +1 -2
  81. package/dist/migrations/sqliteCatalogName.js +12 -0
  82. package/dist/migrations/sqliteConstraintIdentity.js +1 -2
  83. package/dist/migrations/sqliteDecimalBoot.js +1 -2
  84. package/dist/migrations/sqliteDecimalPublication.js +1 -2
  85. package/dist/migrations/sqliteDecimalReview.js +1 -2
  86. package/dist/migrations/sqliteDecimalReviewStore.js +1 -2
  87. package/dist/migrations/sqliteDecimalReviewWitness.js +1 -2
  88. package/dist/migrations/sqliteDecimalSource.js +1 -2
  89. package/dist/migrations/sqliteDecimalStage.js +1 -2
  90. package/dist/migrations/sqliteForeignKeys.js +1 -2
  91. package/dist/migrations/sqliteMigrationBatch.js +1 -2
  92. package/dist/migrations/sqliteRetainedSource.js +1 -2
  93. package/dist/migrations/sqliteRowIdentity.js +1 -2
  94. package/dist/migrations/sqliteSchemaEpoch.js +1 -2
  95. package/dist/migrations/sqliteSnapshotGuard.js +1 -2
  96. package/dist/migrations/sqliteTableContents.js +1 -2
  97. package/dist/migrations/sqliteTableCopy.js +1 -2
  98. package/dist/migrations/sqliteTableSchema.js +1 -2
  99. package/dist/migrations/sqliteWitnessProtection.js +1 -2
  100. package/dist/migrations/squash.js +1 -2
  101. package/dist/migrations/storeCharset.js +1 -2
  102. package/dist/migrations/transactionCause.js +1 -2
  103. package/dist/migrations/undeclaredCharset.js +1 -2
  104. package/dist/migrations/uniqueActiveLowering.js +1 -2
  105. package/dist/mixins.js +1 -2
  106. package/dist/mssqlDecimalDistinct.js +1 -2
  107. package/dist/mssqlJsonValueCheck.js +1 -2
  108. package/dist/mssqlTextStorage.js +1 -2
  109. package/dist/namespace.js +1 -2
  110. package/dist/optimisticVersion.js +1 -2
  111. package/dist/pendingAttribution.js +1 -2
  112. package/dist/pluginRef.js +1 -2
  113. package/dist/predicate.js +28 -22
  114. package/dist/predicateCoercion.js +1 -2
  115. package/dist/projectedColumn.js +1 -2
  116. package/dist/queryBuilder.js +7 -2
  117. package/dist/rawSql.js +1 -2
  118. package/dist/relations.js +1 -2
  119. package/dist/relationsRegistry.js +1 -2
  120. package/dist/replaceInProgress.js +1 -2
  121. package/dist/requiredColumns.js +1 -2
  122. package/dist/residency.js +1 -2
  123. package/dist/retention.js +1 -2
  124. package/dist/rowDecoder.js +62 -13
  125. package/dist/rowKey.js +1 -2
  126. package/dist/rowSchema.js +1 -2
  127. package/dist/scopeKey.js +1 -2
  128. package/dist/seed.js +1 -2
  129. package/dist/snowflake.js +1 -2
  130. package/dist/sql.d.ts +2746 -3748
  131. package/dist/sql.js +15 -14
  132. package/dist/sqlCompiler.js +89 -73
  133. package/dist/sqlError.js +1 -2
  134. package/dist/sqlMutation.js +54 -0
  135. package/dist/sqlPoolCapacity.js +1 -2
  136. package/dist/sqliteDecimal.js +1 -2
  137. package/dist/sqliteDecimalAggregateSql.js +1 -2
  138. package/dist/sqliteDecimalColumnSql.js +1 -2
  139. package/dist/sqliteDecimalConversion.js +1 -2
  140. package/dist/sqliteDecimalCte.js +1 -2
  141. package/dist/sqliteDecimalEncodeSql.js +1 -2
  142. package/dist/sqliteDecimalOutputs.js +1 -2
  143. package/dist/sqliteDecimalPredicate.js +1 -2
  144. package/dist/sqliteDecimalQuery.js +1 -2
  145. package/dist/sqliteDecimalQueryPlan.js +1 -2
  146. package/dist/sqliteDecimalResultSql.js +1 -2
  147. package/dist/sqliteDecimalRowQuery.js +1 -2
  148. package/dist/sqliteDecimalSetQuery.js +1 -2
  149. package/dist/sqliteDecimalSource.js +1 -2
  150. package/dist/sqliteDecimalStorage.js +1 -2
  151. package/dist/sqliteDecimalSubquery.js +1 -2
  152. package/dist/sqliteDecimalWindowQuery.js +1 -2
  153. package/dist/sqliteValueCoercion.js +1 -2
  154. package/dist/stampId.js +1 -2
  155. package/dist/storeErrors.js +1 -2
  156. package/dist/storeRefusal.js +1 -2
  157. package/dist/stream.js +1 -2
  158. package/dist/subjectGraph.js +1 -2
  159. package/dist/table.js +1 -2
  160. package/dist/tableRegistry.js +1 -2
  161. package/dist/tenantSelection.js +1 -2
  162. package/dist/transactionOutcome.js +5 -3
  163. package/dist/transientContention.js +1 -2
  164. package/dist/typeId.js +50 -0
  165. package/dist/typedStore.js +2 -3
  166. package/dist/upsertUpdate.js +1 -2
  167. package/dist/vectorEmbedding.js +1 -2
  168. package/dist/view.js +1 -2
  169. package/dist/wire.js +1 -2
  170. package/dist/writeAttribution.js +1 -2
  171. package/dist/writeRecorder.js +22 -22
  172. package/package.json +3 -4
package/dist/migrate.js CHANGED
@@ -19,7 +19,7 @@ import { mssqlTextStorageLength as ie } from "./mssqlTextStorage.js";
19
19
  import { Effect as C, Schedule as w } from "effect";
20
20
  import { SqlClient as T } from "effect/sql";
21
21
  import { createLogger as ae } from "@voltro/logger";
22
- //#region src/migrate.ts
22
+ // src/migrate.ts
23
23
  var E = ae({ scope: "voltro:migrate" }), D = (e) => {
24
24
  E.warn(e.replace(/^\[voltro:migrate\]\s*/, ""));
25
25
  }, O = (e, t) => {
@@ -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.length === 0 ? void 0 : n.join("\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.join("\n\n");
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.join("\n\n");
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 = [], p = W(l, t);
509
- p && f.push(p);
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 = [], s = Y(r, t);
546
- s && o.push(s);
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 = "", r = !1;
593
- for (let i = 0; i < e.length; i++) {
594
- if (e.slice(i, i + 2) === "$$") {
595
- r = !r, n += "$$", i += 1;
596
- continue;
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
- let a = e[i], o = /^\s*CREATE\s+(?:TEMP(?:ORARY)?\s+)?TRIGGER\b[\s\S]*\bBEGIN\b/i.test(n) && !/\bEND\s*$/i.test(n);
599
- if (a === ";" && !r && o) n += a;
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* () {
@@ -620,5 +640,4 @@ BEGIN
620
640
  yield* b(i, Q(i, t, n, r.retryFilter), { schema: r.lockSchema }).pipe(C.orDie);
621
641
  }).pipe(C.provide(t)));
622
642
  };
623
- //#endregion
624
643
  export { x as DEFAULT_CDC_CHANNEL, $ as applyNamespacedSchema, ye as applySchema, A as defaultArrayClause, k as defaultClause, j as defaultJsonClause, ve as emitFrameworkBootstrapSql, ge as emitNamespaceProvisionDdl, _e as emitNamespacedSchemaSql, X as emitSchemaSql, xe as ensureFullTextIndexes, Y as enumRenameBlocks, J as enumTypeBlocks, W as extensionBlocks, z as fullTextIndexSql, Se as isReRunSafeDdl, M as numericIdSql, Oe as provisionTenantNamespace, fe as reactiveTriggerRepairSql, ke as runFrameworkBootstrap, De as runMigrate, Ee as splitStatements, O as sqlType };
package/dist/migration.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region src/migration.ts
1
+ // src/migration.ts
2
2
  var e = (e, { apply: t, undo: n }) => ({
3
3
  name: e,
4
4
  apply: t,
@@ -14,5 +14,4 @@ var e = (e, { apply: t, undo: n }) => ({
14
14
  steps: n
15
15
  };
16
16
  }, n = (e) => typeof e == "object" && !!e && "__migration" in e && e.__migration === !0;
17
- //#endregion
18
17
  export { t as defineMigration, n as isMigrationDefinition };
@@ -1,8 +1,7 @@
1
1
  import { Effect as e } from "effect";
2
- //#region src/migrations/appliedAtValue.ts
2
+ // src/migrations/appliedAtValue.ts
3
3
  var t = (t, n) => t.onDialectOrElse({
4
4
  mysql: () => e.succeed(n.replace("T", " ").replace("Z", "")),
5
5
  orElse: () => e.succeed(n)
6
6
  });
7
- //#endregion
8
7
  export { t as appliedAtValue };