quetch 0.14.0 → 0.15.0
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/tools/queryItemList.js +4 -4
- package/dist/tools/queryItemList.js.map +1 -1
- package/dist/tools/{filterItem.d.ts → testFilter.d.ts} +2 -2
- package/dist/tools/testFilter.js +214 -0
- package/dist/tools/testFilter.js.map +1 -0
- package/dist/tools.d.ts +1 -1
- package/dist/tools.js +1 -1
- package/dist/tools.js.map +1 -1
- package/dist/types/FilterArray.d.ts +2 -2
- package/dist/types/FilterBoolean.d.ts +2 -2
- package/dist/types/FilterField.d.ts +1 -1
- package/dist/types/FilterNumber.d.ts +2 -2
- package/dist/types/FilterString.d.ts +2 -2
- package/dist/types/FilterStringIntersect.d.ts +2 -2
- package/dist/types/FilterStringMatch.d.ts +3 -6
- package/dist/types/Value.d.ts +15 -0
- package/dist/types/Value.js +2 -0
- package/dist/types/Value.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/lib/tools/queryItemList.ts +4 -4
- package/lib/tools/{filterItem.test.ts → testFilter.test.ts} +44 -38
- package/lib/tools/testFilter.ts +320 -0
- package/lib/tools.ts +1 -1
- package/lib/types/FilterArray.ts +2 -2
- package/lib/types/FilterBoolean.ts +2 -2
- package/lib/types/FilterField.ts +1 -1
- package/lib/types/FilterNumber.ts +2 -2
- package/lib/types/FilterString.ts +2 -2
- package/lib/types/FilterStringIntersect.ts +2 -2
- package/lib/types/FilterStringMatch.ts +3 -6
- package/lib/types/Value.ts +18 -0
- package/lib/types.ts +1 -0
- package/package.json +1 -1
- package/dist/tools/filterItem.js +0 -197
- package/dist/tools/filterItem.js.map +0 -1
- package/lib/tools/filterItem.ts +0 -299
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RequestError } from "../errors.js";
|
|
2
2
|
import { filterFromContext } from "./filterFromContext.js";
|
|
3
|
-
import { filterItem } from "./filterItem.js";
|
|
4
3
|
import { sortItemList } from "./sortItemList.js";
|
|
4
|
+
import { testFilter } from "./testFilter.js";
|
|
5
5
|
function mergeContextAndFilter(context, filter) {
|
|
6
6
|
if (context === undefined) {
|
|
7
7
|
return filter ?? { operator: "any" };
|
|
@@ -32,7 +32,7 @@ function queryItemList(query) {
|
|
|
32
32
|
let result = data;
|
|
33
33
|
if (context !== undefined || filter !== undefined) {
|
|
34
34
|
const normalizedFilter = mergeContextAndFilter(context, filter);
|
|
35
|
-
result = data.filter((item) =>
|
|
35
|
+
result = data.filter((item) => testFilter(normalizedFilter, item, query.settings));
|
|
36
36
|
}
|
|
37
37
|
// Sort
|
|
38
38
|
result = sortItemList(order, result === data ? [...data] : result);
|
|
@@ -43,7 +43,7 @@ function queryItemList(query) {
|
|
|
43
43
|
return result;
|
|
44
44
|
}
|
|
45
45
|
const normalizedFilter = mergeContextAndFilter(context, filter);
|
|
46
|
-
const result = data.find((item) =>
|
|
46
|
+
const result = data.find((item) => testFilter(normalizedFilter, item, query.settings));
|
|
47
47
|
if (result === undefined) {
|
|
48
48
|
throw new RequestError("Not found", 404, query);
|
|
49
49
|
}
|
|
@@ -58,7 +58,7 @@ function queryItemList(query) {
|
|
|
58
58
|
}
|
|
59
59
|
const normalizedFilter = mergeContextAndFilter(context, filter);
|
|
60
60
|
return data.reduce((result, item) => {
|
|
61
|
-
if (
|
|
61
|
+
if (testFilter(normalizedFilter, item, query.settings)) {
|
|
62
62
|
return result + 1;
|
|
63
63
|
}
|
|
64
64
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryItemList.js","sourceRoot":"","sources":["../../lib/tools/queryItemList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAW5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"queryItemList.js","sourceRoot":"","sources":["../../lib/tools/queryItemList.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Filter } from "../types";
|
|
2
1
|
import type { QuerySettings } from "../types/QuerySettings.js";
|
|
2
|
+
import type { Filter } from "../types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Checks wether the provided `value` matches the `filter` or not.
|
|
5
5
|
*
|
|
@@ -8,4 +8,4 @@ import type { QuerySettings } from "../types/QuerySettings.js";
|
|
|
8
8
|
* @param settings Optional query settings.
|
|
9
9
|
* @returns `true` if the `value` matches the `filter` and `false` otherwise.
|
|
10
10
|
*/
|
|
11
|
-
export declare function
|
|
11
|
+
export declare function testFilter<T extends object>(filter: Filter<T> | undefined, value: T | undefined, settings?: QuerySettings<T>): boolean;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { SymbolCache } from "../constants/SymbolCache.js";
|
|
2
|
+
import { filterChildren } from "./filterChildren.js";
|
|
3
|
+
import { get } from "./get.js";
|
|
4
|
+
const { isArray } = Array;
|
|
5
|
+
function valueFromFilter(value, filter) {
|
|
6
|
+
if ("valueField" in filter) {
|
|
7
|
+
return get(value, filter.valueField);
|
|
8
|
+
}
|
|
9
|
+
return filter.value;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Checks wether the provided `value` matches the `filter` or not.
|
|
13
|
+
*
|
|
14
|
+
* @param filter The filter to apply.
|
|
15
|
+
* @param value The value to check.
|
|
16
|
+
* @param settings Optional query settings.
|
|
17
|
+
* @returns `true` if the `value` matches the `filter` and `false` otherwise.
|
|
18
|
+
*/
|
|
19
|
+
export function testFilter(filter, value, settings) {
|
|
20
|
+
if (value === undefined) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (filter === undefined) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
switch (filter.operator) {
|
|
27
|
+
case "all":
|
|
28
|
+
return filter.value.every((filter) => testFilter(filter, value));
|
|
29
|
+
case "any": {
|
|
30
|
+
if (filter.value === undefined || filter.value.length === 0) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return filter.value.some((filter) => testFilter(filter, value));
|
|
34
|
+
}
|
|
35
|
+
case "none": {
|
|
36
|
+
if (filter.value === undefined || filter.value.length === 0) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return filter.value.every((filter) => !testFilter(filter, value));
|
|
40
|
+
}
|
|
41
|
+
case "exist":
|
|
42
|
+
return get(value, filter.value) !== undefined;
|
|
43
|
+
case "equal": {
|
|
44
|
+
const rightValue = valueFromFilter(value, filter);
|
|
45
|
+
if (isArray(rightValue)) {
|
|
46
|
+
const leftValue = get(value, filter.field);
|
|
47
|
+
if (!isArray(leftValue)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
if (rightValue.length !== leftValue.length) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return rightValue.every((value) => leftValue.includes(value));
|
|
54
|
+
}
|
|
55
|
+
const leftValue = get(value, filter.field);
|
|
56
|
+
if (leftValue === rightValue) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
if (filter.options ||
|
|
60
|
+
filter.locale) {
|
|
61
|
+
return (leftValue !== undefined &&
|
|
62
|
+
rightValue.localeCompare(leftValue, filter.locale, filter.options) === 0);
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
case "notEqual": {
|
|
67
|
+
const rightValue = valueFromFilter(value, filter);
|
|
68
|
+
const leftValue = get(value, filter.field);
|
|
69
|
+
if (leftValue === rightValue) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
if (filter.options ||
|
|
73
|
+
filter.locale) {
|
|
74
|
+
return (rightValue.localeCompare(get(value, filter.field), filter.locale, filter.options) !== 0);
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
case "children": {
|
|
79
|
+
if (filter[SymbolCache] === undefined) {
|
|
80
|
+
switch (true) {
|
|
81
|
+
case settings?.transformFilterChildren !== undefined:
|
|
82
|
+
filter[SymbolCache] = settings.transformFilterChildren(filter);
|
|
83
|
+
break;
|
|
84
|
+
default: {
|
|
85
|
+
const { pathFieldKey = "id", pathFieldSeparator = "/", } = settings || {};
|
|
86
|
+
filter[SymbolCache] = filterChildren(filter.value, pathFieldKey, filter.deep, pathFieldSeparator);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return testFilter(filter[SymbolCache], value);
|
|
91
|
+
}
|
|
92
|
+
case "custom": {
|
|
93
|
+
return filter.value(value);
|
|
94
|
+
}
|
|
95
|
+
case "startWith": {
|
|
96
|
+
const rightValue = valueFromFilter(value, filter);
|
|
97
|
+
const leftValue = get(value, filter.field);
|
|
98
|
+
if (leftValue === undefined || leftValue.length < rightValue.length) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
if (filter.options !== undefined || filter.locale !== undefined) {
|
|
102
|
+
return (rightValue.localeCompare(leftValue.slice(0, rightValue.length), filter.locale, filter.options) !== 0);
|
|
103
|
+
}
|
|
104
|
+
return leftValue.startsWith(rightValue) ?? false;
|
|
105
|
+
}
|
|
106
|
+
case "endWith": {
|
|
107
|
+
const rightValue = valueFromFilter(value, filter);
|
|
108
|
+
const leftValue = get(value, filter.field);
|
|
109
|
+
if (leftValue === undefined || leftValue.length < rightValue.length) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
if (filter.options !== undefined || filter.locale !== undefined) {
|
|
113
|
+
return (rightValue.localeCompare(leftValue.slice(-rightValue.length), filter.locale, filter.options) !== 0);
|
|
114
|
+
}
|
|
115
|
+
return leftValue.endsWith(rightValue) ?? false;
|
|
116
|
+
}
|
|
117
|
+
case "include": {
|
|
118
|
+
const rightValue = valueFromFilter(value, filter);
|
|
119
|
+
const leftValue = get(value, filter.field);
|
|
120
|
+
if (leftValue == null) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
if (isArray(rightValue)) {
|
|
124
|
+
// FIXME: Get unique values
|
|
125
|
+
if (!isArray(leftValue) || leftValue.length < rightValue.length) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
return rightValue.every((value) => leftValue.includes(value));
|
|
129
|
+
}
|
|
130
|
+
if (isArray(leftValue) || leftValue.length < rightValue.length) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
if (filter.options ||
|
|
134
|
+
filter.locale) {
|
|
135
|
+
const { length } = rightValue;
|
|
136
|
+
const end = leftValue.length - length + 1;
|
|
137
|
+
for (let i = 0; i < end; i++) {
|
|
138
|
+
if (rightValue.localeCompare(leftValue.slice(i, i + length), filter.locale, filter.options) === 0) {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
return leftValue.includes?.(rightValue) ?? false;
|
|
145
|
+
}
|
|
146
|
+
case "greaterThan": {
|
|
147
|
+
const rightValue = valueFromFilter(value, filter);
|
|
148
|
+
const leftValue = get(value, filter.field);
|
|
149
|
+
if (filter.options ||
|
|
150
|
+
filter.locale) {
|
|
151
|
+
return (rightValue.localeCompare(leftValue, filter.locale, filter.options) < 0);
|
|
152
|
+
}
|
|
153
|
+
return leftValue > rightValue;
|
|
154
|
+
}
|
|
155
|
+
case "greaterThanOrEqual": {
|
|
156
|
+
const rightValue = valueFromFilter(value, filter);
|
|
157
|
+
const leftValue = get(value, filter.field);
|
|
158
|
+
if (filter.options ||
|
|
159
|
+
filter.locale) {
|
|
160
|
+
return (rightValue.localeCompare(leftValue, filter.locale, filter.options) <= 0);
|
|
161
|
+
}
|
|
162
|
+
return leftValue >= rightValue;
|
|
163
|
+
}
|
|
164
|
+
case "lowerThan": {
|
|
165
|
+
const rightValue = valueFromFilter(value, filter);
|
|
166
|
+
const leftValue = get(value, filter.field);
|
|
167
|
+
if (filter.options ||
|
|
168
|
+
filter.locale) {
|
|
169
|
+
return (rightValue.localeCompare(leftValue, filter.locale, filter.options) > 0);
|
|
170
|
+
}
|
|
171
|
+
return leftValue < rightValue;
|
|
172
|
+
}
|
|
173
|
+
case "lowerThanOrEqual": {
|
|
174
|
+
const rightValue = valueFromFilter(value, filter);
|
|
175
|
+
const leftValue = get(value, filter.field);
|
|
176
|
+
if (filter.options ||
|
|
177
|
+
filter.locale) {
|
|
178
|
+
return (rightValue.localeCompare(leftValue, filter.locale, filter.options) >= 0);
|
|
179
|
+
}
|
|
180
|
+
return leftValue <= rightValue;
|
|
181
|
+
}
|
|
182
|
+
case "match": {
|
|
183
|
+
const rightValue = valueFromFilter(value, filter);
|
|
184
|
+
const leftValue = get(value, filter.field);
|
|
185
|
+
if (leftValue === undefined) {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
if (filter[SymbolCache] === undefined) {
|
|
189
|
+
filter[SymbolCache] = new RegExp(rightValue, `${filter.options?.ignoreCase ? "i" : ""}${filter.options?.dotAll ? "s" : ""}`);
|
|
190
|
+
}
|
|
191
|
+
return filter[SymbolCache].test(leftValue);
|
|
192
|
+
}
|
|
193
|
+
case "intersect": {
|
|
194
|
+
const rightValue = valueFromFilter(value, filter);
|
|
195
|
+
const leftValue = get(value, filter.field);
|
|
196
|
+
if (leftValue == null) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
if (isArray(leftValue)) {
|
|
200
|
+
return (isArray(rightValue) &&
|
|
201
|
+
rightValue.some((value) => leftValue.includes(value)));
|
|
202
|
+
}
|
|
203
|
+
if (filter.options ||
|
|
204
|
+
filter.locale) {
|
|
205
|
+
return (leftValue !== undefined &&
|
|
206
|
+
rightValue.some((value) => value.localeCompare(leftValue, filter.locale, filter.options) === 0));
|
|
207
|
+
}
|
|
208
|
+
return rightValue.includes(leftValue);
|
|
209
|
+
}
|
|
210
|
+
default:
|
|
211
|
+
throw new Error(`Unknown filter operator '${filter.operator}'`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=testFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testFilter.js","sourceRoot":"","sources":["../../lib/tools/testFilter.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -5,9 +5,9 @@ export { defineGenericFetch } from "./tools/defineGenericFetch.js";
|
|
|
5
5
|
export { escapeRegex } from "./tools/escapeRegex.js";
|
|
6
6
|
export { filterChildren } from "./tools/filterChildren.js";
|
|
7
7
|
export { filterFromContext } from "./tools/filterFromContext.js";
|
|
8
|
-
export { filterItem } from "./tools/filterItem.js";
|
|
9
8
|
export { get } from "./tools/get.js";
|
|
10
9
|
export { isFilterGroup } from "./tools/isFilterGroup.js";
|
|
11
10
|
export { normalizeOrder } from "./tools/normalizeOrder.js";
|
|
12
11
|
export { queryItemList } from "./tools/queryItemList.js";
|
|
13
12
|
export { sortItemList } from "./tools/sortItemList.js";
|
|
13
|
+
export { testFilter } from "./tools/testFilter.js";
|
package/dist/tools.js
CHANGED
|
@@ -6,10 +6,10 @@ export { defineGenericFetch } from "./tools/defineGenericFetch.js";
|
|
|
6
6
|
export { escapeRegex } from "./tools/escapeRegex.js";
|
|
7
7
|
export { filterChildren } from "./tools/filterChildren.js";
|
|
8
8
|
export { filterFromContext } from "./tools/filterFromContext.js";
|
|
9
|
-
export { filterItem } from "./tools/filterItem.js";
|
|
10
9
|
export { get } from "./tools/get.js";
|
|
11
10
|
export { isFilterGroup } from "./tools/isFilterGroup.js";
|
|
12
11
|
export { normalizeOrder } from "./tools/normalizeOrder.js";
|
|
13
12
|
export { queryItemList } from "./tools/queryItemList.js";
|
|
14
13
|
export { sortItemList } from "./tools/sortItemList.js";
|
|
14
|
+
export { testFilter } from "./tools/testFilter.js";
|
|
15
15
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../lib/tools.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../lib/tools.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Any } from "./Any";
|
|
2
2
|
import type { FieldFiltered } from "./FieldFiltered";
|
|
3
|
+
import type { Value } from "./Value";
|
|
3
4
|
/**
|
|
4
5
|
* Checks if a given array field matches a given array value according to a given operator.
|
|
5
6
|
*/
|
|
6
7
|
export type FilterArray<T extends object, P = Any> = {
|
|
7
8
|
operator: "equal" | "include" | "intersect";
|
|
8
9
|
field: FieldFiltered<T, P[]>;
|
|
9
|
-
|
|
10
|
-
};
|
|
10
|
+
} & Value<T, P[]>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { FieldFiltered } from "./FieldFiltered";
|
|
2
|
+
import type { Value } from "./Value";
|
|
2
3
|
/**
|
|
3
4
|
* Checks if a given boolean field is `true` or `false`.
|
|
4
5
|
*/
|
|
5
6
|
export type FilterBoolean<T extends object> = {
|
|
6
7
|
operator: "equal" | "notEqual";
|
|
7
8
|
field: FieldFiltered<T, boolean>;
|
|
8
|
-
|
|
9
|
-
};
|
|
9
|
+
} & Value<T, boolean>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { FieldFiltered } from "./FieldFiltered";
|
|
2
|
+
import type { Value } from "./Value";
|
|
2
3
|
/**
|
|
3
4
|
* Checks if a given number field matches a given number value according to a given operator.
|
|
4
5
|
*/
|
|
5
6
|
export type FilterNumber<T extends object> = {
|
|
6
7
|
operator: "equal" | "notEqual" | "greaterThan" | "greaterThanOrEqual" | "lowerThan" | "lowerThanOrEqual";
|
|
7
8
|
field: FieldFiltered<T, number>;
|
|
8
|
-
|
|
9
|
-
};
|
|
9
|
+
} & Value<T, number>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { FieldFiltered } from "./FieldFiltered";
|
|
2
2
|
import type { Locale } from "./Locale";
|
|
3
|
+
import type { Value } from "./Value";
|
|
3
4
|
/**
|
|
4
5
|
* Checks if a given string field matches a given string value according to a given operator.
|
|
5
6
|
*/
|
|
6
7
|
export type FilterString<T extends object> = {
|
|
7
8
|
operator: "equal" | "notEqual" | "startWith" | "endWith" | "include" | "greaterThan" | "greaterThanOrEqual" | "lowerThan" | "lowerThanOrEqual";
|
|
8
9
|
field: FieldFiltered<T, string>;
|
|
9
|
-
value: string;
|
|
10
10
|
options?: Intl.CollatorOptions;
|
|
11
11
|
locale?: Locale;
|
|
12
|
-
}
|
|
12
|
+
} & Value<T, string>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { FieldFiltered } from "./FieldFiltered";
|
|
2
2
|
import type { Locale } from "./Locale";
|
|
3
|
+
import type { Value } from "./Value";
|
|
3
4
|
/**
|
|
4
5
|
* Checks if a given string field has any of the provided values.
|
|
5
6
|
*/
|
|
6
7
|
export type FilterStringIntersect<T extends object> = {
|
|
7
8
|
operator: "intersect";
|
|
8
9
|
field: FieldFiltered<T, string>;
|
|
9
|
-
value: string[];
|
|
10
10
|
options?: Intl.CollatorOptions;
|
|
11
11
|
locale?: Locale;
|
|
12
|
-
}
|
|
12
|
+
} & Value<T, string[]>;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import type { SymbolCache } from "../constants/SymbolCache";
|
|
2
2
|
import type { FieldFiltered } from "./FieldFiltered";
|
|
3
|
+
import type { Value } from "./Value";
|
|
3
4
|
/**
|
|
4
|
-
* Checks if a given string field matches a given regular expression.
|
|
5
|
+
* Checks if a given string field matches a given regular expression, the value being a raw regular expression string.
|
|
5
6
|
*/
|
|
6
7
|
export type FilterStringMatch<T extends object> = {
|
|
7
8
|
operator: "match";
|
|
8
9
|
field: FieldFiltered<T, string>;
|
|
9
|
-
/**
|
|
10
|
-
* Raw regular expression string.
|
|
11
|
-
*/
|
|
12
|
-
value: string;
|
|
13
10
|
/**
|
|
14
11
|
* Regular expression options.
|
|
15
12
|
*/
|
|
@@ -27,4 +24,4 @@ export type FilterStringMatch<T extends object> = {
|
|
|
27
24
|
* Compiled regular expression generated by the `testFilter` function.
|
|
28
25
|
*/
|
|
29
26
|
[SymbolCache]?: RegExp;
|
|
30
|
-
}
|
|
27
|
+
} & Value<T, string>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { FieldFiltered } from "./FieldFiltered";
|
|
2
|
+
/**
|
|
3
|
+
* Actual `value` or `valueField` leading to the value.
|
|
4
|
+
*/
|
|
5
|
+
export type Value<T extends object, V> = {
|
|
6
|
+
/**
|
|
7
|
+
* Value to use.
|
|
8
|
+
*/
|
|
9
|
+
value: V;
|
|
10
|
+
} | {
|
|
11
|
+
/**
|
|
12
|
+
* Path leading to the value.
|
|
13
|
+
*/
|
|
14
|
+
valueField: FieldFiltered<T, V>;
|
|
15
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Value.js","sourceRoot":"","sources":["../../lib/types/Value.ts"],"names":[],"mappings":""}
|
package/dist/types.d.ts
CHANGED
|
@@ -52,3 +52,4 @@ export type { QueryUpdate } from "./types/QueryUpdate";
|
|
|
52
52
|
export type { QueryUpdateMultiple } from "./types/QueryUpdateMultiple";
|
|
53
53
|
export type { Result } from "./types/Result";
|
|
54
54
|
export type { Store } from "./types/Store";
|
|
55
|
+
export type { Value } from "./types/Value";
|
|
@@ -10,8 +10,8 @@ import type {
|
|
|
10
10
|
} from "../types.js";
|
|
11
11
|
|
|
12
12
|
import { filterFromContext } from "./filterFromContext.js";
|
|
13
|
-
import { filterItem } from "./filterItem.js";
|
|
14
13
|
import { sortItemList } from "./sortItemList.js";
|
|
14
|
+
import { testFilter } from "./testFilter.js";
|
|
15
15
|
|
|
16
16
|
function mergeContextAndFilter<T extends object>(
|
|
17
17
|
context?: Context<T>,
|
|
@@ -56,7 +56,7 @@ function queryItemList<T extends object, const Q extends Query<T>>(
|
|
|
56
56
|
filter as Filter<T>,
|
|
57
57
|
);
|
|
58
58
|
result = data.filter((item) =>
|
|
59
|
-
|
|
59
|
+
testFilter(normalizedFilter, item, query.settings),
|
|
60
60
|
);
|
|
61
61
|
}
|
|
62
62
|
// Sort
|
|
@@ -75,7 +75,7 @@ function queryItemList<T extends object, const Q extends Query<T>>(
|
|
|
75
75
|
filter as Filter<T>,
|
|
76
76
|
);
|
|
77
77
|
const result = data.find((item) =>
|
|
78
|
-
|
|
78
|
+
testFilter(normalizedFilter, item, query.settings),
|
|
79
79
|
);
|
|
80
80
|
if (result === undefined) {
|
|
81
81
|
throw new RequestError("Not found", 404, query as Query<any>);
|
|
@@ -94,7 +94,7 @@ function queryItemList<T extends object, const Q extends Query<T>>(
|
|
|
94
94
|
filter as Filter<T>,
|
|
95
95
|
);
|
|
96
96
|
return data.reduce((result, item) => {
|
|
97
|
-
if (
|
|
97
|
+
if (testFilter(normalizedFilter, item, query.settings)) {
|
|
98
98
|
return result + 1;
|
|
99
99
|
}
|
|
100
100
|
return result;
|