@voltro/database 0.80.0 → 0.82.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.
@@ -200,7 +200,7 @@ function f(e) {
200
200
  idSchemeInput: e
201
201
  });
202
202
  }
203
- var p = () => d("text"), m = () => d("integer"), ee = () => d("real"), h = (e, t = 0) => {
203
+ var p = () => d("text"), m = () => d("integer"), h = () => d("real"), g = (e, t = 0) => {
204
204
  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)).`);
205
205
  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}).`);
206
206
  return new u({
@@ -211,7 +211,7 @@ var p = () => d("text"), m = () => d("integer"), ee = () => d("real"), h = (e, t
211
211
  precision: e,
212
212
  scale: t
213
213
  });
214
- }, te = h, ne = () => d("bigint"), re = (e, t) => {
214
+ }, ee = g, te = () => d("bigint"), ne = (e, t) => {
215
215
  if (t.length === 0) throw Error(`dbEnum('${e}', []): enum must have at least one value`);
216
216
  return {
217
217
  name: e,
@@ -225,25 +225,25 @@ var p = () => d("text"), m = () => d("integer"), ee = () => d("real"), h = (e, t
225
225
  enumValues: t
226
226
  })
227
227
  };
228
- }, g = () => d("boolean"), _ = () => d("timestamp"), ie = () => d("date"), v = () => d("json"), y = () => d("bytes"), b = () => new u({
228
+ }, _ = () => d("boolean"), v = () => d("timestamp"), re = () => d("date"), y = () => d("json"), b = () => d("bytes"), x = () => new u({
229
229
  type: "bytes",
230
230
  nullable: !0,
231
231
  unique: !1,
232
232
  hasDefault: !1,
233
233
  crdtManaged: !0
234
- }), ae = () => new u({
234
+ }), ie = () => new u({
235
235
  type: "bytes",
236
236
  nullable: !0,
237
237
  unique: !1,
238
238
  hasDefault: !1,
239
239
  crdtManaged: !0
240
- }), x = () => {
240
+ }), S = () => {
241
241
  throw Error("selfReference(): the target is resolved by table() — a column built with selfReference() must be declared inside a table({ … }) literal, not read before the table exists");
242
242
  };
243
- function oe(e) {
244
- return se(x, e);
243
+ function ae(e) {
244
+ return oe(S, e);
245
245
  }
246
- function se(e, t) {
246
+ function oe(e, t) {
247
247
  return new u({
248
248
  type: "reference",
249
249
  nullable: !1,
@@ -259,13 +259,13 @@ function se(e, t) {
259
259
  ...t?.orphanPolicy ? { orphanPolicy: t.orphanPolicy } : {}
260
260
  });
261
261
  }
262
- var ce = () => new u({
262
+ var se = () => new u({
263
263
  type: "text",
264
264
  nullable: !0,
265
265
  unique: !1,
266
266
  hasDefault: !1,
267
267
  dropped: !0
268
- }), le = (e, t) => {
268
+ }), ce = (e, t) => {
269
269
  if (!Number.isInteger(e) || e <= 0) throw Error(`vector(${String(e)}): dimension must be a positive integer (the embedding length, e.g. vector(1536)).`);
270
270
  return new u({
271
271
  type: "vector",
@@ -275,13 +275,13 @@ var ce = () => new u({
275
275
  vectorDim: e,
276
276
  vectorPrecision: t?.precision ?? "float32"
277
277
  });
278
- }, ue = (e) => new u({
278
+ }, le = (e) => new u({
279
279
  type: "array",
280
280
  nullable: !1,
281
281
  unique: !1,
282
282
  hasDefault: !1,
283
283
  arrayElement: e.__definition().type
284
- }), de = () => d("interval"), fe = (e, t = 4326) => new u({
284
+ }), ue = () => d("interval"), de = (e, t = 4326) => new u({
285
285
  type: "text",
286
286
  nullable: !1,
287
287
  unique: !1,
@@ -291,7 +291,7 @@ var ce = () => new u({
291
291
  geomKind: e,
292
292
  srid: t
293
293
  }
294
- }), pe = (e, t = 4326) => new u({
294
+ }), fe = (e, t = 4326) => new u({
295
295
  type: "text",
296
296
  nullable: !1,
297
297
  unique: !1,
@@ -301,182 +301,182 @@ var ce = () => new u({
301
301
  geomKind: e,
302
302
  srid: t
303
303
  }
304
- }), me = (e) => new u({
304
+ }), pe = (e) => new u({
305
305
  type: "raw",
306
306
  nullable: !1,
307
307
  unique: !1,
308
308
  hasDefault: !1,
309
309
  rawDdl: e
310
- }), S = (e) => {
310
+ }), C = (e) => {
311
311
  let t = {};
312
312
  for (let [n, r] of Object.entries(e)) t[n] = r.__definition();
313
313
  return t;
314
- }, he = /* @__PURE__ */ new WeakMap(), ge = (e) => typeof e == "object" && e ? he.get(e) : void 0, _e = (e, t = {}) => {
314
+ }, me = /* @__PURE__ */ new WeakMap(), he = (e) => typeof e == "object" && e ? me.get(e) : void 0, ge = (e, t = {}) => {
315
315
  let n = p();
316
- return he.set(n, {
316
+ return me.set(n, {
317
317
  target: e,
318
318
  orphanPolicy: t.orphanPolicy ?? "keep",
319
319
  onSoftDelete: t.onSoftDelete ?? !1
320
320
  }), n;
321
- }, C = /* @__PURE__ */ new Map(), ve = (e, t) => {
321
+ }, w = /* @__PURE__ */ new Map(), _e = (e, t) => {
322
322
  if (t.from === t.to) throw Error(`declareEnumRename('${e}'): \`from\` and \`to\` are both '${t.from}' — a rename must change the value.`);
323
- let n = C.get(e) ?? [];
323
+ let n = w.get(e) ?? [];
324
324
  for (let r of n) {
325
325
  if (r.from === t.from && r.to === t.to) return;
326
326
  if (r.from === t.from && r.to !== t.to) throw Error(`declareEnumRename('${e}'): value '${t.from}' is already declared as renamed to '${r.to}', cannot also rename it to '${t.to}'.`);
327
327
  }
328
- n.push(t), C.set(e, n);
329
- }, ye = (e) => C.get(e) ?? [], be = () => C, xe = () => {
330
- C.clear();
331
- }, Se = (t) => {
328
+ n.push(t), w.set(e, n);
329
+ }, ve = (e) => w.get(e) ?? [], ye = () => w, be = () => {
330
+ w.clear();
331
+ }, xe = (t) => {
332
332
  let r = t;
333
333
  for (let t = 0; t < 4 && n.isFiberFailure(r); t++) r = e.squash(r[n.FiberFailureCauseId]);
334
334
  return r;
335
- }, w = (t, r = 0) => {
335
+ }, T = (t, r = 0) => {
336
336
  if (r >= 4 || !n.isFiberFailure(t)) return [t];
337
337
  let i = t[n.FiberFailureCauseId], a = [...e.failures(i), ...e.defects(i)];
338
338
  if (a.length === 0) return [e.squash(i)];
339
339
  let o = [];
340
- for (let e of a.slice(0, 8)) o.push(...w(e, r + 1));
340
+ for (let e of a.slice(0, 8)) o.push(...T(e, r + 1));
341
341
  return o;
342
- }, Ce = (e) => e.dbCode !== void 0 || e.dbErrno !== void 0 || e.dbNumber !== void 0 || e.dbSqlState !== void 0 || e.dbConstraint !== void 0, we = (e) => {
343
- let t = {}, n = [], r = Se(e);
342
+ }, Se = (e) => e.dbCode !== void 0 || e.dbErrno !== void 0 || e.dbNumber !== void 0 || e.dbSqlState !== void 0 || e.dbConstraint !== void 0, Ce = (e) => {
343
+ let t = {}, n = [], r = xe(e);
344
344
  for (let e = 0; e < 8 && typeof r == "object" && r; e++) {
345
345
  let e = r;
346
346
  t.dbCode === void 0 && (typeof e.code == "string" || typeof e.code == "number") && (t.dbCode = e.code), t.dbErrno === void 0 && typeof e.errno == "number" && (t.dbErrno = e.errno), t.dbNumber === void 0 && typeof e.number == "number" && (t.dbNumber = e.number), t.dbSqlState === void 0 && typeof e.sqlState == "string" && (t.dbSqlState = e.sqlState), t.dbBindings === void 0 && typeof e.voltroBindings == "string" && (t.dbBindings = e.voltroBindings), t.dbStatement === void 0 && typeof e.sql == "string" && e.sql.includes("?") && (t.dbStatement = e.sql, t.dbPlaceholders = (e.sql.match(/\?/g) ?? []).length), t.dbFatal === void 0 && typeof e.fatal == "boolean" && (t.dbFatal = e.fatal), t.dbConstraint === void 0 && typeof e.constraint == "string" && (t.dbConstraint = e.constraint), t.dbTable === void 0 && typeof e.table == "string" && (t.dbTable = e.table), t.dbColumn === void 0 && typeof e.column == "string" && (t.dbColumn = e.column), t.dbSchema === void 0 && typeof e.schema == "string" && (t.dbSchema = e.schema);
347
347
  let i = e.sqlMessage ?? e.detail;
348
348
  t.dbMessage === void 0 && typeof i == "string" && (t.dbMessage = i);
349
349
  let a = typeof e.constructor == "function" ? e.constructor.name : void 0, o = typeof e._tag == "string" && e._tag || typeof e.name == "string" && e.name || (typeof a == "string" && a !== "Object" ? a : void 0), s = typeof e.message == "string" ? e.message : void 0;
350
- (o || s) && n.push(`${o || "Error"}${s ? `: ${s.slice(0, 200)}` : ""}`), r = Se(e.cause);
350
+ (o || s) && n.push(`${o || "Error"}${s ? `: ${s.slice(0, 200)}` : ""}`), r = xe(e.cause);
351
351
  }
352
352
  return n.length > 0 && (t.dbCauseChain = n.join(" ← "), t.dbMessage === void 0 && (t.dbMessage = n[n.length - 1])), t;
353
- }, Te = (e) => {
354
- let t = w(e).map(we);
353
+ }, we = (e) => {
354
+ let t = T(e).map(Ce);
355
355
  if (t.length <= 1) return t[0] ?? {};
356
- let n = t.find(Ce) ?? t[0], r = t.filter((e) => e !== n).map((e) => e.dbCauseChain).filter((e) => typeof e == "string");
356
+ let n = t.find(Se) ?? t[0], r = t.filter((e) => e !== n).map((e) => e.dbCauseChain).filter((e) => typeof e == "string");
357
357
  if (r.length === 0) return n;
358
358
  let i = typeof n.dbCauseChain == "string" ? n.dbCauseChain : void 0;
359
359
  return {
360
360
  ...n,
361
361
  dbCauseChain: [i, ...r].filter(Boolean).join(" ‖ ")
362
362
  };
363
- }, Ee = (e, t) => {
364
- let n = Oe(e);
363
+ }, Te = (e, t) => {
364
+ let n = De(e);
365
365
  if (n !== void 0) return n;
366
- let r = Te(e), i = Pe(r, t);
366
+ let r = we(e), i = Ne(r, t);
367
367
  if (i !== void 0) {
368
368
  let e = i.constraint ?? i.column;
369
369
  return e === void 0 ? i.kind : `${i.kind}: ${e}`;
370
370
  }
371
- let a = r.dbCode ?? r.dbSqlState ?? r.dbErrno ?? r.dbNumber, o = je(e);
372
- return a !== void 0 && ke.test(String(a)) ? `${o} (${String(a)})` : o;
373
- }, De = Symbol.for("@voltro/database/authoredMessage"), T = (e, t) => {
371
+ let a = r.dbCode ?? r.dbSqlState ?? r.dbErrno ?? r.dbNumber, o = Ae(e);
372
+ return a !== void 0 && Oe.test(String(a)) ? `${o} (${String(a)})` : o;
373
+ }, Ee = Symbol.for("@voltro/database/authoredMessage"), E = (e, t) => {
374
374
  let n = t === void 0 ? Error(e) : Error(e, t);
375
- return Object.defineProperty(n, De, {
375
+ return Object.defineProperty(n, Ee, {
376
376
  value: !0,
377
377
  enumerable: !1
378
378
  }), n;
379
- }, Oe = (e) => {
380
- for (let t of w(e)) {
379
+ }, De = (e) => {
380
+ for (let t of T(e)) {
381
381
  let e = t;
382
382
  for (let t = 0; typeof e == "object" && e && t < 8; t += 1) {
383
- if (e[De] === !0) {
383
+ if (e[Ee] === !0) {
384
384
  let t = e.message;
385
385
  if (typeof t == "string" && t.length > 0) return t;
386
386
  }
387
387
  e = e.cause;
388
388
  }
389
389
  }
390
- }, ke = /^[A-Za-z0-9_]{1,32}$/, Ae = /^[A-Za-z_][A-Za-z0-9_]{0,63}$/, je = (e) => {
390
+ }, Oe = /^[A-Za-z0-9_]{1,32}$/, ke = /^[A-Za-z_][A-Za-z0-9_]{0,63}$/, Ae = (e) => {
391
391
  let t = e?._tag, n = e?.name, r = (typeof t == "string" ? t : typeof n == "string" ? n : "").split(/[^A-Za-z0-9_]+/).filter(Boolean).pop();
392
- return r !== void 0 && Ae.test(r) ? r : "unknown";
393
- }, Me = /^[A-Za-z_][A-Za-z0-9_$]*$/, E = (e) => e !== void 0 && e.length <= 128 && Me.test(e) ? e : void 0, Ne = (e) => e === void 0 ? void 0 : e.split(".").pop() ?? e, D = (e, ...t) => {
392
+ return r !== void 0 && ke.test(r) ? r : "unknown";
393
+ }, je = /^[A-Za-z_][A-Za-z0-9_$]*$/, D = (e) => e !== void 0 && e.length <= 128 && je.test(e) ? e : void 0, Me = (e) => e === void 0 ? void 0 : e.split(".").pop() ?? e, O = (e, ...t) => {
394
394
  for (let n of t) {
395
395
  let t = n.exec(e);
396
396
  if (t?.[1] !== void 0) return t[1];
397
397
  }
398
- }, Pe = (e, t) => {
398
+ }, Ne = (e, t) => {
399
399
  let n = e.dbCode, r = e.dbErrno, i = e.dbNumber, a = typeof e.dbMessage == "string" ? e.dbMessage : "", o = `${typeof e.dbCauseChain == "string" ? e.dbCauseChain : ""} ${a}`;
400
400
  if (n === "23503") {
401
- let t = E(e.dbConstraint);
401
+ let t = D(e.dbConstraint);
402
402
  return {
403
403
  kind: /is still referenced from table/i.test(o) ? "foreignKeyInUse" : "foreignKey",
404
404
  ...t === void 0 ? {} : { constraint: t }
405
405
  };
406
406
  }
407
407
  if (n === "23505") {
408
- let t = E(e.dbConstraint);
408
+ let t = D(e.dbConstraint);
409
409
  return {
410
410
  kind: "unique",
411
411
  ...t === void 0 ? {} : { constraint: t }
412
412
  };
413
413
  }
414
414
  if (n === "23502") {
415
- let t = E(e.dbColumn);
415
+ let t = D(e.dbColumn);
416
416
  return {
417
417
  kind: "notNull",
418
418
  ...t === void 0 ? {} : { column: t }
419
419
  };
420
420
  }
421
421
  if (n === "23514") {
422
- let t = E(e.dbConstraint);
422
+ let t = D(e.dbConstraint);
423
423
  return {
424
424
  kind: "check",
425
425
  ...t === void 0 ? {} : { constraint: t }
426
426
  };
427
427
  }
428
428
  if (r === 1452 || r === 1451) {
429
- let e = E(D(o, /CONSTRAINT `([^`]+)`/));
429
+ let e = D(O(o, /CONSTRAINT `([^`]+)`/));
430
430
  return {
431
431
  kind: r === 1451 ? "foreignKeyInUse" : "foreignKey",
432
432
  ...e === void 0 ? {} : { constraint: e }
433
433
  };
434
434
  }
435
435
  if (r === 1062) {
436
- let e = E(Ne(D(o, /for key '([^']+)'/)));
436
+ let e = D(Me(O(o, /for key '([^']+)'/)));
437
437
  return {
438
438
  kind: "unique",
439
439
  ...e === void 0 ? {} : { constraint: e }
440
440
  };
441
441
  }
442
442
  if (r === 1048 || r === 1364) {
443
- let e = E(D(o, /Column '([^']+)' cannot be null/, /Field '([^']+)' doesn't have a default value/));
443
+ let e = D(O(o, /Column '([^']+)' cannot be null/, /Field '([^']+)' doesn't have a default value/));
444
444
  return {
445
445
  kind: "notNull",
446
446
  ...e === void 0 ? {} : { column: e }
447
447
  };
448
448
  }
449
449
  if (r === 3819 || r === 4025) {
450
- let e = E(D(o, /Check constraint '([^']+)'/, /CONSTRAINT `([^`]+)` failed/));
450
+ let e = D(O(o, /Check constraint '([^']+)'/, /CONSTRAINT `([^`]+)` failed/));
451
451
  return {
452
452
  kind: "check",
453
453
  ...e === void 0 ? {} : { constraint: e }
454
454
  };
455
455
  }
456
456
  if (i === 547) {
457
- let e = D(o, /(?:FOREIGN KEY|REFERENCE) constraint "([^"]+)"/), t = D(o, /CHECK constraint "([^"]+)"/);
457
+ let e = O(o, /(?:FOREIGN KEY|REFERENCE) constraint "([^"]+)"/), t = O(o, /CHECK constraint "([^"]+)"/);
458
458
  if (t !== void 0 && e === void 0) {
459
- let e = E(t);
459
+ let e = D(t);
460
460
  return {
461
461
  kind: "check",
462
462
  ...e === void 0 ? {} : { constraint: e }
463
463
  };
464
464
  }
465
- let n = /REFERENCE constraint/.test(o), r = E(e);
465
+ let n = /REFERENCE constraint/.test(o), r = D(e);
466
466
  return {
467
467
  kind: n ? "foreignKeyInUse" : "foreignKey",
468
468
  ...r === void 0 ? {} : { constraint: r }
469
469
  };
470
470
  }
471
471
  if (i === 2627 || i === 2601) {
472
- let e = E(D(o, /(?:UNIQUE KEY|PRIMARY KEY) constraint '([^']+)'/, /index '([^']+)'/));
472
+ let e = D(O(o, /(?:UNIQUE KEY|PRIMARY KEY) constraint '([^']+)'/, /index '([^']+)'/));
473
473
  return {
474
474
  kind: "unique",
475
475
  ...e === void 0 ? {} : { constraint: e }
476
476
  };
477
477
  }
478
478
  if (i === 515) {
479
- let e = E(D(o, /Cannot insert the value NULL into column '([^']+)'/));
479
+ let e = D(O(o, /Cannot insert the value NULL into column '([^']+)'/));
480
480
  return {
481
481
  kind: "notNull",
482
482
  ...e === void 0 ? {} : { column: e }
@@ -484,40 +484,40 @@ var ce = () => new u({
484
484
  }
485
485
  if (n === "SQLITE_CONSTRAINT_FOREIGNKEY") return { kind: t === "delete" || t === "deleteMany" || t === "hardDelete" ? "foreignKeyInUse" : "foreignKey" };
486
486
  if (n === "SQLITE_CONSTRAINT_UNIQUE" || n === "SQLITE_CONSTRAINT_PRIMARYKEY") {
487
- let e = E(Ne(D(o, /UNIQUE constraint failed: ([^,\s]+)/)));
487
+ let e = D(Me(O(o, /UNIQUE constraint failed: ([^,\s]+)/)));
488
488
  return {
489
489
  kind: "unique",
490
490
  ...e === void 0 ? {} : { column: e }
491
491
  };
492
492
  }
493
493
  if (n === "SQLITE_CONSTRAINT_NOTNULL") {
494
- let e = E(Ne(D(o, /NOT NULL constraint failed: ([^,\s]+)/)));
494
+ let e = D(Me(O(o, /NOT NULL constraint failed: ([^,\s]+)/)));
495
495
  return {
496
496
  kind: "notNull",
497
497
  ...e === void 0 ? {} : { column: e }
498
498
  };
499
499
  }
500
500
  if (n === "SQLITE_CONSTRAINT_CHECK") {
501
- let e = E(D(a, /CHECK constraint failed: (.+)$/));
501
+ let e = D(O(a, /CHECK constraint failed: (.+)$/));
502
502
  return {
503
503
  kind: "check",
504
504
  ...e === void 0 ? {} : { constraint: e }
505
505
  };
506
506
  }
507
- }, Fe = (e) => {
508
- let t = Pe(e)?.kind;
507
+ }, Pe = (e) => {
508
+ let t = Ne(e)?.kind;
509
509
  return t === "foreignKey" || t === "foreignKeyInUse";
510
- }, Ie = (e) => {
510
+ }, Fe = (e) => {
511
511
  let t = e.dbCode, n = e.dbErrno;
512
512
  return t === "57014" || n === 3024 || n === 1969 || t === "ETIMEOUT" || t === "SQLITE_INTERRUPT";
513
- }, Le = (e) => {
513
+ }, Ie = (e) => {
514
514
  if (e.dbErrno !== 1366) return;
515
515
  let t = `${typeof e.dbCauseChain == "string" ? e.dbCauseChain : ""} ${typeof e.dbMessage == "string" ? e.dbMessage : ""}`;
516
516
  if (/Incorrect string value: '\\x(F[0-4])/i.exec(t) === null) return;
517
- let n = D(t, /for column [`']?(?:[^`'.]+[`']?\.[`']?)*([^`'.]+)[`']? at row/);
517
+ let n = O(t, /for column [`']?(?:[^`'.]+[`']?\.[`']?)*([^`'.]+)[`']? at row/);
518
518
  return `${n === void 0 ? "the column" : `column '${n}'`} is stored in a character set that cannot hold a 4-byte character (utf8mb3). Declare the store's character set in app.config.ts — store: { dialect: 'mariadb' | 'mysql', charset: 'utf8mb4' } — and run \`voltro db plan\`: every declared table is created with it and converted to it.`;
519
- }, Re = (e) => {
520
- let t = Te(e), n = [
519
+ }, Le = (e) => {
520
+ let t = we(e), n = [
521
521
  t.dbCode === void 0 ? void 0 : `code=${String(t.dbCode)}`,
522
522
  t.dbErrno === void 0 ? void 0 : `errno=${String(t.dbErrno)}`,
523
523
  t.dbNumber === void 0 ? void 0 : `number=${String(t.dbNumber)}`,
@@ -526,9 +526,9 @@ var ce = () => new u({
526
526
  t.dbPlaceholders === void 0 ? void 0 : `placeholders=${String(t.dbPlaceholders)}`
527
527
  ].filter((e) => e !== void 0), r = typeof e?.message == "string" ? e.message : void 0, i = typeof t.dbMessage == "string" ? t.dbMessage : void 0, a = i === void 0 ? void 0 : n.length > 0 || i !== r && i !== `Error: ${String(r)}` ? i : void 0, o = typeof t.dbBindings == "string" ? `\n bindings: ${t.dbBindings}` : "", s = typeof t.dbStatement == "string" ? `\n statement: ${t.dbStatement.length <= 400 ? t.dbStatement : `${t.dbStatement.slice(0, 400)}…`}` : "";
528
528
  if (a === void 0 && n.length === 0) return;
529
- let c = Le(t), l = c === void 0 ? "" : `\n hint: ${c}`;
529
+ let c = Ie(t), l = c === void 0 ? "" : `\n hint: ${c}`;
530
530
  return [a, n.length > 0 ? `[${n.join(" ")}]` : void 0].filter((e) => e !== void 0 && e !== "").join(" ") + l + s + o;
531
- }, ze = (e) => Object.entries(e).map(([e, t]) => `${e}:${Be(t)}`).join(" "), Be = (e) => {
531
+ }, Re = (e) => Object.entries(e).map(([e, t]) => `${e}:${ze(t)}`).join(" "), ze = (e) => {
532
532
  if (e === null) return "null";
533
533
  if (e === void 0) return "undefined";
534
534
  if (typeof e == "bigint") return "bigint";
@@ -538,24 +538,24 @@ var ce = () => new u({
538
538
  if (globalThis.Buffer !== void 0 && globalThis.Buffer.isBuffer(e)) return "Buffer";
539
539
  let t = e.constructor?.name;
540
540
  return typeof t == "string" && t !== "" ? t : "Object";
541
- }, Ve = 63, He = 60, O = [], k = (e) => {
542
- O.includes(e) || O.push(e);
543
- }, Ue = () => {
544
- let e = O.slice();
545
- return O.length = 0, e;
546
- }, We = /^[a-zA-Z_][a-zA-Z0-9_]*$/, Ge = (e, t) => {
541
+ }, Be = 63, Ve = 60, k = [], A = (e) => {
542
+ k.includes(e) || k.push(e);
543
+ }, He = () => {
544
+ let e = k.slice();
545
+ return k.length = 0, e;
546
+ }, Ue = /^[a-zA-Z_][a-zA-Z0-9_]*$/, We = (e, t) => {
547
547
  if (t.length === 0) throw Error(`${e} cannot be empty.`);
548
- if (!We.test(t)) throw Error(`${e} '${t}' contains characters outside [A-Za-z0-9_] or starts with a digit. Dialect-portable identifiers must match /^[a-zA-Z_][a-zA-Z0-9_]*$/.`);
549
- }, A = (e) => {
550
- if (Ge("table name", e), e.length > 63) throw Error(`table name '${e}' is ${e.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Shorten the name; long table names also cascade into auto-named indexes and FK constraints that would themselves exceed the limit.`);
551
- e.length > 60 && k(`table name '${e}' is ${e.length} chars — ${63 - e.length} from the Postgres 63-byte limit. Auto-named indexes on this table will run out of room fast.`);
552
- }, j = (e, t) => {
553
- if (Ge("column name", t), t.length > 63) throw Error(`column '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Rename it.`);
554
- t.length > 60 && k(`column '${t}' on table '${e}' is ${t.length} chars — close to the 63-byte limit.`);
555
- }, M = (e, t, n, r) => {
556
- if (Ge("index name", t), t.length > 63) throw Error(n ? `auto-named index '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Supply an explicit short name: .index('<shortName>', ${JSON.stringify([...r])}).` : `index name '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Shorten it.`);
557
- t.length > 60 && k(`index '${t}' on table '${e}' is ${t.length} chars — ${63 - t.length} from the 63-byte limit. ${n ? `Consider .index('<shortName>', ${JSON.stringify([...r])}) before it grows.` : ""}`);
558
- }, N = (e, t) => {
548
+ if (!Ue.test(t)) throw Error(`${e} '${t}' contains characters outside [A-Za-z0-9_] or starts with a digit. Dialect-portable identifiers must match /^[a-zA-Z_][a-zA-Z0-9_]*$/.`);
549
+ }, j = (e) => {
550
+ if (We("table name", e), e.length > 63) throw Error(`table name '${e}' is ${e.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Shorten the name; long table names also cascade into auto-named indexes and FK constraints that would themselves exceed the limit.`);
551
+ e.length > 60 && A(`table name '${e}' is ${e.length} chars — ${63 - e.length} from the Postgres 63-byte limit. Auto-named indexes on this table will run out of room fast.`);
552
+ }, M = (e, t) => {
553
+ if (We("column name", t), t.length > 63) throw Error(`column '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Rename it.`);
554
+ t.length > 60 && A(`column '${t}' on table '${e}' is ${t.length} chars — close to the 63-byte limit.`);
555
+ }, N = (e, t, n, r) => {
556
+ if (We("index name", t), t.length > 63) throw Error(n ? `auto-named index '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Supply an explicit short name: .index('<shortName>', ${JSON.stringify([...r])}).` : `index name '${t}' on table '${e}' is ${t.length} chars — exceeds the 63-byte cross-dialect limit (Postgres floor). Shorten it.`);
557
+ t.length > 60 && A(`index '${t}' on table '${e}' is ${t.length} chars — ${63 - t.length} from the 63-byte limit. ${n ? `Consider .index('<shortName>', ${JSON.stringify([...r])}) before it grows.` : ""}`);
558
+ }, P = (e, t) => {
559
559
  if (e.length === 0) throw Error(`typeid prefix on table '${t.tableName}' cannot be empty.`);
560
560
  if (!/^[a-z][a-z0-9_]*$/.test(e)) {
561
561
  let n = t.kind === "derived" ? "the derived prefix doesn't match typeid's required shape — supply an explicit one via id({ prefix: '...' })." : "the prefix must match typeid's required shape /^[a-z][a-z0-9_]*$/.";
@@ -565,44 +565,44 @@ var ce = () => new u({
565
565
  let n = t.kind === "derived" ? "shorten the table name, or supply an explicit short prefix via id({ prefix: '...' })." : "pick a shorter prefix.";
566
566
  throw Error(`typeid prefix '${e}' on table '${t.tableName}' is ${e.length} chars — exceeds the 63-byte limit; ${n}`);
567
567
  }
568
- e.length > 60 && k(`typeid prefix '${e}' on table '${t.tableName}' is ${e.length} chars — close to the 63-byte limit. Generated ids will be even longer (prefix + '_' + 26).`);
569
- }, Ke = 1704067200000n, qe = 10n, Je = 12n, Ye = (1n << qe) - 1n, Xe = (1n << Je) - 1n, Ze = Je, Qe = 22n, $e = () => {
568
+ e.length > 60 && A(`typeid prefix '${e}' on table '${t.tableName}' is ${e.length} chars — close to the 63-byte limit. Generated ids will be even longer (prefix + '_' + 26).`);
569
+ }, Ge = 1704067200000n, Ke = 10n, qe = 12n, Je = (1n << Ke) - 1n, Ye = (1n << qe) - 1n, Xe = qe, Ze = 22n, Qe = () => {
570
570
  let e = process.env.SNOWFLAKE_MACHINE_ID;
571
571
  if (e === void 0 || e === "") return 0n;
572
572
  let t = BigInt(e);
573
- if (t < 0n || t > Ye) throw Error(`SNOWFLAKE_MACHINE_ID out of range: ${e}. Must be 0..${Ye}.`);
573
+ if (t < 0n || t > Je) throw Error(`SNOWFLAKE_MACHINE_ID out of range: ${e}. Must be 0..${Je}.`);
574
574
  return t;
575
- }, et = () => ({
575
+ }, $e = () => ({
576
576
  lastMs: 0n,
577
577
  sequence: 0n,
578
- machineId: $e()
579
- }), P, tt = () => (P === void 0 && (P = et()), P), nt = () => {
580
- P = et();
581
- }, rt = () => BigInt(Date.now()), it = (e) => {
582
- let t = rt();
583
- for (; t <= e;) t = rt();
578
+ machineId: Qe()
579
+ }), F, et = () => (F === void 0 && (F = $e()), F), tt = () => {
580
+ F = $e();
581
+ }, nt = () => BigInt(Date.now()), rt = (e) => {
582
+ let t = nt();
583
+ for (; t <= e;) t = nt();
584
584
  return t;
585
- }, at = () => {
586
- let e = tt(), t = rt();
587
- t === e.lastMs ? (e.sequence = e.sequence + 1n & Xe, e.sequence === 0n && (t = it(e.lastMs), e.lastMs = t)) : (e.sequence = 0n, e.lastMs = t);
588
- let n = t - Ke;
585
+ }, it = () => {
586
+ let e = et(), t = nt();
587
+ t === e.lastMs ? (e.sequence = e.sequence + 1n & Ye, e.sequence === 0n && (t = rt(e.lastMs), e.lastMs = t)) : (e.sequence = 0n, e.lastMs = t);
588
+ let n = t - Ge;
589
589
  if (n < 0n) throw Error("Snowflake timestamp before configured epoch (2024-01-01). System clock is wrong.");
590
- return (n << Qe | e.machineId << Ze | e.sequence).toString();
591
- }, ot = (e) => {
590
+ return (n << Ze | e.machineId << Xe | e.sequence).toString();
591
+ }, at = (e) => {
592
592
  let t = e.toLowerCase();
593
593
  if (t.startsWith("_")) throw Error(`cannot derive a typeid prefix for table '${e}' (table names starting with '_' are not valid typeid prefixes). Pick an explicit prefix via id({ prefix: '...' }) or use a different scheme like id({ scheme: 'numeric' }) for internal tables.`);
594
594
  if (!/^[a-z][a-z0-9_]*$/.test(t)) throw Error(`cannot derive a typeid prefix from table name '${e}' (must match [a-z][a-z0-9_]*). Pick an explicit prefix via id({ prefix: '...' }).`);
595
595
  let n = t.endsWith("ies") && t.length > 3 ? t.slice(0, -3) + "y" : t.endsWith("ses") || t.endsWith("xes") || t.endsWith("zes") || t.endsWith("shes") || t.endsWith("ches") ? t.slice(0, -2) : t.endsWith("s") && t.length > 1 ? t.slice(0, -1) : t;
596
- return N(n, {
596
+ return P(n, {
597
597
  kind: "derived",
598
598
  tableName: e
599
599
  }), n;
600
- }, st = (e, t) => {
600
+ }, ot = (e, t) => {
601
601
  if (e === void 0) return {
602
602
  kind: "typeid",
603
- prefix: ot(t)
603
+ prefix: at(t)
604
604
  };
605
- if ("prefix" in e && !("scheme" in e)) return N(e.prefix, {
605
+ if ("prefix" in e && !("scheme" in e)) return P(e.prefix, {
606
606
  kind: "explicit",
607
607
  tableName: t
608
608
  }), {
@@ -612,8 +612,8 @@ var ce = () => new u({
612
612
  if (!("scheme" in e)) throw Error("invalid id() options: no scheme or prefix");
613
613
  switch (e.scheme) {
614
614
  case "typeid": {
615
- let n = e.prefix ?? ot(t);
616
- return e.prefix !== void 0 && N(e.prefix, {
615
+ let n = e.prefix ?? at(t);
616
+ return e.prefix !== void 0 && P(e.prefix, {
617
617
  kind: "explicit",
618
618
  tableName: t
619
619
  }), {
@@ -629,22 +629,22 @@ var ce = () => new u({
629
629
  generate: e.generate
630
630
  };
631
631
  }
632
- }, ct = (e, t) => {
632
+ }, st = (e, t) => {
633
633
  switch (e.kind) {
634
634
  case "typeid": return i(e.prefix).toString();
635
635
  case "ulid": return a();
636
636
  case "numeric": return null;
637
- case "snowflake": return at();
637
+ case "snowflake": return it();
638
638
  case "custom": return e.generate(t);
639
639
  }
640
- }, lt = (e) => ({
641
- fields: S(e.fields),
640
+ }, ct = (e) => ({
641
+ fields: C(e.fields),
642
642
  ...e.id === void 0 ? {} : { id: e.id },
643
643
  ...e.requires === void 0 ? {} : { requires: e.requires },
644
644
  ...e.indexes === void 0 ? {} : { indexes: e.indexes },
645
645
  ...e.behaviors === void 0 ? {} : { behaviors: e.behaviors },
646
646
  ...e.policies === void 0 ? {} : { policies: e.policies }
647
- }), ut = lt, dt = (e) => {
647
+ }), lt = ct, ut = (e) => {
648
648
  let t = /* @__PURE__ */ new Set(), n = [], r = (e) => {
649
649
  let i = e.id ?? e;
650
650
  if (!t.has(i)) {
@@ -654,7 +654,7 @@ var ce = () => new u({
654
654
  };
655
655
  for (let t of e) r(t);
656
656
  return n;
657
- }, ft = (e, ...t) => {
657
+ }, dt = (e, ...t) => {
658
658
  if (t.length === 0) throw Error(`jsonIndex("${e}"): at least one path segment is required`);
659
659
  let n = (r) => ({
660
660
  jsonPath: {
@@ -665,14 +665,14 @@ var ce = () => new u({
665
665
  numeric: () => n(!0)
666
666
  });
667
667
  return n(!1);
668
- }, pt = (e = "cosine", t = "float32") => {
668
+ }, ft = (e = "cosine", t = "float32") => {
669
669
  let n = t === "half" ? "halfvec" : "vector";
670
670
  switch (e) {
671
671
  case "cosine": return `${n}_cosine_ops`;
672
672
  case "l2": return `${n}_l2_ops`;
673
673
  case "inner": return `${n}_ip_ops`;
674
674
  }
675
- }, mt = [
675
+ }, pt = [
676
676
  "id",
677
677
  "tenantId",
678
678
  "createdAt",
@@ -681,7 +681,7 @@ var ce = () => new u({
681
681
  "updatedBy",
682
682
  "deletedAt",
683
683
  "deletedBy"
684
- ], ht = (e) => e.id ?? `<anonymous mixin: ${Object.keys(e.fields).join(", ")}>`, gt = (e, t) => `${e}_${t.join("_")}_idx`, _t = (e, t) => `${e}_${t.join("_")}_uq`, vt = (e, t, n, r, i) => {
684
+ ], mt = (e) => e.id ?? `<anonymous mixin: ${Object.keys(e.fields).join(", ")}>`, ht = (e, t) => `${e}_${t.join("_")}_idx`, gt = (e, t) => `${e}_${t.join("_")}_uq`, _t = (e, t, n, r, i) => {
685
685
  if (n !== "hnsw") return;
686
686
  if (r.length !== 1) throw Error(`hnsw index '${t}' on table '${e}' must cover exactly one vector column — got ${r.length} fields. pgvector's HNSW access method indexes a single vector column.`);
687
687
  let a = r[0];
@@ -689,14 +689,14 @@ var ce = () => new u({
689
689
  let o = i[a];
690
690
  if (o === void 0) throw Error(`hnsw index '${t}' on table '${e}' references unknown column '${a}'.`);
691
691
  if (o.type !== "vector") throw Error(`hnsw index '${t}' on table '${e}' requires a vector() column — column '${a}' is '${o.type}'. HNSW is the pgvector approximate-nearest-neighbour method and only applies to vectors.`);
692
- }, yt = (e, t) => {
692
+ }, vt = (e, t) => {
693
693
  let n;
694
694
  for (let [r, i] of Object.entries(e)) i.type === "id" && i.idScheme === void 0 && (n === void 0 && (n = { ...e }), n[r] = {
695
695
  ...i,
696
- idScheme: st(i.idSchemeInput, t)
696
+ idScheme: ot(i.idSchemeInput, t)
697
697
  });
698
698
  return n ?? e;
699
- }, F = (e) => {
699
+ }, I = (e) => {
700
700
  let t = e.appliedPrimaryKey ?? [];
701
701
  return {
702
702
  tableName: e.tableName,
@@ -715,8 +715,8 @@ var ce = () => new u({
715
715
  ...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema },
716
716
  fullTextIndex: ((t, n, r) => {
717
717
  if (n.length === 0) throw Error(`fullTextIndex '${t}' on '${e.tableName}' has no columns.`);
718
- if (M(e.tableName, t, !1, n), e.appliedFullText.some((e) => e.name === t)) throw Error(`duplicate full-text index '${t}' on table '${e.tableName}'.`);
719
- return F({
718
+ if (N(e.tableName, t, !1, n), e.appliedFullText.some((e) => e.name === t)) throw Error(`duplicate full-text index '${t}' on table '${e.tableName}'.`);
719
+ return I({
720
720
  ...e,
721
721
  tableName: e.tableName,
722
722
  fields: e.fields,
@@ -737,27 +737,27 @@ var ce = () => new u({
737
737
  });
738
738
  }),
739
739
  with: ((...t) => {
740
- let n = dt(t), r = { ...e.fields }, i = /* @__PURE__ */ new Map();
740
+ let n = ut(t), r = { ...e.fields }, i = /* @__PURE__ */ new Map();
741
741
  for (let e of Object.keys(r)) i.set(e, {
742
742
  id: "<table>",
743
743
  fields: {}
744
744
  });
745
745
  for (let t of n) for (let [n, a] of Object.entries(t.fields)) {
746
746
  let o = i.get(n);
747
- if (o !== void 0) throw Error(`mixin collision on column '${n}' in table '${e.tableName}': '${ht(o)}' and '${ht(t)}' both define it. If they're the same mixin reached via different paths, set a shared 'id' on both. If they're genuinely different concerns, rename one of the columns.`);
748
- j(e.tableName, n), r[n] = a, i.set(n, t);
747
+ if (o !== void 0) throw Error(`mixin collision on column '${n}' in table '${e.tableName}': '${mt(o)}' and '${mt(t)}' both define it. If they're the same mixin reached via different paths, set a shared 'id' on both. If they're genuinely different concerns, rename one of the columns.`);
748
+ M(e.tableName, n), r[n] = a, i.set(n, t);
749
749
  }
750
750
  let a = [...e.appliedIndexes];
751
751
  for (let t of n) for (let n of t.indexes ?? []) {
752
- let t = n.name ?? gt(e.tableName, n.fields);
753
- a.some((e) => e.name === t) || (M(e.tableName, t, n.name === void 0, n.fields), vt(e.tableName, t, n.kind, n.fields, r), a.push({
752
+ let t = n.name ?? ht(e.tableName, n.fields);
753
+ a.some((e) => e.name === t) || (N(e.tableName, t, n.name === void 0, n.fields), _t(e.tableName, t, n.kind, n.fields, r), a.push({
754
754
  name: t,
755
755
  fields: n.fields,
756
756
  ...n.kind === void 0 ? {} : { kind: n.kind },
757
757
  ...n.kindOptions === void 0 ? {} : { kindOptions: n.kindOptions }
758
758
  }));
759
759
  }
760
- return F({
760
+ return I({
761
761
  ...e,
762
762
  tableName: e.tableName,
763
763
  fields: r,
@@ -774,10 +774,10 @@ var ce = () => new u({
774
774
  }),
775
775
  index: ((...t) => {
776
776
  let n, r, i, a = Array.isArray(t[0]);
777
- if (a ? (r = t[0], i = t[1], n = gt(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`index '${n}' on table '${e.tableName}' has no fields — an index must cover at least one column.`);
777
+ if (a ? (r = t[0], i = t[1], n = ht(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`index '${n}' on table '${e.tableName}' has no fields — an index must cover at least one column.`);
778
778
  let o = r.filter((e) => typeof e == "string");
779
- if (M(e.tableName, n, a, o), vt(e.tableName, n, i?.kind, r, e.fields), e.appliedIndexes.some((e) => e.name === n)) throw t.length === 1 ? Error(`duplicate auto-named index '${n}' on table '${e.tableName}' — you've called .index(${JSON.stringify(r)}) twice. Pass an explicit name to the second one if both are intended (rare).`) : Error(`duplicate index '${n}' on table '${e.tableName}': each index name must be unique within a table.`);
780
- return F({
779
+ if (N(e.tableName, n, a, o), _t(e.tableName, n, i?.kind, r, e.fields), e.appliedIndexes.some((e) => e.name === n)) throw t.length === 1 ? Error(`duplicate auto-named index '${n}' on table '${e.tableName}' — you've called .index(${JSON.stringify(r)}) twice. Pass an explicit name to the second one if both are intended (rare).`) : Error(`duplicate index '${n}' on table '${e.tableName}': each index name must be unique within a table.`);
780
+ return I({
781
781
  ...e,
782
782
  tableName: e.tableName,
783
783
  fields: e.fields,
@@ -801,8 +801,8 @@ var ce = () => new u({
801
801
  expressionIndex: ((t, n, r) => {
802
802
  if (n.length === 0) throw Error(`expressionIndex '${t}' on table '${e.tableName}' has no fields — an index must cover at least one column or expression.`);
803
803
  let i = n.filter((e) => typeof e == "string");
804
- if (M(e.tableName, t, !1, i), vt(e.tableName, t, r?.kind, n, e.fields), e.appliedIndexes.some((e) => e.name === t)) throw Error(`duplicate index '${t}' on table '${e.tableName}': each index name must be unique within a table.`);
805
- return F({
804
+ if (N(e.tableName, t, !1, i), _t(e.tableName, t, r?.kind, n, e.fields), e.appliedIndexes.some((e) => e.name === t)) throw Error(`duplicate index '${t}' on table '${e.tableName}': each index name must be unique within a table.`);
805
+ return I({
806
806
  ...e,
807
807
  tableName: e.tableName,
808
808
  fields: e.fields,
@@ -825,9 +825,9 @@ var ce = () => new u({
825
825
  }),
826
826
  unique: ((...t) => {
827
827
  let n, r, i, a = Array.isArray(t[0]);
828
- if (a ? (r = t[0], i = t[1], n = _t(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`unique '${n}' on table '${e.tableName}' has no fields — a UNIQUE constraint must cover at least one column.`);
829
- if (M(e.tableName, n, a, r), e.appliedUniques.some((e) => e.name === n)) throw Error(a ? `duplicate auto-named UNIQUE '${n}' on table '${e.tableName}' — you've called .unique(${JSON.stringify(r)}) twice. Pass an explicit name to the second one if both are intended (very rare).` : `duplicate UNIQUE '${n}' on table '${e.tableName}': each constraint name must be unique within a table.`);
830
- return F({
828
+ if (a ? (r = t[0], i = t[1], n = gt(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`unique '${n}' on table '${e.tableName}' has no fields — a UNIQUE constraint must cover at least one column.`);
829
+ if (N(e.tableName, n, a, r), e.appliedUniques.some((e) => e.name === n)) throw Error(a ? `duplicate auto-named UNIQUE '${n}' on table '${e.tableName}' — you've called .unique(${JSON.stringify(r)}) twice. Pass an explicit name to the second one if both are intended (very rare).` : `duplicate UNIQUE '${n}' on table '${e.tableName}': each constraint name must be unique within a table.`);
830
+ return I({
831
831
  ...e,
832
832
  tableName: e.tableName,
833
833
  fields: e.fields,
@@ -848,10 +848,10 @@ var ce = () => new u({
848
848
  }),
849
849
  uniqueActive: ((...t) => {
850
850
  let n, r, i, a = Array.isArray(t[0]);
851
- if (a ? (r = t[0], i = t[1], n = gt(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`uniqueActive '${n}' on table '${e.tableName}' has no fields — a partial UNIQUE must cover at least one column.`);
852
- if (M(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).`);
851
+ if (a ? (r = t[0], i = t[1], n = ht(e.tableName, r)) : (n = t[0], r = t[1], i = t[2]), r.length === 0) throw Error(`uniqueActive '${n}' on table '${e.tableName}' has no fields — a partial UNIQUE must cover at least one column.`);
852
+ if (N(e.tableName, n, a, r), e.appliedIndexes.some((e) => e.name === n)) throw Error(`duplicate index '${n}' on table '${e.tableName}': each index name must be unique within a table (uniqueActive shares the index namespace).`);
853
853
  let o = i?.where ?? "\"deletedAt\" IS NULL";
854
- return F({
854
+ return I({
855
855
  ...e,
856
856
  tableName: e.tableName,
857
857
  fields: e.fields,
@@ -873,8 +873,8 @@ var ce = () => new u({
873
873
  }),
874
874
  check: ((t, n) => {
875
875
  if (n.trim().length === 0) throw Error(`CHECK '${t}' on table '${e.tableName}' has an empty expression.`);
876
- if (M(e.tableName, t, !1, []), e.appliedChecks.some((e) => e.name === t)) throw Error(`duplicate CHECK '${t}' on table '${e.tableName}': each constraint name must be unique within a table.`);
877
- return F({
876
+ if (N(e.tableName, t, !1, []), e.appliedChecks.some((e) => e.name === t)) throw Error(`duplicate CHECK '${t}' on table '${e.tableName}': each constraint name must be unique within a table.`);
877
+ return I({
878
878
  ...e,
879
879
  tableName: e.tableName,
880
880
  fields: e.fields,
@@ -896,7 +896,7 @@ var ce = () => new u({
896
896
  if (t.trim().length === 0) throw Error(`rule on table '${e.tableName}' has an empty name.`);
897
897
  let i = e.appliedRules ?? [];
898
898
  if (i.some((e) => e.name === t)) throw Error(`duplicate rule '${t}' on table '${e.tableName}': each rule name must be unique within a table.`);
899
- return F({
899
+ return I({
900
900
  ...e,
901
901
  appliedRules: [...i, {
902
902
  name: t,
@@ -907,7 +907,7 @@ var ce = () => new u({
907
907
  }),
908
908
  renamedFrom: ((t) => {
909
909
  if (t === e.tableName) throw Error(`renamedFrom('${t}') on table '${e.tableName}' names the table itself — drop the marker, there is nothing to rename.`);
910
- return A(t), F({
910
+ return j(t), I({
911
911
  ...e,
912
912
  previousTableName: t
913
913
  });
@@ -922,7 +922,7 @@ var ce = () => new u({
922
922
  }
923
923
  if (t.length > 0) throw Error(`primaryKey([...]) declared twice on table '${e.tableName}'.`);
924
924
  for (let [t, r] of Object.entries(e.fields)) if (r.type === "id" && !n.includes(t)) throw Error(`primaryKey([...]) on table '${e.tableName}' conflicts with the id() column '${t}'. The explicit primary key IS the key — drop the id() column, or include '${t}' in the composite key.`);
925
- return F({
925
+ return I({
926
926
  ...e,
927
927
  tableName: e.tableName,
928
928
  fields: e.fields,
@@ -937,7 +937,7 @@ var ce = () => new u({
937
937
  ...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
938
938
  });
939
939
  }),
940
- nonReactive: (() => F({
940
+ nonReactive: (() => I({
941
941
  ...e,
942
942
  tableName: e.tableName,
943
943
  fields: e.fields,
@@ -951,7 +951,7 @@ var ce = () => new u({
951
951
  ...e.insertSchema === void 0 ? {} : { insertSchema: e.insertSchema },
952
952
  ...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
953
953
  })),
954
- validate: ((t) => F({
954
+ validate: ((t) => I({
955
955
  ...e,
956
956
  tableName: e.tableName,
957
957
  fields: e.fields,
@@ -965,7 +965,7 @@ var ce = () => new u({
965
965
  insertSchema: t,
966
966
  ...e.validatePatchSchema === void 0 ? {} : { validatePatchSchema: e.validatePatchSchema }
967
967
  })),
968
- validatePatch: ((t) => F({
968
+ validatePatch: ((t) => I({
969
969
  ...e,
970
970
  tableName: e.tableName,
971
971
  fields: e.fields,
@@ -980,22 +980,22 @@ var ce = () => new u({
980
980
  validatePatchSchema: r.partial(t)
981
981
  }))
982
982
  };
983
- }, I = (e, t) => {
984
- A(e);
983
+ }, L = (e, t) => {
984
+ j(e);
985
985
  let n = Object.entries(t).flatMap(([e, t]) => {
986
- let n = ge(t);
986
+ let n = he(t);
987
987
  return n === void 0 ? [] : [{
988
988
  column: e,
989
989
  ...n
990
990
  }];
991
- }), r = yt(S(t), e);
992
- for (let t of Object.keys(r)) j(e, t);
991
+ }), r = vt(C(t), e);
992
+ for (let t of Object.keys(r)) M(e, t);
993
993
  let i;
994
- for (let [t, n] of Object.entries(r)) n.references === x && (n.references = () => {
994
+ for (let [t, n] of Object.entries(r)) n.references === S && (n.references = () => {
995
995
  if (i === void 0) throw Error(`selfReference() on '${e}.${t}' read before table() returned`);
996
996
  return i;
997
997
  });
998
- return i = F({
998
+ return i = I({
999
999
  appliedPluginRefs: n,
1000
1000
  tableName: e,
1001
1001
  fields: r,
@@ -1007,7 +1007,7 @@ var ce = () => new u({
1007
1007
  appliedChecks: [],
1008
1008
  appliedRules: []
1009
1009
  }), i;
1010
- }, bt = (e) => e === "sqlite" || e === "turso", xt = (e) => e === "mysql" || e === "mariadb", L = (e, t) => {
1010
+ }, yt = (e) => e === "sqlite" || e === "turso", bt = (e) => e === "mysql" || e === "mariadb", R = (e, t) => {
1011
1011
  switch (t) {
1012
1012
  case "mysql":
1013
1013
  case "mariadb": return `\`${e.replace(/`/g, "``")}\``;
@@ -1016,51 +1016,51 @@ var ce = () => new u({
1016
1016
  case "sqlite":
1017
1017
  case "turso": return `"${e.replace(/"/g, "\"\"")}"`;
1018
1018
  }
1019
- }, St = 1e4, Ct = Symbol.for("@voltro/database/tableRegistry"), wt = globalThis, R = wt[Ct] ?? (wt[Ct] = /* @__PURE__ */ new Map()), Tt = (e) => {
1020
- let t = R.get(e.tableName);
1019
+ }, xt = 1e4, St = Symbol.for("@voltro/database/tableRegistry"), Ct = globalThis, z = Ct[St] ?? (Ct[St] = /* @__PURE__ */ new Map()), wt = (e) => {
1020
+ let t = z.get(e.tableName);
1021
1021
  if (t === void 0) {
1022
- R.set(e.tableName, e);
1022
+ z.set(e.tableName, e);
1023
1023
  return;
1024
1024
  }
1025
1025
  if (t !== e) throw Error(`duplicate table '${e.tableName}' registration: two different table descriptors claim the same name. Rename one or import the shared module that defines it.`);
1026
- }, Et = (e) => {
1027
- R.get(e.tableName) === void 0 && R.set(e.tableName, e);
1028
- }, z = (e) => R.get(e), Dt = (e) => {
1029
- let t = R.get(e);
1026
+ }, Tt = (e) => {
1027
+ z.get(e.tableName) === void 0 && z.set(e.tableName, e);
1028
+ }, B = (e) => z.get(e), Et = (e) => {
1029
+ let t = z.get(e);
1030
1030
  if (t === void 0) throw Error(`table '${e}' is not registered. Register it by wrapping it in \`databaseHandle({ ... })\` (the usual path) or call \`registerTable(t)\` explicitly before this runs. Note a \`queryFor(t)\` query carries its own source table, so eager-loads don't hit this — this error means a reconstructed descriptor or by-name tooling reached an unregistered table.`);
1031
1031
  return t;
1032
- }, Ot = () => [...R.values()], kt = (e) => R.delete(e), At = () => {
1033
- R.clear();
1034
- }, jt = (e) => R.get(e)?.isReactive !== !1, B = (e) => e.order ?? [], Mt = (e) => ({
1032
+ }, Dt = () => [...z.values()], Ot = (e) => z.delete(e), kt = () => {
1033
+ z.clear();
1034
+ }, At = (e) => z.get(e)?.isReactive !== !1, V = (e) => e.order ?? [], jt = (e) => ({
1035
1035
  op: "count",
1036
1036
  alias: e ?? "count"
1037
- }), Nt = (e, t) => ({
1037
+ }), Mt = (e, t) => ({
1038
1038
  op: "count-distinct",
1039
1039
  column: e,
1040
1040
  alias: t ?? `count_distinct_${e}`
1041
- }), Pt = (e, t) => ({
1041
+ }), Nt = (e, t) => ({
1042
1042
  op: "sum",
1043
1043
  column: e,
1044
1044
  alias: t ?? `sum_${e}`
1045
- }), Ft = (e, t) => ({
1045
+ }), Pt = (e, t) => ({
1046
1046
  op: "avg",
1047
1047
  column: e,
1048
1048
  alias: t ?? `avg_${e}`
1049
- }), It = (e, t) => ({
1049
+ }), Ft = (e, t) => ({
1050
1050
  op: "min",
1051
1051
  column: e,
1052
1052
  alias: t ?? `min_${e}`
1053
- }), Lt = (e, t) => ({
1053
+ }), It = (e, t) => ({
1054
1054
  op: "max",
1055
1055
  column: e,
1056
1056
  alias: t ?? `max_${e}`
1057
- }), Rt = (e, t) => ({
1057
+ }), Lt = (e, t) => ({
1058
1058
  op: "column",
1059
1059
  column: e,
1060
1060
  alias: t ?? e
1061
- }), V = (e) => (...t) => {
1061
+ }), H = (e) => (...t) => {
1062
1062
  if (t.length < 2) throw Error(`${e}: requires at least two queries`);
1063
- return U({
1063
+ return W({
1064
1064
  table: t[0].descriptor.table,
1065
1065
  predicate: void 0,
1066
1066
  order: [],
@@ -1072,55 +1072,55 @@ var ce = () => new u({
1072
1072
  queries: t.map((e) => e.descriptor)
1073
1073
  }
1074
1074
  });
1075
- }, zt = V("union"), Bt = V("union-all"), Vt = V("intersect"), Ht = V("except"), H = (e) => ({ over: (t) => ({
1075
+ }, Rt = H("union"), zt = H("union-all"), Bt = H("intersect"), Vt = H("except"), U = (e) => ({ over: (t) => ({
1076
1076
  ...e,
1077
1077
  window: t
1078
- }) }), Ut = (e = "rowNumber") => H({
1078
+ }) }), Ht = (e = "rowNumber") => U({
1079
1079
  op: "window-row-number",
1080
1080
  alias: e
1081
- }), Wt = (e = "rank") => H({
1081
+ }), Ut = (e = "rank") => U({
1082
1082
  op: "window-rank",
1083
1083
  alias: e
1084
- }), Gt = (e = "denseRank") => H({
1084
+ }), Wt = (e = "denseRank") => U({
1085
1085
  op: "window-dense-rank",
1086
1086
  alias: e
1087
- }), Kt = (e, t = 1, n) => H({
1087
+ }), Gt = (e, t = 1, n) => U({
1088
1088
  op: "window-lag",
1089
1089
  column: e,
1090
1090
  alias: n ?? `lag_${e}`,
1091
1091
  offset: t
1092
- }), qt = (e, t = 1, n) => H({
1092
+ }), Kt = (e, t = 1, n) => U({
1093
1093
  op: "window-lead",
1094
1094
  column: e,
1095
1095
  alias: n ?? `lead_${e}`,
1096
1096
  offset: t
1097
- }), Jt = (e, t) => H({
1097
+ }), qt = (e, t) => U({
1098
1098
  op: "window-sum-over",
1099
1099
  column: e,
1100
1100
  alias: t ?? `sum_${e}_over`
1101
- }), Yt = (e, t) => H({
1101
+ }), Jt = (e, t) => U({
1102
1102
  op: "window-avg-over",
1103
1103
  column: e,
1104
1104
  alias: t ?? `avg_${e}_over`
1105
- }), Xt = (e, t, n) => {
1106
- let r = n?.find((e) => e.name === t) ?? z(e)?.appliedFullText?.find((e) => e.name === t);
1105
+ }), Yt = (e, t, n) => {
1106
+ let r = n?.find((e) => e.name === t) ?? B(e)?.appliedFullText?.find((e) => e.name === t);
1107
1107
  if (r === void 0) throw Error(`.matching('${t}', ...): no full-text index named '${t}' is declared on table '${e}'. Declare it with \`table(...).fullTextIndex('${t}', [columns])\` first.`);
1108
1108
  return {
1109
1109
  columns: r.columns,
1110
1110
  ...r.config === void 0 ? {} : { config: r.config },
1111
1111
  ...r.weights === void 0 ? {} : { weights: r.weights }
1112
1112
  };
1113
- }, U = (e) => ({
1113
+ }, W = (e) => ({
1114
1114
  descriptor: e,
1115
1115
  where(t) {
1116
1116
  let n = e.predicate ? { and: [e.predicate, t] } : t;
1117
- return U({
1117
+ return W({
1118
1118
  ...e,
1119
1119
  predicate: n
1120
1120
  });
1121
1121
  },
1122
1122
  orderBy(t, n = "asc") {
1123
- return U({
1123
+ return W({
1124
1124
  ...e,
1125
1125
  order: [...e.order, {
1126
1126
  column: t,
@@ -1129,43 +1129,43 @@ var ce = () => new u({
1129
1129
  });
1130
1130
  },
1131
1131
  limit(t) {
1132
- return U({
1132
+ return W({
1133
1133
  ...e,
1134
1134
  take: t
1135
1135
  });
1136
1136
  },
1137
1137
  offset(t) {
1138
- return U({
1138
+ return W({
1139
1139
  ...e,
1140
1140
  skip: t
1141
1141
  });
1142
1142
  },
1143
1143
  select(...t) {
1144
- return U({
1144
+ return W({
1145
1145
  ...e,
1146
1146
  projection: t
1147
1147
  });
1148
1148
  },
1149
1149
  using(t) {
1150
- return U({
1150
+ return W({
1151
1151
  ...e,
1152
1152
  usingIndex: t
1153
1153
  });
1154
1154
  },
1155
1155
  withDeleted() {
1156
- return U({
1156
+ return W({
1157
1157
  ...e,
1158
1158
  includeDeleted: !0
1159
1159
  });
1160
1160
  },
1161
1161
  forUpdate() {
1162
- return U({
1162
+ return W({
1163
1163
  ...e,
1164
1164
  lock: "update"
1165
1165
  });
1166
1166
  },
1167
1167
  unscoped() {
1168
- return U({
1168
+ return W({
1169
1169
  ...e,
1170
1170
  crossTenant: !0
1171
1171
  });
@@ -1175,13 +1175,13 @@ var ce = () => new u({
1175
1175
  ...e.eager ?? {},
1176
1176
  ...t
1177
1177
  };
1178
- return U({
1178
+ return W({
1179
1179
  ...e,
1180
1180
  eager: n
1181
1181
  });
1182
1182
  },
1183
1183
  count() {
1184
- return U({
1184
+ return W({
1185
1185
  ...e,
1186
1186
  projection: void 0,
1187
1187
  aggregations: [{
@@ -1195,29 +1195,30 @@ var ce = () => new u({
1195
1195
  ...t,
1196
1196
  alias: e
1197
1197
  }));
1198
- return U({
1198
+ return W({
1199
1199
  ...e,
1200
1200
  projection: void 0,
1201
1201
  aggregations: n
1202
1202
  });
1203
1203
  },
1204
- matching(t, n) {
1205
- let r = Xt(e.table, t, e.fullTextIndexes);
1206
- return U({
1204
+ matching(t, n, r) {
1205
+ let i = Yt(e.table, t, e.fullTextIndexes);
1206
+ return W({
1207
1207
  ...e,
1208
1208
  fullTextSearch: {
1209
1209
  indexName: t,
1210
1210
  query: n,
1211
- columns: r.columns,
1212
- ...r.config === void 0 ? {} : { config: r.config },
1213
- ...r.weights === void 0 ? {} : { weights: r.weights }
1211
+ columns: i.columns,
1212
+ ...r?.prefix === !0 ? { prefix: !0 } : {},
1213
+ ...i.config === void 0 ? {} : { config: i.config },
1214
+ ...i.weights === void 0 ? {} : { weights: i.weights }
1214
1215
  }
1215
1216
  });
1216
1217
  },
1217
1218
  rankBy(t) {
1218
1219
  let n = e.fullTextSearch;
1219
1220
  if (n === void 0) throw Error(".rankBy() requires a preceding .matching(...) clause — there is no full-text search to rank on this query.");
1220
- return U({
1221
+ return W({
1221
1222
  ...e,
1222
1223
  fullTextSearch: {
1223
1224
  ...n,
@@ -1236,7 +1237,7 @@ var ce = () => new u({
1236
1237
  distance: r?.distance ?? "cosine",
1237
1238
  ...e.annClause?.ef === void 0 ? {} : { ef: e.annClause.ef }
1238
1239
  };
1239
- return U({
1240
+ return W({
1240
1241
  ...e,
1241
1242
  annClause: i
1242
1243
  });
@@ -1248,7 +1249,7 @@ var ce = () => new u({
1248
1249
  distance: "cosine",
1249
1250
  ...e.annClause?.ef === void 0 ? {} : { ef: e.annClause.ef }
1250
1251
  };
1251
- return U({
1252
+ return W({
1252
1253
  ...e,
1253
1254
  annClause: r,
1254
1255
  take: n
@@ -1261,7 +1262,7 @@ var ce = () => new u({
1261
1262
  column: "",
1262
1263
  distance: "cosine"
1263
1264
  };
1264
- return U({
1265
+ return W({
1265
1266
  ...e,
1266
1267
  annClause: {
1267
1268
  ...n,
@@ -1270,22 +1271,22 @@ var ce = () => new u({
1270
1271
  });
1271
1272
  },
1272
1273
  use(t) {
1273
- return U({ ...t(e) });
1274
+ return W({ ...t(e) });
1274
1275
  },
1275
1276
  distinct() {
1276
- return U({
1277
+ return W({
1277
1278
  ...e,
1278
1279
  distinct: !0
1279
1280
  });
1280
1281
  },
1281
1282
  distinctOn(t) {
1282
- return U({
1283
+ return W({
1283
1284
  ...e,
1284
1285
  distinctOn: [...t]
1285
1286
  });
1286
1287
  },
1287
1288
  as(t) {
1288
- return U({
1289
+ return W({
1289
1290
  ...e,
1290
1291
  alias: t
1291
1292
  });
@@ -1297,7 +1298,7 @@ var ce = () => new u({
1297
1298
  alias: n,
1298
1299
  on: r
1299
1300
  }];
1300
- return U({
1301
+ return W({
1301
1302
  ...e,
1302
1303
  joins: a
1303
1304
  });
@@ -1309,7 +1310,7 @@ var ce = () => new u({
1309
1310
  alias: n,
1310
1311
  on: r
1311
1312
  }];
1312
- return U({
1313
+ return W({
1313
1314
  ...e,
1314
1315
  joins: a
1315
1316
  });
@@ -1319,7 +1320,7 @@ var ce = () => new u({
1319
1320
  outputKey: e,
1320
1321
  source: t
1321
1322
  }));
1322
- return U({
1323
+ return W({
1323
1324
  ...e,
1324
1325
  projection: void 0,
1325
1326
  joinedProjection: n
@@ -1328,7 +1329,7 @@ var ce = () => new u({
1328
1329
  withCte(t, n) {
1329
1330
  let r = e.ctes ?? [];
1330
1331
  if (r.some((e) => e.name === t)) throw Error(`Query.withCte: duplicate CTE name '${t}'`);
1331
- return U({
1332
+ return W({
1332
1333
  ...e,
1333
1334
  ctes: [...r, {
1334
1335
  name: t,
@@ -1339,7 +1340,7 @@ var ce = () => new u({
1339
1340
  recursiveCte(t, n) {
1340
1341
  let r = e.ctes ?? [];
1341
1342
  if (r.some((e) => e.name === t)) throw Error(`Query.recursiveCte: duplicate CTE name '${t}'`);
1342
- return U({
1343
+ return W({
1343
1344
  ...e,
1344
1345
  ctes: [...r, {
1345
1346
  name: t,
@@ -1350,20 +1351,20 @@ var ce = () => new u({
1350
1351
  },
1351
1352
  groupBy(t) {
1352
1353
  let n = e.groupBy ? [...e.groupBy, ...t] : [...t];
1353
- return U({
1354
+ return W({
1354
1355
  ...e,
1355
1356
  groupBy: n
1356
1357
  });
1357
1358
  },
1358
1359
  having(t) {
1359
1360
  let n = e.having ? { and: [e.having, t] } : t;
1360
- return U({
1361
+ return W({
1361
1362
  ...e,
1362
1363
  having: n
1363
1364
  });
1364
1365
  },
1365
1366
  exists() {
1366
- return U({
1367
+ return W({
1367
1368
  ...e,
1368
1369
  projection: void 0,
1369
1370
  aggregations: [{
@@ -1374,8 +1375,8 @@ var ce = () => new u({
1374
1375
  });
1375
1376
  }
1376
1377
  });
1377
- function Zt(e) {
1378
- return U({
1378
+ function Xt(e) {
1379
+ return W({
1379
1380
  table: e.tableName,
1380
1381
  predicate: void 0,
1381
1382
  order: [],
@@ -1386,7 +1387,7 @@ function Zt(e) {
1386
1387
  sourceTable: e
1387
1388
  });
1388
1389
  }
1389
- var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1390
+ var Zt = (e, t, n) => Qt(e, "id", t, n), Qt = (e, t, n, r, i = "asc") => {
1390
1391
  let a = [...e.order.filter((e) => e.column !== t), {
1391
1392
  column: t,
1392
1393
  direction: i
@@ -1401,21 +1402,21 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1401
1402
  order: a,
1402
1403
  take: r
1403
1404
  };
1404
- }, en = (e) => {
1405
+ }, $t = (e) => {
1405
1406
  let t = {};
1406
- for (let [n, r] of Object.entries(e)) Tt(r), t[n] = Zt(r);
1407
+ for (let [n, r] of Object.entries(e)) wt(r), t[n] = Xt(r);
1407
1408
  return t;
1408
- }, tn = (e) => e.isView === !0, nn = (e, t, n) => {
1409
- if (A(e), n.trim().length === 0) throw Error(`view('${e}', …): the SELECT body is empty — a view must define a query.`);
1410
- let r = S(t);
1411
- for (let t of Object.keys(r)) j(e, t);
1409
+ }, en = (e) => e.isView === !0, tn = (e, t, n) => {
1410
+ if (j(e), n.trim().length === 0) throw Error(`view('${e}', …): the SELECT body is empty — a view must define a query.`);
1411
+ let r = C(t);
1412
+ for (let t of Object.keys(r)) M(e, t);
1412
1413
  return {
1413
1414
  tableName: e,
1414
1415
  fields: r,
1415
1416
  isView: !0,
1416
1417
  viewSelect: n
1417
1418
  };
1418
- }, rn = (e) => Zt({
1419
+ }, nn = (e) => Xt({
1419
1420
  ...e,
1420
1421
  isReactive: !1,
1421
1422
  appliedMixins: [],
@@ -1423,8 +1424,8 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1423
1424
  appliedUniques: [],
1424
1425
  appliedFullText: [],
1425
1426
  appliedChecks: []
1426
- }), an = (e, t, n = null) => {
1427
- let r = n === null ? L(e.tableName, t) : `${L(n, t)}.${L(e.tableName, t)}`, i = e.viewSelect.trim();
1427
+ }), rn = (e, t, n = null) => {
1428
+ let r = n === null ? R(e.tableName, t) : `${R(n, t)}.${R(e.tableName, t)}`, i = e.viewSelect.trim();
1428
1429
  switch (t) {
1429
1430
  case "postgres":
1430
1431
  case "mysql":
@@ -1433,7 +1434,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1433
1434
  case "sqlite":
1434
1435
  case "turso": return `DROP VIEW IF EXISTS ${r};\nCREATE VIEW ${r} AS ${i};`;
1435
1436
  }
1436
- }, on = (e) => e == null || typeof e == "boolean" ? e : typeof e == "number" ? e !== 0 : typeof e == "bigint" ? e !== 0n : typeof e == "string" ? e === "1" || e.toLowerCase() === "true" : e, sn = (e) => {
1437
+ }, an = (e) => e == null || typeof e == "boolean" ? e : typeof e == "number" ? e !== 0 : typeof e == "bigint" ? e !== 0n : typeof e == "string" ? e === "1" || e.toLowerCase() === "true" : e, on = (e) => {
1437
1438
  if (e == null || typeof e != "string") return e;
1438
1439
  let t = e.trim();
1439
1440
  if (t.length === 0) return e;
@@ -1444,7 +1445,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1444
1445
  } catch {
1445
1446
  return e;
1446
1447
  }
1447
- }, cn = (e) => e == null || typeof e == "string" ? e : typeof e == "number" || typeof e == "bigint" ? String(e) : e, ln = (e) => {
1448
+ }, sn = (e) => e == null || typeof e == "string" ? e : typeof e == "number" || typeof e == "bigint" ? String(e) : e, cn = (e) => {
1448
1449
  if (e == null || e instanceof Date) return e;
1449
1450
  if (typeof e == "string") {
1450
1451
  let t = new Date(e);
@@ -1455,24 +1456,24 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1455
1456
  return isNaN(t.getTime()) ? e : t;
1456
1457
  }
1457
1458
  return e;
1458
- }, un = (e, t, n) => {
1459
+ }, ln = (e, t, n) => {
1459
1460
  if (e == null) return e;
1460
1461
  switch (t) {
1461
- case "boolean": return n === "postgres" ? e : on(e);
1462
- case "vector": return n === "postgres" ? sn(e) : e;
1463
- case "json": return n === "postgres" || n === "mysql" || n === "mariadb" ? e : sn(e);
1464
- case "array": return n === "postgres" ? e : sn(e);
1462
+ case "boolean": return n === "postgres" ? e : an(e);
1463
+ case "vector": return n === "postgres" ? on(e) : e;
1464
+ case "json": return n === "postgres" || n === "mysql" || n === "mariadb" ? e : on(e);
1465
+ case "array": return n === "postgres" ? e : on(e);
1465
1466
  case "timestamp":
1466
- case "date": return n === "sqlite" || n === "turso" ? ln(e) : e;
1467
+ case "date": return n === "sqlite" || n === "turso" ? cn(e) : e;
1467
1468
  case "decimal":
1468
- case "bigint": return cn(e);
1469
+ case "bigint": return sn(e);
1469
1470
  default: return e;
1470
1471
  }
1471
- }, dn = (e, t, n) => {
1472
+ }, un = (e, t, n) => {
1472
1473
  if (e.length === 0) return e;
1473
- let r = z(t);
1474
- return r === void 0 ? e : fn(e, r, n);
1475
- }, fn = (e, t, n) => {
1474
+ let r = B(t);
1475
+ return r === void 0 ? e : dn(e, r, n);
1476
+ }, dn = (e, t, n) => {
1476
1477
  if (e.length === 0) return e;
1477
1478
  let r = t.fields, i = [];
1478
1479
  for (let [e, t] of Object.entries(r)) i.push({
@@ -1481,10 +1482,10 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1481
1482
  });
1482
1483
  return e.map((e) => {
1483
1484
  let t = { ...e };
1484
- for (let { key: e, type: r } of i) e in t && (t[e] = un(t[e], r, n));
1485
+ for (let { key: e, type: r } of i) e in t && (t[e] = ln(t[e], r, n));
1485
1486
  return t;
1486
1487
  });
1487
- }, pn = (e, t) => {
1488
+ }, fn = (e, t) => {
1488
1489
  if (e == null) return e;
1489
1490
  switch (t) {
1490
1491
  case "json": return JSON.stringify(e);
@@ -1492,20 +1493,20 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1492
1493
  case "vector": return typeof e == "string" ? e : JSON.stringify(e);
1493
1494
  default: return e;
1494
1495
  }
1495
- }, mn = (e, t, n = ["json", "array"]) => {
1496
- let r = z(t);
1496
+ }, pn = (e, t, n = ["json", "array"]) => {
1497
+ let r = B(t);
1497
1498
  if (r === void 0) return e;
1498
1499
  let i = r.fields, a = null;
1499
1500
  for (let [t, r] of Object.entries(i)) if (n.includes(r.type) && t in e) {
1500
- let n = pn(e[t], r.type);
1501
+ let n = fn(e[t], r.type);
1501
1502
  n !== e[t] && (a === null && (a = { ...e }), a[t] = n);
1502
1503
  }
1503
1504
  return a ?? e;
1504
- }, hn = /^[A-Za-z_][A-Za-z0-9_]*$/, gn = (e) => "$" + e.map((e) => typeof e == "number" ? `[${e}]` : hn.test(e) ? `.${e}` : `."${e.replace(/"/g, "\\\"")}"`).join(""), _n = (e) => "{" + e.map((e) => {
1505
+ }, mn = (e) => e == null ? e : e instanceof Date ? e.toISOString() : typeof e == "boolean" ? +!!e : Array.isArray(e) ? e.map((e) => mn(e)) : e, hn = /^[A-Za-z_][A-Za-z0-9_]*$/, gn = (e) => "$" + e.map((e) => typeof e == "number" ? `[${e}]` : hn.test(e) ? `.${e}` : `."${e.replace(/"/g, "\\\"")}"`).join(""), _n = (e) => "{" + e.map((e) => {
1505
1506
  let t = String(e);
1506
1507
  return /^[A-Za-z0-9_]+$/.test(t) ? t : `"${t.replace(/(["\\])/g, "\\$1")}"`;
1507
- }).join(",") + "}", W = (e, t, n, r = {}) => {
1508
- let i = L(e, n), a = r.numeric ?? !1;
1508
+ }).join(",") + "}", G = (e, t, n, r = {}) => {
1509
+ let i = R(e, n), a = r.numeric ?? !1;
1509
1510
  if (n === "postgres") {
1510
1511
  let e = `(${i} #>> '${_n(t)}'::text[])`;
1511
1512
  return a ? `${e}::numeric` : e;
@@ -1544,7 +1545,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1544
1545
  let n = `${xn}${t}`;
1545
1546
  if (n.length > bn) throw new yn(`namespace '${n}' for tenant '${e}' exceeds the ${bn}-byte identifier limit. Use a shorter tenant id.`);
1546
1547
  return n;
1547
- }, G = (e, t) => e === null ? t : `${e}.${t}`, wn = /* @__PURE__ */ new Set(["timestamp", "date"]), Tn = /^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2})?/, En = (e, t) => {
1548
+ }, K = (e, t) => e === null ? t : `${e}.${t}`, wn = /* @__PURE__ */ new Set(["timestamp", "date"]), Tn = /^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2})?/, En = (e, t) => {
1548
1549
  if (e === void 0 || t == null || !wn.has(e) || t instanceof Date) return t;
1549
1550
  if (typeof t == "number" && Number.isFinite(t)) return new Date(t);
1550
1551
  if (typeof t == "string" && Tn.test(t)) {
@@ -1556,46 +1557,52 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1556
1557
  let { strings: n, values: r } = e, i = t.unsafe(n[0] ?? "");
1557
1558
  for (let e = 0; e < r.length; e++) i = t`${i}${r[e]}${t.unsafe(n[e + 1] ?? "")}`;
1558
1559
  return t`${i}`;
1559
- }, K = (e) => e.replace(/[\\%_]/g, (e) => `\\${e}`), q = (e, t, n = null, r) => {
1560
- if ("not" in e) return t`NOT (${q(e.not, t, n, r)})`;
1561
- if ("and" in e) return e.and.length === 0 ? t`TRUE` : t.and(e.and.map((e) => q(e, t, n, r)));
1562
- if ("or" in e) return e.or.length === 0 ? t`FALSE` : t.or(e.or.map((e) => q(e, t, n, r)));
1560
+ }, q = (e) => e.replace(/[\\%_]/g, (e) => `\\${e}`), J = (e, t, n = null, r) => {
1561
+ if ("not" in e) return t`NOT (${J(e.not, t, n, r)})`;
1562
+ if ("and" in e) return e.and.length === 0 ? t`TRUE` : t.and(e.and.map((e) => J(e, t, n, r)));
1563
+ if ("or" in e) return e.or.length === 0 ? t`FALSE` : t.or(e.or.map((e) => J(e, t, n, r)));
1563
1564
  if (e.op === "subquery-in" || e.op === "subquery-not-in") {
1564
- let r = e, i = J(r.subquery, t, n);
1565
+ let r = e, i = X(r.subquery, t, n);
1565
1566
  return r.op === "subquery-in" ? t`${t(r.column)} IN (${i})` : t`${t(r.column)} NOT IN (${i})`;
1566
1567
  }
1567
1568
  if (e.op === "exists" || e.op === "not-exists") {
1568
- let r = e, i = J(r.subquery, t, n);
1569
+ let r = e, i = X(r.subquery, t, n);
1569
1570
  return r.op === "exists" ? t`EXISTS (${i})` : t`NOT EXISTS (${i})`;
1570
1571
  }
1571
1572
  let i = e, a = t(i.column), o = i.path, s = o !== void 0 && o.length > 0, c = () => t.onDialectOrElse({
1572
- mysql: () => t.unsafe(W(i.column, o, "mysql")),
1573
- mssql: () => t.unsafe(W(i.column, o, "mssql")),
1574
- sqlite: () => t.unsafe(W(i.column, o, "sqlite")),
1575
- orElse: () => t.unsafe(W(i.column, o, "postgres"))
1573
+ mysql: () => t.unsafe(G(i.column, o, "mysql")),
1574
+ mssql: () => t.unsafe(G(i.column, o, "mssql")),
1575
+ sqlite: () => t.unsafe(G(i.column, o, "sqlite")),
1576
+ orElse: () => t.unsafe(G(i.column, o, "postgres"))
1576
1577
  }), l = () => t.onDialectOrElse({
1577
- mysql: () => t.unsafe(W(i.column, o, "mysql", { numeric: !0 })),
1578
- mssql: () => t.unsafe(W(i.column, o, "mssql", { numeric: !0 })),
1579
- sqlite: () => t.unsafe(W(i.column, o, "sqlite", { numeric: !0 })),
1580
- orElse: () => t.unsafe(W(i.column, o, "postgres", { numeric: !0 }))
1581
- }), u = s ? c() : a, d = s ? l() : a, f = (e) => s && e != null ? String(e) : e, p = (e) => s ? Number(e) : e, m = s || r === void 0 ? void 0 : z(r)?.fields?.[i.column]?.type, ee = (e) => En(m, e);
1578
+ mysql: () => t.unsafe(G(i.column, o, "mysql", { numeric: !0 })),
1579
+ mssql: () => t.unsafe(G(i.column, o, "mssql", { numeric: !0 })),
1580
+ sqlite: () => t.unsafe(G(i.column, o, "sqlite", { numeric: !0 })),
1581
+ orElse: () => t.unsafe(G(i.column, o, "postgres", { numeric: !0 }))
1582
+ }), u = s ? c() : a, d = s ? l() : a, f = (e) => s && e != null ? String(e) : e, p = (e) => s ? Number(e) : e, m = s || r === void 0 ? void 0 : B(r)?.fields?.[i.column]?.type, h = (e) => {
1583
+ let n = En(m, e);
1584
+ return n instanceof Date ? t.onDialectOrElse({
1585
+ sqlite: () => mn(n),
1586
+ orElse: () => n
1587
+ }) : n;
1588
+ };
1582
1589
  switch (i.op) {
1583
- case "eq": return t`${u} = ${f(ee(i.value))}`;
1584
- case "neq": return t`${u} <> ${f(ee(i.value))}`;
1585
- case "gt": return t`${d} > ${p(i.value)}`;
1586
- case "gte": return t`${d} >= ${p(i.value)}`;
1587
- case "lt": return t`${d} < ${p(i.value)}`;
1588
- case "lte": return t`${d} <= ${p(i.value)}`;
1590
+ case "eq": return t`${u} = ${f(h(i.value))}`;
1591
+ case "neq": return t`${u} <> ${f(h(i.value))}`;
1592
+ case "gt": return t`${d} > ${p(h(i.value))}`;
1593
+ case "gte": return t`${d} >= ${p(h(i.value))}`;
1594
+ case "lt": return t`${d} < ${p(h(i.value))}`;
1595
+ case "lte": return t`${d} <= ${p(h(i.value))}`;
1589
1596
  case "in": {
1590
1597
  let e = i.value ?? [];
1591
- return e.length === 0 ? t`FALSE` : t`${u} IN ${t.in(s ? e.map((e) => f(e)) : e)}`;
1598
+ return e.length === 0 ? t`FALSE` : t`${u} IN ${t.in(s ? e.map((e) => f(e)) : e.map(h))}`;
1592
1599
  }
1593
1600
  case "notIn": {
1594
1601
  let e = i.value ?? [];
1595
- return e.length === 0 ? t`TRUE` : t`${u} NOT IN ${t.in(s ? e.map((e) => f(e)) : e)}`;
1602
+ return e.length === 0 ? t`TRUE` : t`${u} NOT IN ${t.in(s ? e.map((e) => f(e)) : e.map(h))}`;
1596
1603
  }
1597
1604
  case "contains": {
1598
- let e = `%${K(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
1605
+ let e = `%${q(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
1599
1606
  return t.onDialectOrElse({
1600
1607
  mysql: () => t`LOWER(${u}) LIKE LOWER(${e})`,
1601
1608
  mssql: () => t`LOWER(${u}) LIKE LOWER(${e})`,
@@ -1604,7 +1611,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1604
1611
  });
1605
1612
  }
1606
1613
  case "startsWith": {
1607
- let e = `${K(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
1614
+ let e = `${q(typeof i.value == "string" ? i.value : String(i.value ?? ""))}%`;
1608
1615
  return t.onDialectOrElse({
1609
1616
  mysql: () => t`${u} LIKE ${e}`,
1610
1617
  orElse: () => t`${u} LIKE ${e} ESCAPE '\\'`
@@ -1640,13 +1647,13 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1640
1647
  let e = i.value, n = t.unsafe("::geometry"), r = e.bufferMeters === void 0 ? t`${e.geom}${n}` : t`ST_Buffer(${e.geom}::geography, ${e.bufferMeters})::geometry`;
1641
1648
  return t.onDialectOrElse({
1642
1649
  mysql: () => {
1643
- throw T("@voltro/plugin-postgis: spatial predicates are postgres-only");
1650
+ throw E("@voltro/plugin-postgis: spatial predicates are postgres-only");
1644
1651
  },
1645
1652
  mssql: () => {
1646
- throw T("@voltro/plugin-postgis: spatial predicates are postgres-only");
1653
+ throw E("@voltro/plugin-postgis: spatial predicates are postgres-only");
1647
1654
  },
1648
1655
  sqlite: () => {
1649
- throw T("@voltro/plugin-postgis: spatial predicates are postgres-only");
1656
+ throw E("@voltro/plugin-postgis: spatial predicates are postgres-only");
1650
1657
  },
1651
1658
  orElse: () => e.fn === "ST_DWithin" ? t`ST_DWithin(${a}::geography, ${e.geom}::geography, ${e.distanceMeters})` : e.fn === "&&" ? t`${a}${n} && ${r}` : t`${t.unsafe(e.fn)}(${a}${n}, ${r})`
1652
1659
  });
@@ -1667,7 +1674,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1667
1674
  case "window-lead": return t`LEAD(${n}, ${t.unsafe(String(e.offset ?? 1))}) OVER (${r}) AS ${t(e.alias)}`;
1668
1675
  case "window-sum-over": return t`SUM(${n}) OVER (${r}) AS ${t(e.alias)}`;
1669
1676
  case "window-avg-over": return t`AVG(${n}) OVER (${r}) AS ${t(e.alias)}`;
1670
- default: throw T(`compileAggregateProjection: unknown window op '${e.op}'`);
1677
+ default: throw E(`compileAggregateProjection: unknown window op '${e.op}'`);
1671
1678
  }
1672
1679
  }
1673
1680
  switch (e.op) {
@@ -1678,9 +1685,9 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1678
1685
  case "min": return t`MIN(${n}) AS ${t(e.alias)}`;
1679
1686
  case "max": return t`MAX(${n}) AS ${t(e.alias)}`;
1680
1687
  case "column":
1681
- if (e.column === void 0) throw T(`compileAggregateProjection: 'column' projection requires a column name (alias '${e.alias}')`);
1688
+ if (e.column === void 0) throw E(`compileAggregateProjection: 'column' projection requires a column name (alias '${e.alias}')`);
1682
1689
  return t`${t(e.column)} AS ${t(e.alias)}`;
1683
- default: throw T(`compileAggregateProjection: unknown op '${e.op}'`);
1690
+ default: throw E(`compileAggregateProjection: unknown op '${e.op}'`);
1684
1691
  }
1685
1692
  })), jn = (e) => `[${e.join(",")}]`, Mn = (e, t) => {
1686
1693
  if (e.queryVector === void 0) return null;
@@ -1694,37 +1701,54 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1694
1701
  }, Nn = (e, t) => {
1695
1702
  let n = t.unsafe(e.useGeography ? "::geography" : "::geometry");
1696
1703
  return t`ST_Distance(${t(e.column)}${n}, ${e.geom}${n})`;
1697
- }, Pn = (e, t) => t`${t(e.column)} <-> ${e.geom}::geometry`, Fn = (e, t) => t`${t(`${e.indexName}_tsv`)}`, In = (e, t) => `${t}_${e.indexName}_fts`, Ln = (e, t, n) => {
1698
- let r = n.csv(e.columns.map((e) => n`${n(e)}`)), i = `%${K(e.query)}%`;
1699
- return n.onDialectOrElse({
1700
- mysql: () => n`MATCH(${r}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)`,
1704
+ }, Pn = (e, t) => t`${t(e.column)} <-> ${e.geom}::geometry`, Y = (e, t) => t`${t(`${e.indexName}_tsv`)}`, Fn = (e, t) => `${t}_${e.indexName}_fts`, In = (e) => e.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter((e) => e !== ""), Ln = (e) => {
1705
+ if (e.prefix !== !0) return;
1706
+ let t = In(e.query);
1707
+ if (t.length !== 0) return {
1708
+ pg: t.map((e) => `${e}:*`).join(" & "),
1709
+ mysql: t.map((e) => `+${e}*`).join(" "),
1710
+ sqlite: t.map((e) => `"${e}"*`).join(" ")
1711
+ };
1712
+ }, Rn = (e, t, n) => {
1713
+ let r = n.csv(e.columns.map((e) => n`${n(e)}`)), i = `%${q(e.query)}%`, a = Ln(e), o = () => n.or(e.columns.map((e) => n`LOWER(${n(e)}) LIKE LOWER(${i}) ESCAPE '\\'`));
1714
+ return e.fallback === "like" ? o() : n.onDialectOrElse({
1715
+ mysql: () => a === void 0 ? n`MATCH(${r}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)` : n`MATCH(${r}) AGAINST(${a.mysql} IN BOOLEAN MODE)`,
1701
1716
  sqlite: () => {
1702
- let r = n(In(e, t));
1703
- return n`${n("id")} IN (SELECT ${n("row_id")} FROM ${r} WHERE ${r} MATCH ${e.query})`;
1717
+ let r = n(Fn(e, t));
1718
+ return n`${n("id")} IN (SELECT ${n("row_id")} FROM ${r} WHERE ${r} MATCH ${a?.sqlite ?? e.query})`;
1704
1719
  },
1705
- mssql: () => n.or(e.columns.map((e) => n`LOWER(${n(e)}) LIKE LOWER(${i}) ESCAPE '\\'`)),
1706
- orElse: () => n`${Fn(e, n)} @@ plainto_tsquery(${e.config ?? "english"}, ${e.query})`
1720
+ mssql: o,
1721
+ orElse: () => a === void 0 ? n`${Y(e, n)} @@ plainto_tsquery(${e.config ?? "english"}, ${e.query})` : n`${Y(e, n)} @@ to_tsquery(${e.config ?? "english"}, ${a.pg})`
1707
1722
  });
1708
- }, Rn = (e, t, n) => {
1709
- let r = `%${K(e.query)}%`;
1710
- return n.onDialectOrElse({
1711
- mysql: () => n`MATCH(${n.csv(e.columns.map((e) => n`${n(e)}`))}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)`,
1723
+ }, zn = (e, t, n) => {
1724
+ let r = `%${q(e.query)}%`, i = Ln(e), a = () => e.columns.map((e) => n`(CASE WHEN LOWER(${n(e)}) LIKE LOWER(${r}) ESCAPE '\\' THEN 1 ELSE 0 END)`).reduce((e, t, r) => r === 0 ? t : n`${e} + ${t}`);
1725
+ return e.fallback === "like" ? a() : n.onDialectOrElse({
1726
+ mysql: () => i === void 0 ? n`MATCH(${n.csv(e.columns.map((e) => n`${n(e)}`))}) AGAINST(${e.query} IN NATURAL LANGUAGE MODE)` : n`MATCH(${n.csv(e.columns.map((e) => n`${n(e)}`))}) AGAINST(${i.mysql} IN BOOLEAN MODE)`,
1712
1727
  sqlite: () => {
1713
- let r = n(In(e, t));
1714
- return n`COALESCE((SELECT -bm25(${r}) FROM ${r} WHERE ${r} MATCH ${e.query} AND ${r}.${n("row_id")} = ${n("id")}), 0)`;
1728
+ let r = n(Fn(e, t));
1729
+ return n`COALESCE((SELECT -bm25(${r}) FROM ${r} WHERE ${r} MATCH ${i?.sqlite ?? e.query} AND ${r}.${n("row_id")} = ${n("id")}), 0)`;
1715
1730
  },
1716
- mssql: () => e.columns.map((e) => n`(CASE WHEN LOWER(${n(e)}) LIKE LOWER(${r}) ESCAPE '\\' THEN 1 ELSE 0 END)`).reduce((e, t, r) => r === 0 ? t : n`${e} + ${t}`),
1717
- orElse: () => n`ts_rank(${Fn(e, n)}, plainto_tsquery(${e.config ?? "english"}, ${e.query}))`
1731
+ mssql: a,
1732
+ orElse: () => i === void 0 ? n`ts_rank(${Y(e, n)}, plainto_tsquery(${e.config ?? "english"}, ${e.query}))` : n`ts_rank(${Y(e, n)}, to_tsquery(${e.config ?? "english"}, ${i.pg}))`
1718
1733
  });
1719
- }, J = (e, t, n = null) => {
1734
+ }, Bn = (e, t, n) => {
1735
+ let r = () => n?.length ? t.csv(n.map((e) => t`${t(e)}`)) : t`*`, i = B(e)?.fields;
1736
+ return !i || !Object.values(i).some((e) => e.type === "bigint") ? r() : t.onDialectOrElse({
1737
+ sqlite: () => t.csv((n?.length ? n : Object.keys(i)).map((e) => i[e]?.type === "bigint" ? t`CAST(${t(e)} AS TEXT) AS ${t(e)}` : t`${t(e)}`)),
1738
+ orElse: r
1739
+ });
1740
+ }, Vn = (e, t) => {
1741
+ let n = e.lastIndexOf("."), r = n < 0 ? e : e.slice(n + 1), i = n < 0 ? void 0 : e.slice(0, n), a = i === void 0 || i === t.alias || i === t.table ? t.table : t.joins?.find((e) => e.alias === i)?.table;
1742
+ return a === void 0 ? void 0 : B(a)?.fields?.[r]?.type;
1743
+ }, X = (e, t, n = null) => {
1720
1744
  if (e.setOp && e.setOp.queries.length >= 2) {
1721
- let r = e.setOp.kind === "union" ? "UNION" : e.setOp.kind === "union-all" ? "UNION ALL" : e.setOp.kind === "intersect" ? "INTERSECT" : "EXCEPT", i = e.setOp.queries.map((e) => t`(${J(e, t, n)})`).reduce((e, n, i) => i === 0 ? n : t`${e} ${t.unsafe(r)} ${n}`), a = [];
1722
- if (B(e).length > 0 && a.push(t` ORDER BY ${t.csv(B(e).map((e) => e.direction === "desc" ? t`${t(e.column)} DESC` : t`${t(e.column)} ASC`))}`), e.take !== void 0) {
1723
- if (!Number.isInteger(e.take) || e.take < 0) throw T(`compileSelect: invalid take ${e.take}`);
1745
+ let r = e.setOp.kind === "union" ? "UNION" : e.setOp.kind === "union-all" ? "UNION ALL" : e.setOp.kind === "intersect" ? "INTERSECT" : "EXCEPT", i = e.setOp.queries.map((e) => t`(${X(e, t, n)})`).reduce((e, n, i) => i === 0 ? n : t`${e} ${t.unsafe(r)} ${n}`), a = [];
1746
+ if (V(e).length > 0 && a.push(t` ORDER BY ${t.csv(V(e).map((e) => e.direction === "desc" ? t`${t(e.column)} DESC` : t`${t(e.column)} ASC`))}`), e.take !== void 0) {
1747
+ if (!Number.isInteger(e.take) || e.take < 0) throw E(`compileSelect: invalid take ${e.take}`);
1724
1748
  a.push(t` LIMIT ${t.unsafe(String(e.take))}`);
1725
1749
  }
1726
1750
  if (e.skip !== void 0) {
1727
- if (!Number.isInteger(e.skip) || e.skip < 0) throw T(`compileSelect: invalid skip ${e.skip}`);
1751
+ if (!Number.isInteger(e.skip) || e.skip < 0) throw E(`compileSelect: invalid skip ${e.skip}`);
1728
1752
  a.push(t` OFFSET ${t.unsafe(String(e.skip))}`);
1729
1753
  }
1730
1754
  return t`${i}${a.reduce((e, n) => t`${e}${n}`, t``)}`;
@@ -1732,17 +1756,23 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1732
1756
  let r = e.annClause === void 0 ? null : Mn(e.annClause, t);
1733
1757
  e.spatialClause !== void 0 && t.onDialectOrElse({
1734
1758
  mysql: () => {
1735
- throw T("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
1759
+ throw E("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
1736
1760
  },
1737
1761
  mssql: () => {
1738
- throw T("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
1762
+ throw E("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
1739
1763
  },
1740
1764
  sqlite: () => {
1741
- throw T("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
1765
+ throw E("@voltro/plugin-postgis: spatial distance / KNN ordering is postgres-only");
1742
1766
  },
1743
1767
  orElse: () => t``
1744
1768
  });
1745
- let i = e.spatialClause?.projectAs === void 0 ? null : Nn(e.spatialClause, t), a = e.aggregations && e.aggregations.length > 0 ? An(e.aggregations, t) : e.joinedProjection && e.joinedProjection.length > 0 ? t.csv(e.joinedProjection.map((e) => t`${t(e.source)} AS ${t(e.outputKey)}`)) : e.projection && e.projection.length > 0 ? t.csv(e.projection.map((e) => t`${t(e)}`)) : t`*`, o = (e.aggregations && e.aggregations.length > 0) === !0, s = r !== null && !o ? t`${a}, ${r} AS ${t("distance")}` : a, c = e.fullTextSearch, l = c?.rank !== void 0 && !o ? Rn(c, e.table, t) : null, u = l !== null && c?.rank !== void 0 ? t`${s}, ${l} AS ${t(c.rank.alias)}` : s, d = i !== null && !o && e.spatialClause?.projectAs !== void 0 ? t`${u}, ${i} AS ${t(e.spatialClause.projectAs)}` : u, f = e.distinctOn && e.distinctOn.length > 0 ? t.onDialectOrElse({
1769
+ let i = e.spatialClause?.projectAs === void 0 ? null : Nn(e.spatialClause, t), a = e.aggregations && e.aggregations.length > 0 ? An(e.aggregations, t) : e.joinedProjection && e.joinedProjection.length > 0 ? t.csv(e.joinedProjection.map((n) => {
1770
+ let r = t`${t(n.source)}`;
1771
+ return t`${Vn(n.source, e) === "bigint" ? t.onDialectOrElse({
1772
+ sqlite: () => t`CAST(${r} AS TEXT)`,
1773
+ orElse: () => r
1774
+ }) : r} AS ${t(n.outputKey)}`;
1775
+ })) : Bn(e.table, t, e.projection), o = (e.aggregations && e.aggregations.length > 0) === !0, s = r !== null && !o ? t`${a}, ${r} AS ${t("distance")}` : a, c = e.fullTextSearch, l = c?.rank !== void 0 && !o ? zn(c, e.table, t) : null, u = l !== null && c?.rank !== void 0 ? t`${s}, ${l} AS ${t(c.rank.alias)}` : s, d = i !== null && !o && e.spatialClause?.projectAs !== void 0 ? t`${u}, ${i} AS ${t(e.spatialClause.projectAs)}` : u, f = e.distinctOn && e.distinctOn.length > 0 ? t.onDialectOrElse({
1746
1776
  orElse: () => t`DISTINCT ON (${t.csv(e.distinctOn.map((e) => t`${t(e)}`))}) `,
1747
1777
  mysql: () => t`DISTINCT `,
1748
1778
  mssql: () => t`DISTINCT `,
@@ -1750,34 +1780,40 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1750
1780
  }) : e.distinct ? t`DISTINCT ` : t``, p = e.lock === "update", m = p ? t.onDialectOrElse({
1751
1781
  mssql: () => t` WITH (UPDLOCK, ROWLOCK)`,
1752
1782
  orElse: () => t``
1753
- }) : t``, ee = p ? t.onDialectOrElse({
1783
+ }) : t``, h = p ? t.onDialectOrElse({
1754
1784
  mssql: () => t``,
1755
1785
  sqlite: () => t``,
1756
1786
  orElse: () => t` FOR UPDATE`
1757
- }) : t``, h = e.alias === void 0 ? t`${t(G(n, e.table))}${m}` : t`${t(G(n, e.table))} AS ${t(e.alias)}${m}`, te = (e.joins ?? []).map((e) => {
1787
+ }) : t``, g = e.alias === void 0 ? t`${t(K(n, e.table))}${m}` : t`${t(K(n, e.table))} AS ${t(e.alias)}${m}`, ee = (e.joins ?? []).map((e) => {
1758
1788
  let r = e.kind === "inner" ? "INNER" : "LEFT";
1759
- return t` ${t.unsafe(r)} JOIN ${t(G(n, e.table))} AS ${t(e.alias)} ON ${q(e.on, t, n)}`;
1760
- }), ne = te.length > 0 ? te.reduce((e, n) => t`${e}${n}`, h) : h, re = c === void 0 ? null : Ln(c, e.table, t), g = [e.predicate ? q(e.predicate, t, n, e.table) : null, re].filter((e) => e !== null), _ = g.length > 0 ? t` WHERE ${t.and(g)}` : t``, ie = e.groupBy && e.groupBy.length > 0 ? t` GROUP BY ${t.csv(e.groupBy.map((e) => t`${t(e)}`))}` : t``, v = e.having ? t` HAVING ${q(e.having, t, n, e.table)}` : t``, y = e.skip !== void 0, b = [];
1761
- r !== null && b.push(t`${r} ASC`), e.spatialClause?.order !== void 0 && b.push(e.spatialClause.order === "desc" ? t`${Pn(e.spatialClause, t)} DESC` : t`${Pn(e.spatialClause, t)} ASC`), l !== null && c?.rank?.order === !0 && b.push(t`${l} DESC`);
1762
- for (let n of B(e)) b.push(n.direction === "desc" ? t`${t(n.column)} DESC` : t`${t(n.column)} ASC`);
1763
- let ae = b.length > 0 ? t` ORDER BY ${t.csv(b)}` : y ? t.onDialectOrElse({
1789
+ return t` ${t.unsafe(r)} JOIN ${t(K(n, e.table))} AS ${t(e.alias)} ON ${J(e.on, t, n)}`;
1790
+ }), te = ee.length > 0 ? ee.reduce((e, n) => t`${e}${n}`, g) : g, ne = c === void 0 ? null : Rn(c, e.table, t), _ = [e.predicate ? J(e.predicate, t, n, e.table) : null, ne].filter((e) => e !== null), v = _.length > 0 ? t` WHERE ${t.and(_)}` : t``, re = e.groupBy && e.groupBy.length > 0 ? t` GROUP BY ${t.csv(e.groupBy.map((e) => t`${t(e)}`))}` : t``, y = e.having ? t` HAVING ${J(e.having, t, n, e.table)}` : t``, b = e.skip !== void 0, x = [];
1791
+ r !== null && x.push(t`${r} ASC`), e.spatialClause?.order !== void 0 && x.push(e.spatialClause.order === "desc" ? t`${Pn(e.spatialClause, t)} DESC` : t`${Pn(e.spatialClause, t)} ASC`), l !== null && c?.rank?.order === !0 && x.push(t`${l} DESC`);
1792
+ for (let n of V(e)) {
1793
+ let r = e.joinedProjection?.find((e) => e.outputKey === n.column)?.source ?? n.column, i = !o && Vn(r, e) === "bigint" ? t.onDialectOrElse({
1794
+ sqlite: () => t`${t(r.includes(".") ? r : `${e.alias ?? e.table}.${r}`)}`,
1795
+ orElse: () => t`${t(n.column)}`
1796
+ }) : t`${t(n.column)}`;
1797
+ x.push(n.direction === "desc" ? t`${i} DESC` : t`${i} ASC`);
1798
+ }
1799
+ let ie = x.length > 0 ? t` ORDER BY ${t.csv(x)}` : b ? t.onDialectOrElse({
1764
1800
  mssql: () => t` ORDER BY (SELECT NULL)`,
1765
1801
  orElse: () => t``
1766
- }) : t``, x = (e) => {
1767
- if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw T(`compileSelect: expected non-negative integer take/skip, got ${e}`);
1802
+ }) : t``, S = (e) => {
1803
+ if (!Number.isFinite(e) || !Number.isInteger(e) || e < 0) throw E(`compileSelect: expected non-negative integer take/skip, got ${e}`);
1768
1804
  return t.unsafe(String(e));
1769
- }, oe = (e.ctes ?? []).map((e) => t`${t(e.name)} AS (${J(e.descriptor, t, n)})`), se = (e.ctes ?? []).some((e) => e.recursive === !0), ce = oe.length > 0 ? t`WITH ${t.unsafe(se ? "RECURSIVE " : "")}${t.csv(oe)} ` : t``;
1805
+ }, ae = (e.ctes ?? []).map((e) => t`${t(e.name)} AS (${X(e.descriptor, t, n)})`), oe = (e.ctes ?? []).some((e) => e.recursive === !0), se = ae.length > 0 ? t`WITH ${t.unsafe(oe ? "RECURSIVE " : "")}${t.csv(ae)} ` : t``;
1770
1806
  return t.onDialectOrElse({
1771
1807
  mssql: () => {
1772
- let n = e.take !== void 0 && !y ? t`TOP ${x(e.take)} ` : t``, r = y ? t` OFFSET ${x(e.skip)} ROWS FETCH NEXT ${x(e.take ?? 2 ** 53 - 1)} ROWS ONLY` : t``;
1773
- return t`${ce}SELECT ${n}${f}${d} FROM ${ne}${_}${ie}${v}${ae}${r}`;
1808
+ let n = e.take !== void 0 && !b ? t`TOP ${S(e.take)} ` : t``, r = b ? t` OFFSET ${S(e.skip)} ROWS FETCH NEXT ${S(e.take ?? 2 ** 53 - 1)} ROWS ONLY` : t``;
1809
+ return t`${se}SELECT ${n}${f}${d} FROM ${te}${v}${re}${y}${ie}${r}`;
1774
1810
  },
1775
1811
  orElse: () => {
1776
- let n = e.take === void 0 ? t`` : t` LIMIT ${x(e.take)}`, r = y ? t` OFFSET ${x(e.skip)}` : t``;
1777
- return t`${ce}SELECT ${f}${d} FROM ${ne}${_}${ie}${v}${ae}${n}${r}${ee}`;
1812
+ let n = e.take === void 0 ? t`` : t` LIMIT ${S(e.take)}`, r = b ? t` OFFSET ${S(e.skip)}` : t``;
1813
+ return t`${se}SELECT ${f}${d} FROM ${te}${v}${re}${y}${ie}${n}${r}${h}`;
1778
1814
  }
1779
1815
  });
1780
- }, Y = (e, t) => {
1816
+ }, Z = (e, t) => {
1781
1817
  let n = (e) => {
1782
1818
  if (typeof e != "string" || !/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/.test(e)) return null;
1783
1819
  let [t = "", n = ""] = e.replace(/^[+-]/, "").split("."), r = t.replace(/^0+/, "") || "0";
@@ -1795,74 +1831,74 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1795
1831
  a = t === n ? 0 : t > n ? 1 : -1;
1796
1832
  }
1797
1833
  return a === 0 ? 0 : (a > 0 ? 1 : -1) * (r.negative ? -1 : 1);
1798
- }, zn = (e, t) => ({
1834
+ }, Hn = (e, t) => ({
1799
1835
  column: e,
1800
1836
  op: "eq",
1801
1837
  value: t
1802
- }), Bn = (e, t) => ({
1838
+ }), Un = (e, t) => ({
1803
1839
  column: e,
1804
1840
  op: "neq",
1805
1841
  value: t
1806
- }), Vn = (e, t) => ({
1842
+ }), Wn = (e, t) => ({
1807
1843
  column: e,
1808
1844
  op: "gt",
1809
1845
  value: t
1810
- }), Hn = (e, t) => ({
1846
+ }), Gn = (e, t) => ({
1811
1847
  column: e,
1812
1848
  op: "gte",
1813
1849
  value: t
1814
- }), Un = (e, t) => ({
1850
+ }), Kn = (e, t) => ({
1815
1851
  column: e,
1816
1852
  op: "lt",
1817
1853
  value: t
1818
- }), Wn = (e, t) => ({
1854
+ }), qn = (e, t) => ({
1819
1855
  column: e,
1820
1856
  op: "lte",
1821
1857
  value: t
1822
- }), Gn = (e, t) => ({
1858
+ }), Jn = (e, t) => ({
1823
1859
  column: e,
1824
1860
  op: "in",
1825
1861
  value: t
1826
- }), Kn = (e, t) => ({
1862
+ }), Yn = (e, t) => ({
1827
1863
  column: e,
1828
1864
  op: "notIn",
1829
1865
  value: t
1830
- }), qn = (e, t) => ({
1866
+ }), Xn = (e, t) => ({
1831
1867
  column: e,
1832
1868
  op: "contains",
1833
1869
  value: t
1834
- }), Jn = (e, t) => ({
1870
+ }), Zn = (e, t) => ({
1835
1871
  column: e,
1836
1872
  op: "startsWith",
1837
1873
  value: t
1838
- }), Yn = (e, t) => ({
1874
+ }), Qn = (e, t) => ({
1839
1875
  column: e,
1840
1876
  op: "arrayContains",
1841
1877
  value: t
1842
- }), Xn = (e, t) => ({
1878
+ }), $n = (e, t) => ({
1843
1879
  column: e,
1844
1880
  op: "arrayOverlaps",
1845
1881
  value: t
1846
- }), Zn = (e, t) => ({
1882
+ }), er = (e, t) => ({
1847
1883
  column: e,
1848
1884
  op: "arrayHas",
1849
1885
  value: t
1850
- }), Qn = {
1886
+ }), tr = {
1851
1887
  column: "id",
1852
1888
  op: "in",
1853
1889
  value: []
1854
- }, $n = (e) => ({
1890
+ }, nr = (e) => ({
1855
1891
  column: e,
1856
1892
  op: "isNull"
1857
- }), er = (e) => ({
1893
+ }), rr = (e) => ({
1858
1894
  column: e,
1859
1895
  op: "isNotNull"
1860
- }), tr = (e, t) => ({
1896
+ }), ir = (e, t) => ({
1861
1897
  column: e,
1862
1898
  op: "spatial",
1863
1899
  value: t
1864
- }), nr = (...e) => ({ and: e }), rr = (...e) => ({ or: e }), ir = (e) => ({ not: e }), ar = (e, ...t) => {
1865
- if (t.length === 0) throw T(`jsonField("${e}"): at least one path segment is required`);
1900
+ }), ar = (...e) => ({ and: e }), or = (...e) => ({ or: e }), sr = (e) => ({ not: e }), cr = (e, ...t) => {
1901
+ if (t.length === 0) throw E(`jsonField("${e}"): at least one path segment is required`);
1866
1902
  let n = (n, r) => ({
1867
1903
  column: e,
1868
1904
  path: t,
@@ -1883,56 +1919,56 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1883
1919
  isNull: () => n("isNull"),
1884
1920
  isNotNull: () => n("isNotNull")
1885
1921
  };
1886
- }, X = (e) => "descriptor" in e ? e.descriptor : e, or = (e, t) => ({
1922
+ }, Q = (e) => "descriptor" in e ? e.descriptor : e, lr = (e, t) => ({
1887
1923
  column: e,
1888
1924
  op: "subquery-in",
1889
- subquery: X(t)
1890
- }), sr = (e, t) => ({
1925
+ subquery: Q(t)
1926
+ }), ur = (e, t) => ({
1891
1927
  column: e,
1892
1928
  op: "subquery-not-in",
1893
- subquery: X(t)
1894
- }), cr = (e) => ({
1929
+ subquery: Q(t)
1930
+ }), dr = (e) => ({
1895
1931
  op: "exists",
1896
- subquery: X(e)
1897
- }), lr = (e) => ({
1932
+ subquery: Q(e)
1933
+ }), fr = (e) => ({
1898
1934
  op: "not-exists",
1899
- subquery: X(e)
1900
- }), ur = /^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?)?$/, dr = (e) => {
1935
+ subquery: Q(e)
1936
+ }), pr = /^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?)?$/, mr = (e) => {
1901
1937
  if (e instanceof Date) return e.getTime();
1902
- if (typeof e == "string" && ur.test(e)) {
1938
+ if (typeof e == "string" && pr.test(e)) {
1903
1939
  let t = Date.parse(e);
1904
1940
  return Number.isNaN(t) ? void 0 : t;
1905
1941
  }
1906
- }, fr = (e, t) => {
1942
+ }, hr = (e, t) => {
1907
1943
  if (!(e instanceof Date) && !(t instanceof Date)) return;
1908
- let n = dr(e), r = dr(t);
1944
+ let n = mr(e), r = mr(t);
1909
1945
  return n === void 0 || r === void 0 ? void 0 : [n, r];
1910
- }, pr = (e, t) => {
1946
+ }, gr = (e, t) => {
1911
1947
  if (e === t) return !0;
1912
- let n = fr(e, t);
1948
+ let n = hr(e, t);
1913
1949
  return n !== void 0 && n[0] === n[1];
1914
- }, mr = (e, t) => {
1950
+ }, _r = (e, t) => {
1915
1951
  if (e == null || t == null) return null;
1916
- let n = fr(e, t);
1952
+ let n = hr(e, t);
1917
1953
  if (n !== void 0) return n[0] === n[1] ? 0 : n[0] > n[1] ? 1 : -1;
1918
1954
  let r = e instanceof Date ? e.getTime() : e, i = t instanceof Date ? t.getTime() : t;
1919
1955
  return typeof r == typeof i ? r === i ? 0 : r > i ? 1 : -1 : null;
1920
- }, Z = (e, t, n = null, r = {}) => {
1956
+ }, $ = (e, t, n = null, r = {}) => {
1921
1957
  if (!t) return !1;
1922
- if ("not" in e) return !Z(e.not, t, n, r);
1958
+ if ("not" in e) return !$(e.not, t, n, r);
1923
1959
  if ("and" in e) {
1924
- for (let i of e.and) if (!Z(i, t, n, r)) return !1;
1960
+ for (let i of e.and) if (!$(i, t, n, r)) return !1;
1925
1961
  return !0;
1926
1962
  }
1927
1963
  if ("or" in e) {
1928
- for (let i of e.or) if (Z(i, t, n, r)) return !0;
1964
+ for (let i of e.or) if ($(i, t, n, r)) return !0;
1929
1965
  return !1;
1930
1966
  }
1931
1967
  if (e.op === "subquery-in" || e.op === "subquery-not-in") {
1932
1968
  if (!n) return !1;
1933
1969
  let i = n.get(e.subquery);
1934
1970
  if (!(i instanceof Set)) return !1;
1935
- let a = t[e.column], o = r[e.column]?.type === "decimal" ? [...i].some((e) => Y(a, e) === 0) : i.has(a);
1971
+ let a = t[e.column], o = r[e.column]?.type === "decimal" ? [...i].some((e) => Z(a, e) === 0) : i.has(a);
1936
1972
  return e.op === "subquery-in" ? o : !o;
1937
1973
  }
1938
1974
  if (e.op === "exists" || e.op === "not-exists") {
@@ -1940,7 +1976,7 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1940
1976
  let t = n.get(e.subquery), r = typeof t == "number" ? t > 0 : t instanceof Set && t.size > 0;
1941
1977
  return e.op === "exists" ? r : !r;
1942
1978
  }
1943
- let i = e, a = t[i.column], o = r[i.column]?.type === "decimal", s = (e, t) => o && e != null && t != null ? Y(e, t) === 0 : pr(e, t), c = o ? Y : mr;
1979
+ let i = e, a = t[i.column], o = r[i.column]?.type === "decimal", s = (e, t) => o && e != null && t != null ? Z(e, t) === 0 : gr(e, t), c = o ? Z : _r;
1944
1980
  switch (i.op) {
1945
1981
  case "eq": return s(a, i.value);
1946
1982
  case "neq": return !s(a, i.value);
@@ -1963,19 +1999,19 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1963
1999
  case "arrayHas": return Array.isArray(a) && a.includes(i.value);
1964
2000
  case "isNull": return a == null;
1965
2001
  case "isNotNull": return a != null;
1966
- case "spatial": throw T("@voltro/plugin-postgis: spatial predicates (ST_DWithin / ST_Contains / ST_Within / ST_Intersects / bbox &&) are not evaluable in-memory — use them in one-shot ctx.store.query reads, not reactive subscriptions.");
2002
+ case "spatial": throw E("@voltro/plugin-postgis: spatial predicates (ST_DWithin / ST_Contains / ST_Within / ST_Intersects / bbox &&) are not evaluable in-memory — use them in one-shot ctx.store.query reads, not reactive subscriptions.");
1967
2003
  }
1968
- }, Q = function* (e) {
2004
+ }, vr = function* (e) {
1969
2005
  if ("not" in e) {
1970
- yield* Q(e.not);
2006
+ yield* vr(e.not);
1971
2007
  return;
1972
2008
  }
1973
2009
  if ("and" in e) {
1974
- for (let t of e.and) yield* Q(t);
2010
+ for (let t of e.and) yield* vr(t);
1975
2011
  return;
1976
2012
  }
1977
2013
  if ("or" in e) {
1978
- for (let t of e.or) yield* Q(t);
2014
+ for (let t of e.or) yield* vr(t);
1979
2015
  return;
1980
2016
  }
1981
2017
  e.op === "subquery-in" || e.op === "subquery-not-in" ? yield {
@@ -1985,30 +2021,30 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
1985
2021
  kind: "exists",
1986
2022
  descriptor: e.subquery
1987
2023
  });
1988
- }, $ = function* (e, t = !0) {
2024
+ }, yr = function* (e, t = !0) {
1989
2025
  if ("not" in e) {
1990
- yield* $(e.not, !1);
2026
+ yield* yr(e.not, !1);
1991
2027
  return;
1992
2028
  }
1993
2029
  if ("and" in e) {
1994
- for (let n of e.and) yield* $(n, t);
2030
+ for (let n of e.and) yield* yr(n, t);
1995
2031
  return;
1996
2032
  }
1997
2033
  if ("or" in e) {
1998
- for (let t of e.or) yield* $(t, !1);
2034
+ for (let t of e.or) yield* yr(t, !1);
1999
2035
  return;
2000
2036
  }
2001
2037
  e.op !== "subquery-in" && e.op !== "subquery-not-in" && e.op !== "exists" && e.op !== "not-exists" && (yield {
2002
2038
  ...e,
2003
2039
  conjunctive: t
2004
2040
  });
2005
- }, hr = (e, t) => ({
2041
+ }, br = (e, t) => ({
2006
2042
  name: e,
2007
2043
  body: t
2008
- }), gr = (e) => {
2044
+ }), xr = (e) => {
2009
2045
  if (e.lifecycle === "cron" && !e.cron) throw Error(`seed "${e.id}": lifecycle 'cron' requires a 'cron' field`);
2010
2046
  if (e.lifecycle === "onSchemaChange" && (!e.watchedTables || e.watchedTables.length === 0)) throw Error(`seed "${e.id}": lifecycle 'onSchemaChange' requires at least one entry in 'watchedTables'`);
2011
- let t = e.steps({ step: hr });
2047
+ let t = e.steps({ step: br });
2012
2048
  if (t.length === 0) throw Error(`seed "${e.id}": at least one step is required`);
2013
2049
  return {
2014
2050
  __seed: !0,
@@ -2021,76 +2057,76 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
2021
2057
  ...e.fingerprint === void 0 ? {} : { fingerprint: e.fingerprint },
2022
2058
  steps: t
2023
2059
  };
2024
- }, _r = (e) => typeof e == "object" && !!e && "__seed" in e && e.__seed === !0, vr = null, yr = null, br = (e) => {
2025
- vr = e;
2026
- }, xr = (e) => {
2027
- yr = e;
2028
- }, Sr = async (e) => {
2029
- let t = vr;
2060
+ }, Sr = (e) => typeof e == "object" && !!e && "__seed" in e && e.__seed === !0, Cr = null, wr = null, Tr = (e) => {
2061
+ Cr = e;
2062
+ }, Er = (e) => {
2063
+ wr = e;
2064
+ }, Dr = async (e) => {
2065
+ let t = Cr;
2030
2066
  t !== null && await t(e);
2031
- }, Cr = async (e) => {
2032
- let t = yr;
2067
+ }, Or = async (e) => {
2068
+ let t = wr;
2033
2069
  t !== null && e.changedTables.length !== 0 && await t(e);
2034
- }, wr = ["before-schema", "after-schema"], Tr = (e) => {
2070
+ }, kr = ["before-schema", "after-schema"], Ar = (e) => {
2035
2071
  if (!e.id || e.id.length === 0) throw Error("migration: `id` is required + must be non-empty");
2036
2072
  if (!e.up || !e.down) throw Error(`migration ${e.id}: both \`up\` and \`down\` must be functions`);
2037
- if (!wr.includes(e.phase)) throw Error(`migration ${e.id}: \`phase\` is required and must be one of ${wr.map((e) => `'${e}'`).join(" | ")} — 'before-schema' runs before the declarative apply (a shape change the planner must not compute against), 'after-schema' runs after it (a body that needs the new shape, such as a back-fill into a table this deploy creates)`);
2073
+ if (!kr.includes(e.phase)) throw Error(`migration ${e.id}: \`phase\` is required and must be one of ${kr.map((e) => `'${e}'`).join(" | ")} — 'before-schema' runs before the declarative apply (a shape change the planner must not compute against), 'after-schema' runs after it (a body that needs the new shape, such as a back-fill into a table this deploy creates)`);
2038
2074
  return e;
2039
- }, Er = Symbol.for("voltro.migration.irreversible"), Dr = class extends Error {
2075
+ }, jr = Symbol.for("voltro.migration.irreversible"), Mr = class extends Error {
2040
2076
  migrationId;
2041
2077
  reason;
2042
2078
  _tag = "IrreversibleMigrationError";
2043
2079
  constructor(e, t) {
2044
2080
  super(`migration ${e} cannot be rolled back: ${t}`), this.migrationId = e, this.reason = t, this.name = "IrreversibleMigrationError";
2045
2081
  }
2046
- }, Or = (e) => {
2082
+ }, Nr = (e) => {
2047
2083
  if (!e || e.trim().length === 0) throw Error("irreversible(): a reason is required");
2048
- return Object.assign(() => t.fail(new Dr("<unknown>", e)), { [Er]: e });
2049
- }, kr = (e) => {
2050
- let t = e[Er];
2084
+ return Object.assign(() => t.fail(new Mr("<unknown>", e)), { [jr]: e });
2085
+ }, Pr = (e) => {
2086
+ let t = e[jr];
2051
2087
  return typeof t == "string" ? t : void 0;
2052
- }, Ar = class {
2088
+ }, Fr = class {
2053
2089
  reason;
2054
2090
  _tag = "MigrationSkipped";
2055
2091
  constructor(e) {
2056
2092
  this.reason = e;
2057
2093
  }
2058
- }, jr = class extends Error {
2094
+ }, Ir = class extends Error {
2059
2095
  migrationId;
2060
2096
  failed;
2061
2097
  _tag = "MigrationExpectationFailed";
2062
2098
  constructor(e, t) {
2063
2099
  super(`migration ${e}: ${t.length} post-condition(s) did not hold after up():\n` + t.map((e) => ` - ${e}`).join("\n") + "\n The migration is NOT recorded; the next run applies it again."), this.migrationId = e, this.failed = t, this.name = "MigrationExpectationFailed";
2064
2100
  }
2065
- }, Mr = class extends Error {
2101
+ }, Lr = class extends Error {
2066
2102
  migrationId;
2067
2103
  dialect;
2068
2104
  _tag = "TransactionBrokenByBodyError";
2069
2105
  constructor(e, t) {
2070
2106
  super(`migration ${e} is transactional, and its body COMMITTED the transaction from inside — on ${t} a DDL statement commits everything before it. The work is in the database and the migration is recorded; it will not run again. What did not hold is the all-or-nothing guarantee. Either mark it \`transactional: false\` (per-statement, resumable through your own idempotency) or move the schema change into \`ctx.schema\` in a migration of its own and keep this one to data.`), this.migrationId = e, this.dialect = t, this.name = "TransactionBrokenByBodyError";
2071
2107
  }
2072
- }, Nr = class extends Error {
2108
+ }, Rr = class extends Error {
2073
2109
  migrationId;
2074
2110
  operation;
2075
2111
  _tag = "MigrationNeedsSqlClient";
2076
2112
  constructor(e, t, n) {
2077
2113
  super(`migration ${e}: ${t} — ${n}`), this.migrationId = e, this.operation = t, this.name = "MigrationNeedsSqlClient";
2078
2114
  }
2079
- }, Pr = class extends Error {
2115
+ }, zr = class extends Error {
2080
2116
  table;
2081
2117
  report;
2082
2118
  _tag = "RewriteUnstableError";
2083
2119
  constructor(e, t) {
2084
2120
  super(`rewrite of ${e} did not stabilise after ${t.passes} pass(es): ${t.rewritten} rewritten, ${t.contended} contended on the last pass. Check for concurrent writes and guard values that cannot round-trip exactly before raising maxPasses.`), this.table = e, this.report = t, this.name = "RewriteUnstableError";
2085
2121
  }
2086
- }, Fr = /^\d{8}_\d{6}_[a-z0-9_]+\.ts$/, Ir = (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", Lr = /* @__PURE__ */ new Set(["voltro_isr_cache"]), Rr = (e) => Lr.has(e) || e.startsWith("_voltro_") || e.startsWith("_cloud_") || e.startsWith("cluster_") || e.startsWith("__turso_internal_"), zr = "_voltro_staging_", Br = (e) => e.startsWith(zr), Vr = /__dropped_\d{14}$/, Hr = (e) => Vr.test(e), Ur = 7, Wr = (e) => {
2122
+ }, Br = /^\d{8}_\d{6}_[a-z0-9_]+\.ts$/, Vr = (e) => typeof e == "object" && !!e && "id" in e && "up" in e && "down" in e && typeof e.id == "string" && typeof e.up == "function" && typeof e.down == "function", Hr = /* @__PURE__ */ new Set(["voltro_isr_cache"]), Ur = (e) => Hr.has(e) || e.startsWith("_voltro_") || e.startsWith("_cloud_") || e.startsWith("cluster_") || e.startsWith("__turso_internal_"), Wr = "_voltro_staging_", Gr = (e) => e.startsWith(Wr), Kr = /__dropped_\d{14}$/, qr = (e) => Kr.test(e), Jr = 7, Yr = (e) => {
2087
2123
  let t = /__dropped_(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/.exec(e);
2088
2124
  if (t === null) return;
2089
2125
  let [, n, r, i, a, o, s] = t;
2090
2126
  return new Date(Date.UTC(Number(n), Number(r) - 1, Number(i), Number(a), Number(o), Number(s)));
2091
- }, Gr = (e, t = {}) => {
2127
+ }, Xr = (e, t = {}) => {
2092
2128
  let n = t.now ?? /* @__PURE__ */ new Date(), r = t.retentionDays ?? 7, i = [], a = (e, t) => {
2093
- let a = Wr(e);
2129
+ let a = Yr(e);
2094
2130
  if (a === void 0) return;
2095
2131
  let o = Math.floor((n.getTime() - a.getTime()) / 864e5);
2096
2132
  o >= r && i.push({
@@ -2099,137 +2135,149 @@ var Qt = (e, t, n) => $t(e, "id", t, n), $t = (e, t, n, r, i = "asc") => {
2099
2135
  ageDays: o
2100
2136
  });
2101
2137
  };
2102
- for (let t of e.tables) if (a(t.name, t.name), !Hr(t.name)) for (let e of t.columns ?? []) a(e.name, `${t.name}.${e.name}`);
2138
+ for (let t of e.tables) if (a(t.name, t.name), !qr(t.name)) for (let e of t.columns ?? []) a(e.name, `${t.name}.${e.name}`);
2103
2139
  return i;
2104
- }, Kr = (e, t) => {
2140
+ }, Zr = (e, t) => {
2105
2141
  let n = e.reduce((e, t) => e.ageDays >= t.ageDays ? e : t), r = (/* @__PURE__ */ new Date(Date.now() - t * 864e5)).toISOString().slice(0, 10);
2106
2142
  return `${e.length} soft-drop snapshot(s) older than ${t} day(s) still hold the dropped data (oldest: ${n.name}, ${n.ageDays}d) — ${e.map((e) => e.name).join(", ")}. Restore with \`voltro db restore-snapshot\` or reclaim with \`voltro db gc-snapshots --before ${r}\`; the window is \`database.softDropRetentionDays\` in app.config.`;
2107
- }, qr = (e, t) => e.filter((e) => !Rr(e.name) || t.has(e.name)), Jr = I("_voltro_migrations", {
2143
+ }, Qr = (e, t) => e.filter((e) => !Ur(e.name) || t.has(e.name)), $r = L("_voltro_migrations", {
2108
2144
  id: f({ prefix: "mig" }),
2109
2145
  name: p(),
2110
2146
  hash: p(),
2111
2147
  status: p(),
2112
- appliedAt: _().nullable(),
2148
+ appliedAt: v().nullable(),
2113
2149
  durationMs: m().nullable(),
2114
2150
  errorMessage: p().nullable(),
2115
2151
  errorStack: p().nullable(),
2116
2152
  workflowRunId: p().nullable(),
2117
- createdAt: _().default("now"),
2118
- updatedAt: _().default("now").onUpdate("now")
2119
- }).index(["status"]), Yr = I("_voltro_seeds", {
2153
+ createdAt: v().default("now"),
2154
+ updatedAt: v().default("now").onUpdate("now")
2155
+ }).index(["status"]), ei = L("_voltro_seeds", {
2120
2156
  id: f({ prefix: "seed" }),
2121
2157
  name: p(),
2122
2158
  lifecycle: p(),
2123
2159
  fingerprint: p(),
2124
2160
  cronSchedule: p().nullable(),
2125
- watchedTables: v().nullable(),
2126
- nextRunAt: _().nullable(),
2161
+ watchedTables: y().nullable(),
2162
+ nextRunAt: v().nullable(),
2127
2163
  lastRunStatus: p().nullable(),
2128
- lastRunAt: _().nullable(),
2164
+ lastRunAt: v().nullable(),
2129
2165
  lastRunDurationMs: m().nullable(),
2130
2166
  lastRunRowsTouched: m().nullable(),
2131
2167
  lastError: p().nullable(),
2132
2168
  workflowRunId: p().nullable(),
2133
- createdAt: _().default("now"),
2134
- updatedAt: _().default("now").onUpdate("now")
2135
- }).index(["lifecycle"]).index(["nextRunAt"]), Xr = I("_voltro_migration_plans", {
2169
+ createdAt: v().default("now"),
2170
+ updatedAt: v().default("now").onUpdate("now")
2171
+ }).index(["lifecycle"]).index(["nextRunAt"]), ti = L("_voltro_schema_owner", {
2172
+ id: f({ prefix: "own" }),
2173
+ appName: p(),
2174
+ projectName: p().nullable(),
2175
+ frameworkVersion: p().nullable(),
2176
+ claimedAt: v().default("now")
2177
+ }), ni = L("_voltro_plugin_migrations", {
2178
+ id: f({ prefix: "plm" }),
2179
+ plugin_name: p(),
2180
+ migration_id: p(),
2181
+ description: p().nullable(),
2182
+ applied_at: p()
2183
+ }), ri = L("_voltro_migration_plans", {
2136
2184
  id: f({ prefix: "plan" }),
2137
2185
  fingerprint: p(),
2138
2186
  liveFingerprint: p().nullable(),
2139
- operations: v(),
2140
- rollbackPlan: v().nullable(),
2187
+ operations: y(),
2188
+ rollbackPlan: y().nullable(),
2141
2189
  appliedBy: p(),
2142
2190
  environment: p(),
2143
2191
  source: p(),
2144
2192
  onlineStrategy: p().nullable(),
2145
2193
  durationMs: m(),
2146
2194
  notes: p().nullable(),
2147
- squashedAt: _().nullable(),
2148
- appliedAt: _().default("now"),
2149
- createdAt: _().default("now"),
2150
- updatedAt: _().default("now").onUpdate("now")
2151
- }).index(["fingerprint"]).index(["environment"]), Zr = I("_voltro_idempotency", {
2195
+ squashedAt: v().nullable(),
2196
+ appliedAt: v().default("now"),
2197
+ createdAt: v().default("now"),
2198
+ updatedAt: v().default("now").onUpdate("now")
2199
+ }).index(["fingerprint"]).index(["environment"]), ii = L("_voltro_idempotency", {
2152
2200
  id: f({ prefix: "idem" }),
2153
2201
  scope: p(),
2154
2202
  key: p(),
2155
2203
  status: p(),
2156
- response: v().nullable(),
2157
- createdAt: _().default("now")
2158
- }).unique(["scope", "key"]).index(["createdAt"]), Qr = I("_voltro_devices", {
2204
+ response: y().nullable(),
2205
+ createdAt: v().default("now")
2206
+ }).unique(["scope", "key"]).index(["createdAt"]), ai = L("_voltro_devices", {
2159
2207
  id: f({ prefix: "device" }),
2160
2208
  tenantId: p(),
2161
2209
  name: p(),
2162
- scopes: v().nullable(),
2210
+ scopes: y().nullable(),
2163
2211
  pairingHash: p().maxLength(64).nullable(),
2164
- pairingExpiresAt: _().nullable(),
2212
+ pairingExpiresAt: v().nullable(),
2165
2213
  accessHash: p().maxLength(64).nullable(),
2166
- accessExpiresAt: _().nullable(),
2214
+ accessExpiresAt: v().nullable(),
2167
2215
  refreshHash: p().maxLength(64).nullable(),
2168
- refreshExpiresAt: _().nullable(),
2216
+ refreshExpiresAt: v().nullable(),
2169
2217
  previousRefreshHash: p().maxLength(64).nullable(),
2170
2218
  generation: m().default(0),
2171
- pairedAt: _().nullable(),
2172
- lastSeenAt: _().nullable(),
2173
- revokedAt: _().nullable(),
2219
+ pairedAt: v().nullable(),
2220
+ lastSeenAt: v().nullable(),
2221
+ revokedAt: v().nullable(),
2174
2222
  revokedReason: p().nullable(),
2175
2223
  createdBy: p().nullable(),
2176
- metadata: v().nullable(),
2177
- createdAt: _()
2178
- }).index(["tenantId"]).index(["pairingHash"]).index(["accessHash"]).index(["refreshHash"]).index(["previousRefreshHash"]), $r = I("_voltro_tenant_selections", {
2224
+ metadata: y().nullable(),
2225
+ createdAt: v()
2226
+ }).index(["tenantId"]).index(["pairingHash"]).index(["accessHash"]).index(["refreshHash"]).index(["previousRefreshHash"]), oi = L("_voltro_tenant_selections", {
2179
2227
  id: f({ prefix: "tsel" }),
2180
2228
  subjectType: p().maxLength(32),
2181
2229
  subjectId: p(),
2182
2230
  tenantId: p(),
2183
- selectedAt: _()
2184
- }).primaryKey(["id"]).nonReactive(), ei = I("_voltro_kv", {
2231
+ selectedAt: v()
2232
+ }).primaryKey(["id"]).nonReactive(), si = L("_voltro_kv", {
2185
2233
  id: f({ prefix: "kv" }),
2186
2234
  key: p().unique(),
2187
2235
  value: p().nullable(),
2188
- expiresAt: _().nullable(),
2189
- createdAt: _().default("now"),
2190
- updatedAt: _().default("now").onUpdate("now")
2191
- }).index(["expiresAt"]), ti = I("_voltro_api_keys", {
2236
+ expiresAt: v().nullable(),
2237
+ createdAt: v().default("now"),
2238
+ updatedAt: v().default("now").onUpdate("now")
2239
+ }).index(["expiresAt"]), ci = L("_voltro_api_keys", {
2192
2240
  id: f({ prefix: "apikey" }),
2193
2241
  tenantId: p().nullable(),
2194
2242
  name: p(),
2195
2243
  hashedKey: p().maxLength(64).unique(),
2196
2244
  keyPrefix: p(),
2197
- scopes: v().nullable(),
2198
- lastUsedAt: _().nullable(),
2245
+ scopes: y().nullable(),
2246
+ lastUsedAt: v().nullable(),
2199
2247
  requestCount: m().default(0),
2200
- expiresAt: _().nullable(),
2201
- revokedAt: _().nullable(),
2248
+ expiresAt: v().nullable(),
2249
+ revokedAt: v().nullable(),
2202
2250
  createdBy: p().nullable(),
2203
2251
  onBehalfOf: p().nullable(),
2204
- metadata: v().nullable(),
2205
- createdAt: _().default("now")
2206
- }).index("byApiKeyTenant", ["tenantId"]), ni = I("_voltro_replica_observations", {
2252
+ metadata: y().nullable(),
2253
+ createdAt: v().default("now")
2254
+ }).index("byApiKeyTenant", ["tenantId"]), li = L("_voltro_replica_observations", {
2207
2255
  id: f({ prefix: "robs" }),
2208
2256
  replicaId: p().maxLength(191),
2209
- startedAt: _(),
2257
+ startedAt: v(),
2210
2258
  version: p().maxLength(64).nullable(),
2211
2259
  kind: p().maxLength(64),
2212
2260
  payload: p().nullable(),
2213
2261
  reachableAt: p().maxLength(255).nullable(),
2214
- writtenAt: _().default("now").onUpdate("now")
2215
- }).unique(["replicaId", "kind"]).index(["kind"]), ri = [
2216
- Jr,
2217
- Yr,
2218
- Xr
2219
- ], ii = "_voltro_replace_in_progress", ai = I(ii, {
2262
+ writtenAt: v().default("now").onUpdate("now")
2263
+ }).unique(["replicaId", "kind"]).index(["kind"]), ui = [
2264
+ $r,
2265
+ ei,
2266
+ ri
2267
+ ], di = "_voltro_replace_in_progress", fi = L(di, {
2220
2268
  id: f({ prefix: "repl" }),
2221
- startedAt: _().default("now"),
2269
+ startedAt: v().default("now"),
2222
2270
  kind: p().default("replace"),
2223
2271
  tables: p().nullable(),
2224
2272
  capture: p().nullable(),
2225
2273
  via: p(),
2226
2274
  staging: p().nullable(),
2227
- heartbeatAt: _().nullable(),
2228
- resumable: g().nullable()
2229
- }), oi = 30, si = (e, t) => {
2275
+ heartbeatAt: v().nullable(),
2276
+ resumable: _().nullable()
2277
+ }).nonReactive(), pi = 30, mi = (e, t) => {
2230
2278
  let n = typeof t == "number" && Number.isFinite(t) && t > 0 ? t : 30, r = Number(e.VOLTRO_STAGING_STALE_MINUTES);
2231
2279
  return (Number.isFinite(r) && r > 0 ? r : n) * 6e4;
2232
- }, ci = (e) => e == null || String(e).length === 0 ? [] : String(e).split(",").map((e) => e.trim()).filter((e) => e.length > 0), li = (e) => {
2280
+ }, hi = (e) => e == null || String(e).length === 0 ? [] : String(e).split(",").map((e) => e.trim()).filter((e) => e.length > 0), gi = (e) => {
2233
2281
  let t = e.filter((e) => e.kind !== "staging");
2234
2282
  if (t.length !== 0) return `refusing to start: a destructive data operation did not finish.
2235
2283
  ${t.map((e) => {
@@ -2244,7 +2292,7 @@ ${t.map((e) => {
2244
2292
 
2245
2293
  When the data is back, or you have decided the current state is correct, clear the marker:
2246
2294
  voltro data clear-replace-marker --yes`;
2247
- }, ui = (e, t, n) => {
2295
+ }, _i = (e, t, n) => {
2248
2296
  let r = e.filter((e) => e.kind === "staging");
2249
2297
  return {
2250
2298
  all: r,
@@ -2254,7 +2302,7 @@ ${t.map((e) => {
2254
2302
  return Number.isFinite(r) ? t - r >= n : !1;
2255
2303
  })
2256
2304
  };
2257
- }, di = (e, t) => {
2305
+ }, vi = (e, t) => {
2258
2306
  if (e.all.length === 0) return;
2259
2307
  let n = new Set(e.droppable.map((e) => e.id));
2260
2308
  return `staged data-import leftovers:
@@ -2265,4 +2313,4 @@ ${e.all.map((e) => {
2265
2313
  a reason to refuse the boot — it is a reason to know the disk is holding a copy of a bundle.`;
2266
2314
  };
2267
2315
  //#endregion
2268
- export { qn as $, Ee as $n, Lt as $t, Dr as A, dt as An, ee as Ar, G as At, Tr as B, M as Bn, nn as Bt, Kr as C, L as Cn, m as Cr, On as Ct, qr as D, pt as Dn, te as Dr, Dn as Dt, Br as E, I as En, S as Er, En as Et, Pr as F, nt as Fn, _ as Fr, fn as Ft, xr as G, w as Gn, Mt as Gt, Cr as H, N as Hn, Ft as Ht, Mr as I, Ve as In, le as Ir, dn as It, nr as J, Re as Jn, Gt as Jt, br as K, Pe as Kn, Nt as Kt, Or as L, He as Ln, mn as Lt, jr as M, ct as Mn, oe as Mr, Sn as Mt, Nr as N, st as Nn, o as Nr, W as Nt, Wr as O, ut as On, me as Or, yn as Ot, Ar as P, at as Pn, p as Pr, un as Pt, Q, Ie as Qn, qt as Qt, kr as R, Ue as Rn, tn as Rt, Gr as S, bt as Sn, f as Sr, q as St, Hr as T, ft as Tn, v as Tr, K as Tt, Sr as U, T as Un, Yt as Ut, gr as V, A as Vn, an as Vt, _r as W, Oe as Wn, Rt as Wt, Zn as X, Te as Xn, Vt as Xt, Yn as Y, ze as Yn, Ht as Yt, Xn as Z, Fe as Zn, Kt as Zt, $r as _, Tt as _n, re as _r, rr as _t, di as a, Wt as an, ge as ar, Gn as at, Lr as b, St as bn, fe as br, $ as bt, si as c, Pt as cn, ue as cr, $n as ct, Zr as d, Bt as dn, y as dr, Wn as dt, It as en, be as er, zn as et, ei as f, Ot as fn, ae as fr, Bn as ft, Yr as g, jt as gn, ie as gr, sr as gt, ni as h, z as hn, b as hr, Kn as ht, li as i, Zt as in, _e as ir, Hn as it, wr as j, ot as jn, se as jr, Cn as jt, Fr as k, lt as kn, c as kr, vn as kt, ti as l, Jt as ln, ne as lr, ar as lt, Jr as m, Et as mn, s as mr, lr as mt, oi as n, $t as nn, ve as nr, cr as nt, ui as o, Xt as on, u as or, or as ot, Xr as p, At as pn, l as pr, ir as pt, Qn as q, Le as qn, en as qt, ai as r, Qt as rn, ye as rr, Vn as rt, ci as s, Ut as sn, x as sr, er as st, ii as t, B as tn, xe as tr, Z as tt, Qr as u, zt as un, g as ur, Un as ut, ri as v, Dt as vn, h as vr, tr as vt, Rr as w, mt as wn, de as wr, J as wt, zr as x, xt as xn, pe as xr, Y as xt, Ur as y, kt as yn, ce as yr, Jn as yt, Ir as z, j as zn, rn as zt };
2316
+ export { $n as $, Re as $n, Vt as $t, Yr as A, L as An, C as Ar, Dn as At, Pr as B, Be as Bn, ce as Br, un as Bt, Wr as C, Ot as Cn, se as Cr, Z as Ct, qr as D, R as Dn, m as Dr, X as Dt, Ur as E, yt as En, f as Er, Bn as Et, Rr as F, at as Fn, oe as Fr, Sn as Ft, Dr as G, j as Gn, rn as Gt, Ar as H, He as Hn, en as Ht, Fr as I, st as In, ae as Ir, G as It, Tr as J, De as Jn, Lt as Jt, Sr as K, P as Kn, Pt as Kt, zr as L, ot as Ln, o as Lr, mn as Lt, Mr as M, lt as Mn, pe as Mr, vn as Mt, kr as N, ct as Nn, c as Nr, K as Nt, Gr as O, pt as On, ue as Or, q as Ot, Ir as P, ut as Pn, h as Pr, Cn as Pt, er as Q, Le as Qn, Wt as Qt, Lr as R, it as Rn, p as Rr, ln as Rt, Hr as S, Et as Sn, g as Sr, yr as St, Zr as T, bt as Tn, fe as Tr, On as Tt, xr as U, M as Un, nn as Ut, Vr as V, Ve as Vn, pn as Vt, Or as W, N as Wn, tn as Wt, ar as X, Ne as Xn, Mt as Xt, tr as Y, T as Yn, jt as Yt, Qn as Z, Ie as Zn, $t as Zt, ti as _, kt as _n, l as _r, Yn as _t, vi as a, V as an, be as ar, Wn as at, ui as b, At as bn, re as br, ir as bt, mi as c, Xt as cn, ge as cr, lr as ct, ii as d, Ht as dn, S as dr, cr as dt, Bt as en, we as er, vr as et, si as f, Nt as fn, le as fr, Kn as ft, li as g, Dt as gn, ie as gr, fr as gt, ni as h, zt as hn, b as hr, sr as ht, gi as i, Ft as in, ye as ir, dr as it, Br as j, ft as jn, ee as jr, yn as jt, Qr as k, dt as kn, y as kr, En as kt, ci as l, Ut as ln, he as lr, rr as lt, $r as m, Rt as mn, _ as mr, Un as mt, pi as n, Kt as nn, Fe as nr, Hn as nt, _i as o, Qt as on, _e as or, Gn as ot, ri as p, qt as pn, te as pr, qn as pt, Er as q, E as qn, Jt as qt, fi as r, It as rn, Te as rr, $ as rt, hi as s, Zt as sn, ve as sr, Jn as st, di as t, Gt as tn, Pe as tr, Xn as tt, ai as u, Yt as un, u as ur, nr as ut, ei as v, Tt as vn, s as vr, ur as vt, Xr as w, xt as wn, de as wr, J as wt, Jr as x, wt as xn, ne as xr, Zn as xt, oi as y, B as yn, x as yr, or as yt, Nr as z, tt as zn, v as zr, dn as zt };