@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
@@ -7,14 +7,15 @@ import { idStorageOfType as o } from "./columnEquivalence.js";
7
7
  import { DEPLOY_LEDGER_TABLE as s } from "./deployLedger.js";
8
8
  import { SCHEMA_OWNER_TABLE as c } from "./schemaOwnerTable.js";
9
9
  import { postgresEnumCheckValues as l } from "./postgresEnumCheck.js";
10
- import { sqliteNamedUniqueConstraints as u, sqliteUniqueColumnsKey as d } from "./sqliteConstraintIdentity.js";
11
- import { Effect as f } from "effect";
12
- //#region src/migrations/introspect.ts
13
- var p = (e) => {
10
+ import { sqliteCatalogKey as u, sqliteCatalogName as d } from "./sqliteCatalogName.js";
11
+ import { sqliteNamedUniqueConstraints as f, sqliteUniqueColumnsKey as p } from "./sqliteConstraintIdentity.js";
12
+ import { Effect as m } from "effect";
13
+ // src/migrations/introspect.ts
14
+ var h = (e) => {
14
15
  let t = [String(e)], n = e.cause;
15
16
  for (let e = 0; e < 6 && n != null; e++) t.push(typeof n == "object" && typeof n.message == "string" ? n.message : String(n)), n = typeof n == "object" ? n.cause : void 0;
16
17
  return t.join(" ");
17
- }, m = (e) => {
18
+ }, g = (e) => {
18
19
  let t = /[`"[]?([A-Za-z_][A-Za-z0-9_]*)[`"\]]?\s*(?:in\b|=)/i.exec(e);
19
20
  if (!t) return null;
20
21
  let n = [...e.replace(/\\'/g, "'").matchAll(/'((?:[^']|'')*)'/g)].map((e) => e[1].replace(/''/g, "'")).filter((e) => e.length > 0);
@@ -22,7 +23,7 @@ var p = (e) => {
22
23
  column: t[1],
23
24
  values: n
24
25
  };
25
- }, h = (e, t) => {
26
+ }, _ = (e, t) => {
26
27
  if (t === "vector" || t === "halfvec") return "vector";
27
28
  switch (e) {
28
29
  case "text":
@@ -50,7 +51,7 @@ var p = (e) => {
50
51
  case "USER-DEFINED": return "text";
51
52
  default: return "text";
52
53
  }
53
- }, g = {
54
+ }, v = {
54
55
  _text: "text",
55
56
  _varchar: "text",
56
57
  _uuid: "text",
@@ -66,10 +67,10 @@ var p = (e) => {
66
67
  _date: "date",
67
68
  _jsonb: "json",
68
69
  _json: "json"
69
- }, _ = (e) => e === void 0 ? void 0 : g[e], v = (e, t) => e == null || e === "" ? void 0 : { generatedAs: {
70
+ }, y = (e) => e === void 0 ? void 0 : v[e], b = (e, t) => e == null || e === "" ? void 0 : { generatedAs: {
70
71
  expr: e,
71
72
  stored: t
72
- } }, y = (e) => {
73
+ } }, x = (e) => {
73
74
  switch (e.toUpperCase()) {
74
75
  case "CASCADE": return "cascade";
75
76
  case "RESTRICT": return "restrict";
@@ -77,25 +78,25 @@ var p = (e) => {
77
78
  case "SET DEFAULT": return "noAction";
78
79
  default: return "noAction";
79
80
  }
80
- }, b = (e, t) => {
81
+ }, S = (e, t) => {
81
82
  let n = e !== void 0 && e !== "" ? Number(e) : NaN;
82
83
  return Number.isInteger(n) && n > 0 ? n : t;
83
- }, x = () => b(process.env.VOLTRO_INTROSPECT_BATCH, 20), S = 300, C = () => {
84
+ }, C = () => S(process.env.VOLTRO_INTROSPECT_BATCH, 20), w = 300, T = () => {
84
85
  let e = process.env.VOLTRO_INTROSPECT_TIMEOUT_MS;
85
- return e !== void 0 && e.trim() === "0" ? 0 : b(e, 3e4);
86
- }, w = (e, t) => {
86
+ return e !== void 0 && e.trim() === "0" ? 0 : S(e, 3e4);
87
+ }, E = (e, t) => {
87
88
  let n = Number.isFinite(t) && t >= 1 ? Math.floor(t) : 1, r = [];
88
89
  for (let t = 0; t < e.length; t += n) r.push(e.slice(t, t + n));
89
90
  return r;
90
- }, T = (e) => {
91
- let n = C(), r = f.gen(function* () {
91
+ }, D = (e) => {
92
+ let n = T(), r = m.gen(function* () {
92
93
  n > 0 && (yield* e.unsafe(`SET LOCAL statement_timeout = ${n}`));
93
- let r = (t) => e.unsafe("(" + t.map((e) => `'${e.replace(/'/g, "''")}'`).join(", ") + ")"), i = (t) => e.unsafe(String(Math.max(0, Math.trunc(t)))), a = x(), s = (e, t) => f.gen(function* () {
94
+ let r = (t) => e.unsafe("(" + t.map((e) => `'${e.replace(/'/g, "''")}'`).join(", ") + ")"), i = (t) => e.unsafe(String(Math.max(0, Math.trunc(t)))), a = C(), s = (e, t) => m.gen(function* () {
94
95
  let n = [];
95
- for (let i of w(e, a)) i.length !== 0 && n.push(...yield* t(r(i)));
96
+ for (let i of E(e, a)) i.length !== 0 && n.push(...yield* t(r(i)));
96
97
  return n;
97
98
  }), c = [];
98
- for (let t = 0;; t += S) {
99
+ for (let t = 0;; t += w) {
99
100
  let n = yield* e`
100
101
  SELECT c.relname AS table_name,
101
102
  COALESCE(c.reltuples::bigint, 0) AS row_count
@@ -103,13 +104,13 @@ var p = (e) => {
103
104
  JOIN pg_namespace n ON n.oid = c.relnamespace
104
105
  WHERE n.nspname = current_schema() AND c.relkind = 'r'
105
106
  ORDER BY c.relname
106
- LIMIT ${i(S)} OFFSET ${i(t)}
107
+ LIMIT ${i(w)} OFFSET ${i(t)}
107
108
  `;
108
- if (c.push(...n), n.length < S) break;
109
+ if (c.push(...n), n.length < w) break;
109
110
  }
110
111
  let u = /* @__PURE__ */ new Set(), d = [];
111
112
  for (let e of c) u.has(e.table_name) || (u.add(e.table_name), d.push(e));
112
- let p = d.map((e) => e.table_name), m = yield* s(p, (t) => e`
113
+ let f = d.map((e) => e.table_name), p = yield* s(f, (t) => e`
113
114
  SELECT table_name, column_name, data_type, udt_name, is_nullable, column_default,
114
115
  character_maximum_length, numeric_precision, numeric_scale,
115
116
  is_generated, generation_expression,
@@ -121,7 +122,7 @@ var p = (e) => {
121
122
  FROM information_schema.columns col
122
123
  WHERE table_schema = current_schema() AND table_name IN ${t}
123
124
  ORDER BY table_name, ordinal_position
124
- `), g = yield* s(p, (t) => e`
125
+ `), h = yield* s(f, (t) => e`
125
126
  SELECT rel.relname AS table_name, att.attname AS column_name
126
127
  FROM pg_constraint con
127
128
  JOIN pg_class rel ON rel.oid = con.conrelid
@@ -130,7 +131,7 @@ var p = (e) => {
130
131
  WHERE con.contype = 'p' AND nsp.nspname = current_schema()
131
132
  AND rel.relname IN ${t}
132
133
  ORDER BY rel.relname, array_position(con.conkey, att.attnum)
133
- `), b = yield* s(p, (t) => e`
134
+ `), g = yield* s(f, (t) => e`
134
135
  SELECT rel.relname AS table_name, con.conname AS constraint_name,
135
136
  att.attname AS column_name, array_position(con.conkey, att.attnum) AS position
136
137
  FROM pg_constraint con
@@ -138,7 +139,7 @@ var p = (e) => {
138
139
  JOIN pg_namespace nsp ON nsp.oid = rel.relnamespace
139
140
  JOIN pg_attribute att ON att.attrelid = rel.oid AND att.attnum = ANY (con.conkey)
140
141
  WHERE con.contype = 'u' AND nsp.nspname = current_schema() AND rel.relname IN ${t}
141
- `), C = yield* s(p, (t) => e`
142
+ `), v = yield* s(f, (t) => e`
142
143
  SELECT rel.relname AS table_name, att.attname AS column_name, pg_get_constraintdef(con.oid) AS def
143
144
  FROM pg_constraint con
144
145
  JOIN pg_class rel ON rel.oid = con.conrelid
@@ -146,16 +147,16 @@ var p = (e) => {
146
147
  JOIN pg_attribute att ON att.attrelid = rel.oid AND att.attnum = con.conkey[1]
147
148
  WHERE con.contype = 'c' AND nsp.nspname = current_schema() AND array_length(con.conkey, 1) = 1
148
149
  AND rel.relname IN ${t}
149
- `), T = yield* f.orElseSucceed(e`
150
+ `), S = yield* m.orElseSucceed(e`
150
151
  SELECT t.typname, e.enumlabel
151
152
  FROM pg_type t JOIN pg_enum e ON e.enumtypid = t.oid
152
153
  WHERE t.typtype = 'e'
153
- ORDER BY t.typname, e.enumsortorder`, () => []), E = /* @__PURE__ */ new Map();
154
- for (let e of T) {
155
- let t = E.get(e.typname);
156
- t ? t.push(e.enumlabel) : E.set(e.typname, [e.enumlabel]);
154
+ ORDER BY t.typname, e.enumsortorder`, () => []), T = /* @__PURE__ */ new Map();
155
+ for (let e of S) {
156
+ let t = T.get(e.typname);
157
+ t ? t.push(e.enumlabel) : T.set(e.typname, [e.enumlabel]);
157
158
  }
158
- let D = new Set(E.keys()), O = (yield* f.orElseSucceed(e`SELECT EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'postgis') AS present`, () => []))[0]?.present === !0 ? yield* e`
159
+ let D = new Set(T.keys()), O = (yield* m.orElseSucceed(e`SELECT EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'postgis') AS present`, () => []))[0]?.present === !0 ? yield* e`
159
160
  SELECT f_table_name AS table_name, f_geometry_column AS column_name,
160
161
  'geometry' AS kind, type AS geom_kind, srid
161
162
  FROM geometry_columns WHERE f_table_schema = current_schema()
@@ -167,11 +168,11 @@ var p = (e) => {
167
168
  geomKind: e.geom_kind,
168
169
  srid: e.srid
169
170
  }])), A = /* @__PURE__ */ new Map();
170
- for (let e of C) {
171
+ for (let e of v) {
171
172
  let t = l(e.def, e.column_name);
172
173
  t !== null && A.set(`${e.table_name}.${e.column_name}`, t);
173
174
  }
174
- let j = yield* s(p, (t) => e`
175
+ let j = yield* s(f, (t) => e`
175
176
  SELECT
176
177
  rel.relname AS source_table,
177
178
  att.attname AS source_column,
@@ -197,7 +198,7 @@ var p = (e) => {
197
198
  WHERE con.contype = 'f' AND nsp.nspname = current_schema()
198
199
  AND rel.relname IN ${t}
199
200
  ORDER BY rel.relname, con.conname, ck.ord
200
- `), M = yield* s(p, (t) => e`
201
+ `), M = yield* s(f, (t) => e`
201
202
  WITH ix AS (
202
203
  SELECT
203
204
  c.relname AS table_name,
@@ -239,26 +240,26 @@ var p = (e) => {
239
240
  )
240
241
  SELECT * FROM ix ORDER BY table_name, index_name, position
241
242
  `), N = /* @__PURE__ */ new Map(), P = /* @__PURE__ */ new Map(), F = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new Map(), L = /* @__PURE__ */ new Map(), R = /* @__PURE__ */ new Map();
242
- for (let e of m) {
243
+ for (let e of p) {
243
244
  let t = N.get(e.table_name);
244
245
  t || (t = [], N.set(e.table_name, t)), t.push(e);
245
246
  }
246
- for (let e of g) {
247
+ for (let e of h) {
247
248
  let t = P.get(e.table_name);
248
249
  t || (t = /* @__PURE__ */ new Set(), P.set(e.table_name, t)), t.add(e.column_name);
249
250
  }
250
- let B = /* @__PURE__ */ new Map();
251
- for (let e of b) {
252
- let t = `${e.table_name}\u0000${e.constraint_name}`, n = B.get(t);
251
+ let z = /* @__PURE__ */ new Map();
252
+ for (let e of g) {
253
+ let t = `${e.table_name}\u0000${e.constraint_name}`, n = z.get(t);
253
254
  n || (n = {
254
255
  table: e.table_name,
255
256
  columns: []
256
- }, B.set(t, n)), n.columns.push({
257
+ }, z.set(t, n)), n.columns.push({
257
258
  name: e.column_name,
258
259
  position: e.position
259
260
  });
260
261
  }
261
- for (let [e, t] of B) {
262
+ for (let [e, t] of z) {
262
263
  let n = [...t.columns].sort((e, t) => e.position - t.position).map((e) => e.name);
263
264
  if (n.length === 1) {
264
265
  let e = F.get(t.table);
@@ -283,14 +284,14 @@ var p = (e) => {
283
284
  let n = t.get(e.index_name);
284
285
  n || (n = [], t.set(e.index_name, n)), n.push(e);
285
286
  }
286
- let V = [];
287
+ let B = [];
287
288
  for (let e of d) {
288
289
  let n = /* @__PURE__ */ new Set(), r = (N.get(e.table_name) ?? []).filter((e) => !n.has(e.column_name) && (n.add(e.column_name), !0)), i = P.get(e.table_name) ?? /* @__PURE__ */ new Set(), a = F.get(e.table_name) ?? /* @__PURE__ */ new Set(), s = L.get(e.table_name) ?? [], c = new Map(s.map((e) => [e.source_column, e])), l = new Set(r.filter((e) => e.udt_name === "tsvector").map((e) => e.column_name)), u = r.filter((e) => !l.has(e.column_name)).map((t) => {
289
- let n = i.has(t.column_name) && i.size === 1, r = c.get(t.column_name), s = t.data_type === "USER-DEFINED" && t.udt_name !== void 0 && D.has(t.udt_name), l = s ? "enum" : h(t.data_type, t.udt_name), u = !r && n && t.column_name === "id", d = r ? "reference" : u ? "id" : l, f = r ? {
290
+ let n = i.has(t.column_name) && i.size === 1, r = c.get(t.column_name), s = t.data_type === "USER-DEFINED" && t.udt_name !== void 0 && D.has(t.udt_name), l = s ? "enum" : _(t.data_type, t.udt_name), u = !r && n && t.column_name === "id", d = r ? "reference" : u ? "id" : l, f = r ? {
290
291
  table: r.target_table,
291
292
  column: r.target_column,
292
- onDelete: y(r.delete_rule),
293
- onUpdate: y(r.update_rule),
293
+ onDelete: x(r.delete_rule),
294
+ onUpdate: x(r.update_rule),
294
295
  constraintName: r.constraint_name
295
296
  } : void 0, p = A.get(`${e.table_name}.${t.column_name}`);
296
297
  return {
@@ -298,16 +299,16 @@ var p = (e) => {
298
299
  type: d,
299
300
  ...s ? {
300
301
  enumName: t.udt_name,
301
- enumValues: E.get(t.udt_name) ?? []
302
+ enumValues: T.get(t.udt_name) ?? []
302
303
  } : {},
303
- ...d === "array" && _(t.udt_name) !== void 0 ? { arrayElement: _(t.udt_name) } : {},
304
+ ...d === "array" && y(t.udt_name) !== void 0 ? { arrayElement: y(t.udt_name) } : {},
304
305
  ...k.has(`${e.table_name}.${t.column_name}`) ? { spatial: k.get(`${e.table_name}.${t.column_name}`) } : {},
305
306
  ...u ? { idStorage: o(l) } : {},
306
307
  ...d === "vector" ? {
307
308
  vectorPrecision: t.udt_name === "halfvec" ? "half" : "float32",
308
309
  ...t.type_modifier !== void 0 && t.type_modifier > 0 ? { vectorDim: t.type_modifier } : {}
309
310
  } : {},
310
- ...z(t.data_type, t.character_maximum_length) === void 0 ? {} : { maxLength: z(t.data_type, t.character_maximum_length) },
311
+ ...V(t.data_type, t.character_maximum_length) === void 0 ? {} : { maxLength: V(t.data_type, t.character_maximum_length) },
311
312
  ...l === "decimal" && typeof t.numeric_precision == "number" ? {
312
313
  precision: t.numeric_precision,
313
314
  ...typeof t.numeric_scale == "number" ? { scale: t.numeric_scale } : {}
@@ -317,9 +318,9 @@ var p = (e) => {
317
318
  hasDefault: t.column_default !== null,
318
319
  ...t.column_default === null ? {} : { defaultValue: t.column_default },
319
320
  ...f ? { references: f } : {},
320
- ...r ? { referenceStorage: ["integer", "bigint"].includes(h(t.data_type, t.udt_name)) ? "numeric" : "text" } : {},
321
+ ...r ? { referenceStorage: ["integer", "bigint"].includes(_(t.data_type, t.udt_name)) ? "numeric" : "text" } : {},
321
322
  ...p ? { oneOf: p } : {},
322
- ...v(t.is_generated === "ALWAYS" ? t.generation_expression ?? "generated" : null, !0) ?? {}
323
+ ...b(t.is_generated === "ALWAYS" ? t.generation_expression ?? "generated" : null, !0) ?? {}
323
324
  };
324
325
  }), d = [], f = R.get(e.table_name);
325
326
  if (f) for (let [n, r] of f) {
@@ -356,20 +357,20 @@ var p = (e) => {
356
357
  unique: !0
357
358
  });
358
359
  let p = Number(e.row_count ?? 0);
359
- V.push({
360
+ B.push({
360
361
  name: e.table_name,
361
362
  columns: u,
362
363
  indexes: d,
363
364
  ...p > 0 ? { rowCount: p } : {}
364
365
  });
365
366
  }
366
- return { tables: V };
367
+ return { tables: B };
367
368
  });
368
- return (n > 0 ? e.withTransaction(r) : r).pipe(f.catch((e) => {
369
- let t = p(e).toLowerCase();
370
- return t.includes("statement timeout") || t.includes("57014") ? f.die(/* @__PURE__ */ Error(`schema introspection exceeded VOLTRO_INTROSPECT_TIMEOUT_MS (${n}ms) — the schema is very large / FK-dense or the database is slow. Raise VOLTRO_INTROSPECT_TIMEOUT_MS, set it to 0 to disable the ceiling, or use DB_DIRECT_URL for a non-pooler connection.`)) : f.fail(e);
369
+ return (n > 0 ? e.withTransaction(r) : r).pipe(m.catch((e) => {
370
+ let t = h(e).toLowerCase();
371
+ return t.includes("statement timeout") || t.includes("57014") ? m.die(/* @__PURE__ */ Error(`schema introspection exceeded VOLTRO_INTROSPECT_TIMEOUT_MS (${n}ms) — the schema is very large / FK-dense or the database is slow. Raise VOLTRO_INTROSPECT_TIMEOUT_MS, set it to 0 to disable the ceiling, or use DB_DIRECT_URL for a non-pooler connection.`)) : m.fail(e);
371
372
  }));
372
- }, E = (e, t) => {
373
+ }, O = (e, t) => {
373
374
  switch (e.toLowerCase()) {
374
375
  case "varchar":
375
376
  case "char":
@@ -401,22 +402,22 @@ var p = (e) => {
401
402
  case "json": return "json";
402
403
  default: return "text";
403
404
  }
404
- }, D = (e) => e.map((e) => {
405
+ }, k = (e) => e.map((e) => {
405
406
  let t = e, n = {};
406
407
  for (let e of Object.keys(t)) n[e.toLowerCase()] = t[e];
407
408
  return n;
408
- }), O = (e) => f.gen(function* () {
409
- let t = D(yield* e`
409
+ }), A = (e) => m.gen(function* () {
410
+ let t = k(yield* e`
410
411
  SELECT table_name, COALESCE(table_rows, 0) AS table_rows
411
412
  FROM information_schema.tables
412
413
  WHERE table_schema = DATABASE() AND table_type = 'BASE TABLE'
413
- ORDER BY table_name`), n = D(yield* e`
414
+ ORDER BY table_name`), n = k(yield* e`
414
415
  SELECT table_name, column_name, data_type, column_type, is_nullable, column_default, column_key,
415
416
  character_maximum_length, numeric_precision, numeric_scale,
416
417
  generation_expression, extra, character_set_name
417
418
  FROM information_schema.columns
418
419
  WHERE table_schema = DATABASE()
419
- ORDER BY table_name, ordinal_position`), r = D(yield* e`
420
+ ORDER BY table_name, ordinal_position`), r = k(yield* e`
420
421
  SELECT k.table_name AS source_table,
421
422
  k.column_name AS source_column,
422
423
  k.referenced_table_name AS target_table,
@@ -427,7 +428,7 @@ var p = (e) => {
427
428
  JOIN information_schema.referential_constraints r
428
429
  ON k.constraint_name = r.constraint_name
429
430
  AND k.table_schema = r.constraint_schema
430
- WHERE k.table_schema = DATABASE() AND k.referenced_table_name IS NOT NULL`), i = D(yield* e`
431
+ WHERE k.table_schema = DATABASE() AND k.referenced_table_name IS NOT NULL`), i = k(yield* e`
431
432
  SELECT table_name, index_name, non_unique, column_name, seq_in_index
432
433
  FROM information_schema.statistics
433
434
  WHERE table_schema = DATABASE() AND index_name <> 'PRIMARY' AND index_type <> 'FULLTEXT'
@@ -440,41 +441,41 @@ var p = (e) => {
440
441
  JOIN information_schema.table_constraints tc
441
442
  ON tc.constraint_schema = cc.constraint_schema
442
443
  AND tc.constraint_name = cc.constraint_name
443
- WHERE cc.constraint_schema = DATABASE()`.unprepared, c = D(yield* a.pipe(f.catch(() => s), f.orElseSucceed(() => []))), l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Map();
444
+ WHERE cc.constraint_schema = DATABASE()`.unprepared, c = k(yield* a.pipe(m.catch(() => s), m.orElseSucceed(() => []))), l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Map();
444
445
  for (let e of c) {
445
446
  let t = /json_valid\(`?([^`)]+)`?\)/i.exec(e.check_clause);
446
447
  if (t) {
447
448
  l.add(`${e.table_name}.${t[1]}`);
448
449
  continue;
449
450
  }
450
- let n = m(e.check_clause);
451
+ let n = g(e.check_clause);
451
452
  n && u.set(`${e.table_name}.${n.column}`, n.values);
452
453
  }
453
- let d = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map(), h = /* @__PURE__ */ new Map();
454
+ let d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map();
454
455
  for (let e of n) {
455
456
  let t = d.get(e.table_name) ?? [];
456
457
  t.push(e), d.set(e.table_name, t);
457
458
  }
458
459
  for (let e of r) {
459
- let t = p.get(e.source_table) ?? [];
460
- t.push(e), p.set(e.source_table, t);
460
+ let t = f.get(e.source_table) ?? [];
461
+ t.push(e), f.set(e.source_table, t);
461
462
  }
462
463
  for (let e of i) {
463
- let t = h.get(e.table_name);
464
- t || (t = /* @__PURE__ */ new Map(), h.set(e.table_name, t));
464
+ let t = p.get(e.table_name);
465
+ t || (t = /* @__PURE__ */ new Map(), p.set(e.table_name, t));
465
466
  let n = t.get(e.index_name) ?? [];
466
467
  n.push(e), t.set(e.index_name, n);
467
468
  }
468
- let g = [];
469
+ let h = [];
469
470
  for (let e of t) {
470
- let t = d.get(e.table_name) ?? [], n = p.get(e.table_name) ?? [], r = new Map(n.map((e) => [e.source_column, e])), i = t.filter((e) => e.column_key === "PRI").map((e) => e.column_name), a = /* @__PURE__ */ new Set(), s = h.get(e.table_name);
471
+ let t = d.get(e.table_name) ?? [], n = f.get(e.table_name) ?? [], r = new Map(n.map((e) => [e.source_column, e])), i = t.filter((e) => e.column_key === "PRI").map((e) => e.column_name), a = /* @__PURE__ */ new Set(), s = p.get(e.table_name);
471
472
  if (s) for (let e of s.values()) e.length === 1 && e[0].non_unique === 0 && a.add(e[0].column_name);
472
473
  let c = t.map((t) => {
473
- let n = i.includes(t.column_name) && i.length === 1, s = r.get(t.column_name), c = l.has(`${e.table_name}.${t.column_name}`) ? "json" : E(t.data_type, t.column_type), d = !s && n && t.column_name === "id", f = s ? "reference" : d ? "id" : c, p = s ? {
474
+ let n = i.includes(t.column_name) && i.length === 1, s = r.get(t.column_name), c = l.has(`${e.table_name}.${t.column_name}`) ? "json" : O(t.data_type, t.column_type), d = !s && n && t.column_name === "id", f = s ? "reference" : d ? "id" : c, p = s ? {
474
475
  table: s.target_table,
475
476
  column: s.target_column,
476
- onDelete: y(s.delete_rule),
477
- onUpdate: y(s.update_rule),
477
+ onDelete: x(s.delete_rule),
478
+ onUpdate: x(s.update_rule),
478
479
  constraintName: s.constraint_name
479
480
  } : void 0, m = a.has(t.column_name) || n && t.column_name === "id", h = t.column_default === "NULL" ? null : t.column_default, g = u.get(`${e.table_name}.${t.column_name}`), _ = t.data_type.toLowerCase() === "enum" ? [...t.column_type.matchAll(/'((?:[^']|'')*)'/g)].map((e) => e[1].replace(/''/g, "'")) : void 0;
480
481
  return {
@@ -483,7 +484,7 @@ var p = (e) => {
483
484
  ...d ? { idStorage: o(c) } : {},
484
485
  ...f === "enum" && _ !== void 0 ? { enumValues: _ } : {},
485
486
  nullable: t.is_nullable === "YES",
486
- ...z(t.data_type, t.character_maximum_length) === void 0 ? {} : { maxLength: z(t.data_type, t.character_maximum_length) },
487
+ ...V(t.data_type, t.character_maximum_length) === void 0 ? {} : { maxLength: V(t.data_type, t.character_maximum_length) },
487
488
  ...c === "decimal" && typeof t.numeric_precision == "number" ? {
488
489
  precision: t.numeric_precision,
489
490
  ...typeof t.numeric_scale == "number" ? { scale: t.numeric_scale } : {}
@@ -492,41 +493,41 @@ var p = (e) => {
492
493
  hasDefault: h !== null,
493
494
  ...h === null ? {} : { defaultValue: h },
494
495
  ...p ? { references: p } : {},
495
- ...s ? { referenceStorage: ["integer", "bigint"].includes(E(t.data_type, t.column_type)) ? "numeric" : "text" } : {},
496
+ ...s ? { referenceStorage: ["integer", "bigint"].includes(O(t.data_type, t.column_type)) ? "numeric" : "text" } : {},
496
497
  ...g ? { oneOf: g } : {},
497
- ...v(t.generation_expression, /STORED/i.test(t.extra ?? "")) ?? {},
498
+ ...b(t.generation_expression, /STORED/i.test(t.extra ?? "")) ?? {},
498
499
  ...t.character_set_name !== null && t.character_set_name !== void 0 && f !== "json" ? { charset: t.character_set_name } : {}
499
500
  };
500
- }), f = new Set(n.map((e) => e.source_column)), m = [];
501
+ }), m = new Set(n.map((e) => e.source_column)), g = [];
501
502
  if (s) for (let [t, n] of s) {
502
503
  let r = [...n].sort((e, t) => e.seq_in_index - t.seq_in_index);
503
- (r.length !== 1 || r[0].non_unique !== 0) && (r.length === 1 && r[0].non_unique !== 0 && f.has(r[0].column_name) && t !== `${e.table_name}_${r[0].column_name}_idx` || m.push({
504
+ r.length === 1 && r[0].non_unique === 0 || r.length === 1 && r[0].non_unique !== 0 && m.has(r[0].column_name) && t !== `${e.table_name}_${r[0].column_name}_idx` || g.push({
504
505
  name: t,
505
506
  table: e.table_name,
506
507
  columns: r.map((e) => e.column_name),
507
508
  unique: r[0].non_unique === 0
508
- }));
509
+ });
509
510
  }
510
- i.length > 0 && m.push({
511
+ i.length > 0 && g.push({
511
512
  name: `${e.table_name}_pkey`,
512
513
  table: e.table_name,
513
514
  columns: i,
514
515
  unique: !0
515
516
  });
516
517
  let _ = Number(e.table_rows ?? 0);
517
- g.push({
518
+ h.push({
518
519
  name: e.table_name,
519
520
  columns: c,
520
- indexes: m,
521
+ indexes: g,
521
522
  ..._ > 0 ? { rowCount: _ } : {}
522
523
  });
523
524
  }
524
- return { tables: g };
525
- }), k = (t) => {
525
+ return { tables: h };
526
+ }), j = (t) => {
526
527
  if (e(t)) return "decimal";
527
528
  let n = t.toUpperCase();
528
529
  return n.includes("INT") ? "integer" : n.includes("CHAR") || n.includes("CLOB") || n.includes("TEXT") ? "text" : n.includes("REAL") || n.includes("FLOA") || n.includes("DOUB") ? "real" : n.includes("BLOB") ? "bytes" : /^(NUMERIC|DECIMAL)\b/.test(n.trim()) ? "decimal" : "text";
529
- }, A = (e) => e === 1 || e === !0, j = [
530
+ }, M = (e) => e === 1 || e === !0, N = [
530
531
  "content",
531
532
  "data",
532
533
  "idx",
@@ -535,35 +536,36 @@ var p = (e) => {
535
536
  "segments",
536
537
  "segdir",
537
538
  "stat"
538
- ], M = (t) => f.gen(function* () {
539
+ ], P = (t) => m.gen(function* () {
539
540
  let n = yield* t`
540
541
  SELECT name, sql FROM sqlite_master
541
542
  WHERE type = 'table' AND name NOT LIKE 'sqlite_%'
542
- ORDER BY name`, r = (e) => `'${e.replace(/'/g, "''")}'`, i = [], s = n.filter((e) => /^\s*CREATE\s+VIRTUAL\s+TABLE\b/i.test(e.sql ?? "")).map((e) => e.name), c = new Set(s);
543
- for (let e of s) for (let t of j) c.add(`${e}_${t}`);
544
- let l = (e) => c.has(e);
545
- for (let { name: s, sql: c } of n.filter((e) => !l(e.name))) {
546
- let n = /* @__PURE__ */ new Map();
547
- for (let e of (c ?? "").matchAll(/CHECK\s*\(\s*"([^"]+)"\s+IN\s*\(([^)]*)\)/gi)) {
543
+ ORDER BY name`, r = new Map(n.map((e) => [u(e.name), d("table", e.name, e.sql)])), i = yield* t`
544
+ SELECT name, sql FROM sqlite_master WHERE type = 'index'`, s = new Map(i.map((e) => [e.name, e.sql])), c = (e) => `'${e.replace(/'/g, "''")}'`, l = [], m = n.filter((e) => /^\s*CREATE\s+VIRTUAL\s+TABLE\b/i.test(e.sql ?? "")).map((e) => e.name), h = new Set(m);
545
+ for (let e of m) for (let t of N) h.add(`${e}_${t}`);
546
+ let g = (e) => h.has(e);
547
+ for (let { name: i, sql: m } of n.filter((e) => !g(e.name))) {
548
+ let n = r.get(u(i)) ?? i, h = /* @__PURE__ */ new Map();
549
+ for (let e of (m ?? "").matchAll(/CHECK\s*\(\s*"([^"]+)"\s+IN\s*\(([^)]*)\)/gi)) {
548
550
  let t = [...e[2].matchAll(/'((?:[^']|'')*)'/g)].map((e) => e[1].replace(/''/g, "'"));
549
- t.length > 0 && n.set(e[1], t);
551
+ t.length > 0 && h.set(e[1], t);
550
552
  }
551
- let l = yield* t.unsafe(`PRAGMA table_xinfo(${r(s)})`), f = yield* t.unsafe(`PRAGMA foreign_key_list(${r(s)})`), p = yield* t.unsafe(`PRAGMA index_list(${r(s)})`), m = new Map(f.map((e) => [e.from, e])), h = l.filter((e) => e.pk > 0).sort((e, t) => e.pk - t.pk).map((e) => e.name), g = new Map(l.map((e) => [e.name.toLowerCase(), e.name])), _ = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), x = /* @__PURE__ */ new Set();
552
- for (let e of p) {
553
- let n = (yield* t.unsafe(`PRAGMA index_info(${r(e.name)})`)).map((e) => e.name).filter((e) => e !== null).map((e) => g.get(e.toLowerCase()) ?? e);
554
- if (_.set(e.name, n), e.partial !== void 0 && A(e.partial)) {
555
- let n = yield* t`SELECT sql FROM sqlite_master WHERE type = 'index' AND name = ${e.name}`, r = a(n[0]?.sql ?? "");
556
- r !== void 0 && b.set(e.name, r);
553
+ let g = yield* t.unsafe(`PRAGMA table_xinfo(${c(n)})`), _ = yield* t.unsafe(`PRAGMA foreign_key_list(${c(n)})`), v = yield* t.unsafe(`PRAGMA index_list(${c(n)})`), y = new Map(_.map((e) => [e.from, e])), S = g.filter((e) => e.pk > 0).sort((e, t) => e.pk - t.pk).map((e) => e.name), C = new Map(g.map((e) => [e.name.toLowerCase(), e.name])), w = /* @__PURE__ */ new Map(), T = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new Set();
554
+ for (let e of v) {
555
+ let n = (yield* t.unsafe(`PRAGMA index_info(${c(e.name)})`)).map((e) => e.name).filter((e) => e !== null).map((e) => C.get(e.toLowerCase()) ?? e);
556
+ if (w.set(e.name, n), e.partial !== void 0 && M(e.partial)) {
557
+ let t = a(s.get(e.name) ?? "");
558
+ t !== void 0 && T.set(e.name, t);
557
559
  }
558
- !b.has(e.name) && A(e.unique) && n.length === 1 && x.add(n[0]);
560
+ !T.has(e.name) && M(e.unique) && n.length === 1 && E.add(n[0]);
559
561
  }
560
- let S = l.map((t) => {
561
- let r = h.length === 1 && h[0] === t.name, i = m.get(t.name), a = k(t.type), s = e(t.type), c = !i && r && t.name === "id", l = i ? "reference" : c ? "id" : a, u = i ? {
562
- table: i.table,
562
+ let D = g.map((t) => {
563
+ let n = S.length === 1 && S[0] === t.name, i = y.get(t.name), a = j(t.type), s = e(t.type), c = !i && n && t.name === "id", l = i ? "reference" : c ? "id" : a, d = i ? {
564
+ table: r.get(u(i.table)) ?? i.table,
563
565
  column: i.to,
564
- onDelete: y(i.on_delete),
565
- onUpdate: y(i.on_update)
566
- } : void 0, d = n.get(t.name);
566
+ onDelete: x(i.on_delete),
567
+ onUpdate: x(i.on_update)
568
+ } : void 0, f = h.get(t.name);
567
569
  return {
568
570
  name: t.name,
569
571
  type: l,
@@ -572,42 +574,42 @@ var p = (e) => {
572
574
  sqliteDecimalEncoding: "sortable-v1"
573
575
  } : {},
574
576
  ...c ? { idStorage: o(a) } : {},
575
- nullable: t.notnull === 0 && !(r && t.type.trim().toUpperCase() === "INTEGER" && !p.some((e) => e.origin === "pk")),
576
- unique: x.has(t.name) || r && t.name === "id",
577
+ nullable: t.notnull === 0 && !(n && t.type.trim().toUpperCase() === "INTEGER" && !v.some((e) => e.origin === "pk")),
578
+ unique: E.has(t.name) || n && t.name === "id",
577
579
  hasDefault: t.dflt_value !== null,
578
580
  ...t.dflt_value === null ? {} : { defaultValue: t.dflt_value },
579
- ...u ? { references: u } : {},
580
- ...i ? { referenceStorage: ["integer", "bigint"].includes(k(t.type)) ? "numeric" : "text" } : {},
581
- ...d ? { oneOf: d } : {},
582
- ...v(t.hidden === 2 || t.hidden === 3 ? "generated" : null, t.hidden === 3) ?? {}
581
+ ...d ? { references: d } : {},
582
+ ...i ? { referenceStorage: ["integer", "bigint"].includes(j(t.type)) ? "numeric" : "text" } : {},
583
+ ...f ? { oneOf: f } : {},
584
+ ...b(t.hidden === 2 || t.hidden === 3 ? "generated" : null, t.hidden === 3) ?? {}
583
585
  };
584
- }), C = new Set(f.map((e) => e.from)), w, T = [];
585
- for (let e of p) {
586
+ }), O = new Set(_.map((e) => e.from)), k, A = [];
587
+ for (let e of v) {
586
588
  if (e.origin === "pk") continue;
587
- let t = _.get(e.name) ?? [], n = b.get(e.name);
588
- if (n === void 0 && t.length === 1 && A(e.unique) || n === void 0 && t.length === 1 && !A(e.unique) && C.has(t[0]) && e.name.toLowerCase() !== `${s}_${t[0]}_idx`.toLowerCase()) continue;
589
- let r = e.origin === "u" && n === void 0 && A(e.unique) ? (w ??= u(c ?? "")).get(d(t)) ?? e.name : e.name;
590
- T.push({
591
- name: r,
592
- table: s,
589
+ let t = w.get(e.name) ?? [], r = T.get(e.name);
590
+ if (r === void 0 && t.length === 1 && M(e.unique) || r === void 0 && t.length === 1 && !M(e.unique) && O.has(t[0]) && e.name.toLowerCase() !== `${n}_${t[0]}_idx`.toLowerCase()) continue;
591
+ let i = d("index", e.name, s.get(e.name) ?? null), a = e.origin === "u" && r === void 0 && M(e.unique) ? (k ??= f(m ?? "")).get(p(t)) ?? i : i;
592
+ A.push({
593
+ name: a,
594
+ table: n,
593
595
  columns: t,
594
- unique: A(e.unique),
595
- ...n === void 0 ? {} : { where: n }
596
+ unique: M(e.unique),
597
+ ...r === void 0 ? {} : { where: r }
596
598
  });
597
599
  }
598
- h.length > 0 && T.push({
599
- name: `${s}_pkey`,
600
- table: s,
601
- columns: h,
602
- unique: !0
603
- }), i.push({
604
- name: s,
600
+ S.length > 0 && A.push({
601
+ name: `${n}_pkey`,
602
+ table: n,
605
603
  columns: S,
606
- indexes: T
604
+ unique: !0
605
+ }), l.push({
606
+ name: n,
607
+ columns: D,
608
+ indexes: A
607
609
  });
608
610
  }
609
- return { tables: i };
610
- }), N = (e) => {
611
+ return { tables: l };
612
+ }), F = (e) => {
611
613
  switch (e.toLowerCase()) {
612
614
  case "int":
613
615
  case "smallint":
@@ -629,7 +631,7 @@ var p = (e) => {
629
631
  case "image": return "bytes";
630
632
  default: return "text";
631
633
  }
632
- }, P = (e) => e === !0 || e === 1, F = (e) => f.gen(function* () {
634
+ }, I = (e) => e === !0 || e === 1, L = (e) => m.gen(function* () {
633
635
  let t = yield* e`
634
636
  SELECT TABLE_NAME AS table_name FROM INFORMATION_SCHEMA.TABLES
635
637
  WHERE TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_NAME`, n = yield* e`
@@ -637,7 +639,7 @@ var p = (e) => {
637
639
  IS_NULLABLE AS is_nullable, COLUMN_DEFAULT AS column_default,
638
640
  CHARACTER_MAXIMUM_LENGTH AS character_maximum_length,
639
641
  NUMERIC_PRECISION AS numeric_precision, NUMERIC_SCALE AS numeric_scale
640
- FROM INFORMATION_SCHEMA.COLUMNS ORDER BY TABLE_NAME, ORDINAL_POSITION`, a = yield* f.orElseSucceed(e`
642
+ FROM INFORMATION_SCHEMA.COLUMNS ORDER BY TABLE_NAME, ORDINAL_POSITION`, a = yield* m.orElseSucceed(e`
641
643
  SELECT t.name AS table_name, c.name AS column_name, cc.definition AS definition,
642
644
  cc.is_persisted AS is_persisted
643
645
  FROM sys.computed_columns cc
@@ -669,131 +671,130 @@ var p = (e) => {
669
671
  JOIN sys.tables t ON t.object_id = cc.parent_object_id
670
672
  LEFT JOIN sys.columns c ON c.object_id = cc.parent_object_id AND c.column_id = cc.parent_column_id`, d = /* @__PURE__ */ new Map();
671
673
  for (let e of u) {
672
- let t = m(e.def);
674
+ let t = g(e.def);
673
675
  t?.column === e.column_name && d.set(`${e.table_name}.${e.column_name}`, t.values);
674
676
  }
675
- let p = /* @__PURE__ */ new Map();
677
+ let f = /* @__PURE__ */ new Map();
676
678
  for (let e of n) {
677
- let t = p.get(e.table_name) ?? [];
678
- t.push(e), p.set(e.table_name, t);
679
+ let t = f.get(e.table_name) ?? [];
680
+ t.push(e), f.set(e.table_name, t);
679
681
  }
680
- let h = /* @__PURE__ */ new Map();
682
+ let p = /* @__PURE__ */ new Map();
681
683
  for (let e of c) {
682
- let t = h.get(e.source_table) ?? [];
683
- t.push(e), h.set(e.source_table, t);
684
+ let t = p.get(e.source_table) ?? [];
685
+ t.push(e), p.set(e.source_table, t);
684
686
  }
685
- let g = /* @__PURE__ */ new Map();
687
+ let h = /* @__PURE__ */ new Map();
686
688
  for (let e of l) {
687
- let t = g.get(e.table_name);
688
- t || (t = /* @__PURE__ */ new Map(), g.set(e.table_name, t));
689
+ let t = h.get(e.table_name);
690
+ t || (t = /* @__PURE__ */ new Map(), h.set(e.table_name, t));
689
691
  let n = t.get(e.index_name) ?? [];
690
692
  n.push(e), t.set(e.index_name, n);
691
693
  }
692
694
  let _ = [];
693
695
  for (let { table_name: e } of t) {
694
- let t = p.get(e) ?? [], n = h.get(e) ?? [], a = new Map(n.map((e) => [e.source_column, e])), c = new Set(n.map((e) => e.source_column)), l = g.get(e), f = [], m = /* @__PURE__ */ new Set();
696
+ let t = f.get(e) ?? [], n = p.get(e) ?? [], a = new Map(n.map((e) => [e.source_column, e])), c = new Set(n.map((e) => e.source_column)), l = h.get(e), m = [], g = /* @__PURE__ */ new Set();
695
697
  if (l) for (let [, e] of l) {
696
698
  let t = [...e].sort((e, t) => e.key_ordinal - t.key_ordinal);
697
- if (P(t[0].is_primary)) for (let e of t) f.push(e.column_name);
698
- else t[0].predicate == null && P(t[0].is_unique) && t.length === 1 && m.add(t[0].column_name);
699
+ if (I(t[0].is_primary)) for (let e of t) m.push(e.column_name);
700
+ else t[0].predicate == null && I(t[0].is_unique) && t.length === 1 && g.add(t[0].column_name);
699
701
  }
700
- let y = t.map((t) => {
701
- let n = f.length === 1 && f[0] === t.column_name, c = a.get(t.column_name), l = N(t.data_type), p = !c && n && t.column_name === "id", h = c ? "reference" : p ? "id" : l, g = c ? {
702
+ let v = t.map((t) => {
703
+ let n = m.length === 1 && m[0] === t.column_name, c = a.get(t.column_name), l = F(t.data_type), f = !c && n && t.column_name === "id", p = c ? "reference" : f ? "id" : l, h = c ? {
702
704
  table: c.target_table,
703
705
  column: c.target_column,
704
- onDelete: I(c.delete_rule),
705
- onUpdate: I(c.update_rule),
706
+ onDelete: R(c.delete_rule),
707
+ onUpdate: R(c.update_rule),
706
708
  constraintName: c.constraint_name
707
- } : void 0, _ = t.column_default === null ? null : L(t.column_default), y = d.get(`${e}.${t.column_name}`), b = u.flatMap((n) => {
709
+ } : void 0, _ = t.column_default === null ? null : z(t.column_default), v = d.get(`${e}.${t.column_name}`), y = u.flatMap((n) => {
708
710
  if (n.table_name !== e || n.column_name !== null && n.column_name !== t.column_name) return [];
709
711
  let i = r(t.column_name, n.def);
710
712
  return i ? [{
711
713
  name: n.constraint_name,
712
714
  validation: i,
713
- enabled: !P(n.is_disabled),
714
- trusted: !P(n.is_not_trusted)
715
+ enabled: !I(n.is_disabled),
716
+ trusted: !I(n.is_not_trusted)
715
717
  }] : [];
716
- }).sort((e, t) => e.name.localeCompare(t.name)), x = i(b);
718
+ }).sort((e, t) => e.name.localeCompare(t.name)), x = i(y);
717
719
  return {
718
720
  name: t.column_name,
719
- type: h,
720
- ...p ? { idStorage: o(l) } : {},
721
+ type: p,
722
+ ...f ? { idStorage: o(l) } : {},
721
723
  nullable: t.is_nullable === "YES",
722
- ...z(t.data_type, t.character_maximum_length) === void 0 ? {} : { maxLength: z(t.data_type, t.character_maximum_length) },
724
+ ...V(t.data_type, t.character_maximum_length) === void 0 ? {} : { maxLength: V(t.data_type, t.character_maximum_length) },
723
725
  ...l === "decimal" && typeof t.numeric_precision == "number" ? {
724
726
  precision: t.numeric_precision,
725
727
  ...typeof t.numeric_scale == "number" ? { scale: t.numeric_scale } : {}
726
728
  } : {},
727
- unique: m.has(t.column_name) || n && t.column_name === "id",
729
+ unique: g.has(t.column_name) || n && t.column_name === "id",
728
730
  hasDefault: _ !== null,
729
731
  ..._ === null ? {} : { defaultValue: _ },
730
- ...g ? { references: g } : {},
731
- ...c ? { referenceStorage: ["integer", "bigint"].includes(N(t.data_type)) ? "numeric" : "text" } : {},
732
- ...y ? { oneOf: y } : {},
733
- ...b.length > 0 ? { jsonChecks: b } : {},
732
+ ...h ? { references: h } : {},
733
+ ...c ? { referenceStorage: ["integer", "bigint"].includes(F(t.data_type)) ? "numeric" : "text" } : {},
734
+ ...v ? { oneOf: v } : {},
735
+ ...y.length > 0 ? { jsonChecks: y } : {},
734
736
  ...x ? { jsonValidation: x } : {},
735
- ...v(s.get(`${e}.${t.column_name}`)?.definition ?? null, P(s.get(`${e}.${t.column_name}`)?.is_persisted ?? !1)) ?? {}
737
+ ...b(s.get(`${e}.${t.column_name}`)?.definition ?? null, I(s.get(`${e}.${t.column_name}`)?.is_persisted ?? !1)) ?? {}
736
738
  };
737
- }), b = [];
739
+ }), y = [];
738
740
  if (l) for (let [t, n] of l) {
739
741
  let r = [...n].sort((e, t) => e.key_ordinal - t.key_ordinal);
740
- if (P(r[0].is_primary)) continue;
742
+ if (I(r[0].is_primary)) continue;
741
743
  let i = r[0].predicate ?? void 0;
742
- i === void 0 && r.length === 1 && P(r[0].is_unique) || (i !== void 0 || r.length !== 1 || P(r[0].is_unique) || !c.has(r[0].column_name) || t === `${e}_${r[0].column_name}_idx`) && b.push({
744
+ i === void 0 && r.length === 1 && I(r[0].is_unique) || (i !== void 0 || r.length !== 1 || I(r[0].is_unique) || !c.has(r[0].column_name) || t === `${e}_${r[0].column_name}_idx`) && y.push({
743
745
  name: t,
744
746
  table: e,
745
747
  columns: r.map((e) => e.column_name),
746
- unique: P(r[0].is_unique),
748
+ unique: I(r[0].is_unique),
747
749
  ...i === void 0 ? {} : { where: i }
748
750
  });
749
751
  }
750
- f.length > 0 && b.push({
752
+ m.length > 0 && y.push({
751
753
  name: `${e}_pkey`,
752
754
  table: e,
753
- columns: f,
755
+ columns: m,
754
756
  unique: !0
755
757
  }), _.push({
756
758
  name: e,
757
- columns: y,
758
- indexes: b
759
+ columns: v,
760
+ indexes: y
759
761
  });
760
762
  }
761
763
  return { tables: _ };
762
- }), I = (e) => {
764
+ }), R = (e) => {
763
765
  switch (e.toUpperCase().replace(/_/g, " ")) {
764
766
  case "CASCADE": return "cascade";
765
767
  case "SET NULL": return "setNull";
766
768
  case "SET DEFAULT": return "noAction";
767
769
  default: return "noAction";
768
770
  }
769
- }, L = (e) => {
771
+ }, z = (e) => {
770
772
  let t = e.trim();
771
773
  for (; t.startsWith("(") && t.endsWith(")");) t = t.slice(1, -1).trim();
772
774
  return t.startsWith("N'") && t.endsWith("'") ? t = t.slice(2, -1) : t.startsWith("'") && t.endsWith("'") && (t = t.slice(1, -1)), t;
773
- }, R = /* @__PURE__ */ new Set([
775
+ }, B = /* @__PURE__ */ new Set([
774
776
  "character varying",
775
777
  "varchar",
776
778
  "nvarchar",
777
779
  "char",
778
780
  "character",
779
781
  "nchar"
780
- ]), z = (e, t) => {
781
- if (!R.has(e.toLowerCase())) return;
782
+ ]), V = (e, t) => {
783
+ if (!B.has(e.toLowerCase())) return;
782
784
  let n = Number(t);
783
785
  if (!(!Number.isFinite(n) || n <= 0)) return n;
784
- }, B = /* @__PURE__ */ new Set([
786
+ }, H = /* @__PURE__ */ new Set([
785
787
  n,
786
788
  s,
787
789
  c,
788
790
  "_voltro_plugin_migrations"
789
- ]), V = (e) => e.onDialectOrElse({
790
- mysql: () => O(e),
791
- mssql: () => F(e),
792
- sqlite: () => M(e),
793
- orElse: () => T(e)
794
- }).pipe(f.map((e) => ({
791
+ ]), U = (e) => e.onDialectOrElse({
792
+ mysql: () => A(e),
793
+ mssql: () => L(e),
794
+ sqlite: () => P(e),
795
+ orElse: () => D(e)
796
+ }).pipe(m.map((e) => ({
795
797
  ...e,
796
- tables: e.tables.filter((e) => !B.has(e.name))
798
+ tables: e.tables.filter((e) => !H.has(e.name))
797
799
  })));
798
- //#endregion
799
- export { w as chunkTables, V as introspectSchema, h as mapPgType, m as parseEnumCheck };
800
+ export { E as chunkTables, U as introspectSchema, _ as mapPgType, g as parseEnumCheck };