@sisense/mcp-server 0.2.6 → 0.2.9

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.
@@ -0,0 +1,2996 @@
1
+ import {
2
+ $i,
3
+ Ap,
4
+ Bd,
5
+ Bi,
6
+ C,
7
+ Ci,
8
+ Ct,
9
+ Dh,
10
+ E,
11
+ Fd,
12
+ Fi,
13
+ Hd,
14
+ Hi,
15
+ J,
16
+ Ke,
17
+ Ld,
18
+ Ln,
19
+ Lp,
20
+ Md,
21
+ Mp,
22
+ Nt,
23
+ Oe,
24
+ Pd,
25
+ Rn,
26
+ Rp,
27
+ Se,
28
+ Sp,
29
+ Tp,
30
+ Ud,
31
+ X,
32
+ Xp,
33
+ Yt,
34
+ Zt,
35
+ ap,
36
+ be,
37
+ bp,
38
+ cp,
39
+ dp,
40
+ ed,
41
+ fp,
42
+ g,
43
+ gp,
44
+ gt,
45
+ h1 as h,
46
+ hp,
47
+ ip,
48
+ jd,
49
+ ji,
50
+ jn,
51
+ lp,
52
+ m,
53
+ mp,
54
+ op,
55
+ pp,
56
+ re,
57
+ rp,
58
+ sp,
59
+ up,
60
+ vn,
61
+ vs,
62
+ wn,
63
+ wp,
64
+ xp,
65
+ ye,
66
+ zd,
67
+ zi
68
+ } from "./sse-server-r50cemee.js";
69
+
70
+ // node_modules/@sisense/sdk-ui/dist/dimensions-C1R5YRt-.js
71
+ class y extends vn {
72
+ constructor(t, e, r, o, d, m2, l, c, a, g2) {
73
+ if (super(t, d || E.Dimension, m2, c, a), this.__serializable = "DimensionalDimension", this._dimensions = [], this._attributes = [], this._sort = C.None, !a && e) {
74
+ const { table: D, column: s } = Oe(e);
75
+ this.composeCode = `${Ci}.${gt(D)}.${gt(s)}`;
76
+ }
77
+ this._sort = l || C.None, this._expression = e, this.setDimensions(o || []), this.setAttributes(r), g2 && (this.defaultAttribute = g2);
78
+ }
79
+ static parseType(t) {
80
+ switch (t) {
81
+ case "datetime":
82
+ case E.DateDimension:
83
+ return E.DateDimension;
84
+ case "text":
85
+ case E.TextDimension:
86
+ return E.TextDimension;
87
+ case "numeric":
88
+ case E.NumericDimension:
89
+ return E.NumericDimension;
90
+ }
91
+ return E.TextDimension;
92
+ }
93
+ getAttachedName(t, e) {
94
+ let r = t;
95
+ const o = be(t);
96
+ return (o === "id" || o === "name" || Object.getOwnPropertyDescriptor(this, o) !== undefined || this[o] !== undefined) && (r = e), r;
97
+ }
98
+ setDimensions(t) {
99
+ this._dimensions = t;
100
+ for (let e = 0;e < t.length; e++) {
101
+ const r = this.getAttachedName(t[e].name, t[e].attributes[0].expression);
102
+ this[be(r)] = t[e], r != t[e].name && (t[e].name = r);
103
+ }
104
+ }
105
+ setAttributes(t) {
106
+ this._attributes = t || [];
107
+ for (let e = 0;e < t.length; e++) {
108
+ const r = this.getAttachedName(t[e].name, t[e].expression);
109
+ this[be(r)] = t[e], t[e].name != r && (t[e].name = r);
110
+ }
111
+ }
112
+ get id() {
113
+ return this._expression;
114
+ }
115
+ get attributes() {
116
+ return this._attributes;
117
+ }
118
+ get dimensions() {
119
+ return this._dimensions;
120
+ }
121
+ get expression() {
122
+ return this._expression;
123
+ }
124
+ getSort() {
125
+ return this._sort;
126
+ }
127
+ sort(t) {
128
+ return new y(this.name, this.expression, this.attributes, this.dimensions, this.type, this.description, t, this.dataSource, this.composeCode, this.defaultAttribute);
129
+ }
130
+ serialize() {
131
+ const t = super.serialize();
132
+ return t.expression = this.expression, this.getSort() !== undefined && (t.sort = this.getSort()), t.attributes = this._attributes.map((e) => e.serialize()), t.dimensions = this._dimensions.map((e) => e.serialize()), this.defaultAttribute && (t.defaultAttribute = this.defaultAttribute.serialize()), t;
133
+ }
134
+ jaql(t) {
135
+ if (this.defaultAttribute)
136
+ return this.defaultAttribute.jaql(t);
137
+ if (this.dimensions.length > 0)
138
+ return this.dimensions[0].jaql(t);
139
+ const e = {
140
+ jaql: {
141
+ title: this.name,
142
+ dim: this.expression,
143
+ datatype: vs(this.type)
144
+ }
145
+ };
146
+ return this._sort != C.None && (e.jaql.sort = this._sort == C.Ascending ? "asc" : "desc"), t === true ? e.jaql : e;
147
+ }
148
+ }
149
+ var z = (i) => i && i.__serializable === "DimensionalDimension";
150
+
151
+ class p extends y {
152
+ constructor(t, e, r, o, d, m2, l, c) {
153
+ super(t, e, [], [], E.DateDimension, r, o, d, m2), this.__serializable = "DimensionalDateDimension";
154
+ const a = [r, o, d, undefined, undefined, l, c];
155
+ this.defaultLevel = g.Years, this.Years = new J(g.Years, e, g.Years, "yyyy", ...a), this.Quarters = new J(g.Quarters, e, g.Quarters, "Q yyyy", ...a), this.Months = new J(g.Months, e, g.Months, "yyyy-MM", ...a), this.Weeks = new J(g.Weeks, e, g.Weeks, "ww yyyy", ...a), this.Days = new J(g.Days, e, g.Days, "yyyy-MM-dd", ...a), this.Hours = new J(g.Hours, e, g.Hours, "yyyy-MM-dd HH:mm", ...a), this.MinutesRoundTo30 = new J(g.MinutesRoundTo30, e, g.MinutesRoundTo30, "yyyy-MM-dd HH:mm", r, o, d), this.MinutesRoundTo15 = new J(g.MinutesRoundTo15, e, g.MinutesRoundTo15, "yyyy-MM-dd HH:mm", ...a), this.Minutes = new J(g.Minutes, e, g.Minutes, "yyyy-MM-dd HH:mm", ...a), this.Seconds = new J(g.Seconds, e, g.Seconds, "yyyy-MM-dd HH:mm:ss", r, o, d), this.AggHours = new J(g.AggHours, e, g.AggHours, "HH:mm", ...a), this.AggMinutesRoundTo30 = new J(g.AggMinutesRoundTo30, e, g.AggMinutesRoundTo30, "HH:mm", r, o, d), this.AggMinutesRoundTo15 = new J(g.AggMinutesRoundTo15, e, g.AggMinutesRoundTo15, "HH:mm", ...a), this.AggMinutesRoundTo1 = new J(g.AggMinutesRoundTo1, e, g.AggMinutesRoundTo1, "HH:mm", ...a), this.setAttributes([
156
+ this.Years,
157
+ this.Quarters,
158
+ this.Months,
159
+ this.Weeks,
160
+ this.Days,
161
+ this.Hours,
162
+ this.MinutesRoundTo30,
163
+ this.MinutesRoundTo15,
164
+ this.Minutes,
165
+ this.Seconds,
166
+ this.AggHours,
167
+ this.AggMinutesRoundTo30,
168
+ this.AggMinutesRoundTo15,
169
+ this.AggMinutesRoundTo1
170
+ ]);
171
+ }
172
+ get id() {
173
+ return this.expression;
174
+ }
175
+ setDimensions() {}
176
+ setAttributes(t) {
177
+ this._attributes = t;
178
+ }
179
+ getSort() {
180
+ return this._sort;
181
+ }
182
+ sort(t) {
183
+ return new p(this.name, this.expression, this.description, t, this.dataSource, this.composeCode, this.indexed, this.merged);
184
+ }
185
+ serialize() {
186
+ return super.serialize();
187
+ }
188
+ jaql(t) {
189
+ const e = this[this.defaultLevel].jaql();
190
+ return e.jaql.title = this.name, t ? e.jaql : e;
191
+ }
192
+ }
193
+ var S = (i) => i && i.__serializable === "DimensionalDateDimension";
194
+ function N(i) {
195
+ const t = i.name || i.title, e = i.desc || i.description, r = i.expression || i.dim, o = y.parseType(i.dimtype || i.type), d = i.sort, m2 = i.dataSource, l = i.indexed, c = i.merged;
196
+ if (o == E.DateDimension)
197
+ return new p(t, r, e, d, m2, undefined, l, c);
198
+ const a = Object.getOwnPropertyNames(i).map((s) => i[s]).filter((s) => E.isAttribute(s == null ? undefined : s.type));
199
+ if (a.length == 0)
200
+ if (i.attributes) {
201
+ let s;
202
+ for (let M = 0;M < i.attributes.length; M++)
203
+ s = i.attributes[M], a.push(new Ke(s.name, s.expression, s.type, s.description, s.sort, s.dataSource, undefined, undefined, s.indexed, s.merged));
204
+ } else
205
+ r && a.push(new Ke(t, r, o, e, d, m2, undefined, undefined, l, c));
206
+ const g2 = Object.getOwnPropertyNames(i).map((s) => i[s]).filter((s) => E.isDimension(s == null ? undefined : s.type));
207
+ if (g2.length == 0 && i.dimensions)
208
+ for (let s = 0;s < i.dimensions.length; s++)
209
+ g2.push(N(i.dimensions[s]));
210
+ const D = new y(t, r, a, g2, o, e, d, m2);
211
+ return i.defaultAttribute && (D.defaultAttribute = a.find((s) => s.name === i.defaultAttribute)), D;
212
+ }
213
+ function q(i) {
214
+ const t = i.name || i.title, e = i.expression || i.dim, r = i.desc || i.description, o = i.sort, d = i.dataSource;
215
+ return new p(t, e, r, o, d, undefined, i.indexed, i.merged);
216
+ }
217
+
218
+ // node_modules/@sisense/sdk-ui/dist/analytics-composer/node.js
219
+ var Vt = Object.defineProperty;
220
+ var Wt = Object.defineProperties;
221
+ var jt = Object.getOwnPropertyDescriptors;
222
+ var Ue = Object.getOwnPropertySymbols;
223
+ var Kt = Object.prototype.hasOwnProperty;
224
+ var Gt = Object.prototype.propertyIsEnumerable;
225
+ var _e = (e, t, r) => (t in e) ? Vt(e, t, { enumerable: true, configurable: true, writable: true, value: r }) : e[t] = r;
226
+ var y2 = (e, t) => {
227
+ for (var r in t || (t = {}))
228
+ Kt.call(t, r) && _e(e, r, t[r]);
229
+ if (Ue)
230
+ for (var r of Ue(t))
231
+ Gt.call(t, r) && _e(e, r, t[r]);
232
+ return e;
233
+ };
234
+ var F = (e, t) => Wt(e, jt(t));
235
+ function Yr(e, t) {
236
+ const r = e.length, s = t.length, n = Array.from({ length: r + 1 }, (i, o) => Array.from({ length: s + 1 }, (a, u) => o === 0 ? u : u === 0 ? o : 0));
237
+ for (let i = 1;i <= r; i++)
238
+ for (let o = 1;o <= s; o++)
239
+ n[i][o] = Math.min(n[i - 1][o] + 1, n[i][o - 1] + 1, n[i - 1][o - 1] + (e[i - 1] === t[o - 1] ? 0 : 1));
240
+ return n[r][s];
241
+ }
242
+
243
+ class Jr {
244
+ constructor() {
245
+ this.keyToValue = /* @__PURE__ */ new Map, this.valueToKey = /* @__PURE__ */ new Map;
246
+ }
247
+ set(t, r) {
248
+ this.keyToValue.set(t, r), this.valueToKey.set(r, t);
249
+ }
250
+ getByKey(t) {
251
+ return this.keyToValue.get(t);
252
+ }
253
+ getByValue(t) {
254
+ return this.valueToKey.get(t);
255
+ }
256
+ clear() {
257
+ this.keyToValue.clear(), this.valueToKey.clear();
258
+ }
259
+ }
260
+
261
+ class ot {
262
+ constructor(t) {
263
+ this.generateIdentifier = t, this.kv = new Jr;
264
+ }
265
+ register(t, r) {
266
+ this.kv.getByValue(t) || (r || (r = this.generateIdentifier(t)), this.kv.set(r, t));
267
+ }
268
+ clear() {
269
+ this.kv.clear();
270
+ }
271
+ getIdentifier(t) {
272
+ return this.kv.getByValue(t);
273
+ }
274
+ getValue(t) {
275
+ return this.kv.getByKey(t);
276
+ }
277
+ }
278
+
279
+ class Hr extends ot {
280
+ constructor() {
281
+ super((t) => t.name), this.classToAllowedProps = /* @__PURE__ */ new Map;
282
+ }
283
+ register(t, r) {
284
+ typeof r == "object" ? (r.allowProps && this.classToAllowedProps.set(t, r.allowProps), super.register(t, r.identifier)) : super.register(t, r);
285
+ }
286
+ getAllowedProps(t) {
287
+ return this.classToAllowedProps.get(t);
288
+ }
289
+ }
290
+ function Qr(e) {
291
+ if ("values" in Object)
292
+ return Object.values(e);
293
+ const t = [];
294
+ for (const r in e)
295
+ e.hasOwnProperty(r) && t.push(e[r]);
296
+ return t;
297
+ }
298
+ function Xr(e, t) {
299
+ const r = Qr(e);
300
+ if ("find" in r)
301
+ return r.find(t);
302
+ const s = r;
303
+ for (let n = 0;n < s.length; n++) {
304
+ const i = s[n];
305
+ if (t(i))
306
+ return i;
307
+ }
308
+ }
309
+ function V(e, t) {
310
+ Object.entries(e).forEach(([r, s]) => t(s, r));
311
+ }
312
+ function ee(e, t) {
313
+ return e.indexOf(t) !== -1;
314
+ }
315
+ function We(e, t) {
316
+ for (let r = 0;r < e.length; r++) {
317
+ const s = e[r];
318
+ if (t(s))
319
+ return s;
320
+ }
321
+ }
322
+
323
+ class Zr {
324
+ constructor() {
325
+ this.transfomers = {};
326
+ }
327
+ register(t) {
328
+ this.transfomers[t.name] = t;
329
+ }
330
+ findApplicable(t) {
331
+ return Xr(this.transfomers, (r) => r.isApplicable(t));
332
+ }
333
+ findByName(t) {
334
+ return this.transfomers[t];
335
+ }
336
+ }
337
+ var es = (e) => Object.prototype.toString.call(e).slice(8, -1);
338
+ var at = (e) => typeof e == "undefined";
339
+ var ts = (e) => e === null;
340
+ var G = (e) => typeof e != "object" || e === null || e === Object.prototype ? false : Object.getPrototypeOf(e) === null ? true : Object.getPrototypeOf(e) === Object.prototype;
341
+ var pe = (e) => G(e) && Object.keys(e).length === 0;
342
+ var I = (e) => Array.isArray(e);
343
+ var rs = (e) => typeof e == "string";
344
+ var ss = (e) => typeof e == "number" && !isNaN(e);
345
+ var ns = (e) => typeof e == "boolean";
346
+ var is = (e) => e instanceof RegExp;
347
+ var Y = (e) => e instanceof Map;
348
+ var J2 = (e) => e instanceof Set;
349
+ var ut = (e) => es(e) === "Symbol";
350
+ var os = (e) => e instanceof Date && !isNaN(e.valueOf());
351
+ var as = (e) => e instanceof Error;
352
+ var je = (e) => typeof e == "number" && isNaN(e);
353
+ var us = (e) => ns(e) || ts(e) || at(e) || ss(e) || rs(e) || ut(e);
354
+ var cs = (e) => typeof e == "bigint";
355
+ var ls = (e) => e === 1 / 0 || e === -1 / 0;
356
+ var fs = (e) => ArrayBuffer.isView(e) && !(e instanceof DataView);
357
+ var ds = (e) => e instanceof URL;
358
+ var ct = (e) => e.replace(/\./g, "\\.");
359
+ var ce = (e) => e.map(String).map(ct).join(".");
360
+ var K = (e) => {
361
+ const t = [];
362
+ let r = "";
363
+ for (let n = 0;n < e.length; n++) {
364
+ let i = e.charAt(n);
365
+ if (i === "\\" && e.charAt(n + 1) === ".") {
366
+ r += ".", n++;
367
+ continue;
368
+ }
369
+ if (i === ".") {
370
+ t.push(r), r = "";
371
+ continue;
372
+ }
373
+ r += i;
374
+ }
375
+ const s = r;
376
+ return t.push(s), t;
377
+ };
378
+ function v(e, t, r, s) {
379
+ return {
380
+ isApplicable: e,
381
+ annotation: t,
382
+ transform: r,
383
+ untransform: s
384
+ };
385
+ }
386
+ var lt = [
387
+ v(at, "undefined", () => null, () => {}),
388
+ v(cs, "bigint", (e) => e.toString(), (e) => typeof BigInt != "undefined" ? BigInt(e) : (console.error("Please add a BigInt polyfill."), e)),
389
+ v(os, "Date", (e) => e.toISOString(), (e) => new Date(e)),
390
+ v(as, "Error", (e, t) => {
391
+ const r = {
392
+ name: e.name,
393
+ message: e.message
394
+ };
395
+ return t.allowedErrorProps.forEach((s) => {
396
+ r[s] = e[s];
397
+ }), r;
398
+ }, (e, t) => {
399
+ const r = new Error(e.message);
400
+ return r.name = e.name, r.stack = e.stack, t.allowedErrorProps.forEach((s) => {
401
+ r[s] = e[s];
402
+ }), r;
403
+ }),
404
+ v(is, "regexp", (e) => "" + e, (e) => {
405
+ const t = e.slice(1, e.lastIndexOf("/")), r = e.slice(e.lastIndexOf("/") + 1);
406
+ return new RegExp(t, r);
407
+ }),
408
+ v(J2, "set", (e) => [...e.values()], (e) => new Set(e)),
409
+ v(Y, "map", (e) => [...e.entries()], (e) => new Map(e)),
410
+ v((e) => je(e) || ls(e), "number", (e) => je(e) ? "NaN" : e > 0 ? "Infinity" : "-Infinity", Number),
411
+ v((e) => e === 0 && 1 / e === -1 / 0, "number", () => "-0", Number),
412
+ v(ds, "URL", (e) => e.toString(), (e) => new URL(e))
413
+ ];
414
+ function ie(e, t, r, s) {
415
+ return {
416
+ isApplicable: e,
417
+ annotation: t,
418
+ transform: r,
419
+ untransform: s
420
+ };
421
+ }
422
+ var ft = ie((e, t) => ut(e) ? !!t.symbolRegistry.getIdentifier(e) : false, (e, t) => ["symbol", t.symbolRegistry.getIdentifier(e)], (e) => e.description, (e, t, r) => {
423
+ const s = r.symbolRegistry.getValue(t[1]);
424
+ if (!s)
425
+ throw new Error("Trying to deserialize unknown symbol");
426
+ return s;
427
+ });
428
+ var ms = [
429
+ Int8Array,
430
+ Uint8Array,
431
+ Int16Array,
432
+ Uint16Array,
433
+ Int32Array,
434
+ Uint32Array,
435
+ Float32Array,
436
+ Float64Array,
437
+ Uint8ClampedArray
438
+ ].reduce((e, t) => (e[t.name] = t, e), {});
439
+ var dt = ie(fs, (e) => ["typed-array", e.constructor.name], (e) => [...e], (e, t) => {
440
+ const r = ms[t[1]];
441
+ if (!r)
442
+ throw new Error("Trying to deserialize unknown typed array");
443
+ return new r(e);
444
+ });
445
+ function mt(e, t) {
446
+ return e != null && e.constructor ? !!t.classRegistry.getIdentifier(e.constructor) : false;
447
+ }
448
+ var pt = ie(mt, (e, t) => ["class", t.classRegistry.getIdentifier(e.constructor)], (e, t) => {
449
+ const r = t.classRegistry.getAllowedProps(e.constructor);
450
+ if (!r)
451
+ return y2({}, e);
452
+ const s = {};
453
+ return r.forEach((n) => {
454
+ s[n] = e[n];
455
+ }), s;
456
+ }, (e, t, r) => {
457
+ const s = r.classRegistry.getValue(t[1]);
458
+ if (!s)
459
+ throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);
460
+ return Object.assign(Object.create(s.prototype), e);
461
+ });
462
+ var gt2 = ie((e, t) => !!t.customTransformerRegistry.findApplicable(e), (e, t) => ["custom", t.customTransformerRegistry.findApplicable(e).name], (e, t) => t.customTransformerRegistry.findApplicable(e).serialize(e), (e, t, r) => {
463
+ const s = r.customTransformerRegistry.findByName(t[1]);
464
+ if (!s)
465
+ throw new Error("Trying to deserialize unknown custom value");
466
+ return s.deserialize(e);
467
+ });
468
+ var ps = [pt, ft, gt2, dt];
469
+ var Ke2 = (e, t) => {
470
+ const r = We(ps, (n) => n.isApplicable(e, t));
471
+ if (r)
472
+ return {
473
+ value: r.transform(e, t),
474
+ type: r.annotation(e, t)
475
+ };
476
+ const s = We(lt, (n) => n.isApplicable(e, t));
477
+ if (s)
478
+ return {
479
+ value: s.transform(e, t),
480
+ type: s.annotation
481
+ };
482
+ };
483
+ var yt = {};
484
+ lt.forEach((e) => {
485
+ yt[e.annotation] = e;
486
+ });
487
+ var gs = (e, t, r) => {
488
+ if (I(t))
489
+ switch (t[0]) {
490
+ case "symbol":
491
+ return ft.untransform(e, t, r);
492
+ case "class":
493
+ return pt.untransform(e, t, r);
494
+ case "custom":
495
+ return gt2.untransform(e, t, r);
496
+ case "typed-array":
497
+ return dt.untransform(e, t, r);
498
+ default:
499
+ throw new Error("Unknown transformation: " + t);
500
+ }
501
+ else {
502
+ const s = yt[t];
503
+ if (!s)
504
+ throw new Error("Unknown transformation: " + t);
505
+ return s.untransform(e, r);
506
+ }
507
+ };
508
+ var L = (e, t) => {
509
+ if (t > e.size)
510
+ throw new Error("index out of bounds");
511
+ const r = e.keys();
512
+ for (;t > 0; )
513
+ r.next(), t--;
514
+ return r.next().value;
515
+ };
516
+ function ht(e) {
517
+ if (ee(e, "__proto__"))
518
+ throw new Error("__proto__ is not allowed as a property");
519
+ if (ee(e, "prototype"))
520
+ throw new Error("prototype is not allowed as a property");
521
+ if (ee(e, "constructor"))
522
+ throw new Error("constructor is not allowed as a property");
523
+ }
524
+ var ys = (e, t) => {
525
+ ht(t);
526
+ for (let r = 0;r < t.length; r++) {
527
+ const s = t[r];
528
+ if (J2(e))
529
+ e = L(e, +s);
530
+ else if (Y(e)) {
531
+ const n = +s, i = +t[++r] == 0 ? "key" : "value", o = L(e, n);
532
+ switch (i) {
533
+ case "key":
534
+ e = o;
535
+ break;
536
+ case "value":
537
+ e = e.get(o);
538
+ break;
539
+ }
540
+ } else
541
+ e = e[s];
542
+ }
543
+ return e;
544
+ };
545
+ var ge = (e, t, r) => {
546
+ if (ht(t), t.length === 0)
547
+ return r(e);
548
+ let s = e;
549
+ for (let i = 0;i < t.length - 1; i++) {
550
+ const o = t[i];
551
+ if (I(s)) {
552
+ const a = +o;
553
+ s = s[a];
554
+ } else if (G(s))
555
+ s = s[o];
556
+ else if (J2(s)) {
557
+ const a = +o;
558
+ s = L(s, a);
559
+ } else if (Y(s)) {
560
+ if (i === t.length - 2)
561
+ break;
562
+ const u = +o, c = +t[++i] == 0 ? "key" : "value", p2 = L(s, u);
563
+ switch (c) {
564
+ case "key":
565
+ s = p2;
566
+ break;
567
+ case "value":
568
+ s = s.get(p2);
569
+ break;
570
+ }
571
+ }
572
+ }
573
+ const n = t[t.length - 1];
574
+ if (I(s) ? s[+n] = r(s[+n]) : G(s) && (s[n] = r(s[n])), J2(s)) {
575
+ const i = L(s, +n), o = r(i);
576
+ i !== o && (s.delete(i), s.add(o));
577
+ }
578
+ if (Y(s)) {
579
+ const i = +t[t.length - 2], o = L(s, i);
580
+ switch (+n == 0 ? "key" : "value") {
581
+ case "key": {
582
+ const u = r(o);
583
+ s.set(u, s.get(o)), u !== o && s.delete(o);
584
+ break;
585
+ }
586
+ case "value": {
587
+ s.set(o, r(s.get(o)));
588
+ break;
589
+ }
590
+ }
591
+ }
592
+ return e;
593
+ };
594
+ function ye2(e, t, r = []) {
595
+ if (!e)
596
+ return;
597
+ if (!I(e)) {
598
+ V(e, (i, o) => ye2(i, t, [...r, ...K(o)]));
599
+ return;
600
+ }
601
+ const [s, n] = e;
602
+ n && V(n, (i, o) => {
603
+ ye2(i, t, [...r, ...K(o)]);
604
+ }), t(s, r);
605
+ }
606
+ function hs(e, t, r) {
607
+ return ye2(t, (s, n) => {
608
+ e = ge(e, n, (i) => gs(i, s, r));
609
+ }), e;
610
+ }
611
+ function bs(e, t) {
612
+ function r(s, n) {
613
+ const i = ys(e, K(n));
614
+ s.map(K).forEach((o) => {
615
+ e = ge(e, o, () => i);
616
+ });
617
+ }
618
+ if (I(t)) {
619
+ const [s, n] = t;
620
+ s.forEach((i) => {
621
+ e = ge(e, K(i), () => e);
622
+ }), n && V(n, r);
623
+ } else
624
+ V(t, r);
625
+ return e;
626
+ }
627
+ var As = (e, t) => G(e) || I(e) || Y(e) || J2(e) || mt(e, t);
628
+ function Fs(e, t, r) {
629
+ const s = r.get(e);
630
+ s ? s.push(t) : r.set(e, [t]);
631
+ }
632
+ function ws(e, t) {
633
+ const r = {};
634
+ let s;
635
+ return e.forEach((n) => {
636
+ if (n.length <= 1)
637
+ return;
638
+ t || (n = n.map((a) => a.map(String)).sort((a, u) => a.length - u.length));
639
+ const [i, ...o] = n;
640
+ i.length === 0 ? s = o.map(ce) : r[ce(i)] = o.map(ce);
641
+ }), s ? pe(r) ? [s] : [s, r] : pe(r) ? undefined : r;
642
+ }
643
+ var bt = (e, t, r, s, n = [], i = [], o = /* @__PURE__ */ new Map) => {
644
+ var b2;
645
+ const a = us(e);
646
+ if (!a) {
647
+ Fs(e, n, t);
648
+ const g2 = o.get(e);
649
+ if (g2)
650
+ return s ? {
651
+ transformedValue: null
652
+ } : g2;
653
+ }
654
+ if (!As(e, r)) {
655
+ const g2 = Ke2(e, r), m2 = g2 ? {
656
+ transformedValue: g2.value,
657
+ annotations: [g2.type]
658
+ } : {
659
+ transformedValue: e
660
+ };
661
+ return a || o.set(e, m2), m2;
662
+ }
663
+ if (ee(i, e))
664
+ return {
665
+ transformedValue: null
666
+ };
667
+ const u = Ke2(e, r), c = (b2 = u == null ? undefined : u.value) != null ? b2 : e, p2 = I(c) ? [] : {}, l = {};
668
+ V(c, (g2, m2) => {
669
+ if (m2 === "__proto__" || m2 === "constructor" || m2 === "prototype")
670
+ throw new Error(`Detected property ${m2}. This is a prototype pollution risk, please remove it from your object.`);
671
+ const A = bt(g2, t, r, s, [...n, m2], [...i, e], o);
672
+ p2[m2] = A.transformedValue, I(A.annotations) ? l[m2] = A.annotations : G(A.annotations) && V(A.annotations, (C2, N2) => {
673
+ l[ct(m2) + "." + N2] = C2;
674
+ });
675
+ });
676
+ const d = pe(l) ? {
677
+ transformedValue: p2,
678
+ annotations: u ? [u.type] : undefined
679
+ } : {
680
+ transformedValue: p2,
681
+ annotations: u ? [u.type, l] : l
682
+ };
683
+ return a || o.set(e, d), d;
684
+ };
685
+ function At(e) {
686
+ return Object.prototype.toString.call(e).slice(8, -1);
687
+ }
688
+ function Ge(e) {
689
+ return At(e) === "Array";
690
+ }
691
+ function Es(e) {
692
+ if (At(e) !== "Object")
693
+ return false;
694
+ const t = Object.getPrototypeOf(e);
695
+ return !!t && t.constructor === Object && t === Object.prototype;
696
+ }
697
+ function Cs(e, t, r, s, n) {
698
+ const i = {}.propertyIsEnumerable.call(s, t) ? "enumerable" : "nonenumerable";
699
+ i === "enumerable" && (e[t] = r), n && i === "nonenumerable" && Object.defineProperty(e, t, {
700
+ value: r,
701
+ enumerable: false,
702
+ writable: true,
703
+ configurable: true
704
+ });
705
+ }
706
+ function he(e, t = {}) {
707
+ if (Ge(e))
708
+ return e.map((n) => he(n, t));
709
+ if (!Es(e))
710
+ return e;
711
+ const r = Object.getOwnPropertyNames(e), s = Object.getOwnPropertySymbols(e);
712
+ return [...r, ...s].reduce((n, i) => {
713
+ if (Ge(t.props) && !t.props.includes(i))
714
+ return n;
715
+ const o = e[i], a = he(o, t);
716
+ return Cs(n, i, a, e, t.nonenumerable), n;
717
+ }, {});
718
+ }
719
+
720
+ class h2 {
721
+ constructor({ dedupe: t = false } = {}) {
722
+ this.classRegistry = new Hr, this.symbolRegistry = new ot((r) => {
723
+ var s;
724
+ return (s = r.description) != null ? s : "";
725
+ }), this.customTransformerRegistry = new Zr, this.allowedErrorProps = [], this.dedupe = t;
726
+ }
727
+ serialize(t) {
728
+ const r = /* @__PURE__ */ new Map, s = bt(t, r, this, this.dedupe), n = {
729
+ json: s.transformedValue
730
+ };
731
+ s.annotations && (n.meta = F(y2({}, n.meta), {
732
+ values: s.annotations
733
+ }));
734
+ const i = ws(r, this.dedupe);
735
+ return i && (n.meta = F(y2({}, n.meta), {
736
+ referentialEqualities: i
737
+ })), n;
738
+ }
739
+ deserialize(t) {
740
+ const { json: r, meta: s } = t;
741
+ let n = he(r);
742
+ return s != null && s.values && (n = hs(n, s.values, this)), s != null && s.referentialEqualities && (n = bs(n, s.referentialEqualities)), n;
743
+ }
744
+ stringify(t) {
745
+ return JSON.stringify(this.serialize(t));
746
+ }
747
+ parse(t) {
748
+ return this.deserialize(JSON.parse(t));
749
+ }
750
+ registerClass(t, r) {
751
+ this.classRegistry.register(t, r);
752
+ }
753
+ registerSymbol(t, r) {
754
+ this.symbolRegistry.register(t, r);
755
+ }
756
+ registerCustom(t, r) {
757
+ this.customTransformerRegistry.register(y2({
758
+ name: r
759
+ }, t));
760
+ }
761
+ allowErrorProps(...t) {
762
+ this.allowedErrorProps.push(...t);
763
+ }
764
+ }
765
+ h2.defaultInstance = new h2;
766
+ h2.serialize = h2.defaultInstance.serialize.bind(h2.defaultInstance);
767
+ h2.deserialize = h2.defaultInstance.deserialize.bind(h2.defaultInstance);
768
+ h2.stringify = h2.defaultInstance.stringify.bind(h2.defaultInstance);
769
+ h2.parse = h2.defaultInstance.parse.bind(h2.defaultInstance);
770
+ h2.registerClass = h2.defaultInstance.registerClass.bind(h2.defaultInstance);
771
+ h2.registerSymbol = h2.defaultInstance.registerSymbol.bind(h2.defaultInstance);
772
+ h2.registerCustom = h2.defaultInstance.registerCustom.bind(h2.defaultInstance);
773
+ h2.allowErrorProps = h2.defaultInstance.allowErrorProps.bind(h2.defaultInstance);
774
+ var z2 = (e) => e === undefined ? C.None : e;
775
+ var Ts = (e) => new m(e.metadataItem, e.type);
776
+ var Ee = (e) => new Ke(e.name, e.expression, e.type, e.description, z2(e.sort), e.dataSource, e.composeCode);
777
+ var Ce = (e) => new J(e.name, e.expression, e.granularity, e.format, e.description, z2(e.sort), e.dataSource, e.composeCode);
778
+ var O = (e) => {
779
+ switch (e.__serializable) {
780
+ case "DimensionalAttribute":
781
+ return Ee(e);
782
+ case "DimensionalLevelAttribute":
783
+ return Ce(e);
784
+ default:
785
+ return e;
786
+ }
787
+ };
788
+ var Ft = (e) => new y(e.name, e.expression, e.attributes.map(O), e.dimensions.map(qs), e.type, e.description, z2(e.sort), e.dataSource, e.composeCode, e.defaultAttribute ? O(e.defaultAttribute) : undefined);
789
+ var wt = (e) => new p(e.name, e.expression, e.description, z2(e.sort), e.dataSource, e.composeCode, e.indexed, e.merged);
790
+ var qs = (e) => {
791
+ switch (e.__serializable) {
792
+ case "DimensionalDimension":
793
+ return Ft(e);
794
+ case "DimensionalDateDimension":
795
+ return wt(e);
796
+ default:
797
+ return e;
798
+ }
799
+ };
800
+ var Te = (e) => new ye(e.name, O(e.attribute), e.aggregation, e.format, e.description, z2(e.sort), e.dataSource, e.composeCode);
801
+ var qe = (e) => {
802
+ const t = Object.fromEntries(Object.entries(e.context).map(([r, s]) => {
803
+ if (s && typeof s == "object" && "__serializable" in s)
804
+ switch (s.__serializable) {
805
+ case "DimensionalAttribute":
806
+ return [r, Ee(s)];
807
+ case "DimensionalLevelAttribute":
808
+ return [r, Ce(s)];
809
+ case "DimensionalBaseMeasure":
810
+ return [r, Te(s)];
811
+ case "DimensionalCalculatedMeasure":
812
+ return [r, qe(s)];
813
+ default:
814
+ return [r, s];
815
+ }
816
+ return [r, s];
817
+ }));
818
+ return new X(e.name, e.expression, t, e.format, e.description, z2(e.sort), e.dataSource, e.composeCode);
819
+ };
820
+ var Et = (e) => new Yt(e.name, O(e.attribute), e.format, e.description, z2(e.sort), e.dataSource, e.composeCode);
821
+ var le = (e) => {
822
+ switch (e.__serializable) {
823
+ case "DimensionalBaseMeasure":
824
+ return Te(e);
825
+ case "DimensionalCalculatedMeasure":
826
+ return qe(e);
827
+ case "DimensionalMeasureTemplate":
828
+ return Et(e);
829
+ default:
830
+ return e;
831
+ }
832
+ };
833
+ var T2 = (e) => {
834
+ switch (e.__serializable) {
835
+ case "MembersFilter":
836
+ return new jd(O(e.attribute), e.members, e.config.backgroundFilter ? F(y2({}, e.config), { backgroundFilter: T2(e.config.backgroundFilter) }) : e.config, e.composeCode);
837
+ case "LogicalAttributeFilter":
838
+ return new Bi(e.filters.map((r) => T2(r)), e.operator, e.config, e.composeCode);
839
+ case "CascadingFilter":
840
+ return new Pd(e._filters.map((r) => T2(r)), e.config, e.composeCode);
841
+ case "ExcludeFilter":
842
+ return new Fd(T2(e.filter), e.input ? T2(e.input) : undefined, e.config, e.composeCode);
843
+ case "MeasureFilter":
844
+ return new Ud(O(e.attribute), le(e.measure), e.operatorA, e.valueA, e.operatorB, e.valueB, e.config, e.composeCode);
845
+ case "RankingFilter":
846
+ return new zi(O(e.attribute), le(e.measure), e.operator, e.count, e.config, e.composeCode);
847
+ case "MeasureRankingFilter":
848
+ return new Hi(le(e.measure), e.operator, e.count, e.config, e.composeCode);
849
+ case "NumericFilter":
850
+ return new Bd(O(e.attribute), e.operatorA, e.valueA, e.operatorB, e.valueB, e.config, e.composeCode);
851
+ case "TextFilter":
852
+ return new re(O(e.attribute), e.operatorA, e.valueA, e.config, e.composeCode);
853
+ case "DateRangeFilter": {
854
+ const { valueA: r, valueB: s } = e;
855
+ return new zd(O(e.attribute), r, s, e.config, e.composeCode);
856
+ }
857
+ case "RelativeDateFilter":
858
+ return new wn(O(e.attribute), e.offset, e.count, e.operator, e.anchor, e.config, e.composeCode);
859
+ case "CustomFilter":
860
+ return new Hd(O(e.attribute), e.jaqlExpression, e.config, e.composeCode);
861
+ default:
862
+ return e;
863
+ }
864
+ };
865
+ h2.registerCustom({
866
+ isApplicable: h,
867
+ serialize: (e) => e.serialize(),
868
+ deserialize: (e) => Ts(e)
869
+ }, "JaqlElement");
870
+ h2.registerCustom({
871
+ isApplicable: xp,
872
+ serialize: (e) => e.serialize(),
873
+ deserialize: (e) => Ee(e)
874
+ }, "DimensionalAttribute");
875
+ h2.registerCustom({
876
+ isApplicable: wp,
877
+ serialize: (e) => e.serialize(),
878
+ deserialize: (e) => Ce(e)
879
+ }, "DimensionalLevelAttribute");
880
+ h2.registerCustom({
881
+ isApplicable: z,
882
+ serialize: (e) => e.serialize(),
883
+ deserialize: (e) => Ft(e)
884
+ }, "DimensionalDimension");
885
+ h2.registerCustom({
886
+ isApplicable: S,
887
+ serialize: (e) => e.serialize(),
888
+ deserialize: (e) => wt(e)
889
+ }, "DimensionalDateDimension");
890
+ h2.registerCustom({
891
+ isApplicable: $i,
892
+ serialize: (e) => e.serialize(),
893
+ deserialize: (e) => Te(e)
894
+ }, "DimensionalBaseMeasure");
895
+ h2.registerCustom({
896
+ isApplicable: ji,
897
+ serialize: (e) => e.serialize(),
898
+ deserialize: (e) => qe(e)
899
+ }, "DimensionalCalculatedMeasure");
900
+ h2.registerCustom({
901
+ isApplicable: ip,
902
+ serialize: (e) => e.serialize(),
903
+ deserialize: (e) => Et(e)
904
+ }, "DimensionalMeasureTemplate");
905
+ h2.registerCustom({
906
+ isApplicable: ap,
907
+ serialize: (e) => e.serialize(),
908
+ deserialize: (e) => T2(e)
909
+ }, "MembersFilter");
910
+ h2.registerCustom({
911
+ isApplicable: dp,
912
+ serialize: (e) => e.serialize(),
913
+ deserialize: (e) => T2(e)
914
+ }, "LogicalAttributeFilter");
915
+ h2.registerCustom({
916
+ isApplicable: Nt,
917
+ serialize: (e) => e.serialize(),
918
+ deserialize: (e) => T2(e)
919
+ }, "CascadingFilter");
920
+ h2.registerCustom({
921
+ isApplicable: fp,
922
+ serialize: (e) => e.serialize(),
923
+ deserialize: (e) => T2(e)
924
+ }, "ExcludeFilter");
925
+ h2.registerCustom({
926
+ isApplicable: lp,
927
+ serialize: (e) => e.serialize(),
928
+ deserialize: (e) => T2(e)
929
+ }, "MeasureFilter");
930
+ h2.registerCustom({
931
+ isApplicable: up,
932
+ serialize: (e) => e.serialize(),
933
+ deserialize: (e) => T2(e)
934
+ }, "RankingFilter");
935
+ h2.registerCustom({
936
+ isApplicable: cp,
937
+ serialize: (e) => e.serialize(),
938
+ deserialize: (e) => T2(e)
939
+ }, "MeasureRankingFilter");
940
+ h2.registerCustom({
941
+ isApplicable: op,
942
+ serialize: (e) => e.serialize(),
943
+ deserialize: (e) => T2(e)
944
+ }, "NumericFilter");
945
+ h2.registerCustom({
946
+ isApplicable: hp,
947
+ serialize: (e) => e.serialize(),
948
+ deserialize: (e) => T2(e)
949
+ }, "TextFilter");
950
+ h2.registerCustom({
951
+ isApplicable: pp,
952
+ serialize: (e) => e.serialize(),
953
+ deserialize: (e) => T2(e)
954
+ }, "DateRangeFilter");
955
+ h2.registerCustom({
956
+ isApplicable: gp,
957
+ serialize: (e) => e.serialize(),
958
+ deserialize: (e) => T2(e)
959
+ }, "RelativeDateFilter");
960
+ h2.registerCustom({
961
+ isApplicable: sp,
962
+ serialize: (e) => e.serialize(),
963
+ deserialize: (e) => T2(e)
964
+ }, "CustomFilter");
965
+ var ni = h2;
966
+ var E3 = "DM.";
967
+ function S2(e) {
968
+ return typeof e == "object" && e !== null;
969
+ }
970
+ function q3(e) {
971
+ return typeof e == "object" && e !== null && "function" in e && "args" in e;
972
+ }
973
+ function Ct2(e) {
974
+ return e.every(q3);
975
+ }
976
+ function oe(e) {
977
+ return "attribute" in e && "config" in e;
978
+ }
979
+ function Z(e) {
980
+ return "left" in e && "right" in e && "operator" in e;
981
+ }
982
+ function xe(e) {
983
+ return !oe(e) && !Z(e);
984
+ }
985
+ function xs(e) {
986
+ return S2(e) && "column" in e && typeof e.column == "string" && !(("function" in e) && ("args" in e));
987
+ }
988
+ function $s(e) {
989
+ return !S2(e) || !("column" in e) ? false : q3(e.column);
990
+ }
991
+ var x = 3;
992
+ function R(e, t, r) {
993
+ if (t.length === 0)
994
+ return;
995
+ let s = Number.MAX_SAFE_INTEGER, n;
996
+ for (const i of t) {
997
+ const o = r(i), a = Yr(e, o);
998
+ a < s && (s = a, n = i);
999
+ }
1000
+ return n !== undefined ? { best: n, distance: s } : undefined;
1001
+ }
1002
+ var Tt = "en";
1003
+ function fe(e, t) {
1004
+ return e.localeCompare(t, Tt, { sensitivity: "accent" }) === 0;
1005
+ }
1006
+ function Ye(e, t) {
1007
+ return t.length <= e.length && e.slice(0, t.length).localeCompare(t, Tt, { sensitivity: "accent" }) === 0;
1008
+ }
1009
+ function $e(e) {
1010
+ const t = [...e].sort((i, o) => o.name.length - i.name.length), r = /* @__PURE__ */ new Map, s = /* @__PURE__ */ new Map, n = /* @__PURE__ */ new Map;
1011
+ for (const i of e) {
1012
+ r.set(i.name, i);
1013
+ const o = [...i.columns].sort((u, c) => c.name.length - u.name.length);
1014
+ n.set(i.name, o);
1015
+ const a = /* @__PURE__ */ new Map;
1016
+ for (const u of i.columns)
1017
+ a.set(u.name, u);
1018
+ s.set(i.name, a);
1019
+ }
1020
+ return {
1021
+ sortedTables: t,
1022
+ tableColumnMap: n,
1023
+ tableMap: r,
1024
+ columnMap: s
1025
+ };
1026
+ }
1027
+ function Se2(e, t) {
1028
+ if (!e.startsWith(E3))
1029
+ throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${E3}TableName.ColumnName[.Level]'`);
1030
+ const r = e.slice(E3.length);
1031
+ if (!r)
1032
+ throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${E3}TableName.ColumnName[.Level]'`);
1033
+ let s, n;
1034
+ for (const m2 of t.sortedTables)
1035
+ if (Ye(r, m2.name + ".")) {
1036
+ const A = r.slice(m2.name.length + 1);
1037
+ if (!A)
1038
+ throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${E3}TableName.ColumnName[.Level]'`);
1039
+ s = m2, n = A;
1040
+ break;
1041
+ }
1042
+ if (!s) {
1043
+ const m2 = r.indexOf(".");
1044
+ if (m2 === -1)
1045
+ throw new Error(`Invalid dimensional element name format: '${e}'. Expected format: '${E3}TableName.ColumnName[.Level]'`);
1046
+ const A = r.slice(0, m2), C2 = R(A, t.sortedTables, (ue) => ue.name), N2 = C2 && C2.distance <= x ? ` Did you mean '${C2.best.name}'?` : "";
1047
+ throw new Error(`Table '${A}' not found in the data model.${N2}`);
1048
+ }
1049
+ const i = t.tableColumnMap.get(s.name);
1050
+ if (!i)
1051
+ throw new Error(`Table '${s.name}' found but has no columns`);
1052
+ let o, a;
1053
+ const u = g.all;
1054
+ for (const m2 of i) {
1055
+ if (fe(n, m2.name))
1056
+ return { table: s, column: m2 };
1057
+ if (!Ye(n, m2.name + "."))
1058
+ continue;
1059
+ const A = n.slice(m2.name.length + 1);
1060
+ if (!A)
1061
+ continue;
1062
+ const C2 = u.includes(A), N2 = Rn(m2.dataType);
1063
+ if (C2) {
1064
+ if (N2)
1065
+ return { table: s, column: m2, level: A };
1066
+ o || (o = m2, a = A);
1067
+ continue;
1068
+ }
1069
+ N2 && !o && (o = m2, a = A);
1070
+ }
1071
+ if (o && a) {
1072
+ if (u.includes(a))
1073
+ throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Column '${s.name}.${o.name}' is not a datetime column`);
1074
+ const m2 = R(a, u, (C2) => C2), A = m2 && m2.distance <= x ? ` Did you mean '${m2.best}'?` : "";
1075
+ throw new Error(`Invalid date level '${a}' in dimensional element '${e}'. Valid levels are: ${u.join(", ")}.${A}`);
1076
+ }
1077
+ const c = n.indexOf("."), p2 = c === -1 ? n : n.slice(0, c), l = R(n, i, (m2) => m2.name), d = l && l.distance <= x && !fe(l.best.name, p2), b2 = d ? ` Did you mean '${l.best.name}'?` : "", g2 = !d && n.endsWith(".") && l !== undefined && fe(l.best.name, p2) ? ` Use '${p2}' without a trailing dot.` : "";
1078
+ throw new Error(`Column '${p2}' not found in table '${s.name}'.${b2}${g2}`);
1079
+ }
1080
+ function Ss(e, t) {
1081
+ const { table: r, column: s, level: n } = Se2(e, t);
1082
+ if (n) {
1083
+ if (!Rn(s.dataType))
1084
+ throw new Error(`Invalid date level '${n}' in dimensional element '${e}'. Column '${r.name}.${s.name}' is not a datetime column`);
1085
+ const i = g.all;
1086
+ if (!i.includes(n))
1087
+ throw new Error(`Invalid date level '${n}' in dimensional element '${e}'. Valid levels are: ${i.join(", ")}`);
1088
+ const o = g.dateOnly;
1089
+ if (s.dataType === "date" && !o.includes(n))
1090
+ throw new Error(`Invalid level '${n}' in dimensional element '${e}'. Column '${r.name}.${s.name}' is only a date column, not a datetime column`);
1091
+ const a = g.timeOnly;
1092
+ if (s.dataType === "time" && !a.includes(n))
1093
+ throw new Error(`Invalid level '${n}' in dimensional element '${e}'. Column '${r.name}.${s.name}' is only a time column, not a date column`);
1094
+ }
1095
+ return { table: r, column: s, level: n };
1096
+ }
1097
+ function H(e, t, r, s) {
1098
+ const { table: n, column: i, level: o } = Ss(e, r);
1099
+ let a = o;
1100
+ if (Rn(i.dataType) && a === undefined && (s != null && s.inferredDateLevel)) {
1101
+ const u = s.inferredDateLevel, c = g.all;
1102
+ if (!c.includes(u))
1103
+ throw new Error(`Invalid inferred date level '${u}'. Valid levels are: ${c.join(", ")}`);
1104
+ const p2 = `${e}.${u}`, l = g.dateOnly;
1105
+ if (i.dataType === "date" && !l.includes(u))
1106
+ throw new Error(`Invalid level '${u}' in dimensional element '${p2}'. Column '${n.name}.${i.name}' is only a date column, not a datetime column`);
1107
+ const d = g.timeOnly;
1108
+ if (i.dataType === "time" && !d.includes(u))
1109
+ throw new Error(`Invalid level '${u}' in dimensional element '${p2}'. Column '${n.name}.${i.name}' is only a time column, not a date column`);
1110
+ a = u;
1111
+ }
1112
+ return Ln({
1113
+ expression: i.expression,
1114
+ dataType: i.dataType,
1115
+ granularity: a,
1116
+ format: undefined,
1117
+ sort: undefined,
1118
+ dataSource: t
1119
+ });
1120
+ }
1121
+ function Os(e, t, r) {
1122
+ const { column: s, level: n } = Se2(e, r);
1123
+ if (n)
1124
+ throw new Error(`Invalid DateDimension name format: '${e}'. Expected format: '${E3}TableName.ColumnName'`);
1125
+ if (!Rn(s.dataType))
1126
+ throw new Error(`Invalid DateDimension name '${e}'. Column '${s.name}' is not a datetime column (got ${s.dataType}).`);
1127
+ return q({
1128
+ name: s.name,
1129
+ expression: s.expression,
1130
+ dataSource: t
1131
+ });
1132
+ }
1133
+ var Ds = (e, t) => {
1134
+ if (!e)
1135
+ return;
1136
+ const r = typeof e == "object" ? e.direction : e;
1137
+ if (!Lp(r))
1138
+ return F(y2({}, t), {
1139
+ message: `Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${r}'.`
1140
+ });
1141
+ };
1142
+ var Ms = (e, t, r, s) => {
1143
+ const n = Ds(e.sortType, s);
1144
+ if (n)
1145
+ return {
1146
+ attribute: H(e.column, t, r),
1147
+ style: {},
1148
+ error: n
1149
+ };
1150
+ const i = H(e.column, t, r), o = ed(e, "column");
1151
+ return { attribute: i, style: o };
1152
+ };
1153
+ var Ns = (e, t, r, s) => typeof e == "string" ? { attribute: H(e, t, r) } : xs(e) ? Ms(e, t, r, s) : {
1154
+ error: F(y2({}, s), {
1155
+ message: "Invalid dimension item. Expected a string (composeCode) or object with 'column' and optional 'sortType'."
1156
+ })
1157
+ };
1158
+ var qt = (e) => {
1159
+ const { data: t } = e, { dataSource: r, schemaIndex: s } = e.context;
1160
+ if (!t)
1161
+ return { success: true, data: [] };
1162
+ if (!Array.isArray(t))
1163
+ return {
1164
+ success: false,
1165
+ errors: [
1166
+ {
1167
+ category: "dimensions",
1168
+ index: -1,
1169
+ input: t,
1170
+ message: "Invalid dimensions JSON. Expected an array."
1171
+ }
1172
+ ]
1173
+ };
1174
+ const n = [], i = [];
1175
+ return t.forEach((o, a) => {
1176
+ const u = {
1177
+ category: "dimensions",
1178
+ index: a,
1179
+ input: o
1180
+ };
1181
+ try {
1182
+ const c = Ns(o, r, s, u);
1183
+ if (c.error) {
1184
+ i.push(c.error);
1185
+ return;
1186
+ }
1187
+ c.attribute && n.push(c.style !== undefined ? { attribute: c.attribute, style: c.style } : { attribute: c.attribute });
1188
+ } catch (c) {
1189
+ const p2 = c instanceof Error ? c.message : "Unknown error";
1190
+ i.push(F(y2({}, u), { message: p2 }));
1191
+ }
1192
+ }), i.length > 0 ? { success: false, errors: i } : { success: true, data: n };
1193
+ };
1194
+ function Oe2(e, t) {
1195
+ const r = Reflect.get(e, t);
1196
+ if (typeof r != "function")
1197
+ throw new Error(`Function '${t}' not found or is not a function`);
1198
+ return r;
1199
+ }
1200
+ function Rs(e, t) {
1201
+ const r = e.replace("measureFactory.", ""), n = Oe2(rp, r)(...t);
1202
+ if (!xe(n))
1203
+ throw new Error(`Function '${e}' did not return a valid Measure`);
1204
+ return n;
1205
+ }
1206
+ function vs2(e, t) {
1207
+ const r = e.replace("filterFactory.logic.", ""), n = Oe2(Se, r)(...t);
1208
+ if (!Z(n))
1209
+ throw new Error(`Function '${e}' did not return a valid FilterRelations`);
1210
+ return n;
1211
+ }
1212
+ function Is(e, t) {
1213
+ if (e.startsWith("filterFactory.logic."))
1214
+ return vs2(e, t);
1215
+ const r = e.replace("filterFactory.", ""), n = Oe2(mp, r)(...t);
1216
+ if (!oe(n) && !Z(n))
1217
+ throw new Error(`Function '${e}' did not return a valid Filter or FilterRelations`);
1218
+ return n;
1219
+ }
1220
+ function Ps(e, t) {
1221
+ const s = e.split(".")[0];
1222
+ if (s === "measureFactory")
1223
+ return Rs(e, t);
1224
+ if (s === "filterFactory")
1225
+ return Is(e, t);
1226
+ throw new Error(`Unsupported factory: '${s}'. Supported factories: measureFactory, filterFactory`);
1227
+ }
1228
+ var f2 = (e, t, r, s) => y2({ category: e, minArgs: t, maxArgs: r }, s);
1229
+ var ks = /* @__PURE__ */ new Set([
1230
+ "CORREL",
1231
+ "COVARP",
1232
+ "COVAR",
1233
+ "EXPONDIST",
1234
+ "INTERCEPT",
1235
+ "LARGEST",
1236
+ "NORMDIST",
1237
+ "POISSONDIST",
1238
+ "SKEWP",
1239
+ "SKEW",
1240
+ "SLOPE",
1241
+ "TDIST",
1242
+ "COSH",
1243
+ "SINH",
1244
+ "TANH",
1245
+ "ORDERING",
1246
+ "RDOUBLE",
1247
+ "RINT"
1248
+ ]);
1249
+ var te = {
1250
+ SDIFF: f2("xdiff", 2, 2, {
1251
+ requiredDateLevel: g.Seconds,
1252
+ argType: "datetime"
1253
+ }),
1254
+ MNDIFF: f2("xdiff", 2, 2, {
1255
+ requiredDateLevel: g.Minutes,
1256
+ argType: "datetime"
1257
+ }),
1258
+ HDIFF: f2("xdiff", 2, 2, {
1259
+ requiredDateLevel: g.Hours,
1260
+ argType: "datetime"
1261
+ }),
1262
+ DDIFF: f2("xdiff", 2, 2, {
1263
+ requiredDateLevel: g.Days,
1264
+ argType: "datetime"
1265
+ }),
1266
+ MDIFF: f2("xdiff", 2, 2, {
1267
+ requiredDateLevel: g.Months,
1268
+ argType: "datetime"
1269
+ }),
1270
+ QDIFF: f2("xdiff", 2, 2, {
1271
+ requiredDateLevel: g.Quarters,
1272
+ argType: "datetime"
1273
+ }),
1274
+ YDIFF: f2("xdiff", 2, 2, {
1275
+ requiredDateLevel: g.Years,
1276
+ argType: "datetime"
1277
+ }),
1278
+ ANYVALUE: f2("aggregative", 1, 1),
1279
+ SUM: f2("aggregative", 1, 2),
1280
+ AVG: f2("aggregative", 1, 2),
1281
+ MIN: f2("aggregative", 1, 2),
1282
+ MAX: f2("aggregative", 1, 2),
1283
+ COUNT: f2("aggregative", 1, 2),
1284
+ DUPCOUNT: f2("aggregative", 1, 1),
1285
+ COUNTDUPLICATES: f2("aggregative", 1, 1),
1286
+ STDEV: f2("aggregative", 1, 2),
1287
+ STDEVP: f2("aggregative", 1, 2),
1288
+ VAR: f2("aggregative", 1, 2),
1289
+ VARP: f2("aggregative", 1, 2),
1290
+ MEDIAN: f2("aggregative", 1, 2),
1291
+ QUARTILE: f2("aggregative", 2, 3),
1292
+ PERCENTILE: f2("aggregative", 2, 3),
1293
+ LOWERWHISKERMAX_IQR: f2("aggregative", 1, 1),
1294
+ LOWERWHISKERMAX_STDEVP: f2("aggregative", 1, 1),
1295
+ UPPERWHISKERMIN_IQR: f2("aggregative", 1, 1),
1296
+ UPPERWHISKERMIN_STDEVP: f2("aggregative", 1, 1),
1297
+ OUTLIERSCOUNT_IQR: f2("aggregative", 1, 1),
1298
+ OUTLIERSCOUNT_STDEVP: f2("aggregative", 1, 1),
1299
+ MODE: f2("aggregative", 1, 1),
1300
+ NOAGGFUNCTION: f2("aggregative", 1, 1),
1301
+ RANK: f2("window", 0, Number.POSITIVE_INFINITY),
1302
+ RSUM: f2("window", 1, 2),
1303
+ RAVG: f2("window", 1, 2),
1304
+ YTDSUM: f2("window", 1, 1),
1305
+ QTDSUM: f2("window", 1, 1),
1306
+ MTDSUM: f2("window", 1, 1),
1307
+ WTDSUM: f2("window", 1, 1),
1308
+ YTDAVG: f2("window", 1, 1),
1309
+ QTDAVG: f2("window", 1, 1),
1310
+ MTDAVG: f2("window", 1, 1),
1311
+ WTDAVG: f2("window", 1, 1),
1312
+ CONCAT: f2("string", 2, Number.POSITIVE_INFINITY),
1313
+ LEFT: f2("string", 2, 2),
1314
+ RIGHT: f2("string", 2, 2),
1315
+ ABS: f2("scalar", 1, 1),
1316
+ ACOS: f2("scalar", 1, 1),
1317
+ ASIN: f2("scalar", 1, 1),
1318
+ ATAN: f2("scalar", 1, 1),
1319
+ CEILING: f2("scalar", 1, 1),
1320
+ CONTRIBUTION: f2("scalar", 1, 1),
1321
+ COS: f2("scalar", 1, 1),
1322
+ COT: f2("scalar", 1, 1),
1323
+ DIFFPASTDAY: f2("scalar", 1, 1),
1324
+ DIFFPASTMONTH: f2("scalar", 1, 1),
1325
+ DIFFPASTPERIOD: f2("scalar", 1, 1),
1326
+ DIFFPASTQUARTER: f2("scalar", 1, 1),
1327
+ DIFFPASTWEEK: f2("scalar", 1, 1),
1328
+ DIFFPASTYEAR: f2("scalar", 1, 1),
1329
+ EXP: f2("scalar", 1, 1),
1330
+ FLOOR: f2("scalar", 1, 1),
1331
+ GROWTH: f2("growth", 1, 1),
1332
+ GROWTHPASTMONTH: f2("growth", 1, 1),
1333
+ GROWTHPASTQUARTER: f2("growth", 1, 1),
1334
+ GROWTHPASTWEEK: f2("growth", 1, 1),
1335
+ GROWTHPASTYEAR: f2("growth", 1, 1),
1336
+ GROWTHRATE: f2("growth", 1, 1),
1337
+ LN: f2("scalar", 1, 1),
1338
+ LOG10: f2("scalar", 1, 1),
1339
+ MINUS: f2("scalar", 1, 1),
1340
+ MOD: f2("scalar", 2, 2),
1341
+ QUOTIENT: f2("scalar", 2, 2),
1342
+ PASTDAY: f2("date", 1, 2),
1343
+ PASTMONTH: f2("date", 1, 2),
1344
+ PASTPERIOD: f2("date", 1, 2),
1345
+ PASTQUARTER: f2("date", 1, 2),
1346
+ PASTWEEK: f2("date", 1, 2),
1347
+ PASTYEAR: f2("date", 1, 2),
1348
+ PERCENTILEDISCFORINTERNALUSEONLY: f2("scalar", 1, 1),
1349
+ PERCENTILECONTFORINTERNALUSEONLY: f2("scalar", 1, 1),
1350
+ POWER: f2("scalar", 2, 2),
1351
+ ROUND: f2("scalar", 2, 2),
1352
+ SIN: f2("scalar", 1, 1),
1353
+ SQRT: f2("scalar", 1, 1),
1354
+ TAN: f2("scalar", 1, 1)
1355
+ };
1356
+ var Bs = Object.keys(te).filter((e) => te[e].category === "xdiff");
1357
+ function xt() {
1358
+ return Bs;
1359
+ }
1360
+ function $t(e) {
1361
+ const t = te[e.toUpperCase()];
1362
+ return t == null ? undefined : t.requiredDateLevel;
1363
+ }
1364
+ function zs(e, t) {
1365
+ return e === t ? e === 1 ? "1 parameter" : `${e} parameters` : t === Number.POSITIVE_INFINITY ? e <= 1 ? "any number of parameters" : `at least ${e} parameters` : `${e} or ${t} parameters`;
1366
+ }
1367
+ function De(e, t) {
1368
+ const r = [];
1369
+ let s = "", n = 0, i = false, o = null;
1370
+ for (let a = 0;a < e.length; a++) {
1371
+ const u = e[a], c = e[a + 1];
1372
+ if (i) {
1373
+ if (u !== o) {
1374
+ s += u;
1375
+ continue;
1376
+ }
1377
+ if (c === o) {
1378
+ s += u + c, a++;
1379
+ continue;
1380
+ }
1381
+ i = false, o = null, s += u;
1382
+ continue;
1383
+ } else {
1384
+ if (u === "'" || u === '"') {
1385
+ i = true, o = u, s += u;
1386
+ continue;
1387
+ }
1388
+ if ("([{".includes(u) && n++, ")]}".includes(u) && n--, u === t && n === 0) {
1389
+ r.push(s.trim()), s = "";
1390
+ continue;
1391
+ }
1392
+ }
1393
+ s += u;
1394
+ }
1395
+ return s.trim() && r.push(s.trim()), r;
1396
+ }
1397
+ function Ls(e, t) {
1398
+ let r = 0, s = false, n = null;
1399
+ for (let i = 0;i < e.length; i++) {
1400
+ const o = e[i], a = e[i + 1];
1401
+ if (s) {
1402
+ if (o !== n)
1403
+ continue;
1404
+ if (a === n) {
1405
+ i++;
1406
+ continue;
1407
+ }
1408
+ s = false, n = null;
1409
+ } else {
1410
+ if (o === "'" || o === '"') {
1411
+ s = true, n = o;
1412
+ continue;
1413
+ }
1414
+ if ("([{".includes(o) && r++, ")]}".includes(o) && r--, o === t && r === 0)
1415
+ return i;
1416
+ }
1417
+ }
1418
+ return -1;
1419
+ }
1420
+ function Us(e, t) {
1421
+ if (e[t] !== "(")
1422
+ return -1;
1423
+ let r = 1, s = t + 1, n = false, i = null;
1424
+ for (;s < e.length; ) {
1425
+ const o = e[s], a = e[s + 1];
1426
+ if (n) {
1427
+ if (o !== i) {
1428
+ s++;
1429
+ continue;
1430
+ }
1431
+ if (a === i) {
1432
+ s += 2;
1433
+ continue;
1434
+ }
1435
+ n = false, i = null, s++;
1436
+ } else {
1437
+ if (o === "'" || o === '"') {
1438
+ n = true, i = o, s++;
1439
+ continue;
1440
+ }
1441
+ if ("([{".includes(o) && r++, ")]}".includes(o) && --r === 0)
1442
+ return s;
1443
+ s++;
1444
+ }
1445
+ }
1446
+ return -1;
1447
+ }
1448
+ function _s(e) {
1449
+ return e.startsWith("'") && e.endsWith("'") || e.startsWith('"') && e.endsWith('"') ? e.slice(1, -1) : e;
1450
+ }
1451
+ function W(e) {
1452
+ if (!e || typeof e != "string")
1453
+ throw new Error(`Invalid composeCode: expected non-empty string, got ${typeof e}`);
1454
+ const t = e.trim();
1455
+ if (!t)
1456
+ throw new Error("Invalid composeCode: empty string");
1457
+ const r = t.match(/^([a-zA-Z_$][a-zA-Z0-9_.$]*)\s*\((.*)\)$/);
1458
+ if (!r)
1459
+ throw new Error(`Invalid composeCode format: expected function call, got '${t}'`);
1460
+ const s = r[1], n = r[2], i = St(n);
1461
+ return {
1462
+ function: s,
1463
+ args: i
1464
+ };
1465
+ }
1466
+ function St(e) {
1467
+ return e.trim() ? De(e, ",").map(Ot) : [];
1468
+ }
1469
+ function Ot(e) {
1470
+ if (!e)
1471
+ throw new Error("Cannot parse empty argument value");
1472
+ if (e === "null")
1473
+ return null;
1474
+ if (e === "undefined")
1475
+ return;
1476
+ if (e === "true")
1477
+ return true;
1478
+ if (e === "false")
1479
+ return false;
1480
+ if (e.match(/^-?\d+(\.\d+)?$/))
1481
+ return parseFloat(e);
1482
+ if (e.startsWith("'") && e.endsWith("'") || e.startsWith('"') && e.endsWith('"')) {
1483
+ const r = e[0];
1484
+ return e.slice(1, -1).replace(new RegExp(`${r}${r}`, "g"), r);
1485
+ }
1486
+ if (e.startsWith("[") && e.endsWith("]")) {
1487
+ const r = e.slice(1, -1).trim();
1488
+ if (!r)
1489
+ return [];
1490
+ const s = St(r);
1491
+ return s.every((n) => typeof n == "string"), s;
1492
+ }
1493
+ if (e.startsWith("{") && e.endsWith("}")) {
1494
+ const r = e.slice(1, -1).trim();
1495
+ return r ? Ws(r) : {};
1496
+ }
1497
+ return e.includes("(") && e.includes(")") ? W(e) : (e.startsWith("DM."), e);
1498
+ }
1499
+ function Vs(e) {
1500
+ const t = Ls(e, ":");
1501
+ if (t === -1)
1502
+ throw new Error(`Invalid object property: expected 'key: value', got '${e}'`);
1503
+ const r = _s(e.slice(0, t).trim()), s = Ot(e.slice(t + 1).trim());
1504
+ return [r, s];
1505
+ }
1506
+ function Ws(e) {
1507
+ if (!e.trim())
1508
+ return {};
1509
+ const t = De(e, ",").map(Vs).filter(([, r]) => r !== null);
1510
+ return Object.fromEntries(t);
1511
+ }
1512
+ var js = /\[(\w[\w.-]*)\]/g;
1513
+ var Dt = /* @__PURE__ */ new Set([
1514
+ "AVG",
1515
+ "COUNT",
1516
+ "DUPCOUNT",
1517
+ "MAX",
1518
+ "MEDIAN",
1519
+ "MIN",
1520
+ "MODE",
1521
+ "SUM",
1522
+ "WTDAVG",
1523
+ "WTDSUM",
1524
+ "MTDAVG",
1525
+ "MTDSUM",
1526
+ "QTDAVG",
1527
+ "QTDSUM",
1528
+ "YTDAVG",
1529
+ "YTDSUM"
1530
+ ]);
1531
+ var Ks = new RegExp(`\\b(${Array.from(Dt).join("|")})\\s*\\(`, "i");
1532
+ function Mt(e) {
1533
+ return q3(e) ? true : typeof e == "string" && e.startsWith(E3) ? false : S2(e) && ("kind" in e) ? e.kind === "measure" : true;
1534
+ }
1535
+ function Gs(e) {
1536
+ const t = /\b(\w+)\s*\(/g, r = /* @__PURE__ */ new Set;
1537
+ let s;
1538
+ for (;(s = t.exec(e)) !== null; ) {
1539
+ const n = s[1];
1540
+ Dt.has(n.toUpperCase()) || r.add(n);
1541
+ }
1542
+ return Array.from(r);
1543
+ }
1544
+ function Ys(e) {
1545
+ return e.length === 1 ? `[${e[0]}]` : e.map((t) => `[${t}]`).join(", ");
1546
+ }
1547
+ function Js(e) {
1548
+ return e.length === 0 ? "" : e.length === 1 ? `${e[0]} is not an aggregative function. ` : `${e.join(", ")} are not aggregative functions. `;
1549
+ }
1550
+ var j2 = (e) => e.startsWith("[") ? e : `[${e}]`;
1551
+ var Nt2 = (e) => e.startsWith("[") && e.endsWith("]") ? e.slice(1, -1) : e;
1552
+ function Rt(e, t) {
1553
+ if (t.length === 0)
1554
+ return [];
1555
+ const r = t.map((n) => n.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|"), s = new RegExp(`\\b(${r})\\s*\\(\\s*\\[([^\\]]+)\\]\\s*,\\s*\\[([^\\]]+)\\]\\s*\\)`, "gi");
1556
+ return [...e.matchAll(s)].map((n) => ({
1557
+ functionName: n[1].toUpperCase(),
1558
+ ref1: n[2].trim(),
1559
+ ref2: n[3].trim()
1560
+ }));
1561
+ }
1562
+ function Hs(e, t, r) {
1563
+ var o, a, u;
1564
+ const s = Object.keys(t), n = ((o = r.errorPrefix) != null ? o : "customFormula validation").trim(), i = n === "" ? "" : n.endsWith(" ") ? n : `${n} `;
1565
+ return {
1566
+ formula: e,
1567
+ context: t,
1568
+ contextKeys: s,
1569
+ canonicalContextKeys: new Set(s.map(j2)),
1570
+ errorPrefix: i,
1571
+ warnUnusedContext: (a = r.warnUnusedContext) != null ? a : true,
1572
+ errorOnUnusedContext: (u = r.errorOnUnusedContext) != null ? u : true,
1573
+ schemaIndex: r.schemaIndex,
1574
+ result: { isValid: true, errors: [], warnings: [], references: [], unusedContextKeys: [] }
1575
+ };
1576
+ }
1577
+ function M(e, t) {
1578
+ e.result.errors.push(t), e.result.isValid = false;
1579
+ }
1580
+ var Qs = /* @__PURE__ */ new Set(["CASE", "WHEN", "THEN", "ELSE", "END", "AND", "OR"]);
1581
+ function Xs(e) {
1582
+ const t = /\b(\w+)\s*\[/gi, r = [...e.formula.matchAll(t)].find((s) => !Qs.has(s[1].toUpperCase()));
1583
+ r && M(e, `${e.errorPrefix}args[1]: Invalid syntax: '${r[1]}' - operator cannot be used before bracket reference without parentheses`);
1584
+ }
1585
+ function Zs(e, t) {
1586
+ const r = e[t];
1587
+ let s = t + 1;
1588
+ for (;s < e.length; ) {
1589
+ const n = e[s], i = e[s + 1];
1590
+ if (n !== r) {
1591
+ s++;
1592
+ continue;
1593
+ }
1594
+ if (i === r) {
1595
+ s += 2;
1596
+ continue;
1597
+ }
1598
+ return s + 1;
1599
+ }
1600
+ return e.length;
1601
+ }
1602
+ function en(e) {
1603
+ return De(e, ",").filter((t) => t.trim().length > 0).length;
1604
+ }
1605
+ function tn(e, t, r, s) {
1606
+ for (;t < e.length && /\s/.test(e[t]); )
1607
+ t++;
1608
+ if (e[t] !== "(")
1609
+ return t;
1610
+ const n = t, i = Us(e, n);
1611
+ if (i === -1)
1612
+ return n + 1;
1613
+ const o = e.slice(n + 1, i);
1614
+ return s.push({ name: r.toUpperCase(), argCount: en(o) }), s.push(...vt(o)), i + 1;
1615
+ }
1616
+ function vt(e) {
1617
+ const t = [];
1618
+ let r = 0;
1619
+ for (;r < e.length; ) {
1620
+ const s = e[r];
1621
+ if (s === "'" || s === '"') {
1622
+ r = Zs(e, r);
1623
+ continue;
1624
+ }
1625
+ if (/[A-Za-z_]/.test(s)) {
1626
+ const n = r;
1627
+ for (r++;r < e.length && /[A-Za-z0-9_]/.test(e[r]); )
1628
+ r++;
1629
+ const i = e.slice(n, r);
1630
+ r = tn(e, r, i, t);
1631
+ continue;
1632
+ }
1633
+ r++;
1634
+ }
1635
+ return t;
1636
+ }
1637
+ function rn(e) {
1638
+ const t = vt(e.formula), r = /* @__PURE__ */ new Set, s = /* @__PURE__ */ new Set;
1639
+ for (const { name: n, argCount: i } of t) {
1640
+ if (ks.has(n)) {
1641
+ r.has(n) || (r.add(n), M(e, `${e.errorPrefix}args[1]: Function ${n} is not supported in custom formulas`));
1642
+ continue;
1643
+ }
1644
+ const o = te[n];
1645
+ if (o && (i < o.minArgs || i > o.maxArgs) && !s.has(n)) {
1646
+ s.add(n);
1647
+ const a = zs(o.minArgs, o.maxArgs);
1648
+ M(e, `${e.errorPrefix}args[1]: Function ${n} accepts ${a}`);
1649
+ }
1650
+ }
1651
+ }
1652
+ function sn(e) {
1653
+ return [
1654
+ ...new Set([...e.matchAll(new RegExp(js.source, "g"))].map((t) => t[1]))
1655
+ ];
1656
+ }
1657
+ function nn(e) {
1658
+ const t = e.result.references.filter((n) => !e.canonicalContextKeys.has(j2(n)));
1659
+ if (t.length === 0)
1660
+ return;
1661
+ const r = e.contextKeys.map((n) => `[${Nt2(n)}]`).join(", "), s = t.length === 1 ? `Reference [${t[0]}]` : `References [${t.join("], [")}]`;
1662
+ M(e, `${e.errorPrefix}args[1]: ${s} not found in context. Available keys: ${r}`);
1663
+ }
1664
+ function on(e) {
1665
+ if (Ks.test(e.formula))
1666
+ return;
1667
+ const t = e.result.references.filter((r) => {
1668
+ var n;
1669
+ const s = (n = e.context[j2(r)]) != null ? n : e.context[r];
1670
+ return s !== undefined && !Mt(s);
1671
+ });
1672
+ t.length !== 0 && M(e, `${e.errorPrefix}args[1]: ${Js(Gs(e.formula))}Bracket reference(s) ${Ys(t)} point to raw attributes and must be wrapped in an aggregative function (e.g. SUM, AVG)`);
1673
+ }
1674
+ function an(e) {
1675
+ if (!e.warnUnusedContext && !e.errorOnUnusedContext || e.contextKeys.length === 0)
1676
+ return;
1677
+ const t = new Set(e.result.references.map(j2)), r = e.contextKeys.filter((i) => !t.has(j2(i)));
1678
+ if (e.result.unusedContextKeys = r, r.length === 0)
1679
+ return;
1680
+ const s = r.map((i) => `[${Nt2(i)}]`).join(", "), n = `${e.errorPrefix}args[2]: Context keys ${s} are defined but not used in formula`;
1681
+ e.errorOnUnusedContext ? M(e, n) : e.warnUnusedContext && e.result.warnings.push(n);
1682
+ }
1683
+ function Je(e, t, r, s) {
1684
+ var o;
1685
+ const n = (o = s.context[j2(e)]) != null ? o : s.context[e];
1686
+ if (n === undefined)
1687
+ return;
1688
+ if (!(typeof n == "string" && n.startsWith(E3))) {
1689
+ Mt(n) && M(s, `${s.errorPrefix}args[1]: ${t.functionName} requires datetime dimension attributes. Reference [${e}] points to a measure; use an attribute (e.g. ${E3}Table.Column.Level).`);
1690
+ return;
1691
+ }
1692
+ if (s.schemaIndex)
1693
+ try {
1694
+ const a = Se2(n, s.schemaIndex);
1695
+ Rn(a.column.dataType) ? r && a.level && a.level !== r && M(s, `${s.errorPrefix}args[1]: ${t.functionName} expects date level '${r}'. Reference [${e}] has level '${a.level}'.`) : M(s, `${s.errorPrefix}args[1]: ${t.functionName} requires datetime dimensions. Reference [${e}] resolves to non-datetime column '${a.column.name}'.`);
1696
+ } catch (a) {
1697
+ const u = a instanceof Error ? a.message : "Unknown error";
1698
+ M(s, `${s.errorPrefix}args[1]: ${t.functionName} reference [${e}]: ${u}`);
1699
+ }
1700
+ }
1701
+ function un(e) {
1702
+ const t = xt(), r = Rt(e.formula, t);
1703
+ for (const s of r) {
1704
+ const n = $t(s.functionName);
1705
+ Je(s.ref1, s, n, e), Je(s.ref2, s, n, e);
1706
+ }
1707
+ }
1708
+ function cn(e, t, r = {}) {
1709
+ var n;
1710
+ const s = Hs(e, t, r);
1711
+ return !e || e.trim().length === 0 ? ((n = r.allowEmptyFormula) != null && n || M(s, `${s.errorPrefix}args[1]: Formula cannot be empty`), s.result) : (Xs(s), rn(s), s.result.references = sn(e), s.result.references.length === 0 ? (s.result.warnings.push(`${s.errorPrefix}args[1]: No bracket references found in formula - ensure this is intentional`), s.result) : s.contextKeys.length === 0 ? (M(s, `${s.errorPrefix}args[2]: Context cannot be empty - custom formulas require context definitions`), s.result) : (nn(s), on(s), an(s), un(s), s.result));
1712
+ }
1713
+ function ln(e, t, r = {}) {
1714
+ const s = cn(e, t, r);
1715
+ if (!s.isValid)
1716
+ throw new Error(s.errors.join("; "));
1717
+ s.warnings.length > 0 && console.warn("Formula validation warnings:", s.warnings.join("; "));
1718
+ }
1719
+ function fn(e, t) {
1720
+ if (e.length < 3 || e.length > 5)
1721
+ throw new Error(`${t.pathPrefix}Expected 3, 4, or 5 arguments for customFormula (title, formula, context, format?, description?)`);
1722
+ const r = e[1];
1723
+ if (typeof r != "string")
1724
+ throw new Error(`${t.pathPrefix}args[1]: Expected formula string, got ${typeof r}`);
1725
+ const s = r, n = e[2];
1726
+ if (!S2(n))
1727
+ throw new Error(`${t.pathPrefix}args[2]: Expected context object, got ${n === null ? "null" : typeof n}`);
1728
+ const i = n;
1729
+ ln(s, i, {
1730
+ errorPrefix: `${t.pathPrefix}`,
1731
+ errorOnUnusedContext: true,
1732
+ allowEmptyFormula: false,
1733
+ schemaIndex: t.schemaIndex
1734
+ });
1735
+ const o = dn(s), a = {};
1736
+ for (const [u, c] of Object.entries(i)) {
1737
+ const p2 = `args[2].${u}`;
1738
+ if (q3(c))
1739
+ a[`${u}`] = D({
1740
+ data: c,
1741
+ context: {
1742
+ dataSource: t.dataSource,
1743
+ schemaIndex: t.schemaIndex,
1744
+ pathPrefix: p2
1745
+ }
1746
+ });
1747
+ else if (typeof c == "string" && c.startsWith(E3)) {
1748
+ const l = u.startsWith("[") && u.endsWith("]") ? u.slice(1, -1) : u, d = o[l];
1749
+ try {
1750
+ a[`${u}`] = H(c, t.dataSource, t.schemaIndex, d !== undefined ? { inferredDateLevel: d } : undefined);
1751
+ } catch (b2) {
1752
+ const g2 = b2 instanceof Error ? b2.message : "Unknown error";
1753
+ throw new Error(`${p2}: ${g2}`);
1754
+ }
1755
+ } else if (c && typeof c == "object" && "kind" in c)
1756
+ a[`${u}`] = c;
1757
+ else
1758
+ throw new Error(`${p2}: Invalid context value for key '${u}'. Expected a function call or attribute reference (${E3}...), but got: ${typeof c}`);
1759
+ }
1760
+ e[2] = a;
1761
+ }
1762
+ function dn(e) {
1763
+ const t = xt(), r = Rt(e, t), s = {};
1764
+ for (const n of r) {
1765
+ const i = $t(n.functionName);
1766
+ if (i !== undefined)
1767
+ for (const o of [n.ref1, n.ref2]) {
1768
+ const a = s[o];
1769
+ if (a !== undefined && a !== i)
1770
+ throw new Error(`Reference [${o}] is used in xdiff functions with conflicting date levels ('${a}' and '${i}'). Specify the date level in the context (e.g. DM.Table.Column.${i}).`);
1771
+ s[o] = i;
1772
+ }
1773
+ }
1774
+ return s;
1775
+ }
1776
+ function It(e) {
1777
+ return e.type === E.TextAttribute;
1778
+ }
1779
+ function Pt(e) {
1780
+ return e.type === E.NumericAttribute;
1781
+ }
1782
+ function mn(e) {
1783
+ return e.type === E.DateLevel;
1784
+ }
1785
+ function pn(e) {
1786
+ return It(e) || Pt(e);
1787
+ }
1788
+ function ae(e) {
1789
+ return e.type === E.TextAttribute ? "text" : e.type === E.NumericAttribute ? "numeric" : e.type === E.DateLevel ? "date/datetime" : "unknown";
1790
+ }
1791
+ function Me(e, t) {
1792
+ const r = e[0];
1793
+ if (!r || typeof r != "object" || !("type" in r))
1794
+ throw new Error(`${t.pathPrefix}args[0]: Expected attribute as first argument`);
1795
+ return r;
1796
+ }
1797
+ function He(e, t) {
1798
+ const r = Me(e, t);
1799
+ if (!pn(r))
1800
+ throw new Error(`${t.pathPrefix}args[0]: Attribute must be string or numeric type, got ${ae(r)} attribute`);
1801
+ }
1802
+ function P(e, t) {
1803
+ const r = Me(e, t);
1804
+ if (!Pt(r))
1805
+ throw new Error(`${t.pathPrefix}args[0]: Attribute must be numeric type, got ${ae(r)} attribute`);
1806
+ }
1807
+ function k(e, t) {
1808
+ const r = Me(e, t);
1809
+ if (!It(r))
1810
+ throw new Error(`${t.pathPrefix}args[0]: Attribute must be string type, got ${ae(r)} attribute`);
1811
+ }
1812
+ function gn(e, t) {
1813
+ const r = e[0];
1814
+ if (!r || typeof r != "object" || !("attribute" in r))
1815
+ throw new Error(`${t.pathPrefix}args[0]: Expected filter as first argument`);
1816
+ return r;
1817
+ }
1818
+ function yn(e, t) {
1819
+ const r = gn(e, t);
1820
+ if (!ap(r))
1821
+ throw new Error(`${t.pathPrefix}args[0]: exclude filter only accepts members filter, got ${r.__serializable || "unknown"} filter`);
1822
+ }
1823
+ var hn = {
1824
+ "measureFactory.customFormula": fn,
1825
+ "filterFactory.equals": He,
1826
+ "filterFactory.doesntEqual": He,
1827
+ "filterFactory.greaterThan": P,
1828
+ "filterFactory.greaterThanOrEqual": P,
1829
+ "filterFactory.lessThan": P,
1830
+ "filterFactory.lessThanOrEqual": P,
1831
+ "filterFactory.between": P,
1832
+ "filterFactory.betweenNotEqual": P,
1833
+ "filterFactory.numeric": P,
1834
+ "filterFactory.contains": k,
1835
+ "filterFactory.doesntContain": k,
1836
+ "filterFactory.startsWith": k,
1837
+ "filterFactory.doesntStartWith": k,
1838
+ "filterFactory.endsWith": k,
1839
+ "filterFactory.doesntEndWith": k,
1840
+ "filterFactory.like": k,
1841
+ "filterFactory.exclude": yn
1842
+ };
1843
+ function bn(e) {
1844
+ return hn[`${e}`];
1845
+ }
1846
+ var kt = {
1847
+ "measureFactory.sum": [
1848
+ { type: "Attribute", required: true },
1849
+ { type: "string", required: false },
1850
+ { type: "string", required: false }
1851
+ ],
1852
+ "measureFactory.average": [
1853
+ { type: "Attribute", required: true },
1854
+ { type: "string", required: false },
1855
+ { type: "string", required: false }
1856
+ ],
1857
+ "measureFactory.avg": [
1858
+ { type: "Attribute", required: true },
1859
+ { type: "string", required: false },
1860
+ { type: "string", required: false }
1861
+ ],
1862
+ "measureFactory.min": [
1863
+ { type: "Attribute", required: true },
1864
+ { type: "string", required: false },
1865
+ { type: "string", required: false }
1866
+ ],
1867
+ "measureFactory.max": [
1868
+ { type: "Attribute", required: true },
1869
+ { type: "string", required: false },
1870
+ { type: "string", required: false }
1871
+ ],
1872
+ "measureFactory.median": [
1873
+ { type: "Attribute", required: true },
1874
+ { type: "string", required: false },
1875
+ { type: "string", required: false }
1876
+ ],
1877
+ "measureFactory.count": [
1878
+ { type: "Attribute", required: true },
1879
+ { type: "string", required: false },
1880
+ { type: "string", required: false }
1881
+ ],
1882
+ "measureFactory.countDistinct": [
1883
+ { type: "Attribute", required: true },
1884
+ { type: "string", required: false },
1885
+ { type: "string", required: false }
1886
+ ],
1887
+ "measureFactory.aggregate": [
1888
+ { type: "Attribute", required: true },
1889
+ { type: "string", required: true },
1890
+ { type: "string", required: false },
1891
+ { type: "string", required: false }
1892
+ ],
1893
+ "measureFactory.constant": [{ type: "number", required: true }],
1894
+ "measureFactory.customFormula": [
1895
+ { type: "string", required: true },
1896
+ { type: "string", required: true },
1897
+ { type: "CustomFormulaContext", required: true },
1898
+ { type: "string", required: false },
1899
+ { type: "string", required: false }
1900
+ ],
1901
+ "measureFactory.add": [
1902
+ { type: "Measure | number", required: true },
1903
+ { type: "Measure | number", required: true },
1904
+ { type: "string", required: false },
1905
+ { type: "boolean", required: false }
1906
+ ],
1907
+ "measureFactory.subtract": [
1908
+ { type: "Measure | number", required: true },
1909
+ { type: "Measure | number", required: true },
1910
+ { type: "string", required: false },
1911
+ { type: "boolean", required: false }
1912
+ ],
1913
+ "measureFactory.multiply": [
1914
+ { type: "Measure | number", required: true },
1915
+ { type: "Measure | number", required: true },
1916
+ { type: "string", required: false },
1917
+ { type: "boolean", required: false }
1918
+ ],
1919
+ "measureFactory.divide": [
1920
+ { type: "Measure | number", required: true },
1921
+ { type: "Measure | number", required: true },
1922
+ { type: "string", required: false },
1923
+ { type: "boolean", required: false }
1924
+ ],
1925
+ "measureFactory.measuredValue": [
1926
+ { type: "Measure", required: true },
1927
+ { type: "Filter[]", required: true },
1928
+ { type: "string", required: false },
1929
+ { type: "string", required: false }
1930
+ ],
1931
+ "measureFactory.rank": [
1932
+ { type: "Measure", required: true },
1933
+ { type: "string", required: false },
1934
+ { type: "string", required: false },
1935
+ { type: "string", required: false },
1936
+ { type: "Attribute[]", required: false }
1937
+ ],
1938
+ "measureFactory.trend": [
1939
+ { type: "Measure", required: true },
1940
+ { type: "string", required: false },
1941
+ { type: "any", required: false }
1942
+ ],
1943
+ "measureFactory.forecast": [
1944
+ { type: "Measure", required: true },
1945
+ { type: "string", required: false },
1946
+ { type: "any", required: false }
1947
+ ],
1948
+ "measureFactory.yearToDateSum": [
1949
+ { type: "Measure", required: true },
1950
+ { type: "string", required: false }
1951
+ ],
1952
+ "measureFactory.quarterToDateSum": [
1953
+ { type: "Measure", required: true },
1954
+ { type: "string", required: false }
1955
+ ],
1956
+ "measureFactory.monthToDateSum": [
1957
+ { type: "Measure", required: true },
1958
+ { type: "string", required: false }
1959
+ ],
1960
+ "measureFactory.weekToDateSum": [
1961
+ { type: "Measure", required: true },
1962
+ { type: "string", required: false }
1963
+ ],
1964
+ "measureFactory.runningSum": [
1965
+ { type: "Measure", required: true },
1966
+ { type: "boolean", required: false },
1967
+ { type: "string", required: false }
1968
+ ],
1969
+ "measureFactory.growth": [
1970
+ { type: "Measure", required: true },
1971
+ { type: "string", required: false }
1972
+ ],
1973
+ "measureFactory.growthRate": [
1974
+ { type: "Measure", required: true },
1975
+ { type: "string", required: false }
1976
+ ],
1977
+ "measureFactory.growthPastWeek": [
1978
+ { type: "Measure", required: true },
1979
+ { type: "string", required: false }
1980
+ ],
1981
+ "measureFactory.growthPastMonth": [
1982
+ { type: "Measure", required: true },
1983
+ { type: "string", required: false }
1984
+ ],
1985
+ "measureFactory.growthPastQuarter": [
1986
+ { type: "Measure", required: true },
1987
+ { type: "string", required: false }
1988
+ ],
1989
+ "measureFactory.growthPastYear": [
1990
+ { type: "Measure", required: true },
1991
+ { type: "string", required: false }
1992
+ ],
1993
+ "measureFactory.difference": [
1994
+ { type: "Measure", required: true },
1995
+ { type: "string", required: false }
1996
+ ],
1997
+ "measureFactory.diffPastWeek": [
1998
+ { type: "Measure", required: true },
1999
+ { type: "string", required: false }
2000
+ ],
2001
+ "measureFactory.diffPastMonth": [
2002
+ { type: "Measure", required: true },
2003
+ { type: "string", required: false }
2004
+ ],
2005
+ "measureFactory.diffPastQuarter": [
2006
+ { type: "Measure", required: true },
2007
+ { type: "string", required: false }
2008
+ ],
2009
+ "measureFactory.diffPastYear": [
2010
+ { type: "Measure", required: true },
2011
+ { type: "string", required: false }
2012
+ ],
2013
+ "measureFactory.pastDay": [
2014
+ { type: "Measure", required: true },
2015
+ { type: "string", required: false }
2016
+ ],
2017
+ "measureFactory.pastWeek": [
2018
+ { type: "Measure", required: true },
2019
+ { type: "string", required: false }
2020
+ ],
2021
+ "measureFactory.pastMonth": [
2022
+ { type: "Measure", required: true },
2023
+ { type: "string", required: false }
2024
+ ],
2025
+ "measureFactory.pastQuarter": [
2026
+ { type: "Measure", required: true },
2027
+ { type: "string", required: false }
2028
+ ],
2029
+ "measureFactory.pastYear": [
2030
+ { type: "Measure", required: true },
2031
+ { type: "string", required: false }
2032
+ ],
2033
+ "measureFactory.contribution": [
2034
+ { type: "Measure", required: true },
2035
+ { type: "string", required: false }
2036
+ ],
2037
+ "filterFactory.union": [
2038
+ { type: "Filter[]", required: true },
2039
+ { type: "BaseFilterConfig", required: false }
2040
+ ],
2041
+ "filterFactory.intersection": [
2042
+ { type: "Filter[]", required: true },
2043
+ { type: "BaseFilterConfig", required: false }
2044
+ ],
2045
+ "filterFactory.exclude": [
2046
+ { type: "Filter", required: true },
2047
+ { type: "Filter", required: false },
2048
+ { type: "BaseFilterConfig", required: false }
2049
+ ],
2050
+ "filterFactory.contains": [
2051
+ { type: "Attribute", required: true },
2052
+ { type: "string", required: true },
2053
+ { type: "BaseFilterConfig", required: false }
2054
+ ],
2055
+ "filterFactory.doesntContain": [
2056
+ { type: "Attribute", required: true },
2057
+ { type: "string", required: true },
2058
+ { type: "BaseFilterConfig", required: false }
2059
+ ],
2060
+ "filterFactory.startsWith": [
2061
+ { type: "Attribute", required: true },
2062
+ { type: "string", required: true },
2063
+ { type: "BaseFilterConfig", required: false }
2064
+ ],
2065
+ "filterFactory.doesntStartWith": [
2066
+ { type: "Attribute", required: true },
2067
+ { type: "string", required: true },
2068
+ { type: "BaseFilterConfig", required: false }
2069
+ ],
2070
+ "filterFactory.endsWith": [
2071
+ { type: "Attribute", required: true },
2072
+ { type: "string", required: true },
2073
+ { type: "BaseFilterConfig", required: false }
2074
+ ],
2075
+ "filterFactory.doesntEndWith": [
2076
+ { type: "Attribute", required: true },
2077
+ { type: "string", required: true },
2078
+ { type: "BaseFilterConfig", required: false }
2079
+ ],
2080
+ "filterFactory.like": [
2081
+ { type: "Attribute", required: true },
2082
+ { type: "string", required: true },
2083
+ { type: "BaseFilterConfig", required: false }
2084
+ ],
2085
+ "filterFactory.equals": [
2086
+ { type: "Attribute", required: true },
2087
+ { type: "string | number", required: true },
2088
+ { type: "BaseFilterConfig", required: false }
2089
+ ],
2090
+ "filterFactory.doesntEqual": [
2091
+ { type: "Attribute", required: true },
2092
+ { type: "string | number", required: true },
2093
+ { type: "BaseFilterConfig", required: false }
2094
+ ],
2095
+ "filterFactory.greaterThan": [
2096
+ { type: "Attribute", required: true },
2097
+ { type: "number", required: true },
2098
+ { type: "BaseFilterConfig", required: false }
2099
+ ],
2100
+ "filterFactory.greaterThanOrEqual": [
2101
+ { type: "Attribute", required: true },
2102
+ { type: "number", required: true },
2103
+ { type: "BaseFilterConfig", required: false }
2104
+ ],
2105
+ "filterFactory.lessThan": [
2106
+ { type: "Attribute", required: true },
2107
+ { type: "number", required: true },
2108
+ { type: "BaseFilterConfig", required: false }
2109
+ ],
2110
+ "filterFactory.lessThanOrEqual": [
2111
+ { type: "Attribute", required: true },
2112
+ { type: "number", required: true },
2113
+ { type: "BaseFilterConfig", required: false }
2114
+ ],
2115
+ "filterFactory.between": [
2116
+ { type: "Attribute", required: true },
2117
+ { type: "number", required: true },
2118
+ { type: "number", required: true },
2119
+ { type: "BaseFilterConfig", required: false }
2120
+ ],
2121
+ "filterFactory.betweenNotEqual": [
2122
+ { type: "Attribute", required: true },
2123
+ { type: "number", required: true },
2124
+ { type: "number", required: true },
2125
+ { type: "BaseFilterConfig", required: false }
2126
+ ],
2127
+ "filterFactory.numeric": [
2128
+ { type: "Attribute", required: true },
2129
+ { type: "string", required: false },
2130
+ { type: "number", required: false },
2131
+ { type: "string", required: false },
2132
+ { type: "number", required: false },
2133
+ { type: "BaseFilterConfig", required: false }
2134
+ ],
2135
+ "filterFactory.members": [
2136
+ { type: "Attribute", required: true },
2137
+ { type: "string[]", required: true },
2138
+ { type: "MembersFilterConfig", required: false }
2139
+ ],
2140
+ "filterFactory.dateFrom": [
2141
+ { type: "LevelAttribute", required: true },
2142
+ { type: "Date | string", required: true },
2143
+ { type: "BaseFilterConfig", required: false }
2144
+ ],
2145
+ "filterFactory.dateTo": [
2146
+ { type: "LevelAttribute", required: true },
2147
+ { type: "Date | string", required: true },
2148
+ { type: "BaseFilterConfig", required: false }
2149
+ ],
2150
+ "filterFactory.dateRange": [
2151
+ { type: "LevelAttribute", required: true },
2152
+ { type: "Date | string", required: false },
2153
+ { type: "Date | string", required: false },
2154
+ { type: "BaseFilterConfig", required: false }
2155
+ ],
2156
+ "filterFactory.dateRelative": [
2157
+ { type: "LevelAttribute", required: true },
2158
+ { type: "number", required: true },
2159
+ { type: "number", required: true },
2160
+ { type: "Date | string", required: false },
2161
+ { type: "BaseFilterConfig", required: false }
2162
+ ],
2163
+ "filterFactory.dateRelativeFrom": [
2164
+ { type: "LevelAttribute", required: true },
2165
+ { type: "number", required: true },
2166
+ { type: "number", required: true },
2167
+ { type: "Date | string", required: false },
2168
+ { type: "BaseFilterConfig", required: false }
2169
+ ],
2170
+ "filterFactory.dateRelativeTo": [
2171
+ { type: "LevelAttribute", required: true },
2172
+ { type: "number", required: true },
2173
+ { type: "number", required: true },
2174
+ { type: "Date | string", required: false },
2175
+ { type: "BaseFilterConfig", required: false }
2176
+ ],
2177
+ "filterFactory.thisYear": [
2178
+ { type: "DateDimension", required: true },
2179
+ { type: "BaseFilterConfig", required: false }
2180
+ ],
2181
+ "filterFactory.thisMonth": [
2182
+ { type: "DateDimension", required: true },
2183
+ { type: "BaseFilterConfig", required: false }
2184
+ ],
2185
+ "filterFactory.thisQuarter": [
2186
+ { type: "DateDimension", required: true },
2187
+ { type: "BaseFilterConfig", required: false }
2188
+ ],
2189
+ "filterFactory.today": [
2190
+ { type: "DateDimension", required: true },
2191
+ { type: "BaseFilterConfig", required: false }
2192
+ ],
2193
+ "filterFactory.measureEquals": [
2194
+ { type: "BaseMeasure", required: true },
2195
+ { type: "number", required: true },
2196
+ { type: "BaseFilterConfig", required: false }
2197
+ ],
2198
+ "filterFactory.measureGreaterThan": [
2199
+ { type: "BaseMeasure", required: true },
2200
+ { type: "number", required: true },
2201
+ { type: "BaseFilterConfig", required: false }
2202
+ ],
2203
+ "filterFactory.measureGreaterThanOrEqual": [
2204
+ { type: "BaseMeasure", required: true },
2205
+ { type: "number", required: true },
2206
+ { type: "BaseFilterConfig", required: false }
2207
+ ],
2208
+ "filterFactory.measureLessThan": [
2209
+ { type: "BaseMeasure", required: true },
2210
+ { type: "number", required: true },
2211
+ { type: "BaseFilterConfig", required: false }
2212
+ ],
2213
+ "filterFactory.measureLessThanOrEqual": [
2214
+ { type: "BaseMeasure", required: true },
2215
+ { type: "number", required: true },
2216
+ { type: "BaseFilterConfig", required: false }
2217
+ ],
2218
+ "filterFactory.measureBetween": [
2219
+ { type: "BaseMeasure", required: true },
2220
+ { type: "number", required: true },
2221
+ { type: "number", required: true },
2222
+ { type: "BaseFilterConfig", required: false }
2223
+ ],
2224
+ "filterFactory.measureBetweenNotEqual": [
2225
+ { type: "BaseMeasure", required: true },
2226
+ { type: "number", required: true },
2227
+ { type: "number", required: true },
2228
+ { type: "BaseFilterConfig", required: false }
2229
+ ],
2230
+ "filterFactory.topRanking": [
2231
+ { type: "Attribute", required: true },
2232
+ { type: "Measure", required: true },
2233
+ { type: "number", required: true },
2234
+ { type: "BaseFilterConfig", required: false }
2235
+ ],
2236
+ "filterFactory.bottomRanking": [
2237
+ { type: "Attribute", required: true },
2238
+ { type: "Measure", required: true },
2239
+ { type: "number", required: true },
2240
+ { type: "BaseFilterConfig", required: false }
2241
+ ],
2242
+ "filterFactory.measureTopRanking": [
2243
+ { type: "BaseMeasure", required: true },
2244
+ { type: "number", required: true },
2245
+ { type: "BaseFilterConfig", required: false }
2246
+ ],
2247
+ "filterFactory.measureBottomRanking": [
2248
+ { type: "BaseMeasure", required: true },
2249
+ { type: "number", required: true },
2250
+ { type: "BaseFilterConfig", required: false }
2251
+ ],
2252
+ "filterFactory.cascading": [
2253
+ { type: "Filter[]", required: true },
2254
+ { type: "BaseFilterConfig", required: false }
2255
+ ],
2256
+ "filterFactory.logic.and": [
2257
+ { type: "FilterRelationsNode", required: true },
2258
+ { type: "FilterRelationsNode", required: true }
2259
+ ],
2260
+ "filterFactory.logic.or": [
2261
+ { type: "FilterRelationsNode", required: true },
2262
+ { type: "FilterRelationsNode", required: true }
2263
+ ]
2264
+ };
2265
+ function Ne(e) {
2266
+ return kt[`${e}`];
2267
+ }
2268
+ function An(e) {
2269
+ const t = Ne(e);
2270
+ return t ? t.filter((r) => r.required).length : 0;
2271
+ }
2272
+ function Fn(e) {
2273
+ const t = Ne(e);
2274
+ return t ? t.length : 0;
2275
+ }
2276
+ function wn2(e) {
2277
+ if (typeof e != "string" || !/^\d{4}-\d{2}-\d{2}/.test(e))
2278
+ return false;
2279
+ const r = Date.parse(e);
2280
+ if (isNaN(r) || e.length < 10)
2281
+ return false;
2282
+ const s = new Date(e);
2283
+ return !isNaN(s.getTime());
2284
+ }
2285
+ function de(e, t, r, s) {
2286
+ if (e.startsWith(E3))
2287
+ try {
2288
+ return H(e, t, r);
2289
+ } catch (n) {
2290
+ const i = n instanceof Error ? n.message : "Unknown error";
2291
+ throw new Error(`${s}: ${i}`);
2292
+ }
2293
+ throw new Error(`${s}: Invalid attribute '${e}'. Expected format: '${E3}TableName.ColumnName[.Level]'`);
2294
+ }
2295
+ function En(e, t, r, s) {
2296
+ if (e.startsWith(E3))
2297
+ try {
2298
+ return Os(e, t, r);
2299
+ } catch (n) {
2300
+ const i = n instanceof Error ? n.message : "Unknown error";
2301
+ throw new Error(`${s}: ${i}`);
2302
+ }
2303
+ throw new Error(`${s}: Invalid date dimension string '${e}'. Expected format: '${E3}TableName.ColumnName'`);
2304
+ }
2305
+ function Cn(e) {
2306
+ const t = e.data, { argSchema: r, dataSource: s, schemaIndex: n, pathPrefix: i } = e.context, o = i;
2307
+ if (t === undefined) {
2308
+ if (r.required)
2309
+ throw new Error(`${o}: Required argument is missing (expected ${r.type})`);
2310
+ return;
2311
+ }
2312
+ if (!(t === null && !r.required))
2313
+ switch (r.type) {
2314
+ case "string":
2315
+ if (typeof t != "string")
2316
+ throw new Error(`${o}: Expected string, got ${typeof t}`);
2317
+ return t;
2318
+ case "number":
2319
+ if (typeof t != "number")
2320
+ throw new Error(`${o}: Expected number, got ${typeof t}`);
2321
+ return t;
2322
+ case "boolean":
2323
+ if (typeof t != "boolean")
2324
+ throw new Error(`${o}: Expected boolean, got ${typeof t}`);
2325
+ return t;
2326
+ case "string[]":
2327
+ if (!Array.isArray(t))
2328
+ throw new Error(`${o}: Expected array of strings, got ${typeof t}. Example: ['value1', 'value2']`);
2329
+ if (!t.every((a) => typeof a == "string"))
2330
+ throw new Error(`${o}: Expected array of strings, but contains non-string values`);
2331
+ return t;
2332
+ case "number[]":
2333
+ if (!Array.isArray(t))
2334
+ throw new Error(`${o}: Expected array of numbers, got ${typeof t}. Example: [10, 20]`);
2335
+ if (!t.every((a) => typeof a == "number"))
2336
+ throw new Error(`${o}: Expected array of numbers, but contains non-number values`);
2337
+ return t;
2338
+ case "Attribute":
2339
+ if (typeof t != "string")
2340
+ throw new Error(`${o}: Expected attribute string, got ${typeof t}. Example: 'DM.Commerce.Revenue'`);
2341
+ return de(t, s, n, o);
2342
+ case "Attribute[]":
2343
+ if (!Array.isArray(t))
2344
+ throw new Error(`${o}: Expected array of attributes, got ${typeof t}. Example: ['DM.Commerce.AgeRange']`);
2345
+ return t.map((a, u) => {
2346
+ if (typeof a != "string")
2347
+ throw new Error(`${o}[${u}]: Expected attribute string, got ${typeof a}`);
2348
+ return de(a, s, n, `${o}[${u}]`);
2349
+ });
2350
+ case "Measure":
2351
+ case "BaseMeasure":
2352
+ if (!q3(t))
2353
+ throw new Error(`${o}: Expected measure function call, got ${typeof t}. Example: {'function': 'measureFactory.sum', 'args': ['DM.Commerce.Revenue']}`);
2354
+ return D({
2355
+ data: t,
2356
+ context: { dataSource: s, schemaIndex: n, pathPrefix: o }
2357
+ });
2358
+ case "Measure[]":
2359
+ if (!Array.isArray(t))
2360
+ throw new Error(`${o}: Expected array of measure function calls, got ${typeof t}`);
2361
+ return t.map((a, u) => {
2362
+ if (!q3(a))
2363
+ throw new Error(`${o}[${u}]: Expected measure function call, got ${typeof a}`);
2364
+ return D({
2365
+ data: a,
2366
+ context: { dataSource: s, schemaIndex: n, pathPrefix: `${o}[${u}]` }
2367
+ });
2368
+ });
2369
+ case "Filter":
2370
+ if (!q3(t))
2371
+ throw new Error(`${o}: Expected filter function call, got ${typeof t}. Example: {'function': 'filterFactory.contains', 'args': ['DM.Brand.Brand', 'Apple']}`);
2372
+ return D({
2373
+ data: t,
2374
+ context: { dataSource: s, schemaIndex: n, pathPrefix: o }
2375
+ });
2376
+ case "Filter[]":
2377
+ if (!Array.isArray(t))
2378
+ throw new Error(`${o}: Expected array of filter function calls, got ${typeof t}`);
2379
+ return t.map((a, u) => {
2380
+ if (!q3(a))
2381
+ throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);
2382
+ return D({
2383
+ data: a,
2384
+ context: { dataSource: s, schemaIndex: n, pathPrefix: `${o}[${u}]` }
2385
+ });
2386
+ });
2387
+ case "FilterRelationsNode":
2388
+ if (Array.isArray(t))
2389
+ return t.map((a, u) => {
2390
+ if (!q3(a))
2391
+ throw new Error(`${o}[${u}]: Expected filter function call, got ${typeof a}`);
2392
+ return D({
2393
+ data: a,
2394
+ context: { dataSource: s, schemaIndex: n, pathPrefix: `${o}[${u}]` }
2395
+ });
2396
+ });
2397
+ if (q3(t))
2398
+ return D({
2399
+ data: t,
2400
+ context: { dataSource: s, schemaIndex: n, pathPrefix: o }
2401
+ });
2402
+ throw new Error(`${o}: Expected filter function call or array of filters, got ${typeof t}`);
2403
+ case "DateDimension":
2404
+ if (typeof t != "string")
2405
+ throw new Error(`${o}: Expected date dimension string, got ${typeof t}. Example: 'DM.Commerce.Date'`);
2406
+ return En(t, s, n, o);
2407
+ case "LevelAttribute": {
2408
+ if (typeof t != "string")
2409
+ throw new Error(`${o}: Expected date attribute string, got ${typeof t}. Example: 'DM.Commerce.Date.Years'`);
2410
+ const a = de(t, s, n, o);
2411
+ if (!mn(a))
2412
+ throw new Error(`${o}: Attribute must be date/datetime type, got ${ae(a)} attribute`);
2413
+ return a;
2414
+ }
2415
+ case "Measure | number":
2416
+ if (typeof t == "number")
2417
+ return t;
2418
+ if (q3(t))
2419
+ return D({
2420
+ data: t,
2421
+ context: { dataSource: s, schemaIndex: n, pathPrefix: o }
2422
+ });
2423
+ throw new Error(`${o}: Expected measure function call or number, got ${typeof t}`);
2424
+ case "Date | string":
2425
+ if (typeof t == "string") {
2426
+ if (wn2(t))
2427
+ return t;
2428
+ throw new Error(`${o}: Expected valid ISO date string or Date object, got invalid date string '${t}'`);
2429
+ } else {
2430
+ if (t instanceof Date)
2431
+ return t;
2432
+ throw new Error(`${o}: Expected date string or Date object, got ${typeof t}`);
2433
+ }
2434
+ case "string | number":
2435
+ if (typeof t == "string" || typeof t == "number")
2436
+ return t;
2437
+ throw new Error(`${o}: Expected string or number, got ${typeof t}`);
2438
+ case "BaseFilterConfig":
2439
+ case "MembersFilterConfig":
2440
+ case "CustomFormulaContext":
2441
+ case "any":
2442
+ if (t == null && r.required)
2443
+ throw new Error(`${o}: Required argument is null/undefined`);
2444
+ return t;
2445
+ default:
2446
+ return t;
2447
+ }
2448
+ }
2449
+ function D(e) {
2450
+ const { data: t } = e, { dataSource: r, schemaIndex: s, pathPrefix: n } = e.context, { function: i, args: o } = t, a = n ? `${n}.` : "", u = Ne(i);
2451
+ if (!u) {
2452
+ const g2 = Object.keys(kt), m2 = R(i, g2, (C2) => C2), A = m2 && m2.distance <= x ? ` Did you mean '${m2.best}'?` : "";
2453
+ throw new Error(`${a}function: Unknown function '${i}'.${A}`);
2454
+ }
2455
+ const c = An(i), p2 = Fn(i);
2456
+ if (o.length < c)
2457
+ throw new Error(`${a}function: Expected at least ${c} arguments, got ${o.length}`);
2458
+ if (o.length > p2)
2459
+ throw new Error(`${a}function: Expected at most ${p2} arguments, got ${o.length}`);
2460
+ const l = [], d = [];
2461
+ for (let g2 = 0;g2 < Math.max(o.length, u.length); g2++) {
2462
+ const m2 = u[`${g2}`], A = o[`${g2}`], C2 = a ? `${a}args[${g2}]` : `args[${g2}]`;
2463
+ if (A === undefined) {
2464
+ m2 != null && m2.required && d.push(`${C2}: Missing required argument (expected ${m2.type})`);
2465
+ continue;
2466
+ }
2467
+ if (!m2) {
2468
+ d.push(`${C2}: Unexpected argument`);
2469
+ continue;
2470
+ }
2471
+ try {
2472
+ const N2 = Cn({
2473
+ data: A,
2474
+ context: {
2475
+ dataSource: r,
2476
+ schemaIndex: s,
2477
+ pathPrefix: C2,
2478
+ argSchema: m2
2479
+ }
2480
+ });
2481
+ l.push(N2);
2482
+ } catch (N2) {
2483
+ const ue = N2 instanceof Error ? N2.message : "Unknown error";
2484
+ d.push(ue);
2485
+ }
2486
+ }
2487
+ if (d.length > 0) {
2488
+ const g2 = d.join("; ");
2489
+ throw new Error(g2);
2490
+ }
2491
+ const b2 = bn(i);
2492
+ if (b2)
2493
+ try {
2494
+ b2(l, {
2495
+ dataSource: r,
2496
+ schemaIndex: s,
2497
+ pathPrefix: a
2498
+ });
2499
+ } catch (g2) {
2500
+ const m2 = g2 instanceof Error ? g2.message : "Unknown validation error";
2501
+ throw new Error(m2);
2502
+ }
2503
+ return Ps(i, l);
2504
+ }
2505
+ function Bt(e) {
2506
+ const { attribute: t, config: r } = e;
2507
+ if (ap(e) && Rp(t)) {
2508
+ const { granularity: s } = t, n = e.members.map((a) => s === "Years" && !isNaN(Number(a)) ? `${a}-01-01T00:00:00` : a), i = Fi(r), o = Object.keys(i).length === 0 ? undefined : i;
2509
+ return Ct(t, n, o);
2510
+ }
2511
+ return e;
2512
+ }
2513
+ function Tn(e) {
2514
+ let t = [];
2515
+ for (const r of e)
2516
+ Z(r) ? t = Mp(r, t) : t = Mp([Bt(r)], t);
2517
+ return t != null ? t : [];
2518
+ }
2519
+ var qn = (e) => {
2520
+ const { data: t } = e, { dataSource: r, schemaIndex: s } = e.context, n = [], i = [];
2521
+ return t.forEach((o, a) => {
2522
+ const u = {
2523
+ category: "filters",
2524
+ index: a,
2525
+ input: o
2526
+ };
2527
+ try {
2528
+ const c = D({
2529
+ data: o,
2530
+ context: { dataSource: r, schemaIndex: s, pathPrefix: "" }
2531
+ });
2532
+ !Z(c) && !oe(c) ? i.push(F(y2({}, u), { message: "Invalid filter JSON" })) : n.push(c);
2533
+ } catch (c) {
2534
+ const p2 = c instanceof Error ? c.message : "Unknown error";
2535
+ i.push(F(y2({}, u), { message: p2 }));
2536
+ }
2537
+ }), i.length > 0 ? { success: false, errors: i } : { success: true, data: Tn(n) };
2538
+ };
2539
+ var Re = (e) => {
2540
+ const { data: t } = e, { dataSource: r, schemaIndex: s } = e.context;
2541
+ return t ? Ct2(t) ? qn({
2542
+ data: t,
2543
+ context: { dataSource: r, schemaIndex: s }
2544
+ }) : {
2545
+ success: false,
2546
+ errors: [
2547
+ {
2548
+ category: "filters",
2549
+ index: -1,
2550
+ input: t,
2551
+ message: "Invalid filters JSON. Expected an array of function calls with 'function' and 'args' properties."
2552
+ }
2553
+ ]
2554
+ } : { success: true, data: [] };
2555
+ };
2556
+ var xn = (e) => {
2557
+ const { data: t } = e, { dataSource: r, schemaIndex: s } = e.context, n = [], i = [];
2558
+ return t.forEach((o, a) => {
2559
+ const u = {
2560
+ category: "highlights",
2561
+ index: a,
2562
+ input: o
2563
+ };
2564
+ try {
2565
+ const c = D({
2566
+ data: o,
2567
+ context: { dataSource: r, schemaIndex: s, pathPrefix: "" }
2568
+ });
2569
+ oe(c) ? n.push(Bt(c)) : i.push(F(y2({}, u), { message: "Invalid filter JSON" }));
2570
+ } catch (c) {
2571
+ const p2 = c instanceof Error ? c.message : "Unknown error";
2572
+ i.push(F(y2({}, u), { message: p2 }));
2573
+ }
2574
+ }), i.length > 0 ? { success: false, errors: i } : { success: true, data: n };
2575
+ };
2576
+ var ve = (e) => {
2577
+ const { data: t } = e, { dataSource: r, schemaIndex: s } = e.context;
2578
+ return t ? Ct2(t) ? xn({
2579
+ data: t,
2580
+ context: { dataSource: r, schemaIndex: s }
2581
+ }) : {
2582
+ success: false,
2583
+ errors: [
2584
+ {
2585
+ category: "highlights",
2586
+ index: -1,
2587
+ input: t,
2588
+ message: "Invalid highlights JSON. Expected an array of function calls with 'function' and 'args' properties."
2589
+ }
2590
+ ]
2591
+ } : { success: true, data: [] };
2592
+ };
2593
+ var $n = (e, t) => {
2594
+ if (e && !Lp(e))
2595
+ return F(y2({}, t), {
2596
+ message: `Invalid sort type. Expected 'sortAsc', 'sortDesc', or 'sortNone'. Got: '${e}'.`
2597
+ });
2598
+ };
2599
+ var Sn = (e, t, r) => {
2600
+ const { dataSource: s, schemaIndex: n } = t;
2601
+ try {
2602
+ const i = D({
2603
+ data: e,
2604
+ context: { dataSource: s, schemaIndex: n, pathPrefix: "" }
2605
+ });
2606
+ return xe(i) ? { success: true, data: i } : {
2607
+ success: false,
2608
+ errors: [F(y2({}, r), { message: "Invalid measure JSON" })]
2609
+ };
2610
+ } catch (i) {
2611
+ const o = i instanceof Error ? i.message : "Unknown error";
2612
+ return {
2613
+ success: false,
2614
+ errors: [F(y2({}, r), { message: o })]
2615
+ };
2616
+ }
2617
+ };
2618
+ var On = (e, t, r, s) => {
2619
+ const n = D({
2620
+ data: e.column,
2621
+ context: { dataSource: t, schemaIndex: r, pathPrefix: "" }
2622
+ });
2623
+ if (!xe(n))
2624
+ return {
2625
+ style: {},
2626
+ error: F(y2({}, s), { message: "Invalid measure JSON" })
2627
+ };
2628
+ const i = $n(e.sortType, s);
2629
+ if (i) {
2630
+ const a = ed(e, "column");
2631
+ return { measure: n, style: a, error: i };
2632
+ }
2633
+ const o = ed(e, "column");
2634
+ return { measure: n, style: o };
2635
+ };
2636
+ var Dn = (e, t, r, s) => {
2637
+ if ($s(e))
2638
+ return On(e, t, r, s);
2639
+ if (q3(e)) {
2640
+ const n = Sn(e, { dataSource: t, schemaIndex: r }, s);
2641
+ return n.success ? { measure: n.data } : { error: n.errors[0] };
2642
+ }
2643
+ return {
2644
+ error: F(y2({}, s), {
2645
+ message: "Invalid measure item. Expected a function call (function/args) or object with 'column' and optional 'sortType'."
2646
+ })
2647
+ };
2648
+ };
2649
+ var zt = (e) => {
2650
+ const { data: t } = e, { dataSource: r, schemaIndex: s } = e.context;
2651
+ if (!t)
2652
+ return { success: true, data: [] };
2653
+ if (!Array.isArray(t))
2654
+ return {
2655
+ success: false,
2656
+ errors: [
2657
+ {
2658
+ category: "measures",
2659
+ index: -1,
2660
+ input: t,
2661
+ message: "Invalid measures JSON. Expected an array."
2662
+ }
2663
+ ]
2664
+ };
2665
+ const n = [], i = [];
2666
+ return t.forEach((o, a) => {
2667
+ const u = {
2668
+ category: "measures",
2669
+ index: a,
2670
+ input: o
2671
+ };
2672
+ try {
2673
+ const c = Dn(o, r, s, u);
2674
+ if (c.error) {
2675
+ i.push(c.error);
2676
+ return;
2677
+ }
2678
+ c.measure && n.push(c.style !== undefined ? { measure: c.measure, style: c.style } : { measure: c.measure });
2679
+ } catch (c) {
2680
+ const p2 = c instanceof Error ? c.message : "Unknown error";
2681
+ i.push(F(y2({}, u), { message: p2 }));
2682
+ }
2683
+ }), i.length > 0 ? { success: false, errors: i } : { success: true, data: n };
2684
+ };
2685
+ function Q(e) {
2686
+ return typeof e == "string" ? e.replace(/\[\[([^\]]+)\]\]/g, "$1") : Array.isArray(e) ? e.map(Q) : e !== null && typeof e == "object" ? Object.fromEntries(Object.entries(e).map(([t, r]) => [t, Q(r)])) : e;
2687
+ }
2688
+ function w(e, t, r) {
2689
+ const s = e();
2690
+ if (!s.success) {
2691
+ const n = r ? s.errors.map(r) : s.errors;
2692
+ return t.push(...n), null;
2693
+ }
2694
+ return s.data;
2695
+ }
2696
+ var Ie = "$trend";
2697
+ var Pe = "$forecast";
2698
+ function Mn(e) {
2699
+ return e.map(({ attribute: t, style: r }) => {
2700
+ const s = r == null ? undefined : r.sortType;
2701
+ if (!s)
2702
+ return t;
2703
+ const n = typeof s == "object" ? s.direction : s;
2704
+ return Lp(n) ? t.sort(Ap(n)) : t;
2705
+ });
2706
+ }
2707
+ function Nn(e) {
2708
+ var t, r;
2709
+ return (r = (t = e.composeCode) == null ? undefined : t.includes("measureFactory.trend")) != null ? r : false;
2710
+ }
2711
+ function Rn2(e) {
2712
+ var t, r;
2713
+ return (r = (t = e.composeCode) == null ? undefined : t.includes("measureFactory.forecast")) != null ? r : false;
2714
+ }
2715
+ function vn2(e) {
2716
+ var r, s;
2717
+ const t = [];
2718
+ for (const { measure: n, style: i } of e) {
2719
+ const o = i == null ? undefined : i.sortType, a = o && Lp(o) ? n.sort(Ap(o)) : n;
2720
+ t.push(a), i != null && i.trend && !Nn(n) && t.push(Ld(n, `${Ie}_${(r = n.name) != null ? r : "Measure"}`, i.trend)), i != null && i.forecast && !Rn2(n) && t.push(Md(n, `${Pe}_${(s = n.name) != null ? s : "Measure"}`, i.forecast));
2721
+ }
2722
+ return t;
2723
+ }
2724
+ var ii = (e) => {
2725
+ const { data: t } = e, { dataSource: r, tables: s } = e.context, n = $e(s), i = [], o = w(() => qt({
2726
+ data: t.dimensions || [],
2727
+ context: { dataSource: r, schemaIndex: n }
2728
+ }), i), a = w(() => zt({
2729
+ data: t.measures || [],
2730
+ context: { dataSource: r, schemaIndex: n }
2731
+ }), i), u = w(() => Re({
2732
+ data: t.filters || [],
2733
+ context: { dataSource: r, schemaIndex: n }
2734
+ }), i);
2735
+ let c = null;
2736
+ return t.highlights && (c = w(() => ve({
2737
+ data: t.highlights || [],
2738
+ context: { dataSource: r, schemaIndex: n }
2739
+ }), i)), i.length > 0 ? {
2740
+ success: false,
2741
+ errors: i
2742
+ } : {
2743
+ success: true,
2744
+ data: y2({
2745
+ dataSource: Sp(r),
2746
+ dimensions: o ? Mn(o) : [],
2747
+ measures: a ? vn2(a) : [],
2748
+ filters: u || []
2749
+ }, c && { highlights: c })
2750
+ };
2751
+ };
2752
+ function Qe(e) {
2753
+ return typeof e == "object" && e !== null && "column" in e && e.column !== undefined;
2754
+ }
2755
+ function ke(e) {
2756
+ const t = [], r = [];
2757
+ return e.forEach((s, n) => {
2758
+ var l, d, b2;
2759
+ const i = Qe(s) ? s.column : s, o = Qe(s) ? s : undefined, a = () => typeof i.toJSON == "function" ? i.toJSON() : i;
2760
+ if (!i.composeCode) {
2761
+ r.push({
2762
+ category: "dimensions",
2763
+ index: n,
2764
+ input: a(),
2765
+ message: `Dimension at index ${n} (${i.name || "unnamed"}) is missing composeCode`
2766
+ });
2767
+ return;
2768
+ }
2769
+ if (!i.composeCode.startsWith(E3)) {
2770
+ r.push({
2771
+ category: "dimensions",
2772
+ index: n,
2773
+ input: a(),
2774
+ message: `Expected composeCode to start with '${E3}' for dimension at index ${n} (${i.name || "unnamed"}). Got: '${i.composeCode}'`
2775
+ });
2776
+ return;
2777
+ }
2778
+ const u = (b2 = o != null && o.sortType ? Ap(o.sortType) : undefined) != null ? b2 : ((l = i.getSort) == null ? undefined : l.call(i)) !== undefined && ((d = i.getSort) == null ? undefined : d.call(i)) !== C.None ? i.getSort() : undefined, c = o ? ed(o, "column") : {};
2779
+ if (u !== undefined && u !== C.None || o && Object.keys(c).length > 0) {
2780
+ const g2 = y2(y2({
2781
+ column: i.composeCode
2782
+ }, u !== undefined && u !== C.None && { sortType: Tp(u) }), c);
2783
+ t.push(g2);
2784
+ } else
2785
+ t.push(i.composeCode);
2786
+ }), r.length > 0 ? { success: false, errors: r } : { success: true, data: t };
2787
+ }
2788
+ var be2 = "Unknown error";
2789
+ function Be(e) {
2790
+ if (!e)
2791
+ return { success: true, data: [] };
2792
+ const t = [];
2793
+ if (Zt(e)) {
2794
+ if (!e.composeCode)
2795
+ return {
2796
+ success: false,
2797
+ errors: [
2798
+ {
2799
+ category: "filters",
2800
+ index: -1,
2801
+ input: e,
2802
+ message: `FilterRelations is missing composeCode. Operator: ${e.operator || "unknown"}`
2803
+ }
2804
+ ]
2805
+ };
2806
+ try {
2807
+ return { success: true, data: [W(e.composeCode)] };
2808
+ } catch (s) {
2809
+ const n = s instanceof Error ? s.message : be2;
2810
+ return {
2811
+ success: false,
2812
+ errors: [
2813
+ {
2814
+ category: "filters",
2815
+ index: -1,
2816
+ input: e,
2817
+ message: `Failed to parse composeCode for FilterRelations: ${n}. ComposeCode: '${e.composeCode}'`
2818
+ }
2819
+ ]
2820
+ };
2821
+ }
2822
+ }
2823
+ const r = [];
2824
+ return e.forEach((s, n) => {
2825
+ var i;
2826
+ if (!s.composeCode) {
2827
+ t.push({
2828
+ category: "filters",
2829
+ index: n,
2830
+ input: s,
2831
+ message: `Filter at index ${n} (${(i = s.name) != null ? i : "unnamed"}) is missing composeCode`
2832
+ });
2833
+ return;
2834
+ }
2835
+ try {
2836
+ const o = W(s.composeCode);
2837
+ r.push(o);
2838
+ } catch (o) {
2839
+ const a = o instanceof Error ? o.message : be2;
2840
+ t.push({
2841
+ category: "filters",
2842
+ index: n,
2843
+ input: s,
2844
+ message: `Failed to parse composeCode for filter at index ${n}: ${a}. ComposeCode: '${s.composeCode}'`
2845
+ });
2846
+ }
2847
+ }), t.length > 0 ? { success: false, errors: t } : { success: true, data: r };
2848
+ }
2849
+ function ze(e) {
2850
+ if (!e)
2851
+ return { success: true, data: [] };
2852
+ const t = [], r = [];
2853
+ return e.forEach((s, n) => {
2854
+ var i;
2855
+ if (!s.composeCode) {
2856
+ r.push({
2857
+ category: "highlights",
2858
+ index: n,
2859
+ input: s,
2860
+ message: `Highlight filter at index ${n} (${(i = s.name) != null ? i : "unnamed"}) is missing composeCode`
2861
+ });
2862
+ return;
2863
+ }
2864
+ try {
2865
+ const o = W(s.composeCode);
2866
+ t.push(o);
2867
+ } catch (o) {
2868
+ const a = o instanceof Error ? o.message : be2;
2869
+ r.push({
2870
+ category: "highlights",
2871
+ index: n,
2872
+ input: s,
2873
+ message: `Failed to parse composeCode for highlight filter at index ${n}: ${a}. ComposeCode: '${s.composeCode}'`
2874
+ });
2875
+ }
2876
+ }), r.length > 0 ? { success: false, errors: r } : { success: true, data: t };
2877
+ }
2878
+ function Xe(e) {
2879
+ return typeof e == "object" && e !== null && "column" in e && e.column !== undefined;
2880
+ }
2881
+ function Le(e) {
2882
+ const t = [], r = [];
2883
+ return e.forEach((s, n) => {
2884
+ var u, c, p2;
2885
+ const i = Xe(s) ? s.column : s, o = Xe(s) ? s : undefined, a = () => typeof i.toJSON == "function" ? i.toJSON() : i;
2886
+ if (!i.composeCode) {
2887
+ r.push({
2888
+ category: "measures",
2889
+ index: n,
2890
+ input: a(),
2891
+ message: `Measure at index ${n} (${i.name || "unnamed"}) is missing composeCode`
2892
+ });
2893
+ return;
2894
+ }
2895
+ try {
2896
+ const l = W(i.composeCode), d = (p2 = o != null && o.sortType ? Ap(o.sortType) : undefined) != null ? p2 : ((u = i.getSort) == null ? undefined : u.call(i)) !== undefined && ((c = i.getSort) == null ? undefined : c.call(i)) !== C.None ? i.getSort() : undefined;
2897
+ if (d !== undefined && d !== C.None || o && Object.keys(ed(o, "column")).length > 0) {
2898
+ const g2 = o ? ed(o, "column") : {}, m2 = y2(y2({
2899
+ column: l
2900
+ }, d !== undefined && d !== C.None && { sortType: Tp(d) }), g2);
2901
+ t.push(m2);
2902
+ } else
2903
+ t.push(l);
2904
+ } catch (l) {
2905
+ const d = l instanceof Error ? l.message : "Unknown error";
2906
+ r.push({
2907
+ category: "measures",
2908
+ index: n,
2909
+ input: a(),
2910
+ message: `Failed to parse composeCode for measure at index ${n} (${i.name || "unnamed"}): ${d}. ComposeCode: '${i.composeCode}'`
2911
+ });
2912
+ }
2913
+ }), r.length > 0 ? { success: false, errors: r } : { success: true, data: t };
2914
+ }
2915
+ function Ze(e) {
2916
+ var t, r, s, n;
2917
+ return ((r = (t = e.composeCode) == null ? undefined : t.includes("measureFactory.trend")) != null ? r : false) || ((n = (s = e.name) == null ? undefined : s.startsWith(Ie)) != null ? n : false);
2918
+ }
2919
+ function et(e) {
2920
+ var t, r, s, n;
2921
+ return ((r = (t = e.composeCode) == null ? undefined : t.includes("measureFactory.forecast")) != null ? r : false) || ((n = (s = e.name) == null ? undefined : s.startsWith(Pe)) != null ? n : false);
2922
+ }
2923
+ function tt(e) {
2924
+ try {
2925
+ const t = W(e.trim());
2926
+ return t.args[2] != null && typeof t.args[2] == "object" ? t.args[2] : undefined;
2927
+ } catch (t) {
2928
+ return;
2929
+ }
2930
+ }
2931
+ function In(e) {
2932
+ var s, n, i;
2933
+ if (!(e != null && e.length))
2934
+ return [];
2935
+ const t = /* @__PURE__ */ new Set, r = [];
2936
+ for (let o = 0;o < e.length; o++) {
2937
+ if (t.has(o))
2938
+ continue;
2939
+ const a = e[o];
2940
+ if (Ze(a) || et(a)) {
2941
+ r.push(a);
2942
+ continue;
2943
+ }
2944
+ const u = (s = a.name) != null ? s : "Measure", c = `${Ie}_${u}`, p2 = `${Pe}_${u}`;
2945
+ let l, d, b2 = o + 1;
2946
+ if (b2 < e.length && !t.has(b2) && Ze(e[b2]) && e[b2].name === c) {
2947
+ const g2 = (n = e[b2].composeCode) == null ? undefined : n.trim();
2948
+ g2 && (l = tt(g2), t.add(b2), b2++);
2949
+ }
2950
+ if (b2 < e.length && !t.has(b2) && et(e[b2]) && e[b2].name === p2) {
2951
+ const g2 = (i = e[b2].composeCode) == null ? undefined : i.trim();
2952
+ g2 && (d = tt(g2), t.add(b2));
2953
+ }
2954
+ l !== undefined || d !== undefined ? r.push(y2(y2({
2955
+ column: a
2956
+ }, l && Object.keys(l).length > 0 && { trend: l }), d && Object.keys(d).length > 0 && { forecast: d })) : r.push(a);
2957
+ }
2958
+ return r;
2959
+ }
2960
+ function oi(e) {
2961
+ const t = [], r = w(() => ke(e.dimensions || []), t), s = In(e.measures || []), n = w(() => Le(s), t), i = w(() => Be(e.filters), t);
2962
+ let o = null;
2963
+ if (e.highlights && e.highlights.length > 0 && (o = w(() => ze(e.highlights), t)), t.length > 0)
2964
+ return {
2965
+ success: false,
2966
+ errors: t
2967
+ };
2968
+ const a = y2({
2969
+ dimensions: r || [],
2970
+ measures: n || [],
2971
+ filters: i || []
2972
+ }, o && { highlights: o });
2973
+ return {
2974
+ success: true,
2975
+ data: Q(a)
2976
+ };
2977
+ }
2978
+ var Lt = new Set(Xp.filter((e) => e !== "image"));
2979
+ var rt = Object.freeze([...Lt]);
2980
+ function Zn(e) {
2981
+ const { filters: t, relations: r } = bp(e.filters || []);
2982
+ return {
2983
+ dataSource: e.dataSource,
2984
+ dimensions: e.dimensions,
2985
+ measures: e.measures,
2986
+ filters: t,
2987
+ filterRelations: r,
2988
+ highlights: e.highlights
2989
+ };
2990
+ }
2991
+ function fi(e, t, r = false) {
2992
+ const s = Zn(e), n = jn(s, t);
2993
+ return Dh(n, r);
2994
+ }
2995
+
2996
+ export { y, N, q, ni, ii, oi, fi };