@dcupl/common 1.8.2-beta.3 → 1.8.2-beta.4
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/browser/common.umd.js +1 -1
- package/dist/browser/common.umd.js.map +1 -1
- package/dist/esm/analytics.controller.js +50 -60
- package/dist/esm/analytics.controller.js.map +1 -1
- package/dist/esm/cache.controller.js +18 -18
- package/dist/esm/cache.controller.js.map +1 -1
- package/dist/esm/changeDetection.js +46 -53
- package/dist/esm/changeDetection.js.map +1 -1
- package/dist/esm/computeSuggestions.js +26 -64
- package/dist/esm/computeSuggestions.js.map +1 -1
- package/dist/esm/dependency-graph.js +61 -177
- package/dist/esm/dependency-graph.js.map +1 -1
- package/dist/esm/getAggregation.js +78 -182
- package/dist/esm/getAggregation.js.map +1 -1
- package/dist/esm/getFacets.js +38 -106
- package/dist/esm/getFacets.js.map +1 -1
- package/dist/esm/helper.js +27 -52
- package/dist/esm/helper.js.map +1 -1
- package/dist/esm/indices.controller.js +61 -129
- package/dist/esm/indices.controller.js.map +1 -1
- package/dist/esm/object-hash.js +8 -8
- package/dist/esm/object-hash.js.map +1 -1
- package/dist/esm/performance.js +6 -6
- package/dist/esm/performance.js.map +1 -1
- package/dist/esm/pivot.js +77 -234
- package/dist/esm/pivot.js.map +1 -1
- package/dist/esm/property-parser.js +21 -72
- package/dist/esm/property-parser.js.map +1 -1
- package/dist/esm/query-builder.js +67 -133
- package/dist/esm/query-builder.js.map +1 -1
- package/dist/esm/query.helper.js +21 -21
- package/dist/esm/query.helper.js.map +1 -1
- package/dist/esm/queryData.js +119 -222
- package/dist/esm/queryData.js.map +1 -1
- package/dist/esm/script.controller.js +35 -60
- package/dist/esm/script.controller.js.map +1 -1
- package/dist/esm/template-parser.js +6 -6
- package/dist/esm/template-parser.js.map +1 -1
- package/dist/esm/types/model.types.js +3 -3
- package/dist/esm/types/model.types.js.map +1 -1
- package/dist/esm/types/query.types.js +1 -1
- package/dist/esm/types/query.types.js.map +1 -1
- package/dist/node/index.cjs.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,36 +1,25 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
1
|
import { generateObjectHash } from './object-hash';
|
|
13
2
|
import { perf } from './performance';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
3
|
+
export class AnalyticsController {
|
|
4
|
+
data;
|
|
5
|
+
enabled = false;
|
|
6
|
+
constructor() { }
|
|
7
|
+
init(enabled) {
|
|
19
8
|
this.data = new Map();
|
|
20
9
|
this.enabled = enabled;
|
|
21
|
-
}
|
|
22
|
-
|
|
10
|
+
}
|
|
11
|
+
set(options) {
|
|
23
12
|
if (!this.enabled)
|
|
24
13
|
return options.value;
|
|
25
|
-
|
|
14
|
+
const uniqueKey = this.getKey(options.value.name, options.context);
|
|
26
15
|
this.data.set(uniqueKey, options.value);
|
|
27
16
|
return this.data.get(uniqueKey);
|
|
28
|
-
}
|
|
29
|
-
|
|
17
|
+
}
|
|
18
|
+
mark(options) {
|
|
30
19
|
if (!this.enabled)
|
|
31
20
|
return undefined;
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
const uniqueKey = this.getKey(options.name, options.context);
|
|
22
|
+
const entry = {
|
|
34
23
|
name: options.name,
|
|
35
24
|
type: 'mark',
|
|
36
25
|
value: perf.now(),
|
|
@@ -38,26 +27,29 @@ var AnalyticsController = /** @class */ (function () {
|
|
|
38
27
|
};
|
|
39
28
|
this.data.set(uniqueKey, entry);
|
|
40
29
|
return entry;
|
|
41
|
-
}
|
|
42
|
-
|
|
30
|
+
}
|
|
31
|
+
measure(options) {
|
|
43
32
|
if (!this.enabled)
|
|
44
33
|
return undefined;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
const uniqueKey = this.getKey(options.name, options.context);
|
|
35
|
+
const startMark = this.data.get(this.getKey(options.start, options.context));
|
|
36
|
+
const endMark = this.data.get(this.getKey(options.end, options.context));
|
|
48
37
|
if (!startMark || !endMark) {
|
|
49
38
|
return undefined;
|
|
50
39
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
40
|
+
const duration = endMark.value - startMark.value;
|
|
41
|
+
const roundedDuration = Math.round(duration * 100) / 100;
|
|
42
|
+
const existingEntry = this.data.get(uniqueKey);
|
|
54
43
|
if (existingEntry && options.sum) {
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
const newDuration = existingEntry.value + roundedDuration;
|
|
45
|
+
const newEntry = {
|
|
46
|
+
...existingEntry,
|
|
47
|
+
value: newDuration,
|
|
48
|
+
};
|
|
57
49
|
this.data.set(uniqueKey, newEntry);
|
|
58
50
|
return newEntry;
|
|
59
51
|
}
|
|
60
|
-
|
|
52
|
+
const entry = {
|
|
61
53
|
name: options.name,
|
|
62
54
|
type: 'measure',
|
|
63
55
|
value: roundedDuration,
|
|
@@ -68,48 +60,46 @@ var AnalyticsController = /** @class */ (function () {
|
|
|
68
60
|
}
|
|
69
61
|
this.data.set(uniqueKey, entry);
|
|
70
62
|
return entry;
|
|
71
|
-
}
|
|
72
|
-
|
|
63
|
+
}
|
|
64
|
+
update(options) {
|
|
73
65
|
if (!this.enabled)
|
|
74
66
|
return options.value;
|
|
75
|
-
|
|
76
|
-
|
|
67
|
+
const uniqueKey = this.getKey(options.value.name, options.context);
|
|
68
|
+
const currentItem = this.data.get(uniqueKey);
|
|
77
69
|
if (currentItem) {
|
|
78
|
-
|
|
70
|
+
const newItem = { ...currentItem, ...options.value };
|
|
79
71
|
this.data.set(uniqueKey, newItem);
|
|
80
72
|
}
|
|
81
73
|
else {
|
|
82
74
|
this.data.set(uniqueKey, options.value);
|
|
83
75
|
}
|
|
84
76
|
return this.data.get(uniqueKey);
|
|
85
|
-
}
|
|
86
|
-
|
|
77
|
+
}
|
|
78
|
+
getResourceInfosFromPerformanceAPI() {
|
|
87
79
|
if (typeof performance === 'undefined')
|
|
88
80
|
return [];
|
|
89
|
-
|
|
81
|
+
const entries = perf.getEntriesByType('resource');
|
|
90
82
|
return entries;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
83
|
+
}
|
|
84
|
+
get(options) {
|
|
85
|
+
const uniqueKey = this.getKey(options.name, options.context);
|
|
94
86
|
return this.data.get(uniqueKey);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return Array.from(this.data.values()).filter(
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return Array.from(this.data.values()).filter(
|
|
101
|
-
}
|
|
102
|
-
|
|
87
|
+
}
|
|
88
|
+
getByType(type) {
|
|
89
|
+
return Array.from(this.data.values()).filter((entry) => entry.type === type);
|
|
90
|
+
}
|
|
91
|
+
getByName(name) {
|
|
92
|
+
return Array.from(this.data.values()).filter((entry) => entry.name === name);
|
|
93
|
+
}
|
|
94
|
+
clear() {
|
|
103
95
|
this.data.clear();
|
|
104
|
-
}
|
|
105
|
-
|
|
96
|
+
}
|
|
97
|
+
getKey(key, context) {
|
|
106
98
|
if (!context) {
|
|
107
99
|
return key;
|
|
108
100
|
}
|
|
109
|
-
|
|
101
|
+
const hash = generateObjectHash(context);
|
|
110
102
|
return key + '_' + hash;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
}());
|
|
114
|
-
export { AnalyticsController };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
115
105
|
//# sourceMappingURL=analytics.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.controller.js","sourceRoot":"","sources":["../../src/analytics.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analytics.controller.js","sourceRoot":"","sources":["../../src/analytics.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
import { cloneDeep } from 'lodash-es';
|
|
2
2
|
import { generateObjectHash } from './object-hash';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
export class CacheController {
|
|
4
|
+
enabled;
|
|
5
|
+
cache;
|
|
6
|
+
constructor(enabled) {
|
|
5
7
|
this.enabled = enabled;
|
|
6
8
|
this.cache = new Map();
|
|
7
9
|
}
|
|
8
|
-
|
|
10
|
+
get(key, context) {
|
|
9
11
|
if (!this.enabled)
|
|
10
12
|
return undefined;
|
|
11
13
|
return this.cache.get(this.getCacheName(key, context));
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
+
}
|
|
15
|
+
set(key, context, value) {
|
|
14
16
|
if (!this.enabled)
|
|
15
17
|
return undefined;
|
|
16
18
|
this.cache.set(this.getCacheName(key, context), value);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
+
}
|
|
20
|
+
has(key, context) {
|
|
19
21
|
return this.cache.has(this.getCacheName(key, context));
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
+
}
|
|
23
|
+
clear() {
|
|
22
24
|
this.cache.clear();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
+
}
|
|
26
|
+
generateContext(constext) {
|
|
25
27
|
try {
|
|
26
28
|
return cloneDeep(constext);
|
|
27
29
|
}
|
|
@@ -29,12 +31,10 @@ var CacheController = /** @class */ (function () {
|
|
|
29
31
|
console.log('error in cache generateContext', err);
|
|
30
32
|
return constext;
|
|
31
33
|
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
}
|
|
35
|
+
getCacheName(key, context) {
|
|
36
|
+
const hash = generateObjectHash(context);
|
|
35
37
|
return key + '_' + hash;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
}());
|
|
39
|
-
export { CacheController };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
40
|
//# sourceMappingURL=cache.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.controller.js","sourceRoot":"","sources":["../../src/cache.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;
|
|
1
|
+
{"version":3,"file":"cache.controller.js","sourceRoot":"","sources":["../../src/cache.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,OAAO,eAAe;IAGP;IAFX,KAAK,CAAoB;IAEjC,YAAmB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,OAAY;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,OAAY,EAAE,KAAU;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,OAAY;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEM,eAAe,CAAC,QAAa;QAClC,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;YACnD,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,GAAW,EAAE,OAAY;QAC3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -1,49 +1,48 @@
|
|
|
1
1
|
import { cloneDeep } from 'lodash-es';
|
|
2
2
|
import { perf } from './performance';
|
|
3
3
|
import { generateKey } from './helper';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
export class ChangeDetector {
|
|
5
|
+
key;
|
|
6
|
+
parentCd;
|
|
7
|
+
dcuplInitOptions;
|
|
8
|
+
analyticsController;
|
|
9
|
+
off;
|
|
10
|
+
updateListener = new Set();
|
|
11
|
+
constructor() { }
|
|
12
|
+
_init(options) {
|
|
10
13
|
this.key = options.cdRefKey;
|
|
11
14
|
this.analyticsController = options.analyticsController;
|
|
12
15
|
this.parentCd = options.parentCd;
|
|
13
16
|
this.dcuplInitOptions = options.dcuplInitOptions;
|
|
14
17
|
if (this.parentCd) {
|
|
15
|
-
this.off = this.parentCd.on(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
_this.trigger(msg);
|
|
18
|
+
this.off = this.parentCd.on((msg) => {
|
|
19
|
+
if (msg.action === 'update' && msg.originCdRefKey === this.parentCd?.key) {
|
|
20
|
+
this.trigger(msg);
|
|
19
21
|
}
|
|
20
22
|
});
|
|
21
23
|
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
+
}
|
|
25
|
+
destroy() {
|
|
24
26
|
if (this.off) {
|
|
25
27
|
this.off();
|
|
26
28
|
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
+
}
|
|
30
|
+
trigger(msg) {
|
|
29
31
|
if (!msg.originCdRefKey) {
|
|
30
32
|
msg.originCdRefKey = this.key;
|
|
31
33
|
}
|
|
32
|
-
this.updateListener.forEach(
|
|
34
|
+
this.updateListener.forEach((cb) => {
|
|
33
35
|
cb(msg);
|
|
34
36
|
});
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
var _this = this;
|
|
37
|
+
}
|
|
38
|
+
on(cb) {
|
|
38
39
|
this.updateListener.add(cb);
|
|
39
|
-
return
|
|
40
|
-
|
|
40
|
+
return () => {
|
|
41
|
+
this.updateListener.delete(cb);
|
|
41
42
|
};
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
export { ChangeDetector };
|
|
46
|
-
export var clone = function (obj, shouldClone) {
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export const clone = (obj, shouldClone) => {
|
|
47
46
|
if (!shouldClone) {
|
|
48
47
|
return obj;
|
|
49
48
|
}
|
|
@@ -54,15 +53,14 @@ export var clone = function (obj, shouldClone) {
|
|
|
54
53
|
return cloneDeep(obj);
|
|
55
54
|
}
|
|
56
55
|
};
|
|
57
|
-
|
|
58
|
-
var _a, _b;
|
|
56
|
+
const finish = (cdRef, msg, start, context, result) => {
|
|
59
57
|
try {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
const shouldClone = !!cdRef.dcuplInitOptions.performance?.clone?.enabled && !!msg.cloneResult;
|
|
59
|
+
const valueToReturn = clone(result, shouldClone);
|
|
60
|
+
const end = perf.now();
|
|
63
61
|
msg.duration = end - start;
|
|
64
|
-
cdRef
|
|
65
|
-
|
|
62
|
+
cdRef?.trigger(msg);
|
|
63
|
+
const value = {
|
|
66
64
|
duration: msg.duration,
|
|
67
65
|
};
|
|
68
66
|
if (msg.modelKey) {
|
|
@@ -72,13 +70,13 @@ var finish = function (cdRef, msg, start, context, result) {
|
|
|
72
70
|
value.args = msg.args;
|
|
73
71
|
}
|
|
74
72
|
cdRef.analyticsController.mark({
|
|
75
|
-
name:
|
|
73
|
+
name: `${msg.name}:end`,
|
|
76
74
|
context: context,
|
|
77
75
|
});
|
|
78
76
|
cdRef.analyticsController.measure({
|
|
79
|
-
name:
|
|
80
|
-
start:
|
|
81
|
-
end:
|
|
77
|
+
name: `${msg.name}`,
|
|
78
|
+
start: `${msg.name}:start`,
|
|
79
|
+
end: `${msg.name}:end`,
|
|
82
80
|
context: context,
|
|
83
81
|
detail: value,
|
|
84
82
|
});
|
|
@@ -88,28 +86,23 @@ var finish = function (cdRef, msg, start, context, result) {
|
|
|
88
86
|
return result;
|
|
89
87
|
}
|
|
90
88
|
};
|
|
91
|
-
export
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
descriptor.value = function () {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
args[_i] = arguments[_i];
|
|
99
|
-
}
|
|
100
|
-
var cdRef = this.cdRef;
|
|
101
|
-
var start = perf.now();
|
|
102
|
-
var context = '';
|
|
89
|
+
export const trigger = (msg) => {
|
|
90
|
+
const log = (_target, _propertyKey, descriptor) => {
|
|
91
|
+
const originalMethod = descriptor.value;
|
|
92
|
+
descriptor.value = function (...args) {
|
|
93
|
+
const cdRef = this.cdRef;
|
|
94
|
+
const start = perf.now();
|
|
95
|
+
let context = '';
|
|
103
96
|
if (msg.mergeAnalytics) {
|
|
104
97
|
}
|
|
105
98
|
else {
|
|
106
99
|
context = generateKey();
|
|
107
100
|
}
|
|
108
101
|
cdRef.analyticsController.mark({
|
|
109
|
-
name:
|
|
110
|
-
context
|
|
102
|
+
name: `${msg.name}:start`,
|
|
103
|
+
context,
|
|
111
104
|
});
|
|
112
|
-
|
|
105
|
+
const modelKey = this.model?.key;
|
|
113
106
|
if (!msg.originCdRefKey && cdRef.key) {
|
|
114
107
|
msg.originCdRefKey = cdRef.key;
|
|
115
108
|
}
|
|
@@ -117,11 +110,11 @@ export var trigger = function (msg) {
|
|
|
117
110
|
msg.modelKey = modelKey;
|
|
118
111
|
}
|
|
119
112
|
try {
|
|
120
|
-
|
|
113
|
+
const result = originalMethod.apply(this, args);
|
|
121
114
|
msg.method = _propertyKey;
|
|
122
115
|
msg.args = args;
|
|
123
116
|
if (result && 'then' in result) {
|
|
124
|
-
return result.then(
|
|
117
|
+
return result.then((result) => {
|
|
125
118
|
return finish(cdRef, msg, start, context, result);
|
|
126
119
|
});
|
|
127
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeDetection.js","sourceRoot":"","sources":["../../src/changeDetection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAgCvC;
|
|
1
|
+
{"version":3,"file":"changeDetection.js","sourceRoot":"","sources":["../../src/changeDetection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,75 +1,37 @@
|
|
|
1
|
-
var __values = (this && this.__values) || function(o) {
|
|
2
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
3
|
-
if (m) return m.call(o);
|
|
4
|
-
if (o && typeof o.length === "number") return {
|
|
5
|
-
next: function () {
|
|
6
|
-
if (o && i >= o.length) o = void 0;
|
|
7
|
-
return { value: o && o[i++], done: !o };
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
11
|
-
};
|
|
12
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
13
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
14
|
-
if (!m) return o;
|
|
15
|
-
var i = m.call(o), r, ar = [], e;
|
|
16
|
-
try {
|
|
17
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
18
|
-
}
|
|
19
|
-
catch (error) { e = { error: error }; }
|
|
20
|
-
finally {
|
|
21
|
-
try {
|
|
22
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
23
|
-
}
|
|
24
|
-
finally { if (e) throw e.error; }
|
|
25
|
-
}
|
|
26
|
-
return ar;
|
|
27
|
-
};
|
|
28
1
|
export function computeSuggestions(data, index, options, queryManager) {
|
|
29
|
-
var e_1, _a;
|
|
30
2
|
if (!options.max) {
|
|
31
3
|
options.max = 20;
|
|
32
4
|
}
|
|
33
|
-
|
|
34
|
-
|
|
5
|
+
const suggestions = [];
|
|
6
|
+
const relevantSearchTerm = options.transform
|
|
35
7
|
? queryManager.transformValue(options.value, options.transform)
|
|
36
8
|
: options.value;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (options.excludeUndefineds && typeof key === 'undefined') {
|
|
43
|
-
continue;
|
|
44
|
-
}
|
|
45
|
-
if (options.excludeNulls && key === null) {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
if (isRelevantAttributeIndex && (relevantSearchTerm === '' || relevantSearchTerm === '//')) {
|
|
49
|
-
var suggestion = {
|
|
50
|
-
value: key,
|
|
51
|
-
keys: options.calculateResultKeys ? value : [],
|
|
52
|
-
};
|
|
53
|
-
suggestions.push(suggestion);
|
|
54
|
-
}
|
|
55
|
-
else if (isRelevantAttributeIndex && queryManager.queryFind(relevantKey, relevantSearchTerm, 'some')) {
|
|
56
|
-
var suggestion = {
|
|
57
|
-
value: key,
|
|
58
|
-
keys: options.calculateResultKeys ? value : [],
|
|
59
|
-
};
|
|
60
|
-
suggestions.push(suggestion);
|
|
61
|
-
}
|
|
62
|
-
if (suggestions.length === options.max) {
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
9
|
+
for (const [key, value] of index.entries()) {
|
|
10
|
+
const isRelevantAttributeIndex = value.some((item) => data.has(item));
|
|
11
|
+
const relevantKey = options.transform ? queryManager.transformValue(key, options.transform) : key;
|
|
12
|
+
if (options.excludeUndefineds && typeof key === 'undefined') {
|
|
13
|
+
continue;
|
|
65
14
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
15
|
+
if (options.excludeNulls && key === null) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
if (isRelevantAttributeIndex && (relevantSearchTerm === '' || relevantSearchTerm === '//')) {
|
|
19
|
+
const suggestion = {
|
|
20
|
+
value: key,
|
|
21
|
+
keys: options.calculateResultKeys ? value : [],
|
|
22
|
+
};
|
|
23
|
+
suggestions.push(suggestion);
|
|
24
|
+
}
|
|
25
|
+
else if (isRelevantAttributeIndex && queryManager.queryFind(relevantKey, relevantSearchTerm, 'some')) {
|
|
26
|
+
const suggestion = {
|
|
27
|
+
value: key,
|
|
28
|
+
keys: options.calculateResultKeys ? value : [],
|
|
29
|
+
};
|
|
30
|
+
suggestions.push(suggestion);
|
|
31
|
+
}
|
|
32
|
+
if (suggestions.length === options.max) {
|
|
33
|
+
break;
|
|
71
34
|
}
|
|
72
|
-
finally { if (e_1) throw e_1.error; }
|
|
73
35
|
}
|
|
74
36
|
return suggestions;
|
|
75
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeSuggestions.js","sourceRoot":"","sources":["../../src/computeSuggestions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"computeSuggestions.js","sourceRoot":"","sources":["../../src/computeSuggestions.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,kBAAkB,CAChC,IAA2B,EAC3B,KAA4B,EAC5B,OAA0B,EAC1B,YAA0B;IAE1B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS;QAC1C,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;QAC/D,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAElB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3C,MAAM,wBAAwB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtE,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAElG,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE,CAAC;YAC5D,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,wBAAwB,IAAI,CAAC,kBAAkB,KAAK,EAAE,IAAI,kBAAkB,KAAK,IAAI,CAAC,EAAE,CAAC;YAC3F,MAAM,UAAU,GAAe;gBAC7B,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;aAC/C,CAAC;YACF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,wBAAwB,IAAI,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,CAAC;YACvG,MAAM,UAAU,GAAe;gBAC7B,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;aAC/C,CAAC;YACF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;YACvC,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|