@dcupl/common 0.0.81-beta.1 → 0.0.81-beta.2
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/lib-cjs/getFacets.d.ts +2 -0
- package/dist/lib-cjs/getFacets.js +137 -0
- package/dist/lib-cjs/getFacets.js.map +1 -0
- package/dist/lib-cjs/index.d.ts +1 -0
- package/dist/lib-cjs/index.js +1 -0
- package/dist/lib-cjs/index.js.map +1 -1
- package/dist/lib-cjs/queryData.d.ts +2 -2
- package/dist/lib-cjs/queryData.js +243 -70
- package/dist/lib-cjs/queryData.js.map +1 -1
- package/dist/lib-cjs/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/lib-cjs/types/dcupl.types.d.ts +44 -11
- package/dist/lib-esm/getFacets.d.ts +2 -0
- package/dist/lib-esm/getFacets.js +133 -0
- package/dist/lib-esm/getFacets.js.map +1 -0
- package/dist/lib-esm/index.d.ts +1 -0
- package/dist/lib-esm/index.js +1 -0
- package/dist/lib-esm/index.js.map +1 -1
- package/dist/lib-esm/queryData.d.ts +2 -2
- package/dist/lib-esm/queryData.js +244 -71
- package/dist/lib-esm/queryData.js.map +1 -1
- package/dist/lib-esm/tsconfig.tsbuildinfo +1 -1
- package/dist/lib-esm/types/dcupl.types.d.ts +44 -11
- package/package.json +1 -1
|
@@ -50,26 +50,59 @@ export type DcuplGlobalQueryOptions<T> = DcuplItemsOptions<T> & {
|
|
|
50
50
|
listKey: string;
|
|
51
51
|
query: FilterOptions[];
|
|
52
52
|
};
|
|
53
|
-
type DcuplQueryTransformOptions = '
|
|
53
|
+
export type DcuplQueryTransformOptions = 'lowercase' | 'trim' | 'removeWhitespace';
|
|
54
54
|
type DcuplQueryOptions = {
|
|
55
|
-
transform
|
|
55
|
+
transform?: DcuplQueryTransformOptions[];
|
|
56
|
+
/**
|
|
57
|
+
* Invert possible for eq, typeof
|
|
58
|
+
*/
|
|
59
|
+
invert?: boolean;
|
|
56
60
|
};
|
|
57
|
-
type
|
|
58
|
-
type
|
|
59
|
-
type
|
|
60
|
-
type
|
|
61
|
-
export type DcuplQueryOperator = DcuplQueryGeneralOperators | DcuplQueryArrayOperators | DcuplQueryFalsy | DcuplQueryStringOperators;
|
|
61
|
+
type DcuplQueryFindOperator = 'find';
|
|
62
|
+
type DcuplQueryGeneralOperators = 'eq' | 'gt' | 'gte' | 'lt' | 'lte';
|
|
63
|
+
type DcuplQuerySpecialOperator = 'typeof' | 'isTruthy' | 'size';
|
|
64
|
+
export type DcuplQueryOperator = DcuplQueryGeneralOperators | DcuplQueryFindOperator | DcuplQuerySpecialOperator;
|
|
62
65
|
export type DcuplQueryType = 'and' | 'or';
|
|
63
|
-
|
|
66
|
+
type DcuplQueryBase = {
|
|
67
|
+
/**
|
|
68
|
+
* title, something.key someArray[0].key
|
|
69
|
+
* */
|
|
64
70
|
attribute: string;
|
|
65
|
-
operator: DcuplQueryOperator;
|
|
66
|
-
value: any;
|
|
67
71
|
options?: DcuplQueryOptions;
|
|
68
72
|
};
|
|
73
|
+
type DcuplQueryEq = DcuplQueryBase & {
|
|
74
|
+
operator: 'eq';
|
|
75
|
+
/**
|
|
76
|
+
* You may search for any value but
|
|
77
|
+
* only values of type string and { key:string } may be used for indexed search
|
|
78
|
+
*/
|
|
79
|
+
value: any;
|
|
80
|
+
};
|
|
81
|
+
type DcuplQueryFind = DcuplQueryBase & {
|
|
82
|
+
operator: 'find';
|
|
83
|
+
value: Record<string, unknown> | string;
|
|
84
|
+
};
|
|
85
|
+
type DcuplQueryNumbers = DcuplQueryBase & {
|
|
86
|
+
operator: 'gt' | 'lt' | 'gte' | 'lte';
|
|
87
|
+
value: string | number | Date;
|
|
88
|
+
};
|
|
89
|
+
type DcuplQueryTypeOf = DcuplQueryBase & {
|
|
90
|
+
operator: 'typeof';
|
|
91
|
+
value: string;
|
|
92
|
+
};
|
|
93
|
+
type DcuplQueryIsTruthy = DcuplQueryBase & {
|
|
94
|
+
operator: 'isTruthy';
|
|
95
|
+
value: boolean;
|
|
96
|
+
};
|
|
97
|
+
type DcuplQuerySize = DcuplQueryBase & {
|
|
98
|
+
operator: 'size';
|
|
99
|
+
value: number;
|
|
100
|
+
};
|
|
101
|
+
export type DcuplQuery = DcuplQueryEq | DcuplQueryNumbers | DcuplQueryTypeOf | DcuplQueryIsTruthy | DcuplQuerySize | DcuplQueryFind;
|
|
69
102
|
export type DcuplQueryGroup = {
|
|
70
103
|
queryType?: DcuplQueryType;
|
|
71
104
|
queryKey?: string;
|
|
72
|
-
query: Array<DcuplQuery
|
|
105
|
+
query: Array<DcuplQuery | DcuplQueryGroup>;
|
|
73
106
|
options?: DcuplQueryOptions;
|
|
74
107
|
};
|
|
75
108
|
export type DcuplGlobalQueryOptionsNew<T> = DcuplItemsOptions<T> & {
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ListItem, FilterItemEntry, DcuplFilterOptions, InverseIndexReferenceMap, DcuplGlobalQueryOptionsNew } from './types';
|
|
2
|
+
export declare function getFacets<ListType extends ListItem = ListItem>(modelData: Map<string, ListType>, remoteModelData: Map<string, ListType>, options: DcuplFilterOptions, query: DcuplGlobalQueryOptionsNew<any>, attributeKey: string, modelIndexMap: InverseIndexReferenceMap): FilterItemEntry[];
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
2
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
3
|
+
if (!m) return o;
|
|
4
|
+
var i = m.call(o), r, ar = [], e;
|
|
5
|
+
try {
|
|
6
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7
|
+
}
|
|
8
|
+
catch (error) { e = { error: error }; }
|
|
9
|
+
finally {
|
|
10
|
+
try {
|
|
11
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
12
|
+
}
|
|
13
|
+
finally { if (e) throw e.error; }
|
|
14
|
+
}
|
|
15
|
+
return ar;
|
|
16
|
+
};
|
|
17
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
18
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
19
|
+
if (ar || !(i in from)) {
|
|
20
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
21
|
+
ar[i] = from[i];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
25
|
+
};
|
|
26
|
+
var __values = (this && this.__values) || function(o) {
|
|
27
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
28
|
+
if (m) return m.call(o);
|
|
29
|
+
if (o && typeof o.length === "number") return {
|
|
30
|
+
next: function () {
|
|
31
|
+
if (o && i >= o.length) o = void 0;
|
|
32
|
+
return { value: o && o[i++], done: !o };
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
36
|
+
};
|
|
37
|
+
import { queryData } from './queryData';
|
|
38
|
+
export function getFacets(modelData, remoteModelData, options, query, attributeKey, modelIndexMap) {
|
|
39
|
+
var e_1, _a, e_2, _b, e_3, _c;
|
|
40
|
+
var filterItemEntries = [];
|
|
41
|
+
var currentFilteredData = queryData(modelData, query, false, modelIndexMap);
|
|
42
|
+
var remoteModelDataKeys = remoteModelData ? __spreadArray([], __read(remoteModelData === null || remoteModelData === void 0 ? void 0 : remoteModelData.keys()), false) : [];
|
|
43
|
+
var validFacetKeys = new Set(remoteModelDataKeys);
|
|
44
|
+
var indexMap = modelIndexMap.get(attributeKey);
|
|
45
|
+
if (!options.excludeUnresolved) {
|
|
46
|
+
try {
|
|
47
|
+
for (var _d = __values(indexMap.keys()), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
48
|
+
var key = _e.value;
|
|
49
|
+
validFacetKeys.add(key);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
53
|
+
finally {
|
|
54
|
+
try {
|
|
55
|
+
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
56
|
+
}
|
|
57
|
+
finally { if (e_1) throw e_1.error; }
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (options.excludeUndefineds) {
|
|
61
|
+
validFacetKeys.delete(undefined);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
validFacetKeys.add(undefined);
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
for (var _f = __values(validFacetKeys.values()), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
68
|
+
var validFacetKey = _g.value;
|
|
69
|
+
var result = new Map();
|
|
70
|
+
var indexedValueKeys = indexMap.get(validFacetKey) || [];
|
|
71
|
+
try {
|
|
72
|
+
for (var indexedValueKeys_1 = (e_3 = void 0, __values(indexedValueKeys)), indexedValueKeys_1_1 = indexedValueKeys_1.next(); !indexedValueKeys_1_1.done; indexedValueKeys_1_1 = indexedValueKeys_1.next()) {
|
|
73
|
+
var key = indexedValueKeys_1_1.value;
|
|
74
|
+
var value = currentFilteredData.get(key);
|
|
75
|
+
if (value) {
|
|
76
|
+
result.set(key, value);
|
|
77
|
+
if (!(options === null || options === void 0 ? void 0 : options.calculateFacets)) {
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
84
|
+
finally {
|
|
85
|
+
try {
|
|
86
|
+
if (indexedValueKeys_1_1 && !indexedValueKeys_1_1.done && (_c = indexedValueKeys_1.return)) _c.call(indexedValueKeys_1);
|
|
87
|
+
}
|
|
88
|
+
finally { if (e_3) throw e_3.error; }
|
|
89
|
+
}
|
|
90
|
+
var facetEntry = {
|
|
91
|
+
key: String(validFacetKey),
|
|
92
|
+
value: validFacetKey,
|
|
93
|
+
selected: isFilterItemEntrySelected(attributeKey, validFacetKey, query),
|
|
94
|
+
enabled: result.size > 0,
|
|
95
|
+
size: result.size,
|
|
96
|
+
entry: remoteModelData.get(validFacetKey),
|
|
97
|
+
resultKeys: Array.from(result.keys()),
|
|
98
|
+
};
|
|
99
|
+
if ((options === null || options === void 0 ? void 0 : options.excludeZeros) && facetEntry.size === 0) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if ((options === null || options === void 0 ? void 0 : options.count) && filterItemEntries.length === (options === null || options === void 0 ? void 0 : options.count)) {
|
|
103
|
+
return filterItemEntries;
|
|
104
|
+
}
|
|
105
|
+
filterItemEntries.push(facetEntry);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
109
|
+
finally {
|
|
110
|
+
try {
|
|
111
|
+
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
|
|
112
|
+
}
|
|
113
|
+
finally { if (e_2) throw e_2.error; }
|
|
114
|
+
}
|
|
115
|
+
return filterItemEntries;
|
|
116
|
+
}
|
|
117
|
+
var isFilterItemEntrySelected = function (groupKey, facetKey, query) {
|
|
118
|
+
var idx = query.query.findIndex(function (query) { return 'queryKey' in query && query.queryKey === groupKey; });
|
|
119
|
+
// console.log('isFilterItemEntrySelected', groupKey, facetKey, JSON.stringify(query, null, 2), idx);
|
|
120
|
+
if (idx > -1) {
|
|
121
|
+
var queryGroup = query.query[idx];
|
|
122
|
+
return !!queryGroup.query.find(function (query) {
|
|
123
|
+
var _a;
|
|
124
|
+
if ('attribute' in query) {
|
|
125
|
+
var key = ((_a = query.value) === null || _a === void 0 ? void 0 : _a.key) || query.value;
|
|
126
|
+
return query.attribute === groupKey && key === facetKey;
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return false;
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=getFacets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFacets.js","sourceRoot":"","sources":["../../src/getFacets.ts"],"names":[],"mappings":"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"}
|
package/dist/lib-esm/index.d.ts
CHANGED
package/dist/lib-esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ListItem, DcuplQueryGroup } from './types';
|
|
2
|
-
export declare function queryData<ListType extends ListItem = ListItem>(initialData: Map<string, ListType>, rootQuery: DcuplQueryGroup, earlyReturn: boolean): Map<string, ListType>;
|
|
1
|
+
import { ListItem, DcuplQueryGroup, InverseIndexReferenceMap } from './types';
|
|
2
|
+
export declare function queryData<ListType extends ListItem = ListItem>(initialData: Map<string, ListType>, rootQuery: DcuplQueryGroup, earlyReturn: boolean, indexMap: InverseIndexReferenceMap): Map<string, ListType>;
|
|
@@ -9,123 +9,296 @@ var __values = (this && this.__values) || function(o) {
|
|
|
9
9
|
};
|
|
10
10
|
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
+
import { get, isEqual, find, size, startsWith, isEqualWith, differenceBy, every } from 'lodash';
|
|
29
|
+
var transformValue = function (value, transformers) {
|
|
30
|
+
var e_1, _a;
|
|
31
|
+
if (typeof value !== 'string') {
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
for (var transformers_1 = __values(transformers), transformers_1_1 = transformers_1.next(); !transformers_1_1.done; transformers_1_1 = transformers_1.next()) {
|
|
36
|
+
var transformer = transformers_1_1.value;
|
|
37
|
+
if (transformer === 'lowercase') {
|
|
38
|
+
value = value.toLowerCase();
|
|
39
|
+
}
|
|
40
|
+
else if (transformer === 'trim') {
|
|
41
|
+
value = value.trim();
|
|
42
|
+
}
|
|
43
|
+
else if (transformer === 'removeWhitespace') {
|
|
44
|
+
value = value.replace(/\s/g, '');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
49
|
+
finally {
|
|
50
|
+
try {
|
|
51
|
+
if (transformers_1_1 && !transformers_1_1.done && (_a = transformers_1.return)) _a.call(transformers_1);
|
|
52
|
+
}
|
|
53
|
+
finally { if (e_1) throw e_1.error; }
|
|
54
|
+
}
|
|
55
|
+
return value;
|
|
56
|
+
};
|
|
15
57
|
var evaluateQuery = function (query, dataEntry) {
|
|
16
|
-
var
|
|
58
|
+
var _a, _b, _c, _d, _e;
|
|
59
|
+
var dataEntryValue;
|
|
60
|
+
var queryValue = query.value;
|
|
61
|
+
if (Array.isArray((_a = query.options) === null || _a === void 0 ? void 0 : _a.transform) && query.options.transform.length > 0) {
|
|
62
|
+
queryValue = transformValue(queryValue, query.options.transform);
|
|
63
|
+
}
|
|
64
|
+
if (query.attribute.includes('.') || query.attribute.includes('[')) {
|
|
65
|
+
dataEntryValue = get(dataEntry, query.attribute);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
dataEntryValue = dataEntry[query.attribute];
|
|
69
|
+
}
|
|
70
|
+
if (Array.isArray((_b = query.options) === null || _b === void 0 ? void 0 : _b.transform) && query.options.transform.length > 0) {
|
|
71
|
+
dataEntryValue = transformValue(dataEntryValue, query.options.transform);
|
|
72
|
+
}
|
|
73
|
+
if (typeof dataEntryValue === 'undefined' || dataEntryValue === null) {
|
|
74
|
+
var allowedUndefinedAndNullOperators = ['typeof', 'isTruthy', 'eq'];
|
|
75
|
+
if (!allowedUndefinedAndNullOperators.includes(query.operator)) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
17
79
|
switch (query.operator) {
|
|
18
80
|
case 'eq':
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
81
|
+
if (!((_c = query.options) === null || _c === void 0 ? void 0 : _c.invert)) {
|
|
82
|
+
return isEqual(dataEntryValue, queryValue);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
return !isEqual(dataEntryValue, queryValue);
|
|
86
|
+
}
|
|
87
|
+
case 'find': {
|
|
88
|
+
if (!((_d = query.options) === null || _d === void 0 ? void 0 : _d.invert)) {
|
|
89
|
+
return queryFind(dataEntryValue, queryValue);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return !queryFind(dataEntryValue, queryValue);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
22
95
|
case 'lt':
|
|
23
|
-
return
|
|
96
|
+
return dataEntryValue < queryValue;
|
|
24
97
|
case 'gt':
|
|
25
|
-
return
|
|
98
|
+
return dataEntryValue > queryValue;
|
|
26
99
|
case 'lte':
|
|
27
|
-
return
|
|
100
|
+
return dataEntryValue <= queryValue;
|
|
28
101
|
case 'gte':
|
|
29
|
-
return
|
|
30
|
-
case '
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return typeof value !== 'undefined';
|
|
34
|
-
case 'isNull':
|
|
35
|
-
return value === null;
|
|
36
|
-
case 'isNotNull':
|
|
37
|
-
return value !== null;
|
|
38
|
-
case 'isFalsy':
|
|
39
|
-
return !value;
|
|
40
|
-
case 'isTruthy':
|
|
41
|
-
return !!value;
|
|
42
|
-
case 'startsWith': {
|
|
43
|
-
if (typeof value === 'string') {
|
|
44
|
-
return value.startsWith(query.value);
|
|
102
|
+
return dataEntryValue >= queryValue;
|
|
103
|
+
case 'typeof':
|
|
104
|
+
if (!((_e = query.options) === null || _e === void 0 ? void 0 : _e.invert)) {
|
|
105
|
+
return typeof dataEntryValue === queryValue;
|
|
45
106
|
}
|
|
46
107
|
else {
|
|
47
|
-
return
|
|
108
|
+
return typeof dataEntryValue !== queryValue;
|
|
48
109
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return value.endsWith(query.value);
|
|
110
|
+
case 'isTruthy':
|
|
111
|
+
if (queryValue === true) {
|
|
112
|
+
return !!dataEntryValue;
|
|
53
113
|
}
|
|
54
114
|
else {
|
|
55
|
-
return
|
|
115
|
+
return !dataEntryValue;
|
|
56
116
|
}
|
|
117
|
+
case 'size':
|
|
118
|
+
return size(dataEntryValue) === queryValue;
|
|
119
|
+
}
|
|
120
|
+
return false;
|
|
121
|
+
};
|
|
122
|
+
var evaluateEqOperator = function (query, initialDataset, indexMap) {
|
|
123
|
+
var e_2, _a;
|
|
124
|
+
var _b;
|
|
125
|
+
var filteredData = new Map();
|
|
126
|
+
var indices = indexMap.get(query.attribute);
|
|
127
|
+
if (indices) {
|
|
128
|
+
var value = void 0;
|
|
129
|
+
if (typeof query.value === 'string') {
|
|
130
|
+
value = query.value;
|
|
57
131
|
}
|
|
58
|
-
|
|
59
|
-
|
|
132
|
+
else if (((_b = query.value) === null || _b === void 0 ? void 0 : _b.key) && Object.keys(query.value).length === 1) {
|
|
133
|
+
value = query.value.key;
|
|
60
134
|
}
|
|
61
|
-
|
|
62
|
-
|
|
135
|
+
if (typeof value !== 'undefined') {
|
|
136
|
+
var indexValues = indices.get(value);
|
|
137
|
+
if (indexValues) {
|
|
138
|
+
indexValues.forEach(function (key) {
|
|
139
|
+
if (initialDataset.has(key)) {
|
|
140
|
+
filteredData.set(key, initialDataset.get(key));
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
return filteredData;
|
|
144
|
+
}
|
|
63
145
|
}
|
|
64
146
|
}
|
|
65
|
-
return false;
|
|
66
|
-
};
|
|
67
|
-
var evaluateQueryGroup = function (queryGroup, dataEntry) {
|
|
68
|
-
var e_1, _a;
|
|
69
|
-
var results = [];
|
|
70
147
|
try {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
else {
|
|
77
|
-
results.push(evaluateQueryGroup(query, dataEntry));
|
|
148
|
+
// fallback if indices do not work properly...
|
|
149
|
+
for (var initialDataset_1 = __values(initialDataset), initialDataset_1_1 = initialDataset_1.next(); !initialDataset_1_1.done; initialDataset_1_1 = initialDataset_1.next()) {
|
|
150
|
+
var _c = __read(initialDataset_1_1.value, 2), key = _c[0], value = _c[1];
|
|
151
|
+
if (evaluateQuery(query, value)) {
|
|
152
|
+
filteredData.set(key, value);
|
|
78
153
|
}
|
|
79
154
|
}
|
|
80
155
|
}
|
|
81
|
-
catch (
|
|
156
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
82
157
|
finally {
|
|
83
158
|
try {
|
|
84
|
-
if (
|
|
159
|
+
if (initialDataset_1_1 && !initialDataset_1_1.done && (_a = initialDataset_1.return)) _a.call(initialDataset_1);
|
|
85
160
|
}
|
|
86
|
-
finally { if (
|
|
161
|
+
finally { if (e_2) throw e_2.error; }
|
|
162
|
+
}
|
|
163
|
+
return filteredData;
|
|
164
|
+
};
|
|
165
|
+
var equalRegexFn = function (value, queryValue) {
|
|
166
|
+
if (typeof queryValue === 'string' && startsWith(queryValue, '/')) {
|
|
167
|
+
var regex = new RegExp(queryValue.slice(1, -1));
|
|
168
|
+
return regex.test(value);
|
|
169
|
+
}
|
|
170
|
+
else if (Array.isArray(value)) {
|
|
171
|
+
return !!value.find(function (val) { return isEqualWith(val, queryValue, equalRegexFn); });
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
return isEqual(value, queryValue);
|
|
87
175
|
}
|
|
88
|
-
|
|
89
|
-
|
|
176
|
+
};
|
|
177
|
+
var queryFind = function (entryValue, queryValue) {
|
|
178
|
+
if (Array.isArray(entryValue)) {
|
|
179
|
+
if (typeof queryValue === 'string' || typeof queryValue === 'number' || typeof queryValue === 'boolean') {
|
|
180
|
+
return !!entryValue.find(function (value) { return isEqualWith(value, queryValue, equalRegexFn); });
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
if (Array.isArray(entryValue)) {
|
|
184
|
+
return !!find(entryValue, queryValue);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
return isEqualWith(entryValue, queryValue, equalRegexFn);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
90
190
|
}
|
|
91
191
|
else {
|
|
92
|
-
return
|
|
192
|
+
return isEqualWith(entryValue, queryValue, equalRegexFn);
|
|
93
193
|
}
|
|
94
194
|
};
|
|
95
|
-
var
|
|
96
|
-
if (
|
|
97
|
-
|
|
195
|
+
var validateQuery = function (query) {
|
|
196
|
+
if ('attribute' in query) {
|
|
197
|
+
if (!query.attribute || !query.operator)
|
|
198
|
+
throw new Error('invalid query - missing attribute or operator');
|
|
199
|
+
if (query.operator === 'find' && Array.isArray(query.value))
|
|
200
|
+
throw new Error('invalid query - find operator cannot have array value');
|
|
201
|
+
return true;
|
|
98
202
|
}
|
|
99
|
-
else if (
|
|
100
|
-
return
|
|
203
|
+
else if (query.query) {
|
|
204
|
+
return every(query.query, function (q) { return validateQuery(q); });
|
|
101
205
|
}
|
|
102
206
|
else {
|
|
103
|
-
|
|
207
|
+
throw new Error('invalid query - missing query or attribute');
|
|
104
208
|
}
|
|
105
209
|
};
|
|
106
|
-
|
|
107
|
-
var
|
|
210
|
+
var getEvaluatedQueryDataset = function (query, initialDataset, indexMap) {
|
|
211
|
+
var e_3, _a;
|
|
108
212
|
var filteredData = new Map();
|
|
109
|
-
|
|
213
|
+
if (query.operator === 'eq') {
|
|
214
|
+
return evaluateEqOperator(query, initialDataset, indexMap);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
try {
|
|
218
|
+
for (var initialDataset_2 = __values(initialDataset), initialDataset_2_1 = initialDataset_2.next(); !initialDataset_2_1.done; initialDataset_2_1 = initialDataset_2.next()) {
|
|
219
|
+
var _b = __read(initialDataset_2_1.value, 2), key = _b[0], value = _b[1];
|
|
220
|
+
if (evaluateQuery(query, value)) {
|
|
221
|
+
filteredData.set(key, value);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
226
|
+
finally {
|
|
227
|
+
try {
|
|
228
|
+
if (initialDataset_2_1 && !initialDataset_2_1.done && (_a = initialDataset_2.return)) _a.call(initialDataset_2);
|
|
229
|
+
}
|
|
230
|
+
finally { if (e_3) throw e_3.error; }
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return filteredData;
|
|
234
|
+
};
|
|
235
|
+
var evaluateQueryGroup = function (queryGroup, initialDataset, earlyReturn, indexMap) {
|
|
236
|
+
var e_4, _a, e_5, _b;
|
|
237
|
+
var _c;
|
|
238
|
+
var filteredData = new Map();
|
|
239
|
+
var currentDataset = initialDataset;
|
|
110
240
|
earlyReturn;
|
|
111
|
-
if (
|
|
241
|
+
if (!queryGroup.query || ((_c = queryGroup.query) === null || _c === void 0 ? void 0 : _c.length) === 0) {
|
|
112
242
|
return currentDataset;
|
|
113
243
|
}
|
|
114
244
|
try {
|
|
115
|
-
for (var
|
|
116
|
-
var
|
|
117
|
-
|
|
118
|
-
|
|
245
|
+
for (var _d = __values(queryGroup.query), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
246
|
+
var query = _e.value;
|
|
247
|
+
var result = new Map();
|
|
248
|
+
if ('attribute' in query) {
|
|
249
|
+
result = getEvaluatedQueryDataset(query, currentDataset, indexMap);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
result = evaluateQueryGroup(query, currentDataset, earlyReturn, indexMap);
|
|
253
|
+
}
|
|
254
|
+
if (filteredData.size === 0) {
|
|
255
|
+
filteredData = result;
|
|
256
|
+
}
|
|
257
|
+
if (queryGroup.queryType === 'or') {
|
|
258
|
+
result.forEach(function (item) {
|
|
259
|
+
filteredData.set(item.key, item);
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
var diff = differenceBy(Array.from(filteredData.values()), Array.from(result.values()), 'key');
|
|
264
|
+
try {
|
|
265
|
+
for (var diff_1 = (e_5 = void 0, __values(diff)), diff_1_1 = diff_1.next(); !diff_1_1.done; diff_1_1 = diff_1.next()) {
|
|
266
|
+
var item = diff_1_1.value;
|
|
267
|
+
filteredData.delete(item.key);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
271
|
+
finally {
|
|
272
|
+
try {
|
|
273
|
+
if (diff_1_1 && !diff_1_1.done && (_b = diff_1.return)) _b.call(diff_1);
|
|
274
|
+
}
|
|
275
|
+
finally { if (e_5) throw e_5.error; }
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
if (queryGroup.queryType === 'and') {
|
|
279
|
+
currentDataset = filteredData;
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
currentDataset = initialDataset;
|
|
119
283
|
}
|
|
120
284
|
}
|
|
121
285
|
}
|
|
122
|
-
catch (
|
|
286
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
123
287
|
finally {
|
|
124
288
|
try {
|
|
125
|
-
if (
|
|
289
|
+
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
126
290
|
}
|
|
127
|
-
finally { if (
|
|
291
|
+
finally { if (e_4) throw e_4.error; }
|
|
128
292
|
}
|
|
129
293
|
return filteredData;
|
|
294
|
+
};
|
|
295
|
+
export function queryData(initialData, rootQuery, earlyReturn, indexMap) {
|
|
296
|
+
// const currentDataset = new Map(initialData);
|
|
297
|
+
var currentDataset = initialData;
|
|
298
|
+
if (rootQuery.query.length === 0) {
|
|
299
|
+
return initialData;
|
|
300
|
+
}
|
|
301
|
+
validateQuery(rootQuery);
|
|
302
|
+
return evaluateQueryGroup(rootQuery, currentDataset, earlyReturn, indexMap);
|
|
130
303
|
}
|
|
131
304
|
//# sourceMappingURL=queryData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryData.js","sourceRoot":"","sources":["../../src/queryData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queryData.js","sourceRoot":"","sources":["../../src/queryData.ts"],"names":[],"mappings":"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"}
|