@voltro/database 0.3.0 → 0.5.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 +50 -0
- package/dist/{fileBased-CRXgPJkv.js → fileBased-Cc-F1oFv.js} +143 -143
- package/dist/index.d.ts +56 -3
- package/dist/index.js +405 -405
- package/dist/sql.d.ts +1 -1
- package/dist/sql.js +671 -629
- package/package.json +2 -2
|
@@ -142,7 +142,7 @@ var r = class e {
|
|
|
142
142
|
unique: !0,
|
|
143
143
|
hasDefault: !1,
|
|
144
144
|
idSchemeInput: e
|
|
145
|
-
}), o = () => i("text"),
|
|
145
|
+
}), o = () => i("text"), s = () => i("integer"), ee = () => i("real"), c = (e, t = 0) => {
|
|
146
146
|
if (!Number.isInteger(e) || e <= 0) throw Error(`decimal(${String(e)}, ${String(t)}): precision must be a positive integer (the total number of significant digits, e.g. decimal(12, 2)).`);
|
|
147
147
|
if (!Number.isInteger(t) || t < 0 || t > e) throw Error(`decimal(${String(e)}, ${String(t)}): scale must be an integer between 0 and precision (${e}).`);
|
|
148
148
|
return new r({
|
|
@@ -153,7 +153,7 @@ var r = class e {
|
|
|
153
153
|
precision: e,
|
|
154
154
|
scale: t
|
|
155
155
|
});
|
|
156
|
-
},
|
|
156
|
+
}, te = c, ne = () => i("bigint"), re = (e, t) => {
|
|
157
157
|
if (t.length === 0) throw Error(`dbEnum('${e}', []): enum must have at least one value`);
|
|
158
158
|
return {
|
|
159
159
|
name: e,
|
|
@@ -167,7 +167,7 @@ var r = class e {
|
|
|
167
167
|
enumValues: t
|
|
168
168
|
})
|
|
169
169
|
};
|
|
170
|
-
},
|
|
170
|
+
}, ie = () => i("boolean"), ae = () => i("timestamp"), oe = () => i("date"), se = () => i("json"), ce = () => i("bytes"), le = (e, t) => new r({
|
|
171
171
|
type: "reference",
|
|
172
172
|
nullable: !1,
|
|
173
173
|
unique: !1,
|
|
@@ -177,13 +177,13 @@ var r = class e {
|
|
|
177
177
|
refOnUpdate: t?.onUpdate ?? "noAction",
|
|
178
178
|
fkAutoIndex: t?.index ?? !0,
|
|
179
179
|
...t?.orphanPolicy ? { orphanPolicy: t.orphanPolicy } : {}
|
|
180
|
-
}),
|
|
180
|
+
}), l = () => new r({
|
|
181
181
|
type: "text",
|
|
182
182
|
nullable: !0,
|
|
183
183
|
unique: !1,
|
|
184
184
|
hasDefault: !1,
|
|
185
185
|
dropped: !0
|
|
186
|
-
}),
|
|
186
|
+
}), u = (e, t) => {
|
|
187
187
|
if (!Number.isInteger(e) || e <= 0) throw Error(`vector(${String(e)}): dimension must be a positive integer (the embedding length, e.g. vector(1536)).`);
|
|
188
188
|
return new r({
|
|
189
189
|
type: "vector",
|
|
@@ -193,7 +193,7 @@ var r = class e {
|
|
|
193
193
|
vectorDim: e,
|
|
194
194
|
vectorPrecision: t?.precision ?? "float32"
|
|
195
195
|
});
|
|
196
|
-
},
|
|
196
|
+
}, d = (e) => new r({
|
|
197
197
|
type: "array",
|
|
198
198
|
nullable: !1,
|
|
199
199
|
unique: !1,
|
|
@@ -267,29 +267,29 @@ var r = class e {
|
|
|
267
267
|
throw Error(`typeid prefix '${e}' on table '${t.tableName}' is ${e.length} chars — exceeds the 63-byte limit; ${n}`);
|
|
268
268
|
}
|
|
269
269
|
e.length > 60 && h(`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).`);
|
|
270
|
-
}, Se = 1704067200000n,
|
|
270
|
+
}, Se = 1704067200000n, Ce = 10n, x = 12n, S = (1n << Ce) - 1n, C = (1n << x) - 1n, w = x, T = 22n, E = () => {
|
|
271
271
|
let e = process.env.SNOWFLAKE_MACHINE_ID;
|
|
272
272
|
if (e === void 0 || e === "") return 0n;
|
|
273
273
|
let t = BigInt(e);
|
|
274
|
-
if (t < 0n || t >
|
|
274
|
+
if (t < 0n || t > S) throw Error(`SNOWFLAKE_MACHINE_ID out of range: ${e}. Must be 0..${S}.`);
|
|
275
275
|
return t;
|
|
276
|
-
},
|
|
276
|
+
}, D = () => ({
|
|
277
277
|
lastMs: 0n,
|
|
278
278
|
sequence: 0n,
|
|
279
|
-
machineId:
|
|
280
|
-
}),
|
|
281
|
-
|
|
282
|
-
},
|
|
283
|
-
let t =
|
|
284
|
-
for (; t <= e;) t =
|
|
279
|
+
machineId: E()
|
|
280
|
+
}), O, k = () => (O === void 0 && (O = D()), O), A = () => {
|
|
281
|
+
O = D();
|
|
282
|
+
}, j = () => BigInt(Date.now()), we = (e) => {
|
|
283
|
+
let t = j();
|
|
284
|
+
for (; t <= e;) t = j();
|
|
285
285
|
return t;
|
|
286
|
-
},
|
|
287
|
-
let e =
|
|
288
|
-
t === e.lastMs ? (e.sequence = e.sequence + 1n &
|
|
286
|
+
}, M = () => {
|
|
287
|
+
let e = k(), t = j();
|
|
288
|
+
t === e.lastMs ? (e.sequence = e.sequence + 1n & C, e.sequence === 0n && (t = we(e.lastMs), e.lastMs = t)) : (e.sequence = 0n, e.lastMs = t);
|
|
289
289
|
let n = t - Se;
|
|
290
290
|
if (n < 0n) throw Error("Snowflake timestamp before configured epoch (2024-01-01). System clock is wrong.");
|
|
291
|
-
return (n <<
|
|
292
|
-
},
|
|
291
|
+
return (n << T | e.machineId << w | e.sequence).toString();
|
|
292
|
+
}, N = (e) => {
|
|
293
293
|
let t = e.toLowerCase();
|
|
294
294
|
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.`);
|
|
295
295
|
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: '...' }).`);
|
|
@@ -298,10 +298,10 @@ var r = class e {
|
|
|
298
298
|
kind: "derived",
|
|
299
299
|
tableName: e
|
|
300
300
|
}), n;
|
|
301
|
-
},
|
|
301
|
+
}, P = (e, t) => {
|
|
302
302
|
if (e === void 0) return {
|
|
303
303
|
kind: "typeid",
|
|
304
|
-
prefix:
|
|
304
|
+
prefix: N(t)
|
|
305
305
|
};
|
|
306
306
|
if ("prefix" in e && !("scheme" in e)) return b(e.prefix, {
|
|
307
307
|
kind: "explicit",
|
|
@@ -313,7 +313,7 @@ var r = class e {
|
|
|
313
313
|
if (!("scheme" in e)) throw Error("invalid id() options: no scheme or prefix");
|
|
314
314
|
switch (e.scheme) {
|
|
315
315
|
case "typeid": {
|
|
316
|
-
let n = e.prefix ??
|
|
316
|
+
let n = e.prefix ?? N(t);
|
|
317
317
|
return e.prefix !== void 0 && b(e.prefix, {
|
|
318
318
|
kind: "explicit",
|
|
319
319
|
tableName: t
|
|
@@ -330,22 +330,22 @@ var r = class e {
|
|
|
330
330
|
generate: e.generate
|
|
331
331
|
};
|
|
332
332
|
}
|
|
333
|
-
},
|
|
333
|
+
}, Te = (n, r) => {
|
|
334
334
|
switch (n.kind) {
|
|
335
335
|
case "typeid": return e(n.prefix).toString();
|
|
336
336
|
case "ulid": return t();
|
|
337
337
|
case "numeric": return null;
|
|
338
|
-
case "snowflake": return
|
|
338
|
+
case "snowflake": return M();
|
|
339
339
|
case "custom": return n.generate(r);
|
|
340
340
|
}
|
|
341
|
-
},
|
|
341
|
+
}, F = (e) => ({
|
|
342
342
|
fields: f(e.fields),
|
|
343
343
|
...e.id === void 0 ? {} : { id: e.id },
|
|
344
344
|
...e.requires === void 0 ? {} : { requires: e.requires },
|
|
345
345
|
...e.indexes === void 0 ? {} : { indexes: e.indexes },
|
|
346
346
|
...e.behaviors === void 0 ? {} : { behaviors: e.behaviors },
|
|
347
347
|
...e.policies === void 0 ? {} : { policies: e.policies }
|
|
348
|
-
}),
|
|
348
|
+
}), Ee = F, I = (e) => {
|
|
349
349
|
let t = /* @__PURE__ */ new Set(), n = [], r = (e) => {
|
|
350
350
|
let i = e.id ?? e;
|
|
351
351
|
if (!t.has(i)) {
|
|
@@ -355,7 +355,7 @@ var r = class e {
|
|
|
355
355
|
};
|
|
356
356
|
for (let t of e) r(t);
|
|
357
357
|
return n;
|
|
358
|
-
},
|
|
358
|
+
}, De = (e, ...t) => {
|
|
359
359
|
if (t.length === 0) throw Error(`jsonIndex("${e}"): at least one path segment is required`);
|
|
360
360
|
let n = (r) => ({
|
|
361
361
|
jsonPath: {
|
|
@@ -366,14 +366,14 @@ var r = class e {
|
|
|
366
366
|
numeric: () => n(!0)
|
|
367
367
|
});
|
|
368
368
|
return n(!1);
|
|
369
|
-
},
|
|
369
|
+
}, Oe = (e = "cosine", t = "float32") => {
|
|
370
370
|
let n = t === "half" ? "halfvec" : "vector";
|
|
371
371
|
switch (e) {
|
|
372
372
|
case "cosine": return `${n}_cosine_ops`;
|
|
373
373
|
case "l2": return `${n}_l2_ops`;
|
|
374
374
|
case "inner": return `${n}_ip_ops`;
|
|
375
375
|
}
|
|
376
|
-
},
|
|
376
|
+
}, L = (e) => e.id ?? `<anonymous mixin: ${Object.keys(e.fields).join(", ")}>`, R = (e, t) => `${e}_${t.join("_")}_idx`, ke = (e, t) => `${e}_${t.join("_")}_uq`, z = (e, t, n, r, i) => {
|
|
377
377
|
if (n !== "hnsw") return;
|
|
378
378
|
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.`);
|
|
379
379
|
let a = r[0];
|
|
@@ -381,14 +381,14 @@ var r = class e {
|
|
|
381
381
|
let o = i[a];
|
|
382
382
|
if (o === void 0) throw Error(`hnsw index '${t}' on table '${e}' references unknown column '${a}'.`);
|
|
383
383
|
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.`);
|
|
384
|
-
},
|
|
384
|
+
}, Ae = (e, t) => {
|
|
385
385
|
let n;
|
|
386
386
|
for (let [r, i] of Object.entries(e)) i.type === "id" && i.idScheme === void 0 && (n === void 0 && (n = { ...e }), n[r] = {
|
|
387
387
|
...i,
|
|
388
|
-
idScheme:
|
|
388
|
+
idScheme: P(i.idSchemeInput, t)
|
|
389
389
|
});
|
|
390
390
|
return n ?? e;
|
|
391
|
-
},
|
|
391
|
+
}, B = (e) => {
|
|
392
392
|
let t = e.appliedPrimaryKey ?? [];
|
|
393
393
|
return {
|
|
394
394
|
tableName: e.tableName,
|
|
@@ -405,7 +405,7 @@ var r = class e {
|
|
|
405
405
|
fullTextIndex: ((t, n, r) => {
|
|
406
406
|
if (n.length === 0) throw Error(`fullTextIndex '${t}' on '${e.tableName}' has no columns.`);
|
|
407
407
|
if (y(e.tableName, t, !1, n), e.appliedFullText.some((e) => e.name === t)) throw Error(`duplicate full-text index '${t}' on table '${e.tableName}'.`);
|
|
408
|
-
return
|
|
408
|
+
return B({
|
|
409
409
|
tableName: e.tableName,
|
|
410
410
|
fields: e.fields,
|
|
411
411
|
isReactive: e.isReactive,
|
|
@@ -425,27 +425,27 @@ var r = class e {
|
|
|
425
425
|
});
|
|
426
426
|
}),
|
|
427
427
|
with: ((...t) => {
|
|
428
|
-
let n =
|
|
428
|
+
let n = I(t), r = { ...e.fields }, i = /* @__PURE__ */ new Map();
|
|
429
429
|
for (let e of Object.keys(r)) i.set(e, {
|
|
430
430
|
id: "<table>",
|
|
431
431
|
fields: {}
|
|
432
432
|
});
|
|
433
433
|
for (let t of n) for (let [n, a] of Object.entries(t.fields)) {
|
|
434
434
|
let o = i.get(n);
|
|
435
|
-
if (o !== void 0) throw Error(`mixin collision on column '${n}' in table '${e.tableName}': '${
|
|
435
|
+
if (o !== void 0) throw Error(`mixin collision on column '${n}' in table '${e.tableName}': '${L(o)}' and '${L(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.`);
|
|
436
436
|
v(e.tableName, n), r[n] = a, i.set(n, t);
|
|
437
437
|
}
|
|
438
438
|
let a = [...e.appliedIndexes];
|
|
439
439
|
for (let t of n) for (let n of t.indexes ?? []) {
|
|
440
|
-
let t = n.name ??
|
|
441
|
-
a.some((e) => e.name === t) || (y(e.tableName, t, n.name === void 0, n.fields),
|
|
440
|
+
let t = n.name ?? R(e.tableName, n.fields);
|
|
441
|
+
a.some((e) => e.name === t) || (y(e.tableName, t, n.name === void 0, n.fields), z(e.tableName, t, n.kind, n.fields, r), a.push({
|
|
442
442
|
name: t,
|
|
443
443
|
fields: n.fields,
|
|
444
444
|
...n.kind === void 0 ? {} : { kind: n.kind },
|
|
445
445
|
...n.kindOptions === void 0 ? {} : { kindOptions: n.kindOptions }
|
|
446
446
|
}));
|
|
447
447
|
}
|
|
448
|
-
return
|
|
448
|
+
return B({
|
|
449
449
|
tableName: e.tableName,
|
|
450
450
|
fields: r,
|
|
451
451
|
isReactive: e.isReactive,
|
|
@@ -461,10 +461,10 @@ var r = class e {
|
|
|
461
461
|
}),
|
|
462
462
|
index: ((...t) => {
|
|
463
463
|
let n, r, i, a = Array.isArray(t[0]);
|
|
464
|
-
if (a ? (r = t[0], i = t[1], n =
|
|
464
|
+
if (a ? (r = t[0], i = t[1], n = R(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.`);
|
|
465
465
|
let o = r.filter((e) => typeof e == "string");
|
|
466
|
-
if (y(e.tableName, n, a, o),
|
|
467
|
-
return
|
|
466
|
+
if (y(e.tableName, n, a, o), z(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.`);
|
|
467
|
+
return B({
|
|
468
468
|
tableName: e.tableName,
|
|
469
469
|
fields: e.fields,
|
|
470
470
|
isReactive: e.isReactive,
|
|
@@ -487,8 +487,8 @@ var r = class e {
|
|
|
487
487
|
expressionIndex: ((t, n, r) => {
|
|
488
488
|
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.`);
|
|
489
489
|
let i = n.filter((e) => typeof e == "string");
|
|
490
|
-
if (y(e.tableName, t, !1, i),
|
|
491
|
-
return
|
|
490
|
+
if (y(e.tableName, t, !1, i), z(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.`);
|
|
491
|
+
return B({
|
|
492
492
|
tableName: e.tableName,
|
|
493
493
|
fields: e.fields,
|
|
494
494
|
isReactive: e.isReactive,
|
|
@@ -510,9 +510,9 @@ var r = class e {
|
|
|
510
510
|
}),
|
|
511
511
|
unique: ((...t) => {
|
|
512
512
|
let n, r, i, a = Array.isArray(t[0]);
|
|
513
|
-
if (a ? (r = t[0], i = t[1], n =
|
|
513
|
+
if (a ? (r = t[0], i = t[1], n = ke(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.`);
|
|
514
514
|
if (y(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.`);
|
|
515
|
-
return
|
|
515
|
+
return B({
|
|
516
516
|
tableName: e.tableName,
|
|
517
517
|
fields: e.fields,
|
|
518
518
|
isReactive: e.isReactive,
|
|
@@ -532,10 +532,10 @@ var r = class e {
|
|
|
532
532
|
}),
|
|
533
533
|
uniqueActive: ((...t) => {
|
|
534
534
|
let n, r, i, a = Array.isArray(t[0]);
|
|
535
|
-
if (a ? (r = t[0], i = t[1], n =
|
|
535
|
+
if (a ? (r = t[0], i = t[1], n = R(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.`);
|
|
536
536
|
if (y(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).`);
|
|
537
537
|
let o = i?.where ?? "\"deletedAt\" IS NULL";
|
|
538
|
-
return
|
|
538
|
+
return B({
|
|
539
539
|
tableName: e.tableName,
|
|
540
540
|
fields: e.fields,
|
|
541
541
|
isReactive: e.isReactive,
|
|
@@ -557,7 +557,7 @@ var r = class e {
|
|
|
557
557
|
check: ((t, n) => {
|
|
558
558
|
if (n.trim().length === 0) throw Error(`CHECK '${t}' on table '${e.tableName}' has an empty expression.`);
|
|
559
559
|
if (y(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.`);
|
|
560
|
-
return
|
|
560
|
+
return B({
|
|
561
561
|
tableName: e.tableName,
|
|
562
562
|
fields: e.fields,
|
|
563
563
|
isReactive: e.isReactive,
|
|
@@ -584,7 +584,7 @@ var r = class e {
|
|
|
584
584
|
}
|
|
585
585
|
if (t.length > 0) throw Error(`primaryKey([...]) declared twice on table '${e.tableName}'.`);
|
|
586
586
|
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}'. A composite primary key IS the key — drop the id() column, or include '${t}' in the composite key.`);
|
|
587
|
-
return
|
|
587
|
+
return B({
|
|
588
588
|
tableName: e.tableName,
|
|
589
589
|
fields: e.fields,
|
|
590
590
|
isReactive: e.isReactive,
|
|
@@ -598,7 +598,7 @@ var r = class e {
|
|
|
598
598
|
...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
|
|
599
599
|
});
|
|
600
600
|
}),
|
|
601
|
-
reactive: (() =>
|
|
601
|
+
reactive: (() => B({
|
|
602
602
|
tableName: e.tableName,
|
|
603
603
|
fields: e.fields,
|
|
604
604
|
isReactive: !0,
|
|
@@ -611,7 +611,7 @@ var r = class e {
|
|
|
611
611
|
...e.insertSchema === void 0 ? {} : { insertSchema: e.insertSchema },
|
|
612
612
|
...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
|
|
613
613
|
})),
|
|
614
|
-
validate: ((t) =>
|
|
614
|
+
validate: ((t) => B({
|
|
615
615
|
tableName: e.tableName,
|
|
616
616
|
fields: e.fields,
|
|
617
617
|
isReactive: e.isReactive,
|
|
@@ -624,7 +624,7 @@ var r = class e {
|
|
|
624
624
|
insertSchema: t,
|
|
625
625
|
...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
|
|
626
626
|
})),
|
|
627
|
-
validatePatch: ((t) =>
|
|
627
|
+
validatePatch: ((t) => B({
|
|
628
628
|
tableName: e.tableName,
|
|
629
629
|
fields: e.fields,
|
|
630
630
|
isReactive: e.isReactive,
|
|
@@ -638,11 +638,11 @@ var r = class e {
|
|
|
638
638
|
validatePatchSchema: n.partial(t)
|
|
639
639
|
}))
|
|
640
640
|
};
|
|
641
|
-
},
|
|
641
|
+
}, je = (e, t) => {
|
|
642
642
|
_(e);
|
|
643
|
-
let n =
|
|
643
|
+
let n = Ae(f(t), e);
|
|
644
644
|
for (let t of Object.keys(n)) v(e, t);
|
|
645
|
-
return
|
|
645
|
+
return B({
|
|
646
646
|
tableName: e,
|
|
647
647
|
fields: n,
|
|
648
648
|
isReactive: !1,
|
|
@@ -652,7 +652,7 @@ var r = class e {
|
|
|
652
652
|
appliedFullText: [],
|
|
653
653
|
appliedChecks: []
|
|
654
654
|
});
|
|
655
|
-
},
|
|
655
|
+
}, Me = (e) => e === "sqlite" || e === "turso", V = (e, t) => {
|
|
656
656
|
switch (t) {
|
|
657
657
|
case "mysql":
|
|
658
658
|
case "mariadb": return `\`${e}\``;
|
|
@@ -661,51 +661,51 @@ var r = class e {
|
|
|
661
661
|
case "sqlite":
|
|
662
662
|
case "turso": return `"${e}"`;
|
|
663
663
|
}
|
|
664
|
-
},
|
|
665
|
-
let t =
|
|
664
|
+
}, H = Symbol.for("@voltro/database/tableRegistry"), U = globalThis, W = U[H] ?? (U[H] = /* @__PURE__ */ new Map()), G = (e) => {
|
|
665
|
+
let t = W.get(e.tableName);
|
|
666
666
|
if (t === void 0) {
|
|
667
|
-
|
|
667
|
+
W.set(e.tableName, e);
|
|
668
668
|
return;
|
|
669
669
|
}
|
|
670
670
|
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.`);
|
|
671
|
-
},
|
|
672
|
-
|
|
673
|
-
},
|
|
674
|
-
let t =
|
|
671
|
+
}, Ne = (e) => {
|
|
672
|
+
W.get(e.tableName) === void 0 && W.set(e.tableName, e);
|
|
673
|
+
}, K = (e) => W.get(e), Pe = (e) => {
|
|
674
|
+
let t = W.get(e);
|
|
675
675
|
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.`);
|
|
676
676
|
return t;
|
|
677
|
-
},
|
|
678
|
-
|
|
679
|
-
},
|
|
677
|
+
}, Fe = () => [...W.values()], Ie = () => {
|
|
678
|
+
W.clear();
|
|
679
|
+
}, Le = (e) => ({
|
|
680
680
|
op: "count",
|
|
681
681
|
alias: e ?? "count"
|
|
682
|
-
}),
|
|
682
|
+
}), Re = (e, t) => ({
|
|
683
683
|
op: "count-distinct",
|
|
684
684
|
column: e,
|
|
685
685
|
alias: t ?? `count_distinct_${e}`
|
|
686
|
-
}),
|
|
686
|
+
}), ze = (e, t) => ({
|
|
687
687
|
op: "sum",
|
|
688
688
|
column: e,
|
|
689
689
|
alias: t ?? `sum_${e}`
|
|
690
|
-
}),
|
|
690
|
+
}), Be = (e, t) => ({
|
|
691
691
|
op: "avg",
|
|
692
692
|
column: e,
|
|
693
693
|
alias: t ?? `avg_${e}`
|
|
694
|
-
}),
|
|
694
|
+
}), Ve = (e, t) => ({
|
|
695
695
|
op: "min",
|
|
696
696
|
column: e,
|
|
697
697
|
alias: t ?? `min_${e}`
|
|
698
|
-
}),
|
|
698
|
+
}), He = (e, t) => ({
|
|
699
699
|
op: "max",
|
|
700
700
|
column: e,
|
|
701
701
|
alias: t ?? `max_${e}`
|
|
702
|
-
}),
|
|
702
|
+
}), Ue = (e, t) => ({
|
|
703
703
|
op: "column",
|
|
704
704
|
column: e,
|
|
705
705
|
alias: t ?? e
|
|
706
|
-
}),
|
|
706
|
+
}), q = (e) => (...t) => {
|
|
707
707
|
if (t.length < 2) throw Error(`${e}: requires at least two queries`);
|
|
708
|
-
return
|
|
708
|
+
return X({
|
|
709
709
|
table: t[0].descriptor.table,
|
|
710
710
|
predicate: void 0,
|
|
711
711
|
order: [],
|
|
@@ -717,55 +717,55 @@ var r = class e {
|
|
|
717
717
|
queries: t.map((e) => e.descriptor)
|
|
718
718
|
}
|
|
719
719
|
});
|
|
720
|
-
},
|
|
720
|
+
}, We = q("union"), Ge = q("union-all"), Ke = q("intersect"), qe = q("except"), J = (e) => ({ over: (t) => ({
|
|
721
721
|
...e,
|
|
722
722
|
window: t
|
|
723
|
-
}) }),
|
|
723
|
+
}) }), Je = (e = "rowNumber") => J({
|
|
724
724
|
op: "window-row-number",
|
|
725
725
|
alias: e
|
|
726
|
-
}),
|
|
726
|
+
}), Ye = (e = "rank") => J({
|
|
727
727
|
op: "window-rank",
|
|
728
728
|
alias: e
|
|
729
|
-
}),
|
|
729
|
+
}), Xe = (e = "denseRank") => J({
|
|
730
730
|
op: "window-dense-rank",
|
|
731
731
|
alias: e
|
|
732
|
-
}),
|
|
732
|
+
}), Ze = (e, t = 1, n) => J({
|
|
733
733
|
op: "window-lag",
|
|
734
734
|
column: e,
|
|
735
735
|
alias: n ?? `lag_${e}`,
|
|
736
736
|
offset: t
|
|
737
|
-
}),
|
|
737
|
+
}), Qe = (e, t = 1, n) => J({
|
|
738
738
|
op: "window-lead",
|
|
739
739
|
column: e,
|
|
740
740
|
alias: n ?? `lead_${e}`,
|
|
741
741
|
offset: t
|
|
742
|
-
}),
|
|
742
|
+
}), $e = (e, t) => J({
|
|
743
743
|
op: "window-sum-over",
|
|
744
744
|
column: e,
|
|
745
745
|
alias: t ?? `sum_${e}_over`
|
|
746
|
-
}),
|
|
746
|
+
}), et = (e, t) => J({
|
|
747
747
|
op: "window-avg-over",
|
|
748
748
|
column: e,
|
|
749
749
|
alias: t ?? `avg_${e}_over`
|
|
750
|
-
}),
|
|
751
|
-
let r = n?.find((e) => e.name === t) ??
|
|
750
|
+
}), Y = (e, t, n) => {
|
|
751
|
+
let r = n?.find((e) => e.name === t) ?? K(e)?.appliedFullText?.find((e) => e.name === t);
|
|
752
752
|
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.`);
|
|
753
753
|
return {
|
|
754
754
|
columns: r.columns,
|
|
755
755
|
...r.config === void 0 ? {} : { config: r.config },
|
|
756
756
|
...r.weights === void 0 ? {} : { weights: r.weights }
|
|
757
757
|
};
|
|
758
|
-
},
|
|
758
|
+
}, X = (e) => ({
|
|
759
759
|
descriptor: e,
|
|
760
760
|
where(t) {
|
|
761
761
|
let n = e.predicate ? { and: [e.predicate, t] } : t;
|
|
762
|
-
return
|
|
762
|
+
return X({
|
|
763
763
|
...e,
|
|
764
764
|
predicate: n
|
|
765
765
|
});
|
|
766
766
|
},
|
|
767
767
|
orderBy(t, n = "asc") {
|
|
768
|
-
return
|
|
768
|
+
return X({
|
|
769
769
|
...e,
|
|
770
770
|
order: [...e.order, {
|
|
771
771
|
column: t,
|
|
@@ -774,37 +774,37 @@ var r = class e {
|
|
|
774
774
|
});
|
|
775
775
|
},
|
|
776
776
|
limit(t) {
|
|
777
|
-
return
|
|
777
|
+
return X({
|
|
778
778
|
...e,
|
|
779
779
|
take: t
|
|
780
780
|
});
|
|
781
781
|
},
|
|
782
782
|
offset(t) {
|
|
783
|
-
return
|
|
783
|
+
return X({
|
|
784
784
|
...e,
|
|
785
785
|
skip: t
|
|
786
786
|
});
|
|
787
787
|
},
|
|
788
788
|
select(...t) {
|
|
789
|
-
return
|
|
789
|
+
return X({
|
|
790
790
|
...e,
|
|
791
791
|
projection: t
|
|
792
792
|
});
|
|
793
793
|
},
|
|
794
794
|
using(t) {
|
|
795
|
-
return
|
|
795
|
+
return X({
|
|
796
796
|
...e,
|
|
797
797
|
usingIndex: t
|
|
798
798
|
});
|
|
799
799
|
},
|
|
800
800
|
withDeleted() {
|
|
801
|
-
return
|
|
801
|
+
return X({
|
|
802
802
|
...e,
|
|
803
803
|
includeDeleted: !0
|
|
804
804
|
});
|
|
805
805
|
},
|
|
806
806
|
unscoped() {
|
|
807
|
-
return
|
|
807
|
+
return X({
|
|
808
808
|
...e,
|
|
809
809
|
crossTenant: !0
|
|
810
810
|
});
|
|
@@ -814,13 +814,13 @@ var r = class e {
|
|
|
814
814
|
...e.eager ?? {},
|
|
815
815
|
...t
|
|
816
816
|
};
|
|
817
|
-
return
|
|
817
|
+
return X({
|
|
818
818
|
...e,
|
|
819
819
|
eager: n
|
|
820
820
|
});
|
|
821
821
|
},
|
|
822
822
|
count() {
|
|
823
|
-
return
|
|
823
|
+
return X({
|
|
824
824
|
...e,
|
|
825
825
|
projection: void 0,
|
|
826
826
|
aggregations: [{
|
|
@@ -834,15 +834,15 @@ var r = class e {
|
|
|
834
834
|
...t,
|
|
835
835
|
alias: e
|
|
836
836
|
}));
|
|
837
|
-
return
|
|
837
|
+
return X({
|
|
838
838
|
...e,
|
|
839
839
|
projection: void 0,
|
|
840
840
|
aggregations: n
|
|
841
841
|
});
|
|
842
842
|
},
|
|
843
843
|
matching(t, n) {
|
|
844
|
-
let r =
|
|
845
|
-
return
|
|
844
|
+
let r = Y(e.table, t, e.fullTextIndexes);
|
|
845
|
+
return X({
|
|
846
846
|
...e,
|
|
847
847
|
fullTextSearch: {
|
|
848
848
|
indexName: t,
|
|
@@ -856,7 +856,7 @@ var r = class e {
|
|
|
856
856
|
rankBy(t) {
|
|
857
857
|
let n = e.fullTextSearch;
|
|
858
858
|
if (n === void 0) throw Error(".rankBy() requires a preceding .matching(...) clause — there is no full-text search to rank on this query.");
|
|
859
|
-
return
|
|
859
|
+
return X({
|
|
860
860
|
...e,
|
|
861
861
|
fullTextSearch: {
|
|
862
862
|
...n,
|
|
@@ -875,7 +875,7 @@ var r = class e {
|
|
|
875
875
|
distance: r?.distance ?? "cosine",
|
|
876
876
|
...e.annClause?.ef === void 0 ? {} : { ef: e.annClause.ef }
|
|
877
877
|
};
|
|
878
|
-
return
|
|
878
|
+
return X({
|
|
879
879
|
...e,
|
|
880
880
|
annClause: i
|
|
881
881
|
});
|
|
@@ -887,7 +887,7 @@ var r = class e {
|
|
|
887
887
|
distance: "cosine",
|
|
888
888
|
...e.annClause?.ef === void 0 ? {} : { ef: e.annClause.ef }
|
|
889
889
|
};
|
|
890
|
-
return
|
|
890
|
+
return X({
|
|
891
891
|
...e,
|
|
892
892
|
annClause: r,
|
|
893
893
|
take: n
|
|
@@ -900,7 +900,7 @@ var r = class e {
|
|
|
900
900
|
column: "",
|
|
901
901
|
distance: "cosine"
|
|
902
902
|
};
|
|
903
|
-
return
|
|
903
|
+
return X({
|
|
904
904
|
...e,
|
|
905
905
|
annClause: {
|
|
906
906
|
...n,
|
|
@@ -909,22 +909,22 @@ var r = class e {
|
|
|
909
909
|
});
|
|
910
910
|
},
|
|
911
911
|
use(t) {
|
|
912
|
-
return
|
|
912
|
+
return X({ ...t(e) });
|
|
913
913
|
},
|
|
914
914
|
distinct() {
|
|
915
|
-
return
|
|
915
|
+
return X({
|
|
916
916
|
...e,
|
|
917
917
|
distinct: !0
|
|
918
918
|
});
|
|
919
919
|
},
|
|
920
920
|
distinctOn(t) {
|
|
921
|
-
return
|
|
921
|
+
return X({
|
|
922
922
|
...e,
|
|
923
923
|
distinctOn: [...t]
|
|
924
924
|
});
|
|
925
925
|
},
|
|
926
926
|
as(t) {
|
|
927
|
-
return
|
|
927
|
+
return X({
|
|
928
928
|
...e,
|
|
929
929
|
alias: t
|
|
930
930
|
});
|
|
@@ -936,7 +936,7 @@ var r = class e {
|
|
|
936
936
|
alias: n,
|
|
937
937
|
on: r
|
|
938
938
|
}];
|
|
939
|
-
return
|
|
939
|
+
return X({
|
|
940
940
|
...e,
|
|
941
941
|
joins: a
|
|
942
942
|
});
|
|
@@ -948,7 +948,7 @@ var r = class e {
|
|
|
948
948
|
alias: n,
|
|
949
949
|
on: r
|
|
950
950
|
}];
|
|
951
|
-
return
|
|
951
|
+
return X({
|
|
952
952
|
...e,
|
|
953
953
|
joins: a
|
|
954
954
|
});
|
|
@@ -958,7 +958,7 @@ var r = class e {
|
|
|
958
958
|
outputKey: e,
|
|
959
959
|
source: t
|
|
960
960
|
}));
|
|
961
|
-
return
|
|
961
|
+
return X({
|
|
962
962
|
...e,
|
|
963
963
|
projection: void 0,
|
|
964
964
|
joinedProjection: n
|
|
@@ -967,7 +967,7 @@ var r = class e {
|
|
|
967
967
|
withCte(t, n) {
|
|
968
968
|
let r = e.ctes ?? [];
|
|
969
969
|
if (r.some((e) => e.name === t)) throw Error(`Query.withCte: duplicate CTE name '${t}'`);
|
|
970
|
-
return
|
|
970
|
+
return X({
|
|
971
971
|
...e,
|
|
972
972
|
ctes: [...r, {
|
|
973
973
|
name: t,
|
|
@@ -978,7 +978,7 @@ var r = class e {
|
|
|
978
978
|
recursiveCte(t, n) {
|
|
979
979
|
let r = e.ctes ?? [];
|
|
980
980
|
if (r.some((e) => e.name === t)) throw Error(`Query.recursiveCte: duplicate CTE name '${t}'`);
|
|
981
|
-
return
|
|
981
|
+
return X({
|
|
982
982
|
...e,
|
|
983
983
|
ctes: [...r, {
|
|
984
984
|
name: t,
|
|
@@ -989,20 +989,20 @@ var r = class e {
|
|
|
989
989
|
},
|
|
990
990
|
groupBy(t) {
|
|
991
991
|
let n = e.groupBy ? [...e.groupBy, ...t] : [...t];
|
|
992
|
-
return
|
|
992
|
+
return X({
|
|
993
993
|
...e,
|
|
994
994
|
groupBy: n
|
|
995
995
|
});
|
|
996
996
|
},
|
|
997
997
|
having(t) {
|
|
998
998
|
let n = e.having ? { and: [e.having, t] } : t;
|
|
999
|
-
return
|
|
999
|
+
return X({
|
|
1000
1000
|
...e,
|
|
1001
1001
|
having: n
|
|
1002
1002
|
});
|
|
1003
1003
|
},
|
|
1004
1004
|
exists() {
|
|
1005
|
-
return
|
|
1005
|
+
return X({
|
|
1006
1006
|
...e,
|
|
1007
1007
|
projection: void 0,
|
|
1008
1008
|
aggregations: [{
|
|
@@ -1013,8 +1013,8 @@ var r = class e {
|
|
|
1013
1013
|
});
|
|
1014
1014
|
}
|
|
1015
1015
|
});
|
|
1016
|
-
function
|
|
1017
|
-
return
|
|
1016
|
+
function Z(e) {
|
|
1017
|
+
return X({
|
|
1018
1018
|
table: e.tableName,
|
|
1019
1019
|
predicate: void 0,
|
|
1020
1020
|
order: [],
|
|
@@ -1025,26 +1025,26 @@ function Q(e) {
|
|
|
1025
1025
|
sourceTable: e
|
|
1026
1026
|
});
|
|
1027
1027
|
}
|
|
1028
|
-
var
|
|
1029
|
-
let
|
|
1030
|
-
column:
|
|
1031
|
-
direction:
|
|
1032
|
-
}],
|
|
1033
|
-
column:
|
|
1034
|
-
op: "gt",
|
|
1035
|
-
value:
|
|
1036
|
-
},
|
|
1028
|
+
var tt = (e, t, n) => Q(e, "id", t, n), Q = (e, t, n, r, i = "asc") => {
|
|
1029
|
+
let a = [...e.order.filter((e) => e.column !== t), {
|
|
1030
|
+
column: t,
|
|
1031
|
+
direction: i
|
|
1032
|
+
}], o = n === void 0 ? void 0 : {
|
|
1033
|
+
column: t,
|
|
1034
|
+
op: i === "desc" ? "lt" : "gt",
|
|
1035
|
+
value: n
|
|
1036
|
+
}, s = o === void 0 ? e.predicate : e.predicate === void 0 ? o : { and: [e.predicate, o] };
|
|
1037
1037
|
return {
|
|
1038
1038
|
...e,
|
|
1039
|
-
predicate:
|
|
1040
|
-
order:
|
|
1041
|
-
take:
|
|
1039
|
+
predicate: s,
|
|
1040
|
+
order: a,
|
|
1041
|
+
take: r
|
|
1042
1042
|
};
|
|
1043
|
-
},
|
|
1043
|
+
}, nt = (e) => {
|
|
1044
1044
|
let t = {};
|
|
1045
|
-
for (let [n, r] of Object.entries(e))
|
|
1045
|
+
for (let [n, r] of Object.entries(e)) G(r), t[n] = Z(r);
|
|
1046
1046
|
return t;
|
|
1047
|
-
},
|
|
1047
|
+
}, rt = (e) => e.isView === !0, it = (e, t, n) => {
|
|
1048
1048
|
if (_(e), n.trim().length === 0) throw Error(`view('${e}', …): the SELECT body is empty — a view must define a query.`);
|
|
1049
1049
|
let r = f(t);
|
|
1050
1050
|
for (let t of Object.keys(r)) v(e, t);
|
|
@@ -1054,7 +1054,7 @@ var et = (e, t, n) => {
|
|
|
1054
1054
|
isView: !0,
|
|
1055
1055
|
viewSelect: n
|
|
1056
1056
|
};
|
|
1057
|
-
},
|
|
1057
|
+
}, $ = (e) => Z({
|
|
1058
1058
|
...e,
|
|
1059
1059
|
isReactive: !1,
|
|
1060
1060
|
appliedMixins: [],
|
|
@@ -1062,8 +1062,8 @@ var et = (e, t, n) => {
|
|
|
1062
1062
|
appliedUniques: [],
|
|
1063
1063
|
appliedFullText: [],
|
|
1064
1064
|
appliedChecks: []
|
|
1065
|
-
}),
|
|
1066
|
-
let r = n === null ?
|
|
1065
|
+
}), at = (e, t, n = null) => {
|
|
1066
|
+
let r = n === null ? V(e.tableName, t) : `${V(n, t)}.${V(e.tableName, t)}`, i = e.viewSelect.trim();
|
|
1067
1067
|
switch (t) {
|
|
1068
1068
|
case "postgres":
|
|
1069
1069
|
case "mysql":
|
|
@@ -1072,16 +1072,16 @@ var et = (e, t, n) => {
|
|
|
1072
1072
|
case "sqlite":
|
|
1073
1073
|
case "turso": return `DROP VIEW IF EXISTS ${r};\nCREATE VIEW ${r} AS ${i};`;
|
|
1074
1074
|
}
|
|
1075
|
-
},
|
|
1075
|
+
}, ot = /^[A-Za-z_][A-Za-z0-9_]*$/, st = (e) => "$" + e.map((e) => typeof e == "number" ? `[${e}]` : ot.test(e) ? `.${e}` : `."${e.replace(/"/g, "\\\"")}"`).join(""), ct = (e) => "{" + e.map((e) => {
|
|
1076
1076
|
let t = String(e);
|
|
1077
1077
|
return /^[A-Za-z0-9_]+$/.test(t) ? t : `"${t.replace(/(["\\])/g, "\\$1")}"`;
|
|
1078
|
-
}).join(",") + "}",
|
|
1079
|
-
let i =
|
|
1078
|
+
}).join(",") + "}", lt = (e, t, n, r = {}) => {
|
|
1079
|
+
let i = V(e, n), a = r.numeric ?? !1;
|
|
1080
1080
|
if (n === "postgres") {
|
|
1081
|
-
let e = `(${i} #>> '${
|
|
1081
|
+
let e = `(${i} #>> '${ct(t)}'::text[])`;
|
|
1082
1082
|
return a ? `${e}::numeric` : e;
|
|
1083
1083
|
}
|
|
1084
|
-
let o =
|
|
1084
|
+
let o = st(t);
|
|
1085
1085
|
switch (n) {
|
|
1086
1086
|
case "mysql":
|
|
1087
1087
|
case "mariadb": {
|
|
@@ -1098,10 +1098,10 @@ var et = (e, t, n) => {
|
|
|
1098
1098
|
return a ? `CAST(${e} AS REAL)` : e;
|
|
1099
1099
|
}
|
|
1100
1100
|
}
|
|
1101
|
-
},
|
|
1101
|
+
}, ut = (e) => {
|
|
1102
1102
|
if (!e.id || e.id.length === 0) throw Error("migration: `id` is required + must be non-empty");
|
|
1103
1103
|
if (!e.up || !e.down) throw Error(`migration ${e.id}: both \`up\` and \`down\` must be functions`);
|
|
1104
1104
|
return e;
|
|
1105
|
-
},
|
|
1105
|
+
}, dt = /^\d{8}_\d{6}_[a-z0-9_]+\.ts$/, ft = (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";
|
|
1106
1106
|
//#endregion
|
|
1107
|
-
export {
|
|
1107
|
+
export { be as $, We as A, u as At, De as B, tt as C, f as Ct, Je as D, le as Dt, Y as E, ee as Et, K as F, I as G, Oe as H, G as I, P as J, N as K, Pe as L, Fe as M, Ie as N, ze as O, o as Ot, Ne as P, ye as Q, Me as R, Q as S, se as St, Ye as T, pe as Tt, Ee as U, je as V, F as W, A as X, M as Y, ve as Z, Ke as _, de as _t, rt as a, _e as at, He as b, s as bt, at as c, r as ct, Ue as d, ie as dt, v as et, Le as f, ce as ft, qe as g, l as gt, Xe as h, c as ht, lt as i, ge as it, Ge as j, $e as k, ae as kt, Be as l, d as lt, nt as m, re as mt, ft as n, _ as nt, $ as o, me as ot, Re as p, oe as pt, Te as q, ut as r, b as rt, it as s, he as st, dt as t, y as tt, et as u, ne as ut, Ze as v, fe as vt, Z as w, te as wt, Ve as x, ue as xt, Qe as y, a as yt, V as z };
|