drizzle-cube 0.4.51 → 0.4.52

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.
@@ -121,7 +121,7 @@ var x = class {
121
121
  }
122
122
  }
123
123
  static [t] = "SQL";
124
- decoder = w;
124
+ decoder = T;
125
125
  shouldInlineParams = !1;
126
126
  usedTables = [];
127
127
  append(e) {
@@ -182,15 +182,15 @@ var x = class {
182
182
  params: []
183
183
  };
184
184
  }
185
- if (n(t, A)) {
185
+ if (n(t, j)) {
186
186
  let e = t[l].schema, n = t[l].name;
187
187
  return {
188
188
  sql: e === void 0 || t[l].isAlias ? u(n) : u(e) + "." + u(n),
189
189
  params: []
190
190
  };
191
191
  }
192
- if (n(t, E)) {
193
- if (n(t.value, O)) return {
192
+ if (n(t, D)) {
193
+ if (n(t.value, k)) return {
194
194
  sql: d(m.value++, t),
195
195
  params: [t],
196
196
  typings: ["none"]
@@ -208,7 +208,7 @@ var x = class {
208
208
  typings: i
209
209
  };
210
210
  }
211
- return n(t, O) ? {
211
+ return n(t, k) ? {
212
212
  sql: d(m.value++, t),
213
213
  params: [t],
214
214
  typings: ["none"]
@@ -278,16 +278,16 @@ var x = class {
278
278
  return new S([this]);
279
279
  }
280
280
  };
281
- function ee(e) {
281
+ function w(e) {
282
282
  return typeof e == "object" && !!e && "mapToDriverValue" in e && typeof e.mapToDriverValue == "function";
283
283
  }
284
- var w = { mapFromDriverValue: (e) => e }, T = { mapToDriverValue: (e) => e };
284
+ var T = { mapFromDriverValue: (e) => e }, E = { mapToDriverValue: (e) => e };
285
285
  ({
286
- ...w,
287
- ...T
286
+ ...T,
287
+ ...E
288
288
  });
289
- var E = class {
290
- constructor(e, t = T) {
289
+ var D = class {
290
+ constructor(e, t = E) {
291
291
  this.value = e, this.encoder = t;
292
292
  }
293
293
  static [t] = "Param";
@@ -296,7 +296,7 @@ var E = class {
296
296
  return new S([this]);
297
297
  }
298
298
  };
299
- function D(e, ...t) {
299
+ function O(e, ...t) {
300
300
  let n = [];
301
301
  (t.length > 0 || e.length > 0 && e[0] !== "") && n.push(new x(e[0]));
302
302
  for (let [r, i] of t.entries()) n.push(i, new x(e[r + 1]));
@@ -326,14 +326,14 @@ function D(e, ...t) {
326
326
  }
327
327
  e.identifier = a;
328
328
  function o(e) {
329
- return new O(e);
329
+ return new k(e);
330
330
  }
331
331
  e.placeholder = o;
332
332
  function s(e, t) {
333
- return new E(e, t);
333
+ return new D(e, t);
334
334
  }
335
335
  e.param = s;
336
- })(D ||= {}), ((e) => {
336
+ })(O ||= {}), ((e) => {
337
337
  class n {
338
338
  constructor(e, t) {
339
339
  this.sql = e, this.fieldAlias = t;
@@ -349,7 +349,7 @@ function D(e, ...t) {
349
349
  }
350
350
  e.Aliased = n;
351
351
  })(S ||= {});
352
- var O = class {
352
+ var k = class {
353
353
  constructor(e) {
354
354
  this.name = e;
355
355
  }
@@ -357,10 +357,10 @@ var O = class {
357
357
  getSQL() {
358
358
  return new S([this]);
359
359
  }
360
- }, k = Symbol.for("drizzle:IsDrizzleView"), A = class {
360
+ }, A = Symbol.for("drizzle:IsDrizzleView"), j = class {
361
361
  static [t] = "View";
362
362
  [l];
363
- [k] = !0;
363
+ [A] = !0;
364
364
  constructor({ name: e, schema: t, selectedFields: n, query: r }) {
365
365
  this[l] = {
366
366
  name: e,
@@ -385,84 +385,84 @@ r.prototype.getSQL = function() {
385
385
  };
386
386
  //#endregion
387
387
  //#region node_modules/drizzle-orm/sql/expressions/conditions.js
388
- function j(e, t) {
389
- return ee(t) && !y(e) && !n(e, E) && !n(e, O) && !n(e, r) && !n(e, v) && !n(e, A) ? new E(e, t) : e;
388
+ function M(e, t) {
389
+ return w(t) && !y(e) && !n(e, D) && !n(e, k) && !n(e, r) && !n(e, v) && !n(e, j) ? new D(e, t) : e;
390
390
  }
391
- var M = (e, t) => D`${e} = ${j(t, e)}`, N = (e, t) => D`${e} <> ${j(t, e)}`;
392
- function P(...e) {
391
+ var N = (e, t) => O`${e} = ${M(t, e)}`, P = (e, t) => O`${e} <> ${M(t, e)}`;
392
+ function F(...e) {
393
393
  let t = e.filter((e) => e !== void 0);
394
394
  if (t.length !== 0) return t.length === 1 ? new S(t) : new S([
395
395
  new x("("),
396
- D.join(t, new x(" and ")),
396
+ O.join(t, new x(" and ")),
397
397
  new x(")")
398
398
  ]);
399
399
  }
400
- function F(...e) {
400
+ function I(...e) {
401
401
  let t = e.filter((e) => e !== void 0);
402
402
  if (t.length !== 0) return t.length === 1 ? new S(t) : new S([
403
403
  new x("("),
404
- D.join(t, new x(" or ")),
404
+ O.join(t, new x(" or ")),
405
405
  new x(")")
406
406
  ]);
407
407
  }
408
- var te = (e, t) => D`${e} > ${j(t, e)}`, I = (e, t) => D`${e} >= ${j(t, e)}`, ne = (e, t) => D`${e} < ${j(t, e)}`, L = (e, t) => D`${e} <= ${j(t, e)}`;
408
+ var ee = (e, t) => O`${e} > ${M(t, e)}`, L = (e, t) => O`${e} >= ${M(t, e)}`, te = (e, t) => O`${e} < ${M(t, e)}`, R = (e, t) => O`${e} <= ${M(t, e)}`;
409
+ function ne(e, t) {
410
+ return Array.isArray(t) ? t.length === 0 ? O`false` : O`${e} in ${t.map((t) => M(t, e))}` : O`${e} in ${M(t, e)}`;
411
+ }
409
412
  function re(e, t) {
410
- return Array.isArray(t) ? t.length === 0 ? D`false` : D`${e} in ${t.map((t) => j(t, e))}` : D`${e} in ${j(t, e)}`;
413
+ return Array.isArray(t) ? t.length === 0 ? O`true` : O`${e} not in ${t.map((t) => M(t, e))}` : O`${e} not in ${M(t, e)}`;
411
414
  }
412
- function ie(e, t) {
413
- return Array.isArray(t) ? t.length === 0 ? D`true` : D`${e} not in ${t.map((t) => j(t, e))}` : D`${e} not in ${j(t, e)}`;
415
+ function ie(e) {
416
+ return O`${e} is null`;
414
417
  }
415
418
  function ae(e) {
416
- return D`${e} is null`;
417
- }
418
- function oe(e) {
419
- return D`${e} is not null`;
419
+ return O`${e} is not null`;
420
420
  }
421
- function se(e, t) {
421
+ function oe(e, t) {
422
422
  if (Array.isArray(t)) {
423
423
  if (t.length === 0) throw Error("arrayContains requires at least one value");
424
- return D`${e} @> ${D`${j(t, e)}`}`;
424
+ return O`${e} @> ${O`${M(t, e)}`}`;
425
425
  }
426
- return D`${e} @> ${j(t, e)}`;
426
+ return O`${e} @> ${M(t, e)}`;
427
427
  }
428
- function ce(e, t) {
428
+ function se(e, t) {
429
429
  if (Array.isArray(t)) {
430
430
  if (t.length === 0) throw Error("arrayContained requires at least one value");
431
- return D`${e} <@ ${D`${j(t, e)}`}`;
431
+ return O`${e} <@ ${O`${M(t, e)}`}`;
432
432
  }
433
- return D`${e} <@ ${j(t, e)}`;
433
+ return O`${e} <@ ${M(t, e)}`;
434
434
  }
435
- function le(e, t) {
435
+ function ce(e, t) {
436
436
  if (Array.isArray(t)) {
437
437
  if (t.length === 0) throw Error("arrayOverlaps requires at least one value");
438
- return D`${e} && ${D`${j(t, e)}`}`;
438
+ return O`${e} && ${O`${M(t, e)}`}`;
439
439
  }
440
- return D`${e} && ${j(t, e)}`;
440
+ return O`${e} && ${M(t, e)}`;
441
441
  }
442
442
  //#endregion
443
443
  //#region node_modules/drizzle-orm/sql/expressions/select.js
444
- function ue(e) {
445
- return D`${e} asc`;
444
+ function le(e) {
445
+ return O`${e} asc`;
446
446
  }
447
- function de(e) {
448
- return D`${e} desc`;
447
+ function ue(e) {
448
+ return O`${e} desc`;
449
449
  }
450
450
  //#endregion
451
451
  //#region node_modules/drizzle-orm/sql/functions/aggregate.js
452
- function fe(e) {
453
- return D`count(${e || D.raw("*")})`.mapWith(Number);
454
- }
455
- function pe(e) {
456
- return D`count(distinct ${e})`.mapWith(Number);
452
+ function de(e) {
453
+ return O`count(${e || O.raw("*")})`.mapWith(Number);
457
454
  }
458
- function R(e) {
459
- return D`sum(${e})`.mapWith(String);
455
+ function fe(e) {
456
+ return O`count(distinct ${e})`.mapWith(Number);
460
457
  }
461
458
  function z(e) {
462
- return D`max(${e})`.mapWith(n(e, r) ? e : String);
459
+ return O`sum(${e})`.mapWith(String);
463
460
  }
464
461
  function B(e) {
465
- return D`min(${e})`.mapWith(n(e, r) ? e : String);
462
+ return O`max(${e})`.mapWith(n(e, r) ? e : String);
463
+ }
464
+ function pe(e) {
465
+ return O`min(${e})`.mapWith(n(e, r) ? e : String);
466
466
  }
467
467
  //#endregion
468
468
  //#region src/server/adapters/base-adapter.ts
@@ -506,73 +506,73 @@ var V = class {
506
506
  let t = this.parseISODuration(e), n = [];
507
507
  t.years && n.push(`${t.years} years`), t.months && n.push(`${t.months} months`), t.days && n.push(`${t.days} days`), t.hours && n.push(`${t.hours} hours`), t.minutes && n.push(`${t.minutes} minutes`), t.seconds && n.push(`${t.seconds} seconds`);
508
508
  let r = n.join(" ") || "0 seconds";
509
- return D`INTERVAL '${D.raw(r)}'`;
509
+ return O`INTERVAL '${O.raw(r)}'`;
510
510
  }
511
511
  buildTimeDifferenceSeconds(e, t) {
512
- return D`EXTRACT(EPOCH FROM (${e} - ${t}))`;
512
+ return O`EXTRACT(EPOCH FROM (${e} - ${t}))`;
513
513
  }
514
514
  buildDateAddInterval(e, t) {
515
- return D`(${e} + ${this.buildIntervalFromISO(t)})`;
515
+ return O`(${e} + ${this.buildIntervalFromISO(t)})`;
516
516
  }
517
517
  buildConditionalAggregation(e, t, n) {
518
518
  let r = e.toUpperCase();
519
- return e === "count" && !t ? D`COUNT(*) FILTER (WHERE ${n})` : D`${D.raw(r)}(${t}) FILTER (WHERE ${n})`;
519
+ return e === "count" && !t ? O`COUNT(*) FILTER (WHERE ${n})` : O`${O.raw(r)}(${t}) FILTER (WHERE ${n})`;
520
520
  }
521
521
  buildDateDiffPeriods(e, t, n) {
522
522
  switch (n) {
523
- case "day": return D`(${t}::date - ${e}::date)`;
524
- case "week": return D`FLOOR((${t}::date - ${e}::date) / 7)`;
525
- case "month": return D`(EXTRACT(YEAR FROM AGE(${t}::timestamp, ${e}::timestamp)) * 12 + EXTRACT(MONTH FROM AGE(${t}::timestamp, ${e}::timestamp)))::integer`;
523
+ case "day": return O`(${t}::date - ${e}::date)`;
524
+ case "week": return O`FLOOR((${t}::date - ${e}::date) / 7)`;
525
+ case "month": return O`(EXTRACT(YEAR FROM AGE(${t}::timestamp, ${e}::timestamp)) * 12 + EXTRACT(MONTH FROM AGE(${t}::timestamp, ${e}::timestamp)))::integer`;
526
526
  default: throw Error(`Unsupported date diff unit: ${n}`);
527
527
  }
528
528
  }
529
529
  buildPeriodSeriesSubquery(e) {
530
- return D`(SELECT generate_series(0, ${e}) as period_number) p`;
530
+ return O`(SELECT generate_series(0, ${e}) as period_number) p`;
531
531
  }
532
532
  buildTimeDimension(e, t) {
533
533
  switch (e) {
534
- case "year": return D`DATE_TRUNC('year', ${t}::timestamp)`;
535
- case "quarter": return D`DATE_TRUNC('quarter', ${t}::timestamp)`;
536
- case "month": return D`DATE_TRUNC('month', ${t}::timestamp)`;
537
- case "week": return D`DATE_TRUNC('week', ${t}::timestamp)`;
538
- case "day": return D`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
539
- case "hour": return D`DATE_TRUNC('hour', ${t}::timestamp)`;
540
- case "minute": return D`DATE_TRUNC('minute', ${t}::timestamp)`;
541
- case "second": return D`DATE_TRUNC('second', ${t}::timestamp)`;
534
+ case "year": return O`DATE_TRUNC('year', ${t}::timestamp)`;
535
+ case "quarter": return O`DATE_TRUNC('quarter', ${t}::timestamp)`;
536
+ case "month": return O`DATE_TRUNC('month', ${t}::timestamp)`;
537
+ case "week": return O`DATE_TRUNC('week', ${t}::timestamp)`;
538
+ case "day": return O`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
539
+ case "hour": return O`DATE_TRUNC('hour', ${t}::timestamp)`;
540
+ case "minute": return O`DATE_TRUNC('minute', ${t}::timestamp)`;
541
+ case "second": return O`DATE_TRUNC('second', ${t}::timestamp)`;
542
542
  default: return t;
543
543
  }
544
544
  }
545
545
  buildStringCondition(e, t, n) {
546
546
  switch (t) {
547
- case "contains": return D`${e} ILIKE ${`%${n}%`}`;
548
- case "notContains": return D`${e} NOT ILIKE ${`%${n}%`}`;
549
- case "startsWith": return D`${e} ILIKE ${`${n}%`}`;
550
- case "endsWith": return D`${e} ILIKE ${`%${n}`}`;
551
- case "like": return D`${e} LIKE ${n}`;
552
- case "notLike": return D`${e} NOT LIKE ${n}`;
553
- case "ilike": return D`${e} ILIKE ${n}`;
554
- case "regex": return D`${e} ~* ${n}`;
555
- case "notRegex": return D`${e} !~* ${n}`;
547
+ case "contains": return O`${e} ILIKE ${`%${n}%`}`;
548
+ case "notContains": return O`${e} NOT ILIKE ${`%${n}%`}`;
549
+ case "startsWith": return O`${e} ILIKE ${`${n}%`}`;
550
+ case "endsWith": return O`${e} ILIKE ${`%${n}`}`;
551
+ case "like": return O`${e} LIKE ${n}`;
552
+ case "notLike": return O`${e} NOT LIKE ${n}`;
553
+ case "ilike": return O`${e} ILIKE ${n}`;
554
+ case "regex": return O`${e} ~* ${n}`;
555
+ case "notRegex": return O`${e} !~* ${n}`;
556
556
  default: throw Error(`Unsupported string operator: ${t}`);
557
557
  }
558
558
  }
559
559
  castToType(e, t) {
560
560
  switch (t) {
561
- case "timestamp": return D`${e}::timestamp`;
562
- case "decimal": return D`${e}::decimal`;
563
- case "integer": return D`${e}::integer`;
561
+ case "timestamp": return O`${e}::timestamp`;
562
+ case "decimal": return O`${e}::decimal`;
563
+ case "integer": return O`${e}::integer`;
564
564
  default: throw Error(`Unsupported cast type: ${t}`);
565
565
  }
566
566
  }
567
567
  buildAvg(e) {
568
- return D`COALESCE(AVG(${e}), 0)`;
568
+ return O`COALESCE(AVG(${e}), 0)`;
569
569
  }
570
570
  buildCaseWhen(e, t) {
571
- let n = e.map((e) => D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
572
- return t === void 0 ? D`CASE ${n} END` : D`CASE ${n} ELSE ${t} END`;
571
+ let n = e.map((e) => O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
572
+ return t === void 0 ? O`CASE ${n} END` : O`CASE ${n} ELSE ${t} END`;
573
573
  }
574
574
  buildBooleanLiteral(e) {
575
- return e ? D`TRUE` : D`FALSE`;
575
+ return e ? O`TRUE` : O`FALSE`;
576
576
  }
577
577
  convertFilterValue(e) {
578
578
  return e;
@@ -601,35 +601,35 @@ var V = class {
601
601
  }
602
602
  buildStddev(e, t = !1) {
603
603
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
604
- return D`COALESCE(${D.raw(n)}(${e}), 0)`;
604
+ return O`COALESCE(${O.raw(n)}(${e}), 0)`;
605
605
  }
606
606
  buildVariance(e, t = !1) {
607
607
  let n = t ? "VAR_SAMP" : "VAR_POP";
608
- return D`COALESCE(${D.raw(n)}(${e}), 0)`;
608
+ return O`COALESCE(${O.raw(n)}(${e}), 0)`;
609
609
  }
610
610
  buildPercentile(e, t) {
611
- return D`PERCENTILE_CONT(${t / 100}) WITHIN GROUP (ORDER BY ${e})`;
611
+ return O`PERCENTILE_CONT(${t / 100}) WITHIN GROUP (ORDER BY ${e})`;
612
612
  }
613
613
  buildWindowFunction(e, t, n, r, i) {
614
- let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
614
+ let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
615
615
  if (i?.frame) {
616
616
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
617
- s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
617
+ s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
618
618
  }
619
619
  let c = [];
620
620
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
621
- let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
621
+ let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
622
622
  switch (e) {
623
- case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
624
- case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
625
- case "rank": return D`RANK() ${l}`;
626
- case "denseRank": return D`DENSE_RANK() ${l}`;
627
- case "rowNumber": return D`ROW_NUMBER() ${l}`;
628
- case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
629
- case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
630
- case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
631
- case "movingAvg": return D`AVG(${t}) ${l}`;
632
- case "movingSum": return D`SUM(${t}) ${l}`;
623
+ case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
624
+ case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
625
+ case "rank": return O`RANK() ${l}`;
626
+ case "denseRank": return O`DENSE_RANK() ${l}`;
627
+ case "rowNumber": return O`ROW_NUMBER() ${l}`;
628
+ case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
629
+ case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
630
+ case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
631
+ case "movingAvg": return O`AVG(${t}) ${l}`;
632
+ case "movingSum": return O`SUM(${t}) ${l}`;
633
633
  default: throw Error(`Unsupported window function: ${e}`);
634
634
  }
635
635
  }
@@ -642,25 +642,25 @@ var V = class {
642
642
  }
643
643
  buildIntervalFromISO(e) {
644
644
  let t = this.parseISODuration(e), n = [];
645
- return t.years && n.push(`${t.years} YEAR`), t.months && n.push(`${t.months} MONTH`), t.days && n.push(`${t.days} DAY`), t.hours && n.push(`${t.hours} HOUR`), t.minutes && n.push(`${t.minutes} MINUTE`), t.seconds && n.push(`${t.seconds} SECOND`), D`${this.durationToSeconds(e)}`;
645
+ return t.years && n.push(`${t.years} YEAR`), t.months && n.push(`${t.months} MONTH`), t.days && n.push(`${t.days} DAY`), t.hours && n.push(`${t.hours} HOUR`), t.minutes && n.push(`${t.minutes} MINUTE`), t.seconds && n.push(`${t.seconds} SECOND`), O`${this.durationToSeconds(e)}`;
646
646
  }
647
647
  buildTimeDifferenceSeconds(e, t) {
648
- return D`TIMESTAMPDIFF(SECOND, ${t}, ${e})`;
648
+ return O`TIMESTAMPDIFF(SECOND, ${t}, ${e})`;
649
649
  }
650
650
  buildDateAddInterval(e, t) {
651
651
  let n = this.parseISODuration(t), r = e;
652
- return n.years && (r = D`DATE_ADD(${r}, INTERVAL ${n.years} YEAR)`), n.months && (r = D`DATE_ADD(${r}, INTERVAL ${n.months} MONTH)`), n.days && (r = D`DATE_ADD(${r}, INTERVAL ${n.days} DAY)`), n.hours && (r = D`DATE_ADD(${r}, INTERVAL ${n.hours} HOUR)`), n.minutes && (r = D`DATE_ADD(${r}, INTERVAL ${n.minutes} MINUTE)`), n.seconds && (r = D`DATE_ADD(${r}, INTERVAL ${n.seconds} SECOND)`), r;
652
+ return n.years && (r = O`DATE_ADD(${r}, INTERVAL ${n.years} YEAR)`), n.months && (r = O`DATE_ADD(${r}, INTERVAL ${n.months} MONTH)`), n.days && (r = O`DATE_ADD(${r}, INTERVAL ${n.days} DAY)`), n.hours && (r = O`DATE_ADD(${r}, INTERVAL ${n.hours} HOUR)`), n.minutes && (r = O`DATE_ADD(${r}, INTERVAL ${n.minutes} MINUTE)`), n.seconds && (r = O`DATE_ADD(${r}, INTERVAL ${n.seconds} SECOND)`), r;
653
653
  }
654
654
  buildConditionalAggregation(e, t, n) {
655
655
  let r = e.toUpperCase();
656
- return e === "count" && !t ? D`COUNT(CASE WHEN ${n} THEN 1 END)` : D`${D.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
656
+ return e === "count" && !t ? O`COUNT(CASE WHEN ${n} THEN 1 END)` : O`${O.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
657
657
  }
658
658
  buildDateDiffPeriods(e, t, n) {
659
659
  let r = n.toUpperCase();
660
- return D`TIMESTAMPDIFF(${D.raw(r)}, ${e}, ${t})`;
660
+ return O`TIMESTAMPDIFF(${O.raw(r)}, ${e}, ${t})`;
661
661
  }
662
662
  buildPeriodSeriesSubquery(e) {
663
- return D`(
663
+ return O`(
664
664
  WITH RECURSIVE periods(period_number) AS (
665
665
  SELECT 0
666
666
  UNION ALL
@@ -681,45 +681,45 @@ var V = class {
681
681
  second: "%Y-%m-%d %H:%i:%s"
682
682
  };
683
683
  switch (e) {
684
- case "quarter": return D`DATE_ADD(MAKEDATE(YEAR(${t}), 1), INTERVAL (QUARTER(${t}) - 1) * 3 MONTH)`;
685
- case "week": return D`DATE_SUB(${t}, INTERVAL WEEKDAY(${t}) DAY)`;
684
+ case "quarter": return O`DATE_ADD(MAKEDATE(YEAR(${t}), 1), INTERVAL (QUARTER(${t}) - 1) * 3 MONTH)`;
685
+ case "week": return O`DATE_SUB(${t}, INTERVAL WEEKDAY(${t}) DAY)`;
686
686
  default: {
687
687
  let r = n[e];
688
- return r ? D`STR_TO_DATE(DATE_FORMAT(${t}, ${r}), '%Y-%m-%d %H:%i:%s')` : t;
688
+ return r ? O`STR_TO_DATE(DATE_FORMAT(${t}, ${r}), '%Y-%m-%d %H:%i:%s')` : t;
689
689
  }
690
690
  }
691
691
  }
692
692
  buildStringCondition(e, t, n) {
693
693
  switch (t) {
694
- case "contains": return D`LOWER(${e}) LIKE ${`%${n.toLowerCase()}%`}`;
695
- case "notContains": return D`LOWER(${e}) NOT LIKE ${`%${n.toLowerCase()}%`}`;
696
- case "startsWith": return D`LOWER(${e}) LIKE ${`${n.toLowerCase()}%`}`;
697
- case "endsWith": return D`LOWER(${e}) LIKE ${`%${n.toLowerCase()}`}`;
698
- case "like": return D`${e} LIKE ${n}`;
699
- case "notLike": return D`${e} NOT LIKE ${n}`;
700
- case "ilike": return D`LOWER(${e}) LIKE ${n.toLowerCase()}`;
701
- case "regex": return D`${e} REGEXP ${n}`;
702
- case "notRegex": return D`${e} NOT REGEXP ${n}`;
694
+ case "contains": return O`LOWER(${e}) LIKE ${`%${n.toLowerCase()}%`}`;
695
+ case "notContains": return O`LOWER(${e}) NOT LIKE ${`%${n.toLowerCase()}%`}`;
696
+ case "startsWith": return O`LOWER(${e}) LIKE ${`${n.toLowerCase()}%`}`;
697
+ case "endsWith": return O`LOWER(${e}) LIKE ${`%${n.toLowerCase()}`}`;
698
+ case "like": return O`${e} LIKE ${n}`;
699
+ case "notLike": return O`${e} NOT LIKE ${n}`;
700
+ case "ilike": return O`LOWER(${e}) LIKE ${n.toLowerCase()}`;
701
+ case "regex": return O`${e} REGEXP ${n}`;
702
+ case "notRegex": return O`${e} NOT REGEXP ${n}`;
703
703
  default: throw Error(`Unsupported string operator: ${t}`);
704
704
  }
705
705
  }
706
706
  castToType(e, t) {
707
707
  switch (t) {
708
- case "timestamp": return D`CAST(${e} AS DATETIME)`;
709
- case "decimal": return D`CAST(${e} AS DECIMAL(10,2))`;
710
- case "integer": return D`CAST(${e} AS SIGNED INTEGER)`;
708
+ case "timestamp": return O`CAST(${e} AS DATETIME)`;
709
+ case "decimal": return O`CAST(${e} AS DECIMAL(10,2))`;
710
+ case "integer": return O`CAST(${e} AS SIGNED INTEGER)`;
711
711
  default: throw Error(`Unsupported cast type: ${t}`);
712
712
  }
713
713
  }
714
714
  buildAvg(e) {
715
- return D`IFNULL(AVG(${e}), 0)`;
715
+ return O`IFNULL(AVG(${e}), 0)`;
716
716
  }
717
717
  buildCaseWhen(e, t) {
718
- let n = e.map((e) => D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
719
- return t === void 0 ? D`CASE ${n} END` : D`CASE ${n} ELSE ${t} END`;
718
+ let n = e.map((e) => O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
719
+ return t === void 0 ? O`CASE ${n} END` : O`CASE ${n} ELSE ${t} END`;
720
720
  }
721
721
  buildBooleanLiteral(e) {
722
- return e ? D`TRUE` : D`FALSE`;
722
+ return e ? O`TRUE` : O`FALSE`;
723
723
  }
724
724
  convertFilterValue(e) {
725
725
  return e;
@@ -748,35 +748,35 @@ var V = class {
748
748
  }
749
749
  buildStddev(e, t = !1) {
750
750
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
751
- return D`IFNULL(${D.raw(n)}(${e}), 0)`;
751
+ return O`IFNULL(${O.raw(n)}(${e}), 0)`;
752
752
  }
753
753
  buildVariance(e, t = !1) {
754
754
  let n = t ? "VAR_SAMP" : "VAR_POP";
755
- return D`IFNULL(${D.raw(n)}(${e}), 0)`;
755
+ return O`IFNULL(${O.raw(n)}(${e}), 0)`;
756
756
  }
757
757
  buildPercentile(e, t) {
758
758
  return null;
759
759
  }
760
760
  buildWindowFunction(e, t, n, r, i) {
761
- let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
761
+ let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
762
762
  if (i?.frame) {
763
763
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
764
- s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
764
+ s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
765
765
  }
766
766
  let c = [];
767
767
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
768
- let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
768
+ let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
769
769
  switch (e) {
770
- case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
771
- case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
772
- case "rank": return D`RANK() ${l}`;
773
- case "denseRank": return D`DENSE_RANK() ${l}`;
774
- case "rowNumber": return D`ROW_NUMBER() ${l}`;
775
- case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
776
- case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
777
- case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
778
- case "movingAvg": return D`AVG(${t}) ${l}`;
779
- case "movingSum": return D`SUM(${t}) ${l}`;
770
+ case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
771
+ case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
772
+ case "rank": return O`RANK() ${l}`;
773
+ case "denseRank": return O`DENSE_RANK() ${l}`;
774
+ case "rowNumber": return O`ROW_NUMBER() ${l}`;
775
+ case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
776
+ case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
777
+ case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
778
+ case "movingAvg": return O`AVG(${t}) ${l}`;
779
+ case "movingSum": return O`SUM(${t}) ${l}`;
780
780
  default: throw Error(`Unsupported window function: ${e}`);
781
781
  }
782
782
  }
@@ -788,28 +788,28 @@ var V = class {
788
788
  return !1;
789
789
  }
790
790
  buildIntervalFromISO(e) {
791
- return D`${this.durationToSeconds(e)}`;
791
+ return O`${this.durationToSeconds(e)}`;
792
792
  }
793
793
  buildTimeDifferenceSeconds(e, t) {
794
- return D`(${e} - ${t})`;
794
+ return O`(${e} - ${t})`;
795
795
  }
796
796
  buildDateAddInterval(e, t) {
797
- return D`(${e} + ${this.durationToSeconds(t)})`;
797
+ return O`(${e} + ${this.durationToSeconds(t)})`;
798
798
  }
799
799
  buildConditionalAggregation(e, t, n) {
800
800
  let r = e.toUpperCase();
801
- return e === "count" && !t ? D`COUNT(CASE WHEN ${n} THEN 1 END)` : D`${D.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
801
+ return e === "count" && !t ? O`COUNT(CASE WHEN ${n} THEN 1 END)` : O`${O.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
802
802
  }
803
803
  buildDateDiffPeriods(e, t, n) {
804
804
  switch (n) {
805
- case "day": return D`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) AS INTEGER)`;
806
- case "week": return D`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) / 7 AS INTEGER)`;
807
- case "month": return D`((CAST(strftime('%Y', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%Y', datetime(${e}, 'unixepoch')) AS INTEGER)) * 12 + (CAST(strftime('%m', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%m', datetime(${e}, 'unixepoch')) AS INTEGER)))`;
805
+ case "day": return O`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) AS INTEGER)`;
806
+ case "week": return O`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) / 7 AS INTEGER)`;
807
+ case "month": return O`((CAST(strftime('%Y', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%Y', datetime(${e}, 'unixepoch')) AS INTEGER)) * 12 + (CAST(strftime('%m', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%m', datetime(${e}, 'unixepoch')) AS INTEGER)))`;
808
808
  default: throw Error(`Unsupported date diff unit for SQLite: ${n}`);
809
809
  }
810
810
  }
811
811
  buildPeriodSeriesSubquery(e) {
812
- return D`(
812
+ return O`(
813
813
  WITH RECURSIVE periods(period_number) AS (
814
814
  SELECT 0
815
815
  UNION ALL
@@ -820,52 +820,52 @@ var V = class {
820
820
  }
821
821
  buildTimeDimension(e, t) {
822
822
  switch (e) {
823
- case "year": return D`datetime(${t}, 'unixepoch', 'start of year')`;
823
+ case "year": return O`datetime(${t}, 'unixepoch', 'start of year')`;
824
824
  case "quarter": {
825
- let e = D`datetime(${t}, 'unixepoch')`;
826
- return D`datetime(${e}, 'start of year',
825
+ let e = O`datetime(${t}, 'unixepoch')`;
826
+ return O`datetime(${e}, 'start of year',
827
827
  '+' || (((CAST(strftime('%m', ${e}) AS INTEGER) - 1) / 3) * 3) || ' months')`;
828
828
  }
829
- case "month": return D`datetime(${t}, 'unixepoch', 'start of month')`;
830
- case "week": return D`date(datetime(${t}, 'unixepoch'), 'weekday 1', '-6 days')`;
831
- case "day": return D`datetime(${t}, 'unixepoch', 'start of day')`;
832
- case "hour": return D`datetime(strftime('%Y-%m-%d %H:00:00', ${D`datetime(${t}, 'unixepoch')`}))`;
833
- case "minute": return D`datetime(strftime('%Y-%m-%d %H:%M:00', ${D`datetime(${t}, 'unixepoch')`}))`;
834
- case "second": return D`datetime(strftime('%Y-%m-%d %H:%M:%S', ${D`datetime(${t}, 'unixepoch')`}))`;
835
- default: return D`datetime(${t}, 'unixepoch')`;
829
+ case "month": return O`datetime(${t}, 'unixepoch', 'start of month')`;
830
+ case "week": return O`date(datetime(${t}, 'unixepoch'), 'weekday 1', '-6 days')`;
831
+ case "day": return O`datetime(${t}, 'unixepoch', 'start of day')`;
832
+ case "hour": return O`datetime(strftime('%Y-%m-%d %H:00:00', ${O`datetime(${t}, 'unixepoch')`}))`;
833
+ case "minute": return O`datetime(strftime('%Y-%m-%d %H:%M:00', ${O`datetime(${t}, 'unixepoch')`}))`;
834
+ case "second": return O`datetime(strftime('%Y-%m-%d %H:%M:%S', ${O`datetime(${t}, 'unixepoch')`}))`;
835
+ default: return O`datetime(${t}, 'unixepoch')`;
836
836
  }
837
837
  }
838
838
  buildStringCondition(e, t, n) {
839
839
  switch (t) {
840
- case "contains": return D`LOWER(${e}) LIKE ${`%${n.toLowerCase()}%`}`;
841
- case "notContains": return D`LOWER(${e}) NOT LIKE ${`%${n.toLowerCase()}%`}`;
842
- case "startsWith": return D`LOWER(${e}) LIKE ${`${n.toLowerCase()}%`}`;
843
- case "endsWith": return D`LOWER(${e}) LIKE ${`%${n.toLowerCase()}`}`;
844
- case "like": return D`${e} LIKE ${n}`;
845
- case "notLike": return D`${e} NOT LIKE ${n}`;
846
- case "ilike": return D`LOWER(${e}) LIKE ${n.toLowerCase()}`;
847
- case "regex": return D`${e} GLOB ${n}`;
848
- case "notRegex": return D`${e} NOT GLOB ${n}`;
840
+ case "contains": return O`LOWER(${e}) LIKE ${`%${n.toLowerCase()}%`}`;
841
+ case "notContains": return O`LOWER(${e}) NOT LIKE ${`%${n.toLowerCase()}%`}`;
842
+ case "startsWith": return O`LOWER(${e}) LIKE ${`${n.toLowerCase()}%`}`;
843
+ case "endsWith": return O`LOWER(${e}) LIKE ${`%${n.toLowerCase()}`}`;
844
+ case "like": return O`${e} LIKE ${n}`;
845
+ case "notLike": return O`${e} NOT LIKE ${n}`;
846
+ case "ilike": return O`LOWER(${e}) LIKE ${n.toLowerCase()}`;
847
+ case "regex": return O`${e} GLOB ${n}`;
848
+ case "notRegex": return O`${e} NOT GLOB ${n}`;
849
849
  default: throw Error(`Unsupported string operator: ${t}`);
850
850
  }
851
851
  }
852
852
  castToType(e, t) {
853
853
  switch (t) {
854
- case "timestamp": return D`datetime(${e} / 1000, 'unixepoch')`;
855
- case "decimal": return D`CAST(${e} AS REAL)`;
856
- case "integer": return D`CAST(${e} AS INTEGER)`;
854
+ case "timestamp": return O`datetime(${e} / 1000, 'unixepoch')`;
855
+ case "decimal": return O`CAST(${e} AS REAL)`;
856
+ case "integer": return O`CAST(${e} AS INTEGER)`;
857
857
  default: throw Error(`Unsupported cast type: ${t}`);
858
858
  }
859
859
  }
860
860
  buildAvg(e) {
861
- return D`IFNULL(AVG(${e}), 0)`;
861
+ return O`IFNULL(AVG(${e}), 0)`;
862
862
  }
863
863
  buildCaseWhen(e, t) {
864
- let n = e.map((e) => e.then && typeof e.then == "object" && (e.then.queryChunks || e.then._ || e.then.sql) ? D`WHEN ${e.when} THEN ${D.raw("(")}${e.then}${D.raw(")")}` : D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
865
- return t === void 0 ? D`CASE ${n} END` : t && typeof t == "object" && (t.queryChunks || t._ || t.sql) ? D`CASE ${n} ELSE ${D.raw("(")}${t}${D.raw(")")} END` : D`CASE ${n} ELSE ${t} END`;
864
+ let n = e.map((e) => e.then && typeof e.then == "object" && (e.then.queryChunks || e.then._ || e.then.sql) ? O`WHEN ${e.when} THEN ${O.raw("(")}${e.then}${O.raw(")")}` : O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
865
+ return t === void 0 ? O`CASE ${n} END` : t && typeof t == "object" && (t.queryChunks || t._ || t.sql) ? O`CASE ${n} ELSE ${O.raw("(")}${t}${O.raw(")")} END` : O`CASE ${n} ELSE ${t} END`;
866
866
  }
867
867
  buildBooleanLiteral(e) {
868
- return e ? D`1` : D`0`;
868
+ return e ? O`1` : O`0`;
869
869
  }
870
870
  preprocessCalculatedTemplate(e) {
871
871
  return e.length > 1e3 ? e : e.replace(/(\{[^}]+\})\s*\/\s*/g, (e, t) => `${t.replace(/\{([^}]+)\}/, "CAST({$1} AS REAL)")} / `);
@@ -910,25 +910,25 @@ var V = class {
910
910
  return null;
911
911
  }
912
912
  buildWindowFunction(e, t, n, r, i) {
913
- let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
913
+ let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
914
914
  if (i?.frame) {
915
915
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
916
- s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
916
+ s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
917
917
  }
918
918
  let c = [];
919
919
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
920
- let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
920
+ let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
921
921
  switch (e) {
922
- case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
923
- case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
924
- case "rank": return D`RANK() ${l}`;
925
- case "denseRank": return D`DENSE_RANK() ${l}`;
926
- case "rowNumber": return D`ROW_NUMBER() ${l}`;
927
- case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
928
- case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
929
- case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
930
- case "movingAvg": return D`AVG(${t}) ${l}`;
931
- case "movingSum": return D`SUM(${t}) ${l}`;
922
+ case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
923
+ case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
924
+ case "rank": return O`RANK() ${l}`;
925
+ case "denseRank": return O`DENSE_RANK() ${l}`;
926
+ case "rowNumber": return O`ROW_NUMBER() ${l}`;
927
+ case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
928
+ case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
929
+ case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
930
+ case "movingAvg": return O`AVG(${t}) ${l}`;
931
+ case "movingSum": return O`SUM(${t}) ${l}`;
932
932
  default: throw Error(`Unsupported window function: ${e}`);
933
933
  }
934
934
  }
@@ -947,68 +947,68 @@ var V = class {
947
947
  let t = this.parseISODuration(e), n = [];
948
948
  t.years && n.push(`${t.years} years`), t.months && n.push(`${t.months} months`), t.days && n.push(`${t.days} days`), t.hours && n.push(`${t.hours} hours`), t.minutes && n.push(`${t.minutes} minutes`), t.seconds && n.push(`${t.seconds} seconds`);
949
949
  let r = n.join(" ") || "0 seconds";
950
- return D`INTERVAL '${D.raw(r)}'`;
950
+ return O`INTERVAL '${O.raw(r)}'`;
951
951
  }
952
952
  buildTimeDifferenceSeconds(e, t) {
953
- return D`(EPOCH(${e}) - EPOCH(${t}))`;
953
+ return O`(EPOCH(${e}) - EPOCH(${t}))`;
954
954
  }
955
955
  buildDateAddInterval(e, t) {
956
- return D`(${e} + ${this.buildIntervalFromISO(t)})`;
956
+ return O`(${e} + ${this.buildIntervalFromISO(t)})`;
957
957
  }
958
958
  buildConditionalAggregation(e, t, n) {
959
959
  let r = e.toUpperCase();
960
- return e === "count" && !t ? D`COUNT(*) FILTER (WHERE ${n})` : D`${D.raw(r)}(${t}) FILTER (WHERE ${n})`;
960
+ return e === "count" && !t ? O`COUNT(*) FILTER (WHERE ${n})` : O`${O.raw(r)}(${t}) FILTER (WHERE ${n})`;
961
961
  }
962
962
  buildDateDiffPeriods(e, t, n) {
963
- return D`DATE_DIFF('${D.raw(n)}', ${e}::timestamp, ${t}::timestamp)`;
963
+ return O`DATE_DIFF('${O.raw(n)}', ${e}::timestamp, ${t}::timestamp)`;
964
964
  }
965
965
  buildPeriodSeriesSubquery(e) {
966
- return D`(SELECT UNNEST(generate_series(0, ${e})) as period_number) p`;
966
+ return O`(SELECT UNNEST(generate_series(0, ${e})) as period_number) p`;
967
967
  }
968
968
  buildTimeDimension(e, t) {
969
969
  switch (e) {
970
- case "year": return D`DATE_TRUNC('year', ${t}::timestamp)`;
971
- case "quarter": return D`DATE_TRUNC('quarter', ${t}::timestamp)`;
972
- case "month": return D`DATE_TRUNC('month', ${t}::timestamp)`;
973
- case "week": return D`DATE_TRUNC('week', ${t}::timestamp)`;
974
- case "day": return D`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
975
- case "hour": return D`DATE_TRUNC('hour', ${t}::timestamp)`;
976
- case "minute": return D`DATE_TRUNC('minute', ${t}::timestamp)`;
977
- case "second": return D`DATE_TRUNC('second', ${t}::timestamp)`;
970
+ case "year": return O`DATE_TRUNC('year', ${t}::timestamp)`;
971
+ case "quarter": return O`DATE_TRUNC('quarter', ${t}::timestamp)`;
972
+ case "month": return O`DATE_TRUNC('month', ${t}::timestamp)`;
973
+ case "week": return O`DATE_TRUNC('week', ${t}::timestamp)`;
974
+ case "day": return O`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
975
+ case "hour": return O`DATE_TRUNC('hour', ${t}::timestamp)`;
976
+ case "minute": return O`DATE_TRUNC('minute', ${t}::timestamp)`;
977
+ case "second": return O`DATE_TRUNC('second', ${t}::timestamp)`;
978
978
  default: return t;
979
979
  }
980
980
  }
981
981
  buildStringCondition(e, t, n) {
982
982
  switch (t) {
983
- case "contains": return D`${e} ILIKE ${`%${n}%`}`;
984
- case "notContains": return D`${e} NOT ILIKE ${`%${n}%`}`;
985
- case "startsWith": return D`${e} ILIKE ${`${n}%`}`;
986
- case "endsWith": return D`${e} ILIKE ${`%${n}`}`;
987
- case "like": return D`${e} LIKE ${n}`;
988
- case "notLike": return D`${e} NOT LIKE ${n}`;
989
- case "ilike": return D`${e} ILIKE ${n}`;
990
- case "regex": return D`regexp_matches(${e}, ${n})`;
991
- case "notRegex": return D`NOT regexp_matches(${e}, ${n})`;
983
+ case "contains": return O`${e} ILIKE ${`%${n}%`}`;
984
+ case "notContains": return O`${e} NOT ILIKE ${`%${n}%`}`;
985
+ case "startsWith": return O`${e} ILIKE ${`${n}%`}`;
986
+ case "endsWith": return O`${e} ILIKE ${`%${n}`}`;
987
+ case "like": return O`${e} LIKE ${n}`;
988
+ case "notLike": return O`${e} NOT LIKE ${n}`;
989
+ case "ilike": return O`${e} ILIKE ${n}`;
990
+ case "regex": return O`regexp_matches(${e}, ${n})`;
991
+ case "notRegex": return O`NOT regexp_matches(${e}, ${n})`;
992
992
  default: throw Error(`Unsupported string operator: ${t}`);
993
993
  }
994
994
  }
995
995
  castToType(e, t) {
996
996
  switch (t) {
997
- case "timestamp": return D`${e}::timestamp`;
998
- case "decimal": return D`${e}::decimal`;
999
- case "integer": return D`${e}::integer`;
997
+ case "timestamp": return O`${e}::timestamp`;
998
+ case "decimal": return O`${e}::decimal`;
999
+ case "integer": return O`${e}::integer`;
1000
1000
  default: throw Error(`Unsupported cast type: ${t}`);
1001
1001
  }
1002
1002
  }
1003
1003
  buildAvg(e) {
1004
- return D`COALESCE(AVG(${e}), 0)`;
1004
+ return O`COALESCE(AVG(${e}), 0)`;
1005
1005
  }
1006
1006
  buildCaseWhen(e, t) {
1007
- let n = e.map((e) => D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
1008
- return t === void 0 ? D`CASE ${n} END` : D`CASE ${n} ELSE ${t} END`;
1007
+ let n = e.map((e) => O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
1008
+ return t === void 0 ? O`CASE ${n} END` : O`CASE ${n} ELSE ${t} END`;
1009
1009
  }
1010
1010
  buildBooleanLiteral(e) {
1011
- return e ? D`TRUE` : D`FALSE`;
1011
+ return e ? O`TRUE` : O`FALSE`;
1012
1012
  }
1013
1013
  convertFilterValue(e) {
1014
1014
  return e;
@@ -1037,35 +1037,35 @@ var V = class {
1037
1037
  }
1038
1038
  buildStddev(e, t = !1) {
1039
1039
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
1040
- return D`COALESCE(${D.raw(n)}(${e}), 0)`;
1040
+ return O`COALESCE(${O.raw(n)}(${e}), 0)`;
1041
1041
  }
1042
1042
  buildVariance(e, t = !1) {
1043
1043
  let n = t ? "VAR_SAMP" : "VAR_POP";
1044
- return D`COALESCE(${D.raw(n)}(${e}), 0)`;
1044
+ return O`COALESCE(${O.raw(n)}(${e}), 0)`;
1045
1045
  }
1046
1046
  buildPercentile(e, t) {
1047
- return D`QUANTILE_CONT(${e}, ${t / 100})`;
1047
+ return O`QUANTILE_CONT(${e}, ${t / 100})`;
1048
1048
  }
1049
1049
  buildWindowFunction(e, t, n, r, i) {
1050
- let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
1050
+ let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
1051
1051
  if (i?.frame) {
1052
1052
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
1053
- s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
1053
+ s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
1054
1054
  }
1055
1055
  let c = [];
1056
1056
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
1057
- let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
1057
+ let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
1058
1058
  switch (e) {
1059
- case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1060
- case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1061
- case "rank": return D`RANK() ${l}`;
1062
- case "denseRank": return D`DENSE_RANK() ${l}`;
1063
- case "rowNumber": return D`ROW_NUMBER() ${l}`;
1064
- case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
1065
- case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
1066
- case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
1067
- case "movingAvg": return D`AVG(${t}) ${l}`;
1068
- case "movingSum": return D`SUM(${t}) ${l}`;
1059
+ case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1060
+ case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1061
+ case "rank": return O`RANK() ${l}`;
1062
+ case "denseRank": return O`DENSE_RANK() ${l}`;
1063
+ case "rowNumber": return O`ROW_NUMBER() ${l}`;
1064
+ case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
1065
+ case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
1066
+ case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
1067
+ case "movingAvg": return O`AVG(${t}) ${l}`;
1068
+ case "movingSum": return O`SUM(${t}) ${l}`;
1069
1069
  default: throw Error(`Unsupported window function: ${e}`);
1070
1070
  }
1071
1071
  }
@@ -1078,71 +1078,71 @@ var V = class {
1078
1078
  }
1079
1079
  buildIntervalFromISO(e) {
1080
1080
  let t = this.parseISODuration(e), n = [];
1081
- if (t.years && n.push(`${t.years} YEAR`), t.months && n.push(`${t.months} MONTH`), t.days && n.push(`${t.days} DAY`), t.hours && n.push(`${t.hours} HOUR`), t.minutes && n.push(`${t.minutes} MINUTE`), t.seconds && n.push(`${t.seconds} SECOND`), n.length === 0) return D`INTERVAL 0 SECOND`;
1082
- if (n.length === 1) return D`INTERVAL ${D.raw(n[0])}`;
1081
+ if (t.years && n.push(`${t.years} YEAR`), t.months && n.push(`${t.months} MONTH`), t.days && n.push(`${t.days} DAY`), t.hours && n.push(`${t.hours} HOUR`), t.minutes && n.push(`${t.minutes} MINUTE`), t.seconds && n.push(`${t.seconds} SECOND`), n.length === 0) return O`INTERVAL 0 SECOND`;
1082
+ if (n.length === 1) return O`INTERVAL ${O.raw(n[0])}`;
1083
1083
  let r = n.map((e) => `INTERVAL ${e}`);
1084
- return D`(${D.raw(r.join(" + "))})`;
1084
+ return O`(${O.raw(r.join(" + "))})`;
1085
1085
  }
1086
1086
  buildTimeDifferenceSeconds(e, t) {
1087
- return D`EXTRACT(EPOCH FROM TIMESTAMP_DIFF(${e}, ${t}))`;
1087
+ return O`EXTRACT(EPOCH FROM TIMESTAMP_DIFF(${e}, ${t}))`;
1088
1088
  }
1089
1089
  buildDateAddInterval(e, t) {
1090
- return D`(${e} + ${this.buildIntervalFromISO(t)})`;
1090
+ return O`(${e} + ${this.buildIntervalFromISO(t)})`;
1091
1091
  }
1092
1092
  buildConditionalAggregation(e, t, n) {
1093
1093
  let r = e.toUpperCase();
1094
- return e === "count" && !t ? D`${D.raw(r)}(CASE WHEN ${n} THEN 1 END)` : D`${D.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
1094
+ return e === "count" && !t ? O`${O.raw(r)}(CASE WHEN ${n} THEN 1 END)` : O`${O.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
1095
1095
  }
1096
1096
  buildDateDiffPeriods(e, t, n) {
1097
- return D`DATE_DIFF('${D.raw(n)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
1097
+ return O`DATE_DIFF('${O.raw(n)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
1098
1098
  }
1099
1099
  buildPeriodSeriesSubquery(e) {
1100
- return D`(SELECT number as period_number FROM numbers(${e + 1})) p`;
1100
+ return O`(SELECT number as period_number FROM numbers(${e + 1})) p`;
1101
1101
  }
1102
1102
  buildTimeDimension(e, t) {
1103
1103
  switch (e) {
1104
- case "year": return D`DATE_TRUNC(YEAR, ${t}::TIMESTAMP)`;
1105
- case "quarter": return D`DATE_TRUNC(QUARTER, ${t}::TIMESTAMP)`;
1106
- case "month": return D`DATE_TRUNC(MONTH, ${t}::TIMESTAMP)`;
1107
- case "week": return D`DATE_TRUNC(WEEK, ${t}::TIMESTAMP)`;
1108
- case "day": return D`DATE_TRUNC(DAY, ${t}::TIMESTAMP)::TIMESTAMP`;
1109
- case "hour": return D`DATE_TRUNC(HOUR, ${t}::TIMESTAMP)`;
1110
- case "minute": return D`DATE_TRUNC(MINUTE, ${t}::TIMESTAMP)`;
1111
- case "second": return D`DATE_TRUNC(SECOND, ${t}::TIMESTAMP)`;
1104
+ case "year": return O`DATE_TRUNC(YEAR, ${t}::TIMESTAMP)`;
1105
+ case "quarter": return O`DATE_TRUNC(QUARTER, ${t}::TIMESTAMP)`;
1106
+ case "month": return O`DATE_TRUNC(MONTH, ${t}::TIMESTAMP)`;
1107
+ case "week": return O`DATE_TRUNC(WEEK, ${t}::TIMESTAMP)`;
1108
+ case "day": return O`DATE_TRUNC(DAY, ${t}::TIMESTAMP)::TIMESTAMP`;
1109
+ case "hour": return O`DATE_TRUNC(HOUR, ${t}::TIMESTAMP)`;
1110
+ case "minute": return O`DATE_TRUNC(MINUTE, ${t}::TIMESTAMP)`;
1111
+ case "second": return O`DATE_TRUNC(SECOND, ${t}::TIMESTAMP)`;
1112
1112
  default: return t;
1113
1113
  }
1114
1114
  }
1115
1115
  buildStringCondition(e, t, n) {
1116
1116
  switch (t) {
1117
- case "contains": return D`LOWER(${e}) LIKE LOWER(${`%${n}%`})`;
1118
- case "notContains": return D`LOWER(${e}) NOT LIKE LOWER(${`%${n}%`})`;
1119
- case "startsWith": return D`LOWER(${e}) LIKE LOWER(${`${n}%`})`;
1120
- case "endsWith": return D`LOWER(${e}) LIKE LOWER(${`%${n}`})`;
1121
- case "like": return D`${e} LIKE ${n}`;
1122
- case "notLike": return D`${e} NOT LIKE ${n}`;
1123
- case "ilike": return D`LOWER(${e}) LIKE LOWER(${n})`;
1124
- case "regex": return D`${e} REGEXP ${n}`;
1125
- case "notRegex": return D`NOT (${e} REGEXP ${n})`;
1117
+ case "contains": return O`LOWER(${e}) LIKE LOWER(${`%${n}%`})`;
1118
+ case "notContains": return O`LOWER(${e}) NOT LIKE LOWER(${`%${n}%`})`;
1119
+ case "startsWith": return O`LOWER(${e}) LIKE LOWER(${`${n}%`})`;
1120
+ case "endsWith": return O`LOWER(${e}) LIKE LOWER(${`%${n}`})`;
1121
+ case "like": return O`${e} LIKE ${n}`;
1122
+ case "notLike": return O`${e} NOT LIKE ${n}`;
1123
+ case "ilike": return O`LOWER(${e}) LIKE LOWER(${n})`;
1124
+ case "regex": return O`${e} REGEXP ${n}`;
1125
+ case "notRegex": return O`NOT (${e} REGEXP ${n})`;
1126
1126
  default: throw Error(`Unsupported string operator: ${t}`);
1127
1127
  }
1128
1128
  }
1129
1129
  castToType(e, t) {
1130
1130
  switch (t) {
1131
- case "timestamp": return D`${e}::TIMESTAMP`;
1132
- case "decimal": return D`${e}::DECIMAL`;
1133
- case "integer": return D`${e}::INTEGER`;
1131
+ case "timestamp": return O`${e}::TIMESTAMP`;
1132
+ case "decimal": return O`${e}::DECIMAL`;
1133
+ case "integer": return O`${e}::INTEGER`;
1134
1134
  default: throw Error(`Unsupported cast type: ${t}`);
1135
1135
  }
1136
1136
  }
1137
1137
  buildAvg(e) {
1138
- return D`COALESCE(AVG(${e}), 0)`;
1138
+ return O`COALESCE(AVG(${e}), 0)`;
1139
1139
  }
1140
1140
  buildCaseWhen(e, t) {
1141
- let n = e.map((e) => D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
1142
- return t === void 0 ? D`CASE ${n} END` : D`CASE ${n} ELSE ${t} END`;
1141
+ let n = e.map((e) => O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
1142
+ return t === void 0 ? O`CASE ${n} END` : O`CASE ${n} ELSE ${t} END`;
1143
1143
  }
1144
1144
  buildBooleanLiteral(e) {
1145
- return e ? D`TRUE` : D`FALSE`;
1145
+ return e ? O`TRUE` : O`FALSE`;
1146
1146
  }
1147
1147
  convertFilterValue(e) {
1148
1148
  return e;
@@ -1171,35 +1171,35 @@ var V = class {
1171
1171
  }
1172
1172
  buildStddev(e, t = !1) {
1173
1173
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
1174
- return D`COALESCE(${D.raw(n)}(${e}), 0)`;
1174
+ return O`COALESCE(${O.raw(n)}(${e}), 0)`;
1175
1175
  }
1176
1176
  buildVariance(e, t = !1) {
1177
1177
  let n = t ? "COVAR_SAMP" : "COVAR_POP";
1178
- return D`COALESCE(${D.raw(n)}(${e}, ${e}), 0)`;
1178
+ return O`COALESCE(${O.raw(n)}(${e}, ${e}), 0)`;
1179
1179
  }
1180
1180
  buildPercentile(e, t) {
1181
1181
  throw Error("Percentile functions are not yet supported for Databend");
1182
1182
  }
1183
1183
  buildWindowFunction(e, t, n, r, i) {
1184
- let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
1184
+ let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
1185
1185
  if (i?.frame) {
1186
1186
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
1187
- s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
1187
+ s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
1188
1188
  }
1189
1189
  let c = [];
1190
1190
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
1191
- let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
1191
+ let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
1192
1192
  switch (e) {
1193
- case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1194
- case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1195
- case "rank": return D`RANK() ${l}`;
1196
- case "denseRank": return D`DENSE_RANK() ${l}`;
1197
- case "rowNumber": return D`ROW_NUMBER() ${l}`;
1198
- case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
1199
- case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
1200
- case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
1201
- case "movingAvg": return D`AVG(${t}) ${l}`;
1202
- case "movingSum": return D`SUM(${t}) ${l}`;
1193
+ case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1194
+ case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1195
+ case "rank": return O`RANK() ${l}`;
1196
+ case "denseRank": return O`DENSE_RANK() ${l}`;
1197
+ case "rowNumber": return O`ROW_NUMBER() ${l}`;
1198
+ case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
1199
+ case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
1200
+ case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
1201
+ case "movingAvg": return O`AVG(${t}) ${l}`;
1202
+ case "movingSum": return O`SUM(${t}) ${l}`;
1203
1203
  default: throw Error(`Unsupported window function: ${e}`);
1204
1204
  }
1205
1205
  }
@@ -1211,70 +1211,70 @@ var V = class {
1211
1211
  return !0;
1212
1212
  }
1213
1213
  buildIntervalFromISO(e) {
1214
- return D`${this.durationToSeconds(e)}`;
1214
+ return O`${this.durationToSeconds(e)}`;
1215
1215
  }
1216
1216
  buildTimeDifferenceSeconds(e, t) {
1217
- return D`DATEDIFF('SECOND', ${t}, ${e})`;
1217
+ return O`DATEDIFF('SECOND', ${t}, ${e})`;
1218
1218
  }
1219
1219
  buildDateAddInterval(e, t) {
1220
1220
  let n = this.parseISODuration(t), r = e;
1221
- return n.years && (r = D`DATEADD('YEAR', ${n.years}, ${r})`), n.months && (r = D`DATEADD('MONTH', ${n.months}, ${r})`), n.days && (r = D`DATEADD('DAY', ${n.days}, ${r})`), n.hours && (r = D`DATEADD('HOUR', ${n.hours}, ${r})`), n.minutes && (r = D`DATEADD('MINUTE', ${n.minutes}, ${r})`), n.seconds && (r = D`DATEADD('SECOND', ${n.seconds}, ${r})`), r;
1221
+ return n.years && (r = O`DATEADD('YEAR', ${n.years}, ${r})`), n.months && (r = O`DATEADD('MONTH', ${n.months}, ${r})`), n.days && (r = O`DATEADD('DAY', ${n.days}, ${r})`), n.hours && (r = O`DATEADD('HOUR', ${n.hours}, ${r})`), n.minutes && (r = O`DATEADD('MINUTE', ${n.minutes}, ${r})`), n.seconds && (r = O`DATEADD('SECOND', ${n.seconds}, ${r})`), r;
1222
1222
  }
1223
1223
  buildConditionalAggregation(e, t, n) {
1224
1224
  let r = e.toUpperCase();
1225
- return e === "count" && !t ? D`${D.raw(r)}(CASE WHEN ${n} THEN 1 END)` : D`${D.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
1225
+ return e === "count" && !t ? O`${O.raw(r)}(CASE WHEN ${n} THEN 1 END)` : O`${O.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
1226
1226
  }
1227
1227
  buildDateDiffPeriods(e, t, n) {
1228
1228
  let r = n.toUpperCase();
1229
- return D`DATEDIFF('${D.raw(r)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
1229
+ return O`DATEDIFF('${O.raw(r)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
1230
1230
  }
1231
1231
  buildPeriodSeriesSubquery(e) {
1232
- return D`(SELECT ROW_NUMBER() OVER (ORDER BY 1) - 1 AS period_number FROM TABLE(GENERATOR(ROWCOUNT => ${e + 1}))) p`;
1232
+ return O`(SELECT ROW_NUMBER() OVER (ORDER BY 1) - 1 AS period_number FROM TABLE(GENERATOR(ROWCOUNT => ${e + 1}))) p`;
1233
1233
  }
1234
1234
  buildTimeDimension(e, t) {
1235
1235
  switch (e) {
1236
- case "year": return D`DATE_TRUNC('YEAR', ${t}::TIMESTAMP)`;
1237
- case "quarter": return D`DATE_TRUNC('QUARTER', ${t}::TIMESTAMP)`;
1238
- case "month": return D`DATE_TRUNC('MONTH', ${t}::TIMESTAMP)`;
1239
- case "week": return D`DATE_TRUNC('WEEK', ${t}::TIMESTAMP)`;
1240
- case "day": return D`DATE_TRUNC('DAY', ${t}::TIMESTAMP)::TIMESTAMP`;
1241
- case "hour": return D`DATE_TRUNC('HOUR', ${t}::TIMESTAMP)`;
1242
- case "minute": return D`DATE_TRUNC('MINUTE', ${t}::TIMESTAMP)`;
1243
- case "second": return D`DATE_TRUNC('SECOND', ${t}::TIMESTAMP)`;
1236
+ case "year": return O`DATE_TRUNC('YEAR', ${t}::TIMESTAMP)`;
1237
+ case "quarter": return O`DATE_TRUNC('QUARTER', ${t}::TIMESTAMP)`;
1238
+ case "month": return O`DATE_TRUNC('MONTH', ${t}::TIMESTAMP)`;
1239
+ case "week": return O`DATE_TRUNC('WEEK', ${t}::TIMESTAMP)`;
1240
+ case "day": return O`DATE_TRUNC('DAY', ${t}::TIMESTAMP)::TIMESTAMP`;
1241
+ case "hour": return O`DATE_TRUNC('HOUR', ${t}::TIMESTAMP)`;
1242
+ case "minute": return O`DATE_TRUNC('MINUTE', ${t}::TIMESTAMP)`;
1243
+ case "second": return O`DATE_TRUNC('SECOND', ${t}::TIMESTAMP)`;
1244
1244
  default: return t;
1245
1245
  }
1246
1246
  }
1247
1247
  buildStringCondition(e, t, n) {
1248
1248
  switch (t) {
1249
- case "contains": return D`${e} ILIKE ${`%${n}%`}`;
1250
- case "notContains": return D`${e} NOT ILIKE ${`%${n}%`}`;
1251
- case "startsWith": return D`${e} ILIKE ${`${n}%`}`;
1252
- case "endsWith": return D`${e} ILIKE ${`%${n}`}`;
1253
- case "like": return D`${e} LIKE ${n}`;
1254
- case "notLike": return D`${e} NOT LIKE ${n}`;
1255
- case "ilike": return D`${e} ILIKE ${n}`;
1256
- case "regex": return D`REGEXP_LIKE(${e}, ${n})`;
1257
- case "notRegex": return D`NOT REGEXP_LIKE(${e}, ${n})`;
1249
+ case "contains": return O`${e} ILIKE ${`%${n}%`}`;
1250
+ case "notContains": return O`${e} NOT ILIKE ${`%${n}%`}`;
1251
+ case "startsWith": return O`${e} ILIKE ${`${n}%`}`;
1252
+ case "endsWith": return O`${e} ILIKE ${`%${n}`}`;
1253
+ case "like": return O`${e} LIKE ${n}`;
1254
+ case "notLike": return O`${e} NOT LIKE ${n}`;
1255
+ case "ilike": return O`${e} ILIKE ${n}`;
1256
+ case "regex": return O`REGEXP_LIKE(${e}, ${n})`;
1257
+ case "notRegex": return O`NOT REGEXP_LIKE(${e}, ${n})`;
1258
1258
  default: throw Error(`Unsupported string operator: ${t}`);
1259
1259
  }
1260
1260
  }
1261
1261
  castToType(e, t) {
1262
1262
  switch (t) {
1263
- case "timestamp": return D`${e}::TIMESTAMP`;
1264
- case "decimal": return D`${e}::DECIMAL`;
1265
- case "integer": return D`${e}::INTEGER`;
1263
+ case "timestamp": return O`${e}::TIMESTAMP`;
1264
+ case "decimal": return O`${e}::DECIMAL`;
1265
+ case "integer": return O`${e}::INTEGER`;
1266
1266
  default: throw Error(`Unsupported cast type: ${t}`);
1267
1267
  }
1268
1268
  }
1269
1269
  buildAvg(e) {
1270
- return D`COALESCE(AVG(${e}), 0)`;
1270
+ return O`COALESCE(AVG(${e}), 0)`;
1271
1271
  }
1272
1272
  buildCaseWhen(e, t) {
1273
- let n = e.map((e) => D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
1274
- return t === void 0 ? D`CASE ${n} END` : D`CASE ${n} ELSE ${t} END`;
1273
+ let n = e.map((e) => O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
1274
+ return t === void 0 ? O`CASE ${n} END` : O`CASE ${n} ELSE ${t} END`;
1275
1275
  }
1276
1276
  buildBooleanLiteral(e) {
1277
- return e ? D`TRUE` : D`FALSE`;
1277
+ return e ? O`TRUE` : O`FALSE`;
1278
1278
  }
1279
1279
  convertFilterValue(e) {
1280
1280
  return e;
@@ -1303,36 +1303,36 @@ var V = class {
1303
1303
  }
1304
1304
  buildStddev(e, t = !1) {
1305
1305
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
1306
- return D`COALESCE(${D.raw(n)}(${e}), 0)`;
1306
+ return O`COALESCE(${O.raw(n)}(${e}), 0)`;
1307
1307
  }
1308
1308
  buildVariance(e, t = !1) {
1309
1309
  let n = t ? "VAR_SAMP" : "VAR_POP";
1310
- return D`COALESCE(${D.raw(n)}(${e}), 0)`;
1310
+ return O`COALESCE(${O.raw(n)}(${e}), 0)`;
1311
1311
  }
1312
1312
  buildPercentile(e, t) {
1313
1313
  let n = (t / 100).toString();
1314
- return D`PERCENTILE_CONT(${D.raw(n)}) WITHIN GROUP (ORDER BY ${e})`;
1314
+ return O`PERCENTILE_CONT(${O.raw(n)}) WITHIN GROUP (ORDER BY ${e})`;
1315
1315
  }
1316
1316
  buildWindowFunction(e, t, n, r, i) {
1317
- let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
1317
+ let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
1318
1318
  if (i?.frame) {
1319
1319
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
1320
- s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
1320
+ s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
1321
1321
  }
1322
1322
  let c = [];
1323
1323
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
1324
- let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
1324
+ let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
1325
1325
  switch (e) {
1326
- case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1327
- case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1328
- case "rank": return D`RANK() ${l}`;
1329
- case "denseRank": return D`DENSE_RANK() ${l}`;
1330
- case "rowNumber": return D`ROW_NUMBER() ${l}`;
1331
- case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
1332
- case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
1333
- case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
1334
- case "movingAvg": return D`AVG(${t}) ${l}`;
1335
- case "movingSum": return D`SUM(${t}) ${l}`;
1326
+ case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1327
+ case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1328
+ case "rank": return O`RANK() ${l}`;
1329
+ case "denseRank": return O`DENSE_RANK() ${l}`;
1330
+ case "rowNumber": return O`ROW_NUMBER() ${l}`;
1331
+ case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
1332
+ case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
1333
+ case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
1334
+ case "movingAvg": return O`AVG(${t}) ${l}`;
1335
+ case "movingSum": return O`SUM(${t}) ${l}`;
1336
1336
  default: throw Error(`Unsupported window function: ${e}`);
1337
1337
  }
1338
1338
  }
@@ -1422,15 +1422,18 @@ function Ce(e) {
1422
1422
  }
1423
1423
  //#endregion
1424
1424
  //#region src/server/executors/postgres-executor.ts
1425
- var we = class extends H {
1425
+ function we(e) {
1426
+ return Array.isArray(e) ? e : e && typeof e == "object" && "rows" in e && Array.isArray(e.rows) ? e.rows : [];
1427
+ }
1428
+ var Te = class extends H {
1426
1429
  async execute(e, t) {
1427
1430
  if (e && typeof e == "object" && typeof e.execute == "function") {
1428
1431
  let n = await e.execute();
1429
1432
  return Array.isArray(n) ? n.map((e) => this.convertNumericFields(e, t)) : n;
1430
1433
  }
1431
1434
  if (!this.db.execute) throw Error("PostgreSQL database instance must have an execute method");
1432
- let n = await this.db.execute(e);
1433
- return Array.isArray(n) ? n.map((e) => this.convertNumericFields(e, t)) : n;
1435
+ let n = await this.db.execute(e), r = we(n);
1436
+ return r.length > 0 ? r.map((e) => this.convertNumericFields(e, t)) : n;
1434
1437
  }
1435
1438
  convertNumericFields(e, t) {
1436
1439
  if (!e || typeof e != "object") return e;
@@ -1464,15 +1467,13 @@ var we = class extends H {
1464
1467
  async explainQuery(e, t, n) {
1465
1468
  let r = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
1466
1469
  if (!this.db.execute) throw Error("PostgreSQL database instance must have an execute method");
1467
- let i = await this.db.execute(D`${D.raw(r)} ${D.raw(e.replace(/\$(\d+)/g, (e, n) => {
1470
+ let i = await this.db.execute(O`${O.raw(r)} ${O.raw(e.replace(/\$(\d+)/g, (e, n) => {
1468
1471
  let r = t[parseInt(n, 10) - 1];
1469
1472
  return r === null ? "NULL" : typeof r == "number" ? String(r) : typeof r == "boolean" ? r ? "TRUE" : "FALSE" : r instanceof Date ? `'${r.toISOString()}'` : `'${String(r).replace(/'/g, "''")}'`;
1470
1473
  }))}`), a = [];
1471
- if (Array.isArray(i)) {
1472
- for (let e of i) if (e && typeof e == "object") {
1473
- let t = e["QUERY PLAN"] || e["query plan"] || e.queryplan;
1474
- typeof t == "string" && a.push(t);
1475
- }
1474
+ for (let e of we(i)) if (e && typeof e == "object") {
1475
+ let t = e["QUERY PLAN"] || e["query plan"] || e.queryplan;
1476
+ typeof t == "string" && a.push(t);
1476
1477
  }
1477
1478
  return Se(a, {
1478
1479
  sql: e,
@@ -1483,7 +1484,7 @@ var we = class extends H {
1483
1484
  if (!e || e.length === 0) return [];
1484
1485
  if (!this.db.execute) throw Error("PostgreSQL database instance must have an execute method");
1485
1486
  try {
1486
- let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(D`
1487
+ let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = we(await this.db.execute(O`
1487
1488
  SELECT
1488
1489
  t.relname as table_name,
1489
1490
  i.relname as index_name,
@@ -1497,28 +1498,28 @@ var we = class extends H {
1497
1498
  JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS k(attnum, n) ON true
1498
1499
  JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum
1499
1500
  WHERE n.nspname = 'public'
1500
- AND t.relname IN (${D.raw(t)})
1501
+ AND t.relname IN (${O.raw(t)})
1501
1502
  GROUP BY t.relname, i.relname, ix.indisunique, ix.indisprimary
1502
1503
  ORDER BY t.relname, i.relname
1503
- `);
1504
- return Array.isArray(n) ? n.map((e) => ({
1504
+ `));
1505
+ return n.length === 0 ? [] : n.map((e) => ({
1505
1506
  table_name: e.table_name,
1506
1507
  index_name: e.index_name,
1507
1508
  columns: e.columns.split(","),
1508
1509
  is_unique: e.is_unique,
1509
1510
  is_primary: e.is_primary
1510
- })) : [];
1511
+ }));
1511
1512
  } catch (e) {
1512
1513
  return console.warn("Failed to get table indexes:", e), [];
1513
1514
  }
1514
1515
  }
1515
1516
  };
1516
- function Te(e, t) {
1517
- return new we(e, t, "postgres");
1517
+ function Ee(e, t) {
1518
+ return new Te(e, t, "postgres");
1518
1519
  }
1519
1520
  //#endregion
1520
1521
  //#region src/server/explain/mysql-parser.ts
1521
- function Ee(e, t) {
1522
+ function De(e, t) {
1522
1523
  let n = t?.toLowerCase() || "";
1523
1524
  switch (e.toLowerCase()) {
1524
1525
  case "all": return "Seq Scan";
@@ -1532,10 +1533,10 @@ function Ee(e, t) {
1532
1533
  default: return `MySQL ${e}`;
1533
1534
  }
1534
1535
  }
1535
- function De(e, t) {
1536
+ function Oe(e, t) {
1536
1537
  let n = [], r = [], i = !1, a = 0;
1537
1538
  for (let t of e) {
1538
- let e = Ee(t.type, t.Extra);
1539
+ let e = De(t.type, t.Extra);
1539
1540
  t.type.toLowerCase() === "all" && (i = !0), t.key && r.push(t.key);
1540
1541
  let o = {
1541
1542
  type: e,
@@ -1566,7 +1567,7 @@ function De(e, t) {
1566
1567
  }
1567
1568
  //#endregion
1568
1569
  //#region src/server/executors/mysql-executor.ts
1569
- var Oe = class extends H {
1570
+ var ke = class extends H {
1570
1571
  async execute(e, t) {
1571
1572
  if (e && typeof e == "object" && typeof e.execute == "function") {
1572
1573
  let n = await e.execute();
@@ -1601,7 +1602,7 @@ var Oe = class extends H {
1601
1602
  });
1602
1603
  let a = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
1603
1604
  if (!this.db.execute) throw Error("MySQL database instance must have an execute method");
1604
- let o = await this.db.execute(D.raw(`${a} ${r}`)), s = [];
1605
+ let o = await this.db.execute(O.raw(`${a} ${r}`)), s = [];
1605
1606
  if (Array.isArray(o)) for (let e of o) e && typeof e == "object" && s.push({
1606
1607
  id: e.id || 1,
1607
1608
  select_type: e.select_type || "SIMPLE",
@@ -1616,7 +1617,7 @@ var Oe = class extends H {
1616
1617
  filtered: Number(e.filtered) || 100,
1617
1618
  Extra: e.Extra || null
1618
1619
  });
1619
- return De(s, {
1620
+ return Oe(s, {
1620
1621
  sql: e,
1621
1622
  params: t
1622
1623
  });
@@ -1625,7 +1626,7 @@ var Oe = class extends H {
1625
1626
  if (!e || e.length === 0) return [];
1626
1627
  if (!this.db.execute) throw Error("MySQL database instance must have an execute method");
1627
1628
  try {
1628
- let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(D`
1629
+ let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(O`
1629
1630
  SELECT
1630
1631
  TABLE_NAME as table_name,
1631
1632
  INDEX_NAME as index_name,
@@ -1634,7 +1635,7 @@ var Oe = class extends H {
1634
1635
  CASE WHEN INDEX_NAME = 'PRIMARY' THEN TRUE ELSE FALSE END as is_primary
1635
1636
  FROM INFORMATION_SCHEMA.STATISTICS
1636
1637
  WHERE TABLE_SCHEMA = DATABASE()
1637
- AND LOWER(TABLE_NAME) IN (${D.raw(t)})
1638
+ AND LOWER(TABLE_NAME) IN (${O.raw(t)})
1638
1639
  GROUP BY TABLE_NAME, INDEX_NAME, NON_UNIQUE
1639
1640
  ORDER BY TABLE_NAME, INDEX_NAME
1640
1641
  `);
@@ -1650,12 +1651,12 @@ var Oe = class extends H {
1650
1651
  }
1651
1652
  }
1652
1653
  };
1653
- function ke(e, t) {
1654
- return new Oe(e, t, "mysql");
1654
+ function Ae(e, t) {
1655
+ return new ke(e, t, "mysql");
1655
1656
  }
1656
1657
  //#endregion
1657
1658
  //#region src/server/explain/sqlite-parser.ts
1658
- function Ae(e) {
1659
+ function je(e) {
1659
1660
  let t = e.toLowerCase(), n = e.match(/^SCAN\s+(\S+)/i);
1660
1661
  if (n) return {
1661
1662
  type: "Seq Scan",
@@ -1680,10 +1681,10 @@ function Ae(e) {
1680
1681
  table: a[1]
1681
1682
  } : t.includes("temp b-tree") ? t.includes("order by") ? { type: "Sort" } : t.includes("group by") ? { type: "Group" } : t.includes("distinct") ? { type: "Distinct" } : { type: "Temp B-Tree" } : t.includes("compound") ? { type: "Compound Query" } : t.includes("subquery") ? { type: "Subquery" } : t.includes("co-routine") ? { type: "Coroutine" } : { type: e };
1682
1683
  }
1683
- function je(e, t) {
1684
+ function Me(e, t) {
1684
1685
  let n = [], r = [], i = !1, a = /* @__PURE__ */ new Map();
1685
1686
  for (let t of e) {
1686
- let e = Ae(t.detail);
1687
+ let e = je(t.detail);
1687
1688
  e.type === "Seq Scan" && (i = !0), e.index && r.push(e.index);
1688
1689
  let o = {
1689
1690
  type: e.type,
@@ -1714,7 +1715,7 @@ function je(e, t) {
1714
1715
  }
1715
1716
  //#endregion
1716
1717
  //#region src/server/executors/sqlite-executor.ts
1717
- var Me = class extends H {
1718
+ var Ne = class extends H {
1718
1719
  async execute(e, t) {
1719
1720
  if (e && typeof e == "object" && typeof e.execute == "function") {
1720
1721
  let n = await e.execute();
@@ -1754,7 +1755,7 @@ var Me = class extends H {
1754
1755
  return e === null ? "NULL" : typeof e == "number" ? String(e) : typeof e == "boolean" ? e ? "1" : "0" : e instanceof Date ? `'${e.toISOString()}'` : `'${String(e).replace(/'/g, "''")}'`;
1755
1756
  });
1756
1757
  let a = `EXPLAIN QUERY PLAN ${r}`, o;
1757
- if (this.db.all) o = this.db.all(D.raw(a));
1758
+ if (this.db.all) o = this.db.all(O.raw(a));
1758
1759
  else throw Error("SQLite database instance must have an all() method for EXPLAIN");
1759
1760
  let s = [];
1760
1761
  if (Array.isArray(o)) for (let e of o) e && typeof e == "object" && s.push({
@@ -1763,7 +1764,7 @@ var Me = class extends H {
1763
1764
  notused: Number(e.notused) || 0,
1764
1765
  detail: String(e.detail || "")
1765
1766
  });
1766
- return je(s, {
1767
+ return Me(s, {
1767
1768
  sql: e,
1768
1769
  params: t
1769
1770
  });
@@ -1774,9 +1775,9 @@ var Me = class extends H {
1774
1775
  try {
1775
1776
  let t = [];
1776
1777
  for (let n of e) {
1777
- let e = this.db.all(D.raw(`SELECT name, "unique", origin FROM pragma_index_list('${n.toLowerCase()}')`));
1778
+ let e = this.db.all(O.raw(`SELECT name, "unique", origin FROM pragma_index_list('${n.toLowerCase()}')`));
1778
1779
  if (Array.isArray(e)) for (let r of e) {
1779
- let e = r.name, i = !!r.unique, a = r.origin, o = this.db.all(D.raw(`SELECT name FROM pragma_index_info('${e}') ORDER BY seqno`)), s = [];
1780
+ let e = r.name, i = !!r.unique, a = r.origin, o = this.db.all(O.raw(`SELECT name FROM pragma_index_info('${e}') ORDER BY seqno`)), s = [];
1780
1781
  if (Array.isArray(o)) for (let e of o) {
1781
1782
  let t = e.name;
1782
1783
  typeof t == "string" && s.push(t);
@@ -1796,29 +1797,29 @@ var Me = class extends H {
1796
1797
  }
1797
1798
  }
1798
1799
  };
1799
- function Ne(e, t) {
1800
- return new Me(e, t, "sqlite");
1800
+ function Pe(e, t) {
1801
+ return new Ne(e, t, "sqlite");
1801
1802
  }
1802
1803
  //#endregion
1803
1804
  //#region src/server/executors/singlestore-executor.ts
1804
- var Pe = class extends Oe {
1805
+ var Fe = class extends ke {
1805
1806
  getEngineType() {
1806
1807
  return "singlestore";
1807
1808
  }
1808
1809
  };
1809
- function Fe(e, t) {
1810
- return new Pe(e, t);
1810
+ function Ie(e, t) {
1811
+ return new Fe(e, t);
1811
1812
  }
1812
1813
  //#endregion
1813
1814
  //#region src/server/explain/duckdb-parser.ts
1814
- function Ie(e, t) {
1815
+ function Le(e, t) {
1815
1816
  let n = [], r = [], i = !1, a, o = [];
1816
1817
  for (let t of e) {
1817
1818
  if (/^[┌├└│─┐┤┘]+$/.test(t.trim()) || /EXPLANATION|QUERY PLAN/i.test(t)) continue;
1818
- let e = Re(t);
1819
+ let e = ze(t);
1819
1820
  if (e) {
1820
1821
  (e.type.includes("SEQ_SCAN") || e.type.includes("TABLE_SCAN")) && (i = !0), e.type.includes("INDEX_SCAN") && e.index && r.push(e.index), n.length === 0 && e.estimatedCost !== void 0 && (a = e.estimatedCost);
1821
- let s = Le(t);
1822
+ let s = Re(t);
1822
1823
  for (; o.length > 0 && o[o.length - 1].indent >= s;) o.pop();
1823
1824
  if (o.length === 0) n.push(e);
1824
1825
  else {
@@ -1845,13 +1846,13 @@ function Ie(e, t) {
1845
1846
  sql: t
1846
1847
  };
1847
1848
  }
1848
- function Le(e) {
1849
+ function Re(e) {
1849
1850
  let t = 0;
1850
1851
  for (let n of e) if (n === " " || n === "│" || n === "├" || n === "└" || n === "─") t++;
1851
1852
  else break;
1852
1853
  return t;
1853
1854
  }
1854
- function Re(e) {
1855
+ function ze(e) {
1855
1856
  let t = e.replace(/[┌├└│─┐┤┘]/g, "").replace(/^\s*/, "").trim();
1856
1857
  if (!t || t.match(/^\(cost=([\d.]+)\s+rows=(\d+)\)$/i)) return null;
1857
1858
  let n = t.match(/^([A-Z_]+)(?:\s+(\S+))?(?:\s+on\s+(\S+))?(?:\s+\(cost=([\d.]+)\s+rows=(\d+)\))?/i);
@@ -1877,7 +1878,7 @@ function Re(e) {
1877
1878
  }
1878
1879
  //#endregion
1879
1880
  //#region src/server/executors/duckdb-executor.ts
1880
- var ze = class extends H {
1881
+ var Be = class extends H {
1881
1882
  async execute(e, t) {
1882
1883
  if (e && typeof e == "object" && typeof e.execute == "function") try {
1883
1884
  let n = await e.execute();
@@ -1961,7 +1962,7 @@ var ze = class extends H {
1961
1962
  async explainQuery(e, t, n) {
1962
1963
  let r = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
1963
1964
  if (!this.db.execute) throw Error("DuckDB database instance must have an execute method");
1964
- let i = await this.db.execute(D`${D.raw(r)} ${D.raw(e.replace(/\$(\d+)/g, (e, n) => {
1965
+ let i = await this.db.execute(O`${O.raw(r)} ${O.raw(e.replace(/\$(\d+)/g, (e, n) => {
1965
1966
  let r = t[parseInt(n, 10) - 1];
1966
1967
  return r === null ? "NULL" : typeof r == "number" ? String(r) : typeof r == "boolean" ? r ? "TRUE" : "FALSE" : r instanceof Date ? `'${r.toISOString()}'` : `'${String(r).replace(/'/g, "''")}'`;
1967
1968
  }))}`), a = [];
@@ -1971,7 +1972,7 @@ var ze = class extends H {
1971
1972
  typeof t == "string" && a.push(t);
1972
1973
  }
1973
1974
  }
1974
- return Ie(a, {
1975
+ return Le(a, {
1975
1976
  sql: e,
1976
1977
  params: t
1977
1978
  });
@@ -1980,7 +1981,7 @@ var ze = class extends H {
1980
1981
  if (!e || e.length === 0) return [];
1981
1982
  if (!this.db.execute) throw Error("DuckDB database instance must have an execute method");
1982
1983
  try {
1983
- let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(D`
1984
+ let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(O`
1984
1985
  SELECT
1985
1986
  table_name,
1986
1987
  index_name,
@@ -1988,7 +1989,7 @@ var ze = class extends H {
1988
1989
  is_unique,
1989
1990
  is_primary
1990
1991
  FROM duckdb_indexes()
1991
- WHERE LOWER(table_name) IN (${D.raw(t)})
1992
+ WHERE LOWER(table_name) IN (${O.raw(t)})
1992
1993
  GROUP BY table_name, index_name, is_unique, is_primary
1993
1994
  ORDER BY table_name, index_name
1994
1995
  `);
@@ -2004,19 +2005,19 @@ var ze = class extends H {
2004
2005
  }
2005
2006
  }
2006
2007
  };
2007
- function Be(e, t) {
2008
- return new ze(e, t, "duckdb");
2008
+ function Ve(e, t) {
2009
+ return new Be(e, t, "duckdb");
2009
2010
  }
2010
2011
  //#endregion
2011
2012
  //#region src/server/explain/databend-parser.ts
2012
- function Ve(e, t) {
2013
+ function He(e, t) {
2013
2014
  let n = [], r = [], i = !1, a, o = [];
2014
2015
  for (let t of e) {
2015
2016
  if (!t.trim()) continue;
2016
- let e = Ue(t);
2017
+ let e = We(t);
2017
2018
  if (e) {
2018
2019
  (e.type.includes("TableScan") || e.type.includes("SCAN")) && (i = !0), e.type.includes("IndexScan") && e.index && r.push(e.index), n.length === 0 && e.estimatedCost !== void 0 && (a = e.estimatedCost);
2019
- let s = He(t);
2020
+ let s = Ue(t);
2020
2021
  for (; o.length > 0 && o[o.length - 1].indent >= s;) o.pop();
2021
2022
  if (o.length === 0) n.push(e);
2022
2023
  else {
@@ -2043,13 +2044,13 @@ function Ve(e, t) {
2043
2044
  sql: t
2044
2045
  };
2045
2046
  }
2046
- function He(e) {
2047
+ function Ue(e) {
2047
2048
  let t = 0;
2048
2049
  for (let n of e) if (n === " " || n === "│" || n === "├" || n === "└" || n === "─") t++;
2049
2050
  else break;
2050
2051
  return t;
2051
2052
  }
2052
- function Ue(e) {
2053
+ function We(e) {
2053
2054
  let t = e.replace(/[┌├└│─┐┤┘]/g, "").replace(/^\s*/, "").trim();
2054
2055
  if (!t || /^(filters|table|estimated rows|output columns|push downs):/.test(t)) return null;
2055
2056
  let n = t.match(/^([A-Z][A-Za-z_]+(?:\s+[A-Z][A-Za-z_]+)*)(?:\s+(\S+))?/);
@@ -2063,7 +2064,7 @@ function Ue(e) {
2063
2064
  }
2064
2065
  //#endregion
2065
2066
  //#region src/server/executors/databend-executor.ts
2066
- var We = class extends H {
2067
+ var Ge = class extends H {
2067
2068
  async execute(e, t) {
2068
2069
  if (e && typeof e == "object" && typeof e.execute == "function") try {
2069
2070
  let n = await e.execute();
@@ -2147,7 +2148,7 @@ var We = class extends H {
2147
2148
  async explainQuery(e, t, n) {
2148
2149
  let r = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
2149
2150
  if (!this.db.execute) throw Error("Databend database instance must have an execute method");
2150
- let i = await this.db.execute(D`${D.raw(r)} ${D.raw(e.replace(/\$(\d+)/g, (e, n) => {
2151
+ let i = await this.db.execute(O`${O.raw(r)} ${O.raw(e.replace(/\$(\d+)/g, (e, n) => {
2151
2152
  let r = t[parseInt(n, 10) - 1];
2152
2153
  return r === null ? "NULL" : typeof r == "number" ? String(r) : typeof r == "boolean" ? r ? "TRUE" : "FALSE" : r instanceof Date ? `'${r.toISOString()}'` : `'${String(r).replace(/'/g, "''")}'`;
2153
2154
  }))}`), a = [];
@@ -2157,7 +2158,7 @@ var We = class extends H {
2157
2158
  typeof t == "string" && a.push(t);
2158
2159
  }
2159
2160
  }
2160
- return Ve(a, {
2161
+ return He(a, {
2161
2162
  sql: e,
2162
2163
  params: t
2163
2164
  });
@@ -2166,19 +2167,19 @@ var We = class extends H {
2166
2167
  return !e || e.length, [];
2167
2168
  }
2168
2169
  };
2169
- function Ge(e, t) {
2170
- return new We(e, t, "databend");
2170
+ function Ke(e, t) {
2171
+ return new Ge(e, t, "databend");
2171
2172
  }
2172
2173
  //#endregion
2173
2174
  //#region src/server/explain/snowflake-parser.ts
2174
- function Ke(e, t) {
2175
+ function qe(e, t) {
2175
2176
  let n = [], r = [], i = !1, a, o = [];
2176
2177
  for (let t of e) {
2177
2178
  if (!t.trim()) continue;
2178
- let e = Je(t);
2179
+ let e = Ye(t);
2179
2180
  if (e) {
2180
2181
  (e.type.includes("TableScan") || e.type.includes("SCAN")) && (i = !0), n.length === 0 && e.estimatedCost !== void 0 && (a = e.estimatedCost);
2181
- let r = qe(t);
2182
+ let r = Je(t);
2182
2183
  for (; o.length > 0 && o[o.length - 1].indent >= r;) o.pop();
2183
2184
  if (o.length === 0) n.push(e);
2184
2185
  else {
@@ -2205,13 +2206,13 @@ function Ke(e, t) {
2205
2206
  sql: t
2206
2207
  };
2207
2208
  }
2208
- function qe(e) {
2209
+ function Je(e) {
2209
2210
  let t = 0;
2210
2211
  for (let n of e) if (n === " " || n === "-" || n === ">") t++;
2211
2212
  else break;
2212
2213
  return t;
2213
2214
  }
2214
- function Je(e) {
2215
+ function Ye(e) {
2215
2216
  let t = e.replace(/^[\s\d:]*->/, "").trim();
2216
2217
  if (!t || /^(GlobalStats|partitions|bytes):/i.test(t) || /^\w+=\d+/.test(t)) return null;
2217
2218
  let n = t.match(/^([A-Z][A-Za-z_]+(?:\s+[A-Z][A-Za-z_]+)*)(?:\s+(\S+))?/);
@@ -2225,7 +2226,7 @@ function Je(e) {
2225
2226
  }
2226
2227
  //#endregion
2227
2228
  //#region src/server/executors/snowflake-executor.ts
2228
- var Ye = class extends H {
2229
+ var Xe = class extends H {
2229
2230
  async execute(e, t) {
2230
2231
  if (e && typeof e == "object" && typeof e.execute == "function") try {
2231
2232
  let n = await e.execute();
@@ -2308,7 +2309,7 @@ var Ye = class extends H {
2308
2309
  }
2309
2310
  async explainQuery(e, t, n) {
2310
2311
  if (n?.analyze, !this.db.execute) throw Error("Snowflake database instance must have an execute method");
2311
- let r = await this.db.execute(D`${D.raw("EXPLAIN")} ${D.raw(e.replace(/\?/g, () => {
2312
+ let r = await this.db.execute(O`${O.raw("EXPLAIN")} ${O.raw(e.replace(/\?/g, () => {
2312
2313
  let e = t.shift();
2313
2314
  return e === null ? "NULL" : typeof e == "number" ? String(e) : typeof e == "boolean" ? e ? "TRUE" : "FALSE" : e instanceof Date ? `'${e.toISOString()}'` : `'${String(e).replace(/'/g, "''")}'`;
2314
2315
  }))}`), i = [];
@@ -2318,7 +2319,7 @@ var Ye = class extends H {
2318
2319
  typeof t == "string" && i.push(t);
2319
2320
  }
2320
2321
  }
2321
- return Ke(i, {
2322
+ return qe(i, {
2322
2323
  sql: e,
2323
2324
  params: t
2324
2325
  });
@@ -2327,23 +2328,23 @@ var Ye = class extends H {
2327
2328
  return [];
2328
2329
  }
2329
2330
  };
2330
- function Xe(e, t) {
2331
- return new Ye(e, t, "snowflake");
2331
+ function Ze(e, t) {
2332
+ return new Xe(e, t, "snowflake");
2332
2333
  }
2333
2334
  //#endregion
2334
2335
  //#region src/server/executors/index.ts
2335
- function Ze(e, t, n) {
2336
+ function Qe(e, t, n) {
2336
2337
  if (n) switch (n) {
2337
- case "postgres": return Te(e, t);
2338
- case "mysql": return ke(e, t);
2339
- case "sqlite": return Ne(e, t);
2340
- case "singlestore": return Fe(e, t);
2341
- case "duckdb": return Be(e, t);
2342
- case "databend": return Ge(e, t);
2343
- case "snowflake": return Xe(e, t);
2344
- }
2345
- if (e.all && e.run) return Ne(e, t);
2346
- if (e.execute) return Te(e, t);
2338
+ case "postgres": return Ee(e, t);
2339
+ case "mysql": return Ae(e, t);
2340
+ case "sqlite": return Pe(e, t);
2341
+ case "singlestore": return Ie(e, t);
2342
+ case "duckdb": return Ve(e, t);
2343
+ case "databend": return Ke(e, t);
2344
+ case "snowflake": return Ze(e, t);
2345
+ }
2346
+ if (e.all && e.run) return Pe(e, t);
2347
+ if (e.execute) return Ee(e, t);
2347
2348
  throw Error("Unable to determine database engine type. Please specify engineType parameter.");
2348
2349
  }
2349
2350
  //#endregion
@@ -2351,7 +2352,7 @@ function Ze(e, t, n) {
2351
2352
  function U(e, t) {
2352
2353
  return typeof e == "string" ? t ? t.get(e) || (console.warn(`[drizzle-cube] Cannot resolve cube reference '${e}': no cube with that name is registered. Registered cubes: ${Array.from(t.keys()).join(", ") || "(none)"}. Join will be skipped.`), null) : (console.warn(`[drizzle-cube] Cannot resolve string cube reference '${e}': no cube registry provided. Join will be skipped.`), null) : typeof e == "function" ? e() : e;
2353
2354
  }
2354
- function Qe(e) {
2355
+ function $e(e) {
2355
2356
  switch (e) {
2356
2357
  case "belongsTo": return "hasMany";
2357
2358
  case "hasMany": return "belongsTo";
@@ -2360,7 +2361,7 @@ function Qe(e) {
2360
2361
  default: return e;
2361
2362
  }
2362
2363
  }
2363
- function $e(e, t) {
2364
+ function et(e, t) {
2364
2365
  if (t) return t;
2365
2366
  switch (e) {
2366
2367
  case "belongsTo": return "inner";
@@ -2370,26 +2371,26 @@ function $e(e, t) {
2370
2371
  default: return "left";
2371
2372
  }
2372
2373
  }
2373
- function et(e) {
2374
- return e && typeof e == "object" ? D`${D`${e}`}` : e;
2375
- }
2376
2374
  function tt(e) {
2375
+ return e && typeof e == "object" ? O`${O`${e}`}` : e;
2376
+ }
2377
+ function nt(e) {
2377
2378
  if (e === "__proto__" || e === "constructor" || e === "prototype") throw Error(`Unsafe property key: ${e}`);
2378
2379
  return e;
2379
2380
  }
2380
2381
  function W(e, t) {
2381
- return et(typeof e == "function" ? e(t) : e);
2382
+ return tt(typeof e == "function" ? e(t) : e);
2382
2383
  }
2383
- function nt(e, t) {
2384
+ function rt(e, t) {
2384
2385
  if (e.relationship !== "belongsToMany" || !e.through) throw Error("expandBelongsToManyJoin can only be called on belongsToMany relationships with through configuration");
2385
2386
  let { table: n, sourceKey: r, targetKey: i, securitySql: a } = e.through, o = [];
2386
2387
  for (let e of r) {
2387
- let t = e.as || M;
2388
+ let t = e.as || N;
2388
2389
  o.push(t(e.source, e.target));
2389
2390
  }
2390
2391
  let s = [];
2391
2392
  for (let e of i) {
2392
- let t = e.as || M;
2393
+ let t = e.as || N;
2393
2394
  s.push(t(e.source, e.target));
2394
2395
  }
2395
2396
  let c;
@@ -2397,16 +2398,16 @@ function nt(e, t) {
2397
2398
  let e = a(t);
2398
2399
  c = Array.isArray(e) ? e : [e];
2399
2400
  }
2400
- let l = $e("belongsToMany", e.sqlJoinType);
2401
+ let l = et("belongsToMany", e.sqlJoinType);
2401
2402
  return {
2402
2403
  junctionJoins: [{
2403
2404
  joinType: l,
2404
2405
  table: n,
2405
- condition: P(...o)
2406
+ condition: F(...o)
2406
2407
  }, {
2407
2408
  joinType: l,
2408
2409
  table: n,
2409
- condition: P(...s)
2410
+ condition: F(...s)
2410
2411
  }],
2411
2412
  junctionSecurityConditions: c
2412
2413
  };
@@ -2419,7 +2420,7 @@ function G(e) {
2419
2420
  let t = e, n = JSON.stringify(Array.isArray(t.values) ? [...t.values].sort() : t.values), r = t.dateRange ? `:dr:${JSON.stringify(t.dateRange)}` : "";
2420
2421
  return `${t.member}:${t.operator}:${n}${r}`;
2421
2422
  }
2422
- function rt(e, t) {
2423
+ function it(e, t) {
2423
2424
  return `timeDim:${e}:${JSON.stringify(t)}`;
2424
2425
  }
2425
2426
  var K = class {
@@ -2460,37 +2461,37 @@ var K = class {
2460
2461
  };
2461
2462
  }
2462
2463
  };
2463
- function it(e) {
2464
+ function at(e) {
2464
2465
  let t = [];
2465
- for (let n of e) "and" in n && n.and ? t.push(...it(n.and)) : "or" in n && n.or ? t.push(...it(n.or)) : "member" in n && t.push(n);
2466
+ for (let n of e) "and" in n && n.and ? t.push(...at(n.and)) : "or" in n && n.or ? t.push(...at(n.or)) : "member" in n && t.push(n);
2466
2467
  return t;
2467
2468
  }
2468
2469
  //#endregion
2469
2470
  //#region src/server/cache-utils.ts
2470
- function at(e, t, n = {}) {
2471
- let r = n.keyPrefix ?? "drizzle-cube:", i = ot(e), a = `${r}query:${dt(JSON.stringify(i))}`;
2471
+ function ot(e, t, n = {}) {
2472
+ let r = n.keyPrefix ?? "drizzle-cube:", i = st(e), a = `${r}query:${ft(JSON.stringify(i))}`;
2472
2473
  if (n.includeSecurityContext !== !1) {
2473
- let e = dt(n.securityContextSerializer ? n.securityContextSerializer(t) : JSON.stringify(J(t)));
2474
+ let e = ft(n.securityContextSerializer ? n.securityContextSerializer(t) : JSON.stringify(J(t)));
2474
2475
  a += `:ctx:${e}`;
2475
2476
  }
2476
2477
  return a;
2477
2478
  }
2478
- function ot(e) {
2479
+ function st(e) {
2479
2480
  return {
2480
2481
  measures: e.measures ? [...e.measures].sort() : void 0,
2481
2482
  dimensions: e.dimensions ? [...e.dimensions].sort() : void 0,
2482
2483
  filters: e.filters ? q(e.filters) : void 0,
2483
- timeDimensions: e.timeDimensions ? ut(e.timeDimensions) : void 0,
2484
+ timeDimensions: e.timeDimensions ? dt(e.timeDimensions) : void 0,
2484
2485
  limit: e.limit,
2485
2486
  offset: e.offset,
2486
2487
  order: e.order ? J(e.order) : void 0,
2487
2488
  fillMissingDatesValue: e.fillMissingDatesValue,
2488
- funnel: e.funnel ? st(e.funnel) : void 0,
2489
- flow: e.flow ? ct(e.flow) : void 0,
2490
- retention: e.retention ? lt(e.retention) : void 0
2489
+ funnel: e.funnel ? ct(e.funnel) : void 0,
2490
+ flow: e.flow ? lt(e.flow) : void 0,
2491
+ retention: e.retention ? ut(e.retention) : void 0
2491
2492
  };
2492
2493
  }
2493
- function st(e) {
2494
+ function ct(e) {
2494
2495
  return {
2495
2496
  bindingKey: e.bindingKey,
2496
2497
  timeDimension: e.timeDimension,
@@ -2506,7 +2507,7 @@ function st(e) {
2506
2507
  globalTimeWindow: e.globalTimeWindow
2507
2508
  };
2508
2509
  }
2509
- function ct(e) {
2510
+ function lt(e) {
2510
2511
  return {
2511
2512
  bindingKey: e.bindingKey,
2512
2513
  timeDimension: e.timeDimension,
@@ -2522,7 +2523,7 @@ function ct(e) {
2522
2523
  joinStrategy: e.joinStrategy
2523
2524
  };
2524
2525
  }
2525
- function lt(e) {
2526
+ function ut(e) {
2526
2527
  return {
2527
2528
  timeDimension: e.timeDimension,
2528
2529
  bindingKey: e.bindingKey,
@@ -2546,7 +2547,7 @@ function q(e) {
2546
2547
  };
2547
2548
  }).sort((e, t) => JSON.stringify(e).localeCompare(JSON.stringify(t)));
2548
2549
  }
2549
- function ut(e) {
2550
+ function dt(e) {
2550
2551
  return [...e].map((e) => ({
2551
2552
  dimension: e.dimension,
2552
2553
  granularity: e.granularity,
@@ -2561,7 +2562,7 @@ function ut(e) {
2561
2562
  function J(e) {
2562
2563
  return typeof e != "object" || !e ? e : Array.isArray(e) ? e.map(J) : Object.keys(e).sort().reduce((t, n) => (t[n] = J(e[n]), t), {});
2563
2564
  }
2564
- function dt(e) {
2565
+ function ft(e) {
2565
2566
  let t = 2166136261, n = Math.min(e.length, 65536);
2566
2567
  for (let r = 0; r < n; r++) t ^= e.charCodeAt(r), t = t * 16777619 >>> 0;
2567
2568
  return t.toString(16).padStart(8, "0");
@@ -2574,7 +2575,7 @@ var Y = class {
2574
2575
  }
2575
2576
  buildTimeDimensionExpression(e, t, n) {
2576
2577
  let r = W(e, n);
2577
- return t ? this.databaseAdapter.buildTimeDimension(t, r) : r instanceof S ? r : D`${r}`;
2578
+ return t ? this.databaseAdapter.buildTimeDimension(t, r) : r instanceof S ? r : O`${r}`;
2578
2579
  }
2579
2580
  buildDateRangeCondition(e, t) {
2580
2581
  if (!t) return null;
@@ -2585,13 +2586,13 @@ var Y = class {
2585
2586
  let e = typeof r == "number" ? /* @__PURE__ */ new Date(r * (this.databaseAdapter.getEngineType() === "sqlite" ? 1e3 : 1)) : new Date(r), t = new Date(e);
2586
2587
  t.setUTCHours(23, 59, 59, 999), r = this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? Math.floor(t.getTime() / 1e3) : t.getTime() : t.toISOString();
2587
2588
  }
2588
- return P(I(e, n), L(e, r));
2589
+ return F(L(e, n), R(e, r));
2589
2590
  }
2590
2591
  if (typeof t == "string") {
2591
2592
  let n = this.parseRelativeDateRange(t);
2592
2593
  if (n) {
2593
2594
  let t, r;
2594
- return this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? (t = Math.floor(n.start.getTime() / 1e3), r = Math.floor(n.end.getTime() / 1e3)) : (t = n.start.getTime(), r = n.end.getTime()) : (t = n.start.toISOString(), r = n.end.toISOString()), P(I(e, t), L(e, r));
2595
+ return this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? (t = Math.floor(n.start.getTime() / 1e3), r = Math.floor(n.end.getTime() / 1e3)) : (t = n.start.getTime(), r = n.end.getTime()) : (t = n.start.toISOString(), r = n.end.toISOString()), F(L(e, t), R(e, r));
2595
2596
  }
2596
2597
  let r = this.normalizeDate(t);
2597
2598
  if (!r) return null;
@@ -2600,7 +2601,7 @@ var Y = class {
2600
2601
  let o = new Date(i);
2601
2602
  o.setUTCHours(23, 59, 59, 999);
2602
2603
  let s, c;
2603
- return this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? (s = Math.floor(a.getTime() / 1e3), c = Math.floor(o.getTime() / 1e3)) : (s = a.getTime(), c = o.getTime()) : (s = a.toISOString(), c = o.toISOString()), P(I(e, s), L(e, c));
2604
+ return this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? (s = Math.floor(a.getTime() / 1e3), c = Math.floor(o.getTime() / 1e3)) : (s = a.getTime(), c = o.getTime()) : (s = a.toISOString(), c = o.toISOString()), F(L(e, s), R(e, c));
2604
2605
  }
2605
2606
  return null;
2606
2607
  }
@@ -2750,18 +2751,18 @@ var Y = class {
2750
2751
  if (a.length === 0 && !["set", "notSet"].includes(t)) return t === "equals" ? this.databaseAdapter.buildBooleanLiteral(!1) : null;
2751
2752
  let o = a[0];
2752
2753
  switch (t) {
2753
- case "equals": return a.length > 1 ? r?.type === "time" ? re(e, a.map((e) => this.dateTimeBuilder.normalizeDate(e) || e)) : re(e, a) : a.length === 1 ? M(e, r?.type === "time" && this.dateTimeBuilder.normalizeDate(o) || o) : this.databaseAdapter.buildBooleanLiteral(!1);
2754
- case "notEquals": return a.length > 1 ? ie(e, a) : a.length === 1 ? N(e, o) : null;
2754
+ case "equals": return a.length > 1 ? r?.type === "time" ? ne(e, a.map((e) => this.dateTimeBuilder.normalizeDate(e) || e)) : ne(e, a) : a.length === 1 ? N(e, r?.type === "time" && this.dateTimeBuilder.normalizeDate(o) || o) : this.databaseAdapter.buildBooleanLiteral(!1);
2755
+ case "notEquals": return a.length > 1 ? re(e, a) : a.length === 1 ? P(e, o) : null;
2755
2756
  case "contains": return this.databaseAdapter.buildStringCondition(e, "contains", o);
2756
2757
  case "notContains": return this.databaseAdapter.buildStringCondition(e, "notContains", o);
2757
2758
  case "startsWith": return this.databaseAdapter.buildStringCondition(e, "startsWith", o);
2758
2759
  case "endsWith": return this.databaseAdapter.buildStringCondition(e, "endsWith", o);
2759
- case "gt": return te(e, o);
2760
- case "gte": return I(e, o);
2761
- case "lt": return ne(e, o);
2762
- case "lte": return L(e, o);
2763
- case "set": return oe(e);
2764
- case "notSet": return ae(e);
2760
+ case "gt": return ee(e, o);
2761
+ case "gte": return L(e, o);
2762
+ case "lt": return te(e, o);
2763
+ case "lte": return R(e, o);
2764
+ case "set": return ae(e);
2765
+ case "notSet": return ie(e);
2765
2766
  case "inDateRange":
2766
2767
  if (a.length >= 2) {
2767
2768
  let t = this.dateTimeBuilder.normalizeDate(a[0]), r = this.dateTimeBuilder.normalizeDate(a[1]);
@@ -2771,43 +2772,43 @@ var Y = class {
2771
2772
  let e = typeof r == "number" ? /* @__PURE__ */ new Date(r * (this.databaseAdapter.getEngineType() === "sqlite" ? 1e3 : 1)) : new Date(r), t = new Date(e);
2772
2773
  t.setUTCHours(23, 59, 59, 999), r = this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? Math.floor(t.getTime() / 1e3) : t.getTime() : t.toISOString();
2773
2774
  }
2774
- return P(I(e, t), L(e, r));
2775
+ return F(L(e, t), R(e, r));
2775
2776
  }
2776
2777
  }
2777
2778
  return null;
2778
2779
  case "beforeDate": {
2779
2780
  let t = this.dateTimeBuilder.normalizeDate(o);
2780
- return t ? ne(e, t) : null;
2781
+ return t ? te(e, t) : null;
2781
2782
  }
2782
2783
  case "afterDate": {
2783
2784
  let t = this.dateTimeBuilder.normalizeDate(o);
2784
- return t ? te(e, t) : null;
2785
+ return t ? ee(e, t) : null;
2785
2786
  }
2786
- case "between": return a.length >= 2 ? P(I(e, a[0]), L(e, a[1])) : null;
2787
- case "notBetween": return a.length >= 2 ? F(ne(e, a[0]), te(e, a[1])) : null;
2788
- case "in": return a.length > 0 ? re(e, a) : null;
2789
- case "notIn": return a.length > 0 ? ie(e, a) : null;
2787
+ case "between": return a.length >= 2 ? F(L(e, a[0]), R(e, a[1])) : null;
2788
+ case "notBetween": return a.length >= 2 ? I(te(e, a[0]), ee(e, a[1])) : null;
2789
+ case "in": return a.length > 0 ? ne(e, a) : null;
2790
+ case "notIn": return a.length > 0 ? re(e, a) : null;
2790
2791
  case "like": return this.databaseAdapter.buildStringCondition(e, "like", o);
2791
2792
  case "notLike": return this.databaseAdapter.buildStringCondition(e, "notLike", o);
2792
2793
  case "ilike": return this.databaseAdapter.buildStringCondition(e, "ilike", o);
2793
2794
  case "regex": return this.databaseAdapter.buildStringCondition(e, "regex", o);
2794
2795
  case "notRegex": return this.databaseAdapter.buildStringCondition(e, "notRegex", o);
2795
- case "isEmpty": return F(ae(e), M(e, ""));
2796
- case "isNotEmpty": return P(oe(e), N(e, ""));
2797
- case "arrayContains": return this.databaseAdapter.getEngineType() === "postgres" ? se(e, a) : null;
2798
- case "arrayOverlaps": return this.databaseAdapter.getEngineType() === "postgres" ? le(e, a) : null;
2799
- case "arrayContained": return this.databaseAdapter.getEngineType() === "postgres" ? ce(e, a) : null;
2796
+ case "isEmpty": return I(ie(e), N(e, ""));
2797
+ case "isNotEmpty": return F(ae(e), P(e, ""));
2798
+ case "arrayContains": return this.databaseAdapter.getEngineType() === "postgres" ? oe(e, a) : null;
2799
+ case "arrayOverlaps": return this.databaseAdapter.getEngineType() === "postgres" ? ce(e, a) : null;
2800
+ case "arrayContained": return this.databaseAdapter.getEngineType() === "postgres" ? se(e, a) : null;
2800
2801
  default: return null;
2801
2802
  }
2802
2803
  }
2803
2804
  buildLogicalFilter(e, t, n) {
2804
2805
  if ("and" in e && e.and) {
2805
2806
  let r = e.and.map((e) => this.buildSingleFilter(e, t, n)).filter((e) => e !== null);
2806
- return r.length > 0 ? r.length === 1 ? r[0] : P(...r) : null;
2807
+ return r.length > 0 ? r.length === 1 ? r[0] : F(...r) : null;
2807
2808
  }
2808
2809
  if ("or" in e && e.or) {
2809
2810
  let r = e.or.map((e) => this.buildSingleFilter(e, t, n)).filter((e) => e !== null);
2810
- return r.length > 0 ? r.length === 1 ? r[0] : F(...r) : null;
2811
+ return r.length > 0 ? r.length === 1 ? r[0] : I(...r) : null;
2811
2812
  }
2812
2813
  return null;
2813
2814
  }
@@ -2948,14 +2949,14 @@ var Y = class {
2948
2949
  };
2949
2950
  //#endregion
2950
2951
  //#region src/server/template-substitution.ts
2951
- function ft(e, t) {
2952
- let { cube: n, allCubes: r, resolvedMeasures: i } = t, a = pt(e), o = /* @__PURE__ */ new Map();
2952
+ function pt(e, t) {
2953
+ let { cube: n, allCubes: r, resolvedMeasures: i } = t, a = mt(e), o = /* @__PURE__ */ new Map();
2953
2954
  for (let e of a) {
2954
2955
  let { originalRef: t, cubeName: a, fieldName: s } = e, c = a || n.name;
2955
2956
  if (!r.get(c)) throw Error(`Cannot substitute {${t}}: cube '${c}' not found`);
2956
2957
  let l = `${c}.${s}`, u = i.get(l);
2957
2958
  if (!u) throw Error(`Cannot substitute {${t}}: measure '${l}' not resolved yet. Ensure measures are resolved in dependency order.`);
2958
- let d = D`${u()}`;
2959
+ let d = O`${u()}`;
2959
2960
  o.set(t, d);
2960
2961
  }
2961
2962
  let s = [], c = [], l = 0;
@@ -2967,12 +2968,12 @@ function ft(e, t) {
2967
2968
  i && c.push(i), l = r + n.length;
2968
2969
  }
2969
2970
  }
2970
- if (s.push(e.substring(l)), c.length === 0) return D.raw(e);
2971
+ if (s.push(e.substring(l)), c.length === 0) return O.raw(e);
2971
2972
  let u = [];
2972
2973
  for (let e = 0; e < s.length; e++) s[e] && u.push(new x(s[e])), e < c.length && u.push(c[e]);
2973
- return D.join(u, D.raw(""));
2974
+ return O.join(u, O.raw(""));
2974
2975
  }
2975
- function pt(e) {
2976
+ function mt(e) {
2976
2977
  if (e.length > 1e3) return [];
2977
2978
  let t = e.matchAll(/\{([^}]+)\}/g), n = [];
2978
2979
  for (let e of t) {
@@ -2992,7 +2993,7 @@ function pt(e) {
2992
2993
  }
2993
2994
  return n;
2994
2995
  }
2995
- function mt(e) {
2996
+ function ht(e) {
2996
2997
  let t = [], n = 0;
2997
2998
  for (let r = 0; r < e.length; r++) if (e[r] === "{") n++;
2998
2999
  else if (e[r] === "}" && (n--, n < 0)) {
@@ -3000,7 +3001,7 @@ function mt(e) {
3000
3001
  break;
3001
3002
  }
3002
3003
  n > 0 && t.push("Unmatched opening brace in template"), /\{\s*\}/.test(e) && t.push("Empty member reference {} found in template"), /\{[^}]*\{/.test(e) && t.push("Nested braces are not allowed in member references");
3003
- let r = pt(e);
3004
+ let r = mt(e);
3004
3005
  for (let e of r) {
3005
3006
  let n = e.cubeName ? `${e.cubeName}.${e.fieldName}` : e.fieldName;
3006
3007
  /^[a-zA-Z_][a-zA-Z0-9_.]*$/.test(n) || t.push(`Invalid member reference {${e.originalRef}}: must start with letter or underscore, and contain only letters, numbers, underscores, and dots`), n.split(".").length > 2 && t.push(`Invalid member reference {${e.originalRef}}: only one dot allowed (Cube.measure format)`);
@@ -3010,8 +3011,8 @@ function mt(e) {
3010
3011
  errors: t
3011
3012
  };
3012
3013
  }
3013
- function ht(e, t) {
3014
- let n = pt(e), r = /* @__PURE__ */ new Set();
3014
+ function gt(e, t) {
3015
+ let n = mt(e), r = /* @__PURE__ */ new Set();
3015
3016
  for (let e of n) {
3016
3017
  let n = `${e.cubeName || t}.${e.fieldName}`;
3017
3018
  r.add(n);
@@ -3038,11 +3039,11 @@ var Q = class e {
3038
3039
  n && c.add(n);
3039
3040
  continue;
3040
3041
  }
3041
- Z.isCalculatedMeasure(d) ? (s.push(r), ht(d.calculatedSql, t).forEach((e) => c.add(e)), l.getAllDependencies(r).forEach((e) => {
3042
+ Z.isCalculatedMeasure(d) ? (s.push(r), gt(d.calculatedSql, t).forEach((e) => c.add(e)), l.getAllDependencies(r).forEach((e) => {
3042
3043
  let [t, r] = e.split("."), i = n.get(t);
3043
3044
  if (i && i.measures[r]) {
3044
3045
  let e = i.measures[r];
3045
- Z.isCalculatedMeasure(e) && ht(e.calculatedSql, t).forEach((e) => c.add(e));
3046
+ Z.isCalculatedMeasure(e) && gt(e.calculatedSql, t).forEach((e) => c.add(e));
3046
3047
  }
3047
3048
  })) : o.push(r);
3048
3049
  }
@@ -3073,7 +3074,7 @@ var Q = class e {
3073
3074
  }
3074
3075
  buildCalculatedMeasure(e, t, n, r, i) {
3075
3076
  if (!e.calculatedSql) throw Error(`Calculated measure '${t.name}.${e.name}' missing calculatedSql property`);
3076
- return ft(this.databaseAdapter.preprocessCalculatedTemplate(e.calculatedSql), {
3077
+ return pt(this.databaseAdapter.preprocessCalculatedTemplate(e.calculatedSql), {
3077
3078
  cube: t,
3078
3079
  allCubes: n,
3079
3080
  resolvedMeasures: r,
@@ -3082,32 +3083,32 @@ var Q = class e {
3082
3083
  }
3083
3084
  buildCTECalculatedMeasure(e, t, n, r, i) {
3084
3085
  if (!e.calculatedSql) throw Error(`Calculated measure '${t.name}.${e.name || "unknown"}' missing calculatedSql property`);
3085
- let a = /* @__PURE__ */ new Map(), o = ht(e.calculatedSql, t.name);
3086
+ let a = /* @__PURE__ */ new Map(), o = gt(e.calculatedSql, t.name);
3086
3087
  for (let e of o) {
3087
3088
  let [t, i] = e.split("."), o = r.get(t);
3088
3089
  if (o && o.measures[i]) {
3089
3090
  let t = o.measures[i];
3090
3091
  if (n.measures.includes(e)) {
3091
- let r = D`${D.identifier(n.cteAlias)}.${D.identifier(i)}`, o;
3092
+ let r = O`${O.identifier(n.cteAlias)}.${O.identifier(i)}`, o;
3092
3093
  switch (t.type) {
3093
3094
  case "count":
3094
3095
  case "countDistinct":
3095
3096
  case "sum":
3096
- o = R(r);
3097
+ o = z(r);
3097
3098
  break;
3098
3099
  case "avg":
3099
3100
  o = this.databaseAdapter.buildAvg(r);
3100
3101
  break;
3101
3102
  case "min":
3102
- o = B(r);
3103
+ o = pe(r);
3103
3104
  break;
3104
3105
  case "max":
3105
- o = z(r);
3106
+ o = B(r);
3106
3107
  break;
3107
3108
  case "number":
3108
- o = R(r);
3109
+ o = z(r);
3109
3110
  break;
3110
- default: o = R(r);
3111
+ default: o = z(r);
3111
3112
  }
3112
3113
  a.set(e, () => o);
3113
3114
  }
@@ -3125,16 +3126,16 @@ var Q = class e {
3125
3126
  if (i.joinCubes) for (let e of i.joinCubes) o.set(e.cube.name, e.cube);
3126
3127
  return this.buildCTECalculatedMeasure(n, t, a, o, r);
3127
3128
  } else {
3128
- let e = D`${D.identifier(a.cteAlias)}.${D.identifier(t)}`;
3129
+ let e = O`${O.identifier(a.cteAlias)}.${O.identifier(t)}`;
3129
3130
  switch (n.type) {
3130
3131
  case "count":
3131
3132
  case "countDistinct":
3132
- case "sum": return R(e);
3133
+ case "sum": return z(e);
3133
3134
  case "avg": return this.databaseAdapter.buildAvg(e);
3134
- case "min": return B(e);
3135
- case "max": return z(e);
3136
- case "number": return R(e);
3137
- default: return R(e);
3135
+ case "min": return pe(e);
3136
+ case "max": return B(e);
3137
+ case "number": return z(e);
3138
+ default: return z(e);
3138
3139
  }
3139
3140
  }
3140
3141
  }
@@ -3149,10 +3150,10 @@ var Q = class e {
3149
3150
  if (t.filters && t.filters.length > 0) {
3150
3151
  let e = t.filters.map((e) => {
3151
3152
  let t = e(n);
3152
- return t ? D`(${t})` : void 0;
3153
+ return t ? O`(${t})` : void 0;
3153
3154
  }).filter(Boolean);
3154
3155
  if (e.length > 0) {
3155
- let t = e.length === 1 ? e[0] : P(...e);
3156
+ let t = e.length === 1 ? e[0] : F(...e);
3156
3157
  i = this.databaseAdapter.buildCaseWhen([{
3157
3158
  when: t,
3158
3159
  then: i
@@ -3160,22 +3161,22 @@ var Q = class e {
3160
3161
  }
3161
3162
  }
3162
3163
  switch (t.type) {
3163
- case "count": return fe(i);
3164
- case "countDistinct": return pe(i);
3165
- case "sum": return R(i);
3164
+ case "count": return de(i);
3165
+ case "countDistinct": return fe(i);
3166
+ case "sum": return z(i);
3166
3167
  case "avg": return this.databaseAdapter.buildAvg(i);
3167
- case "min": return B(i);
3168
- case "max": return z(i);
3168
+ case "min": return pe(i);
3169
+ case "max": return B(i);
3169
3170
  case "number": return i;
3170
3171
  case "stddev":
3171
3172
  case "stddevSamp": {
3172
3173
  let e = t.type === "stddevSamp" || t.statisticalConfig?.useSample, n = this.databaseAdapter.buildStddev(i, e);
3173
- return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), D`MAX(NULL)`) : n;
3174
+ return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), O`MAX(NULL)`) : n;
3174
3175
  }
3175
3176
  case "variance":
3176
3177
  case "varianceSamp": {
3177
3178
  let e = t.type === "varianceSamp" || t.statisticalConfig?.useSample, n = this.databaseAdapter.buildVariance(i, e);
3178
- return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), D`MAX(NULL)`) : n;
3179
+ return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), O`MAX(NULL)`) : n;
3179
3180
  }
3180
3181
  case "percentile":
3181
3182
  case "median":
@@ -3195,7 +3196,7 @@ var Q = class e {
3195
3196
  default: e = t.statisticalConfig?.percentile ?? 50;
3196
3197
  }
3197
3198
  let n = this.databaseAdapter.buildPercentile(i, e);
3198
- return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), D`MAX(NULL)`) : n;
3199
+ return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), O`MAX(NULL)`) : n;
3199
3200
  }
3200
3201
  case "lag":
3201
3202
  case "lead":
@@ -3241,9 +3242,9 @@ var Q = class e {
3241
3242
  nTile: e.nTile,
3242
3243
  frame: e.frame
3243
3244
  });
3244
- return s === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), D`NULL`) : s;
3245
+ return s === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), O`NULL`) : s;
3245
3246
  }
3246
- default: return fe(i);
3247
+ default: return de(i);
3247
3248
  }
3248
3249
  }
3249
3250
  static WINDOW_FUNCTION_TYPES = [
@@ -3317,7 +3318,7 @@ var Q = class e {
3317
3318
  let { postAggWindowMeasures: r } = e.categorizeForPostAggregation(t, n);
3318
3319
  return r.length > 0;
3319
3320
  }
3320
- }, gt = class {
3321
+ }, _t = class {
3321
3322
  constructor(e) {
3322
3323
  this.dateTimeBuilder = e;
3323
3324
  }
@@ -3386,7 +3387,7 @@ var Q = class e {
3386
3387
  let t = e.joinKeys.find((e) => e.targetColumn === o);
3387
3388
  if (t && t.sourceColumnObj) i.push(t.sourceColumnObj);
3388
3389
  else {
3389
- let t = D`${D.identifier(e.cteAlias)}.${D.identifier(o)}`;
3390
+ let t = O`${O.identifier(e.cteAlias)}.${O.identifier(o)}`;
3390
3391
  i.push(t);
3391
3392
  }
3392
3393
  } else {
@@ -3405,7 +3406,7 @@ var Q = class e {
3405
3406
  let r = this.dateTimeBuilder.buildTimeDimensionExpression(t.sourceColumnObj, e.granularity, n);
3406
3407
  i.push(r);
3407
3408
  } else {
3408
- let e = D`${D.identifier(a.cteAlias)}.${D.identifier(o)}`;
3409
+ let e = O`${O.identifier(a.cteAlias)}.${O.identifier(o)}`;
3409
3410
  i.push(e);
3410
3411
  }
3411
3412
  } else {
@@ -3416,13 +3417,13 @@ var Q = class e {
3416
3417
  }
3417
3418
  return i;
3418
3419
  }
3419
- }, _t = class {
3420
+ }, vt = class {
3420
3421
  dateTimeBuilder;
3421
3422
  filterBuilder;
3422
3423
  groupByBuilder;
3423
3424
  measureBuilder;
3424
3425
  constructor(e) {
3425
- this.dateTimeBuilder = new Y(e), this.filterBuilder = new X(e, this.dateTimeBuilder), this.groupByBuilder = new gt(this.dateTimeBuilder), this.measureBuilder = new Q(e);
3426
+ this.dateTimeBuilder = new Y(e), this.filterBuilder = new X(e, this.dateTimeBuilder), this.groupByBuilder = new _t(this.dateTimeBuilder), this.measureBuilder = new Q(e);
3426
3427
  }
3427
3428
  buildResolvedMeasures(e, t, n, r) {
3428
3429
  return this.measureBuilder.buildResolvedMeasures(e, t, n, r);
@@ -3433,24 +3434,24 @@ var Q = class e {
3433
3434
  let [t, a] = e.split("."), o = i.get(t);
3434
3435
  if (o && o.dimensions && o.dimensions[a]) {
3435
3436
  let t = o.dimensions[a];
3436
- r[e] = D`${W(t.sql, n)}`.as(e);
3437
+ r[e] = O`${W(t.sql, n)}`.as(e);
3437
3438
  }
3438
3439
  }
3439
3440
  if (t.measures) {
3440
3441
  let e = this.buildResolvedMeasures(t.measures, i, n);
3441
3442
  for (let n of t.measures) {
3442
3443
  let t = e.get(n);
3443
- t && typeof t == "function" && (r[n] = D`${t()}`.as(n));
3444
+ t && typeof t == "function" && (r[n] = O`${t()}`.as(n));
3444
3445
  }
3445
3446
  }
3446
3447
  if (t.timeDimensions) for (let e of t.timeDimensions) {
3447
3448
  let [t, a] = e.dimension.split("."), o = i.get(t);
3448
3449
  if (o && o.dimensions && o.dimensions[a]) {
3449
3450
  let t = o.dimensions[a], i = this.buildTimeDimensionExpression(t.sql, e.granularity, n);
3450
- r[e.dimension] = D`${i}`.as(e.dimension);
3451
+ r[e.dimension] = O`${i}`.as(e.dimension);
3451
3452
  }
3452
3453
  }
3453
- return Object.keys(r).length === 0 && (r.count = fe()), r;
3454
+ return Object.keys(r).length === 0 && (r.count = de()), r;
3454
3455
  }
3455
3456
  buildCalculatedMeasure(e, t, n, r, i) {
3456
3457
  return this.measureBuilder.buildCalculatedMeasure(e, t, n, r, i);
@@ -3487,7 +3488,7 @@ var Q = class e {
3487
3488
  if (s && s.dimensions[i] && e.dateRange) {
3488
3489
  if (r?.preAggregationCTEs && r.preAggregationCTEs.some((e) => e.cube.name === t)) continue;
3489
3490
  if (n.filterCache) {
3490
- let t = rt(e.dimension, e.dateRange), r = n.filterCache.get(t);
3491
+ let t = it(e.dimension, e.dateRange), r = n.filterCache.get(t);
3491
3492
  if (r) {
3492
3493
  a.push(r);
3493
3494
  continue;
@@ -3512,11 +3513,11 @@ var Q = class e {
3512
3513
  let a = e;
3513
3514
  if (a.and) {
3514
3515
  let e = a.and.map((e) => this.processFilter(e, t, n, r, i)).filter((e) => e !== null);
3515
- return e.length > 0 ? P(...e) : null;
3516
+ return e.length > 0 ? F(...e) : null;
3516
3517
  }
3517
3518
  if (a.or) {
3518
3519
  let e = a.or.map((e) => this.processFilter(e, t, n, r, i)).filter((e) => e !== null);
3519
- return e.length > 0 ? F(...e) : null;
3520
+ return e.length > 0 ? I(...e) : null;
3520
3521
  }
3521
3522
  }
3522
3523
  let a = e, [o, s] = a.member.split("."), c = t.get(o);
@@ -3556,12 +3557,12 @@ var Q = class e {
3556
3557
  ];
3557
3558
  if (e.order && Object.keys(e.order).length > 0) for (let [t, i] of Object.entries(e.order)) {
3558
3559
  if (!r.includes(t)) throw Error(`Cannot order by '${t}': field is not selected in the query`);
3559
- let e = i === "desc" ? de(D.identifier(t)) : ue(D.identifier(t));
3560
+ let e = i === "desc" ? ue(O.identifier(t)) : le(O.identifier(t));
3560
3561
  n.push(e);
3561
3562
  }
3562
3563
  if (e.timeDimensions && e.timeDimensions.length > 0) {
3563
3564
  let t = new Set(Object.keys(e.order || {})), r = [...e.timeDimensions].sort((e, t) => e.dimension.localeCompare(t.dimension));
3564
- for (let e of r) t.has(e.dimension) || n.push(ue(D.identifier(e.dimension)));
3565
+ for (let e of r) t.has(e.dimension) || n.push(le(O.identifier(e.dimension)));
3565
3566
  }
3566
3567
  return n;
3567
3568
  }
@@ -3596,7 +3597,7 @@ var Q = class e {
3596
3597
  buildLogicalFilter(e, t, n) {
3597
3598
  return this.filterBuilder.buildLogicalFilter(e, t, n);
3598
3599
  }
3599
- }, vt = class {
3600
+ }, yt = class {
3600
3601
  cubes;
3601
3602
  connectivityCache = /* @__PURE__ */ new Map();
3602
3603
  reverseIndex;
@@ -3803,10 +3804,10 @@ var Q = class e {
3803
3804
  buildJoinCondition(e, t, n) {
3804
3805
  let r = [];
3805
3806
  for (let i of e.on) {
3806
- let e = t ? D`${D.identifier(t)}.${D.identifier(i.source.name)}` : et(i.source), a = n ? D`${D.identifier(n)}.${D.identifier(i.target.name)}` : et(i.target), o = i.as || M;
3807
+ let e = t ? O`${O.identifier(t)}.${O.identifier(i.source.name)}` : tt(i.source), a = n ? O`${O.identifier(n)}.${O.identifier(i.target.name)}` : tt(i.target), o = i.as || N;
3807
3808
  r.push(o(e, a));
3808
3809
  }
3809
- return P(...r);
3810
+ return F(...r);
3810
3811
  }
3811
3812
  getReachableCubes(e) {
3812
3813
  let t = new Set([e]), n = [e];
@@ -3833,11 +3834,11 @@ var Q = class e {
3833
3834
  setInCache(e, t) {
3834
3835
  this.connectivityCache.set(e, { path: t });
3835
3836
  }
3836
- }, yt = class {
3837
+ }, bt = class {
3837
3838
  resolverCache = /* @__PURE__ */ new WeakMap();
3838
3839
  getResolver(e) {
3839
3840
  let t = this.resolverCache.get(e);
3840
- return t || (t = new vt(e), this.resolverCache.set(e, t)), t;
3841
+ return t || (t = new yt(e), this.resolverCache.set(e, t)), t;
3841
3842
  }
3842
3843
  analyzeCubeUsage(e) {
3843
3844
  let t = /* @__PURE__ */ new Set();
@@ -3926,9 +3927,9 @@ var Q = class e {
3926
3927
  if (s.has(n)) continue;
3927
3928
  let c = e.get(n);
3928
3929
  if (!c) throw Error(`Cube '${n}' not found`);
3929
- let u = l ? Qe(i.relationship) : i.relationship;
3930
+ let u = l ? $e(i.relationship) : i.relationship;
3930
3931
  if (u === "belongsToMany" && i.through) {
3931
- let e = nt(i, r.securityContext);
3932
+ let e = rt(i, r.securityContext);
3932
3933
  o.push({
3933
3934
  cube: c,
3934
3935
  alias: `${n.toLowerCase()}_cube`,
@@ -3945,7 +3946,7 @@ var Q = class e {
3945
3946
  }
3946
3947
  });
3947
3948
  } else {
3948
- let e = a.buildJoinCondition(i, null, null), t = $e(u, i.sqlJoinType);
3949
+ let e = a.buildJoinCondition(i, null, null), t = et(u, i.sqlJoinType);
3949
3950
  o.push({
3950
3951
  cube: c,
3951
3952
  alias: `${n.toLowerCase()}_cube`,
@@ -4041,7 +4042,7 @@ var Q = class e {
4041
4042
  joinDef: e.joinDef,
4042
4043
  reversed: e.reversed
4043
4044
  }));
4044
- if (!c.slice(0, -1).some((e) => (e.reversed ? Qe(e.joinDef.relationship) : e.joinDef.relationship) === "hasMany")) return {
4045
+ if (!c.slice(0, -1).some((e) => (e.reversed ? $e(e.joinDef.relationship) : e.joinDef.relationship) === "hasMany")) return {
4045
4046
  path: c,
4046
4047
  hasIntermediateHasMany: !1,
4047
4048
  intermediateJoins: [],
@@ -4345,7 +4346,7 @@ var Q = class e {
4345
4346
  }
4346
4347
  convertInternalPathToJoinPathSteps(e) {
4347
4348
  return e.map((e) => {
4348
- let t = e.reversed ? Qe(e.joinDef.relationship) : e.joinDef.relationship, n = $e(t, e.joinDef.sqlJoinType), r = e.joinDef.on.map((e) => ({
4349
+ let t = e.reversed ? $e(e.joinDef.relationship) : e.joinDef.relationship, n = et(t, e.joinDef.sqlJoinType), r = e.joinDef.on.map((e) => ({
4349
4350
  sourceColumn: e.source.name,
4350
4351
  targetColumn: e.target.name
4351
4352
  })), i = {
@@ -4410,7 +4411,7 @@ var Q = class e {
4410
4411
  suggestion: "Add a dimension to see per-group breakdowns, or add a time dimension with granularity."
4411
4412
  };
4412
4413
  }
4413
- }, bt = class {
4414
+ }, xt = class {
4414
4415
  constructor(e) {
4415
4416
  this.queryBuilder = e;
4416
4417
  }
@@ -4424,19 +4425,19 @@ var Q = class e {
4424
4425
  }
4425
4426
  } else for (let t of e.joinKeys) if (t.targetColumnObj) {
4426
4427
  c[t.targetColumn] = t.targetColumnObj;
4427
- for (let [e, n] of Object.entries(a.dimensions || {})) n.sql === t.targetColumnObj && e !== t.targetColumn && (c[e] = D`${t.targetColumnObj}`.as(e));
4428
+ for (let [e, n] of Object.entries(a.dimensions || {})) n.sql === t.targetColumnObj && e !== t.targetColumn && (c[e] = O`${t.targetColumnObj}`.as(e));
4428
4429
  }
4429
4430
  if (e.downstreamJoinKeys) for (let t of e.downstreamJoinKeys) for (let e of t.joinKeys) e.sourceColumnObj && (c[e.sourceColumn] = e.sourceColumnObj);
4430
4431
  let l = a.name, u = new Map([[l, a]]), d = this.queryBuilder.buildResolvedMeasures(e.measures, u, n);
4431
4432
  for (let t of e.measures) {
4432
4433
  let [, e] = t.split("."), n = d.get(t);
4433
- n && (c[e] = D`${n()}`.as(e));
4434
+ n && (c[e] = O`${n()}`.as(e));
4434
4435
  }
4435
4436
  if (t.dimensions) for (let e of t.dimensions) {
4436
4437
  let [t, r] = e.split(".");
4437
4438
  if (t === l && a.dimensions && a.dimensions[r]) {
4438
4439
  let e = a.dimensions[r];
4439
- c[r] = D`${this.queryBuilder.buildMeasureExpression({
4440
+ c[r] = O`${this.queryBuilder.buildMeasureExpression({
4440
4441
  sql: e.sql,
4441
4442
  type: "number"
4442
4443
  }, n)}`.as(r);
@@ -4446,7 +4447,7 @@ var Q = class e {
4446
4447
  let [t, r] = e.dimension.split(".");
4447
4448
  if (t === l && a.dimensions && a.dimensions[r]) {
4448
4449
  let t = a.dimensions[r];
4449
- c[r] = D`${this.queryBuilder.buildTimeDimensionExpression(t.sql, e.granularity, n)}`.as(r);
4450
+ c[r] = O`${this.queryBuilder.buildTimeDimensionExpression(t.sql, e.granularity, n)}`.as(r);
4450
4451
  }
4451
4452
  }
4452
4453
  if (Object.keys(c).length === 0) return null;
@@ -4454,8 +4455,8 @@ var Q = class e {
4454
4455
  if (s && e.intermediateJoins) {
4455
4456
  let t = [...e.intermediateJoins].reverse();
4456
4457
  for (let e of t) {
4457
- let t = e.cube.sql(n), r = [M(e.cteJoinColumn, e.joinDef.on[0]?.target)];
4458
- e.securityFilter && r.push(e.securityFilter), f = f.leftJoin(t.from, P(...r));
4458
+ let t = e.cube.sql(n), r = [N(e.cteJoinColumn, e.joinDef.on[0]?.target)];
4459
+ e.securityFilter && r.push(e.securityFilter), f = f.leftJoin(t.from, F(...r));
4459
4460
  }
4460
4461
  }
4461
4462
  let p = r ? {
@@ -4493,7 +4494,7 @@ var Q = class e {
4493
4494
  }
4494
4495
  let g = [];
4495
4496
  if (o.where && g.push(o.where), g.push(...m, ...h), g.length > 0) {
4496
- let e = g.length === 1 ? g[0] : P(...g);
4497
+ let e = g.length === 1 ? g[0] : F(...g);
4497
4498
  f = f.where(e);
4498
4499
  }
4499
4500
  let _ = [], v = /* @__PURE__ */ new Set(), y = (e) => {
@@ -4526,20 +4527,20 @@ var Q = class e {
4526
4527
  if (!r) throw Error(`CTE info not found for cube ${e.cube.name}`);
4527
4528
  let i = [];
4528
4529
  if (r.intermediateJoins && r.intermediateJoins.length > 0) {
4529
- let e = r.intermediateJoins[0], a = this.resolveCTEJoinSourceColumn(r.joinKeys[0], r, n), o = D`${D.identifier(t)}.${D.identifier(e.primaryJoinColumn.name)}`;
4530
- i.push(M(a, o));
4530
+ let e = r.intermediateJoins[0], a = this.resolveCTEJoinSourceColumn(r.joinKeys[0], r, n), o = O`${O.identifier(t)}.${O.identifier(e.primaryJoinColumn.name)}`;
4531
+ i.push(N(a, o));
4531
4532
  } else for (let e of r.joinKeys) {
4532
- let a = this.resolveCTEJoinSourceColumn(e, r, n), o = D`${D.identifier(t)}.${D.identifier(e.targetColumn)}`;
4533
- i.push(M(a, o));
4533
+ let a = this.resolveCTEJoinSourceColumn(e, r, n), o = O`${O.identifier(t)}.${O.identifier(e.targetColumn)}`;
4534
+ i.push(N(a, o));
4534
4535
  }
4535
- return i.length === 1 ? i[0] : P(...i);
4536
+ return i.length === 1 ? i[0] : F(...i);
4536
4537
  }
4537
4538
  resolveCTEJoinSourceColumn(e, t, n) {
4538
4539
  if (!e) throw Error(`Missing join key while building CTE join condition for '${t.cube.name}'`);
4539
- let r = e.sourceColumnObj || D.identifier(e.sourceColumn);
4540
+ let r = e.sourceColumnObj || O.identifier(e.sourceColumn);
4540
4541
  if (!e.sourceColumnObj || !n.preAggregationCTEs) return r;
4541
4542
  for (let r of n.preAggregationCTEs) if (r.cube.name !== t.cube.name) {
4542
- for (let [t, n] of Object.entries(r.cube.dimensions || {})) if (typeof n.sql != "function" && n.sql === e.sourceColumnObj) return D`${D.identifier(r.cteAlias)}.${D.identifier(t)}`;
4543
+ for (let [t, n] of Object.entries(r.cube.dimensions || {})) if (typeof n.sql != "function" && n.sql === e.sourceColumnObj) return O`${O.identifier(r.cteAlias)}.${O.identifier(t)}`;
4543
4544
  }
4544
4545
  return r;
4545
4546
  }
@@ -4551,24 +4552,24 @@ var Q = class e {
4551
4552
  i.push(...o);
4552
4553
  }
4553
4554
  if (i.length === 0) return null;
4554
- let a = i.length === 1 ? i[0] : P(...i), o = e.joinConditions;
4555
+ let a = i.length === 1 ? i[0] : F(...i), o = e.joinConditions;
4555
4556
  if (o.length === 1) {
4556
4557
  let { source: e, target: n } = o[0];
4557
- return D`${n} IN ${t.db.select({ pk: e }).from(r.from).where(a)}`;
4558
+ return O`${n} IN ${t.db.select({ pk: e }).from(r.from).where(a)}`;
4558
4559
  } else {
4559
- let e = P(...o.map((e) => M(e.source, e.target)), a);
4560
- return D`EXISTS ${t.db.select({ one: D`1` }).from(r.from).where(e)}`;
4560
+ let e = F(...o.map((e) => N(e.source, e.target)), a);
4561
+ return O`EXISTS ${t.db.select({ one: O`1` }).from(r.from).where(e)}`;
4561
4562
  }
4562
4563
  }
4563
4564
  };
4564
4565
  //#endregion
4565
4566
  //#region src/server/gap-filler.ts
4566
- function xt(e, t, n) {
4567
- let r = [], i = St(new Date(e), n), a = St(new Date(t), n);
4568
- for (; i <= a && r.length < 1e4;) r.push(new Date(i)), i = Ct(i, n);
4567
+ function St(e, t, n) {
4568
+ let r = [], i = Ct(new Date(e), n), a = Ct(new Date(t), n);
4569
+ for (; i <= a && r.length < 1e4;) r.push(new Date(i)), i = wt(i, n);
4569
4570
  return r;
4570
4571
  }
4571
- function St(e, t) {
4572
+ function Ct(e, t) {
4572
4573
  let n = new Date(e);
4573
4574
  switch (t) {
4574
4575
  case "second":
@@ -4602,7 +4603,7 @@ function St(e, t) {
4602
4603
  }
4603
4604
  return n;
4604
4605
  }
4605
- function Ct(e, t) {
4606
+ function wt(e, t) {
4606
4607
  let n = new Date(e);
4607
4608
  switch (t) {
4608
4609
  case "second":
@@ -4632,7 +4633,7 @@ function Ct(e, t) {
4632
4633
  }
4633
4634
  return n;
4634
4635
  }
4635
- function wt(e) {
4636
+ function Tt(e) {
4636
4637
  if (e instanceof Date) return e.toISOString();
4637
4638
  if (typeof e == "string") {
4638
4639
  let t = new Date(e);
@@ -4640,15 +4641,15 @@ function wt(e) {
4640
4641
  }
4641
4642
  return String(e);
4642
4643
  }
4643
- function Tt(e, t) {
4644
+ function Et(e, t) {
4644
4645
  return t.length === 0 ? "__all__" : t.map((t) => String(e[t] ?? "")).join("|||");
4645
4646
  }
4646
- function Et(e, t) {
4647
- let { timeDimensionKey: n, granularity: r, dateRange: i, fillValue: a, measures: o, dimensions: s } = t, c = xt(i[0], i[1], r);
4647
+ function Dt(e, t) {
4648
+ let { timeDimensionKey: n, granularity: r, dateRange: i, fillValue: a, measures: o, dimensions: s } = t, c = St(i[0], i[1], r);
4648
4649
  if (c.length === 0) return e;
4649
4650
  let l = /* @__PURE__ */ new Map();
4650
4651
  for (let t of e) {
4651
- let e = Tt(t, s), r = wt(t[n]);
4652
+ let e = Et(t, s), r = Tt(t[n]);
4652
4653
  l.has(e) || l.set(e, /* @__PURE__ */ new Map()), l.get(e).set(r, t);
4653
4654
  }
4654
4655
  l.size === 0 && s.length === 0 && l.set("__all__", /* @__PURE__ */ new Map());
@@ -4668,7 +4669,7 @@ function Et(e, t) {
4668
4669
  }
4669
4670
  return u;
4670
4671
  }
4671
- function Dt(e) {
4672
+ function Ot(e) {
4672
4673
  if (!e) return null;
4673
4674
  if (Array.isArray(e)) {
4674
4675
  if (e.length < 2) return null;
@@ -4678,7 +4679,7 @@ function Dt(e) {
4678
4679
  let t = new Date(e);
4679
4680
  return isNaN(t.getTime()) ? null : [t, t];
4680
4681
  }
4681
- function Ot(e, t, n) {
4682
+ function kt(e, t, n) {
4682
4683
  if (!t.timeDimensions || t.timeDimensions.length === 0) return e;
4683
4684
  let r = t.timeDimensions.filter((e) => {
4684
4685
  let t = e.fillMissingDates !== !1, n = e.granularity && e.dateRange;
@@ -4687,7 +4688,7 @@ function Ot(e, t, n) {
4687
4688
  if (r.length === 0) return e;
4688
4689
  let i = t.fillMissingDatesValue === void 0 ? 0 : t.fillMissingDatesValue, a = new Set(t.timeDimensions.map((e) => e.dimension)), o = (t.dimensions || []).filter((e) => !a.has(e)), s = e;
4689
4690
  for (let e of r) {
4690
- let t = Dt(e.dateRange);
4691
+ let t = Ot(e.dateRange);
4691
4692
  if (!t) continue;
4692
4693
  let r = {
4693
4694
  timeDimensionKey: e.dimension,
@@ -4697,13 +4698,13 @@ function Ot(e, t, n) {
4697
4698
  measures: n,
4698
4699
  dimensions: o
4699
4700
  };
4700
- s = Et(s, r);
4701
+ s = Dt(s, r);
4701
4702
  }
4702
4703
  return s;
4703
4704
  }
4704
4705
  //#endregion
4705
4706
  //#region src/server/builders/comparison-query-builder.ts
4706
- var kt = class {
4707
+ var At = class {
4707
4708
  dateTimeBuilder;
4708
4709
  constructor(e) {
4709
4710
  this.dateTimeBuilder = new Y(e);
@@ -4834,7 +4835,7 @@ var kt = class {
4834
4835
  return typeof i == "string" && typeof a == "string" ? new Date(i).getTime() - new Date(a).getTime() : 0;
4835
4836
  });
4836
4837
  }
4837
- }, At = class {
4838
+ }, jt = class {
4838
4839
  filterBuilder;
4839
4840
  dateTimeBuilder;
4840
4841
  constructor(e) {
@@ -4873,7 +4874,7 @@ var kt = class {
4873
4874
  if (i.name || n.push(`Step ${r} must have a name`), "cube" in i && i.cube && (t.get(i.cube) || n.push(`Step ${r} cube not found: ${i.cube}`)), i.filter) {
4874
4875
  let a;
4875
4876
  "cube" in i && i.cube ? a = i.cube : typeof e.bindingKey == "string" && ([a] = e.bindingKey.split("."));
4876
- let o = a ? new vt(t) : null, s = Array.isArray(i.filter) ? i.filter : [i.filter];
4877
+ let o = a ? new yt(t) : null, s = Array.isArray(i.filter) ? i.filter : [i.filter];
4877
4878
  for (let e of s) if ("member" in e) {
4878
4879
  let [i, s] = e.member.split("."), c = t.get(i);
4879
4880
  if (!c) n.push(`Step ${r} filter cube not found: ${i}`);
@@ -4936,7 +4937,7 @@ var kt = class {
4936
4937
  return t;
4937
4938
  }
4938
4939
  resolveSteps(e, t, n) {
4939
- let r = new vt(t);
4940
+ let r = new yt(t);
4940
4941
  return e.steps.map((i, a) => {
4941
4942
  let o = this.resolveCubeForStep(i, e, t), s = this.resolveBindingKey(e, o, n), c = this.resolveTimeDimension(e, o, n), l = this.buildStepFilters(i, o, t, n), u = this.extractFilterCubeNames(i), d = [];
4942
4943
  for (let e of u) if (e !== o.name) {
@@ -5027,14 +5028,14 @@ var kt = class {
5027
5028
  a && i.push(a);
5028
5029
  }
5029
5030
  }
5030
- return i.length === 0 ? null : i.length === 1 ? i[0] : o ? P(...i) : D`(${D.join(i, D` OR `)})`;
5031
+ return i.length === 0 ? null : i.length === 1 ? i[0] : o ? F(...i) : O`(${O.join(i, O` OR `)})`;
5031
5032
  }
5032
5033
  let o = e, [s, c] = o.member.split("."), l = o.dateRange !== void 0;
5033
5034
  if (o.operator !== "set" && o.operator !== "notSet" && !l && (!o.values || o.values.length === 0 || o.values[0] === void 0 || o.values[0] === "")) return null;
5034
5035
  let u = n.get(s);
5035
5036
  if (!u) return null;
5036
5037
  if (s !== t.name) {
5037
- let e = new vt(n).findPath(t.name, s);
5038
+ let e = new yt(n).findPath(t.name, s);
5038
5039
  if (!e || e.length === 0) return console.warn(`Funnel filter: Cannot filter by '${String(s).replace(/\n|\r/g, "")}.${String(c).replace(/\n|\r/g, "")}' in step using '${String(t.name).replace(/\n|\r/g, "")}'. No join path found. Filter will be skipped.`), null;
5039
5040
  }
5040
5041
  let d = u.dimensions?.[c];
@@ -5049,11 +5050,11 @@ var kt = class {
5049
5050
  let n = `step_${e.index}`, r = e.cube.sql(t), i = [];
5050
5051
  r.where && i.push(r.where), i.push(...e.filterConditions);
5051
5052
  let a = t.db.select({
5052
- binding_key: D`${e.bindingKeyExpr}`.as("binding_key"),
5053
- step_time: D`MIN(${e.timeExpr})`.as("step_time")
5053
+ binding_key: O`${e.bindingKeyExpr}`.as("binding_key"),
5054
+ step_time: O`MIN(${e.timeExpr})`.as("step_time")
5054
5055
  }).from(r.from);
5055
5056
  if (a = this.addCrossJoinsToQuery(a, e, t, i), i.length > 0) {
5056
- let e = i.length === 1 ? i[0] : P(...i);
5057
+ let e = i.length === 1 ? i[0] : F(...i);
5057
5058
  a = a.where(e);
5058
5059
  }
5059
5060
  return a = a.groupBy(e.bindingKeyExpr), t.db.$with(n).as(a);
@@ -5061,18 +5062,18 @@ var kt = class {
5061
5062
  buildSubsequentStepCTE(e, t, n) {
5062
5063
  let r = `step_${e.index}`, i = `step_${e.index - 1}`, a = e.cube.sql(t), o = [];
5063
5064
  a.where && o.push(a.where), o.push(...e.filterConditions);
5064
- let s = D`${D.identifier(i)}.step_time`, c = D`${e.timeExpr} > ${s}`;
5065
+ let s = O`${O.identifier(i)}.step_time`, c = O`${e.timeExpr} > ${s}`;
5065
5066
  if (e.timeToConvert) {
5066
5067
  let t = this.databaseAdapter.buildDateAddInterval(s, e.timeToConvert);
5067
- c = D`${c} AND ${e.timeExpr} <= ${t}`;
5068
+ c = O`${c} AND ${e.timeExpr} <= ${t}`;
5068
5069
  }
5069
5070
  o.push(c);
5070
5071
  let l = t.db.select({
5071
- binding_key: D`${e.bindingKeyExpr}`.as("binding_key"),
5072
- step_time: D`MIN(${e.timeExpr})`.as("step_time")
5073
- }).from(a.from).innerJoin(n, D`${e.bindingKeyExpr} = ${D.identifier(i)}.binding_key`);
5072
+ binding_key: O`${e.bindingKeyExpr}`.as("binding_key"),
5073
+ step_time: O`MIN(${e.timeExpr})`.as("step_time")
5074
+ }).from(a.from).innerJoin(n, O`${e.bindingKeyExpr} = ${O.identifier(i)}.binding_key`);
5074
5075
  if (l = this.addCrossJoinsToQuery(l, e, t, o), o.length > 0) {
5075
- let e = o.length === 1 ? o[0] : P(...o);
5076
+ let e = o.length === 1 ? o[0] : F(...o);
5076
5077
  l = l.where(e);
5077
5078
  }
5078
5079
  return l = l.groupBy(e.bindingKeyExpr), t.db.$with(r).as(l);
@@ -5081,41 +5082,41 @@ var kt = class {
5081
5082
  if (t.joinedCubes.length === 0) return e;
5082
5083
  for (let i of t.joinedCubes) for (let t of i.joinPath) {
5083
5084
  let a = t.joinDef, o = [];
5084
- for (let e of a.on) e.as ? o.push(e.as(e.source, e.target)) : o.push(M(e.source, e.target));
5085
- let s = o.length === 1 ? o[0] : P(...o), c = i.cube.sql(n);
5085
+ for (let e of a.on) e.as ? o.push(e.as(e.source, e.target)) : o.push(N(e.source, e.target));
5086
+ let s = o.length === 1 ? o[0] : F(...o), c = i.cube.sql(n);
5086
5087
  e = e.leftJoin(c.from, s), c.where && r.push(c.where);
5087
5088
  }
5088
5089
  return e;
5089
5090
  }
5090
5091
  buildFunnelResultsCTE(e, t, n, r) {
5091
5092
  let i = {
5092
- binding_key: D`s0.binding_key`,
5093
- step_0_time: D`s0.step_time`
5093
+ binding_key: O`s0.binding_key`,
5094
+ step_0_time: O`s0.step_time`
5094
5095
  };
5095
- for (let e = 1; e < t.length; e++) i[`step_${e}_time`] = D`s${D.raw(String(e))}.step_time`;
5096
- let a = D`${D.identifier("step_0")} s0`;
5097
- for (let e = 1; e < t.length; e++) a = D`${a}
5098
- LEFT JOIN ${D.identifier(`step_${e}`)} s${D.raw(String(e))} ON s0.binding_key = s${D.raw(String(e))}.binding_key`;
5099
- let o = Object.entries(i).map(([e, t]) => D`${t} AS ${D.identifier(e)}`), s = D`SELECT ${D.join(o, D`, `)} FROM ${a}`;
5096
+ for (let e = 1; e < t.length; e++) i[`step_${e}_time`] = O`s${O.raw(String(e))}.step_time`;
5097
+ let a = O`${O.identifier("step_0")} s0`;
5098
+ for (let e = 1; e < t.length; e++) a = O`${a}
5099
+ LEFT JOIN ${O.identifier(`step_${e}`)} s${O.raw(String(e))} ON s0.binding_key = s${O.raw(String(e))}.binding_key`;
5100
+ let o = Object.entries(i).map(([e, t]) => O`${t} AS ${O.identifier(e)}`), s = O`SELECT ${O.join(o, O`, `)} FROM ${a}`;
5100
5101
  return r.db.$with("funnel_joined").as(s);
5101
5102
  }
5102
5103
  buildAggregationCTE(e, t, n, r, i) {
5103
5104
  let a = {};
5104
- a.step_0_count = D`COUNT(*)`.as("step_0_count");
5105
- for (let e = 1; e < n.length; e++) a[`step_${e}_count`] = D`COUNT(${D.identifier(`step_${e}_time`)})`.as(`step_${e}_count`);
5105
+ a.step_0_count = O`COUNT(*)`.as("step_0_count");
5106
+ for (let e = 1; e < n.length; e++) a[`step_${e}_count`] = O`COUNT(${O.identifier(`step_${e}_time`)})`.as(`step_${e}_count`);
5106
5107
  if (r.includeTimeMetrics) for (let e = 1; e < n.length; e++) {
5107
- let t = D.identifier(`step_${e}_time`), n = D.identifier(`step_${e - 1}_time`), r = this.databaseAdapter.buildTimeDifferenceSeconds(D`${t}`, D`${n}`), i = D`${t} IS NOT NULL`;
5108
+ let t = O.identifier(`step_${e}_time`), n = O.identifier(`step_${e - 1}_time`), r = this.databaseAdapter.buildTimeDifferenceSeconds(O`${t}`, O`${n}`), i = O`${t} IS NOT NULL`;
5108
5109
  if (a[`step_${e}_avg_seconds`] = this.databaseAdapter.buildConditionalAggregation("avg", r, i).as(`step_${e}_avg_seconds`), a[`step_${e}_min_seconds`] = this.databaseAdapter.buildConditionalAggregation("min", r, i).as(`step_${e}_min_seconds`), a[`step_${e}_max_seconds`] = this.databaseAdapter.buildConditionalAggregation("max", r, i).as(`step_${e}_max_seconds`), this.databaseAdapter.getCapabilities().supportsPercentileSubqueries) {
5109
5110
  let n = this.databaseAdapter.buildPercentile(r, 50);
5110
- n && (a[`step_${e}_median_seconds`] = D`(SELECT ${n} FROM ${D.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_median_seconds`));
5111
+ n && (a[`step_${e}_median_seconds`] = O`(SELECT ${n} FROM ${O.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_median_seconds`));
5111
5112
  let i = this.databaseAdapter.buildPercentile(r, 90);
5112
- i && (a[`step_${e}_p90_seconds`] = D`(SELECT ${i} FROM ${D.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_p90_seconds`));
5113
+ i && (a[`step_${e}_p90_seconds`] = O`(SELECT ${i} FROM ${O.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_p90_seconds`));
5113
5114
  }
5114
5115
  }
5115
5116
  let o = i.db.select(a).from(e);
5116
5117
  return i.db.$with("funnel_metrics").as(o);
5117
5118
  }
5118
- }, jt = class {
5119
+ }, Mt = class {
5119
5120
  filterBuilder;
5120
5121
  dateTimeBuilder;
5121
5122
  databaseAdapter;
@@ -5282,7 +5283,7 @@ var kt = class {
5282
5283
  let r = this.buildFilterCondition(e, t, n);
5283
5284
  r && i.push(r);
5284
5285
  }
5285
- return i.length === 0 ? null : i.length === 1 ? i[0] : "and" in e ? P(...i) : D`(${D.join(i, D` OR `)})`;
5286
+ return i.length === 0 ? null : i.length === 1 ? i[0] : "and" in e ? F(...i) : O`(${O.join(i, O` OR `)})`;
5286
5287
  }
5287
5288
  if ("type" in e && "filters" in e) {
5288
5289
  let r = e, i = [];
@@ -5290,7 +5291,7 @@ var kt = class {
5290
5291
  let r = this.buildFilterCondition(e, t, n);
5291
5292
  r && i.push(r);
5292
5293
  }
5293
- return i.length === 0 ? null : i.length === 1 ? i[0] : r.type === "and" ? P(...i) : D`(${D.join(i, D` OR `)})`;
5294
+ return i.length === 0 ? null : i.length === 1 ? i[0] : r.type === "and" ? F(...i) : O`(${O.join(i, O` OR `)})`;
5294
5295
  }
5295
5296
  let r = e, [, i] = r.member.split("."), a = t.dimensions?.[i];
5296
5297
  if (!a) return null;
@@ -5301,13 +5302,13 @@ var kt = class {
5301
5302
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o, startingStepFilters: s } = t, c = [];
5302
5303
  r.where && c.push(r.where), c.push(...s);
5303
5304
  let l = n.db.select({
5304
- binding_key: D`${i}`.as("binding_key"),
5305
- start_time: D`MIN(${a})`.as("start_time"),
5306
- event_type: D`${o}`.as("event_type"),
5307
- event_path: D`${o}`.as("event_path")
5305
+ binding_key: O`${i}`.as("binding_key"),
5306
+ start_time: O`MIN(${a})`.as("start_time"),
5307
+ event_type: O`${o}`.as("event_type"),
5308
+ event_path: O`${o}`.as("event_path")
5308
5309
  }).from(r.from);
5309
5310
  if (c.length > 0) {
5310
- let e = c.length === 1 ? c[0] : P(...c);
5311
+ let e = c.length === 1 ? c[0] : F(...c);
5311
5312
  l = l.where(e);
5312
5313
  }
5313
5314
  return l = l.groupBy(i, o), e.entityLimit && (l = l.limit(e.entityLimit)), n.db.$with("starting_entities").as(l);
@@ -5316,18 +5317,18 @@ var kt = class {
5316
5317
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o } = t, s = [], c = e.outputMode === "sunburst";
5317
5318
  for (let t = 1; t <= e.stepsBefore; t++) {
5318
5319
  let e = t === 1 ? "starting_entities" : `before_step_${t - 1}`, l = t === 1 ? "start_time" : "step_time", u = `before_step_${t}`, d = [];
5319
- r.where && d.push(r.where), d.push(D`${i} = ${D.identifier(e)}.binding_key`, D`${a} < ${D.identifier(e)}.${D.identifier(l)}`);
5320
- let f = d.length === 1 ? d[0] : P(...d), p = c ? D`${o} || ${"→"} || ${D.identifier(e)}.event_path` : D`${o}`, m = n.db.select({
5321
- binding_key: D`${i}`.as("binding_key"),
5322
- step_time: D`${a}`.as("step_time"),
5323
- event_type: D`${o}`.as("event_type"),
5320
+ r.where && d.push(r.where), d.push(O`${i} = ${O.identifier(e)}.binding_key`, O`${a} < ${O.identifier(e)}.${O.identifier(l)}`);
5321
+ let f = d.length === 1 ? d[0] : F(...d), p = c ? O`${o} || ${"→"} || ${O.identifier(e)}.event_path` : O`${o}`, m = n.db.select({
5322
+ binding_key: O`${i}`.as("binding_key"),
5323
+ step_time: O`${a}`.as("step_time"),
5324
+ event_type: O`${o}`.as("event_type"),
5324
5325
  event_path: p.as("event_path")
5325
- }).from(r.from).where(f).orderBy(D`${a} DESC`).limit(1), h = n.db.$with(u).as(n.db.select({
5326
- binding_key: D`e.binding_key`.as("binding_key"),
5327
- step_time: D`e.step_time`.as("step_time"),
5328
- event_type: D`e.event_type`.as("event_type"),
5329
- event_path: D`e.event_path`.as("event_path")
5330
- }).from(D`${D.identifier(e)}`).crossJoinLateral(m.as("e")));
5326
+ }).from(r.from).where(f).orderBy(O`${a} DESC`).limit(1), h = n.db.$with(u).as(n.db.select({
5327
+ binding_key: O`e.binding_key`.as("binding_key"),
5328
+ step_time: O`e.step_time`.as("step_time"),
5329
+ event_type: O`e.event_type`.as("event_type"),
5330
+ event_path: O`e.event_path`.as("event_path")
5331
+ }).from(O`${O.identifier(e)}`).crossJoinLateral(m.as("e")));
5331
5332
  s.push(h);
5332
5333
  }
5333
5334
  return s;
@@ -5336,18 +5337,18 @@ var kt = class {
5336
5337
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o } = t, s = [], c = e.outputMode === "sunburst";
5337
5338
  for (let t = 1; t <= e.stepsAfter; t++) {
5338
5339
  let e = t === 1 ? "starting_entities" : `after_step_${t - 1}`, l = t === 1 ? "start_time" : "step_time", u = `after_step_${t}`, d = [];
5339
- r.where && d.push(r.where), d.push(D`${i} = ${D.identifier(e)}.binding_key`, D`${a} > ${D.identifier(e)}.${D.identifier(l)}`);
5340
- let f = d.length === 1 ? d[0] : P(...d), p = c ? D`${D.identifier(e)}.event_path || ${"→"} || ${o}` : D`${o}`, m = n.db.select({
5341
- binding_key: D`${i}`.as("binding_key"),
5342
- step_time: D`${a}`.as("step_time"),
5343
- event_type: D`${o}`.as("event_type"),
5340
+ r.where && d.push(r.where), d.push(O`${i} = ${O.identifier(e)}.binding_key`, O`${a} > ${O.identifier(e)}.${O.identifier(l)}`);
5341
+ let f = d.length === 1 ? d[0] : F(...d), p = c ? O`${O.identifier(e)}.event_path || ${"→"} || ${o}` : O`${o}`, m = n.db.select({
5342
+ binding_key: O`${i}`.as("binding_key"),
5343
+ step_time: O`${a}`.as("step_time"),
5344
+ event_type: O`${o}`.as("event_type"),
5344
5345
  event_path: p.as("event_path")
5345
- }).from(r.from).where(f).orderBy(D`${a} ASC`).limit(1), h = n.db.$with(u).as(n.db.select({
5346
- binding_key: D`e.binding_key`.as("binding_key"),
5347
- step_time: D`e.step_time`.as("step_time"),
5348
- event_type: D`e.event_type`.as("event_type"),
5349
- event_path: D`e.event_path`.as("event_path")
5350
- }).from(D`${D.identifier(e)}`).crossJoinLateral(m.as("e")));
5346
+ }).from(r.from).where(f).orderBy(O`${a} ASC`).limit(1), h = n.db.$with(u).as(n.db.select({
5347
+ binding_key: O`e.binding_key`.as("binding_key"),
5348
+ step_time: O`e.step_time`.as("step_time"),
5349
+ event_type: O`e.event_type`.as("event_type"),
5350
+ event_path: O`e.event_path`.as("event_path")
5351
+ }).from(O`${O.identifier(e)}`).crossJoinLateral(m.as("e")));
5351
5352
  s.push(h);
5352
5353
  }
5353
5354
  return s;
@@ -5356,19 +5357,19 @@ var kt = class {
5356
5357
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o } = t, s = [], c = e.outputMode === "sunburst";
5357
5358
  for (let t = 1; t <= e.stepsBefore; t++) {
5358
5359
  let e = t === 1 ? "starting_entities" : `before_step_${t - 1}`, l = t === 1 ? "start_time" : "step_time", u = `before_step_${t}`, d = [];
5359
- r.where && d.push(r.where), d.push(D`${a} < ${D.identifier(e)}.${D.identifier(l)}`);
5360
- let f = d.length === 1 ? d[0] : P(...d), p = c ? D`${o} || ${"→"} || ${D.identifier(e)}.event_path` : D`${o}`, m = n.db.select({
5361
- binding_key: D`${i}`.as("binding_key"),
5362
- step_time: D`${a}`.as("step_time"),
5363
- event_type: D`${o}`.as("event_type"),
5360
+ r.where && d.push(r.where), d.push(O`${a} < ${O.identifier(e)}.${O.identifier(l)}`);
5361
+ let f = d.length === 1 ? d[0] : F(...d), p = c ? O`${o} || ${"→"} || ${O.identifier(e)}.event_path` : O`${o}`, m = n.db.select({
5362
+ binding_key: O`${i}`.as("binding_key"),
5363
+ step_time: O`${a}`.as("step_time"),
5364
+ event_type: O`${o}`.as("event_type"),
5364
5365
  event_path: p.as("event_path"),
5365
- rn: D`ROW_NUMBER() OVER (PARTITION BY ${i} ORDER BY ${a} DESC)`.as("rn")
5366
- }).from(r.from).innerJoin(D`${D.identifier(e)}`, D`${i} = ${D.identifier(e)}.binding_key`).where(f), h = n.db.select({
5367
- binding_key: D`binding_key`.as("binding_key"),
5368
- step_time: D`step_time`.as("step_time"),
5369
- event_type: D`event_type`.as("event_type"),
5370
- event_path: D`event_path`.as("event_path")
5371
- }).from(m.as("ranked")).where(D`rn = 1`);
5366
+ rn: O`ROW_NUMBER() OVER (PARTITION BY ${i} ORDER BY ${a} DESC)`.as("rn")
5367
+ }).from(r.from).innerJoin(O`${O.identifier(e)}`, O`${i} = ${O.identifier(e)}.binding_key`).where(f), h = n.db.select({
5368
+ binding_key: O`binding_key`.as("binding_key"),
5369
+ step_time: O`step_time`.as("step_time"),
5370
+ event_type: O`event_type`.as("event_type"),
5371
+ event_path: O`event_path`.as("event_path")
5372
+ }).from(m.as("ranked")).where(O`rn = 1`);
5372
5373
  s.push(n.db.$with(u).as(h));
5373
5374
  }
5374
5375
  return s;
@@ -5377,19 +5378,19 @@ var kt = class {
5377
5378
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o } = t, s = [], c = e.outputMode === "sunburst";
5378
5379
  for (let t = 1; t <= e.stepsAfter; t++) {
5379
5380
  let e = t === 1 ? "starting_entities" : `after_step_${t - 1}`, l = t === 1 ? "start_time" : "step_time", u = `after_step_${t}`, d = [];
5380
- r.where && d.push(r.where), d.push(D`${a} > ${D.identifier(e)}.${D.identifier(l)}`);
5381
- let f = d.length === 1 ? d[0] : P(...d), p = c ? D`${D.identifier(e)}.event_path || ${"→"} || ${o}` : D`${o}`, m = n.db.select({
5382
- binding_key: D`${i}`.as("binding_key"),
5383
- step_time: D`${a}`.as("step_time"),
5384
- event_type: D`${o}`.as("event_type"),
5381
+ r.where && d.push(r.where), d.push(O`${a} > ${O.identifier(e)}.${O.identifier(l)}`);
5382
+ let f = d.length === 1 ? d[0] : F(...d), p = c ? O`${O.identifier(e)}.event_path || ${"→"} || ${o}` : O`${o}`, m = n.db.select({
5383
+ binding_key: O`${i}`.as("binding_key"),
5384
+ step_time: O`${a}`.as("step_time"),
5385
+ event_type: O`${o}`.as("event_type"),
5385
5386
  event_path: p.as("event_path"),
5386
- rn: D`ROW_NUMBER() OVER (PARTITION BY ${i} ORDER BY ${a} ASC)`.as("rn")
5387
- }).from(r.from).innerJoin(D`${D.identifier(e)}`, D`${i} = ${D.identifier(e)}.binding_key`).where(f), h = n.db.select({
5388
- binding_key: D`binding_key`.as("binding_key"),
5389
- step_time: D`step_time`.as("step_time"),
5390
- event_type: D`event_type`.as("event_type"),
5391
- event_path: D`event_path`.as("event_path")
5392
- }).from(m.as("ranked")).where(D`rn = 1`);
5387
+ rn: O`ROW_NUMBER() OVER (PARTITION BY ${i} ORDER BY ${a} ASC)`.as("rn")
5388
+ }).from(r.from).innerJoin(O`${O.identifier(e)}`, O`${i} = ${O.identifier(e)}.binding_key`).where(f), h = n.db.select({
5389
+ binding_key: O`binding_key`.as("binding_key"),
5390
+ step_time: O`step_time`.as("step_time"),
5391
+ event_type: O`event_type`.as("event_type"),
5392
+ event_path: O`event_path`.as("event_path")
5393
+ }).from(m.as("ranked")).where(O`rn = 1`);
5393
5394
  s.push(n.db.$with(u).as(h));
5394
5395
  }
5395
5396
  return s;
@@ -5398,27 +5399,27 @@ var kt = class {
5398
5399
  let n = [], r = e.outputMode === "sunburst";
5399
5400
  for (let t = e.stepsBefore; t >= 1; t--) {
5400
5401
  let e = -t, i = `before_step_${t}`;
5401
- r ? n.push(D`
5402
+ r ? n.push(O`
5402
5403
  SELECT
5403
- ${D.raw(`'before_${t}_'`)} || event_path AS node_id,
5404
+ ${O.raw(`'before_${t}_'`)} || event_path AS node_id,
5404
5405
  event_type AS name,
5405
- ${D.raw(String(e))} AS layer,
5406
+ ${O.raw(String(e))} AS layer,
5406
5407
  COUNT(*) AS value
5407
- FROM ${D.identifier(i)}
5408
+ FROM ${O.identifier(i)}
5408
5409
  GROUP BY event_path, event_type
5409
- `) : n.push(D`
5410
+ `) : n.push(O`
5410
5411
  SELECT
5411
- ${D.raw(`'before_${t}_'`)} || event_type AS node_id,
5412
+ ${O.raw(`'before_${t}_'`)} || event_type AS node_id,
5412
5413
  event_type AS name,
5413
- ${D.raw(String(e))} AS layer,
5414
+ ${O.raw(String(e))} AS layer,
5414
5415
  COUNT(*) AS value
5415
- FROM ${D.identifier(i)}
5416
+ FROM ${O.identifier(i)}
5416
5417
  GROUP BY event_type
5417
5418
  `);
5418
5419
  }
5419
- n.push(D`
5420
+ n.push(O`
5420
5421
  SELECT
5421
- ${D.raw("'start_'")} || event_type AS node_id,
5422
+ ${O.raw("'start_'")} || event_type AS node_id,
5422
5423
  event_type AS name,
5423
5424
  0 AS layer,
5424
5425
  COUNT(*) AS value
@@ -5427,82 +5428,82 @@ var kt = class {
5427
5428
  `);
5428
5429
  for (let t = 1; t <= e.stepsAfter; t++) {
5429
5430
  let e = t, i = `after_step_${t}`;
5430
- r ? n.push(D`
5431
+ r ? n.push(O`
5431
5432
  SELECT
5432
- ${D.raw(`'after_${t}_'`)} || event_path AS node_id,
5433
+ ${O.raw(`'after_${t}_'`)} || event_path AS node_id,
5433
5434
  event_type AS name,
5434
- ${D.raw(String(e))} AS layer,
5435
+ ${O.raw(String(e))} AS layer,
5435
5436
  COUNT(*) AS value
5436
- FROM ${D.identifier(i)}
5437
+ FROM ${O.identifier(i)}
5437
5438
  GROUP BY event_path, event_type
5438
- `) : n.push(D`
5439
+ `) : n.push(O`
5439
5440
  SELECT
5440
- ${D.raw(`'after_${t}_'`)} || event_type AS node_id,
5441
+ ${O.raw(`'after_${t}_'`)} || event_type AS node_id,
5441
5442
  event_type AS name,
5442
- ${D.raw(String(e))} AS layer,
5443
+ ${O.raw(String(e))} AS layer,
5443
5444
  COUNT(*) AS value
5444
- FROM ${D.identifier(i)}
5445
+ FROM ${O.identifier(i)}
5445
5446
  GROUP BY event_type
5446
5447
  `);
5447
5448
  }
5448
- let i = D.join(n, D` UNION ALL `), a = t.db.select({
5449
- node_id: D`node_id`.as("node_id"),
5450
- name: D`name`.as("name"),
5451
- layer: D`layer`.as("layer"),
5452
- value: D`value`.as("value")
5453
- }).from(D`(${i}) AS nodes_union`);
5449
+ let i = O.join(n, O` UNION ALL `), a = t.db.select({
5450
+ node_id: O`node_id`.as("node_id"),
5451
+ name: O`name`.as("name"),
5452
+ layer: O`layer`.as("layer"),
5453
+ value: O`value`.as("value")
5454
+ }).from(O`(${i}) AS nodes_union`);
5454
5455
  return t.db.$with("nodes_agg").as(a);
5455
5456
  }
5456
5457
  buildLinksAggregationCTE(e, t) {
5457
5458
  let n = [], r = e.outputMode === "sunburst";
5458
5459
  for (let t = e.stepsBefore; t >= 2; t--) {
5459
5460
  let e = `before_step_${t}`, i = `before_step_${t - 1}`;
5460
- r ? n.push(D`
5461
+ r ? n.push(O`
5461
5462
  SELECT
5462
- ${D.raw(`'before_${t}_'`)} || f.event_path AS source_id,
5463
- ${D.raw(`'before_${t - 1}_'`)} || t.event_path AS target_id,
5463
+ ${O.raw(`'before_${t}_'`)} || f.event_path AS source_id,
5464
+ ${O.raw(`'before_${t - 1}_'`)} || t.event_path AS target_id,
5464
5465
  COUNT(*) AS value
5465
- FROM ${D.identifier(e)} f
5466
- INNER JOIN ${D.identifier(i)} t ON f.binding_key = t.binding_key
5466
+ FROM ${O.identifier(e)} f
5467
+ INNER JOIN ${O.identifier(i)} t ON f.binding_key = t.binding_key
5467
5468
  GROUP BY f.event_path, t.event_path
5468
- `) : n.push(D`
5469
+ `) : n.push(O`
5469
5470
  SELECT
5470
- ${D.raw(`'before_${t}_'`)} || f.event_type AS source_id,
5471
- ${D.raw(`'before_${t - 1}_'`)} || t.event_type AS target_id,
5471
+ ${O.raw(`'before_${t}_'`)} || f.event_type AS source_id,
5472
+ ${O.raw(`'before_${t - 1}_'`)} || t.event_type AS target_id,
5472
5473
  COUNT(*) AS value
5473
- FROM ${D.identifier(e)} f
5474
- INNER JOIN ${D.identifier(i)} t ON f.binding_key = t.binding_key
5474
+ FROM ${O.identifier(e)} f
5475
+ INNER JOIN ${O.identifier(i)} t ON f.binding_key = t.binding_key
5475
5476
  GROUP BY f.event_type, t.event_type
5476
5477
  `);
5477
5478
  }
5478
- e.stepsBefore >= 1 && (r ? n.push(D`
5479
+ e.stepsBefore >= 1 && (r ? n.push(O`
5479
5480
  SELECT
5480
- ${D.raw("'before_1_'")} || b.event_path AS source_id,
5481
- ${D.raw("'start_'")} || s.event_type AS target_id,
5481
+ ${O.raw("'before_1_'")} || b.event_path AS source_id,
5482
+ ${O.raw("'start_'")} || s.event_type AS target_id,
5482
5483
  COUNT(*) AS value
5483
5484
  FROM before_step_1 b
5484
5485
  INNER JOIN starting_entities s ON b.binding_key = s.binding_key
5485
5486
  GROUP BY b.event_path, s.event_type
5486
- `) : n.push(D`
5487
+ `) : n.push(O`
5487
5488
  SELECT
5488
- ${D.raw("'before_1_'")} || b.event_type AS source_id,
5489
- ${D.raw("'start_'")} || s.event_type AS target_id,
5489
+ ${O.raw("'before_1_'")} || b.event_type AS source_id,
5490
+ ${O.raw("'start_'")} || s.event_type AS target_id,
5490
5491
  COUNT(*) AS value
5491
5492
  FROM before_step_1 b
5492
5493
  INNER JOIN starting_entities s ON b.binding_key = s.binding_key
5493
5494
  GROUP BY b.event_type, s.event_type
5494
- `)), e.stepsAfter >= 1 && (r ? n.push(D`
5495
+ `)), e.stepsAfter >= 1 && (r ? n.push(O`
5495
5496
  SELECT
5496
- ${D.raw("'start_'")} || s.event_type AS source_id,
5497
- ${D.raw("'after_1_'")} || a.event_path AS target_id,
5497
+ ${O.raw("'start_'")} || s.event_type AS source_id,
5498
+ ${O.raw("'after_1_'")} || a.event_path AS target_id,
5498
5499
  COUNT(*) AS value
5499
5500
  FROM starting_entities s
5500
5501
  INNER JOIN after_step_1 a ON s.binding_key = a.binding_key
5501
5502
  GROUP BY s.event_type, a.event_path
5502
- `) : n.push(D`
5503
+ `) : n.push(O`
5503
5504
  SELECT
5504
- ${D.raw("'start_'")} || s.event_type AS source_id,
5505
- ${D.raw("'after_1_'")} || a.event_type AS target_id,
5505
+ ${O.raw("'start_'")} || s.event_type AS source_id,
5506
+ ${O.raw("'after_1_'")} || a.event_type AS target_id,
5506
5507
  COUNT(*) AS value
5507
5508
  FROM starting_entities s
5508
5509
  INNER JOIN after_step_1 a ON s.binding_key = a.binding_key
@@ -5510,41 +5511,41 @@ var kt = class {
5510
5511
  `));
5511
5512
  for (let t = 1; t < e.stepsAfter; t++) {
5512
5513
  let e = `after_step_${t}`, i = `after_step_${t + 1}`;
5513
- r ? n.push(D`
5514
+ r ? n.push(O`
5514
5515
  SELECT
5515
- ${D.raw(`'after_${t}_'`)} || f.event_path AS source_id,
5516
- ${D.raw(`'after_${t + 1}_'`)} || t.event_path AS target_id,
5516
+ ${O.raw(`'after_${t}_'`)} || f.event_path AS source_id,
5517
+ ${O.raw(`'after_${t + 1}_'`)} || t.event_path AS target_id,
5517
5518
  COUNT(*) AS value
5518
- FROM ${D.identifier(e)} f
5519
- INNER JOIN ${D.identifier(i)} t ON f.binding_key = t.binding_key
5519
+ FROM ${O.identifier(e)} f
5520
+ INNER JOIN ${O.identifier(i)} t ON f.binding_key = t.binding_key
5520
5521
  GROUP BY f.event_path, t.event_path
5521
- `) : n.push(D`
5522
+ `) : n.push(O`
5522
5523
  SELECT
5523
- ${D.raw(`'after_${t}_'`)} || f.event_type AS source_id,
5524
- ${D.raw(`'after_${t + 1}_'`)} || t.event_type AS target_id,
5524
+ ${O.raw(`'after_${t}_'`)} || f.event_type AS source_id,
5525
+ ${O.raw(`'after_${t + 1}_'`)} || t.event_type AS target_id,
5525
5526
  COUNT(*) AS value
5526
- FROM ${D.identifier(e)} f
5527
- INNER JOIN ${D.identifier(i)} t ON f.binding_key = t.binding_key
5527
+ FROM ${O.identifier(e)} f
5528
+ INNER JOIN ${O.identifier(i)} t ON f.binding_key = t.binding_key
5528
5529
  GROUP BY f.event_type, t.event_type
5529
5530
  `);
5530
5531
  }
5531
5532
  if (n.length === 0) {
5532
5533
  let e = t.db.select({
5533
- source_id: D`NULL`.as("source_id"),
5534
- target_id: D`NULL`.as("target_id"),
5535
- value: D`0`.as("value")
5536
- }).from(D`(SELECT 1) AS empty`).where(D`1 = 0`);
5534
+ source_id: O`NULL`.as("source_id"),
5535
+ target_id: O`NULL`.as("target_id"),
5536
+ value: O`0`.as("value")
5537
+ }).from(O`(SELECT 1) AS empty`).where(O`1 = 0`);
5537
5538
  return t.db.$with("links_agg").as(e);
5538
5539
  }
5539
- let i = D.join(n, D` UNION ALL `), a = t.db.select({
5540
- source_id: D`source_id`.as("source_id"),
5541
- target_id: D`target_id`.as("target_id"),
5542
- value: D`value`.as("value")
5543
- }).from(D`(${i}) AS links_union`);
5540
+ let i = O.join(n, O` UNION ALL `), a = t.db.select({
5541
+ source_id: O`source_id`.as("source_id"),
5542
+ target_id: O`target_id`.as("target_id"),
5543
+ value: O`value`.as("value")
5544
+ }).from(O`(${i}) AS links_union`);
5544
5545
  return t.db.$with("links_agg").as(a);
5545
5546
  }
5546
5547
  buildFinalResultCTE(e) {
5547
- let t = D`
5548
+ let t = O`
5548
5549
  SELECT
5549
5550
  'node' AS record_type,
5550
5551
  node_id AS id,
@@ -5566,40 +5567,40 @@ var kt = class {
5566
5567
  FROM links_agg
5567
5568
  WHERE source_id IS NOT NULL
5568
5569
  `, n = e.db.select({
5569
- record_type: D`record_type`.as("record_type"),
5570
- id: D`id`.as("id"),
5571
- name: D`name`.as("name"),
5572
- layer: D`layer`.as("layer"),
5573
- value: D`value`.as("value"),
5574
- source_id: D`source_id`.as("source_id"),
5575
- target_id: D`target_id`.as("target_id")
5576
- }).from(D`(${t}) AS final_union`);
5570
+ record_type: O`record_type`.as("record_type"),
5571
+ id: O`id`.as("id"),
5572
+ name: O`name`.as("name"),
5573
+ layer: O`layer`.as("layer"),
5574
+ value: O`value`.as("value"),
5575
+ source_id: O`source_id`.as("source_id"),
5576
+ target_id: O`target_id`.as("target_id")
5577
+ }).from(O`(${t}) AS final_union`);
5577
5578
  return e.db.$with("final_result").as(n);
5578
5579
  }
5579
5580
  };
5580
5581
  //#endregion
5581
5582
  //#region src/server/types/retention.ts
5582
- function Mt(e) {
5583
+ function Nt(e) {
5583
5584
  return Array.isArray(e);
5584
5585
  }
5585
- function Nt(e) {
5586
+ function Pt(e) {
5586
5587
  return typeof e == "object" && !!e && "cube" in e;
5587
5588
  }
5588
- function Pt(e) {
5589
- if (Nt(e)) return e.cube;
5589
+ function Ft(e) {
5590
+ if (Pt(e)) return e.cube;
5590
5591
  let t = e.indexOf(".");
5591
5592
  if (t === -1) throw Error(`Invalid time dimension format: ${e}. Expected 'CubeName.dimensionName'`);
5592
5593
  return e.substring(0, t);
5593
5594
  }
5594
- function Ft(e) {
5595
- if (Nt(e)) return e.dimension;
5595
+ function It(e) {
5596
+ if (Pt(e)) return e.dimension;
5596
5597
  let t = e.indexOf(".");
5597
5598
  if (t === -1) throw Error(`Invalid time dimension format: ${e}. Expected 'CubeName.dimensionName'`);
5598
5599
  return e.substring(t + 1);
5599
5600
  }
5600
5601
  //#endregion
5601
5602
  //#region src/server/builders/retention-query-builder.ts
5602
- var It = class {
5603
+ var Lt = class {
5603
5604
  filterBuilder;
5604
5605
  dateTimeBuilder;
5605
5606
  constructor(e) {
@@ -5611,12 +5612,12 @@ var It = class {
5611
5612
  validateConfig(e, t) {
5612
5613
  let n = [];
5613
5614
  try {
5614
- let r = Pt(e.timeDimension), i = Ft(e.timeDimension), a = t.get(r);
5615
+ let r = Ft(e.timeDimension), i = It(e.timeDimension), a = t.get(r);
5615
5616
  a ? a.dimensions?.[i] || n.push(`Time dimension not found: ${i} in cube ${r}`) : n.push(`Cube not found: ${r}`);
5616
5617
  } catch {
5617
5618
  n.push(`Invalid time dimension format: ${e.timeDimension}`);
5618
5619
  }
5619
- if (Mt(e.bindingKey)) for (let r of e.bindingKey) {
5620
+ if (Nt(e.bindingKey)) for (let r of e.bindingKey) {
5620
5621
  let e = t.get(r.cube);
5621
5622
  if (!e) n.push(`Binding key mapping cube not found: ${r.cube}`);
5622
5623
  else {
@@ -5668,20 +5669,20 @@ var It = class {
5668
5669
  }
5669
5670
  buildRetentionQuery(e, t, n) {
5670
5671
  let r = this.resolveConfig(e, t, n), i = r.breakdowns.length, a = this.buildCohortBaseCTE(e, r, n), o = this.buildActivityPeriodsCTE(e, r, n), s = this.buildCohortSizesCTE(e, n, i), c = this.buildRetentionCountsCTE(e, n, i), l = r.breakdowns.length > 0, u = {
5671
- period: D`rc.period_number`.as("period"),
5672
- cohort_size: D`cs.cohort_size`.as("cohort_size"),
5673
- retained_users: D`rc.retained_users`.as("retained_users"),
5674
- retention_rate: D`CAST(rc.retained_users AS NUMERIC) / NULLIF(cs.cohort_size, 0)`.as("retention_rate")
5672
+ period: O`rc.period_number`.as("period"),
5673
+ cohort_size: O`cs.cohort_size`.as("cohort_size"),
5674
+ retained_users: O`rc.retained_users`.as("retained_users"),
5675
+ retention_rate: O`CAST(rc.retained_users AS NUMERIC) / NULLIF(cs.cohort_size, 0)`.as("retention_rate")
5675
5676
  };
5676
- for (let e = 0; e < r.breakdowns.length; e++) u[`breakdown_${e}`] = D.raw(`rc.breakdown_${e}`).as(`breakdown_${e}`);
5677
- let d = n.db.with(a, o, s, c).select(u).from(D`retention_counts rc`);
5677
+ for (let e = 0; e < r.breakdowns.length; e++) u[`breakdown_${e}`] = O.raw(`rc.breakdown_${e}`).as(`breakdown_${e}`);
5678
+ let d = n.db.with(a, o, s, c).select(u).from(O`retention_counts rc`);
5678
5679
  if (l) {
5679
- let e = r.breakdowns.map((e, t) => D`COALESCE(CAST(rc.breakdown_${D.raw(String(t))} AS TEXT), '') = COALESCE(CAST(cs.breakdown_${D.raw(String(t))} AS TEXT), '')`), t = e.length === 1 ? e[0] : D.join(e, D` AND `);
5680
- d = d.innerJoin(D`cohort_sizes cs`, t);
5681
- } else d = d.innerJoin(D`cohort_sizes cs`, D`1 = 1`);
5680
+ let e = r.breakdowns.map((e, t) => O`COALESCE(CAST(rc.breakdown_${O.raw(String(t))} AS TEXT), '') = COALESCE(CAST(cs.breakdown_${O.raw(String(t))} AS TEXT), '')`), t = e.length === 1 ? e[0] : O.join(e, O` AND `);
5681
+ d = d.innerJoin(O`cohort_sizes cs`, t);
5682
+ } else d = d.innerJoin(O`cohort_sizes cs`, O`1 = 1`);
5682
5683
  let f = [];
5683
- for (let e = 0; e < r.breakdowns.length; e++) f.push(D.raw(`rc.breakdown_${e}`));
5684
- return f.push(D`rc.period_number`), d = d.orderBy(...f), d;
5684
+ for (let e = 0; e < r.breakdowns.length; e++) f.push(O.raw(`rc.breakdown_${e}`));
5685
+ return f.push(O`rc.period_number`), d = d.orderBy(...f), d;
5685
5686
  }
5686
5687
  transformResult(e, t) {
5687
5688
  let n = t.breakdownDimensions || [], r = Math.min(n.length, 100), i = r > 0;
@@ -5704,7 +5705,7 @@ var It = class {
5704
5705
  });
5705
5706
  }
5706
5707
  resolveConfig(e, t, n) {
5707
- let r = Pt(e.timeDimension), i = Ft(e.timeDimension), a = t.get(r);
5708
+ let r = Ft(e.timeDimension), i = It(e.timeDimension), a = t.get(r);
5708
5709
  if (!a) throw Error(`Cube not found: ${r}`);
5709
5710
  let o = a.dimensions?.[i];
5710
5711
  if (!o) throw Error(`Time dimension not found: ${i}`);
@@ -5729,7 +5730,7 @@ var It = class {
5729
5730
  };
5730
5731
  }
5731
5732
  resolveBindingKey(e, t, n, r) {
5732
- if (Mt(e)) {
5733
+ if (Nt(e)) {
5733
5734
  let i = e.find((e) => e.cube === t.name);
5734
5735
  if (!i) throw Error(`No binding key mapping found for cube: ${t.name}`);
5735
5736
  let a = this.extractDimensionName(i.dimension), o = n.get(i.cube);
@@ -5760,7 +5761,7 @@ var It = class {
5760
5761
  let i = this.buildSingleFilterCondition(e, t, n, r);
5761
5762
  i && a.push(i);
5762
5763
  }
5763
- return a.length === 0 ? null : a.length === 1 ? a[0] : o ? P(...a) : D`(${D.join(a, D` OR `)})`;
5764
+ return a.length === 0 ? null : a.length === 1 ? a[0] : o ? F(...a) : O`(${O.join(a, O` OR `)})`;
5764
5765
  }
5765
5766
  let i = e, [a, o] = i.member.split("."), s = n.get(a);
5766
5767
  if (!s) return null;
@@ -5776,16 +5777,16 @@ var It = class {
5776
5777
  i.push(n);
5777
5778
  }
5778
5779
  let a = this.databaseAdapter.buildTimeDimension(e.granularity, t.timeExpr), o = {
5779
- binding_key: D`${t.bindingKeyExpr}`.as("binding_key"),
5780
- cohort_entry: D`MIN(${a})`.as("cohort_entry")
5780
+ binding_key: O`${t.bindingKeyExpr}`.as("binding_key"),
5781
+ cohort_entry: O`MIN(${a})`.as("cohort_entry")
5781
5782
  };
5782
5783
  for (let e = 0; e < t.breakdowns.length; e++) {
5783
5784
  let { expr: n } = t.breakdowns[e];
5784
- o[`breakdown_${e}`] = D`MIN(${n})`.as(`breakdown_${e}`);
5785
+ o[`breakdown_${e}`] = O`MIN(${n})`.as(`breakdown_${e}`);
5785
5786
  }
5786
5787
  let s = n.db.select(o).from(r.from);
5787
5788
  if (i.length > 0) {
5788
- let e = i.length === 1 ? i[0] : P(...i);
5789
+ let e = i.length === 1 ? i[0] : F(...i);
5789
5790
  s = s.where(e);
5790
5791
  }
5791
5792
  let c = [t.bindingKeyExpr];
@@ -5797,36 +5798,36 @@ var It = class {
5797
5798
  return n.db.$with("cohort_base").as(s);
5798
5799
  }
5799
5800
  buildDateRangeCondition(e, t) {
5800
- return D`${e} >= ${t.start}::date AND ${e} < (${t.end}::date + interval '1 day')`;
5801
+ return O`${e} >= ${t.start}::date AND ${e} < (${t.end}::date + interval '1 day')`;
5801
5802
  }
5802
5803
  buildDateRangeHavingCondition(e, t) {
5803
- return D`MIN(${e}) >= ${t.start}::date AND MIN(${e}) < (${t.end}::date + interval '1 day')`;
5804
+ return O`MIN(${e}) >= ${t.start}::date AND MIN(${e}) < (${t.end}::date + interval '1 day')`;
5804
5805
  }
5805
5806
  buildActivityPeriodsCTE(e, t, n) {
5806
5807
  let r = t.cube.sql(n), i = [];
5807
- r.where && i.push(r.where), i.push(...t.activityFilterConditions), i.push(D`${t.timeExpr} >= cohort_base.cohort_entry`);
5808
- let a = this.databaseAdapter.buildTimeDimension(e.granularity, t.timeExpr), o = this.buildPeriodNumberExpression(D`cohort_base.cohort_entry`, a, e.granularity), s = {
5809
- binding_key: D`cohort_base.binding_key`.as("binding_key"),
5808
+ r.where && i.push(r.where), i.push(...t.activityFilterConditions), i.push(O`${t.timeExpr} >= cohort_base.cohort_entry`);
5809
+ let a = this.databaseAdapter.buildTimeDimension(e.granularity, t.timeExpr), o = this.buildPeriodNumberExpression(O`cohort_base.cohort_entry`, a, e.granularity), s = {
5810
+ binding_key: O`cohort_base.binding_key`.as("binding_key"),
5810
5811
  period_number: o.as("period_number")
5811
5812
  };
5812
- for (let e = 0; e < t.breakdowns.length; e++) s[`breakdown_${e}`] = D.raw(`cohort_base.breakdown_${e}`).as(`breakdown_${e}`);
5813
- let c = n.db.select(s).from(r.from).innerJoin(D`cohort_base`, D`${t.bindingKeyExpr} = cohort_base.binding_key`);
5813
+ for (let e = 0; e < t.breakdowns.length; e++) s[`breakdown_${e}`] = O.raw(`cohort_base.breakdown_${e}`).as(`breakdown_${e}`);
5814
+ let c = n.db.select(s).from(r.from).innerJoin(O`cohort_base`, O`${t.bindingKeyExpr} = cohort_base.binding_key`);
5814
5815
  if (i.length > 0) {
5815
- let e = i.length === 1 ? i[0] : P(...i);
5816
+ let e = i.length === 1 ? i[0] : F(...i);
5816
5817
  c = c.where(e);
5817
5818
  }
5818
- let l = [D`cohort_base.binding_key`, o];
5819
- for (let e = 0; e < t.breakdowns.length; e++) l.push(D.raw(`cohort_base.breakdown_${e}`));
5819
+ let l = [O`cohort_base.binding_key`, o];
5820
+ for (let e = 0; e < t.breakdowns.length; e++) l.push(O.raw(`cohort_base.breakdown_${e}`));
5820
5821
  return c = c.groupBy(...l), n.db.$with("activity_periods").as(c);
5821
5822
  }
5822
5823
  buildCohortSizesCTE(e, t, n) {
5823
5824
  if (n > 0) {
5824
- let e = { cohort_size: D`COUNT(*)`.as("cohort_size") }, r = [];
5825
- for (let t = 0; t < n; t++) e[`breakdown_${t}`] = D.raw(`breakdown_${t}`).as(`breakdown_${t}`), r.push(D.raw(`breakdown_${t}`));
5826
- let i = t.db.select(e).from(D`cohort_base`).groupBy(...r);
5825
+ let e = { cohort_size: O`COUNT(*)`.as("cohort_size") }, r = [];
5826
+ for (let t = 0; t < n; t++) e[`breakdown_${t}`] = O.raw(`breakdown_${t}`).as(`breakdown_${t}`), r.push(O.raw(`breakdown_${t}`));
5827
+ let i = t.db.select(e).from(O`cohort_base`).groupBy(...r);
5827
5828
  return t.db.$with("cohort_sizes").as(i);
5828
5829
  }
5829
- let r = t.db.select({ cohort_size: D`COUNT(*)`.as("cohort_size") }).from(D`cohort_base`);
5830
+ let r = t.db.select({ cohort_size: O`COUNT(*)`.as("cohort_size") }).from(O`cohort_base`);
5830
5831
  return t.db.$with("cohort_sizes").as(r);
5831
5832
  }
5832
5833
  buildRetentionCountsCTE(e, t, n) {
@@ -5834,32 +5835,32 @@ var It = class {
5834
5835
  if (e.retentionType === "rolling") r = this.buildRollingRetentionCountsQuery(e, t, n);
5835
5836
  else {
5836
5837
  let i = {
5837
- period_number: D`period_number`.as("period_number"),
5838
- retained_users: D`COUNT(DISTINCT binding_key)`.as("retained_users")
5839
- }, a = [D`period_number`];
5840
- for (let e = 0; e < n; e++) i[`breakdown_${e}`] = D.raw(`breakdown_${e}`).as(`breakdown_${e}`), a.push(D.raw(`breakdown_${e}`));
5838
+ period_number: O`period_number`.as("period_number"),
5839
+ retained_users: O`COUNT(DISTINCT binding_key)`.as("retained_users")
5840
+ }, a = [O`period_number`];
5841
+ for (let e = 0; e < n; e++) i[`breakdown_${e}`] = O.raw(`breakdown_${e}`).as(`breakdown_${e}`), a.push(O.raw(`breakdown_${e}`));
5841
5842
  let o = Math.min(e.periods, 52);
5842
- r = t.db.select(i).from(D`activity_periods`).where(D`period_number >= 0 AND period_number <= ${o}`).groupBy(...a);
5843
+ r = t.db.select(i).from(O`activity_periods`).where(O`period_number >= 0 AND period_number <= ${o}`).groupBy(...a);
5843
5844
  }
5844
5845
  return t.db.$with("retention_counts").as(r);
5845
5846
  }
5846
5847
  buildRollingRetentionCountsQuery(e, t, n) {
5847
5848
  let r = [];
5848
5849
  for (let e = 0; e < n; e++) r.push(`breakdown_${e}`);
5849
- let i = r.length > 0 ? `, ${r.join(", ")}` : "", a = D`(
5850
+ let i = r.length > 0 ? `, ${r.join(", ")}` : "", a = O`(
5850
5851
  SELECT
5851
5852
  binding_key,
5852
- ${D.raw(r.map((e) => `${e}`).join(", ") + (r.length > 0 ? "," : ""))}
5853
+ ${O.raw(r.map((e) => `${e}`).join(", ") + (r.length > 0 ? "," : ""))}
5853
5854
  MAX(period_number) as max_period
5854
5855
  FROM activity_periods
5855
5856
  WHERE period_number >= 0 AND period_number <= ${e.periods}
5856
- GROUP BY binding_key${D.raw(i)}
5857
+ GROUP BY binding_key${O.raw(i)}
5857
5858
  )`, o = this.databaseAdapter.buildPeriodSeriesSubquery(e.periods), s = {
5858
- period_number: D`p.period_number`.as("period_number"),
5859
- retained_users: D`COUNT(DISTINCT CASE WHEN ump.max_period >= p.period_number THEN ump.binding_key END)`.as("retained_users")
5860
- }, c = [D`p.period_number`];
5861
- for (let e = 0; e < n; e++) s[`breakdown_${e}`] = D.raw(`ump.breakdown_${e}`).as(`breakdown_${e}`), c.push(D.raw(`ump.breakdown_${e}`));
5862
- return t.db.select(s).from(D`${a} ump`).innerJoin(o, D`TRUE`).groupBy(...c);
5859
+ period_number: O`p.period_number`.as("period_number"),
5860
+ retained_users: O`COUNT(DISTINCT CASE WHEN ump.max_period >= p.period_number THEN ump.binding_key END)`.as("retained_users")
5861
+ }, c = [O`p.period_number`];
5862
+ for (let e = 0; e < n; e++) s[`breakdown_${e}`] = O.raw(`ump.breakdown_${e}`).as(`breakdown_${e}`), c.push(O.raw(`ump.breakdown_${e}`));
5863
+ return t.db.select(s).from(O`${a} ump`).innerJoin(o, O`TRUE`).groupBy(...c);
5863
5864
  }
5864
5865
  buildPeriodNumberExpression(e, t, n) {
5865
5866
  return this.databaseAdapter.buildDateDiffPeriods(e, t, n);
@@ -5868,7 +5869,7 @@ var It = class {
5868
5869
  let t = e.split(".");
5869
5870
  return t.length > 1 ? t[1] : t[0];
5870
5871
  }
5871
- }, Lt = class {
5872
+ }, Rt = class {
5872
5873
  constructor(e) {
5873
5874
  this.queryPlanner = e;
5874
5875
  }
@@ -6303,7 +6304,7 @@ var It = class {
6303
6304
  timeDimensions: []
6304
6305
  };
6305
6306
  }
6306
- }, Rt = class {
6307
+ }, zt = class {
6307
6308
  name = "identity";
6308
6309
  optimise(e) {
6309
6310
  return e;
@@ -6311,7 +6312,7 @@ var It = class {
6311
6312
  };
6312
6313
  //#endregion
6313
6314
  //#region src/server/physical-plan/processors/cte-processor.ts
6314
- function zt(e, t, n, r) {
6315
+ function Bt(e, t, n, r) {
6315
6316
  let i = /* @__PURE__ */ new Map();
6316
6317
  if (e.preAggregationCTEs && e.preAggregationCTEs.length > 0) {
6317
6318
  for (let t of e.preAggregationCTEs) if (t.propagatingFilters && t.propagatingFilters.length > 0) for (let e of t.propagatingFilters) {
@@ -6321,7 +6322,7 @@ function zt(e, t, n, r) {
6321
6322
  i.set(t, s);
6322
6323
  }
6323
6324
  let a = i.get(t);
6324
- a && a.length > 0 && (e.preBuiltFilterSQL = a.length === 1 ? a[0] : P(...a));
6325
+ a && a.length > 0 && (e.preBuiltFilterSQL = a.length === 1 ? a[0] : F(...a));
6325
6326
  }
6326
6327
  }
6327
6328
  let a = [], o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map();
@@ -6341,7 +6342,7 @@ function zt(e, t, n, r) {
6341
6342
  }
6342
6343
  //#endregion
6343
6344
  //#region src/server/physical-plan/processors/window-processor.ts
6344
- function Bt(e, t, n, r, i, a) {
6345
+ function Vt(e, t, n, r, i, a) {
6345
6346
  if (n.measures) for (let o of n.measures) {
6346
6347
  let [s, c] = o.split("."), l = i.get(s);
6347
6348
  if (!l?.measures?.[c]) continue;
@@ -6352,16 +6353,16 @@ function Bt(e, t, n, r, i, a) {
6352
6353
  let [f, p] = d.split("."), m = i.get(f);
6353
6354
  if (!m?.measures?.[p]) continue;
6354
6355
  let h = m.measures[p], g = t.preAggregationCTEs?.find((e) => e.cube?.name === f && e.measures?.includes(d)), _;
6355
- _ = g ? D`sum(${D`${D.identifier(g.cteAlias)}.${D.identifier(p)}`})` : a.queryBuilder.buildMeasureExpression(h, r, m), e[d] || (e[d] = D`${_}`.as(d));
6356
- let v = Vt(u, _, n, r, l, t, a);
6357
- v && (e[o] = D`${v}`.as(o));
6356
+ _ = g ? O`sum(${O`${O.identifier(g.cteAlias)}.${O.identifier(p)}`})` : a.queryBuilder.buildMeasureExpression(h, r, m), e[d] || (e[d] = O`${_}`.as(d));
6357
+ let v = Ht(u, _, n, r, l, t, a);
6358
+ v && (e[o] = O`${v}`.as(o));
6358
6359
  }
6359
6360
  }
6360
- function Vt(e, t, n, r, i, a, o) {
6361
+ function Ht(e, t, n, r, i, a, o) {
6361
6362
  let s = e.windowConfig || {}, c = (e, t) => {
6362
6363
  if (!a.preAggregationCTEs) return null;
6363
6364
  let n = a.preAggregationCTEs.find((t) => t.cube?.name === e);
6364
- return n && n.cteAlias ? D`${D.identifier(n.cteAlias)}.${D.identifier(t)}` : null;
6365
+ return n && n.cteAlias ? O`${O.identifier(n.cteAlias)}.${O.identifier(t)}` : null;
6365
6366
  }, l;
6366
6367
  if (s.orderBy && s.orderBy.length > 0) l = s.orderBy.map((e) => {
6367
6368
  let a = e.field.includes(".") ? e.field.split(".")[1] : e.field;
@@ -6419,15 +6420,15 @@ function Vt(e, t, n, r, i, a, o) {
6419
6420
  });
6420
6421
  if (!d) return null;
6421
6422
  switch (s.operation || Q.getDefaultWindowOperation(e.type)) {
6422
- case "difference": return D`${t} - ${d}`;
6423
- case "ratio": return D`${t} / NULLIF(${d}, 0)`;
6424
- case "percentChange": return D`((${t} - ${d}) / NULLIF(${d}, 0)) * 100`;
6423
+ case "difference": return O`${t} - ${d}`;
6424
+ case "ratio": return O`${t} / NULLIF(${d}, 0)`;
6425
+ case "percentChange": return O`((${t} - ${d}) / NULLIF(${d}, 0)) * 100`;
6425
6426
  default: return d;
6426
6427
  }
6427
6428
  }
6428
6429
  //#endregion
6429
6430
  //#region src/server/physical-plan/processors/selection-processor.ts
6430
- function Ht(e, t, n, r, i) {
6431
+ function Ut(e, t, n, r, i) {
6431
6432
  let a = { ...i.queryBuilder.buildSelections(e.joinCubes.length > 0 ? r : e.primaryCube, t, n) };
6432
6433
  if (e.preAggregationCTEs) for (let o of e.preAggregationCTEs) {
6433
6434
  let e = o.cube.name;
@@ -6435,32 +6436,32 @@ function Ht(e, t, n, r, i) {
6435
6436
  if (!a[s]) continue;
6436
6437
  let [, c] = s.split("."), l = r.get(e);
6437
6438
  if (!l?.measures?.[c]) continue;
6438
- let u = l.measures[c], d = D`${D.identifier(o.cteAlias)}.${D.identifier(c)}`, f;
6439
+ let u = l.measures[c], d = O`${O.identifier(o.cteAlias)}.${O.identifier(c)}`, f;
6439
6440
  if (u.type === "calculated" && u.calculatedSql) f = i.queryBuilder.buildCTECalculatedMeasure(u, l, o, r, n);
6440
6441
  else {
6441
- let e = o.cteReason === "fanOutPrevention", n = Ut(o, t, r), a = e || n;
6442
+ let e = o.cteReason === "fanOutPrevention", n = Wt(o, t, r), a = e || n;
6442
6443
  switch (u.type) {
6443
6444
  case "count":
6444
6445
  case "countDistinct":
6445
6446
  case "sum":
6446
- f = a ? z(d) : R(d);
6447
+ f = a ? B(d) : z(d);
6447
6448
  break;
6448
6449
  case "avg":
6449
- f = a ? z(d) : i.databaseAdapter.buildAvg(d);
6450
+ f = a ? B(d) : i.databaseAdapter.buildAvg(d);
6450
6451
  break;
6451
6452
  case "min":
6452
- f = B(d);
6453
+ f = pe(d);
6453
6454
  break;
6454
6455
  case "max":
6455
- f = z(d);
6456
+ f = B(d);
6456
6457
  break;
6457
6458
  case "number":
6458
- f = z(d);
6459
+ f = B(d);
6459
6460
  break;
6460
- default: f = a ? z(d) : R(d);
6461
+ default: f = a ? B(d) : z(d);
6461
6462
  }
6462
6463
  }
6463
- a[s] = D`${f}`.as(s);
6464
+ a[s] = O`${f}`.as(s);
6464
6465
  }
6465
6466
  for (let t in a) {
6466
6467
  let [n, i] = t.split(".");
@@ -6472,15 +6473,15 @@ function Ht(e, t, n, r, i) {
6472
6473
  let e = s.dimensions[i].sql;
6473
6474
  u = o.joinKeys.find((t) => t.targetColumnObj === e);
6474
6475
  }
6475
- (u || l && s?.dimensions?.[i]) && (a[t] = D`${D.identifier(o.cteAlias)}.${D.identifier(i)}`.as(t));
6476
+ (u || l && s?.dimensions?.[i]) && (a[t] = O`${O.identifier(o.cteAlias)}.${O.identifier(i)}`.as(t));
6476
6477
  }
6477
6478
  }
6478
- return Bt(a, e, t, n, r, i), a;
6479
- }
6480
- function Ut(e, t, n) {
6481
- return e.cteReason !== "hasMany" || e.downstreamJoinKeys && e.downstreamJoinKeys.length > 0 || e.intermediateJoins && e.intermediateJoins.length > 0 || !(t.dimensions && t.dimensions.length > 0 || t.timeDimensions && t.timeDimensions.length > 0) || t.dimensions?.some((t) => t.startsWith(`${e.cube.name}.`)) || t.timeDimensions?.some((t) => t.dimension.startsWith(`${e.cube.name}.`)) ? !1 : e.joinKeys.length > 0 && e.joinKeys.every((e) => !!e.sourceColumnObj && Wt(e.sourceColumnObj, t, n));
6479
+ return Vt(a, e, t, n, r, i), a;
6482
6480
  }
6483
6481
  function Wt(e, t, n) {
6482
+ return e.cteReason !== "hasMany" || e.downstreamJoinKeys && e.downstreamJoinKeys.length > 0 || e.intermediateJoins && e.intermediateJoins.length > 0 || !(t.dimensions && t.dimensions.length > 0 || t.timeDimensions && t.timeDimensions.length > 0) || t.dimensions?.some((t) => t.startsWith(`${e.cube.name}.`)) || t.timeDimensions?.some((t) => t.dimension.startsWith(`${e.cube.name}.`)) ? !1 : e.joinKeys.length > 0 && e.joinKeys.every((e) => !!e.sourceColumnObj && Gt(e.sourceColumnObj, t, n));
6483
+ }
6484
+ function Gt(e, t, n) {
6484
6485
  if (t.dimensions) for (let r of t.dimensions) {
6485
6486
  let [t, i] = r.split(".");
6486
6487
  if (n.get(t)?.dimensions?.[i]?.sql === e) return !0;
@@ -6494,7 +6495,7 @@ function Wt(e, t, n) {
6494
6495
  }
6495
6496
  //#endregion
6496
6497
  //#region src/server/physical-plan/processors/joins-processor.ts
6497
- function Gt(e, t, n, r, i, a) {
6498
+ function Kt(e, t, n, r, i, a) {
6498
6499
  let o = [], s = t.db.select(r).from(n.from);
6499
6500
  if (i.ctes.length > 0 && (s = t.db.with(...i.ctes).select(r).from(n.from)), n.joins) for (let e of n.joins) switch (e.type || "left") {
6500
6501
  case "left":
@@ -6525,10 +6526,10 @@ function Gt(e, t, n, r, i, a) {
6525
6526
  if (t && t.joinKeys.length > 0) {
6526
6527
  let e = [];
6527
6528
  for (let n of t.joinKeys) {
6528
- let t = D`${D.identifier(c)}.${D.identifier(n.sourceColumn)}`, r = n.targetColumnObj;
6529
- r && e.push(M(r, t));
6529
+ let t = O`${O.identifier(c)}.${O.identifier(n.sourceColumn)}`, r = n.targetColumnObj;
6530
+ r && e.push(N(r, t));
6530
6531
  }
6531
- e.length > 0 && (a = P(...e));
6532
+ e.length > 0 && (a = F(...e));
6532
6533
  }
6533
6534
  }
6534
6535
  let l = [];
@@ -6555,19 +6556,19 @@ function Gt(e, t, n, r, i, a) {
6555
6556
  } catch {}
6556
6557
  }
6557
6558
  let d, f, p;
6558
- if (u) d = D`${D.identifier(u)}`, f = a.cteBuilder.buildCTEJoinCondition(n, u, e), p = void 0;
6559
+ if (u) d = O`${O.identifier(u)}`, f = a.cteBuilder.buildCTEJoinCondition(n, u, e), p = void 0;
6559
6560
  else {
6560
6561
  let e = i.downstreamCubeMap.get(n.cube.name), r = n.cube.sql(t);
6561
6562
  if (d = r.from, p = r.where, e && !n.junctionTable) {
6562
6563
  let t = [];
6563
6564
  for (let n of e.joinKeys) {
6564
- let r = D`${D.identifier(e.cteAlias)}.${D.identifier(n.sourceColumn)}`, i = n.targetColumnObj || D.identifier(n.targetColumn);
6565
- t.push(M(r, i));
6565
+ let r = O`${O.identifier(e.cteAlias)}.${O.identifier(n.sourceColumn)}`, i = n.targetColumnObj || O.identifier(n.targetColumn);
6566
+ t.push(N(r, i));
6566
6567
  }
6567
- f = t.length === 1 ? t[0] : P(...t);
6568
+ f = t.length === 1 ? t[0] : F(...t);
6568
6569
  } else f = n.joinCondition;
6569
6570
  }
6570
- let m = n.joinType || "left", h = m !== "inner" && p ? P(f, p) : f;
6571
+ let m = n.joinType || "left", h = m !== "inner" && p ? F(f, p) : f;
6571
6572
  try {
6572
6573
  switch (m) {
6573
6574
  case "left":
@@ -6594,7 +6595,7 @@ function Gt(e, t, n, r, i, a) {
6594
6595
  }
6595
6596
  //#endregion
6596
6597
  //#region src/server/physical-plan/processors/predicates-processor.ts
6597
- function Kt(e, t, n, r, i, a, o, s) {
6598
+ function qt(e, t, n, r, i, a, o, s) {
6598
6599
  let c = [...o.allWhereConditions];
6599
6600
  if (i.where && c.push(i.where), e.joinCubes && e.joinCubes.length > 0) for (let t of e.joinCubes) {
6600
6601
  let e = t.cube.name;
@@ -6606,14 +6607,14 @@ function Kt(e, t, n, r, i, a, o, s) {
6606
6607
  l.length > 0 && c.push(...l);
6607
6608
  let u = o.drizzleQuery;
6608
6609
  if (c.length > 0) {
6609
- let e = c.length === 1 ? c[0] : P(...c);
6610
+ let e = c.length === 1 ? c[0] : F(...c);
6610
6611
  u = u.where(e);
6611
6612
  }
6612
6613
  let d = s.queryBuilder.buildGroupByFields(e.joinCubes.length > 0 ? r : e.primaryCube, t, n, e);
6613
6614
  if (d.length > 0 && (u = u.groupBy(...d)), !t.ungrouped) {
6614
6615
  let i = s.queryBuilder.buildHavingConditions(e.joinCubes.length > 0 ? r : e.primaryCube, t, n, e);
6615
6616
  if (i.length > 0) {
6616
- let e = i.length === 1 ? i[0] : P(...i);
6617
+ let e = i.length === 1 ? i[0] : F(...i);
6617
6618
  u = u.having(e);
6618
6619
  }
6619
6620
  }
@@ -6622,14 +6623,14 @@ function Kt(e, t, n, r, i, a, o, s) {
6622
6623
  }
6623
6624
  //#endregion
6624
6625
  //#region src/server/physical-plan/processors/shared.ts
6625
- function qt(e) {
6626
+ function Jt(e) {
6626
6627
  let t = /* @__PURE__ */ new Map();
6627
6628
  if (t.set(e.primaryCube.name, e.primaryCube), e.joinCubes) for (let n of e.joinCubes) t.set(n.cube.name, n.cube);
6628
6629
  return t;
6629
6630
  }
6630
6631
  //#endregion
6631
6632
  //#region src/server/physical-plan/drizzle-plan-builder.ts
6632
- var Jt = class {
6633
+ var Yt = class {
6633
6634
  constructor(e, t, n) {
6634
6635
  this.queryBuilder = e, this.cteBuilder = t, this.databaseAdapter = n;
6635
6636
  }
@@ -6769,13 +6770,13 @@ var Jt = class {
6769
6770
  if (i) return i;
6770
6771
  let a = this.tryBuildKeysDeduplicationQuery(e, t, n, r);
6771
6772
  if (a) return a;
6772
- let o = zt(e, t, n, r), s = e.primaryCube.sql(n), c = e.joinCubes.length > 0 ? qt(e) : new Map([[e.primaryCube.name, e.primaryCube]]);
6773
- return Kt(e, t, n, c, s, o, Gt(e, n, s, Ht(e, t, n, c, r), o, r), r);
6773
+ let o = Bt(e, t, n, r), s = e.primaryCube.sql(n), c = e.joinCubes.length > 0 ? Jt(e) : new Map([[e.primaryCube.name, e.primaryCube]]);
6774
+ return qt(e, t, n, c, s, o, Kt(e, n, s, Ut(e, t, n, c, r), o, r), r);
6774
6775
  }
6775
6776
  tryBuildKeysDeduplicationQuery(e, t, n, r) {
6776
6777
  let i = e.keysDeduplication;
6777
6778
  if (!i?.multipliedCubeName || !t.measures?.length) return null;
6778
- let a = e.joinCubes.length > 0 ? qt(e) : new Map([[e.primaryCube.name, e.primaryCube]]), o = a.get(i.multipliedCubeName);
6779
+ let a = e.joinCubes.length > 0 ? Jt(e) : new Map([[e.primaryCube.name, e.primaryCube]]), o = a.get(i.multipliedCubeName);
6779
6780
  if (!o || !this.canExecuteKeysDeduplication(t, o, i.multipliedCubeName)) return null;
6780
6781
  let s = i.primaryKeyDimensions.length > 0 ? i.primaryKeyDimensions : this.getPrimaryKeyDimensions(o);
6781
6782
  if (s.length === 0) return null;
@@ -6784,20 +6785,20 @@ var Jt = class {
6784
6785
  let [t, r] = e.split("."), i = a.get(t), o = i?.dimensions?.[r];
6785
6786
  if (!i || !o) return null;
6786
6787
  let s = W(o.sql, n);
6787
- u[e] = D`${s}`.as(e), d.push(s);
6788
+ u[e] = O`${s}`.as(e), d.push(s);
6788
6789
  }
6789
6790
  if (t.timeDimensions) for (let e of t.timeDimensions) {
6790
6791
  let [t, i] = e.dimension.split("."), o = a.get(t), s = o?.dimensions?.[i];
6791
6792
  if (!o || !s) return null;
6792
6793
  let c = r.queryBuilder.buildTimeDimensionExpression(s.sql, e.granularity, n);
6793
- u[e.dimension] = D`${c}`.as(e.dimension), d.push(c);
6794
+ u[e.dimension] = O`${c}`.as(e.dimension), d.push(c);
6794
6795
  }
6795
6796
  let f = [];
6796
6797
  for (let e of s) {
6797
6798
  let t = o.dimensions?.[e];
6798
6799
  if (!t) return null;
6799
6800
  let r = W(t.sql, n), i = `__pk__${e}`;
6800
- u[i] = D`${r}`.as(i), d.push(r), f.push(i);
6801
+ u[i] = O`${r}`.as(i), d.push(r), f.push(i);
6801
6802
  }
6802
6803
  let p = i.regularMeasures ?? [], m = new Set(p), h = t.measures.filter((e) => !m.has(e));
6803
6804
  if (p.length > 0) {
@@ -6806,7 +6807,7 @@ var Jt = class {
6806
6807
  let n = e.get(t);
6807
6808
  if (!n) return null;
6808
6809
  let r = `__reg__${t.replace(".", "__")}`;
6809
- u[r] = D`${n()}`.as(r);
6810
+ u[r] = O`${n()}`.as(r);
6810
6811
  }
6811
6812
  }
6812
6813
  let g = e.primaryCube.sql(n), _ = [];
@@ -6821,29 +6822,29 @@ var Jt = class {
6821
6822
  let e = t.cube.sql(n);
6822
6823
  v = this.applyJoinByType(v, t.joinType ?? "left", e.from, t.joinCondition), e.where && _.push(e.where);
6823
6824
  }
6824
- _.push(...r.queryBuilder.buildWhereConditions(a, t, n)), _.length > 0 && (v = v.where(_.length === 1 ? _[0] : P(..._))), d.length > 0 && (v = v.groupBy(...d));
6825
+ _.push(...r.queryBuilder.buildWhereConditions(a, t, n)), _.length > 0 && (v = v.where(_.length === 1 ? _[0] : F(..._))), d.length > 0 && (v = v.groupBy(...d));
6825
6826
  let y = n.db.$with(c).as(v), b = o.sql(n), x = {}, S = [];
6826
6827
  for (let e of s) {
6827
6828
  let t = o.dimensions?.[e];
6828
6829
  if (!t) return null;
6829
6830
  let r = W(t.sql, n);
6830
- x[e] = D`${r}`.as(e), S.push(r);
6831
+ x[e] = O`${r}`.as(e), S.push(r);
6831
6832
  }
6832
6833
  let C = /* @__PURE__ */ new Set();
6833
6834
  for (let e of h) {
6834
6835
  let [, t] = e.split(".");
6835
6836
  o.measures?.[t]?.type === "avg" && C.add(t);
6836
6837
  }
6837
- let ee = h.filter((e) => {
6838
+ let w = h.filter((e) => {
6838
6839
  let [, t] = e.split(".");
6839
6840
  return !C.has(t);
6840
6841
  });
6841
- if (ee.length > 0) {
6842
- let e = r.queryBuilder.buildResolvedMeasures(ee, new Map([[o.name, o]]), n);
6843
- for (let t of ee) {
6842
+ if (w.length > 0) {
6843
+ let e = r.queryBuilder.buildResolvedMeasures(w, new Map([[o.name, o]]), n);
6844
+ for (let t of w) {
6844
6845
  let [, n] = t.split("."), r = e.get(t);
6845
6846
  if (!r || typeof r != "function") return null;
6846
- x[n] = D`${r()}`.as(n);
6847
+ x[n] = O`${r()}`.as(n);
6847
6848
  }
6848
6849
  }
6849
6850
  for (let e of h) {
@@ -6852,27 +6853,27 @@ var Jt = class {
6852
6853
  let r = o.measures?.[t];
6853
6854
  if (!r?.sql) return null;
6854
6855
  let i = W(r.sql, n), a = `__avg_sum__${t}`, s = `__avg_count__${t}`;
6855
- x[a] = D`sum(${i})`.as(a), x[s] = D`count(${i})`.as(s);
6856
+ x[a] = O`sum(${i})`.as(a), x[s] = O`count(${i})`.as(s);
6856
6857
  }
6857
- let w = n.db.select(x).from(b.from), T = [];
6858
- b.where && T.push(b.where), T.push(...r.queryBuilder.buildWhereConditions(o, t, n)), T.length > 0 && (w = w.where(T.length === 1 ? T[0] : P(...T))), S.length > 0 && (w = w.groupBy(...S));
6859
- let E = n.db.$with(l).as(w), O = {};
6860
- for (let e of t.dimensions ?? []) O[e] = D`${D.identifier(c)}.${D.identifier(e)}`.as(e);
6861
- for (let e of t.timeDimensions ?? []) O[e.dimension] = D`${D.identifier(c)}.${D.identifier(e.dimension)}`.as(e.dimension);
6858
+ let T = n.db.select(x).from(b.from), E = [];
6859
+ b.where && E.push(b.where), E.push(...r.queryBuilder.buildWhereConditions(o, t, n)), E.length > 0 && (T = T.where(E.length === 1 ? E[0] : F(...E))), S.length > 0 && (T = T.groupBy(...S));
6860
+ let D = n.db.$with(l).as(T), k = {};
6861
+ for (let e of t.dimensions ?? []) k[e] = O`${O.identifier(c)}.${O.identifier(e)}`.as(e);
6862
+ for (let e of t.timeDimensions ?? []) k[e.dimension] = O`${O.identifier(c)}.${O.identifier(e.dimension)}`.as(e.dimension);
6862
6863
  for (let e of h) {
6863
6864
  let [, t] = e.split("."), n = o.measures?.[t];
6864
- O[e] = this.buildKeysOuterAggregation(n?.type ?? "sum", l, t, e);
6865
+ k[e] = this.buildKeysOuterAggregation(n?.type ?? "sum", l, t, e);
6865
6866
  }
6866
6867
  for (let e of p) {
6867
6868
  let [t, n] = e.split("."), r = a.get(t)?.measures?.[n], i = `__reg__${e.replace(".", "__")}`;
6868
- O[e] = this.buildKeysOuterAggregation(r?.type ?? "sum", c, i, e);
6869
+ k[e] = this.buildKeysOuterAggregation(r?.type ?? "sum", c, i, e);
6869
6870
  }
6870
- let k = n.db.with(y, E).select(O).from(D`${D.identifier(c)}`), A = f.map((e, t) => M(D`${D.identifier(c)}.${D.identifier(e)}`, D`${D.identifier(l)}.${D.identifier(s[t])}`)), j = A.length === 1 ? A[0] : P(...A);
6871
- k = k.leftJoin(D`${D.identifier(l)}`, j);
6872
- let N = [...(t.dimensions ?? []).map((e) => D`${D.identifier(c)}.${D.identifier(e)}`), ...(t.timeDimensions ?? []).map((e) => D`${D.identifier(c)}.${D.identifier(e.dimension)}`)];
6873
- N.length > 0 && (k = k.groupBy(...N));
6874
- let F = r.queryBuilder.buildOrderBy(t, Object.keys(O));
6875
- return F.length > 0 && (k = k.orderBy(...F)), k = r.queryBuilder.applyLimitAndOffset(k, t), k;
6871
+ let A = n.db.with(y, D).select(k).from(O`${O.identifier(c)}`), j = f.map((e, t) => N(O`${O.identifier(c)}.${O.identifier(e)}`, O`${O.identifier(l)}.${O.identifier(s[t])}`)), M = j.length === 1 ? j[0] : F(...j);
6872
+ A = A.leftJoin(O`${O.identifier(l)}`, M);
6873
+ let P = [...(t.dimensions ?? []).map((e) => O`${O.identifier(c)}.${O.identifier(e)}`), ...(t.timeDimensions ?? []).map((e) => O`${O.identifier(c)}.${O.identifier(e.dimension)}`)];
6874
+ P.length > 0 && (A = A.groupBy(...P));
6875
+ let I = r.queryBuilder.buildOrderBy(t, Object.keys(k));
6876
+ return I.length > 0 && (A = A.orderBy(...I)), A = r.queryBuilder.applyLimitAndOffset(A, t), A;
6876
6877
  }
6877
6878
  tryBuildMultiFactMergeQuery(e, t, n, r) {
6878
6879
  let i = e.multiFactMerge;
@@ -6883,37 +6884,37 @@ var Jt = class {
6883
6884
  });
6884
6885
  if (s) return this.buildMultiFactUnionKeysFallbackQuery(t, n, r, i, l, o);
6885
6886
  let u = i.groups[0].alias, d = i.groups.map((e) => e.alias), f = {};
6886
- if (o.length > 0) for (let e of o) f[e] = D`${this.coalesceQualifiedColumn(d, e)}`.as(e);
6887
- for (let e of i.groups) for (let t of e.measures) f[t] = D`coalesce(${D`${D.identifier(e.alias)}.${D.identifier(t)}`}, 0)`.as(t);
6888
- let p = n.db.with(...l).select(f).from(D`${D.identifier(u)}`), m = /* @__PURE__ */ new Map();
6889
- for (let e of o) m.set(e, D`${D.identifier(u)}.${D.identifier(e)}`);
6887
+ if (o.length > 0) for (let e of o) f[e] = O`${this.coalesceQualifiedColumn(d, e)}`.as(e);
6888
+ for (let e of i.groups) for (let t of e.measures) f[t] = O`coalesce(${O`${O.identifier(e.alias)}.${O.identifier(t)}`}, 0)`.as(t);
6889
+ let p = n.db.with(...l).select(f).from(O`${O.identifier(u)}`), m = /* @__PURE__ */ new Map();
6890
+ for (let e of o) m.set(e, O`${O.identifier(u)}.${O.identifier(e)}`);
6890
6891
  for (let e = 1; e < i.groups.length; e++) {
6891
6892
  let t = i.groups[e].alias, n;
6892
- if (o.length === 0) n = D`1 = 1`;
6893
+ if (o.length === 0) n = O`1 = 1`;
6893
6894
  else {
6894
- let e = o.map((e) => M(m.get(e), D`${D.identifier(t)}.${D.identifier(e)}`));
6895
- n = e.length === 1 ? e[0] : P(...e);
6895
+ let e = o.map((e) => N(m.get(e), O`${O.identifier(t)}.${O.identifier(e)}`));
6896
+ n = e.length === 1 ? e[0] : F(...e);
6896
6897
  }
6897
- if (p = this.applyJoinByType(p, c, D`${D.identifier(t)}`, n), o.length > 0 && c === "full") for (let e of o) m.set(e, D`coalesce(${m.get(e)}, ${D`${D.identifier(t)}.${D.identifier(e)}`})`);
6898
+ if (p = this.applyJoinByType(p, c, O`${O.identifier(t)}`, n), o.length > 0 && c === "full") for (let e of o) m.set(e, O`coalesce(${m.get(e)}, ${O`${O.identifier(t)}.${O.identifier(e)}`})`);
6898
6899
  }
6899
6900
  let h = r.queryBuilder.buildOrderBy(t, Object.keys(f));
6900
6901
  return h.length > 0 && (p = p.orderBy(...h)), r.queryBuilder.applyLimitAndOffset(p, t);
6901
6902
  }
6902
6903
  buildMultiFactUnionKeysFallbackQuery(e, t, n, r, i, a) {
6903
- let o = "mf_all_keys", s = r.groups.map((e) => D`select ${this.buildSharedKeySelection(e.alias, a)} from ${D.identifier(e.alias)}`), c = D`${D.join(s, D` union `)}`, l = t.db.$with(o).as(c), u = {};
6904
- for (let e of a) u[e] = D`${D.identifier(o)}.${D.identifier(e)}`.as(e);
6905
- for (let e of r.groups) for (let t of e.measures) u[t] = D`coalesce(${D`${D.identifier(e.alias)}.${D.identifier(t)}`}, 0)`.as(t);
6906
- let d = t.db.with(...i, l).select(u).from(D`${D.identifier(o)}`);
6904
+ let o = "mf_all_keys", s = r.groups.map((e) => O`select ${this.buildSharedKeySelection(e.alias, a)} from ${O.identifier(e.alias)}`), c = O`${O.join(s, O` union `)}`, l = t.db.$with(o).as(c), u = {};
6905
+ for (let e of a) u[e] = O`${O.identifier(o)}.${O.identifier(e)}`.as(e);
6906
+ for (let e of r.groups) for (let t of e.measures) u[t] = O`coalesce(${O`${O.identifier(e.alias)}.${O.identifier(t)}`}, 0)`.as(t);
6907
+ let d = t.db.with(...i, l).select(u).from(O`${O.identifier(o)}`);
6907
6908
  for (let e of r.groups) {
6908
- let t = a.map((t) => M(D`${D.identifier(o)}.${D.identifier(t)}`, D`${D.identifier(e.alias)}.${D.identifier(t)}`)), n = t.length === 1 ? t[0] : P(...t);
6909
- d = d.leftJoin(D`${D.identifier(e.alias)}`, n);
6909
+ let t = a.map((t) => N(O`${O.identifier(o)}.${O.identifier(t)}`, O`${O.identifier(e.alias)}.${O.identifier(t)}`)), n = t.length === 1 ? t[0] : F(...t);
6910
+ d = d.leftJoin(O`${O.identifier(e.alias)}`, n);
6910
6911
  }
6911
6912
  let f = n.queryBuilder.buildOrderBy(e, Object.keys(u));
6912
6913
  return f.length > 0 && (d = d.orderBy(...f)), n.queryBuilder.applyLimitAndOffset(d, e);
6913
6914
  }
6914
6915
  buildSharedKeySelection(e, t) {
6915
- let n = t.map((t) => D`${D.identifier(e)}.${D.identifier(t)} as ${D.identifier(t)}`);
6916
- return D.join(n, D`, `);
6916
+ let n = t.map((t) => O`${O.identifier(e)}.${O.identifier(t)} as ${O.identifier(t)}`);
6917
+ return O.join(n, O`, `);
6917
6918
  }
6918
6919
  selectRuntimeMergeStrategy(e, t) {
6919
6920
  return !t || e === "innerJoin" ? "inner" : e === "leftJoin" ? "left" : this.supportsFullOuterJoin() ? "full" : "left";
@@ -6923,9 +6924,9 @@ var Jt = class {
6923
6924
  return e === "postgres" || e === "duckdb";
6924
6925
  }
6925
6926
  coalesceQualifiedColumn(e, t) {
6926
- if (e.length === 1) return D`${D.identifier(e[0])}.${D.identifier(t)}`;
6927
- let n = e.map((e) => D`${D.identifier(e)}.${D.identifier(t)}`), r = n[0];
6928
- for (let e = 1; e < n.length; e++) r = D`coalesce(${r}, ${n[e]})`;
6927
+ if (e.length === 1) return O`${O.identifier(e[0])}.${O.identifier(t)}`;
6928
+ let n = e.map((e) => O`${O.identifier(e)}.${O.identifier(t)}`), r = n[0];
6929
+ for (let e = 1; e < n.length; e++) r = O`coalesce(${r}, ${n[e]})`;
6929
6930
  return r;
6930
6931
  }
6931
6932
  canExecuteKeysDeduplication(e, t, n) {
@@ -6971,10 +6972,10 @@ var Jt = class {
6971
6972
  }
6972
6973
  buildKeysOuterAggregation(e, t, n, r) {
6973
6974
  switch (e) {
6974
- case "min": return D`min(${D`${D.identifier(t)}.${D.identifier(n)}`})`.as(r);
6975
- case "max": return D`max(${D`${D.identifier(t)}.${D.identifier(n)}`})`.as(r);
6976
- case "avg": return D`sum(${D`${D.identifier(t)}.${D.identifier(`__avg_sum__${n}`)}`}) / nullif(sum(${D`${D.identifier(t)}.${D.identifier(`__avg_count__${n}`)}`}), 0)`.as(r);
6977
- default: return D`coalesce(sum(${D`${D.identifier(t)}.${D.identifier(n)}`}), 0)`.as(r);
6975
+ case "min": return O`min(${O`${O.identifier(t)}.${O.identifier(n)}`})`.as(r);
6976
+ case "max": return O`max(${O`${O.identifier(t)}.${O.identifier(n)}`})`.as(r);
6977
+ case "avg": return O`sum(${O`${O.identifier(t)}.${O.identifier(`__avg_sum__${n}`)}`}) / nullif(sum(${O`${O.identifier(t)}.${O.identifier(`__avg_count__${n}`)}`}), 0)`.as(r);
6978
+ default: return O`coalesce(sum(${O`${O.identifier(t)}.${O.identifier(n)}`}), 0)`.as(r);
6978
6979
  }
6979
6980
  }
6980
6981
  applyJoinByType(e, t, n, r) {
@@ -6994,7 +6995,7 @@ function $(e, t) {
6994
6995
  console.log(`\n[DC_DEBUG] ${e}`), console.log(n), r.length > 0 && console.log("params:", r), console.log();
6995
6996
  } catch {}
6996
6997
  }
6997
- var Yt = class {
6998
+ var Xt = class {
6998
6999
  queryBuilder;
6999
7000
  drizzlePlanBuilder;
7000
7001
  databaseAdapter;
@@ -7008,9 +7009,9 @@ var Yt = class {
7008
7009
  rlsSetup;
7009
7010
  constructor(e, t, n) {
7010
7011
  if (this.dbExecutor = e, this.databaseAdapter = e.databaseAdapter, !this.databaseAdapter) throw Error("DatabaseExecutor must have a databaseAdapter property");
7011
- this.queryBuilder = new _t(this.databaseAdapter);
7012
- let r = new yt(), i = new bt(this.queryBuilder);
7013
- this.drizzlePlanBuilder = new Jt(this.queryBuilder, i, this.databaseAdapter), this.comparisonQueryBuilder = new kt(this.databaseAdapter), this.funnelQueryBuilder = new At(this.databaseAdapter), this.flowQueryBuilder = new jt(this.databaseAdapter), this.retentionQueryBuilder = new It(this.databaseAdapter), this.logicalPlanBuilder = new Lt(r), this.planOptimiser = new Rt(), this.cacheConfig = t, this.rlsSetup = n;
7012
+ this.queryBuilder = new vt(this.databaseAdapter);
7013
+ let r = new bt(), i = new xt(this.queryBuilder);
7014
+ this.drizzlePlanBuilder = new Yt(this.queryBuilder, i, this.databaseAdapter), this.comparisonQueryBuilder = new At(this.databaseAdapter), this.funnelQueryBuilder = new jt(this.databaseAdapter), this.flowQueryBuilder = new Mt(this.databaseAdapter), this.retentionQueryBuilder = new Lt(this.databaseAdapter), this.logicalPlanBuilder = new Rt(r), this.planOptimiser = new zt(), this.cacheConfig = t, this.rlsSetup = n;
7014
7015
  }
7015
7016
  async withRLSContext(e, t) {
7016
7017
  if (!this.rlsSetup) return t();
@@ -7028,7 +7029,7 @@ var Yt = class {
7028
7029
  let i = this.resolveQueryMode(t);
7029
7030
  this.validateQueryForMode(i, e, t);
7030
7031
  let a;
7031
- if (this.cacheConfig?.enabled !== !1 && this.cacheConfig?.provider) if (a = at(t, n, this.cacheConfig), r?.skipCache) this.cacheConfig.onCacheEvent?.({
7032
+ if (this.cacheConfig?.enabled !== !1 && this.cacheConfig?.provider) if (a = ot(t, n, this.cacheConfig), r?.skipCache) this.cacheConfig.onCacheEvent?.({
7032
7033
  type: "miss",
7033
7034
  key: a,
7034
7035
  durationMs: 0
@@ -7214,7 +7215,7 @@ var Yt = class {
7214
7215
  $("query", s);
7215
7216
  let c = this.queryBuilder.collectNumericFields(e, t), l = await this.dbExecutor.execute(s, c);
7216
7217
  return {
7217
- data: Ot(Array.isArray(l) ? l.map((e) => {
7218
+ data: kt(Array.isArray(l) ? l.map((e) => {
7218
7219
  let n = { ...e };
7219
7220
  if (t.timeDimensions) {
7220
7221
  for (let e of t.timeDimensions) if (e.dimension in n) {
@@ -7341,7 +7342,7 @@ var Yt = class {
7341
7342
  }
7342
7343
  validateQueryForMode(e, t, n) {
7343
7344
  let r = () => {
7344
- let e = Qt(t, n);
7345
+ let e = $t(t, n);
7345
7346
  if (!e.isValid) throw Error(`Query validation failed: ${e.errors.join(", ")}`);
7346
7347
  };
7347
7348
  ({
@@ -7359,7 +7360,7 @@ var Yt = class {
7359
7360
  let e = this.retentionQueryBuilder.validateConfig(n.retention, t);
7360
7361
  if (!e.isValid) throw Error(`Retention validation failed: ${e.errors.join(", ")}`);
7361
7362
  }
7362
- })[tt(e)]();
7363
+ })[nt(e)]();
7363
7364
  }
7364
7365
  async executeQueryByModeWithCache(e, t, n, r, i) {
7365
7366
  return {
@@ -7368,7 +7369,7 @@ var Yt = class {
7368
7369
  funnel: () => this.executeFunnelQueryWithCache(t, n, r, i),
7369
7370
  flow: () => this.executeFlowQueryWithCache(t, n, r, i),
7370
7371
  retention: () => this.executeRetentionQueryWithCache(t, n, r, i)
7371
- }[tt(e)]();
7372
+ }[nt(e)]();
7372
7373
  }
7373
7374
  async executeRegularQueryWithCache(e, t, n, r) {
7374
7375
  let i = new K(), a = this.createQueryContext(n, i, t);
@@ -7378,7 +7379,7 @@ var Yt = class {
7378
7379
  let c = this.drizzlePlanBuilder.build(s, t, a);
7379
7380
  $("query", c);
7380
7381
  let l = this.queryBuilder.collectNumericFields(e, t), u = await this.dbExecutor.execute(c, l), d = {
7381
- data: Ot(Array.isArray(u) ? u.map((e) => {
7382
+ data: kt(Array.isArray(u) ? u.map((e) => {
7382
7383
  let n = { ...e };
7383
7384
  if (t.timeDimensions) {
7384
7385
  for (let e of t.timeDimensions) if (e.dimension in n) {
@@ -7416,7 +7417,7 @@ var Yt = class {
7416
7417
  funnel: () => this.dryRunFunnel(t, n, r),
7417
7418
  flow: () => this.dryRunFlow(t, n, r),
7418
7419
  retention: () => this.dryRunRetention(t, n, r)
7419
- }[tt(e)]();
7420
+ }[nt(e)]();
7420
7421
  }
7421
7422
  async generateComparisonSQL(e, t, n) {
7422
7423
  let r = this.buildComparisonExecutionPlan(t).periodQueries[0];
@@ -7468,7 +7469,7 @@ var Yt = class {
7468
7469
  }
7469
7470
  preloadFilterCache(e, t, n, r) {
7470
7471
  if (e.filters && e.filters.length > 0) {
7471
- let i = it(e.filters);
7472
+ let i = at(e.filters);
7472
7473
  for (let e of i) {
7473
7474
  let i = G(e);
7474
7475
  if (t.has(i)) continue;
@@ -7486,7 +7487,7 @@ var Yt = class {
7486
7487
  }
7487
7488
  if (e.timeDimensions) {
7488
7489
  for (let i of e.timeDimensions) if (i.dateRange) {
7489
- let e = rt(i.dimension, i.dateRange);
7490
+ let e = it(i.dimension, i.dateRange);
7490
7491
  if (t.has(e)) continue;
7491
7492
  let [a, o] = i.dimension.split("."), s = n.get(a);
7492
7493
  if (!s) continue;
@@ -7497,7 +7498,7 @@ var Yt = class {
7497
7498
  }
7498
7499
  }
7499
7500
  }
7500
- }, Xt = class t {
7501
+ }, Zt = class t {
7501
7502
  cubes = /* @__PURE__ */ new Map();
7502
7503
  metadataCache;
7503
7504
  cacheConfig;
@@ -7522,10 +7523,10 @@ var Yt = class {
7522
7523
  }
7523
7524
  createDbExecutor() {
7524
7525
  if (!this.db) throw Error("Database executor not configured");
7525
- return Ze(this.db, this.schema, this.engineType);
7526
+ return Qe(this.db, this.schema, this.engineType);
7526
7527
  }
7527
7528
  createQueryExecutor(e = !1) {
7528
- return new Yt(this.createDbExecutor(), e ? this.cacheConfig : void 0, this.rlsSetup);
7529
+ return new Xt(this.createDbExecutor(), e ? this.cacheConfig : void 0, this.rlsSetup);
7529
7530
  }
7530
7531
  formatSqlResult(t) {
7531
7532
  let n = this.getEngineType() ?? "postgres";
@@ -7549,7 +7550,7 @@ var Yt = class {
7549
7550
  t.push(`Calculated measure '${e.name}.${n}' must have calculatedSql property`);
7550
7551
  continue;
7551
7552
  }
7552
- let i = mt(r.calculatedSql);
7553
+ let i = ht(r.calculatedSql);
7553
7554
  if (!i.isValid) {
7554
7555
  t.push(`Invalid calculatedSql syntax in '${e.name}.${n}': ${i.errors.join(", ")}`);
7555
7556
  continue;
@@ -7719,18 +7720,18 @@ var Yt = class {
7719
7720
  return Array.from(this.cubes.keys());
7720
7721
  }
7721
7722
  validateQuery(e) {
7722
- return Qt(this.cubes, e);
7723
+ return $t(this.cubes, e);
7723
7724
  }
7724
7725
  analyzeQuery(e, t) {
7725
7726
  return this.createQueryExecutor(!0).analyzeQuery(this.cubes, e, t);
7726
7727
  }
7727
7728
  };
7728
- function Zt(e) {
7729
+ function Qt(e) {
7729
7730
  let t = [];
7730
7731
  return e.timeDimensions?.some((e) => e.compareDateRange && e.compareDateRange.length >= 2) && t.push("comparison"), e.funnel !== void 0 && e.funnel.steps?.length >= 2 && t.push("funnel"), e.flow !== void 0 && e.flow.startingStep !== void 0 && e.flow.eventDimension !== void 0 && t.push("flow"), e.retention !== void 0 && e.retention.timeDimension != null && e.retention.bindingKey != null && t.push("retention"), t.length === 0 ? [] : t;
7731
7732
  }
7732
- function Qt(e, t) {
7733
- let n = [], r = Zt(t);
7733
+ function $t(e, t) {
7734
+ let n = [], r = Qt(t);
7734
7735
  if (r.length > 1) return n.push(`Query contains multiple query modes: ${r.join(", ")}`), {
7735
7736
  isValid: !1,
7736
7737
  errors: n
@@ -7751,7 +7752,7 @@ function Qt(e, t) {
7751
7752
  }
7752
7753
  },
7753
7754
  retention: () => {
7754
- let r = t.retention, i = en(r.timeDimension);
7755
+ let r = t.retention, i = tn(r.timeDimension);
7755
7756
  i && !e.has(i) && n.push(`Retention cube not found: ${i}`);
7756
7757
  let a = r.bindingKey;
7757
7758
  if (typeof a == "string") {
@@ -7817,7 +7818,7 @@ function Qt(e, t) {
7817
7818
  }
7818
7819
  o.dimensions[i] || n.push(`TimeDimension '${i}' not found on cube '${t}' (must be a dimension with time type)`);
7819
7820
  }
7820
- if (t.filters) for (let r of t.filters) $t(r, e, n, a);
7821
+ if (t.filters) for (let r of t.filters) en(r, e, n, a);
7821
7822
  if (a.size === 0 && n.push("Query must reference at least one cube through measures, dimensions, or filters"), t.ungrouped) {
7822
7823
  t.dimensions && t.dimensions.length > 0 || t.timeDimensions && t.timeDimensions.length > 0 || n.push("Ungrouped queries require at least one dimension or time dimension"), t.funnel && n.push("Ungrouped queries are incompatible with funnel analysis"), t.flow && n.push("Ungrouped queries are incompatible with flow analysis"), t.retention && n.push("Ungrouped queries are incompatible with retention analysis"), t.timeDimensions?.some((e) => e.compareDateRange && e.compareDateRange.length > 0) && n.push("Ungrouped queries are incompatible with compareDateRange"), t.timeDimensions?.some((e) => e.fillMissingDates === !0) && n.push("Ungrouped queries are incompatible with fillMissingDates");
7823
7824
  let r = new Set([
@@ -7872,10 +7873,10 @@ function Qt(e, t) {
7872
7873
  errors: n
7873
7874
  };
7874
7875
  }
7875
- function $t(e, t, n, r) {
7876
+ function en(e, t, n, r) {
7876
7877
  if ("and" in e || "or" in e) {
7877
7878
  let i = e.and || e.or || [];
7878
- for (let e of i) $t(e, t, n, r);
7879
+ for (let e of i) en(e, t, n, r);
7879
7880
  return;
7880
7881
  }
7881
7882
  if (!("member" in e)) {
@@ -7898,7 +7899,7 @@ function $t(e, t, n, r) {
7898
7899
  n.push(`Filter field '${a}' not found on cube '${i}' (must be a dimension or measure)${e}`);
7899
7900
  }
7900
7901
  }
7901
- function en(e) {
7902
+ function tn(e) {
7902
7903
  if (typeof e == "string") {
7903
7904
  let [t] = e.split(".");
7904
7905
  return t || null;
@@ -7906,4 +7907,4 @@ function en(e) {
7906
7907
  return e.cube;
7907
7908
  }
7908
7909
  //#endregion
7909
- export { Xt as t };
7910
+ export { Zt as t };