@dcupl/common 2.0.0-beta.1 → 2.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/analytics.controller.d.ts +1 -1
- package/dist/esm/changeDetection.d.ts +2 -2
- package/dist/esm/computeSuggestions.d.ts +2 -2
- package/dist/esm/deep-query.service.d.ts +26 -1
- package/dist/esm/getAggregation.d.ts +1 -1
- package/dist/esm/getFacets.d.ts +26 -3
- package/dist/esm/helper.d.ts +1 -1
- package/dist/esm/index.d.ts +23 -22
- package/dist/esm/index.js +778 -600
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/indices.controller.d.ts +7 -1
- package/dist/esm/logger/index.d.ts +2 -2
- package/dist/esm/pivot.d.ts +2 -2
- package/dist/esm/property-parser.d.ts +27 -2
- package/dist/esm/query-builder.d.ts +2 -2
- package/dist/esm/query.helper.d.ts +1 -1
- package/dist/esm/queryData.d.ts +2 -2
- package/dist/esm/resource-id.d.ts +43 -0
- package/dist/esm/types/app-loader.types.d.ts +94 -4
- package/dist/esm/types/data.types.d.ts +7 -3
- package/dist/esm/types/dcupl.types.d.ts +21 -9
- package/dist/esm/types/facets.types.d.ts +6 -1
- package/dist/esm/types/filter.types.d.ts +3 -3
- package/dist/esm/types/group-by.types.d.ts +2 -2
- package/dist/esm/types/index.d.ts +17 -16
- package/dist/esm/types/internal.types.d.ts +1 -1
- package/dist/esm/types/key-property.types.d.ts +11 -0
- package/dist/esm/types/list.types.d.ts +20 -4
- package/dist/esm/types/model.types.d.ts +54 -5
- package/dist/esm/types/quality.types.d.ts +59 -1
- package/dist/esm/types/query.types.d.ts +19 -10
- package/dist/esm/types/section.types.d.ts +2 -2
- package/dist/esm/types/suggestion.types.d.ts +1 -1
- package/dist/node/index.cjs +2 -2
- package/dist/node/index.cjs.map +1 -1
- package/package.json +2 -2
package/dist/esm/index.js
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { cloneDeep as
|
|
2
|
-
function
|
|
3
|
-
const e =
|
|
4
|
-
return
|
|
1
|
+
import { cloneDeep as v, get as I, every as z, findIndex as E, size as W, isEqual as $, differenceBy as O, startsWith as H, endsWith as U, isEqualWith as S, isMatch as V, find as J } from "lodash-es";
|
|
2
|
+
function K(n) {
|
|
3
|
+
const e = k(n);
|
|
4
|
+
return Z(e);
|
|
5
5
|
}
|
|
6
|
-
function
|
|
7
|
-
if (typeof
|
|
8
|
-
return String(
|
|
9
|
-
if (Array.isArray(
|
|
10
|
-
return "[" +
|
|
11
|
-
const e = Object.keys(
|
|
6
|
+
function k(n) {
|
|
7
|
+
if (typeof n != "object" || n === null)
|
|
8
|
+
return String(n);
|
|
9
|
+
if (Array.isArray(n))
|
|
10
|
+
return "[" + n.map(k).join(",") + "]";
|
|
11
|
+
const e = Object.keys(n).sort();
|
|
12
12
|
let t = "{";
|
|
13
13
|
for (let r = 0; r < e.length; r++) {
|
|
14
14
|
const s = e[r];
|
|
15
|
-
t += s + ":" +
|
|
15
|
+
t += s + ":" + k(n[s]), r < e.length - 1 && (t += ",");
|
|
16
16
|
}
|
|
17
17
|
return t += "}", t;
|
|
18
18
|
}
|
|
19
|
-
function
|
|
19
|
+
function Z(n) {
|
|
20
20
|
let e = 0;
|
|
21
|
-
for (let t = 0; t <
|
|
22
|
-
const r =
|
|
21
|
+
for (let t = 0; t < n.length; t++) {
|
|
22
|
+
const r = n.charCodeAt(t);
|
|
23
23
|
e = (e << 5) - e + r, e |= 0;
|
|
24
24
|
}
|
|
25
25
|
return e.toString(16);
|
|
26
26
|
}
|
|
27
|
-
const
|
|
27
|
+
const b = {
|
|
28
28
|
now: () => typeof performance < "u" && performance.now ? performance.now() : (/* @__PURE__ */ new Date()).getTime(),
|
|
29
|
-
mark: (
|
|
30
|
-
typeof performance < "u" && performance.mark && performance.mark(
|
|
29
|
+
mark: (n) => {
|
|
30
|
+
typeof performance < "u" && performance.mark && performance.mark(n);
|
|
31
31
|
},
|
|
32
|
-
measure: (
|
|
33
|
-
typeof performance < "u" && performance.measure && performance.measure(
|
|
32
|
+
measure: (n, e, t) => {
|
|
33
|
+
typeof performance < "u" && performance.measure && performance.measure(n, e, t);
|
|
34
34
|
},
|
|
35
|
-
getEntriesByName(
|
|
35
|
+
getEntriesByName(n) {
|
|
36
36
|
if (typeof performance < "u" && performance.getEntriesByName)
|
|
37
|
-
return performance.getEntriesByName(
|
|
37
|
+
return performance.getEntriesByName(n);
|
|
38
38
|
},
|
|
39
|
-
getEntriesByType(
|
|
39
|
+
getEntriesByType(n) {
|
|
40
40
|
if (typeof performance < "u" && performance.getEntriesByType)
|
|
41
|
-
return performance.getEntriesByType(
|
|
41
|
+
return performance.getEntriesByType(n);
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
|
-
class
|
|
44
|
+
class Re {
|
|
45
45
|
data;
|
|
46
46
|
enabled = !1;
|
|
47
47
|
constructor() {
|
|
@@ -59,7 +59,7 @@ class De {
|
|
|
59
59
|
const t = this.getKey(e.name, e.context), r = {
|
|
60
60
|
name: e.name,
|
|
61
61
|
type: "mark",
|
|
62
|
-
value:
|
|
62
|
+
value: b.now(),
|
|
63
63
|
createdAt: Date.now()
|
|
64
64
|
};
|
|
65
65
|
return this.data.set(t, r), r;
|
|
@@ -69,21 +69,21 @@ class De {
|
|
|
69
69
|
const t = this.getKey(e.name, e.context), r = this.data.get(this.getKey(e.start, e.context)), s = this.data.get(this.getKey(e.end, e.context));
|
|
70
70
|
if (!r || !s)
|
|
71
71
|
return;
|
|
72
|
-
const i = s.value - r.value,
|
|
72
|
+
const i = s.value - r.value, o = Math.round(i * 100) / 100, a = this.data.get(t);
|
|
73
73
|
if (a && e.sum) {
|
|
74
|
-
const
|
|
74
|
+
const u = a.value + o, f = {
|
|
75
75
|
...a,
|
|
76
|
-
value:
|
|
76
|
+
value: u
|
|
77
77
|
};
|
|
78
78
|
return this.data.set(t, f), f;
|
|
79
79
|
}
|
|
80
|
-
const
|
|
80
|
+
const c = {
|
|
81
81
|
name: e.name,
|
|
82
82
|
type: "measure",
|
|
83
|
-
value:
|
|
83
|
+
value: o,
|
|
84
84
|
createdAt: Date.now()
|
|
85
85
|
};
|
|
86
|
-
return e.detail && (
|
|
86
|
+
return e.detail && (c.detail = e.detail), this.data.set(t, c), c;
|
|
87
87
|
}
|
|
88
88
|
update(e) {
|
|
89
89
|
if (!this.enabled) return e.value;
|
|
@@ -96,7 +96,7 @@ class De {
|
|
|
96
96
|
return this.data.get(t);
|
|
97
97
|
}
|
|
98
98
|
getResourceInfosFromPerformanceAPI() {
|
|
99
|
-
return typeof performance > "u" ? [] :
|
|
99
|
+
return typeof performance > "u" ? [] : b.getEntriesByType("resource");
|
|
100
100
|
}
|
|
101
101
|
get(e) {
|
|
102
102
|
const t = this.getKey(e.name, e.context);
|
|
@@ -114,11 +114,11 @@ class De {
|
|
|
114
114
|
getKey(e, t) {
|
|
115
115
|
if (!t)
|
|
116
116
|
return e;
|
|
117
|
-
const r =
|
|
117
|
+
const r = K(t);
|
|
118
118
|
return e + "_" + r;
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
-
let
|
|
121
|
+
let X = class _ {
|
|
122
122
|
nodes;
|
|
123
123
|
edges;
|
|
124
124
|
nodeKinds = /* @__PURE__ */ new Map();
|
|
@@ -200,8 +200,8 @@ let Z = class T {
|
|
|
200
200
|
t.add(s);
|
|
201
201
|
const i = this.edges.get(s);
|
|
202
202
|
if (i) {
|
|
203
|
-
for (let
|
|
204
|
-
if (r(
|
|
203
|
+
for (let o of i)
|
|
204
|
+
if (r(o))
|
|
205
205
|
return !0;
|
|
206
206
|
}
|
|
207
207
|
return t.delete(s), e.add(s), !1;
|
|
@@ -225,24 +225,24 @@ let Z = class T {
|
|
|
225
225
|
return r.slice(a).concat([i]);
|
|
226
226
|
}
|
|
227
227
|
t.add(i), r.push(i);
|
|
228
|
-
const
|
|
229
|
-
if (
|
|
230
|
-
for (let a of
|
|
231
|
-
const
|
|
232
|
-
if (
|
|
233
|
-
return
|
|
228
|
+
const o = this.edges.get(i);
|
|
229
|
+
if (o)
|
|
230
|
+
for (let a of o) {
|
|
231
|
+
const c = s(a);
|
|
232
|
+
if (c)
|
|
233
|
+
return c;
|
|
234
234
|
}
|
|
235
235
|
return r.pop(), t.delete(i), e.add(i), null;
|
|
236
236
|
};
|
|
237
237
|
for (let i of this.nodes) {
|
|
238
|
-
const
|
|
239
|
-
if (
|
|
240
|
-
return { hasCycle: !0, path:
|
|
238
|
+
const o = s(i);
|
|
239
|
+
if (o)
|
|
240
|
+
return { hasCycle: !0, path: o };
|
|
241
241
|
}
|
|
242
242
|
return { hasCycle: !1 };
|
|
243
243
|
}
|
|
244
244
|
order(e) {
|
|
245
|
-
const t = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set(), s = [], i = e?.allowCycles ?? !1,
|
|
245
|
+
const t = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set(), s = [], i = e?.allowCycles ?? !1, o = (a) => {
|
|
246
246
|
if (t.has(a))
|
|
247
247
|
return;
|
|
248
248
|
if (r.has(a)) {
|
|
@@ -251,14 +251,14 @@ let Z = class T {
|
|
|
251
251
|
throw new Error("Graph has a cycle.");
|
|
252
252
|
}
|
|
253
253
|
r.add(a);
|
|
254
|
-
const
|
|
255
|
-
if (
|
|
256
|
-
for (let
|
|
257
|
-
|
|
254
|
+
const c = this.edges.get(a);
|
|
255
|
+
if (c)
|
|
256
|
+
for (let u of c)
|
|
257
|
+
o(u);
|
|
258
258
|
r.delete(a), t.add(a), s.push(a);
|
|
259
259
|
};
|
|
260
260
|
for (let a of this.nodes)
|
|
261
|
-
t.has(a) ||
|
|
261
|
+
t.has(a) || o(a);
|
|
262
262
|
return s;
|
|
263
263
|
}
|
|
264
264
|
clear() {
|
|
@@ -326,30 +326,30 @@ let Z = class T {
|
|
|
326
326
|
*/
|
|
327
327
|
plan(e) {
|
|
328
328
|
const t = /* @__PURE__ */ new Map();
|
|
329
|
-
for (const
|
|
330
|
-
for (const
|
|
331
|
-
for (const a of
|
|
329
|
+
for (const o of this.nodes) t.set(o, 0);
|
|
330
|
+
for (const o of this.edges.values())
|
|
331
|
+
for (const a of o) t.set(a, (t.get(a) || 0) + 1);
|
|
332
332
|
const r = [];
|
|
333
|
-
let s = Array.from(this.nodes).filter((
|
|
333
|
+
let s = Array.from(this.nodes).filter((o) => (t.get(o) || 0) === 0);
|
|
334
334
|
const i = /* @__PURE__ */ new Set();
|
|
335
335
|
for (; s.length > 0; ) {
|
|
336
|
-
const
|
|
337
|
-
r.push(
|
|
338
|
-
for (const a of
|
|
336
|
+
const o = s.slice();
|
|
337
|
+
r.push(o), s = [];
|
|
338
|
+
for (const a of o) {
|
|
339
339
|
if (i.has(a)) continue;
|
|
340
340
|
i.add(a);
|
|
341
|
-
const
|
|
342
|
-
if (
|
|
343
|
-
for (const
|
|
344
|
-
t.set(
|
|
341
|
+
const c = this.edges.get(a);
|
|
342
|
+
if (c)
|
|
343
|
+
for (const u of c)
|
|
344
|
+
t.set(u, (t.get(u) || 0) - 1), (t.get(u) || 0) === 0 && s.push(u);
|
|
345
345
|
}
|
|
346
346
|
}
|
|
347
347
|
if (i.size !== this.nodes.size)
|
|
348
348
|
throw new Error("Graph has a cycle.");
|
|
349
349
|
if (e?.filterKinds && e.filterKinds.length > 0) {
|
|
350
|
-
const
|
|
350
|
+
const o = new Set(e.filterKinds);
|
|
351
351
|
return {
|
|
352
|
-
batches: r.map((a) => a.filter((
|
|
352
|
+
batches: r.map((a) => a.filter((c) => o.has(this.nodeKinds.get(c))))
|
|
353
353
|
};
|
|
354
354
|
}
|
|
355
355
|
return { batches: r };
|
|
@@ -362,26 +362,26 @@ let Z = class T {
|
|
|
362
362
|
* - 'both': union of upstream and downstream
|
|
363
363
|
*/
|
|
364
364
|
getImpactedNodes(e, t = "downstream", r) {
|
|
365
|
-
const s = new Set(e), i = (
|
|
366
|
-
const
|
|
365
|
+
const s = new Set(e), i = (u) => !r || r.length === 0 || r.includes(this.nodeKinds.get(u) ?? void 0), o = () => {
|
|
366
|
+
const u = /* @__PURE__ */ new Set(), f = Array.from(s);
|
|
367
367
|
for (; f.length; ) {
|
|
368
|
-
const
|
|
369
|
-
for (const [
|
|
370
|
-
h.has(
|
|
368
|
+
const l = f.shift();
|
|
369
|
+
for (const [d, h] of this.edges)
|
|
370
|
+
h.has(l) && !u.has(d) && (u.add(d), f.push(d));
|
|
371
371
|
}
|
|
372
|
-
return
|
|
372
|
+
return u;
|
|
373
373
|
}, a = () => {
|
|
374
|
-
const
|
|
374
|
+
const u = /* @__PURE__ */ new Set(), f = Array.from(s);
|
|
375
375
|
for (; f.length; ) {
|
|
376
|
-
const
|
|
377
|
-
if (
|
|
378
|
-
for (const h of
|
|
379
|
-
|
|
376
|
+
const l = f.shift(), d = this.edges.get(l);
|
|
377
|
+
if (d)
|
|
378
|
+
for (const h of d)
|
|
379
|
+
u.has(h) || (u.add(h), f.push(h));
|
|
380
380
|
}
|
|
381
|
-
return
|
|
381
|
+
return u;
|
|
382
382
|
};
|
|
383
|
-
let
|
|
384
|
-
return t === "both" ?
|
|
383
|
+
let c;
|
|
384
|
+
return t === "both" ? c = /* @__PURE__ */ new Set([...o(), ...a()]) : t === "upstream" ? c = a() : c = o(), Array.from(c).filter(i);
|
|
385
385
|
}
|
|
386
386
|
toJSON() {
|
|
387
387
|
const e = Array.from(this.nodes).map((r) => ({
|
|
@@ -392,7 +392,7 @@ let Z = class T {
|
|
|
392
392
|
return { nodes: e, edges: t };
|
|
393
393
|
}
|
|
394
394
|
static fromJSON(e) {
|
|
395
|
-
const t = new
|
|
395
|
+
const t = new _();
|
|
396
396
|
for (const r of e.nodes)
|
|
397
397
|
t.addNode(r.name, { kind: r.kind, meta: r.meta });
|
|
398
398
|
for (const r of e.edges)
|
|
@@ -400,19 +400,19 @@ let Z = class T {
|
|
|
400
400
|
return t;
|
|
401
401
|
}
|
|
402
402
|
diff(e) {
|
|
403
|
-
const t = new Set(this.getNodes()), r = new Set(e.getNodes()), s = Array.from(r).filter((
|
|
404
|
-
for (const
|
|
405
|
-
const
|
|
406
|
-
|
|
403
|
+
const t = new Set(this.getNodes()), r = new Set(e.getNodes()), s = Array.from(r).filter((l) => !t.has(l)), i = Array.from(t).filter((l) => !r.has(l)), o = new Set(this.getAllEdges().map((l) => l.join("→"))), a = new Set(e.getAllEdges().map((l) => l.join("→"))), c = Array.from(a).filter((l) => !o.has(l)).map((l) => l.split("→")), u = Array.from(o).filter((l) => !a.has(l)).map((l) => l.split("→")), f = [];
|
|
404
|
+
for (const l of /* @__PURE__ */ new Set([...t, ...r])) {
|
|
405
|
+
const d = this.nodeKinds.get(l), h = e.nodeKinds.get(l);
|
|
406
|
+
d !== h && f.push({ name: l, from: d, to: h });
|
|
407
407
|
}
|
|
408
|
-
return { addedNodes: s, removedNodes: i, addedEdges:
|
|
408
|
+
return { addedNodes: s, removedNodes: i, addedEdges: c, removedEdges: u, kindChanges: f };
|
|
409
409
|
}
|
|
410
410
|
};
|
|
411
|
-
class
|
|
411
|
+
class Te {
|
|
412
412
|
graph;
|
|
413
413
|
nodeIndex;
|
|
414
414
|
constructor() {
|
|
415
|
-
this.graph = new
|
|
415
|
+
this.graph = new X(), this.nodeIndex = /* @__PURE__ */ new Map();
|
|
416
416
|
}
|
|
417
417
|
/**
|
|
418
418
|
* Creates a unique ID for an attribute node
|
|
@@ -454,10 +454,10 @@ class Ke {
|
|
|
454
454
|
* @returns Array of all impacted attribute nodes (including the changed ones)
|
|
455
455
|
*/
|
|
456
456
|
getImpactedAttributes(e) {
|
|
457
|
-
const t = e.map((a) => this.getNodeId(a.modelKey, a.attributeKey)), s = this.graph.getImpactedNodes(t, "downstream").map((a) => this.nodeIndex.get(a)).filter((a) => a !== void 0), i = [...e, ...s],
|
|
457
|
+
const t = e.map((a) => this.getNodeId(a.modelKey, a.attributeKey)), s = this.graph.getImpactedNodes(t, "downstream").map((a) => this.nodeIndex.get(a)).filter((a) => a !== void 0), i = [...e, ...s], o = /* @__PURE__ */ new Set();
|
|
458
458
|
return i.filter((a) => {
|
|
459
|
-
const
|
|
460
|
-
return
|
|
459
|
+
const c = this.getNodeId(a.modelKey, a.attributeKey);
|
|
460
|
+
return o.has(c) ? !1 : (o.add(c), !0);
|
|
461
461
|
});
|
|
462
462
|
}
|
|
463
463
|
/**
|
|
@@ -470,10 +470,10 @@ class Ke {
|
|
|
470
470
|
getProcessingOrder(e) {
|
|
471
471
|
const t = /* @__PURE__ */ new Map(), r = [...e].sort((s, i) => s.processingStep - i.processingStep);
|
|
472
472
|
for (const s of r) {
|
|
473
|
-
const { modelKey: i, attributeKey:
|
|
473
|
+
const { modelKey: i, attributeKey: o, processingStep: a } = s;
|
|
474
474
|
t.has(i) || t.set(i, /* @__PURE__ */ new Map());
|
|
475
|
-
const
|
|
476
|
-
|
|
475
|
+
const c = t.get(i);
|
|
476
|
+
c.has(a) || c.set(a, /* @__PURE__ */ new Set()), c.get(a).add(o);
|
|
477
477
|
}
|
|
478
478
|
return t;
|
|
479
479
|
}
|
|
@@ -530,12 +530,12 @@ class Ke {
|
|
|
530
530
|
s.add(r);
|
|
531
531
|
const i = this.graph.getDependencies(r);
|
|
532
532
|
if (i.length === 0) return 1;
|
|
533
|
-
let
|
|
533
|
+
let o = 0;
|
|
534
534
|
for (const a of i) {
|
|
535
|
-
const
|
|
536
|
-
|
|
535
|
+
const c = t(a, new Set(s));
|
|
536
|
+
o = Math.max(o, c);
|
|
537
537
|
}
|
|
538
|
-
return
|
|
538
|
+
return o + 1;
|
|
539
539
|
};
|
|
540
540
|
for (const r of this.graph.getNodes()) {
|
|
541
541
|
const s = t(r);
|
|
@@ -555,8 +555,8 @@ class Ke {
|
|
|
555
555
|
const t = [];
|
|
556
556
|
for (const [r, s] of e)
|
|
557
557
|
for (const i of s) {
|
|
558
|
-
const
|
|
559
|
-
this.hasNode(
|
|
558
|
+
const o = this.getNodeId(r, i);
|
|
559
|
+
this.hasNode(o) || t.push({ modelKey: r, attributeKey: i });
|
|
560
560
|
}
|
|
561
561
|
return {
|
|
562
562
|
isComplete: t.length === 0,
|
|
@@ -600,7 +600,7 @@ class Ke {
|
|
|
600
600
|
};
|
|
601
601
|
}
|
|
602
602
|
}
|
|
603
|
-
const
|
|
603
|
+
const q = {
|
|
604
604
|
silent: 0,
|
|
605
605
|
error: 1,
|
|
606
606
|
warn: 2,
|
|
@@ -663,20 +663,20 @@ class p {
|
|
|
663
663
|
}
|
|
664
664
|
shouldLog(e) {
|
|
665
665
|
const t = this.getEffectiveLevel();
|
|
666
|
-
return
|
|
666
|
+
return q[e] <= q[t];
|
|
667
667
|
}
|
|
668
668
|
formatMessage(e) {
|
|
669
669
|
if (this.config.format === "json") {
|
|
670
|
-
const
|
|
670
|
+
const o = {
|
|
671
671
|
timestamp: new Date(e.timestamp).toISOString(),
|
|
672
672
|
level: e.level,
|
|
673
673
|
message: e.message
|
|
674
674
|
};
|
|
675
|
-
return e.prefix && (
|
|
675
|
+
return e.prefix && (o.module = e.prefix), e.context && (o.context = e.context), e.error && (o.error = {
|
|
676
676
|
name: e.error.name,
|
|
677
677
|
message: e.error.message,
|
|
678
678
|
stack: e.error.stack
|
|
679
|
-
}), JSON.stringify(
|
|
679
|
+
}), JSON.stringify(o);
|
|
680
680
|
}
|
|
681
681
|
const t = new Date(e.timestamp).toISOString().substring(11, 23), r = e.prefix ? `[${e.prefix}]` : "", s = this.getLevelIcon(e.level), i = e.context ? ` ${JSON.stringify(e.context)}` : "";
|
|
682
682
|
return `${t} ${s} ${r} ${e.message}${i}`.trim();
|
|
@@ -710,20 +710,20 @@ class p {
|
|
|
710
710
|
this.config.onLog(i);
|
|
711
711
|
return;
|
|
712
712
|
}
|
|
713
|
-
const
|
|
713
|
+
const o = this.formatMessage(i);
|
|
714
714
|
if (typeof console < "u")
|
|
715
715
|
switch (e) {
|
|
716
716
|
case "error":
|
|
717
|
-
s ? console.error(
|
|
717
|
+
s ? console.error(o, s) : console.error(o);
|
|
718
718
|
break;
|
|
719
719
|
case "warn":
|
|
720
|
-
console.warn(
|
|
720
|
+
console.warn(o);
|
|
721
721
|
break;
|
|
722
722
|
case "debug":
|
|
723
|
-
console.debug ? console.debug(
|
|
723
|
+
console.debug ? console.debug(o) : console.log(o);
|
|
724
724
|
break;
|
|
725
725
|
default:
|
|
726
|
-
console.log(
|
|
726
|
+
console.log(o);
|
|
727
727
|
}
|
|
728
728
|
}
|
|
729
729
|
/**
|
|
@@ -800,10 +800,11 @@ class p {
|
|
|
800
800
|
}
|
|
801
801
|
}
|
|
802
802
|
const Y = new p();
|
|
803
|
-
class
|
|
803
|
+
class Ge {
|
|
804
804
|
constructor(e) {
|
|
805
805
|
this.enabled = e, this.cache = /* @__PURE__ */ new Map(), this.cacheDependencies = /* @__PURE__ */ new Map();
|
|
806
806
|
}
|
|
807
|
+
enabled;
|
|
807
808
|
cache;
|
|
808
809
|
// Track which models and attributes each cache entry depends on
|
|
809
810
|
cacheDependencies;
|
|
@@ -838,12 +839,12 @@ class Se {
|
|
|
838
839
|
const t = [];
|
|
839
840
|
for (const [r, s] of this.cacheDependencies) {
|
|
840
841
|
let i = !1;
|
|
841
|
-
for (const [
|
|
842
|
-
if (s.models.has(
|
|
843
|
-
if (s.modelAttributes.has(
|
|
844
|
-
const
|
|
845
|
-
for (const
|
|
846
|
-
if (
|
|
842
|
+
for (const [o, a] of e) {
|
|
843
|
+
if (s.models.has(o))
|
|
844
|
+
if (s.modelAttributes.has(o)) {
|
|
845
|
+
const c = s.modelAttributes.get(o);
|
|
846
|
+
for (const u of a)
|
|
847
|
+
if (c.has(u)) {
|
|
847
848
|
i = !0;
|
|
848
849
|
break;
|
|
849
850
|
}
|
|
@@ -864,8 +865,8 @@ class Se {
|
|
|
864
865
|
if (!this.enabled) return;
|
|
865
866
|
const t = new Set(e), r = [];
|
|
866
867
|
for (const [s, i] of this.cacheDependencies)
|
|
867
|
-
for (const
|
|
868
|
-
if (i.models.has(
|
|
868
|
+
for (const o of t)
|
|
869
|
+
if (i.models.has(o)) {
|
|
869
870
|
r.push(s);
|
|
870
871
|
break;
|
|
871
872
|
}
|
|
@@ -915,13 +916,13 @@ class Se {
|
|
|
915
916
|
}
|
|
916
917
|
generateContext(e) {
|
|
917
918
|
try {
|
|
918
|
-
return
|
|
919
|
+
return v(e);
|
|
919
920
|
} catch (t) {
|
|
920
921
|
return this.log.error("Error in cache generateContext", t), e;
|
|
921
922
|
}
|
|
922
923
|
}
|
|
923
924
|
getCacheName(e, t) {
|
|
924
|
-
const r =
|
|
925
|
+
const r = K(t);
|
|
925
926
|
return e + "_" + r;
|
|
926
927
|
}
|
|
927
928
|
/**
|
|
@@ -939,42 +940,42 @@ class Se {
|
|
|
939
940
|
};
|
|
940
941
|
}
|
|
941
942
|
}
|
|
942
|
-
const
|
|
943
|
+
const ze = (n, e = "") => `${n}#${e}`, _e = (n) => `${n.gt}_${n.gte}_${n.lt}_${n.lte}_${n.eq}_${n.ne}`, Be = (n) => `${n.gt}_${n.gte}_${n.lt}_${n.lte}_${n.eq}_${n.ne}`, je = (n, e) => {
|
|
943
944
|
const t = typeof e == "function" ? e : (r) => r[e];
|
|
944
945
|
return [
|
|
945
|
-
...
|
|
946
|
+
...n.reduce((r, s) => {
|
|
946
947
|
const i = s == null ? s : t(s);
|
|
947
948
|
return r.has(i) || r.set(i, s), r;
|
|
948
949
|
}, /* @__PURE__ */ new Map()).values()
|
|
949
950
|
];
|
|
950
|
-
},
|
|
951
|
+
}, Pe = (n, e) => n.reduce(function(t, r) {
|
|
951
952
|
const s = typeof e == "function" ? e(r) : r[e];
|
|
952
953
|
return Object.prototype.hasOwnProperty.call(t, s) || (t[s] = []), t[s].push(r), t;
|
|
953
954
|
}, {});
|
|
954
|
-
function
|
|
955
|
+
function ee(n = 10) {
|
|
955
956
|
let e = "";
|
|
956
957
|
const t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
957
|
-
for (let r = 0; r <
|
|
958
|
+
for (let r = 0; r < n; r++) e += t.charAt(Math.floor(Math.random() * t.length));
|
|
958
959
|
return e;
|
|
959
960
|
}
|
|
960
|
-
const
|
|
961
|
+
const Le = (n) => n.replace(/\/+$/, ""), te = (n) => typeof n != "string" ? "" : n.replace(/[[\]{}()*+?.,\\^$|#]/g, "\\$&"), We = (n) => typeof n != "string" ? "" : n.replace(/\\([[\]{}()*+?.,\\^$|#])/g, "$1"), He = (n, e) => {
|
|
961
962
|
try {
|
|
962
|
-
return
|
|
963
|
+
return re(n, e) >= 0;
|
|
963
964
|
} catch {
|
|
964
965
|
return !1;
|
|
965
966
|
}
|
|
966
|
-
},
|
|
967
|
-
if (
|
|
968
|
-
throw new Error(`Invalid version format: v1="${
|
|
969
|
-
const t =
|
|
967
|
+
}, re = (n, e) => {
|
|
968
|
+
if (!F(n) || !F(e))
|
|
969
|
+
throw new Error(`Invalid version format: v1="${n}", v2="${e}". Expected format: "x.y.z"`);
|
|
970
|
+
const t = n.split(".").map(Number), r = e.split(".").map(Number);
|
|
970
971
|
for (let s = 0; s < 3; s++) {
|
|
971
|
-
const i = t[s] || 0,
|
|
972
|
-
if (i >
|
|
973
|
-
if (i <
|
|
972
|
+
const i = t[s] || 0, o = r[s] || 0;
|
|
973
|
+
if (i > o) return 1;
|
|
974
|
+
if (i < o) return -1;
|
|
974
975
|
}
|
|
975
976
|
return 0;
|
|
976
|
-
},
|
|
977
|
-
class
|
|
977
|
+
}, F = (n) => /^\d+(\.\d+){0,2}$/.test(n);
|
|
978
|
+
class Ue {
|
|
978
979
|
key;
|
|
979
980
|
parentCd;
|
|
980
981
|
dcuplInitOptions;
|
|
@@ -1000,7 +1001,7 @@ class Oe {
|
|
|
1000
1001
|
this.off && this.off();
|
|
1001
1002
|
}
|
|
1002
1003
|
trigger(e) {
|
|
1003
|
-
e.originCdRefKey || (e.originCdRefKey = this.key), e.key || (this.increaseCounter(), e.key = this.getCounter()), e.end || (e.end =
|
|
1004
|
+
e.originCdRefKey || (e.originCdRefKey = this.key), e.key || (this.increaseCounter(), e.key = this.getCounter()), e.end || (e.end = b.now(), e.duration = e.start - e.end), this.updateListener.forEach((t) => {
|
|
1004
1005
|
t(e);
|
|
1005
1006
|
});
|
|
1006
1007
|
}
|
|
@@ -1010,17 +1011,17 @@ class Oe {
|
|
|
1010
1011
|
};
|
|
1011
1012
|
}
|
|
1012
1013
|
}
|
|
1013
|
-
const
|
|
1014
|
+
const B = (n, e) => e ? typeof structuredClone < "u" ? structuredClone(n) : v(n) : n, R = (n, e, t, r, s, i) => {
|
|
1014
1015
|
try {
|
|
1015
|
-
const
|
|
1016
|
-
if (t.scope === "list" && (t.listKey =
|
|
1016
|
+
const o = !!e.dcuplInitOptions.performance?.clone?.enabled && !!t.cloneResult, a = B(i, o);
|
|
1017
|
+
if (t.scope === "list" && (t.listKey = n.cdRef?.key || n.key, t.modelKey = n.model?.key || n.modelKey), t.type === "list_created" && t.args[0].listKey.startsWith("__global_list__") || t.listKey?.startsWith("__global_list__"))
|
|
1017
1018
|
return a;
|
|
1018
|
-
const
|
|
1019
|
-
t.duration = f, t.start = r, t.end =
|
|
1020
|
-
const
|
|
1019
|
+
const c = b.now(), u = c - r, f = Math.round(u * 1e3) / 1e3;
|
|
1020
|
+
t.duration = f, t.start = r, t.end = c;
|
|
1021
|
+
const l = {
|
|
1021
1022
|
duration: t.duration
|
|
1022
1023
|
};
|
|
1023
|
-
return t.modelKey && (
|
|
1024
|
+
return t.modelKey && (l.model = t.modelKey), t.connectMessageResult && (t.result = a), t.args && (l.args = t.args), e?.trigger(t), e.analyticsController.mark({
|
|
1024
1025
|
name: `${t.type}:end`,
|
|
1025
1026
|
context: s
|
|
1026
1027
|
}), e.analyticsController.measure({
|
|
@@ -1028,59 +1029,59 @@ const j = (o, e) => e ? typeof structuredClone < "u" ? structuredClone(o) : y(o)
|
|
|
1028
1029
|
start: `${t.type}:start`,
|
|
1029
1030
|
end: `${t.type}:end`,
|
|
1030
1031
|
context: s,
|
|
1031
|
-
detail:
|
|
1032
|
+
detail: l
|
|
1032
1033
|
}), a;
|
|
1033
1034
|
} catch {
|
|
1034
1035
|
return i;
|
|
1035
1036
|
}
|
|
1036
|
-
},
|
|
1037
|
+
}, Ve = (n) => (t, r, s) => {
|
|
1037
1038
|
const i = s.value;
|
|
1038
|
-
return s.value = function(...
|
|
1039
|
-
const a =
|
|
1040
|
-
|
|
1041
|
-
const f =
|
|
1042
|
-
|
|
1043
|
-
name: `${
|
|
1039
|
+
return s.value = function(...o) {
|
|
1040
|
+
const a = b.now(), c = this.cdRef, u = B(n, !0);
|
|
1041
|
+
u.key || (c.increaseCounter(), u.key = c.getCounter());
|
|
1042
|
+
const f = ee();
|
|
1043
|
+
c.analyticsController.mark({
|
|
1044
|
+
name: `${u.type}:start`,
|
|
1044
1045
|
context: f
|
|
1045
1046
|
});
|
|
1046
|
-
const
|
|
1047
|
-
!
|
|
1048
|
-
const
|
|
1049
|
-
return
|
|
1047
|
+
const l = this.model?.key;
|
|
1048
|
+
!u.originCdRefKey && c.key && (u.originCdRefKey = c.key), l && (u.modelKey = l);
|
|
1049
|
+
const d = i.apply(this, o);
|
|
1050
|
+
return u.method = r, u.args = o, d && typeof d == "object" && "then" in d ? d.then((h) => R(this, c, u, a, f, h)) : R(this, c, u, a, f, d);
|
|
1050
1051
|
}, s;
|
|
1051
1052
|
};
|
|
1052
|
-
function
|
|
1053
|
+
function Je(n, e, t, r) {
|
|
1053
1054
|
t.max || (t.max = 20);
|
|
1054
1055
|
const s = [], i = t.transform ? r.transformValue(t.value, t.transform) : t.value;
|
|
1055
|
-
for (const [
|
|
1056
|
-
const
|
|
1057
|
-
if (!(t.excludeUndefineds && typeof
|
|
1058
|
-
if (
|
|
1056
|
+
for (const [o, a] of e.entries()) {
|
|
1057
|
+
const c = Array.from(a).some((f) => n.has(f)), u = t.transform ? r.transformValue(o, t.transform) : o;
|
|
1058
|
+
if (!(t.excludeUndefineds && typeof o > "u") && !(t.excludeNulls && o === null)) {
|
|
1059
|
+
if (c && (i === "" || i === "//")) {
|
|
1059
1060
|
const f = {
|
|
1060
|
-
value:
|
|
1061
|
+
value: o,
|
|
1061
1062
|
keys: t.calculateResultKeys ? Array.from(a) : []
|
|
1062
1063
|
};
|
|
1063
1064
|
s.push(f);
|
|
1064
|
-
} else if (
|
|
1065
|
-
if (r.queryFind(
|
|
1065
|
+
} else if (c && typeof i == "string" && i.startsWith("/") && i.endsWith("/")) {
|
|
1066
|
+
if (r.queryFind(u, i, "some")) {
|
|
1066
1067
|
const f = {
|
|
1067
|
-
value:
|
|
1068
|
+
value: o,
|
|
1068
1069
|
keys: t.calculateResultKeys ? Array.from(a) : []
|
|
1069
1070
|
};
|
|
1070
1071
|
s.push(f);
|
|
1071
1072
|
}
|
|
1072
|
-
} else if (
|
|
1073
|
-
const f = String(
|
|
1074
|
-
if (f.toLowerCase().startsWith(
|
|
1075
|
-
const
|
|
1076
|
-
value:
|
|
1073
|
+
} else if (c && typeof i == "string") {
|
|
1074
|
+
const f = String(u ?? ""), l = i;
|
|
1075
|
+
if (f.toLowerCase().startsWith(l.toLowerCase())) {
|
|
1076
|
+
const d = {
|
|
1077
|
+
value: o,
|
|
1077
1078
|
keys: t.calculateResultKeys ? Array.from(a) : []
|
|
1078
1079
|
};
|
|
1079
|
-
s.push(
|
|
1080
|
+
s.push(d);
|
|
1080
1081
|
}
|
|
1081
|
-
} else if (
|
|
1082
|
+
} else if (c && r.queryFind(u, i, "some")) {
|
|
1082
1083
|
const f = {
|
|
1083
|
-
value:
|
|
1084
|
+
value: o,
|
|
1084
1085
|
keys: t.calculateResultKeys ? Array.from(a) : []
|
|
1085
1086
|
};
|
|
1086
1087
|
s.push(f);
|
|
@@ -1091,13 +1092,13 @@ function Fe(o, e, t, r) {
|
|
|
1091
1092
|
}
|
|
1092
1093
|
return s;
|
|
1093
1094
|
}
|
|
1094
|
-
function
|
|
1095
|
-
return
|
|
1095
|
+
function se(n) {
|
|
1096
|
+
return n instanceof Date;
|
|
1096
1097
|
}
|
|
1097
|
-
function
|
|
1098
|
-
return
|
|
1098
|
+
function ne(n) {
|
|
1099
|
+
return n instanceof Date && !isNaN(n.getTime());
|
|
1099
1100
|
}
|
|
1100
|
-
const
|
|
1101
|
+
const ie = {
|
|
1101
1102
|
yyyy: { type: "year", pattern: "yyyy", regex: "(\\d{4})" },
|
|
1102
1103
|
yy: { type: "year", pattern: "yy", regex: "(\\d{2})" },
|
|
1103
1104
|
MM: { type: "month", pattern: "MM", regex: "(\\d{2})" },
|
|
@@ -1112,28 +1113,28 @@ const ne = {
|
|
|
1112
1113
|
s: { type: "second", pattern: "s", regex: "(\\d{1,2})" },
|
|
1113
1114
|
SSS: { type: "millisecond", pattern: "SSS", regex: "(\\d{3})" }
|
|
1114
1115
|
};
|
|
1115
|
-
function
|
|
1116
|
+
function oe(n) {
|
|
1116
1117
|
let e = "^";
|
|
1117
1118
|
const t = [];
|
|
1118
|
-
let r =
|
|
1119
|
-
const s = Object.entries(
|
|
1119
|
+
let r = n;
|
|
1120
|
+
const s = Object.entries(ie).sort((i, o) => o[0].length - i[0].length);
|
|
1120
1121
|
for (; r.length > 0; ) {
|
|
1121
1122
|
let i = !1;
|
|
1122
|
-
for (const [
|
|
1123
|
-
if (r.startsWith(
|
|
1124
|
-
e += a.regex, t.push({ type: a.type, pattern:
|
|
1123
|
+
for (const [o, a] of s)
|
|
1124
|
+
if (r.startsWith(o)) {
|
|
1125
|
+
e += a.regex, t.push({ type: a.type, pattern: o }), r = r.slice(o.length), i = !0;
|
|
1125
1126
|
break;
|
|
1126
1127
|
}
|
|
1127
1128
|
if (!i) {
|
|
1128
|
-
const
|
|
1129
|
-
if (!
|
|
1129
|
+
const o = r[0];
|
|
1130
|
+
if (!o)
|
|
1130
1131
|
break;
|
|
1131
|
-
e +=
|
|
1132
|
+
e += o.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), r = r.slice(1);
|
|
1132
1133
|
}
|
|
1133
1134
|
}
|
|
1134
1135
|
return e += "$", { regex: new RegExp(e), tokenOrder: t };
|
|
1135
1136
|
}
|
|
1136
|
-
function
|
|
1137
|
+
function ae(n, e) {
|
|
1137
1138
|
const t = {
|
|
1138
1139
|
year: 1970,
|
|
1139
1140
|
month: 1,
|
|
@@ -1144,52 +1145,52 @@ function oe(o, e) {
|
|
|
1144
1145
|
millisecond: 0
|
|
1145
1146
|
};
|
|
1146
1147
|
for (let r = 0; r < e.length; r++) {
|
|
1147
|
-
const s =
|
|
1148
|
+
const s = n[r + 1];
|
|
1148
1149
|
if (!s)
|
|
1149
1150
|
continue;
|
|
1150
|
-
const i = parseInt(s, 10),
|
|
1151
|
-
|
|
1151
|
+
const i = parseInt(s, 10), o = e[r];
|
|
1152
|
+
o && (o.type === "year" && o.pattern === "yy" ? t.year = 2e3 + i : t[o.type] = i);
|
|
1152
1153
|
}
|
|
1153
1154
|
return t;
|
|
1154
1155
|
}
|
|
1155
|
-
function
|
|
1156
|
-
if (
|
|
1156
|
+
function ce(n) {
|
|
1157
|
+
if (n.month < 1 || n.month > 12)
|
|
1157
1158
|
return /* @__PURE__ */ new Date(NaN);
|
|
1158
|
-
if (
|
|
1159
|
+
if (n.day < 1 || n.day > 31)
|
|
1159
1160
|
return /* @__PURE__ */ new Date(NaN);
|
|
1160
|
-
if (
|
|
1161
|
+
if (n.hour < 0 || n.hour > 23)
|
|
1161
1162
|
return /* @__PURE__ */ new Date(NaN);
|
|
1162
|
-
if (
|
|
1163
|
+
if (n.minute < 0 || n.minute > 59)
|
|
1163
1164
|
return /* @__PURE__ */ new Date(NaN);
|
|
1164
|
-
if (
|
|
1165
|
+
if (n.second < 0 || n.second > 59)
|
|
1165
1166
|
return /* @__PURE__ */ new Date(NaN);
|
|
1166
|
-
if (
|
|
1167
|
+
if (n.millisecond < 0 || n.millisecond > 999)
|
|
1167
1168
|
return /* @__PURE__ */ new Date(NaN);
|
|
1168
1169
|
const e = new Date(
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1170
|
+
n.year,
|
|
1171
|
+
n.month - 1,
|
|
1172
|
+
n.day,
|
|
1173
|
+
n.hour,
|
|
1174
|
+
n.minute,
|
|
1175
|
+
n.second,
|
|
1176
|
+
n.millisecond
|
|
1176
1177
|
);
|
|
1177
|
-
return
|
|
1178
|
+
return ne(e) ? e.getFullYear() !== n.year || e.getMonth() !== n.month - 1 || e.getDate() !== n.day ? /* @__PURE__ */ new Date(NaN) : e : /* @__PURE__ */ new Date(NaN);
|
|
1178
1179
|
}
|
|
1179
|
-
function
|
|
1180
|
-
if (
|
|
1181
|
-
const a = Number(
|
|
1180
|
+
function Ze(n, e, t) {
|
|
1181
|
+
if (n = n.trim(), e === "t") {
|
|
1182
|
+
const a = Number(n);
|
|
1182
1183
|
return isNaN(a) ? /* @__PURE__ */ new Date(NaN) : new Date(a * 1e3);
|
|
1183
1184
|
}
|
|
1184
1185
|
if (e === "T") {
|
|
1185
|
-
const a = Number(
|
|
1186
|
+
const a = Number(n);
|
|
1186
1187
|
return isNaN(a) ? /* @__PURE__ */ new Date(NaN) : new Date(a);
|
|
1187
1188
|
}
|
|
1188
|
-
const { regex: r, tokenOrder: s } =
|
|
1189
|
+
const { regex: r, tokenOrder: s } = oe(e), i = n.match(r);
|
|
1189
1190
|
if (!i)
|
|
1190
1191
|
return /* @__PURE__ */ new Date(NaN);
|
|
1191
|
-
const
|
|
1192
|
-
return
|
|
1192
|
+
const o = ae(i, s);
|
|
1193
|
+
return ce(o);
|
|
1193
1194
|
}
|
|
1194
1195
|
class ue {
|
|
1195
1196
|
cache;
|
|
@@ -1234,7 +1235,7 @@ class ue {
|
|
|
1234
1235
|
};
|
|
1235
1236
|
}
|
|
1236
1237
|
}
|
|
1237
|
-
class
|
|
1238
|
+
class fe {
|
|
1238
1239
|
graph;
|
|
1239
1240
|
constructor() {
|
|
1240
1241
|
this.graph = /* @__PURE__ */ new Map();
|
|
@@ -1246,9 +1247,9 @@ class ce {
|
|
|
1246
1247
|
if (e.length === 0) return !1;
|
|
1247
1248
|
const t = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set(), s = (i) => {
|
|
1248
1249
|
t.add(i), r.add(i);
|
|
1249
|
-
const
|
|
1250
|
-
if (
|
|
1251
|
-
for (const a of
|
|
1250
|
+
const o = this.graph.get(i);
|
|
1251
|
+
if (o) {
|
|
1252
|
+
for (const a of o)
|
|
1252
1253
|
if (t.has(a)) {
|
|
1253
1254
|
if (r.has(a))
|
|
1254
1255
|
return !0;
|
|
@@ -1258,8 +1259,8 @@ class ce {
|
|
|
1258
1259
|
return r.delete(i), !1;
|
|
1259
1260
|
};
|
|
1260
1261
|
for (let i = 0; i < e.length - 1; i++) {
|
|
1261
|
-
const
|
|
1262
|
-
|
|
1262
|
+
const o = e[i], a = e[i + 1];
|
|
1263
|
+
o && a && this.addDependency(o, a);
|
|
1263
1264
|
}
|
|
1264
1265
|
for (const i of e)
|
|
1265
1266
|
if (!t.has(i) && s(i))
|
|
@@ -1270,13 +1271,13 @@ class ce {
|
|
|
1270
1271
|
this.graph.clear();
|
|
1271
1272
|
}
|
|
1272
1273
|
}
|
|
1273
|
-
class
|
|
1274
|
+
class le {
|
|
1274
1275
|
parseCache;
|
|
1275
1276
|
circularRefDetector;
|
|
1276
1277
|
cacheHits = 0;
|
|
1277
1278
|
cacheMisses = 0;
|
|
1278
1279
|
constructor(e = 1e3) {
|
|
1279
|
-
this.parseCache = new ue(e), this.circularRefDetector = new
|
|
1280
|
+
this.parseCache = new ue(e), this.circularRefDetector = new fe();
|
|
1280
1281
|
}
|
|
1281
1282
|
/**
|
|
1282
1283
|
* Parse an attribute string into its components
|
|
@@ -1301,18 +1302,21 @@ class fe {
|
|
|
1301
1302
|
return this.cacheHits++, this.parseCache.get(e);
|
|
1302
1303
|
this.cacheMisses++;
|
|
1303
1304
|
let t, r;
|
|
1304
|
-
const s = e.includes("."), i = e.includes("["),
|
|
1305
|
-
if (
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1305
|
+
const s = e.includes("."), i = e.includes("["), o = s || i;
|
|
1306
|
+
if (o) {
|
|
1307
|
+
r = e.split(/[.[]/)[0];
|
|
1308
|
+
const c = e.indexOf("."), u = e.indexOf("[");
|
|
1309
|
+
if (i && (c === -1 || u < c)) {
|
|
1310
|
+
const l = e.indexOf("]");
|
|
1311
|
+
if (l > -1) {
|
|
1312
|
+
const d = e.indexOf(".", l + 1);
|
|
1313
|
+
d > -1 ? t = e.substring(d + 1) : t = void 0;
|
|
1314
|
+
} else s && (t = e.substring(c + 1));
|
|
1315
|
+
} else s && (t = e.substring(c + 1));
|
|
1316
|
+
}
|
|
1313
1317
|
const a = {
|
|
1314
1318
|
attribute: e,
|
|
1315
|
-
isDeepQuery:
|
|
1319
|
+
isDeepQuery: o
|
|
1316
1320
|
};
|
|
1317
1321
|
return r && (a.reference = r), typeof t < "u" && t !== "" && (a.referenceAttribute = t), this.parseCache.set(e, a), a;
|
|
1318
1322
|
}
|
|
@@ -1367,16 +1371,16 @@ class fe {
|
|
|
1367
1371
|
(e.startsWith(".") || e.endsWith(".")) && r.push(`Invalid path: Leading or trailing dots are not allowed: ${e}`), e.includes("..") && r.push(`Invalid path: Consecutive dots are not allowed: ${e}`);
|
|
1368
1372
|
const s = (e.match(/\[/g) || []).length, i = (e.match(/]/g) || []).length;
|
|
1369
1373
|
s !== i && r.push(`Invalid bracket notation: Mismatched brackets in ${e}`), e.includes("[]") && r.push(`Invalid bracket notation: Empty brackets not allowed: ${e}`);
|
|
1370
|
-
const
|
|
1374
|
+
const o = /\[([^\]]+)\]/g;
|
|
1371
1375
|
let a;
|
|
1372
|
-
for (; (a =
|
|
1376
|
+
for (; (a = o.exec(e)) !== null; ) {
|
|
1373
1377
|
const f = a[1];
|
|
1374
1378
|
f && f !== "*" && !/^\d+$/.test(f) && r.push(`Invalid bracket content: Must be a number or '*', got '${f}' in ${e}`);
|
|
1375
1379
|
}
|
|
1376
|
-
const
|
|
1377
|
-
|
|
1378
|
-
const
|
|
1379
|
-
return
|
|
1380
|
+
const c = (e.match(/\./g) || []).length + 1;
|
|
1381
|
+
c > t && r.push(`Path too deep: Maximum depth is ${t}, got ${c} in ${e}`);
|
|
1382
|
+
const u = e.match(/[^a-zA-Z0-9._[\]*-]/g);
|
|
1383
|
+
return u && r.push(`Invalid characters in path: ${u.join(", ")} in ${e}`), {
|
|
1380
1384
|
valid: r.length === 0,
|
|
1381
1385
|
errors: r.length > 0 ? r : void 0
|
|
1382
1386
|
};
|
|
@@ -1435,49 +1439,103 @@ class fe {
|
|
|
1435
1439
|
return this.getPathSegments(e).length;
|
|
1436
1440
|
}
|
|
1437
1441
|
}
|
|
1438
|
-
const
|
|
1439
|
-
function
|
|
1442
|
+
const y = new le();
|
|
1443
|
+
function x(n, e) {
|
|
1444
|
+
if (e.includes("[*]")) {
|
|
1445
|
+
const i = e.indexOf("[*]"), o = e.substring(0, i), a = e.substring(i + 3), c = o ? I(n, o) : n;
|
|
1446
|
+
if (!Array.isArray(c)) return [];
|
|
1447
|
+
const u = [];
|
|
1448
|
+
for (const f of c)
|
|
1449
|
+
!a || a === "" ? f !== void 0 && u.push(f) : a.startsWith(".") && u.push(...x(f, a.slice(1)));
|
|
1450
|
+
return u;
|
|
1451
|
+
}
|
|
1452
|
+
const t = e.split(".");
|
|
1453
|
+
let r = [n];
|
|
1454
|
+
for (const i of t) {
|
|
1455
|
+
const o = [];
|
|
1456
|
+
for (const a of r)
|
|
1457
|
+
if (a != null)
|
|
1458
|
+
if (Array.isArray(a))
|
|
1459
|
+
for (const c of a) {
|
|
1460
|
+
if (c == null) continue;
|
|
1461
|
+
const u = c[i];
|
|
1462
|
+
u !== void 0 && o.push(u);
|
|
1463
|
+
}
|
|
1464
|
+
else {
|
|
1465
|
+
const c = a[i];
|
|
1466
|
+
c !== void 0 && o.push(c);
|
|
1467
|
+
}
|
|
1468
|
+
if (r = o, r.length === 0) return [];
|
|
1469
|
+
}
|
|
1470
|
+
const s = [];
|
|
1471
|
+
for (const i of r)
|
|
1472
|
+
if (Array.isArray(i))
|
|
1473
|
+
for (const o of i) o !== void 0 && s.push(o);
|
|
1474
|
+
else i !== void 0 && s.push(i);
|
|
1475
|
+
return s;
|
|
1476
|
+
}
|
|
1477
|
+
function Q(n) {
|
|
1440
1478
|
let e = 0;
|
|
1441
|
-
for (let t of
|
|
1479
|
+
for (let t of n) {
|
|
1442
1480
|
const r = t.toString().split(".")[1];
|
|
1443
1481
|
r && (e = Math.max(e, r.length));
|
|
1444
1482
|
}
|
|
1445
1483
|
return Math.pow(10, e);
|
|
1446
1484
|
}
|
|
1447
|
-
function
|
|
1448
|
-
return (
|
|
1485
|
+
function T(n, e, t) {
|
|
1486
|
+
return (n * t + e * t) / t;
|
|
1449
1487
|
}
|
|
1450
|
-
function de(
|
|
1451
|
-
return
|
|
1488
|
+
function de(n, e, t) {
|
|
1489
|
+
return n * t / (e * t);
|
|
1452
1490
|
}
|
|
1453
|
-
const
|
|
1491
|
+
const C = (n, e, t, r) => {
|
|
1454
1492
|
if (!r)
|
|
1455
1493
|
throw new Error("Attribute not found");
|
|
1456
1494
|
const s = {
|
|
1457
1495
|
attribute: r,
|
|
1458
|
-
types:
|
|
1496
|
+
types: n.types
|
|
1459
1497
|
};
|
|
1460
1498
|
let i;
|
|
1461
|
-
(s.types.includes("sum") || s.types.includes("avg")
|
|
1462
|
-
let
|
|
1463
|
-
return (s.types.includes("min") || s.types.includes("max")) && (
|
|
1464
|
-
a === "sum" ? s.sum = i?.sum : a === "avg" ? s.avg = i?.average : a === "count" ? s.count =
|
|
1499
|
+
(s.types.includes("sum") || s.types.includes("avg")) && (i = ye(r, e));
|
|
1500
|
+
let o;
|
|
1501
|
+
return (s.types.includes("min") || s.types.includes("max")) && (o = pe(r, e)), n.types.forEach((a) => {
|
|
1502
|
+
a === "sum" ? s.sum = i?.sum : a === "avg" ? s.avg = i?.average : a === "count" ? s.count = he(r, e) : a === "min" ? s.min = o && o[0] : a === "max" ? s.max = o && o[1] : a === "distinct" ? s.distinct = me(n, e, t) : a === "group" && (s.group = ge(n, e));
|
|
1465
1503
|
}), s;
|
|
1466
|
-
},
|
|
1504
|
+
}, he = (n, e) => {
|
|
1505
|
+
const r = y.parse(n).isDeepQuery;
|
|
1506
|
+
let s = 0;
|
|
1507
|
+
for (const i of e.values())
|
|
1508
|
+
if (i)
|
|
1509
|
+
if (r)
|
|
1510
|
+
s += x(i, n).filter((o) => o != null).length;
|
|
1511
|
+
else {
|
|
1512
|
+
const o = i[n];
|
|
1513
|
+
if (o == null) continue;
|
|
1514
|
+
Array.isArray(o) ? s += o.filter((a) => a != null).length : s++;
|
|
1515
|
+
}
|
|
1516
|
+
return s;
|
|
1517
|
+
}, pe = (n, e) => {
|
|
1467
1518
|
let t, r;
|
|
1468
|
-
const i =
|
|
1469
|
-
for (const
|
|
1470
|
-
if (
|
|
1471
|
-
|
|
1472
|
-
|
|
1519
|
+
const i = y.parse(n).isDeepQuery;
|
|
1520
|
+
for (const o of e.values()) {
|
|
1521
|
+
if (!o) continue;
|
|
1522
|
+
let a;
|
|
1523
|
+
if (i)
|
|
1524
|
+
a = x(o, n);
|
|
1525
|
+
else {
|
|
1526
|
+
const c = o[n];
|
|
1527
|
+
c === void 0 ? a = [] : Array.isArray(c) ? a = c.filter((u) => u !== void 0) : a = [c];
|
|
1473
1528
|
}
|
|
1529
|
+
for (const c of a)
|
|
1530
|
+
c == null || typeof c == "object" || ((t === void 0 || c < t) && (t = c), (r === void 0 || c > r) && (r = c));
|
|
1531
|
+
}
|
|
1474
1532
|
if (!(t === void 0 || r === void 0))
|
|
1475
1533
|
return [t, r];
|
|
1476
|
-
},
|
|
1534
|
+
}, ge = (n, e) => {
|
|
1477
1535
|
const t = [];
|
|
1478
|
-
|
|
1536
|
+
n.groupOptions?.groups?.forEach((o) => {
|
|
1479
1537
|
t.push({
|
|
1480
|
-
option:
|
|
1538
|
+
option: o,
|
|
1481
1539
|
count: 0,
|
|
1482
1540
|
keys: []
|
|
1483
1541
|
});
|
|
@@ -1486,50 +1544,61 @@ const Q = (o, e, t, r) => {
|
|
|
1486
1544
|
option: { value: ["$dcupl_not_found"] },
|
|
1487
1545
|
count: 0,
|
|
1488
1546
|
keys: []
|
|
1489
|
-
}, i =
|
|
1490
|
-
for (const
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1547
|
+
}, i = y.parse(n.attribute).isDeepQuery;
|
|
1548
|
+
for (const o of e.values()) {
|
|
1549
|
+
let a;
|
|
1550
|
+
i ? a = x(o, n.attribute) : a = [o[n.attribute]];
|
|
1551
|
+
let c = !1;
|
|
1552
|
+
for (const u of a)
|
|
1553
|
+
for (const f of t)
|
|
1554
|
+
(typeof f.option.value < "u" && f.option.value.includes(u) || typeof f.option.from < "u" && f.option.from < u && typeof f.option.to < "u" && f.option.to > u) && (f.keys.includes(o.key) || (f.count++, f.keys.push(o.key)), c = !0);
|
|
1555
|
+
!c && n?.groupOptions?.calculateNotFound && (r.count++, r.keys.push(o.key));
|
|
1556
|
+
}
|
|
1557
|
+
return n?.groupOptions?.calculateNotFound && t.push(r), t;
|
|
1558
|
+
}, ye = (n, e) => {
|
|
1497
1559
|
let t = 0, r = 0;
|
|
1498
|
-
const i =
|
|
1499
|
-
for (const
|
|
1500
|
-
if (!
|
|
1501
|
-
|
|
1502
|
-
if (
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1560
|
+
const i = y.parse(n).isDeepQuery;
|
|
1561
|
+
for (const a of e.values()) {
|
|
1562
|
+
if (!a) continue;
|
|
1563
|
+
let c;
|
|
1564
|
+
if (i)
|
|
1565
|
+
c = x(a, n);
|
|
1566
|
+
else {
|
|
1567
|
+
const u = a[n];
|
|
1568
|
+
u === void 0 ? c = [] : Array.isArray(u) ? c = u : c = [u];
|
|
1569
|
+
}
|
|
1570
|
+
for (const u of c)
|
|
1571
|
+
if (Array.isArray(u))
|
|
1572
|
+
for (const f of u)
|
|
1573
|
+
typeof f == "number" && (t = T(t, f, Q([t, f])), r++);
|
|
1574
|
+
else typeof u == "number" && (t = T(t, u, Q([t, u])), r++);
|
|
1575
|
+
}
|
|
1576
|
+
return r === 0 ? void 0 : {
|
|
1577
|
+
average: de(t, r, Q([t, r])),
|
|
1578
|
+
count: r,
|
|
1510
1579
|
sum: t
|
|
1511
1580
|
};
|
|
1512
|
-
},
|
|
1581
|
+
}, me = (n, e, t) => {
|
|
1513
1582
|
const r = [];
|
|
1514
1583
|
for (const [s, i] of t)
|
|
1515
|
-
if (!(
|
|
1516
|
-
const
|
|
1584
|
+
if (!(n.excludeUndefineds && typeof s > "u") && Array.from(i).find((o) => e.has(o))) {
|
|
1585
|
+
const o = {
|
|
1517
1586
|
value: s,
|
|
1518
1587
|
count: i.size
|
|
1519
1588
|
};
|
|
1520
|
-
if (
|
|
1589
|
+
if (n.distinctOptions?.skipKeys || (o.keys = Array.from(i)), r.push(o), n.distinctOptions?.limit && r.length >= n.distinctOptions.limit)
|
|
1521
1590
|
break;
|
|
1522
1591
|
}
|
|
1523
1592
|
return r;
|
|
1524
1593
|
};
|
|
1525
|
-
class
|
|
1594
|
+
class A extends Error {
|
|
1526
1595
|
query;
|
|
1527
1596
|
constructor(e, t) {
|
|
1528
1597
|
const r = `Query Error: ${e} in ${JSON.stringify(t, null, 2)}`;
|
|
1529
1598
|
super(r), this.query = t, this.name = "DcuplQueryError";
|
|
1530
1599
|
}
|
|
1531
1600
|
}
|
|
1532
|
-
class
|
|
1601
|
+
class j {
|
|
1533
1602
|
_defaultQueryOptions = {
|
|
1534
1603
|
modelKey: "",
|
|
1535
1604
|
groupKey: "root",
|
|
@@ -1537,10 +1606,10 @@ class P {
|
|
|
1537
1606
|
queries: []
|
|
1538
1607
|
};
|
|
1539
1608
|
_initOptions;
|
|
1540
|
-
currentQuery =
|
|
1609
|
+
currentQuery = v(this._defaultQueryOptions);
|
|
1541
1610
|
deepQueryService;
|
|
1542
1611
|
constructor(e) {
|
|
1543
|
-
this.deepQueryService = e ||
|
|
1612
|
+
this.deepQueryService = e || y;
|
|
1544
1613
|
}
|
|
1545
1614
|
/**
|
|
1546
1615
|
* Initialize the query builder.
|
|
@@ -1566,7 +1635,7 @@ class P {
|
|
|
1566
1635
|
* });
|
|
1567
1636
|
*/
|
|
1568
1637
|
init(e) {
|
|
1569
|
-
this._initOptions =
|
|
1638
|
+
this._initOptions = v(e), this.currentQuery = v(this._defaultQueryOptions), this.currentQuery.modelKey = e.modelKey, "queries" in e && Array.isArray(e.queries) && (e.groupType && (this.currentQuery.groupType = e.groupType), e.queries && (this.currentQuery.queries = v(e.queries)), e.count !== void 0 && (this.currentQuery.count = e.count), e.start !== void 0 && (this.currentQuery.start = e.start), e.sort && (this.currentQuery.sort = e.sort), e.projection && (this.currentQuery.projection = e.projection));
|
|
1570
1639
|
}
|
|
1571
1640
|
reset() {
|
|
1572
1641
|
return this.init(this._initOptions), this.getQuery();
|
|
@@ -1575,7 +1644,7 @@ class P {
|
|
|
1575
1644
|
return "attribute" in e;
|
|
1576
1645
|
}
|
|
1577
1646
|
isQueryGroup(e) {
|
|
1578
|
-
return "groupKey" in e;
|
|
1647
|
+
return "queries" in e || "groupKey" in e;
|
|
1579
1648
|
}
|
|
1580
1649
|
isRootQueryGroup(e) {
|
|
1581
1650
|
return this.isQueryGroup(e) && e.groupKey === "root";
|
|
@@ -1584,7 +1653,7 @@ class P {
|
|
|
1584
1653
|
return this.currentQuery.queries.find((t) => this.isQueryGroup(t) && t.groupKey === e);
|
|
1585
1654
|
}
|
|
1586
1655
|
getQuery() {
|
|
1587
|
-
return
|
|
1656
|
+
return v(this.currentQuery);
|
|
1588
1657
|
}
|
|
1589
1658
|
hasQueryGroup(e) {
|
|
1590
1659
|
return this.currentQuery.queries.some((t) => this.isQueryGroup(t) && t.groupKey === e);
|
|
@@ -1600,7 +1669,7 @@ class P {
|
|
|
1600
1669
|
}
|
|
1601
1670
|
validate(e) {
|
|
1602
1671
|
const t = e.queries.map((s) => this.validateQuery(s));
|
|
1603
|
-
return { valid:
|
|
1672
|
+
return { valid: z(t, (s) => s.valid), errors: t.map((s) => s.errors).flat() };
|
|
1604
1673
|
}
|
|
1605
1674
|
applyOptions(e, t = "update") {
|
|
1606
1675
|
return t === "set" ? (this.currentQuery.count = e.count, this.currentQuery.start = e.start, this.currentQuery.sort = e.sort, this.currentQuery.projection = e.projection) : (typeof e?.sort < "u" && (this.currentQuery.sort = e.sort), typeof e?.count < "u" && (this.currentQuery.count = e.count), typeof e?.start < "u" && (this.currentQuery.start = e?.start), typeof e?.projection < "u" && (this.currentQuery.projection = e?.projection)), this.getQuery();
|
|
@@ -1682,7 +1751,7 @@ class P {
|
|
|
1682
1751
|
(s) => this.isQueryGroup(s) && s.groupKey === e.attribute
|
|
1683
1752
|
);
|
|
1684
1753
|
if (r > -1) {
|
|
1685
|
-
const s = t.queries[r], i =
|
|
1754
|
+
const s = t.queries[r], i = E(s.queries, e);
|
|
1686
1755
|
i > -1 && s.queries.splice(i, 1), s.queries.length === 0 && t.queries.splice(r, 1);
|
|
1687
1756
|
}
|
|
1688
1757
|
} else if (this.isQueryGroup(e)) {
|
|
@@ -1695,8 +1764,8 @@ class P {
|
|
|
1695
1764
|
else {
|
|
1696
1765
|
const s = t.queries[r];
|
|
1697
1766
|
for (const i of e.queries) {
|
|
1698
|
-
const
|
|
1699
|
-
|
|
1767
|
+
const o = E(s.queries, i);
|
|
1768
|
+
o > -1 && s.queries.splice(o, 1);
|
|
1700
1769
|
}
|
|
1701
1770
|
s.queries.length === 0 && t.queries.splice(r, 1);
|
|
1702
1771
|
}
|
|
@@ -1706,12 +1775,12 @@ class P {
|
|
|
1706
1775
|
validateQuery(e) {
|
|
1707
1776
|
const t = [];
|
|
1708
1777
|
if (this.isQuery(e))
|
|
1709
|
-
return e.attribute || t.push(new
|
|
1778
|
+
return e.attribute || t.push(new A("Missing attribute", e)), e.operator || t.push(new A("Missing operator", e)), typeof e.value > "u" && t.push(new A("Missing value", e)), e.operator === "find" && Array.isArray(e.value) && t.push(new A("find operator cannot have array value", e)), t.length > 0 ? { valid: !1, errors: t } : { valid: !0 };
|
|
1710
1779
|
if (this.isQueryGroup(e)) {
|
|
1711
|
-
const i = e.queries.map((
|
|
1780
|
+
const i = e.queries.map((o) => this.validateQuery(o)).filter((o) => !o.valid).map((o) => o.errors).flat();
|
|
1712
1781
|
return i.length > 0 ? { valid: !1, errors: i } : { valid: !0 };
|
|
1713
1782
|
}
|
|
1714
|
-
return t.push(new
|
|
1783
|
+
return t.push(new A("Invalid query definition", e)), { valid: !1, errors: t };
|
|
1715
1784
|
}
|
|
1716
1785
|
/**
|
|
1717
1786
|
* Get all attribute names used in the query.
|
|
@@ -1722,8 +1791,8 @@ class P {
|
|
|
1722
1791
|
*/
|
|
1723
1792
|
getQueryAttributes(e) {
|
|
1724
1793
|
const t = [], r = /* @__PURE__ */ new Set(), s = (i) => {
|
|
1725
|
-
for (const
|
|
1726
|
-
this.isQuery(
|
|
1794
|
+
for (const o of i)
|
|
1795
|
+
this.isQuery(o) ? o.attribute && !r.has(o.attribute) && (t.push(o.attribute), r.add(o.attribute)) : this.isQueryGroup(o) && s(o.queries);
|
|
1727
1796
|
};
|
|
1728
1797
|
return s(e?.queries || this.currentQuery.queries), t;
|
|
1729
1798
|
}
|
|
@@ -1736,13 +1805,13 @@ class P {
|
|
|
1736
1805
|
*/
|
|
1737
1806
|
extractQueryAttributes(e) {
|
|
1738
1807
|
const t = [], r = /* @__PURE__ */ new Set(), s = (i) => {
|
|
1739
|
-
for (const
|
|
1740
|
-
if (this.isQuery(
|
|
1741
|
-
if (
|
|
1742
|
-
const a = this.getQueryAttributeForString(
|
|
1743
|
-
t.push(a), r.add(
|
|
1808
|
+
for (const o of i)
|
|
1809
|
+
if (this.isQuery(o)) {
|
|
1810
|
+
if (o.attribute && !r.has(o.attribute)) {
|
|
1811
|
+
const a = this.getQueryAttributeForString(o.attribute);
|
|
1812
|
+
t.push(a), r.add(o.attribute);
|
|
1744
1813
|
}
|
|
1745
|
-
} else this.isQueryGroup(
|
|
1814
|
+
} else this.isQueryGroup(o) && s(o.queries);
|
|
1746
1815
|
};
|
|
1747
1816
|
return s(e?.queries || this.currentQuery.queries), t;
|
|
1748
1817
|
}
|
|
@@ -1784,8 +1853,8 @@ class P {
|
|
|
1784
1853
|
const s = this.deepQueryService.parse(r.referenceAttribute);
|
|
1785
1854
|
if (s.isDeepQuery && r.reference) {
|
|
1786
1855
|
const i = this.getProjectionForAttributeEntries([s]);
|
|
1787
|
-
Object.keys(i).forEach((
|
|
1788
|
-
|
|
1856
|
+
Object.keys(i).forEach((o) => {
|
|
1857
|
+
o !== "$" && r.reference && (t[r.reference][o] = i[o]);
|
|
1789
1858
|
});
|
|
1790
1859
|
} else r.reference && (t[r.reference][r.referenceAttribute] = !0);
|
|
1791
1860
|
} else
|
|
@@ -2084,8 +2153,8 @@ class P {
|
|
|
2084
2153
|
for (const s of r)
|
|
2085
2154
|
if (this.isQuery(s)) {
|
|
2086
2155
|
let i = !0;
|
|
2087
|
-
for (const
|
|
2088
|
-
if (s[
|
|
2156
|
+
for (const o in e)
|
|
2157
|
+
if (s[o] !== e[o]) {
|
|
2089
2158
|
i = !1;
|
|
2090
2159
|
break;
|
|
2091
2160
|
}
|
|
@@ -2210,48 +2279,89 @@ class P {
|
|
|
2210
2279
|
return e(this.currentQuery.queries);
|
|
2211
2280
|
}
|
|
2212
2281
|
}
|
|
2213
|
-
const
|
|
2214
|
-
function
|
|
2215
|
-
const a =
|
|
2282
|
+
const N = new j();
|
|
2283
|
+
function Xe(n, e, t, r, s, i, o) {
|
|
2284
|
+
const a = N.removeQuery({ groupKey: s }, v(r)), c = o.queryData(n, a, !1, i), u = e ? [...e.keys()] : [], f = new Set(u), l = i.get(s) ?? /* @__PURE__ */ new Map();
|
|
2216
2285
|
if (!t.excludeUnresolved)
|
|
2217
2286
|
for (const h of l.keys())
|
|
2218
|
-
|
|
2219
|
-
t.excludeUndefineds ?
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2287
|
+
f.add(h);
|
|
2288
|
+
if (t.excludeUndefineds ? f.delete(void 0) : f.add(void 0), t.sort) {
|
|
2289
|
+
const h = [];
|
|
2290
|
+
for (const m of f.values())
|
|
2291
|
+
h.push(G(m, l, c, e, s, r, !0));
|
|
2292
|
+
const g = t.excludeZeros ? h.filter((m) => m.size > 0) : h;
|
|
2293
|
+
return g.sort(ve(t.sort)), t.count ? g.slice(0, t.count) : g;
|
|
2294
|
+
}
|
|
2295
|
+
const d = [];
|
|
2296
|
+
for (const h of f.values()) {
|
|
2297
|
+
const g = G(
|
|
2298
|
+
h,
|
|
2299
|
+
l,
|
|
2300
|
+
c,
|
|
2301
|
+
e,
|
|
2302
|
+
s,
|
|
2303
|
+
r,
|
|
2304
|
+
!!t?.calculateFacets
|
|
2305
|
+
);
|
|
2306
|
+
if (!(t?.excludeZeros && g.size === 0)) {
|
|
2307
|
+
if (t?.count && d.length === t?.count)
|
|
2308
|
+
return d;
|
|
2309
|
+
d.push(g);
|
|
2240
2310
|
}
|
|
2241
2311
|
}
|
|
2242
|
-
return
|
|
2312
|
+
return d;
|
|
2243
2313
|
}
|
|
2244
|
-
|
|
2245
|
-
const
|
|
2314
|
+
function G(n, e, t, r, s, i, o) {
|
|
2315
|
+
const a = /* @__PURE__ */ new Map(), c = e.get(n) || /* @__PURE__ */ new Set();
|
|
2316
|
+
for (const u of c) {
|
|
2317
|
+
const f = t.get(u);
|
|
2318
|
+
if (f && (a.set(u, f), !o))
|
|
2319
|
+
break;
|
|
2320
|
+
}
|
|
2321
|
+
return {
|
|
2322
|
+
key: String(n),
|
|
2323
|
+
value: n,
|
|
2324
|
+
selected: we(s, n, i),
|
|
2325
|
+
enabled: a.size > 0,
|
|
2326
|
+
size: a.size,
|
|
2327
|
+
entry: r?.get(n),
|
|
2328
|
+
resultKeys: Array.from(a.keys())
|
|
2329
|
+
};
|
|
2330
|
+
}
|
|
2331
|
+
function D(n, e) {
|
|
2332
|
+
if (n === void 0 && e === void 0) return 0;
|
|
2333
|
+
if (n === void 0) return 1;
|
|
2334
|
+
if (e === void 0) return -1;
|
|
2335
|
+
const t = typeof n, r = typeof e;
|
|
2336
|
+
if (t !== r) return t < r ? -1 : 1;
|
|
2337
|
+
if (t === "number") return n - e;
|
|
2338
|
+
if (t === "string") return n.localeCompare(e);
|
|
2339
|
+
const s = String(n), i = String(e);
|
|
2340
|
+
return s < i ? -1 : s > i ? 1 : 0;
|
|
2341
|
+
}
|
|
2342
|
+
function ve(n) {
|
|
2343
|
+
switch (n) {
|
|
2344
|
+
case "size-desc":
|
|
2345
|
+
return (e, t) => t.size - e.size || D(e.value, t.value);
|
|
2346
|
+
case "size-asc":
|
|
2347
|
+
return (e, t) => e.size - t.size || D(e.value, t.value);
|
|
2348
|
+
case "value-asc":
|
|
2349
|
+
return (e, t) => D(e.value, t.value);
|
|
2350
|
+
case "value-desc":
|
|
2351
|
+
return (e, t) => e.value === void 0 && t.value === void 0 ? 0 : e.value === void 0 ? 1 : t.value === void 0 ? -1 : -D(e.value, t.value);
|
|
2352
|
+
}
|
|
2353
|
+
}
|
|
2354
|
+
const we = (n, e, t) => {
|
|
2355
|
+
const r = t.queries.findIndex((s) => N.isQueryGroup(s) && s.groupKey === n);
|
|
2246
2356
|
return r > -1 ? !!t.queries[r].queries.find((i) => {
|
|
2247
|
-
if (
|
|
2248
|
-
const
|
|
2249
|
-
return i.attribute ===
|
|
2357
|
+
if (N.isQuery(i)) {
|
|
2358
|
+
const o = i.value?.key || i.value;
|
|
2359
|
+
return i.attribute === n && o === e;
|
|
2250
2360
|
}
|
|
2251
2361
|
return !1;
|
|
2252
2362
|
}) : !1;
|
|
2253
2363
|
};
|
|
2254
|
-
class
|
|
2364
|
+
class xe {
|
|
2255
2365
|
indexMap = /* @__PURE__ */ new Map();
|
|
2256
2366
|
// Possible performance gain*
|
|
2257
2367
|
dataMap = /* @__PURE__ */ new Map();
|
|
@@ -2261,6 +2371,15 @@ class me {
|
|
|
2261
2371
|
reset(e) {
|
|
2262
2372
|
e ? (this.indexMap.delete(e), this.dataMap.delete(e), this.indexMetadata.delete(e)) : (this.indexMap.clear(), this.dataMap.clear(), this.indexMetadata.clear());
|
|
2263
2373
|
}
|
|
2374
|
+
/**
|
|
2375
|
+
* Removes every index the predicate selects. Used to drop indices that
|
|
2376
|
+
* were built from now-stale data; the next read lazily rebuilds them via
|
|
2377
|
+
* {@link getOrCreateIndex}.
|
|
2378
|
+
*/
|
|
2379
|
+
resetIndicesWhere(e) {
|
|
2380
|
+
for (const t of Array.from(this.indexMap.keys()))
|
|
2381
|
+
e(t) && this.reset(t);
|
|
2382
|
+
}
|
|
2264
2383
|
fillDataMap(e, t) {
|
|
2265
2384
|
let r = this.dataMap.get(e);
|
|
2266
2385
|
r || (r = /* @__PURE__ */ new Map(), this.dataMap.set(e, r));
|
|
@@ -2273,8 +2392,8 @@ class me {
|
|
|
2273
2392
|
this.fillDataMap(e, [a]);
|
|
2274
2393
|
return;
|
|
2275
2394
|
} else s instanceof Date ? i = s.toISOString() : i = s;
|
|
2276
|
-
let
|
|
2277
|
-
|
|
2395
|
+
let o = r.get(i);
|
|
2396
|
+
o || (o = { key: i }, this.dataMap.get(e)?.set(i, o));
|
|
2278
2397
|
}
|
|
2279
2398
|
}
|
|
2280
2399
|
fillInverseIndex(e, t, r) {
|
|
@@ -2282,16 +2401,16 @@ class me {
|
|
|
2282
2401
|
return;
|
|
2283
2402
|
const s = this.indexMap.get(e) || /* @__PURE__ */ new Map();
|
|
2284
2403
|
for (const i of r) {
|
|
2285
|
-
let
|
|
2404
|
+
let o;
|
|
2286
2405
|
if (typeof i == "object" && i && i.key)
|
|
2287
|
-
|
|
2406
|
+
o = i.key;
|
|
2288
2407
|
else if (Array.isArray(i)) {
|
|
2289
|
-
for (const
|
|
2290
|
-
this.fillInverseIndex(e, t, [
|
|
2408
|
+
for (const c of i)
|
|
2409
|
+
this.fillInverseIndex(e, t, [c]);
|
|
2291
2410
|
return;
|
|
2292
|
-
} else i instanceof Date ?
|
|
2293
|
-
let a = s.get(
|
|
2294
|
-
a || (a = /* @__PURE__ */ new Set(), s.set(
|
|
2411
|
+
} else i instanceof Date ? o = i.toISOString() : o = i;
|
|
2412
|
+
let a = s.get(o);
|
|
2413
|
+
a || (a = /* @__PURE__ */ new Set(), s.set(o, a)), a.add(t);
|
|
2295
2414
|
}
|
|
2296
2415
|
this.indexMap.set(e, s);
|
|
2297
2416
|
}
|
|
@@ -2306,31 +2425,31 @@ class me {
|
|
|
2306
2425
|
getOrCreateIndex(e, t, r) {
|
|
2307
2426
|
const s = this.getIndexName(e, r);
|
|
2308
2427
|
let i = this.getIndex(s);
|
|
2309
|
-
const
|
|
2310
|
-
if (
|
|
2311
|
-
|
|
2428
|
+
const o = this.indexMetadata.get(s);
|
|
2429
|
+
if (o)
|
|
2430
|
+
o.lastAccessedAt = Date.now();
|
|
2312
2431
|
else if (!i) {
|
|
2313
|
-
const
|
|
2432
|
+
const c = y.parse(e).isDeepQuery ?? !1;
|
|
2314
2433
|
this.indexMetadata.set(s, {
|
|
2315
2434
|
createdAt: Date.now(),
|
|
2316
2435
|
lastAccessedAt: Date.now(),
|
|
2317
2436
|
context: r,
|
|
2318
|
-
type:
|
|
2437
|
+
type: c ? "deep" : "shallow"
|
|
2319
2438
|
});
|
|
2320
2439
|
}
|
|
2321
2440
|
if (!i) {
|
|
2322
2441
|
this.reset(s), this.indexMap.set(s, /* @__PURE__ */ new Map());
|
|
2323
|
-
const
|
|
2324
|
-
for (const
|
|
2325
|
-
|
|
2326
|
-
this.fillInverseIndex(s,
|
|
2442
|
+
const c = y.parse(e).isDeepQuery;
|
|
2443
|
+
for (const u of t.values()) {
|
|
2444
|
+
let f;
|
|
2445
|
+
c ? (f = x(u, e), f.length === 0 && (f = [void 0])) : f = [u[e]], this.fillInverseIndex(s, u.key, f), this.fillDataMap(s, f);
|
|
2327
2446
|
}
|
|
2328
2447
|
i = this.getIndex(s) || /* @__PURE__ */ new Map();
|
|
2329
2448
|
}
|
|
2330
2449
|
return i;
|
|
2331
2450
|
}
|
|
2332
2451
|
getIndexName(e, t) {
|
|
2333
|
-
return t ? e + "_" +
|
|
2452
|
+
return t ? e + "_" + K(t) : e;
|
|
2334
2453
|
}
|
|
2335
2454
|
// ========== PARTIAL UPDATE METHODS ==========
|
|
2336
2455
|
/**
|
|
@@ -2343,16 +2462,16 @@ class me {
|
|
|
2343
2462
|
const s = this.indexMap.get(e);
|
|
2344
2463
|
if (s)
|
|
2345
2464
|
for (const i of r) {
|
|
2346
|
-
let
|
|
2465
|
+
let o;
|
|
2347
2466
|
if (typeof i == "object" && i && i.key)
|
|
2348
|
-
|
|
2467
|
+
o = i.key;
|
|
2349
2468
|
else if (Array.isArray(i)) {
|
|
2350
|
-
for (const
|
|
2351
|
-
this.removeFromInverseIndex(e, t, [
|
|
2469
|
+
for (const c of i)
|
|
2470
|
+
this.removeFromInverseIndex(e, t, [c]);
|
|
2352
2471
|
return;
|
|
2353
|
-
} else i instanceof Date ?
|
|
2354
|
-
const a = s.get(
|
|
2355
|
-
a && (a.delete(t), a.size === 0 && s.delete(
|
|
2472
|
+
} else i instanceof Date ? o = i.toISOString() : o = i;
|
|
2473
|
+
const a = s.get(o);
|
|
2474
|
+
a && (a.delete(t), a.size === 0 && s.delete(o));
|
|
2356
2475
|
}
|
|
2357
2476
|
}
|
|
2358
2477
|
/**
|
|
@@ -2378,8 +2497,8 @@ class me {
|
|
|
2378
2497
|
if (typeof s == "object" && s && s.key)
|
|
2379
2498
|
i = s.key;
|
|
2380
2499
|
else if (Array.isArray(s)) {
|
|
2381
|
-
for (const
|
|
2382
|
-
this.removeFromDataMap(e, [
|
|
2500
|
+
for (const o of s)
|
|
2501
|
+
this.removeFromDataMap(e, [o]);
|
|
2383
2502
|
return;
|
|
2384
2503
|
} else s instanceof Date ? i = s.toISOString() : i = s;
|
|
2385
2504
|
r.delete(i);
|
|
@@ -2424,7 +2543,7 @@ class me {
|
|
|
2424
2543
|
isDeepQueryIndex(e) {
|
|
2425
2544
|
const t = e.includes("_") ? e.split("_")[0] : e;
|
|
2426
2545
|
try {
|
|
2427
|
-
return
|
|
2546
|
+
return y.parse(t).isDeepQuery ?? !1;
|
|
2428
2547
|
} catch {
|
|
2429
2548
|
return !1;
|
|
2430
2549
|
}
|
|
@@ -2485,8 +2604,8 @@ class me {
|
|
|
2485
2604
|
getStats() {
|
|
2486
2605
|
const e = this.getIndexCount(), t = Date.now();
|
|
2487
2606
|
let r = 0, s = 0;
|
|
2488
|
-
for (const
|
|
2489
|
-
const a = t -
|
|
2607
|
+
for (const o of this.indexMetadata.values()) {
|
|
2608
|
+
const a = t - o.createdAt;
|
|
2490
2609
|
r += a, a > s && (s = a);
|
|
2491
2610
|
}
|
|
2492
2611
|
const i = this.indexMetadata.size > 0 ? r / this.indexMetadata.size : 0;
|
|
@@ -2499,153 +2618,165 @@ class me {
|
|
|
2499
2618
|
};
|
|
2500
2619
|
}
|
|
2501
2620
|
}
|
|
2502
|
-
const
|
|
2503
|
-
function
|
|
2504
|
-
const
|
|
2621
|
+
const w = "__";
|
|
2622
|
+
function P(n, e, t = { key: "root" }, r = "root", s = new xe(), i) {
|
|
2623
|
+
const o = i || n;
|
|
2505
2624
|
for (const a of e.columns)
|
|
2506
|
-
a.attribute && (
|
|
2625
|
+
a.attribute && (y.parse(a.attribute), s.getOrCreateIndex(a.attribute, o));
|
|
2507
2626
|
for (const a of e.rows)
|
|
2508
|
-
a.attribute && (
|
|
2627
|
+
a.attribute && (y.parse(a.attribute), s.getOrCreateIndex(a.attribute, o));
|
|
2509
2628
|
for (const a of e.values)
|
|
2510
|
-
a.attribute && (
|
|
2629
|
+
a.attribute && (y.parse(a.attribute), s.getOrCreateIndex(a.attribute, o));
|
|
2511
2630
|
if (e.rows && e.rows.length > 0) {
|
|
2512
2631
|
t.rows = t.rows || [];
|
|
2513
|
-
const a =
|
|
2632
|
+
const a = Ae(n, e.rows[0], e, s, r, i);
|
|
2514
2633
|
t.rows.push(a);
|
|
2515
2634
|
}
|
|
2516
2635
|
if (e.columns && e.columns.length > 0) {
|
|
2517
2636
|
t.columns = t.columns || [];
|
|
2518
|
-
const a =
|
|
2637
|
+
const a = L(n, e.columns[0], e, s, r, i);
|
|
2519
2638
|
t.columns.push(a);
|
|
2520
2639
|
}
|
|
2521
2640
|
if (t.key === "root")
|
|
2522
2641
|
for (const a of e.values) {
|
|
2523
2642
|
if (t.values = t.values || [], r === "root" && e.options?.calculateTotals === !1)
|
|
2524
2643
|
continue;
|
|
2525
|
-
const
|
|
2526
|
-
t.values.push(
|
|
2644
|
+
const c = C(a, n, s.getIndex(a.attribute), a.attribute);
|
|
2645
|
+
t.values.push(c);
|
|
2527
2646
|
}
|
|
2528
2647
|
return t;
|
|
2529
2648
|
}
|
|
2530
|
-
function
|
|
2531
|
-
const
|
|
2649
|
+
function Ae(n, e, t, r, s = "", i) {
|
|
2650
|
+
const o = { key: e.attribute }, a = r.getIndex(e.attribute);
|
|
2532
2651
|
if (!a)
|
|
2533
|
-
return
|
|
2534
|
-
for (const [
|
|
2652
|
+
return o;
|
|
2653
|
+
for (const [c, u] of a.entries()) {
|
|
2535
2654
|
const f = {
|
|
2536
|
-
key:
|
|
2537
|
-
value:
|
|
2538
|
-
},
|
|
2539
|
-
for (const
|
|
2540
|
-
|
|
2541
|
-
if (
|
|
2542
|
-
for (const
|
|
2655
|
+
key: c,
|
|
2656
|
+
value: c
|
|
2657
|
+
}, l = /* @__PURE__ */ new Map();
|
|
2658
|
+
for (const d of u)
|
|
2659
|
+
n.has(d) && l.set(d, n.get(d));
|
|
2660
|
+
if (l.size) {
|
|
2661
|
+
for (const d of t.values) {
|
|
2543
2662
|
if (f.values = f.values || [], s === "root" && e?.calculateTotals === !1)
|
|
2544
2663
|
continue;
|
|
2545
|
-
const h =
|
|
2664
|
+
const h = C(d, l, r.getIndex(d.attribute), d.attribute);
|
|
2546
2665
|
f.values.push(h);
|
|
2547
2666
|
}
|
|
2548
|
-
if (
|
|
2549
|
-
const
|
|
2550
|
-
|
|
2551
|
-
d,
|
|
2667
|
+
if (o.rows = o.rows || [], o.rows.push(f), t.rows.length > 1) {
|
|
2668
|
+
const d = { ...t, rows: t.rows.slice(1) };
|
|
2669
|
+
P(
|
|
2552
2670
|
l,
|
|
2671
|
+
d,
|
|
2553
2672
|
f,
|
|
2554
|
-
s +
|
|
2673
|
+
s + w + e.attribute + w + c,
|
|
2555
2674
|
r,
|
|
2556
2675
|
i
|
|
2557
2676
|
);
|
|
2558
2677
|
} else if (t.columns)
|
|
2559
|
-
for (const
|
|
2678
|
+
for (const d of t.columns) {
|
|
2560
2679
|
f.columns = f.columns || [];
|
|
2561
|
-
const h =
|
|
2562
|
-
d,
|
|
2680
|
+
const h = L(
|
|
2563
2681
|
l,
|
|
2682
|
+
d,
|
|
2564
2683
|
t,
|
|
2565
2684
|
r,
|
|
2566
|
-
s +
|
|
2685
|
+
s + w + e.attribute + w + c,
|
|
2567
2686
|
i
|
|
2568
2687
|
);
|
|
2569
2688
|
f.columns.push(h);
|
|
2570
2689
|
}
|
|
2571
2690
|
}
|
|
2572
2691
|
}
|
|
2573
|
-
return
|
|
2692
|
+
return o;
|
|
2574
2693
|
}
|
|
2575
|
-
function
|
|
2576
|
-
const
|
|
2694
|
+
function L(n, e, t, r, s = "", i) {
|
|
2695
|
+
const o = { key: e.attribute }, a = r.getIndex(e.attribute);
|
|
2577
2696
|
if (!a)
|
|
2578
|
-
return
|
|
2579
|
-
for (const [
|
|
2697
|
+
return o;
|
|
2698
|
+
for (const [c, u] of a.entries()) {
|
|
2580
2699
|
const f = {
|
|
2581
|
-
key:
|
|
2582
|
-
value:
|
|
2583
|
-
},
|
|
2584
|
-
for (const
|
|
2585
|
-
|
|
2586
|
-
if (
|
|
2587
|
-
for (const
|
|
2700
|
+
key: c,
|
|
2701
|
+
value: c
|
|
2702
|
+
}, l = /* @__PURE__ */ new Map();
|
|
2703
|
+
for (const d of u)
|
|
2704
|
+
n.has(d) && l.set(d, n.get(d));
|
|
2705
|
+
if (l.size) {
|
|
2706
|
+
for (const d of t.values) {
|
|
2588
2707
|
if (f.values = f.values || [], s === "root" && e?.calculateTotals === !1)
|
|
2589
2708
|
continue;
|
|
2590
|
-
const h =
|
|
2709
|
+
const h = C(d, l, r.getIndex(d.attribute), d.attribute);
|
|
2591
2710
|
f.values.push(h);
|
|
2592
2711
|
}
|
|
2593
|
-
if (
|
|
2594
|
-
const
|
|
2595
|
-
|
|
2596
|
-
d,
|
|
2712
|
+
if (o.columns = o.columns || [], o.columns.push(f), t.columns.length > 1) {
|
|
2713
|
+
const d = { ...t, columns: t.columns.slice(1) };
|
|
2714
|
+
P(
|
|
2597
2715
|
l,
|
|
2716
|
+
d,
|
|
2598
2717
|
f,
|
|
2599
|
-
s +
|
|
2718
|
+
s + w + e.attribute + w + c,
|
|
2600
2719
|
r,
|
|
2601
2720
|
i
|
|
2602
2721
|
);
|
|
2603
2722
|
}
|
|
2604
2723
|
}
|
|
2605
2724
|
}
|
|
2606
|
-
return
|
|
2725
|
+
return o;
|
|
2607
2726
|
}
|
|
2608
|
-
const
|
|
2609
|
-
const
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2727
|
+
const be = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})?)?$/, Se = /^-?\d+$/, De = /^-?\d+\.\d+$/, Ie = /^\d{1,2}([/.-])\d{1,2}\1\d{2,4}$/, Ke = (n) => n === "true" || n === "false" ? "boolean" : Se.test(n) ? "int" : De.test(n) ? "float" : be.test(n) && !Number.isNaN(Date.parse(n)) ? "date" : "string", Qe = (n) => Ie.test(n), Me = (n) => n == null || n === "", ke = (n) => {
|
|
2728
|
+
const e = [...n];
|
|
2729
|
+
return e.length <= 1 ? { type: e[0] ?? "any", conflict: !1 } : e.every((t) => t === "int" || t === "float") ? { type: "float", conflict: !1 } : { type: "any", conflict: !0 };
|
|
2730
|
+
}, Ne = (n, e = {}) => {
|
|
2731
|
+
const r = e.deep ?? (e.sampleSize !== void 0 && e.sampleSize > 1) ? e.sampleSize ?? 1 / 0 : 1, s = e.coerceStrings ?? !0, i = /* @__PURE__ */ new Map(), o = [], a = Math.min(n.length, r);
|
|
2732
|
+
for (let f = 0; f < a; f++) {
|
|
2733
|
+
const l = n[f];
|
|
2734
|
+
if (l)
|
|
2735
|
+
for (const [d, h] of Object.entries(l)) {
|
|
2736
|
+
let g = i.get(d);
|
|
2737
|
+
if (g || (g = { observed: /* @__PURE__ */ new Set(), empty: 0, scanned: 0 }, i.set(d, g), o.push(d)), g.scanned++, Me(h)) {
|
|
2738
|
+
g.empty++;
|
|
2739
|
+
continue;
|
|
2740
|
+
}
|
|
2741
|
+
let m;
|
|
2742
|
+
typeof h == "string" && s ? (m = Ke(h), m === "string" && !g.hint && Qe(h) && (g.hint = "column looks date-like (non-ISO) — review manually")) : m = $e(h), g.observed.add(m);
|
|
2621
2743
|
}
|
|
2622
|
-
}
|
|
2623
|
-
if (!e)
|
|
2624
|
-
break;
|
|
2625
2744
|
}
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2745
|
+
const c = [], u = [];
|
|
2746
|
+
for (const f of o) {
|
|
2747
|
+
const l = i.get(f), { type: d, conflict: h } = ke(l.observed.size ? l.observed : /* @__PURE__ */ new Set(["string"]));
|
|
2748
|
+
c.push({ key: f, type: d }), u.push({
|
|
2749
|
+
column: f,
|
|
2750
|
+
inferredType: d,
|
|
2751
|
+
observedTypes: [...l.observed].sort(),
|
|
2752
|
+
emptyRate: l.scanned === 0 ? 0 : l.empty / l.scanned,
|
|
2753
|
+
conflict: h,
|
|
2754
|
+
hint: l.hint
|
|
2755
|
+
});
|
|
2756
|
+
}
|
|
2757
|
+
return { properties: c, diagnostics: u };
|
|
2758
|
+
}, Ye = (n, e = !1) => Ne(n, typeof e == "boolean" ? { deep: e } : e).properties, Ce = (n) => Number(n) === n && n % 1 === 0, Ee = (n) => Number(n) === n && n % 1 !== 0, $e = (n) => {
|
|
2759
|
+
switch (typeof n) {
|
|
2629
2760
|
case "string":
|
|
2630
2761
|
return "string";
|
|
2631
2762
|
case "number":
|
|
2632
|
-
return
|
|
2763
|
+
return Ce(n) ? "int" : Ee(n) ? "float" : "any";
|
|
2633
2764
|
case "boolean":
|
|
2634
2765
|
return "boolean";
|
|
2635
2766
|
case "object":
|
|
2636
|
-
return
|
|
2767
|
+
return se(n) ? "date" : "json";
|
|
2637
2768
|
default:
|
|
2638
2769
|
return "any";
|
|
2639
2770
|
}
|
|
2640
|
-
},
|
|
2641
|
-
const t =
|
|
2771
|
+
}, et = (n, e) => {
|
|
2772
|
+
const t = te(n.text || ""), r = e?.attributeKey || n.filterKey;
|
|
2642
2773
|
let s;
|
|
2643
2774
|
const i = e?.comparisonType || "containsIgnoreCase";
|
|
2644
2775
|
return i === "containsIgnoreCase" ? s = {
|
|
2645
|
-
groupKey:
|
|
2776
|
+
groupKey: n.filterKey,
|
|
2646
2777
|
queries: [
|
|
2647
2778
|
{
|
|
2648
|
-
queryKey:
|
|
2779
|
+
queryKey: n.text,
|
|
2649
2780
|
attribute: r,
|
|
2650
2781
|
value: `/${t}/`,
|
|
2651
2782
|
operator: "find",
|
|
@@ -2655,10 +2786,10 @@ const Te = (o, e) => {
|
|
|
2655
2786
|
}
|
|
2656
2787
|
]
|
|
2657
2788
|
} : i === "containsIgnoreCaseAndWhitespace" ? s = {
|
|
2658
|
-
groupKey:
|
|
2789
|
+
groupKey: n.filterKey,
|
|
2659
2790
|
queries: [
|
|
2660
2791
|
{
|
|
2661
|
-
queryKey:
|
|
2792
|
+
queryKey: n.text,
|
|
2662
2793
|
attribute: r,
|
|
2663
2794
|
value: `/${t}/`,
|
|
2664
2795
|
operator: "find",
|
|
@@ -2668,32 +2799,32 @@ const Te = (o, e) => {
|
|
|
2668
2799
|
}
|
|
2669
2800
|
]
|
|
2670
2801
|
} : i === "contains" ? s = {
|
|
2671
|
-
groupKey:
|
|
2802
|
+
groupKey: n.filterKey,
|
|
2672
2803
|
queries: [
|
|
2673
2804
|
{
|
|
2674
|
-
queryKey:
|
|
2805
|
+
queryKey: n.text,
|
|
2675
2806
|
attribute: r,
|
|
2676
2807
|
value: `/${t}/`,
|
|
2677
2808
|
operator: "find"
|
|
2678
2809
|
}
|
|
2679
2810
|
]
|
|
2680
2811
|
} : i === "equal" ? s = {
|
|
2681
|
-
groupKey:
|
|
2812
|
+
groupKey: n.filterKey,
|
|
2682
2813
|
queries: [
|
|
2683
2814
|
{
|
|
2684
|
-
queryKey:
|
|
2815
|
+
queryKey: n.text,
|
|
2685
2816
|
attribute: r,
|
|
2686
|
-
value:
|
|
2817
|
+
value: n.text,
|
|
2687
2818
|
operator: "eq"
|
|
2688
2819
|
}
|
|
2689
2820
|
]
|
|
2690
2821
|
} : i === "equalIgnoreCase" && (s = {
|
|
2691
|
-
groupKey:
|
|
2822
|
+
groupKey: n.filterKey,
|
|
2692
2823
|
queries: [
|
|
2693
2824
|
{
|
|
2694
|
-
queryKey:
|
|
2825
|
+
queryKey: n.text,
|
|
2695
2826
|
attribute: r,
|
|
2696
|
-
value:
|
|
2827
|
+
value: n.text,
|
|
2697
2828
|
operator: "eq",
|
|
2698
2829
|
options: {
|
|
2699
2830
|
transform: ["lowercase"]
|
|
@@ -2701,40 +2832,40 @@ const Te = (o, e) => {
|
|
|
2701
2832
|
}
|
|
2702
2833
|
]
|
|
2703
2834
|
}), s;
|
|
2704
|
-
},
|
|
2705
|
-
const t = e?.attributeKey ||
|
|
2835
|
+
}, tt = (n, e) => {
|
|
2836
|
+
const t = e?.attributeKey || n.filterKey;
|
|
2706
2837
|
return {
|
|
2707
|
-
groupKey:
|
|
2838
|
+
groupKey: n.filterKey,
|
|
2708
2839
|
queries: [
|
|
2709
2840
|
{
|
|
2710
|
-
queryKey:
|
|
2841
|
+
queryKey: n.value,
|
|
2711
2842
|
attribute: t,
|
|
2712
|
-
value:
|
|
2843
|
+
value: n.value,
|
|
2713
2844
|
operator: "eq"
|
|
2714
2845
|
}
|
|
2715
2846
|
]
|
|
2716
2847
|
};
|
|
2717
|
-
},
|
|
2718
|
-
const t = e?.attributeKey ||
|
|
2719
|
-
groupKey:
|
|
2848
|
+
}, rt = (n, e) => {
|
|
2849
|
+
const t = e?.attributeKey || n.filterKey, r = {
|
|
2850
|
+
groupKey: n.filterKey,
|
|
2720
2851
|
queries: []
|
|
2721
2852
|
};
|
|
2722
|
-
return typeof
|
|
2853
|
+
return typeof n.eq < "u" && (r.groupType = "or", Array.isArray(n.eq) ? n.eq.forEach((s) => {
|
|
2723
2854
|
r.queries.push({ attribute: t, value: s, operator: "eq" });
|
|
2724
|
-
}) : r.queries.push({ attribute: t, value:
|
|
2855
|
+
}) : r.queries.push({ attribute: t, value: n.eq, operator: "eq" })), typeof n.ne < "u" && (r.groupType = "and", Array.isArray(n.ne) ? n.ne.forEach((s) => {
|
|
2725
2856
|
r.queries.push({ attribute: t, value: s, operator: "eq", options: { invert: !0 } });
|
|
2726
2857
|
}) : r.queries.push({
|
|
2727
2858
|
attribute: t,
|
|
2728
|
-
value:
|
|
2859
|
+
value: n.ne,
|
|
2729
2860
|
operator: "eq",
|
|
2730
2861
|
options: { invert: !0 }
|
|
2731
|
-
})), typeof
|
|
2732
|
-
},
|
|
2733
|
-
const t = e?.attributeKey ||
|
|
2734
|
-
groupKey:
|
|
2862
|
+
})), typeof n.gt < "u" && (r.groupType = "and", r.queries.push({ attribute: t, value: n.gt, operator: "gt" })), typeof n.lt < "u" && (r.groupType = "and", r.queries.push({ attribute: t, value: n.lt, operator: "lt" })), typeof n.gte < "u" && (r.groupType = "and", r.queries.push({ attribute: t, value: n.gte, operator: "gte" })), typeof n.lte < "u" && (r.groupType = "and", r.queries.push({ attribute: t, value: n.lte, operator: "lte" })), r;
|
|
2863
|
+
}, st = (n, e) => {
|
|
2864
|
+
const t = e?.attributeKey || n.filterKey, r = {
|
|
2865
|
+
groupKey: n.filterKey,
|
|
2735
2866
|
queries: []
|
|
2736
2867
|
};
|
|
2737
|
-
return
|
|
2868
|
+
return n.itemKeys.forEach((s) => {
|
|
2738
2869
|
r.queries.push({
|
|
2739
2870
|
queryKey: s,
|
|
2740
2871
|
attribute: t,
|
|
@@ -2742,13 +2873,16 @@ const Te = (o, e) => {
|
|
|
2742
2873
|
operator: "eq"
|
|
2743
2874
|
});
|
|
2744
2875
|
}), r;
|
|
2745
|
-
},
|
|
2746
|
-
class
|
|
2876
|
+
}, nt = (n) => !(typeof n.modelKey != "string" || !Array.isArray(n.queries));
|
|
2877
|
+
class it {
|
|
2747
2878
|
constructor(e, t, r) {
|
|
2748
2879
|
this.scriptController = e, this.globalItemService = t, this.modelParser = r;
|
|
2749
2880
|
}
|
|
2881
|
+
scriptController;
|
|
2882
|
+
globalItemService;
|
|
2883
|
+
modelParser;
|
|
2750
2884
|
registeredCustomOperator = /* @__PURE__ */ new Map();
|
|
2751
|
-
queryBuilder = new
|
|
2885
|
+
queryBuilder = new j();
|
|
2752
2886
|
registerCustomOperator(e, t) {
|
|
2753
2887
|
this.registeredCustomOperator.set(e, t);
|
|
2754
2888
|
}
|
|
@@ -2764,83 +2898,83 @@ class We {
|
|
|
2764
2898
|
evaluateQuery(e, t) {
|
|
2765
2899
|
let r, s = e.value;
|
|
2766
2900
|
const i = e.options?.arrayValueHandling || "some";
|
|
2767
|
-
if (Array.isArray(e.options?.transform) && e.options.transform.length > 0 && (s = this.transformValue(s, e.options.transform)), e.attribute.includes(".") || e.attribute.includes("[") ? r =
|
|
2901
|
+
if (Array.isArray(e.options?.transform) && e.options.transform.length > 0 && (s = this.transformValue(s, e.options.transform)), e.attribute.includes(".") || e.attribute.includes("[") ? r = I(t, e.attribute) : r = t[e.attribute], Array.isArray(e.options?.transform) && e.options.transform.length > 0 && (r = this.transformValue(r, e.options.transform)), (typeof r > "u" || r === null) && !["typeof", "isTruthy", "eq"].includes(e.operator))
|
|
2768
2902
|
return !1;
|
|
2769
2903
|
switch (e.operator) {
|
|
2770
2904
|
case "eq":
|
|
2771
|
-
return e.options?.invert ?
|
|
2905
|
+
return e.options?.invert ? !$(r, s) : $(r, s);
|
|
2772
2906
|
case "find":
|
|
2773
2907
|
return e.options?.invert ? !this.queryFind(r, s, i) : this.queryFind(r, s, i);
|
|
2774
2908
|
case "lt":
|
|
2775
|
-
return Array.isArray(r) ? i === "some" ? r.some((
|
|
2909
|
+
return Array.isArray(r) ? i === "some" ? r.some((o) => o < s) : r.every((o) => o < s) : r < s;
|
|
2776
2910
|
case "gt":
|
|
2777
|
-
return Array.isArray(r) ? i === "some" ? r.some((
|
|
2911
|
+
return Array.isArray(r) ? i === "some" ? r.some((o) => o > s) : r.every((o) => o > s) : r > s;
|
|
2778
2912
|
case "lte":
|
|
2779
|
-
return Array.isArray(r) ? i === "some" ? r.some((
|
|
2913
|
+
return Array.isArray(r) ? i === "some" ? r.some((o) => o <= s) : r.every((o) => o <= s) : r <= s;
|
|
2780
2914
|
case "gte":
|
|
2781
|
-
return Array.isArray(r) ? i === "some" ? r.some((
|
|
2915
|
+
return Array.isArray(r) ? i === "some" ? r.some((o) => o >= s) : r.every((o) => o >= s) : r >= s;
|
|
2782
2916
|
case "typeof":
|
|
2783
|
-
return e.options?.invert ? typeof r !== s : Array.isArray(r) ? i === "some" ? r.some((
|
|
2917
|
+
return e.options?.invert ? typeof r !== s : Array.isArray(r) ? i === "some" ? r.some((o) => typeof o === s) : r.every((o) => typeof o === s) : typeof r === s;
|
|
2784
2918
|
case "isTruthy":
|
|
2785
|
-
return s === !0 ? Array.isArray(r) ? i === "some" ? r.some((
|
|
2919
|
+
return s === !0 ? Array.isArray(r) ? i === "some" ? r.some((o) => typeof !!o) : r.every((o) => typeof !!o) : !!r : !r;
|
|
2786
2920
|
case "size":
|
|
2787
2921
|
return typeof r == "string" ? r.length === s : W(r) === s;
|
|
2788
2922
|
default:
|
|
2789
2923
|
if (this.scriptController.hasScript(e.operator))
|
|
2790
2924
|
return this.scriptController.executeScript(e.operator, "operator", { query: e, item: t });
|
|
2791
2925
|
if (this.registeredCustomOperator.has(e.operator)) {
|
|
2792
|
-
const
|
|
2793
|
-
if (typeof
|
|
2794
|
-
return
|
|
2926
|
+
const o = this.registeredCustomOperator.get(e.operator);
|
|
2927
|
+
if (typeof o == "function")
|
|
2928
|
+
return o(e, t);
|
|
2795
2929
|
}
|
|
2796
2930
|
}
|
|
2797
2931
|
return !1;
|
|
2798
2932
|
}
|
|
2799
2933
|
evaluateEqOperator(e, t, r, s) {
|
|
2800
|
-
const i = /* @__PURE__ */ new Map(),
|
|
2801
|
-
if (
|
|
2934
|
+
const i = /* @__PURE__ */ new Map(), o = s.get(t.attribute);
|
|
2935
|
+
if (o) {
|
|
2802
2936
|
let a;
|
|
2803
2937
|
if (typeof t.value == "string" ? a = t.value : t.value?.key && Object.keys(t.value).length === 1 && (a = t.value.key), typeof a < "u") {
|
|
2804
|
-
const
|
|
2805
|
-
if (
|
|
2806
|
-
if (
|
|
2807
|
-
r.has(
|
|
2938
|
+
const c = o.get(a);
|
|
2939
|
+
if (c)
|
|
2940
|
+
if (c.forEach((u) => {
|
|
2941
|
+
r.has(u) && i.set(u, r.get(u));
|
|
2808
2942
|
}), t.options?.invert) {
|
|
2809
|
-
const
|
|
2810
|
-
return
|
|
2811
|
-
f.set(
|
|
2943
|
+
const u = O(Array.from(r.values()), Array.from(i.values()), "key"), f = /* @__PURE__ */ new Map();
|
|
2944
|
+
return u.forEach((l) => {
|
|
2945
|
+
f.set(l.key, l);
|
|
2812
2946
|
}), f;
|
|
2813
2947
|
} else
|
|
2814
2948
|
return i;
|
|
2815
2949
|
}
|
|
2816
2950
|
}
|
|
2817
|
-
for (let [a,
|
|
2818
|
-
const
|
|
2819
|
-
if (
|
|
2951
|
+
for (let [a, c] of r) {
|
|
2952
|
+
const u = this.queryBuilder.extractQueryAttributes({ queries: [t] });
|
|
2953
|
+
if (u.some((f) => f.isDeepQuery)) {
|
|
2820
2954
|
const f = this.queryBuilder.getProjectionForAttributeEntries(
|
|
2821
|
-
|
|
2955
|
+
u.filter((l) => l.isDeepQuery)
|
|
2822
2956
|
);
|
|
2823
|
-
|
|
2957
|
+
c = this.globalItemService.getProjectedData(
|
|
2824
2958
|
f,
|
|
2825
2959
|
this.modelParser.models.get(e.modelKey),
|
|
2826
|
-
|
|
2960
|
+
c
|
|
2827
2961
|
);
|
|
2828
2962
|
}
|
|
2829
|
-
this.evaluateQuery(t,
|
|
2963
|
+
this.evaluateQuery(t, c) && i.set(a, c);
|
|
2830
2964
|
}
|
|
2831
2965
|
return i;
|
|
2832
2966
|
}
|
|
2833
2967
|
equalRegexFn(e, t) {
|
|
2834
|
-
if (typeof t == "string" &&
|
|
2968
|
+
if (typeof t == "string" && H(t, "/") && U(t, "/"))
|
|
2835
2969
|
try {
|
|
2836
2970
|
return new RegExp(t.slice(1, -1)).test(e);
|
|
2837
2971
|
} catch {
|
|
2838
2972
|
return !1;
|
|
2839
2973
|
}
|
|
2840
|
-
else return Array.isArray(e) ? !!e.find((r) =>
|
|
2974
|
+
else return Array.isArray(e) ? !!e.find((r) => S(r, t, this.equalRegexFn)) : typeof t == "object" ? V(e, t) : e === t;
|
|
2841
2975
|
}
|
|
2842
2976
|
queryFind(e, t, r) {
|
|
2843
|
-
return Array.isArray(e) ? typeof t == "string" || typeof t == "number" || typeof t == "boolean" ? r === "some" ? e.some((s) =>
|
|
2977
|
+
return Array.isArray(e) ? typeof t == "string" || typeof t == "number" || typeof t == "boolean" ? r === "some" ? e.some((s) => S(s, t, this.equalRegexFn)) : e.every((s) => S(s, t, this.equalRegexFn)) : !!J(e, t) : S(e, t, this.equalRegexFn);
|
|
2844
2978
|
}
|
|
2845
2979
|
validateQuery(e) {
|
|
2846
2980
|
if (this.queryBuilder.isQuery(e)) {
|
|
@@ -2851,45 +2985,56 @@ class We {
|
|
|
2851
2985
|
return !0;
|
|
2852
2986
|
} else {
|
|
2853
2987
|
if (this.queryBuilder.isQueryGroup(e))
|
|
2854
|
-
return
|
|
2988
|
+
return z(e.queries, (t) => this.validateQuery(t));
|
|
2855
2989
|
throw new Error("invalid query - missing query or attribute");
|
|
2856
2990
|
}
|
|
2857
2991
|
}
|
|
2858
2992
|
getEvaluatedQueryDataset(e, t, r, s) {
|
|
2859
2993
|
const i = /* @__PURE__ */ new Map();
|
|
2860
|
-
if (t.attribute.includes("[*]"))
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2994
|
+
if (t.attribute.includes("[*]")) {
|
|
2995
|
+
const o = t.options?.invert === !0, a = /* @__PURE__ */ new Set();
|
|
2996
|
+
for (let c of r.values()) {
|
|
2997
|
+
const u = this.queryBuilder.extractQueryAttributes({ queries: [t] });
|
|
2998
|
+
if (u.some((d) => d.isDeepQuery)) {
|
|
2999
|
+
const d = this.queryBuilder.getProjectionForAttributeEntries(
|
|
3000
|
+
u.filter((h) => h.isDeepQuery)
|
|
2866
3001
|
);
|
|
2867
|
-
|
|
2868
|
-
|
|
3002
|
+
c = this.globalItemService.getProjectedData(
|
|
3003
|
+
d,
|
|
2869
3004
|
this.modelParser.models.get(e.modelKey),
|
|
2870
|
-
|
|
3005
|
+
c
|
|
2871
3006
|
);
|
|
2872
3007
|
}
|
|
2873
|
-
const
|
|
2874
|
-
|
|
2875
|
-
|
|
3008
|
+
const f = this.handleArrayStarQuery(t, c);
|
|
3009
|
+
let l = !1;
|
|
3010
|
+
for (const d of f.queries) {
|
|
3011
|
+
const h = { ...d, options: { ...d.options, invert: !1 } };
|
|
3012
|
+
if (this.evaluateQuery(h, c)) {
|
|
3013
|
+
l = !0;
|
|
3014
|
+
break;
|
|
3015
|
+
}
|
|
3016
|
+
}
|
|
3017
|
+
l && (a.add(c.key), o || i.set(c.key, c));
|
|
2876
3018
|
}
|
|
2877
|
-
|
|
3019
|
+
if (o)
|
|
3020
|
+
for (const [c, u] of r)
|
|
3021
|
+
a.has(c) || i.set(c, u);
|
|
3022
|
+
} else {
|
|
2878
3023
|
if (t.operator === "eq")
|
|
2879
3024
|
return this.evaluateEqOperator(e, t, r, s);
|
|
2880
|
-
for (let [
|
|
2881
|
-
const
|
|
2882
|
-
if (
|
|
2883
|
-
const
|
|
2884
|
-
|
|
3025
|
+
for (let [o, a] of r) {
|
|
3026
|
+
const c = this.queryBuilder.extractQueryAttributes({ queries: [t] });
|
|
3027
|
+
if (c.some((u) => u.isDeepQuery)) {
|
|
3028
|
+
const u = this.queryBuilder.getProjectionForAttributeEntries(
|
|
3029
|
+
c.filter((f) => f.isDeepQuery)
|
|
2885
3030
|
);
|
|
2886
3031
|
a = this.globalItemService.getProjectedData(
|
|
2887
|
-
|
|
3032
|
+
u,
|
|
2888
3033
|
this.modelParser.models.get(e.modelKey),
|
|
2889
3034
|
a
|
|
2890
3035
|
);
|
|
2891
3036
|
}
|
|
2892
|
-
this.evaluateQuery(t, a) && i.set(
|
|
3037
|
+
this.evaluateQuery(t, a) && i.set(o, a);
|
|
2893
3038
|
}
|
|
2894
3039
|
}
|
|
2895
3040
|
return i;
|
|
@@ -2901,41 +3046,44 @@ class We {
|
|
|
2901
3046
|
queries: []
|
|
2902
3047
|
};
|
|
2903
3048
|
if (r !== -1) {
|
|
2904
|
-
const i = e.attribute.substring(0, r),
|
|
2905
|
-
if (Array.isArray(
|
|
2906
|
-
for (let a = 0; a <
|
|
2907
|
-
const
|
|
3049
|
+
const i = e.attribute.substring(0, r), o = i.includes(".") ? I(t, i) : t[i];
|
|
3050
|
+
if (Array.isArray(o))
|
|
3051
|
+
for (let a = 0; a < o.length; a++) {
|
|
3052
|
+
const c = e.attribute.replace("[*]", `[${a}]`);
|
|
2908
3053
|
s.queries.push({
|
|
2909
|
-
attribute:
|
|
3054
|
+
attribute: c,
|
|
2910
3055
|
operator: e.operator,
|
|
2911
|
-
value: e.value
|
|
3056
|
+
value: e.value,
|
|
3057
|
+
options: e.options
|
|
2912
3058
|
});
|
|
2913
3059
|
}
|
|
2914
3060
|
}
|
|
2915
3061
|
return s;
|
|
2916
3062
|
}
|
|
2917
3063
|
evaluateQueryGroup(e, t, r, s, i) {
|
|
2918
|
-
let
|
|
3064
|
+
let o = /* @__PURE__ */ new Map(), a = r;
|
|
2919
3065
|
if (!t.queries || t.queries?.length === 0)
|
|
2920
3066
|
return a;
|
|
2921
|
-
for (const
|
|
2922
|
-
let
|
|
2923
|
-
if (this.queryBuilder.isQuery(
|
|
2924
|
-
|
|
2925
|
-
|
|
3067
|
+
for (const c of t.queries) {
|
|
3068
|
+
let u = /* @__PURE__ */ new Map();
|
|
3069
|
+
if (this.queryBuilder.isQuery(c) ? u = this.getEvaluatedQueryDataset(e, c, a, i) : u = this.evaluateQueryGroup(e, c, a, s, i), o.size === 0 && (o = u), t.groupType === "or")
|
|
3070
|
+
u.forEach((f) => {
|
|
3071
|
+
o.set(f.key, f);
|
|
2926
3072
|
});
|
|
2927
3073
|
else {
|
|
2928
|
-
const f =
|
|
2929
|
-
for (const
|
|
2930
|
-
|
|
3074
|
+
const f = O(Array.from(o.values()), Array.from(u.values()), "key");
|
|
3075
|
+
for (const l of f)
|
|
3076
|
+
o.delete(l.key);
|
|
2931
3077
|
}
|
|
2932
|
-
t.groupType === "and" ? a =
|
|
3078
|
+
t.groupType === "and" ? a = o : a = r;
|
|
2933
3079
|
}
|
|
2934
|
-
return
|
|
3080
|
+
return o;
|
|
2935
3081
|
}
|
|
2936
3082
|
queryData(e, t, r, s) {
|
|
3083
|
+
if (t.queries.length === 0)
|
|
3084
|
+
return e;
|
|
2937
3085
|
const i = new Map(e);
|
|
2938
|
-
return t.
|
|
3086
|
+
return t.groupKey || (t.groupKey = "root"), t.groupType || (t.groupType = "and"), t.queries || (t.queries = []), this.validateQuery(t), this.evaluateQueryGroup(t, t, i, r, s);
|
|
2939
3087
|
}
|
|
2940
3088
|
// public getRelevantQueryData(data: any, options: DcuplGlobalQueryOptions<any>, model: DcuplModel<ListItem>) {
|
|
2941
3089
|
// // detect if any of the query attributes are a deep query.
|
|
@@ -2971,7 +3119,29 @@ class We {
|
|
|
2971
3119
|
// }
|
|
2972
3120
|
// }
|
|
2973
3121
|
}
|
|
2974
|
-
|
|
3122
|
+
const Oe = "k:", qe = "h:";
|
|
3123
|
+
function M(n, e = 0) {
|
|
3124
|
+
if (n.key)
|
|
3125
|
+
return `${Oe}${n.key}`;
|
|
3126
|
+
const t = K({
|
|
3127
|
+
type: n.type,
|
|
3128
|
+
url: n.rawUrl ?? n.url,
|
|
3129
|
+
model: n.model ?? "",
|
|
3130
|
+
occurrence: e
|
|
3131
|
+
});
|
|
3132
|
+
return `${qe}${t}`;
|
|
3133
|
+
}
|
|
3134
|
+
function ot(n) {
|
|
3135
|
+
const e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Set();
|
|
3136
|
+
return n.map((r) => {
|
|
3137
|
+
const s = `${r.key ?? ""}|${r.type}|${r.rawUrl ?? r.url}|${r.model ?? ""}`;
|
|
3138
|
+
let i = e.get(s) ?? 0, o = M(r, i);
|
|
3139
|
+
for (; t.has(o); )
|
|
3140
|
+
i += 1, o = r.key ? `${M(r)}#${i}` : M(r, i);
|
|
3141
|
+
return e.set(s, i + 1), t.add(o), o;
|
|
3142
|
+
});
|
|
3143
|
+
}
|
|
3144
|
+
class at {
|
|
2975
3145
|
scripts = /* @__PURE__ */ new Map();
|
|
2976
3146
|
scriptFunctions = /* @__PURE__ */ new Map();
|
|
2977
3147
|
constructor() {
|
|
@@ -3010,14 +3180,14 @@ class Le {
|
|
|
3010
3180
|
if (!this.getScript(e))
|
|
3011
3181
|
throw new Error(`Script ${e} not found`);
|
|
3012
3182
|
r.context || (r.context = r.options || {});
|
|
3013
|
-
const i = Object.keys(r),
|
|
3014
|
-
return this.getScriptAsFn(e, i)(t, ...
|
|
3183
|
+
const i = Object.keys(r), o = Object.values(r);
|
|
3184
|
+
return this.getScriptAsFn(e, i)(t, ...o);
|
|
3015
3185
|
}
|
|
3016
3186
|
}
|
|
3017
|
-
const
|
|
3187
|
+
const ct = (n, e) => n ? (e || (e = {}), n.replace(/\$\{(.*?)\}/g, (t, r) => I(e, r.trim(), ""))) : "", ut = (n) => {
|
|
3018
3188
|
const e = /* @__PURE__ */ new Set();
|
|
3019
|
-
return
|
|
3020
|
-
},
|
|
3189
|
+
return n.replace(/\$\{(.*?)\}/g, (r, s) => (e.add(s.trim()), "")), { variables: Array.from(e).map((r) => ({ name: r })) };
|
|
3190
|
+
}, ft = [
|
|
3021
3191
|
"any",
|
|
3022
3192
|
"Array<date>",
|
|
3023
3193
|
"Array<float>",
|
|
@@ -3029,7 +3199,7 @@ const He = (o, e) => o ? (e || (e = {}), o.replace(/\$\{(.*?)\}/g, (t, r) => v(e
|
|
|
3029
3199
|
"int",
|
|
3030
3200
|
"json",
|
|
3031
3201
|
"string"
|
|
3032
|
-
],
|
|
3202
|
+
], lt = ["int", "float", "Array<int>", "Array<float>"], dt = ["date", "Array<date>"], ht = [
|
|
3033
3203
|
"eq",
|
|
3034
3204
|
"find",
|
|
3035
3205
|
"gt",
|
|
@@ -3041,56 +3211,64 @@ const He = (o, e) => o ? (e || (e = {}), o.replace(/\$\{(.*?)\}/g, (t, r) => v(e
|
|
|
3041
3211
|
"size"
|
|
3042
3212
|
];
|
|
3043
3213
|
export {
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3214
|
+
Oe as AUTHORED_RESOURCE_ID_PREFIX,
|
|
3215
|
+
Re as AnalyticsController,
|
|
3216
|
+
Te as AttributeDependencyGraph,
|
|
3217
|
+
Ge as CacheController,
|
|
3218
|
+
Ue as ChangeDetector,
|
|
3219
|
+
qe as DERIVED_RESOURCE_ID_PREFIX,
|
|
3220
|
+
dt as DatePropertyTypes,
|
|
3221
|
+
j as DcuplQueryBuilder,
|
|
3222
|
+
ht as DcuplQueryOperatorsAsArray,
|
|
3223
|
+
le as DeepQueryService,
|
|
3224
|
+
X as DependencyGraph,
|
|
3225
|
+
xe as IndicesController,
|
|
3054
3226
|
p as Logger,
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
se as
|
|
3084
|
-
|
|
3085
|
-
|
|
3227
|
+
lt as NumberPropertyTypes,
|
|
3228
|
+
ft as PropertyTypesAsArray,
|
|
3229
|
+
it as QueryManager,
|
|
3230
|
+
at as ScriptController,
|
|
3231
|
+
B as clone,
|
|
3232
|
+
Ke as coerceStringType,
|
|
3233
|
+
re as compareVersions,
|
|
3234
|
+
Je as computeSuggestions,
|
|
3235
|
+
y as deepQueryService,
|
|
3236
|
+
te as escapeRegExp,
|
|
3237
|
+
ct as evaluateTemplate,
|
|
3238
|
+
tt as generateBooleanQuery,
|
|
3239
|
+
ee as generateKey,
|
|
3240
|
+
rt as generateNumberAndDateQuery,
|
|
3241
|
+
st as generateReferenceQuery,
|
|
3242
|
+
et as generateTextQuery,
|
|
3243
|
+
C as getAggregation,
|
|
3244
|
+
Be as getDateConstraintUid,
|
|
3245
|
+
$e as getDcuplPropertyTypeForNativeType,
|
|
3246
|
+
x as getDeepPathValues,
|
|
3247
|
+
me as getDistinct,
|
|
3248
|
+
Xe as getFacets,
|
|
3249
|
+
ze as getFilterEntryId,
|
|
3250
|
+
_e as getNumberConstraintUid,
|
|
3251
|
+
Ye as getPropertiesForData,
|
|
3252
|
+
Pe as groupBy,
|
|
3253
|
+
He as hasMinimumVersion,
|
|
3254
|
+
Ne as inferModel,
|
|
3255
|
+
se as isDateInstance,
|
|
3256
|
+
Ee as isFloat,
|
|
3257
|
+
Ce as isInt,
|
|
3258
|
+
ne as isValidDate,
|
|
3259
|
+
nt as isValidQueryStatement,
|
|
3260
|
+
F as isValidVersion,
|
|
3086
3261
|
Y as logger,
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3262
|
+
Qe as looksDateLike,
|
|
3263
|
+
Ze as parseDate,
|
|
3264
|
+
ut as parseTemplate,
|
|
3265
|
+
b as perf,
|
|
3266
|
+
P as pivot,
|
|
3267
|
+
Le as removeTrailingSlash,
|
|
3268
|
+
M as resolveResourceId,
|
|
3269
|
+
ot as resolveResourceIds,
|
|
3270
|
+
Ve as trigger,
|
|
3271
|
+
We as unescapeRegExp,
|
|
3272
|
+
je as uniqBy
|
|
3095
3273
|
};
|
|
3096
3274
|
//# sourceMappingURL=index.js.map
|