@dcupl/common 1.11.11 → 2.0.0-beta.1
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/attribute-dependency-graph.d.ts +119 -0
- package/dist/esm/cache.controller.d.ts +56 -1
- package/dist/esm/changeDetection.d.ts +1 -1
- package/dist/esm/date-utils.d.ts +50 -0
- package/dist/esm/deep-query.service.d.ts +133 -0
- package/dist/esm/dependency-graph.d.ts +102 -3
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +3096 -19
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/indices.controller.d.ts +92 -0
- package/dist/esm/logger/index.d.ts +2 -0
- package/dist/esm/logger/logger.d.ts +101 -0
- package/dist/esm/pivot.d.ts +2 -1
- package/dist/esm/query-builder.d.ts +435 -2
- package/dist/esm/queryData.d.ts +9 -4
- package/dist/esm/types/dcupl.types.d.ts +80 -0
- package/dist/esm/types/internal.types.d.ts +1 -1
- package/dist/esm/types/list.types.d.ts +10 -0
- package/dist/esm/types/model.types.d.ts +49 -12
- package/dist/esm/types/query.types.d.ts +500 -2
- package/dist/node/index.cjs +5 -0
- package/dist/node/index.cjs.map +1 -0
- package/package.json +7 -8
- package/dist/browser/common.umd.js +0 -2
- package/dist/browser/common.umd.js.map +0 -1
- package/dist/esm/analytics.controller.js +0 -105
- package/dist/esm/analytics.controller.js.map +0 -1
- package/dist/esm/cache.controller.js +0 -40
- package/dist/esm/cache.controller.js.map +0 -1
- package/dist/esm/changeDetection.js +0 -179
- package/dist/esm/changeDetection.js.map +0 -1
- package/dist/esm/computeSuggestions.js +0 -38
- package/dist/esm/computeSuggestions.js.map +0 -1
- package/dist/esm/dependency-graph.js +0 -136
- package/dist/esm/dependency-graph.js.map +0 -1
- package/dist/esm/getAggregation.js +0 -170
- package/dist/esm/getAggregation.js.map +0 -1
- package/dist/esm/getFacets.js +0 -67
- package/dist/esm/getFacets.js.map +0 -1
- package/dist/esm/helper.js +0 -102
- package/dist/esm/helper.js.map +0 -1
- package/dist/esm/indices.controller.js +0 -97
- package/dist/esm/indices.controller.js.map +0 -1
- package/dist/esm/object-hash.js +0 -33
- package/dist/esm/object-hash.js.map +0 -1
- package/dist/esm/performance.js +0 -33
- package/dist/esm/performance.js.map +0 -1
- package/dist/esm/pivot.js +0 -132
- package/dist/esm/pivot.js.map +0 -1
- package/dist/esm/property-parser.js +0 -57
- package/dist/esm/property-parser.js.map +0 -1
- package/dist/esm/query-builder.js +0 -233
- package/dist/esm/query-builder.js.map +0 -1
- package/dist/esm/query.helper.js +0 -172
- package/dist/esm/query.helper.js.map +0 -1
- package/dist/esm/queryData.js +0 -360
- package/dist/esm/queryData.js.map +0 -1
- package/dist/esm/script.controller.js +0 -54
- package/dist/esm/script.controller.js.map +0 -1
- package/dist/esm/template-parser.js +0 -22
- package/dist/esm/template-parser.js.map +0 -1
- package/dist/esm/types/aggregation.types.js +0 -2
- package/dist/esm/types/aggregation.types.js.map +0 -1
- package/dist/esm/types/app-loader.types.js +0 -2
- package/dist/esm/types/app-loader.types.js.map +0 -1
- package/dist/esm/types/data.types.js +0 -2
- package/dist/esm/types/data.types.js.map +0 -1
- package/dist/esm/types/dcupl.types.js +0 -2
- package/dist/esm/types/dcupl.types.js.map +0 -1
- package/dist/esm/types/facets.types.js +0 -2
- package/dist/esm/types/facets.types.js.map +0 -1
- package/dist/esm/types/filter.types.js +0 -2
- package/dist/esm/types/filter.types.js.map +0 -1
- package/dist/esm/types/group-by.types.js +0 -2
- package/dist/esm/types/group-by.types.js.map +0 -1
- package/dist/esm/types/index.js +0 -17
- package/dist/esm/types/index.js.map +0 -1
- package/dist/esm/types/internal.types.js +0 -2
- package/dist/esm/types/internal.types.js.map +0 -1
- package/dist/esm/types/list.types.js +0 -2
- package/dist/esm/types/list.types.js.map +0 -1
- package/dist/esm/types/model.types.js +0 -16
- package/dist/esm/types/model.types.js.map +0 -1
- package/dist/esm/types/projection.types.js +0 -2
- package/dist/esm/types/projection.types.js.map +0 -1
- package/dist/esm/types/quality.types.js +0 -2
- package/dist/esm/types/quality.types.js.map +0 -1
- package/dist/esm/types/query.types.js +0 -12
- package/dist/esm/types/query.types.js.map +0 -1
- package/dist/esm/types/section.types.js +0 -2
- package/dist/esm/types/section.types.js.map +0 -1
- package/dist/esm/types/suggestion.types.js +0 -2
- package/dist/esm/types/suggestion.types.js.map +0 -1
- package/dist/esm/types/testing.types.js +0 -2
- package/dist/esm/types/testing.types.js.map +0 -1
- package/dist/node/index.cjs.js +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
function getScalingFactor(numbers) {
|
|
2
|
-
let maxDecimalPlaces = 0;
|
|
3
|
-
for (let num of numbers) {
|
|
4
|
-
const decimalPart = num.toString().split('.')[1];
|
|
5
|
-
if (decimalPart) {
|
|
6
|
-
maxDecimalPlaces = Math.max(maxDecimalPlaces, decimalPart.length);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return Math.pow(10, maxDecimalPlaces);
|
|
10
|
-
}
|
|
11
|
-
function add(a, b, factor) {
|
|
12
|
-
return (a * factor + b * factor) / factor;
|
|
13
|
-
}
|
|
14
|
-
function divide(a, b, factor) {
|
|
15
|
-
return (a * factor) / (b * factor);
|
|
16
|
-
}
|
|
17
|
-
export const getAggregation = (options, relevantData, indexMap, attribute) => {
|
|
18
|
-
if (!attribute) {
|
|
19
|
-
throw new Error('Attribute not found');
|
|
20
|
-
}
|
|
21
|
-
const aggregation = {
|
|
22
|
-
attribute: attribute,
|
|
23
|
-
types: options.types,
|
|
24
|
-
};
|
|
25
|
-
let numberAgg;
|
|
26
|
-
if (aggregation.types.includes('sum') || aggregation.types.includes('avg') || aggregation.types.includes('count')) {
|
|
27
|
-
numberAgg = getNumberAggregation(attribute, relevantData);
|
|
28
|
-
}
|
|
29
|
-
let minMax;
|
|
30
|
-
if (aggregation.types.includes('min') || aggregation.types.includes('max')) {
|
|
31
|
-
minMax = getMinMax(options.attribute, relevantData);
|
|
32
|
-
}
|
|
33
|
-
options.types.forEach((type) => {
|
|
34
|
-
if (type === 'sum') {
|
|
35
|
-
aggregation.sum = numberAgg?.sum;
|
|
36
|
-
}
|
|
37
|
-
else if (type === 'avg') {
|
|
38
|
-
aggregation.avg = numberAgg?.average;
|
|
39
|
-
}
|
|
40
|
-
else if (type === 'count') {
|
|
41
|
-
aggregation.count = numberAgg?.count;
|
|
42
|
-
}
|
|
43
|
-
else if (type === 'min') {
|
|
44
|
-
aggregation.min = minMax && minMax[0];
|
|
45
|
-
}
|
|
46
|
-
else if (type === 'max') {
|
|
47
|
-
aggregation.max = minMax && minMax[1];
|
|
48
|
-
}
|
|
49
|
-
else if (type === 'distinct') {
|
|
50
|
-
aggregation.distinct = getDistinct(options, relevantData, indexMap);
|
|
51
|
-
}
|
|
52
|
-
else if (type === 'group') {
|
|
53
|
-
aggregation.group = getGroups(options, relevantData);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
return aggregation;
|
|
57
|
-
};
|
|
58
|
-
const getMinMax = (attribute, data) => {
|
|
59
|
-
let minV = undefined;
|
|
60
|
-
let maxV = undefined;
|
|
61
|
-
for (const item of data.values()) {
|
|
62
|
-
if (item) {
|
|
63
|
-
const value = item[attribute];
|
|
64
|
-
if (minV === undefined || value < minV)
|
|
65
|
-
minV = value;
|
|
66
|
-
if (maxV === undefined || value > maxV)
|
|
67
|
-
maxV = value;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if (minV === undefined || maxV === undefined) {
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
return [minV, maxV];
|
|
74
|
-
};
|
|
75
|
-
const getGroups = (options, data) => {
|
|
76
|
-
const values = [];
|
|
77
|
-
options.groupOptions?.groups?.forEach((group) => {
|
|
78
|
-
values.push({
|
|
79
|
-
option: group,
|
|
80
|
-
count: 0,
|
|
81
|
-
keys: [],
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
const notFound = {
|
|
85
|
-
option: { value: ['$dcupl_not_found'] },
|
|
86
|
-
count: 0,
|
|
87
|
-
keys: [],
|
|
88
|
-
};
|
|
89
|
-
for (const item of data.values()) {
|
|
90
|
-
const relevantEntry = item[options.attribute];
|
|
91
|
-
for (const group of values) {
|
|
92
|
-
if ((typeof group.option.value !== 'undefined' && group.option.value.includes(relevantEntry)) ||
|
|
93
|
-
(typeof group.option.from !== 'undefined' &&
|
|
94
|
-
group.option.from < relevantEntry &&
|
|
95
|
-
typeof group.option.to !== 'undefined' &&
|
|
96
|
-
group.option.to > relevantEntry)) {
|
|
97
|
-
group.count++;
|
|
98
|
-
group.keys.push(item.key);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
if (options?.groupOptions?.calculateNotFound) {
|
|
102
|
-
notFound.count++;
|
|
103
|
-
notFound.keys.push(item.key);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
if (options?.groupOptions?.calculateNotFound) {
|
|
109
|
-
values.push(notFound);
|
|
110
|
-
}
|
|
111
|
-
return values;
|
|
112
|
-
};
|
|
113
|
-
const getNumberAggregation = (attribute, data) => {
|
|
114
|
-
// let sum = new Decimal(0);
|
|
115
|
-
let sum = 0;
|
|
116
|
-
let count = 0;
|
|
117
|
-
for (const item of data.values()) {
|
|
118
|
-
if (!item)
|
|
119
|
-
continue;
|
|
120
|
-
const value = item[attribute];
|
|
121
|
-
if (Array.isArray(value)) {
|
|
122
|
-
for (const val of value) {
|
|
123
|
-
if (typeof val === 'number') {
|
|
124
|
-
// sum = sum.add(val);
|
|
125
|
-
sum = add(sum, val, getScalingFactor([sum, val]));
|
|
126
|
-
count++;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
else if (typeof value === 'number') {
|
|
131
|
-
// sum = sum.add(value);
|
|
132
|
-
sum = add(sum, value, getScalingFactor([sum, value]));
|
|
133
|
-
count++;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
if (count === 0) {
|
|
137
|
-
return undefined;
|
|
138
|
-
}
|
|
139
|
-
// const average = sum.dividedBy(count).toNumber();
|
|
140
|
-
const average = divide(sum, count, getScalingFactor([sum, count]));
|
|
141
|
-
const agg = {
|
|
142
|
-
average,
|
|
143
|
-
count: data.size,
|
|
144
|
-
sum: sum,
|
|
145
|
-
};
|
|
146
|
-
return agg;
|
|
147
|
-
};
|
|
148
|
-
export const getDistinct = (options, data, indexMap) => {
|
|
149
|
-
const values = [];
|
|
150
|
-
for (const [attributeValue, itemKeys] of indexMap) {
|
|
151
|
-
if (options.excludeUndefineds && typeof attributeValue === 'undefined') {
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
if (itemKeys.find((key) => data.has(key))) {
|
|
155
|
-
const value = {
|
|
156
|
-
value: attributeValue,
|
|
157
|
-
count: itemKeys.length,
|
|
158
|
-
};
|
|
159
|
-
if (!options.distinctOptions?.skipKeys) {
|
|
160
|
-
value.keys = itemKeys;
|
|
161
|
-
}
|
|
162
|
-
values.push(value);
|
|
163
|
-
if (options.distinctOptions?.limit && values.length >= options.distinctOptions.limit) {
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return values;
|
|
169
|
-
};
|
|
170
|
-
//# sourceMappingURL=getAggregation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getAggregation.js","sourceRoot":"","sources":["../../src/getAggregation.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/getFacets.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { DcuplQueryBuilder } from './query-builder';
|
|
2
|
-
import { cloneDeep } from 'lodash-es';
|
|
3
|
-
const queryBuilder = new DcuplQueryBuilder();
|
|
4
|
-
export function getFacets(modelData, remoteModelData, options, query, attribute, modelIndexMap, queryManager) {
|
|
5
|
-
const filterItemEntries = [];
|
|
6
|
-
const queryWithoutCurrentFilter = queryBuilder.removeQuery({ groupKey: attribute }, cloneDeep(query));
|
|
7
|
-
const currentFilteredData = queryManager.queryData(modelData, queryWithoutCurrentFilter, false, modelIndexMap);
|
|
8
|
-
const remoteModelDataKeys = remoteModelData ? [...remoteModelData?.keys()] : [];
|
|
9
|
-
const validFacetKeys = new Set(remoteModelDataKeys);
|
|
10
|
-
const indexMap = modelIndexMap.get(attribute);
|
|
11
|
-
if (!options.excludeUnresolved) {
|
|
12
|
-
for (const key of indexMap.keys()) {
|
|
13
|
-
validFacetKeys.add(key);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
if (options.excludeUndefineds) {
|
|
17
|
-
validFacetKeys.delete(undefined);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
validFacetKeys.add(undefined);
|
|
21
|
-
}
|
|
22
|
-
for (const validFacetKey of validFacetKeys.values()) {
|
|
23
|
-
const result = new Map();
|
|
24
|
-
const indexedValueKeys = indexMap.get(validFacetKey) || [];
|
|
25
|
-
for (const key of indexedValueKeys) {
|
|
26
|
-
const value = currentFilteredData.get(key);
|
|
27
|
-
if (value) {
|
|
28
|
-
result.set(key, value);
|
|
29
|
-
if (!options?.calculateFacets) {
|
|
30
|
-
break;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
const facetEntry = {
|
|
35
|
-
key: String(validFacetKey),
|
|
36
|
-
value: validFacetKey,
|
|
37
|
-
selected: isFilterItemEntrySelected(attribute, validFacetKey, query),
|
|
38
|
-
enabled: result.size > 0,
|
|
39
|
-
size: result.size,
|
|
40
|
-
entry: remoteModelData.get(validFacetKey),
|
|
41
|
-
resultKeys: Array.from(result.keys()),
|
|
42
|
-
};
|
|
43
|
-
if (options?.excludeZeros && facetEntry.size === 0) {
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
if (options?.count && filterItemEntries.length === options?.count) {
|
|
47
|
-
return filterItemEntries;
|
|
48
|
-
}
|
|
49
|
-
filterItemEntries.push(facetEntry);
|
|
50
|
-
}
|
|
51
|
-
return filterItemEntries;
|
|
52
|
-
}
|
|
53
|
-
const isFilterItemEntrySelected = (groupKey, facetKey, query) => {
|
|
54
|
-
const idx = query.queries.findIndex((query) => queryBuilder.isQueryGroup(query) && query.groupKey === groupKey);
|
|
55
|
-
if (idx > -1) {
|
|
56
|
-
const queryGroup = query.queries[idx];
|
|
57
|
-
return !!queryGroup.queries.find((query) => {
|
|
58
|
-
if (queryBuilder.isQuery(query)) {
|
|
59
|
-
const key = query.value?.key || query.value;
|
|
60
|
-
return query.attribute === groupKey && key === facetKey;
|
|
61
|
-
}
|
|
62
|
-
return false;
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
return false;
|
|
66
|
-
};
|
|
67
|
-
//# sourceMappingURL=getFacets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getFacets.js","sourceRoot":"","sources":["../../src/getFacets.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/helper.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
export const getFilterEntryId = (filterItemId, value = '') => {
|
|
2
|
-
return `${filterItemId}#${value}`;
|
|
3
|
-
};
|
|
4
|
-
export const getNumberConstraintUid = (options) => {
|
|
5
|
-
const value = `${options.gt}_${options.gte}_${options.lt}_${options.lte}_${options.eq}_${options.ne}`;
|
|
6
|
-
return value;
|
|
7
|
-
};
|
|
8
|
-
export const getDateConstraintUid = (options) => {
|
|
9
|
-
const value = `${options.gt}_${options.gte}_${options.lt}_${options.lte}_${options.eq}_${options.ne}`;
|
|
10
|
-
return value;
|
|
11
|
-
};
|
|
12
|
-
export const uniqBy = (arr, predicate) => {
|
|
13
|
-
const cb = typeof predicate === 'function' ? predicate : (o) => o[predicate];
|
|
14
|
-
return [
|
|
15
|
-
...arr
|
|
16
|
-
.reduce((map, item) => {
|
|
17
|
-
const key = item === null || item === undefined ? item : cb(item);
|
|
18
|
-
map.has(key) || map.set(key, item);
|
|
19
|
-
return map;
|
|
20
|
-
}, new Map())
|
|
21
|
-
.values(),
|
|
22
|
-
];
|
|
23
|
-
};
|
|
24
|
-
export const groupBy = (arr, criteria) => {
|
|
25
|
-
return arr.reduce(function (obj, item) {
|
|
26
|
-
// Check if the criteria is a function to run on the item or a property of it
|
|
27
|
-
const key = typeof criteria === 'function' ? criteria(item) : item[criteria];
|
|
28
|
-
// If the key doesn't exist yet, create it
|
|
29
|
-
if (!obj.hasOwnProperty(key)) {
|
|
30
|
-
obj[key] = [];
|
|
31
|
-
}
|
|
32
|
-
// Push the value to the object
|
|
33
|
-
obj[key].push(item);
|
|
34
|
-
// Return the object to the next item in the loop
|
|
35
|
-
return obj;
|
|
36
|
-
}, {});
|
|
37
|
-
};
|
|
38
|
-
export function generateKey(length = 10) {
|
|
39
|
-
let text = '';
|
|
40
|
-
const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
41
|
-
for (let i = 0; i < length; i++)
|
|
42
|
-
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
|
43
|
-
return text;
|
|
44
|
-
}
|
|
45
|
-
export const removeTrailingSlash = (str) => {
|
|
46
|
-
return str.replace(/\/+$/, '');
|
|
47
|
-
};
|
|
48
|
-
export const escapeRegExp = (text) => {
|
|
49
|
-
if (typeof text !== 'string')
|
|
50
|
-
return '';
|
|
51
|
-
return text.replace(/[[\]{}()*+?.,\\^$|#]/g, '\\$&');
|
|
52
|
-
/**
|
|
53
|
-
* original regex
|
|
54
|
-
* remove \s -
|
|
55
|
-
*/
|
|
56
|
-
// return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
|
57
|
-
};
|
|
58
|
-
export const unescapeRegExp = (escapedText) => {
|
|
59
|
-
if (typeof escapedText !== 'string')
|
|
60
|
-
return '';
|
|
61
|
-
return escapedText.replace(/\\([[\]{}()*+?.,\\^$|#])/g, '$1');
|
|
62
|
-
};
|
|
63
|
-
export const hasMinimumVersion = (version, minVersion) => {
|
|
64
|
-
try {
|
|
65
|
-
return compareVersions(version, minVersion) >= 0;
|
|
66
|
-
}
|
|
67
|
-
catch (err) {
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
/**
|
|
72
|
-
* Compares two semantic version strings.
|
|
73
|
-
* @param v1 - First version string (e.g., "1.10.2").
|
|
74
|
-
* @param v2 - Second version string (e.g., "1.9.0").
|
|
75
|
-
* @returns A number: -1 if v1 < v2, 1 if v1 > v2, 0 if equal.
|
|
76
|
-
* @throws Error if the input is not a valid semantic version.
|
|
77
|
-
*/
|
|
78
|
-
export const compareVersions = (v1, v2) => {
|
|
79
|
-
if (!isValidVersion(v1) || !isValidVersion(v2)) {
|
|
80
|
-
throw new Error(`Invalid version format: v1="${v1}", v2="${v2}". Expected format: "x.y.z"`);
|
|
81
|
-
}
|
|
82
|
-
const v1Parts = v1.split('.').map(Number);
|
|
83
|
-
const v2Parts = v2.split('.').map(Number);
|
|
84
|
-
for (let i = 0; i < 3; i++) {
|
|
85
|
-
const num1 = v1Parts[i] || 0; // Default to 0 if undefined (e.g., "1.2" treated as "1.2.0")
|
|
86
|
-
const num2 = v2Parts[i] || 0;
|
|
87
|
-
if (num1 > num2)
|
|
88
|
-
return 1;
|
|
89
|
-
if (num1 < num2)
|
|
90
|
-
return -1;
|
|
91
|
-
}
|
|
92
|
-
return 0;
|
|
93
|
-
};
|
|
94
|
-
/**
|
|
95
|
-
* Validates if a string follows semantic versioning (x.y.z).
|
|
96
|
-
* @param version - Version string to validate.
|
|
97
|
-
* @returns True if valid, otherwise false.
|
|
98
|
-
*/
|
|
99
|
-
export const isValidVersion = (version) => {
|
|
100
|
-
return /^\d+(\.\d+){0,2}$/.test(version);
|
|
101
|
-
};
|
|
102
|
-
//# sourceMappingURL=helper.js.map
|
package/dist/esm/helper.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { generateObjectHash } from './object-hash';
|
|
2
|
-
export class IndicesController {
|
|
3
|
-
indexMap = new Map();
|
|
4
|
-
// Possible performance gain*
|
|
5
|
-
dataMap = new Map();
|
|
6
|
-
constructor() { }
|
|
7
|
-
reset(attributeKey) {
|
|
8
|
-
if (attributeKey) {
|
|
9
|
-
this.indexMap.delete(attributeKey);
|
|
10
|
-
this.dataMap.delete(attributeKey);
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
this.indexMap.clear();
|
|
14
|
-
this.dataMap.clear();
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
fillDataMap(attributeKey, attributeValue) {
|
|
18
|
-
let valueMap = this.dataMap.get(attributeKey);
|
|
19
|
-
if (!valueMap) {
|
|
20
|
-
valueMap = new Map();
|
|
21
|
-
this.dataMap.set(attributeKey, valueMap);
|
|
22
|
-
}
|
|
23
|
-
for (const value of attributeValue) {
|
|
24
|
-
let keyAsString;
|
|
25
|
-
if (typeof value === 'object' && value && value.key) {
|
|
26
|
-
keyAsString = value.key;
|
|
27
|
-
}
|
|
28
|
-
else if (Array.isArray(value)) {
|
|
29
|
-
for (const item of value) {
|
|
30
|
-
this.fillDataMap(attributeKey, [item]);
|
|
31
|
-
}
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
keyAsString = value;
|
|
36
|
-
}
|
|
37
|
-
let listItem = valueMap.get(keyAsString);
|
|
38
|
-
if (!listItem) {
|
|
39
|
-
listItem = { key: keyAsString };
|
|
40
|
-
this.dataMap.get(attributeKey)?.set(keyAsString, listItem);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
fillInverseIndex(attributeKey, originKey, foreignKeys) {
|
|
45
|
-
if (!attributeKey || !originKey || !foreignKeys || !Array.isArray(foreignKeys)) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const valueMap = this.indexMap.get(attributeKey) || new Map();
|
|
49
|
-
for (const value of foreignKeys) {
|
|
50
|
-
let keyAsString;
|
|
51
|
-
if (typeof value === 'object' && value && value.key) {
|
|
52
|
-
keyAsString = value.key;
|
|
53
|
-
}
|
|
54
|
-
else if (Array.isArray(value)) {
|
|
55
|
-
// keyAsString = JSON.stringify(value);
|
|
56
|
-
for (const item of value) {
|
|
57
|
-
this.fillInverseIndex(attributeKey, originKey, [item]);
|
|
58
|
-
}
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
keyAsString = value;
|
|
63
|
-
}
|
|
64
|
-
const valueArray = valueMap.get(keyAsString) || [];
|
|
65
|
-
valueArray.push(originKey);
|
|
66
|
-
valueMap.set(keyAsString, valueArray);
|
|
67
|
-
}
|
|
68
|
-
this.indexMap.set(attributeKey, valueMap);
|
|
69
|
-
}
|
|
70
|
-
getIndex(attributeKey, context) {
|
|
71
|
-
const indexName = this.getIndexName(attributeKey, context);
|
|
72
|
-
return this.indexMap.get(indexName);
|
|
73
|
-
}
|
|
74
|
-
getData(attributeKey, context) {
|
|
75
|
-
const indexName = this.getIndexName(attributeKey, context);
|
|
76
|
-
return this.dataMap.get(indexName);
|
|
77
|
-
}
|
|
78
|
-
getOrCreateIndex(attributeKey, relevantData, context) {
|
|
79
|
-
const indexName = this.getIndexName(attributeKey, context);
|
|
80
|
-
let index = this.getIndex(indexName);
|
|
81
|
-
if (!index) {
|
|
82
|
-
this.reset(indexName);
|
|
83
|
-
this.indexMap.set(indexName, new Map());
|
|
84
|
-
for (const entry of relevantData.values()) {
|
|
85
|
-
const attributeValue = entry[attributeKey];
|
|
86
|
-
this.fillInverseIndex(indexName, entry.key, [attributeValue]);
|
|
87
|
-
this.fillDataMap(indexName, [attributeValue]);
|
|
88
|
-
}
|
|
89
|
-
index = this.getIndex(indexName) || new Map();
|
|
90
|
-
}
|
|
91
|
-
return index;
|
|
92
|
-
}
|
|
93
|
-
getIndexName(attributeKey, context) {
|
|
94
|
-
return context ? attributeKey + '_' + generateObjectHash(context) : attributeKey;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=indices.controller.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indices.controller.js","sourceRoot":"","sources":["../../src/indices.controller.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/object-hash.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export function generateObjectHash(input) {
|
|
2
|
-
const stringifiedInput = fastStringify(input);
|
|
3
|
-
return simpleHash(stringifiedInput);
|
|
4
|
-
}
|
|
5
|
-
function fastStringify(input) {
|
|
6
|
-
if (typeof input !== 'object' || input === null) {
|
|
7
|
-
return String(input);
|
|
8
|
-
}
|
|
9
|
-
if (Array.isArray(input)) {
|
|
10
|
-
return '[' + input.map(fastStringify).join(',') + ']';
|
|
11
|
-
}
|
|
12
|
-
const keys = Object.keys(input).sort();
|
|
13
|
-
let result = '{';
|
|
14
|
-
for (let i = 0; i < keys.length; i++) {
|
|
15
|
-
const key = keys[i];
|
|
16
|
-
result += key + ':' + fastStringify(input[key]);
|
|
17
|
-
if (i < keys.length - 1) {
|
|
18
|
-
result += ',';
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
result += '}';
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
function simpleHash(str) {
|
|
25
|
-
let hash = 0;
|
|
26
|
-
for (let i = 0; i < str.length; i++) {
|
|
27
|
-
const char = str.charCodeAt(i);
|
|
28
|
-
hash = (hash << 5) - hash + char;
|
|
29
|
-
hash |= 0; // Convert to 32bit integer
|
|
30
|
-
}
|
|
31
|
-
return hash.toString(16);
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=object-hash.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"object-hash.js","sourceRoot":"","sources":["../../src/object-hash.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,KAAU;IAC3C,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,KAAU;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,MAAM,GAAG,GAAG,CAAC;IAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QAC9B,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,CAAC,CAAC,2BAA2B;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC"}
|
package/dist/esm/performance.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export const perf = {
|
|
2
|
-
now: () => {
|
|
3
|
-
if (typeof performance !== 'undefined' && performance.now) {
|
|
4
|
-
return performance.now();
|
|
5
|
-
}
|
|
6
|
-
else {
|
|
7
|
-
return new Date().getTime();
|
|
8
|
-
}
|
|
9
|
-
},
|
|
10
|
-
mark: (name) => {
|
|
11
|
-
if (typeof performance !== 'undefined' && performance.mark) {
|
|
12
|
-
performance.mark(name);
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
measure: (name, start, end) => {
|
|
16
|
-
if (typeof performance !== 'undefined' && performance.measure) {
|
|
17
|
-
performance.measure(name, start, end);
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
getEntriesByName(url) {
|
|
21
|
-
if (typeof performance !== 'undefined' && performance.getEntriesByName) {
|
|
22
|
-
return performance.getEntriesByName(url);
|
|
23
|
-
}
|
|
24
|
-
return undefined;
|
|
25
|
-
},
|
|
26
|
-
getEntriesByType(type) {
|
|
27
|
-
if (typeof performance !== 'undefined' && performance.getEntriesByType) {
|
|
28
|
-
return performance.getEntriesByType(type);
|
|
29
|
-
}
|
|
30
|
-
return undefined;
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=performance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/performance.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,GAAG,EAAE,GAAW,EAAE;QAChB,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;YAC1D,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,EAAE,CAAC,IAAY,EAAQ,EAAE;QAC3B,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;YAC3D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAQ,EAAE;QAC1D,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YAC9D,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,GAAW;QAC1B,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,CAAC,gBAAgB,EAAE,CAAC;YACvE,OAAO,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,gBAAgB,CAAC,IAAY;QAC3B,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,CAAC,gBAAgB,EAAE,CAAC;YACvE,OAAO,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC"}
|