@ngutil/data 0.0.18 → 0.0.19
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/esm2022/provider/local.mjs +1 -1
- package/esm2022/provider/provider.mjs +1 -1
- package/esm2022/query/common.mjs +33 -0
- package/esm2022/query/executor.mjs +1 -1
- package/esm2022/query/filter.mjs +82 -109
- package/esm2022/query/grouper.mjs +19 -1
- package/esm2022/query/index.mjs +4 -3
- package/esm2022/query/query-property.mjs +28 -61
- package/esm2022/query/query.mjs +19 -6
- package/esm2022/query/slimer.mjs +18 -1
- package/esm2022/query/sorter.mjs +67 -36
- package/esm2022/source/proxy.directive.mjs +11 -15
- package/esm2022/source/source.mjs +23 -24
- package/fesm2022/ngutil-data.mjs +309 -294
- package/fesm2022/ngutil-data.mjs.map +1 -1
- package/package.json +8 -8
- package/provider/local.d.ts +5 -5
- package/provider/provider.d.ts +4 -4
- package/query/common.d.ts +2 -0
- package/query/executor.d.ts +2 -2
- package/query/filter.d.ts +32 -0
- package/query/grouper.d.ts +11 -0
- package/query/index.d.ts +3 -3
- package/query/query-property.d.ts +14 -19
- package/query/query.d.ts +14 -12
- package/query/slimer.d.ts +12 -2
- package/query/sorter.d.ts +16 -3
- package/source/proxy.directive.d.ts +1 -1
- package/source/source.d.ts +7 -14
- package/esm2022/source/properties/abstract.mjs +0 -33
- package/esm2022/source/properties/filter.mjs +0 -16
- package/esm2022/source/properties/grouper.mjs +0 -16
- package/esm2022/source/properties/index.mjs +0 -5
- package/esm2022/source/properties/slimer.mjs +0 -16
- package/esm2022/source/properties/sorter.mjs +0 -43
- package/source/properties/abstract.d.ts +0 -17
- package/source/properties/filter.d.ts +0 -11
- package/source/properties/grouper.d.ts +0 -11
- package/source/properties/index.d.ts +0 -4
- package/source/properties/slimer.d.ts +0 -11
- package/source/properties/sorter.d.ts +0 -20
|
@@ -26,4 +26,4 @@ export class LocalProvider extends DataProvider {
|
|
|
26
26
|
return this.items$.pipe(take(1), map(items => sliceClamp(slice, { start: 0, end: items.length })));
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9wcm92aWRlci9sb2NhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUU1QyxPQUFPLEVBQVMsU0FBUyxFQUFnQyxNQUFNLFVBQVUsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFxRCxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV6QyxNQUFNLE9BQWdCLGFBQStCLFNBQVEsWUFBZTtJQUt4RSxTQUFTLENBQW1CO0lBRTVCLFlBQVksSUFBdUI7UUFDL0IsS0FBSyxFQUFFLENBQUE7UUFQTyxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBUTdCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQTBCO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVRLFNBQVMsQ0FBQyxPQUEwQjtRQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRVEsU0FBUyxDQUFDLEdBQWlCLEVBQUUsT0FBMEI7UUFDNUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckYsQ0FBQztJQUVRLGFBQWEsQ0FBQyxHQUFpQixFQUFFLE9BQTBCO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFGLENBQUM7SUFFUSxVQUFVLENBQUMsS0FBWTtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQ25FLENBQUE7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IE1vZGVsLCBNb2RlbE1ldGEsIE1vZGVsTWV0YUlucHV0LCBNb2RlbFJlZk5vcm0gfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgcXVlcnlFeGVjdXRvciwgUXVlcnlFeGVjdXRvciwgUXVlcnlSZXN1bHQsIFF1ZXJ5V2l0aFNsaWNlLCBTbGljZSwgc2xpY2VDbGFtcCB9IGZyb20gXCIuLi9xdWVyeVwiXG5pbXBvcnQgeyBEYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi9wcm92aWRlclwiXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2NhbFByb3ZpZGVyPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBEYXRhUHJvdmlkZXI8VD4ge1xuICAgIG92ZXJyaWRlIHJlYWRvbmx5IGlzQXN5bmMgPSBmYWxzZVxuICAgIG92ZXJyaWRlIHJlYWRvbmx5IG1ldGE6IE1vZGVsTWV0YTxUPlxuICAgIGFic3RyYWN0IHJlYWRvbmx5IGl0ZW1zJDogT2JzZXJ2YWJsZTxyZWFkb25seSBUW10+XG5cbiAgICAjZXhlY3V0b3I/OiBRdWVyeUV4ZWN1dG9yPFQ+XG5cbiAgICBjb25zdHJ1Y3RvcihtZXRhOiBNb2RlbE1ldGFJbnB1dDxUPikge1xuICAgICAgICBzdXBlcigpXG4gICAgICAgIHRoaXMubWV0YSA9IE1vZGVsTWV0YS5jb2VyY2UobWV0YSlcbiAgICB9XG5cbiAgICBleGVjdXRvcihyZXF1ZXN0OiBRdWVyeVdpdGhTbGljZTxUPik6IFF1ZXJ5RXhlY3V0b3I8VD4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuI2V4ZWN1dG9yID0gcXVlcnlFeGVjdXRvcihyZXF1ZXN0LCB0aGlzLiNleGVjdXRvcikpXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgcXVlcnlMaXN0KHJlcXVlc3Q6IFF1ZXJ5V2l0aFNsaWNlPFQ+KTogT2JzZXJ2YWJsZTxRdWVyeVJlc3VsdDxUPj4ge1xuICAgICAgICBjb25zdCBleGVjID0gdGhpcy5leGVjdXRvcihyZXF1ZXN0KVxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcyQucGlwZShtYXAoaXRlbXMgPT4gZXhlYyhpdGVtcykpKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIHF1ZXJ5SXRlbShyZWY6IE1vZGVsUmVmTm9ybSwgcmVxdWVzdDogUXVlcnlXaXRoU2xpY2U8VD4pOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlMaXN0KHJlcXVlc3QpLnBpcGUobWFwKGxpc3QgPT4gbGlzdC5pdGVtcy5maW5kKHJlZi50b0ZpbHRlcigpKSkpXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgcXVlcnlQb3NpdGlvbihyZWY6IE1vZGVsUmVmTm9ybSwgcmVxdWVzdDogUXVlcnlXaXRoU2xpY2U8VD4pOiBPYnNlcnZhYmxlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeUxpc3QocmVxdWVzdCkucGlwZShtYXAobGlzdCA9PiBsaXN0Lml0ZW1zLmZpbmRJbmRleChyZWYudG9GaWx0ZXIoKSkpKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIGNsYW1wU2xpY2Uoc2xpY2U6IFNsaWNlKTogT2JzZXJ2YWJsZTxTbGljZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcyQucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAoaXRlbXMgPT4gc2xpY2VDbGFtcChzbGljZSwgeyBzdGFydDogMCwgZW5kOiBpdGVtcy5sZW5ndGggfSkpXG4gICAgICAgIClcbiAgICB9XG59XG4iXX0=
|
|
@@ -14,4 +14,4 @@ export class DataProvider {
|
|
|
14
14
|
return new DataSource(this, store);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9wcm92aWRlci9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBSXpCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFHdEMsTUFBTSxPQUFnQixZQUFZO0lBMEI5Qjs7T0FFRztJQUNILFVBQVUsQ0FBQyxLQUFZO1FBQ25CLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxLQUEwQjtRQUNuQyxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiXG5pbXBvcnQgeyBvZiB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHR5cGUgeyBNb2RlbCwgTW9kZWxNZXRhLCBNb2RlbFJlZk5vcm0gfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHR5cGUgeyBRdWVyeVJlc3VsdCwgUXVlcnlXaXRoU2xpY2UsIFNsaWNlIH0gZnJvbSBcIi4uL3F1ZXJ5XCJcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tIFwiLi4vc291cmNlXCJcbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvblN0b3JlIH0gZnJvbSBcIi4uL3N0b3JlXCJcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGFQcm92aWRlcjxUIGV4dGVuZHMgTW9kZWw+IHtcbiAgICAvKipcbiAgICAgKiBgdHJ1ZWAgd2hlbiB0aGUgcHJvdmlkZXIgaXMgbWFraW5nIGFzeW5jIHJlcXVlc3RzXG4gICAgICovXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgaXNBc3luYzogYm9vbGVhblxuXG4gICAgLyoqXG4gICAgICogTWV0YWRhdGEgb2YgbW9kZWxcbiAgICAgKi9cbiAgICBhYnN0cmFjdCByZWFkb25seSBtZXRhOiBNb2RlbE1ldGE8VD5cblxuICAgIC8qKlxuICAgICAqIFF1ZXJ5IGl0ZW1zIGJ5IHRoZSBnaXZlbiByZXF1ZXN0XG4gICAgICovXG4gICAgYWJzdHJhY3QgcXVlcnlMaXN0KHJlcXVlc3Q6IFF1ZXJ5V2l0aFNsaWNlPFQ+KTogT2JzZXJ2YWJsZTxRdWVyeVJlc3VsdDxUPj5cblxuICAgIC8qKlxuICAgICAqIFF1ZXJ5IGV4YWN0bHkgb25lIGl0ZW0gYnkgdGhlIGdpdmVuIHJlcXVlc3RcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBxdWVyeUl0ZW0ocmVmOiBNb2RlbFJlZk5vcm0sIHJlcXVlc3Q6IFF1ZXJ5V2l0aFNsaWNlPFQ+KTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPlxuXG4gICAgLyoqXG4gICAgICogUXVlcnkgaXRlbSBwb3NpdGlvbiBpbiB0aGUgbGlzdCB0aGF0IG1hdGNoaW5nIGJ5IHRoZSBnaXZlbiByZXF1ZXN0XG4gICAgICovXG4gICAgYWJzdHJhY3QgcXVlcnlQb3NpdGlvbihyZWY6IE1vZGVsUmVmTm9ybSwgcmVxdWVzdDogUXVlcnlXaXRoU2xpY2U8VD4pOiBPYnNlcnZhYmxlPG51bWJlciB8IHVuZGVmaW5lZD5cblxuICAgIC8qKlxuICAgICAqIEZyb2NlIFNsaWNlIGJvdW5kYXJpZXMsIHVzZWZ1bCBpbiBhcnJheSwgb3Igb2Jlc2VydmFibGUgcHJvdmlkZXJzXG4gICAgICovXG4gICAgY2xhbXBTbGljZShzbGljZTogU2xpY2UpOiBPYnNlcnZhYmxlPFNsaWNlPiB7XG4gICAgICAgIHJldHVybiBvZihzbGljZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBOZXcgZGF0YSBzb3VyY2UgaW5zdGFuY2VcbiAgICAgKi9cbiAgICB0b0RhdGFTb3VyY2Uoc3RvcmU/OiBDb2xsZWN0aW9uU3RvcmU8VD4pOiBEYXRhU291cmNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRhU291cmNlKHRoaXMsIHN0b3JlKVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function readonlyProp(o, n, v) {
|
|
2
|
+
Object.defineProperty(o, n, {
|
|
3
|
+
value: v,
|
|
4
|
+
configurable: false,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
writable: false
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
const NORMALIZED = Symbol("NORMALIZED");
|
|
10
|
+
const IS_NORMALIZED = Symbol("IS_NORMALIZED");
|
|
11
|
+
export function normalize(obj, normalizer) {
|
|
12
|
+
if (obj[IS_NORMALIZED]) {
|
|
13
|
+
return obj;
|
|
14
|
+
}
|
|
15
|
+
if (obj[NORMALIZED] == null) {
|
|
16
|
+
const normalized = normalizer(obj);
|
|
17
|
+
Object.defineProperty(obj, NORMALIZED, {
|
|
18
|
+
value: normalized,
|
|
19
|
+
configurable: false,
|
|
20
|
+
enumerable: false,
|
|
21
|
+
writable: false
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(normalize, IS_NORMALIZED, {
|
|
24
|
+
value: true,
|
|
25
|
+
configurable: false,
|
|
26
|
+
enumerable: false,
|
|
27
|
+
writable: false
|
|
28
|
+
});
|
|
29
|
+
return normalized;
|
|
30
|
+
}
|
|
31
|
+
return obj[NORMALIZED];
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvcXVlcnkvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBVSxFQUFFLENBQWtCLEVBQUUsQ0FBVTtJQUNuRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDeEIsS0FBSyxFQUFFLENBQUM7UUFDUixZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsSUFBSTtRQUNoQixRQUFRLEVBQUUsS0FBSztLQUNsQixDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0FBQ3ZDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUU3QyxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVEsRUFBRSxVQUEyQjtJQUMzRCxJQUFLLEdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sR0FBVSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxJQUFLLEdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO1lBQ25DLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1lBQ25CLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQTtRQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRTtZQUM1QyxLQUFLLEVBQUUsSUFBSTtZQUNYLFlBQVksRUFBRSxLQUFLO1lBQ25CLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQTtRQUVGLE9BQU8sVUFBVSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxPQUFRLEdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHJlYWRvbmx5UHJvcChvOiB1bmtub3duLCBuOiBzdHJpbmcgfCBzeW1ib2wsIHY6IHVua25vd24pIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgbiwge1xuICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgfSlcbn1cblxuY29uc3QgTk9STUFMSVpFRCA9IFN5bWJvbChcIk5PUk1BTElaRURcIilcbmNvbnN0IElTX05PUk1BTElaRUQgPSBTeW1ib2woXCJJU19OT1JNQUxJWkVEXCIpXG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUob2JqOiBhbnksIG5vcm1hbGl6ZXI6ICh2OiBhbnkpID0+IGFueSk6IGFueSB7XG4gICAgaWYgKChvYmogYXMgYW55KVtJU19OT1JNQUxJWkVEXSkge1xuICAgICAgICByZXR1cm4gb2JqIGFzIGFueVxuICAgIH1cblxuICAgIGlmICgob2JqIGFzIGFueSlbTk9STUFMSVpFRF0gPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplcihvYmopXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIE5PUk1BTElaRUQsIHtcbiAgICAgICAgICAgIHZhbHVlOiBub3JtYWxpemVkLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICAgIH0pXG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5vcm1hbGl6ZSwgSVNfTk9STUFMSVpFRCwge1xuICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZFxuICAgIH1cblxuICAgIHJldHVybiAob2JqIGFzIGFueSlbTk9STUFMSVpFRF1cbn1cbiJdfQ==
|
|
@@ -75,4 +75,4 @@ function compileExec(input, prev, compiler) {
|
|
|
75
75
|
});
|
|
76
76
|
return exec;
|
|
77
77
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBR2hDLE9BQU8sRUFBZ0IsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHdkQsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBR25DLE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxVQUFVLENBQUE7QUFFekMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBaUI3QixNQUFNLFVBQVUsYUFBYSxDQUN6QixLQUF3QixFQUN4QixRQUEyQjtJQUUzQixNQUFNLFNBQVMsR0FBc0I7UUFDakMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDMUQsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDMUQsU0FBUyxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7UUFDOUQsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7S0FDM0QsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsUUFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMs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Q0FBQTtRQUNmLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBUSxDQUFBO0lBQ25DLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtRQUMvQixLQUFLLEVBQUUsS0FBSztRQUNaLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFFBQVEsRUFBRSxLQUFLO0tBQ2xCLENBQUMsQ0FBQTtJQUNGLE9BQU8sSUFBSSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuaW1wb3J0IHsgRGVlcFJlYWRvbmx5LCB0b1NvcnRlZCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsXCJcbmltcG9ydCB7IEZpbHRlciwgZmlsdGVyQnkgfSBmcm9tIFwiLi9maWx0ZXJcIlxuaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gXCIuL2dyb3VwZXJcIlxuaW1wb3J0IHsgUXVlcnlSZXN1bHQsIFF1ZXJ5V2l0aFNsaWNlIH0gZnJvbSBcIi4vcXVlcnlcIlxuaW1wb3J0IHsgU2xpY2UgfSBmcm9tIFwiLi9zbGljZVwiXG5pbXBvcnQgeyBzb3J0QnksIFNvcnRlciB9IGZyb20gXCIuL3NvcnRlclwiXG5cbmNvbnN0IElOUFVUID0gU3ltYm9sKFwiSU5QVVRcIilcblxuaW50ZXJmYWNlIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgW0lOUFVUXTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlFeGVjdXRvcnM8VCBleHRlbmRzIE1vZGVsPiB7XG4gICAgcmVhZG9ubHkgZmlsdGVyRm4/OiBGaWx0ZXJFeGVjdXRvcjxUPlxuICAgIHJlYWRvbmx5IHNvcnRlckZuPzogU29ydGVyRXhlY3V0b3I8VD5cbiAgICByZWFkb25seSBncm91cGVyRm4/OiBHcm91cGVyRXhlY3V0b3I8VD5cbiAgICByZWFkb25seSBzbGljZXJGbj86IFNsaWNlRXhlY3V0b3I8VD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBRdWVyeUV4ZWN1dG9yczxUPiB7XG4gICAgKGl0ZW1zOiByZWFkb25seSBUW10pOiBRdWVyeVJlc3VsdDxUPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIHF1ZXJ5OiBRdWVyeVdpdGhTbGljZTxUPixcbiAgICBwcmV2aW91cz86IFF1ZXJ5RXhlY3V0b3I8VD5cbik6IFF1ZXJ5RXhlY3V0b3I8VD4ge1xuICAgIGNvbnN0IGV4ZWN1dG9yczogUXVlcnlFeGVjdXRvcnM8VD4gPSB7XG4gICAgICAgIGZpbHRlckZuOiBmaWx0ZXJFeGVjdXRvcihxdWVyeS5maWx0ZXIsIHByZXZpb3VzPy5maWx0ZXJGbiksXG4gICAgICAgIHNvcnRlckZuOiBzb3J0ZXJFeGVjdXRvcihxdWVyeS5zb3J0ZXIsIHByZXZpb3VzPy5zb3J0ZXJGbiksXG4gICAgICAgIGdyb3VwZXJGbjogZ3JvdXBlckV4ZWN1dG9yKHF1ZXJ5Lmdyb3VwZXIsIHByZXZpb3VzPy5ncm91cGVyRm4pLFxuICAgICAgICBzbGljZXJGbjogc2xpY2VFeGVjdXRvcihxdWVyeS5zbGljZSwgcHJldmlvdXM/LnNsaWNlckZuKVxuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZWQgPSBwcmV2aW91cyA9PSBudWxsIHx8IE9iamVjdC5lbnRyaWVzKGV4ZWN1dG9ycykuc29tZSgoW2ssIHZdKSA9PiAocHJldmlvdXMgYXMgYW55KVtrXSAhPT0gdilcbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzXG4gICAgfVxuXG4gICAgY29uc3QgZXhlY3V0b3IgPSAoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IFF1ZXJ5UmVzdWx0PFQ+ID0+IHtcbiAgICAgICAgaWYgKGl0ZW1zID09IG51bGwgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpdGVtczogW10sIHRvdGFsOiAwIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHQ6IHJlYWRvbmx5IFRbXSA9IGl0ZW1zXG5cbiAgICAgICAgaWYgKGV4ZWN1dG9ycy5maWx0ZXJGbikge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihleGVjdXRvcnMuZmlsdGVyRm4pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhlY3V0b3JzLnNvcnRlckZuKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0b1NvcnRlZChyZXN1bHQsIGV4ZWN1dG9ycy5zb3J0ZXJGbilcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvdGFsID0gcmVzdWx0Lmxlbmd0aFxuXG4gICAgICAgIC8vIFRPRE86IGdyb3VwZXJcblxuICAgICAgICBpZiAoZXhlY3V0b3JzLnNsaWNlckZuKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBleGVjdXRvcnMuc2xpY2VyRm4ocmVzdWx0KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IHJlc3VsdCwgdG90YWwgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGV4ZWN1dG9ycykpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4ZWN1dG9yLCBrLCB7XG4gICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY3V0b3Jcbn1cblxuaW50ZXJmYWNlIEZpbHRlckV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBQYXJ0aWFsRXhlY3V0b3Ige1xuICAgIChpdGVtOiBUKTogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBmaWx0ZXJFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIGZpbHRlcj86IERlZXBSZWFkb25seTxGaWx0ZXI8VD4+LFxuICAgIHByZXY/OiBGaWx0ZXJFeGVjdXRvcjxUPlxuKTogRmlsdGVyRXhlY3V0b3I8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjb21waWxlRXhlYzxUPihmaWx0ZXIsIHByZXYsIGZpbHRlckJ5KVxufVxuXG5pbnRlcmZhY2UgU29ydGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgKGE6IFQsIGI6IFQpOiBudW1iZXJcbn1cblxuZnVuY3Rpb24gc29ydGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPihcbiAgICBzb3J0ZXI/OiBEZWVwUmVhZG9ubHk8U29ydGVyPFQ+PixcbiAgICBwcmV2PzogU29ydGVyRXhlY3V0b3I8VD5cbik6IFNvcnRlckV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc29ydGVyLCBwcmV2LCBzb3J0QnkpXG59XG5cbmludGVyZmFjZSBHcm91cGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgKGl0ZW06IFQpOiBQcmltaXRpdmVcbn1cblxuZnVuY3Rpb24gZ3JvdXBlckV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc29ydGVyPzogRGVlcFJlYWRvbmx5PFNvcnRlcjxUPj4sXG4gICAgcHJldj86IEdyb3VwZXJFeGVjdXRvcjxUPlxuKTogR3JvdXBlckV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc29ydGVyLCBwcmV2LCBncm91cEJ5KVxufVxuXG5pbnRlcmZhY2UgU2xpY2VFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUGFydGlhbEV4ZWN1dG9yIHtcbiAgICAoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IFRbXVxufVxuXG5mdW5jdGlvbiBzbGljZUV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc2xpY2U/OiBEZWVwUmVhZG9ubHk8U2xpY2U+LFxuICAgIHByZXY/OiBTbGljZUV4ZWN1dG9yPFQ+XG4pOiBTbGljZUV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc2xpY2UsIHByZXYsIHNsaWNlQnkpXG59XG5cbmZ1bmN0aW9uIHNsaWNlQnk8VCBleHRlbmRzIE1vZGVsPihzbGljZTogU2xpY2UpIHtcbiAgICByZXR1cm4gKGl0ZW1zOiBUW10pID0+IGl0ZW1zLnNsaWNlKHNsaWNlLnN0YXJ0LCBzbGljZS5lbmQpXG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVFeGVjPFQgZXh0ZW5kcyBNb2RlbD4oaW5wdXQ6IGFueSwgcHJldjogYW55LCBjb21waWxlcjogYW55KTogYW55IHtcbiAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKHByZXYgIT0gbnVsbCkge1xuICAgICAgICAvLyB0aG9yaWNhbGx5IGlucHV0IGlzIHJlYWRvbmx5XG4gICAgICAgIGlmIChwcmV2W0lOUFVUXSA9PT0gaW5wdXQgfHwgaXNFcXVhbChwcmV2W0lOUFVUXSwgaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXhlYyA9IGNvbXBpbGVyKGlucHV0KSBhcyBhbnlcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhlYywgSU5QVVQsIHtcbiAgICAgICAgdmFsdWU6IGlucHV0LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBleGVjXG59XG4iXX0=
|
package/esm2022/query/filter.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { flattenDeep, intersection } from "lodash";
|
|
2
2
|
import { deepClone, isPlainObject } from "@ngutil/common";
|
|
3
3
|
import { pathGetterCompile } from "./path";
|
|
4
|
+
import { QueryProperty, QueryPropertySet } from "./query-property";
|
|
4
5
|
export const OPERATORS = [
|
|
5
6
|
"==" /* FilterOp.Eq */,
|
|
6
7
|
"===" /* FilterOp.EqStrict */,
|
|
@@ -47,107 +48,81 @@ export function asOperators(value) {
|
|
|
47
48
|
export function filterBy(filters) {
|
|
48
49
|
return _filterCompile(filters);
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
// return _normalizeFilter(filters)
|
|
64
|
-
// }
|
|
65
|
-
// function _normalizeFilter(filters: any, path?: string): any {
|
|
66
|
-
// const result = {} as any
|
|
67
|
-
// for (const [path, v] of Object.entries(filters)) {
|
|
68
|
-
// switch (path) {
|
|
69
|
-
// case FilterOp.And:
|
|
70
|
-
// if (!Array.isArray(v)) {
|
|
71
|
-
// throw new Error("The '&' (AND) operator must have array type")
|
|
72
|
-
// }
|
|
73
|
-
// if (!result[FilterOp.And]) {
|
|
74
|
-
// result[FilterOp.And] = []
|
|
75
|
-
// }
|
|
76
|
-
// result[FilterOp.And] = result[FilterOp.And].concat(v.map(f => _normalizeFilter(f)))
|
|
77
|
-
// break
|
|
78
|
-
// case FilterOp.Or:
|
|
79
|
-
// if (!Array.isArray(v)) {
|
|
80
|
-
// throw new Error("The '|' (OR) operator must have array type")
|
|
81
|
-
// }
|
|
82
|
-
// if (!result[FilterOp.Or]) {
|
|
83
|
-
// result[FilterOp.Or] = []
|
|
84
|
-
// }
|
|
85
|
-
// result[FilterOp.Or] = result[FilterOp.Or].concat(v.map(f => _normalizeFilter(f)))
|
|
86
|
-
// break
|
|
87
|
-
// default:
|
|
88
|
-
// for (const entry of asOperators(v)) {
|
|
89
|
-
// switch (entry.op) {
|
|
90
|
-
// case FilterOp.And:
|
|
91
|
-
// if (!result[FilterOp.And]) {
|
|
92
|
-
// result[FilterOp.And] = []
|
|
93
|
-
// }
|
|
94
|
-
// result[FilterOp.And] = result[FilterOp.And].concat(
|
|
95
|
-
// entry.value.map((v: any) => _normalizeFilter(v, path))
|
|
96
|
-
// )
|
|
97
|
-
// break
|
|
98
|
-
// case FilterOp.Or:
|
|
99
|
-
// if (!result[FilterOp.Or]) {
|
|
100
|
-
// result[FilterOp.Or] = []
|
|
101
|
-
// }
|
|
102
|
-
// result[FilterOp.Or] = result[FilterOp.Or].concat(
|
|
103
|
-
// entry.value.map((v: any) => _normalizeFilter(v, path))
|
|
104
|
-
// )
|
|
105
|
-
// break
|
|
106
|
-
// default:
|
|
107
|
-
// if (!result[FilterOp.And]) {
|
|
108
|
-
// result[FilterOp.And] = []
|
|
109
|
-
// }
|
|
110
|
-
// result[FilterOp.And].push({ path, ...entry })
|
|
111
|
-
// }
|
|
112
|
-
// }
|
|
113
|
-
// }
|
|
114
|
-
// }
|
|
115
|
-
// return result
|
|
116
|
-
// }
|
|
117
|
-
function _filterCompile(filters) {
|
|
118
|
-
let getter;
|
|
119
|
-
const result = [];
|
|
120
|
-
for (const [pth, value] of Object.entries(filters)) {
|
|
121
|
-
switch (pth) {
|
|
51
|
+
/**
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* filterNormalize({id: {">": 0, "<": 10}})
|
|
55
|
+
* {op: "&", value: [{path: "id", op: ">", value: 0}, {path: "id", op: "<", value: 10}]}
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export function filterNormalize(filters) {
|
|
59
|
+
return _normalizeFilter(filters);
|
|
60
|
+
}
|
|
61
|
+
function _normalizeFilter(filters, parent) {
|
|
62
|
+
const norm = flattenDeep(Object.entries(filters).map(([path, value]) => {
|
|
63
|
+
switch (path) {
|
|
122
64
|
case "&" /* FilterOp.And */:
|
|
123
65
|
if (!Array.isArray(value)) {
|
|
124
|
-
throw new Error("
|
|
66
|
+
throw new Error(`Operator AND (${"&" /* FilterOp.And */}) must have array type`);
|
|
125
67
|
}
|
|
126
|
-
|
|
127
|
-
break;
|
|
68
|
+
return { op: "&" /* FilterOp.And */, value: value.map(v => _normalizeFilter(v, parent)) };
|
|
128
69
|
case "|" /* FilterOp.Or */:
|
|
129
70
|
if (!Array.isArray(value)) {
|
|
130
|
-
throw new Error("
|
|
71
|
+
throw new Error(`Operator OR (${"|" /* FilterOp.Or */}) must have array type`);
|
|
131
72
|
}
|
|
132
|
-
|
|
133
|
-
|
|
73
|
+
return { op: "|" /* FilterOp.Or */, value: value.map(v => _normalizeFilter(v, parent)) };
|
|
74
|
+
// TODO: check all filter, and if not found filter key, taht object maybne not a filter
|
|
134
75
|
default:
|
|
135
|
-
getter = pathGetterCompile(pth);
|
|
136
76
|
if (isPlainObject(value)) {
|
|
137
|
-
|
|
77
|
+
return _normalizeFilter(value, path);
|
|
78
|
+
}
|
|
79
|
+
if (parent != null) {
|
|
80
|
+
return { path: parent, op: path, value };
|
|
138
81
|
}
|
|
139
82
|
else {
|
|
140
|
-
|
|
83
|
+
return { path, op: "===" /* FilterOp.EqStrict */, value };
|
|
141
84
|
}
|
|
142
|
-
break;
|
|
143
85
|
}
|
|
86
|
+
}));
|
|
87
|
+
if (norm.length === 0) {
|
|
88
|
+
return norm;
|
|
89
|
+
}
|
|
90
|
+
else if (norm.length === 1) {
|
|
91
|
+
return norm[0];
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
return { op: "&" /* FilterOp.And */, value: norm };
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function _filterCompile(filters) {
|
|
98
|
+
const pathCache = {};
|
|
99
|
+
const getPath = (pth) => {
|
|
100
|
+
if (pathCache[pth] != null) {
|
|
101
|
+
return pathCache[pth];
|
|
102
|
+
}
|
|
103
|
+
return (pathCache[pth] = pathGetterCompile(pth));
|
|
104
|
+
};
|
|
105
|
+
const normalized = filterNormalize(filters);
|
|
106
|
+
return _filterCompileNorm(normalized, getPath);
|
|
107
|
+
}
|
|
108
|
+
function _filterCompileNorm(filter, getPath) {
|
|
109
|
+
switch (filter.op) {
|
|
110
|
+
case "&" /* FilterOp.And */:
|
|
111
|
+
return and_(filter.value.map(v => _filterCompileNorm(v, getPath)));
|
|
112
|
+
case "|" /* FilterOp.Or */:
|
|
113
|
+
return or_(filter.value.map(v => _filterCompileNorm(v, getPath)));
|
|
114
|
+
default:
|
|
115
|
+
return _filterComplileNormPath(getPath(filter.path), filter.op, filter.value, getPath);
|
|
144
116
|
}
|
|
145
|
-
return and_(result);
|
|
146
117
|
}
|
|
147
|
-
function
|
|
118
|
+
function _filterComplileNormPath(getter, op, value, getPath) {
|
|
148
119
|
let lower;
|
|
149
120
|
let regex;
|
|
150
121
|
switch (op) {
|
|
122
|
+
case "&" /* FilterOp.And */:
|
|
123
|
+
return and_(value.map(v => _filterCompileNorm(v, getPath)));
|
|
124
|
+
case "|" /* FilterOp.Or */:
|
|
125
|
+
return or_(value.map(v => _filterCompileNorm(v, getPath)));
|
|
151
126
|
case "==" /* FilterOp.Eq */:
|
|
152
127
|
// eslint-disable-next-line eqeqeq
|
|
153
128
|
return matcher(getter, v => v == value);
|
|
@@ -208,30 +183,6 @@ function filterCompileOp(getter, op, value) {
|
|
|
208
183
|
case "~*" /* FilterOp.RegexpInsesitive */:
|
|
209
184
|
regex = value instanceof RegExp ? value : new RegExp(value, "msvi");
|
|
210
185
|
return matcher(getter, v => regex.test(v));
|
|
211
|
-
case "&" /* FilterOp.And */:
|
|
212
|
-
if (!Array.isArray(value)) {
|
|
213
|
-
throw new Error("Root '&' (AND) operator must have array type");
|
|
214
|
-
}
|
|
215
|
-
return and_(flattenDeep(value.map(v => {
|
|
216
|
-
if (isPlainObject(v)) {
|
|
217
|
-
return Object.entries(v).map(([op, opv]) => filterCompileOp(getter, op, opv));
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
return filterCompileOp(getter, "==" /* FilterOp.Eq */, v);
|
|
221
|
-
}
|
|
222
|
-
})));
|
|
223
|
-
case "|" /* FilterOp.Or */:
|
|
224
|
-
if (!Array.isArray(value)) {
|
|
225
|
-
throw new Error("Root '|' (OR) operator must have array type");
|
|
226
|
-
}
|
|
227
|
-
return or_(flattenDeep(value.map(v => {
|
|
228
|
-
if (isPlainObject(v)) {
|
|
229
|
-
return Object.entries(v).map(([op, opv]) => filterCompileOp(getter, op, opv));
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
return filterCompileOp(getter, "==" /* FilterOp.Eq */, v);
|
|
233
|
-
}
|
|
234
|
-
})));
|
|
235
186
|
}
|
|
236
187
|
throw new Error(`Unexpected operator: ${op}`);
|
|
237
188
|
}
|
|
@@ -242,6 +193,9 @@ function and_(fns) {
|
|
|
242
193
|
if (fns.length === 0) {
|
|
243
194
|
return _ => true;
|
|
244
195
|
}
|
|
196
|
+
if (fns.length === 1) {
|
|
197
|
+
return fns[0];
|
|
198
|
+
}
|
|
245
199
|
return item => {
|
|
246
200
|
for (const fn of fns) {
|
|
247
201
|
if (!fn(item)) {
|
|
@@ -255,6 +209,9 @@ function or_(fns) {
|
|
|
255
209
|
if (fns.length === 0) {
|
|
256
210
|
return _ => true;
|
|
257
211
|
}
|
|
212
|
+
if (fns.length === 1) {
|
|
213
|
+
return fns[0];
|
|
214
|
+
}
|
|
258
215
|
return item => {
|
|
259
216
|
for (const fn of fns) {
|
|
260
217
|
if (fn(item)) {
|
|
@@ -285,4 +242,20 @@ export function filterMerge(...filters) {
|
|
|
285
242
|
}
|
|
286
243
|
return result;
|
|
287
244
|
}
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvcXVlcnkvZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRWxELE9BQU8sRUFBZSxTQUFTLEVBQUUsYUFBYSxFQUFnQixNQUFNLGdCQUFnQixDQUFBO0FBR3BGLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQTZCdEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlCdkMsQ0FBQTtBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBVTtJQUNsQyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQWUsQ0FBQTtJQUNyRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQ25DLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLENBQUMsRUFBRSxFQUFFLHdCQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0FBQ0wsQ0FBQztBQW9FRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQWtCLE9BQWtCO0lBQ3hELE9BQU8sY0FBYyxDQUFJLE9BQU8sQ0FBQyxDQUFBO0FBQ3JDLENBQUM7QUFFRCx5QkFBeUI7QUFDekIsNERBQTREO0FBQzVELHFDQUFxQztBQUNyQyxzQ0FBc0M7QUFDdEMsNENBQTRDO0FBRTVD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SSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFMUM7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFdEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFFM0M7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLENBQUE7UUFFdkU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFMUM7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFdEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFFM0M7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLENBQUE7UUFFdkU7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JCLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFbkc7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFFOUU7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JCLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUU1RDtZQUNJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtZQUN6QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUVoRjtZQUNJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDckIsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBRTFEO1lBQ0ksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1lBQ3pDLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBRTlFO1lBQ0ksS0FBSyxHQUFHLEtBQUssWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ2xFLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUU5QztZQUNJLEtBQUssR0FBRyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNuRSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFOUM7WUFDSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUE7WUFDbkUsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUNQLFdBQVcsQ0FDUCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNWLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ25CLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxFQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtnQkFDeEYsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sZUFBZSxDQUFDLE1BQU0sMEJBQWUsQ0FBQyxDQUFDLENBQUE7Z0JBQ2xELENBQUM7WUFDTCxDQUFDLENBQUMsQ0FDTCxDQUNKLENBQUE7UUFFTDtZQUNJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtZQUNsRSxDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQ04sV0FBVyxDQUNQLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1YsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDbkIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEVBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO2dCQUN4RixDQUFDO3FCQUFNLENBQUM7b0JBQ0osT0FBTyxlQUFlLENBQUMsTUFBTSwwQkFBZSxDQUFDLENBQUMsQ0FBQTtnQkFDbEQsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUNMLENBQ0osQ0FBQTtJQUNULENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ2pELENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxNQUFrQixFQUFFLE9BQWdDO0lBQ2pFLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQzNDLENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxHQUFlO0lBQ3pCLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFBO0lBQ3BCLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1YsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxLQUFLLENBQUE7WUFDaEIsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUMsQ0FBQTtBQUNMLENBQUM7QUFFRCxTQUFTLEdBQUcsQ0FBQyxHQUFlO0lBQ3hCLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFBO0lBQ3BCLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1YsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sSUFBSSxDQUFBO1lBQ2YsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHLE9BQWM7SUFDekMsSUFBSSxNQUFNLEdBQXVDLFNBQVMsQ0FBQTtJQUUxRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2pCLFNBQVE7UUFDWixDQUFDO1FBQ0QsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNsQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDaEIsU0FBUTtnQkFDWixDQUFDO2dCQUVELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDNUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFhLENBQUE7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZsYXR0ZW5EZWVwLCBpbnRlcnNlY3Rpb24gfSBmcm9tIFwibG9kYXNoXCJcblxuaW1wb3J0IHsgQXNQcmltaXRpdmUsIGRlZXBDbG9uZSwgaXNQbGFpbk9iamVjdCwgTWF4UmVjdXJzaW9uIH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgUGF0aEdldHRlciwgcGF0aEdldHRlckNvbXBpbGUgfSBmcm9tIFwiLi9wYXRoXCJcblxuZXhwb3J0IGNvbnN0IGVudW0gRmlsdGVyT3Age1xuICAgIEVxID0gXCI9PVwiLFxuICAgIEVxU3RyaWN0ID0gXCI9PT1cIixcbiAgICBFcUluc2VzaXRpdmUgPSBcIj09KlwiLFxuICAgIE5lcSA9IFwiIT1cIixcbiAgICBOZXFTdHJpY3QgPSBcIiE9PVwiLFxuICAgIE5lcUluc2VzaXRpdmUgPSBcIiE9KlwiLFxuICAgIEd0ID0gXCI+XCIsXG4gICAgR3RJbnNlc2l0aXZlID0gXCI+KlwiLFxuICAgIEd0ZSA9IFwiPj1cIixcbiAgICBHdGVJbnNlc2l0aXZlID0gXCI+PSpcIixcbiAgICBMdCA9IFwiPFwiLFxuICAgIEx0SW5zZXNpdGl2ZSA9IFwiPCpcIixcbiAgICBMdGUgPSBcIjw9XCIsXG4gICAgTHRlSW5zZXNpdGl2ZSA9IFwiPD0qXCIsXG4gICAgQ29udGFpbnMgPSBcIiVcIixcbiAgICBDb250YWluc0luc2VzaXRpdmUgPSBcIiUqXCIsXG4gICAgU3RhcnRzV2l0aCA9IFwiXlwiLFxuICAgIFN0YXJ0c1dpdGhJbnNlc2l0aXZlID0gXCJeKlwiLFxuICAgIEVuZHNXaXRoID0gXCIkXCIsXG4gICAgRW5kc1dpdGhJbnNlc2l0aXZlID0gXCIkKlwiLFxuICAgIFJlZ2V4cCA9IFwiflwiLFxuICAgIFJlZ2V4cEluc2VzaXRpdmUgPSBcIn4qXCIsXG4gICAgT3IgPSBcInxcIixcbiAgICBBbmQgPSBcIiZcIlxufVxuXG5leHBvcnQgY29uc3QgT1BFUkFUT1JTOiBBcnJheTxzdHJpbmc+ID0gW1xuICAgIEZpbHRlck9wLkVxLFxuICAgIEZpbHRlck9wLkVxU3RyaWN0LFxuICAgIEZpbHRlck9wLkVxSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5OZXEsXG4gICAgRmlsdGVyT3AuTmVxU3RyaWN0LFxuICAgIEZpbHRlck9wLk5lcUluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuR3QsXG4gICAgRmlsdGVyT3AuR3RJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLkd0ZSxcbiAgICBGaWx0ZXJPcC5HdGVJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLkx0LFxuICAgIEZpbHRlck9wLkx0SW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5MdGUsXG4gICAgRmlsdGVyT3AuTHRlSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5Db250YWlucyxcbiAgICBGaWx0ZXJPcC5Db250YWluc0luc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuU3RhcnRzV2l0aCxcbiAgICBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5FbmRzV2l0aCxcbiAgICBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuUmVnZXhwLFxuICAgIEZpbHRlck9wLlJlZ2V4cEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuT3IsXG4gICAgRmlsdGVyT3AuQW5kXG5dXG5cbmV4cG9ydCBmdW5jdGlvbiBhc09wZXJhdG9ycyh2YWx1ZTogYW55KTogQXJyYXk8eyBvcDogRmlsdGVyT3A7IHZhbHVlOiBhbnkgfT4ge1xuICAgIGNvbnN0IG9wcyA9IGludGVyc2VjdGlvbihPYmplY3Qua2V5cyh2YWx1ZSksIE9QRVJBVE9SUykgYXMgRmlsdGVyT3BbXVxuICAgIGlmIChvcHMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gb3BzLm1hcChvcCA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyBvcCwgdmFsdWU6IHZhbHVlW29wXSB9XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFt7IG9wOiBGaWx0ZXJPcC5FcSwgdmFsdWUgfV1cbiAgICB9XG59XG5cbi8vIGV4cG9ydCB0eXBlIEZpbHRlcjxUIGV4dGVuZHMgTW9kZWw+ID0gX0ZpbHRlcjxGbGF0dGVuPFQ+LCBbXSwgTWF4UmVjdXJzaW9uPlxuLy8gVE9ETzogZml4IHJlY3Vyc2lvblxuZXhwb3J0IHR5cGUgRmlsdGVyPFQgZXh0ZW5kcyBNb2RlbD4gPSB7IFtrZXk6IHN0cmluZ106IGFueSB9XG5cbnR5cGUgX0ZpbHRlcjxGLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIEQgPyBuZXZlciA6IF9PYmplY3RGaWx0ZXI8RiwgUCwgRD5cblxudHlwZSBfT2JqZWN0RmlsdGVyPEYsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBQW1wibGVuZ3RoXCJdIGV4dGVuZHMgRFxuICAgID8gbmV2ZXJcbiAgICA6IHsgW0sgaW4ga2V5b2YgRl0/OiBPcGVyYXRvcnM8RltLXSwgUCwgRD4gfVxuXG50eXBlIFJvb3RPcjxGLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtGaWx0ZXJPcC5Pcl06IEFycmF5PF9GaWx0ZXI8RiwgWy4uLlAsIDBdLCBEPj4gfCB1bmRlZmluZWQgfVxuXG50eXBlIFJvb3RBbmQ8RiwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEXG4gICAgPyBuZXZlclxuICAgIDogeyBbRmlsdGVyT3AuQW5kXTogQXJyYXk8X0ZpbHRlcjxGLCBbLi4uUCwgMF0sIEQ+PiB8IHVuZGVmaW5lZCB9XG5cbmV4cG9ydCB0eXBlIE9wZXJhdG9yczxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXIgPSBNYXhSZWN1cnNpb24+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiBTaW1wbGVPcGVyYXRvcnM8VD5cblxudHlwZSBMb2NhbE9yPFQsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBQW1wibGVuZ3RoXCJdIGV4dGVuZHMgRFxuICAgID8gbmV2ZXJcbiAgICA6IHsgW0ZpbHRlck9wLk9yXTogQXJyYXk8T3BlcmF0b3JzPFQsIFsuLi5QLCAwXSwgRD4+IHwgdW5kZWZpbmVkIH1cblxudHlwZSBMb2NhbEFuZDxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtGaWx0ZXJPcC5BbmRdOiBBcnJheTxPcGVyYXRvcnM8VCwgWy4uLlAsIDBdLCBEPj4gfCB1bmRlZmluZWQgfVxuXG50eXBlIFNpbXBsZU9wZXJhdG9yczxUPiA9XG4gICAgfCBFcVN0cmljdDxUPlxuICAgIHwgTmVxU3RyaWN0PFQ+XG4gICAgfCBFcTxUPlxuICAgIHwgTmVxPFQ+XG4gICAgfCBHdDxUPlxuICAgIHwgR3RlPFQ+XG4gICAgfCBMdDxUPlxuICAgIHwgTHRlPFQ+XG4gICAgfCBDb250YWluczxUPlxuICAgIHwgU3RhcnRzV2l0aDxUPlxuICAgIHwgRW5kc1dpdGg8VD5cbiAgICB8IFJlZ2V4cDxUPlxuICAgIHwgVFxuICAgIHwgdW5kZWZpbmVkXG4gICAgfCBudWxsXG5cbnR5cGUgRXFTdHJpY3Q8VD4gPSBPcGVyYXRvcjxULCBULCBGaWx0ZXJPcC5FcVN0cmljdCwgbmV2ZXIsIG51bGw+XG50eXBlIE5lcVN0cmljdDxUPiA9IE9wZXJhdG9yPFQsIFQsIEZpbHRlck9wLk5lcVN0cmljdCwgbmV2ZXIsIG51bGw+XG50eXBlIEVxPFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5FcSwgRmlsdGVyT3AuRXFJbnNlc2l0aXZlLCBudWxsPlxudHlwZSBOZXE8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLk5lcSwgRmlsdGVyT3AuTmVxSW5zZXNpdGl2ZSwgbnVsbD5cbnR5cGUgR3Q8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLkd0LCBGaWx0ZXJPcC5HdEluc2VzaXRpdmU+XG50eXBlIEd0ZTxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuR3RlLCBGaWx0ZXJPcC5HdGVJbnNlc2l0aXZlPlxudHlwZSBMdDxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuTHQsIEZpbHRlck9wLkx0SW5zZXNpdGl2ZT5cbnR5cGUgTHRlPFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5MdGUsIEZpbHRlck9wLkx0ZUluc2VzaXRpdmU+XG50eXBlIENvbnRhaW5zPFQ+ID0gT3BlcmF0b3I8VCwgc3RyaW5nLCBGaWx0ZXJPcC5Db250YWlucywgRmlsdGVyT3AuQ29udGFpbnNJbnNlc2l0aXZlPlxudHlwZSBTdGFydHNXaXRoPFQ+ID0gT3BlcmF0b3I8VCwgc3RyaW5nLCBGaWx0ZXJPcC5TdGFydHNXaXRoLCBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZT5cbnR5cGUgRW5kc1dpdGg8VD4gPSBPcGVyYXRvcjxULCBzdHJpbmcsIEZpbHRlck9wLkVuZHNXaXRoLCBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmU+XG50eXBlIFJlZ2V4cDxUPiA9IE9wZXJhdG9yPFQsIHN0cmluZywgRmlsdGVyT3AuUmVnZXhwLCBGaWx0ZXJPcC5SZWdleHBJbnNlc2l0aXZlLCBSZWdFeHA+XG5cbnR5cGUgT3BlcmF0b3I8VCwgUiwgT1AgZXh0ZW5kcyBzdHJpbmcsIE9QSSBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBFVCA9IG5ldmVyPiA9XG4gICAgfCAoVCBleHRlbmRzIFIgPyB7IFtrIGluIE9QXTogVCB8IEVUIHwgUiB9IDogbmV2ZXIpXG4gICAgfCAoVCBleHRlbmRzIHN0cmluZyA/IChPUEkgZXh0ZW5kcyBuZXZlciA/IG5ldmVyIDogeyBbayBpbiBPUEldOiBzdHJpbmcgfSkgOiBuZXZlcilcblxuZXhwb3J0IHR5cGUgRmlsdGVyRm48VCA9IGFueT4gPSAoaXRlbTogVCkgPT4gYm9vbGVhblxuXG4vKipcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaXRlbXMuZmlsdGVyKGZpbHRlckJ5KHtpZDogNDJ9KSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQnk8VCBleHRlbmRzIE1vZGVsPihmaWx0ZXJzOiBGaWx0ZXI8VD4pOiBGaWx0ZXJGbjxUPiB7XG4gICAgcmV0dXJuIF9maWx0ZXJDb21waWxlPFQ+KGZpbHRlcnMpXG59XG5cbi8vIFRPRE86IE5vcm1hbGl6ZSBmaWx0ZXJcbi8vIHR5cGUgX0ZpbHRlciA9IHsgcGF0aDogc3RyaW5nOyBvcDogRmlsdGVyT3A7IHZhbHVlOiBhbnkgfVxuLy8gdHlwZSBfT3IgPSB7IFwifFwiOiBBcnJheTxfRmlsdGVyPiB9XG4vLyB0eXBlIF9BbmQgPSB7IFwiJlwiOiBBcnJheTxfRmlsdGVyPiB9XG4vLyBleHBvcnQgdHlwZSBOb3JtYWxpemVkRmlsdGVyID0gX09yIHwgX0FuZFxuXG4vLyAvKipcbi8vICAqIEBleGFtcGxlXG4vLyAgKiBgYGB0c1xuLy8gICogbm9ybWFsaXplRmlsdGVyKHtpZDogMiwgbmFtZToge1wiPSpcIjogXCJBbnlOYW1lXCJ9fSkgLT4ge2lkOiB7XCI9PVwiOiAyfSwgbmFtZToge1wiPSpcIjogXCJBbnlOYW1lXCJ9fX1cbi8vICAqIG5vcm1hbGl6ZUZpbHRlcih7aWQ6IHtcIj5cIjogMCwgXCI8XCI6IDEwfX0pIC0+IHtcIiZcIjogW3tpZDoge1wiPlwiOiAwfX0sIHtpZDoge1wiPFwiOiAxMH19XX1cbi8vICAqIGBgYFxuLy8gICovXG4vLyBleHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRmlsdGVyPFQgZXh0ZW5kcyBNb2RlbD4oZmlsdGVyczogRmlsdGVyczxUPik6IEZpbHRlcnM8VD4ge1xuLy8gICAgIHJldHVybiBfbm9ybWFsaXplRmlsdGVyKGZpbHRlcnMpXG4vLyB9XG5cbi8vIGZ1bmN0aW9uIF9ub3JtYWxpemVGaWx0ZXIoZmlsdGVyczogYW55LCBwYXRoPzogc3RyaW5nKTogYW55IHtcbi8vICAgICBjb25zdCByZXN1bHQgPSB7fSBhcyBhbnlcblxuLy8gICAgIGZvciAoY29uc3QgW3BhdGgsIHZdIG9mIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpKSB7XG4vLyAgICAgICAgIHN3aXRjaCAocGF0aCkge1xuLy8gICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4vLyAgICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHYpKSB7XG4vLyAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnJicgKEFORCkgb3BlcmF0b3IgbXVzdCBoYXZlIGFycmF5IHR5cGVcIilcbi8vICAgICAgICAgICAgICAgICB9XG5cbi8vICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdFtGaWx0ZXJPcC5BbmRdKSB7XG4vLyAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtGaWx0ZXJPcC5BbmRdID0gW11cbi8vICAgICAgICAgICAgICAgICB9XG5cbi8vICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuQW5kXSA9IHJlc3VsdFtGaWx0ZXJPcC5BbmRdLmNvbmNhdCh2Lm1hcChmID0+IF9ub3JtYWxpemVGaWx0ZXIoZikpKVxuLy8gICAgICAgICAgICAgICAgIGJyZWFrXG5cbi8vICAgICAgICAgICAgIGNhc2UgRmlsdGVyT3AuT3I6XG4vLyAgICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHYpKSB7XG4vLyAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnfCcgKE9SKSBvcGVyYXRvciBtdXN0IGhhdmUgYXJyYXkgdHlwZVwiKVxuLy8gICAgICAgICAgICAgICAgIH1cblxuLy8gICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W0ZpbHRlck9wLk9yXSkge1xuLy8gICAgICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuT3JdID0gW11cbi8vICAgICAgICAgICAgICAgICB9XG5cbi8vICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuT3JdID0gcmVzdWx0W0ZpbHRlck9wLk9yXS5jb25jYXQodi5tYXAoZiA9PiBfbm9ybWFsaXplRmlsdGVyKGYpKSlcbi8vICAgICAgICAgICAgICAgICBicmVha1xuXG4vLyAgICAgICAgICAgICBkZWZhdWx0OlxuLy8gICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgYXNPcGVyYXRvcnModikpIHtcbi8vICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlbnRyeS5vcCkge1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHRbRmlsdGVyT3AuQW5kXSkge1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuQW5kXSA9IFtdXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W0ZpbHRlck9wLkFuZF0gPSByZXN1bHRbRmlsdGVyT3AuQW5kXS5jb25jYXQoXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlLm1hcCgodjogYW55KSA9PiBfbm9ybWFsaXplRmlsdGVyKHYsIHBhdGgpKVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlck9wLk9yOlxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W0ZpbHRlck9wLk9yXSkge1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuT3JdID0gW11cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbRmlsdGVyT3AuT3JdID0gcmVzdWx0W0ZpbHRlck9wLk9yXS5jb25jYXQoXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlLm1hcCgodjogYW55KSA9PiBfbm9ybWFsaXplRmlsdGVyKHYsIHBhdGgpKVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W0ZpbHRlck9wLkFuZF0pIHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W0ZpbHRlck9wLkFuZF0gPSBbXVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtGaWx0ZXJPcC5BbmRdLnB1c2goeyBwYXRoLCAuLi5lbnRyeSB9KVxuLy8gICAgICAgICAgICAgICAgICAgICB9XG4vLyAgICAgICAgICAgICAgICAgfVxuLy8gICAgICAgICB9XG4vLyAgICAgfVxuXG4vLyAgICAgcmV0dXJuIHJlc3VsdFxuLy8gfVxuXG5mdW5jdGlvbiBfZmlsdGVyQ29tcGlsZTxUIGV4dGVuZHMgTW9kZWw+KGZpbHRlcnM6IEZpbHRlcjxUPik6IEZpbHRlckZuPFQ+IHtcbiAgICBsZXQgZ2V0dGVyOiBQYXRoR2V0dGVyXG4gICAgY29uc3QgcmVzdWx0OiBGaWx0ZXJGbjxUPltdID0gW11cbiAgICBmb3IgKGNvbnN0IFtwdGgsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmaWx0ZXJzKSkge1xuICAgICAgICBzd2l0Y2ggKHB0aCkge1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSb290ICcmJyAoQU5EKSBvcGVyYXRvciBtdXN0IGhhdmUgYXJyYXkgdHlwZVwiKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKHJlc3VsdC5sZW5ndGgsIDAsIC4uLnZhbHVlLm1hcChfZmlsdGVyQ29tcGlsZTxUPikpXG4gICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5PcjpcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJvb3QgJ3wnIChPUikgb3BlcmF0b3IgbXVzdCBoYXZlIGFycmF5IHR5cGVcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gob3JfKHZhbHVlLm1hcChfZmlsdGVyQ29tcGlsZTxUPikpKVxuICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZ2V0dGVyID0gcGF0aEdldHRlckNvbXBpbGUocHRoKVxuICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhbmRfKE9iamVjdC5lbnRyaWVzKHZhbHVlKS5tYXAoKFtvcCwgb3B2XSkgPT4gZmlsdGVyQ29tcGlsZU9wKGdldHRlciwgb3AgYXMgYW55LCBvcHYpKSkpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZmlsdGVyQ29tcGlsZU9wKGdldHRlciwgRmlsdGVyT3AuRXEsIHZhbHVlKSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhbmRfKHJlc3VsdClcbn1cblxuZnVuY3Rpb24gZmlsdGVyQ29tcGlsZU9wKGdldHRlcjogUGF0aEdldHRlciwgb3A6IEZpbHRlck9wLCB2YWx1ZTogYW55KTogRmlsdGVyRm4ge1xuICAgIGxldCBsb3dlcjogc3RyaW5nXG4gICAgbGV0IHJlZ2V4OiBSZWdFeHBcbiAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkVxU3RyaWN0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPT09IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXFJbnNlc2l0aXZlOlxuICAgICAgICAgICAgbG93ZXIgPSBTdHJpbmcodmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5OZXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiAhPSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcVN0cmljdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ICE9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpICE9PSBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPiB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0SW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPiBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0ZTpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ID49IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuR3RlSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPj0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2IDwgdmFsdWUpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDwgbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdGU6XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA8PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkx0ZUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDw9IGxvd2VyKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQ29udGFpbnM6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiAoQXJyYXkuaXNBcnJheSh2KSA/IHYuaW5jbHVkZXModmFsdWUpIDogU3RyaW5nKHYpLmluY2x1ZGVzKGxvd2VyKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5Db250YWluc0luc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlN0YXJ0c1dpdGg6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aDpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS5lbmRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmVuZHNXaXRoKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cDpcbiAgICAgICAgICAgIHJlZ2V4ID0gdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgPyB2YWx1ZSA6IG5ldyBSZWdFeHAodmFsdWUsIFwibXN2XCIpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gcmVnZXgudGVzdCh2KSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cEluc2VzaXRpdmU6XG4gICAgICAgICAgICByZWdleCA9IHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwID8gdmFsdWUgOiBuZXcgUmVnRXhwKHZhbHVlLCBcIm1zdmlcIilcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiByZWdleC50ZXN0KHYpKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQW5kOlxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJvb3QgJyYnIChBTkQpIG9wZXJhdG9yIG11c3QgaGF2ZSBhcnJheSB0eXBlXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYW5kXyhcbiAgICAgICAgICAgICAgICBmbGF0dGVuRGVlcChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUubWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModikubWFwKChbb3AsIG9wdl0pID0+IGZpbHRlckNvbXBpbGVPcChnZXR0ZXIsIG9wIGFzIGFueSwgb3B2KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlckNvbXBpbGVPcChnZXR0ZXIsIEZpbHRlck9wLkVxLCB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk9yOlxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJvb3QgJ3wnIChPUikgb3BlcmF0b3IgbXVzdCBoYXZlIGFycmF5IHR5cGVcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvcl8oXG4gICAgICAgICAgICAgICAgZmxhdHRlbkRlZXAoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLm1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHYpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHYpLm1hcCgoW29wLCBvcHZdKSA9PiBmaWx0ZXJDb21waWxlT3AoZ2V0dGVyLCBvcCBhcyBhbnksIG9wdikpXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJDb21waWxlT3AoZ2V0dGVyLCBGaWx0ZXJPcC5FcSwgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG9wZXJhdG9yOiAke29wfWApXG59XG5cbmZ1bmN0aW9uIG1hdGNoZXIoZ2V0dGVyOiBQYXRoR2V0dGVyLCBwcmVkaWN0OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbik6IEZpbHRlckZuIHtcbiAgICByZXR1cm4gb2JqID0+IGdldHRlcihvYmopLnNvbWUocHJlZGljdClcbn1cblxuZnVuY3Rpb24gYW5kXyhmbnM6IEZpbHRlckZuW10pOiBGaWx0ZXJGbiB7XG4gICAgaWYgKGZucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIF8gPT4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBmbiBvZiBmbnMpIHtcbiAgICAgICAgICAgIGlmICghZm4oaXRlbSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gb3JfKGZuczogRmlsdGVyRm5bXSk6IEZpbHRlckZuIHtcbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gXyA9PiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgICAgICAgICAgaWYgKGZuKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJNZXJnZSguLi5maWx0ZXJzOiBhbnlbXSk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xuICAgICAgICBpZiAoZmlsdGVyID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBkZWVwQ2xvbmUoZmlsdGVyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdFtrXVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc3VsdFtrXSA9IGRlZXBDbG9uZSh2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdCBhcyBhbnlcbn1cbiJdfQ==
|
|
245
|
+
export class FilterProperty extends QueryProperty {
|
|
246
|
+
merge(a, b) {
|
|
247
|
+
return filterMerge(a, b);
|
|
248
|
+
}
|
|
249
|
+
norm(a) {
|
|
250
|
+
return filterNormalize(a);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
export class FilterPropertySet extends QueryPropertySet {
|
|
254
|
+
newProperty() {
|
|
255
|
+
return new FilterProperty(undefined);
|
|
256
|
+
}
|
|
257
|
+
merge(...args) {
|
|
258
|
+
return filterMerge(...args);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvcXVlcnkvZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRWxELE9BQU8sRUFBZSxTQUFTLEVBQUUsYUFBYSxFQUFnQixNQUFNLGdCQUFnQixDQUFBO0FBR3BGLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUE2QmxFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F5QnZDLENBQUE7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQVU7SUFDbEMsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxDQUFlLENBQUE7SUFDckUsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNoQixPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQTtRQUNuQyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxDQUFDLEVBQUUsRUFBRSx3QkFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDdkMsQ0FBQztBQUNMLENBQUM7QUFvRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFrQixPQUFrQjtJQUN4RCxPQUFPLGNBQWMsQ0FBSSxPQUFPLENBQUMsQ0FBQTtBQUNyQyxDQUFDO0FBYUQ7Ozs7OztHQU1H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QUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFFM0M7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLENBQUE7UUFFdkU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFMUM7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFdEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFFM0M7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLENBQUE7UUFFdkU7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JCLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFD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Q0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNsQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDaEIsU0FBUTtnQkFDWixDQUFDO2dCQUVELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDNUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFhLENBQUE7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxjQUFnQyxTQUFRLGFBQTBDO0lBQ3hFLEtBQUssQ0FDcEIsQ0FBZ0MsRUFDaEMsQ0FBZ0M7UUFFaEMsT0FBTyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFDa0IsSUFBSSxDQUFDLENBQStCO1FBQ25ELE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxpQkFBbUMsU0FBUSxnQkFBMkI7SUFDNUQsV0FBVztRQUMxQixPQUFPLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFFa0IsS0FBSyxDQUFDLEdBQUcsSUFBVztRQUNuQyxPQUFPLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZsYXR0ZW5EZWVwLCBpbnRlcnNlY3Rpb24gfSBmcm9tIFwibG9kYXNoXCJcblxuaW1wb3J0IHsgQXNQcmltaXRpdmUsIGRlZXBDbG9uZSwgaXNQbGFpbk9iamVjdCwgTWF4UmVjdXJzaW9uIH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgUGF0aEdldHRlciwgcGF0aEdldHRlckNvbXBpbGUgfSBmcm9tIFwiLi9wYXRoXCJcbmltcG9ydCB7IFF1ZXJ5UHJvcGVydHksIFF1ZXJ5UHJvcGVydHlTZXQgfSBmcm9tIFwiLi9xdWVyeS1wcm9wZXJ0eVwiXG5cbmV4cG9ydCBjb25zdCBlbnVtIEZpbHRlck9wIHtcbiAgICBFcSA9IFwiPT1cIixcbiAgICBFcVN0cmljdCA9IFwiPT09XCIsXG4gICAgRXFJbnNlc2l0aXZlID0gXCI9PSpcIixcbiAgICBOZXEgPSBcIiE9XCIsXG4gICAgTmVxU3RyaWN0ID0gXCIhPT1cIixcbiAgICBOZXFJbnNlc2l0aXZlID0gXCIhPSpcIixcbiAgICBHdCA9IFwiPlwiLFxuICAgIEd0SW5zZXNpdGl2ZSA9IFwiPipcIixcbiAgICBHdGUgPSBcIj49XCIsXG4gICAgR3RlSW5zZXNpdGl2ZSA9IFwiPj0qXCIsXG4gICAgTHQgPSBcIjxcIixcbiAgICBMdEluc2VzaXRpdmUgPSBcIjwqXCIsXG4gICAgTHRlID0gXCI8PVwiLFxuICAgIEx0ZUluc2VzaXRpdmUgPSBcIjw9KlwiLFxuICAgIENvbnRhaW5zID0gXCIlXCIsXG4gICAgQ29udGFpbnNJbnNlc2l0aXZlID0gXCIlKlwiLFxuICAgIFN0YXJ0c1dpdGggPSBcIl5cIixcbiAgICBTdGFydHNXaXRoSW5zZXNpdGl2ZSA9IFwiXipcIixcbiAgICBFbmRzV2l0aCA9IFwiJFwiLFxuICAgIEVuZHNXaXRoSW5zZXNpdGl2ZSA9IFwiJCpcIixcbiAgICBSZWdleHAgPSBcIn5cIixcbiAgICBSZWdleHBJbnNlc2l0aXZlID0gXCJ+KlwiLFxuICAgIE9yID0gXCJ8XCIsXG4gICAgQW5kID0gXCImXCJcbn1cblxuZXhwb3J0IGNvbnN0IE9QRVJBVE9SUzogQXJyYXk8c3RyaW5nPiA9IFtcbiAgICBGaWx0ZXJPcC5FcSxcbiAgICBGaWx0ZXJPcC5FcVN0cmljdCxcbiAgICBGaWx0ZXJPcC5FcUluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuTmVxLFxuICAgIEZpbHRlck9wLk5lcVN0cmljdCxcbiAgICBGaWx0ZXJPcC5OZXFJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLkd0LFxuICAgIEZpbHRlck9wLkd0SW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5HdGUsXG4gICAgRmlsdGVyT3AuR3RlSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5MdCxcbiAgICBGaWx0ZXJPcC5MdEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuTHRlLFxuICAgIEZpbHRlck9wLkx0ZUluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuQ29udGFpbnMsXG4gICAgRmlsdGVyT3AuQ29udGFpbnNJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLlN0YXJ0c1dpdGgsXG4gICAgRmlsdGVyT3AuU3RhcnRzV2l0aEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuRW5kc1dpdGgsXG4gICAgRmlsdGVyT3AuRW5kc1dpdGhJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLlJlZ2V4cCxcbiAgICBGaWx0ZXJPcC5SZWdleHBJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLk9yLFxuICAgIEZpbHRlck9wLkFuZFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gYXNPcGVyYXRvcnModmFsdWU6IGFueSk6IEFycmF5PHsgb3A6IEZpbHRlck9wOyB2YWx1ZTogYW55IH0+IHtcbiAgICBjb25zdCBvcHMgPSBpbnRlcnNlY3Rpb24oT2JqZWN0LmtleXModmFsdWUpLCBPUEVSQVRPUlMpIGFzIEZpbHRlck9wW11cbiAgICBpZiAob3BzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIG9wcy5tYXAob3AgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgb3AsIHZhbHVlOiB2YWx1ZVtvcF0gfVxuICAgICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbeyBvcDogRmlsdGVyT3AuRXEsIHZhbHVlIH1dXG4gICAgfVxufVxuXG4vLyBleHBvcnQgdHlwZSBGaWx0ZXI8VCBleHRlbmRzIE1vZGVsPiA9IF9GaWx0ZXI8RmxhdHRlbjxUPiwgW10sIE1heFJlY3Vyc2lvbj5cbi8vIFRPRE86IGZpeCByZWN1cnNpb25cbmV4cG9ydCB0eXBlIEZpbHRlcjxUIGV4dGVuZHMgTW9kZWw+ID0geyBba2V5OiBzdHJpbmddOiBhbnkgfVxuXG50eXBlIF9GaWx0ZXI8RiwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEID8gbmV2ZXIgOiBfT2JqZWN0RmlsdGVyPEYsIFAsIEQ+XG5cbnR5cGUgX09iamVjdEZpbHRlcjxGLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtLIGluIGtleW9mIEZdPzogT3BlcmF0b3JzPEZbS10sIFAsIEQ+IH1cblxudHlwZSBSb290T3I8RiwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEXG4gICAgPyBuZXZlclxuICAgIDogeyBbRmlsdGVyT3AuT3JdOiBBcnJheTxfRmlsdGVyPEYsIFsuLi5QLCAwXSwgRD4+IHwgdW5kZWZpbmVkIH1cblxudHlwZSBSb290QW5kPEYsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBQW1wibGVuZ3RoXCJdIGV4dGVuZHMgRFxuICAgID8gbmV2ZXJcbiAgICA6IHsgW0ZpbHRlck9wLkFuZF06IEFycmF5PF9GaWx0ZXI8RiwgWy4uLlAsIDBdLCBEPj4gfCB1bmRlZmluZWQgfVxuXG5leHBvcnQgdHlwZSBPcGVyYXRvcnM8VCwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyID0gTWF4UmVjdXJzaW9uPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEXG4gICAgPyBuZXZlclxuICAgIDogU2ltcGxlT3BlcmF0b3JzPFQ+XG5cbnR5cGUgTG9jYWxPcjxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtGaWx0ZXJPcC5Pcl06IEFycmF5PE9wZXJhdG9yczxULCBbLi4uUCwgMF0sIEQ+PiB8IHVuZGVmaW5lZCB9XG5cbnR5cGUgTG9jYWxBbmQ8VCwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEXG4gICAgPyBuZXZlclxuICAgIDogeyBbRmlsdGVyT3AuQW5kXTogQXJyYXk8T3BlcmF0b3JzPFQsIFsuLi5QLCAwXSwgRD4+IHwgdW5kZWZpbmVkIH1cblxudHlwZSBTaW1wbGVPcGVyYXRvcnM8VD4gPVxuICAgIHwgRXFTdHJpY3Q8VD5cbiAgICB8IE5lcVN0cmljdDxUPlxuICAgIHwgRXE8VD5cbiAgICB8IE5lcTxUPlxuICAgIHwgR3Q8VD5cbiAgICB8IEd0ZTxUPlxuICAgIHwgTHQ8VD5cbiAgICB8IEx0ZTxUPlxuICAgIHwgQ29udGFpbnM8VD5cbiAgICB8IFN0YXJ0c1dpdGg8VD5cbiAgICB8IEVuZHNXaXRoPFQ+XG4gICAgfCBSZWdleHA8VD5cbiAgICB8IFRcbiAgICB8IHVuZGVmaW5lZFxuICAgIHwgbnVsbFxuXG50eXBlIEVxU3RyaWN0PFQ+ID0gT3BlcmF0b3I8VCwgVCwgRmlsdGVyT3AuRXFTdHJpY3QsIG5ldmVyLCBudWxsPlxudHlwZSBOZXFTdHJpY3Q8VD4gPSBPcGVyYXRvcjxULCBULCBGaWx0ZXJPcC5OZXFTdHJpY3QsIG5ldmVyLCBudWxsPlxudHlwZSBFcTxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuRXEsIEZpbHRlck9wLkVxSW5zZXNpdGl2ZSwgbnVsbD5cbnR5cGUgTmVxPFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5OZXEsIEZpbHRlck9wLk5lcUluc2VzaXRpdmUsIG51bGw+XG50eXBlIEd0PFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5HdCwgRmlsdGVyT3AuR3RJbnNlc2l0aXZlPlxudHlwZSBHdGU8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLkd0ZSwgRmlsdGVyT3AuR3RlSW5zZXNpdGl2ZT5cbnR5cGUgTHQ8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLkx0LCBGaWx0ZXJPcC5MdEluc2VzaXRpdmU+XG50eXBlIEx0ZTxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuTHRlLCBGaWx0ZXJPcC5MdGVJbnNlc2l0aXZlPlxudHlwZSBDb250YWluczxUPiA9IE9wZXJhdG9yPFQsIHN0cmluZywgRmlsdGVyT3AuQ29udGFpbnMsIEZpbHRlck9wLkNvbnRhaW5zSW5zZXNpdGl2ZT5cbnR5cGUgU3RhcnRzV2l0aDxUPiA9IE9wZXJhdG9yPFQsIHN0cmluZywgRmlsdGVyT3AuU3RhcnRzV2l0aCwgRmlsdGVyT3AuU3RhcnRzV2l0aEluc2VzaXRpdmU+XG50eXBlIEVuZHNXaXRoPFQ+ID0gT3BlcmF0b3I8VCwgc3RyaW5nLCBGaWx0ZXJPcC5FbmRzV2l0aCwgRmlsdGVyT3AuRW5kc1dpdGhJbnNlc2l0aXZlPlxudHlwZSBSZWdleHA8VD4gPSBPcGVyYXRvcjxULCBzdHJpbmcsIEZpbHRlck9wLlJlZ2V4cCwgRmlsdGVyT3AuUmVnZXhwSW5zZXNpdGl2ZSwgUmVnRXhwPlxuXG50eXBlIE9wZXJhdG9yPFQsIFIsIE9QIGV4dGVuZHMgc3RyaW5nLCBPUEkgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgRVQgPSBuZXZlcj4gPVxuICAgIHwgKFQgZXh0ZW5kcyBSID8geyBbayBpbiBPUF06IFQgfCBFVCB8IFIgfSA6IG5ldmVyKVxuICAgIHwgKFQgZXh0ZW5kcyBzdHJpbmcgPyAoT1BJIGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IHsgW2sgaW4gT1BJXTogc3RyaW5nIH0pIDogbmV2ZXIpXG5cbmV4cG9ydCB0eXBlIEZpbHRlckZuPFQgPSBhbnk+ID0gKGl0ZW06IFQpID0+IGJvb2xlYW5cblxuLyoqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGl0ZW1zLmZpbHRlcihmaWx0ZXJCeSh7aWQ6IDQyfSkpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckJ5PFQgZXh0ZW5kcyBNb2RlbD4oZmlsdGVyczogRmlsdGVyPFQ+KTogRmlsdGVyRm48VD4ge1xuICAgIHJldHVybiBfZmlsdGVyQ29tcGlsZTxUPihmaWx0ZXJzKVxufVxuXG4vLyBUT0RPOiBOb3JtYWxpemUgZmlsdGVyXG4vLyB0eXBlIF9GaWx0ZXIgPSB7IHBhdGg6IHN0cmluZzsgb3A6IEZpbHRlck9wOyB2YWx1ZTogYW55IH1cbi8vIHR5cGUgX09yID0geyBcInxcIjogQXJyYXk8X0ZpbHRlcj4gfVxuLy8gdHlwZSBfQW5kID0geyBcIiZcIjogQXJyYXk8X0ZpbHRlcj4gfVxuLy8gZXhwb3J0IHR5cGUgTm9ybWFsaXplZEZpbHRlciA9IF9PciB8IF9BbmRcbnR5cGUgTm9ybVBhdGggPSB7IHBhdGg6IHN0cmluZzsgb3A6IEV4Y2x1ZGU8RmlsdGVyT3AsIEZpbHRlck9wLk9yIHwgRmlsdGVyT3AuQW5kPjsgdmFsdWU6IGFueSB9XG50eXBlIE5vcm1PciA9IHsgb3A6IEZpbHRlck9wLk9yOyB2YWx1ZTogQXJyYXk8Tm9ybUVudHJ5PiB9XG50eXBlIE5vcm1BbmQgPSB7IG9wOiBGaWx0ZXJPcC5BbmQ7IHZhbHVlOiBBcnJheTxOb3JtRW50cnk+IH1cbnR5cGUgTm9ybUVudHJ5ID0gTm9ybVBhdGggfCBOb3JtT3IgfCBOb3JtQW5kXG5leHBvcnQgdHlwZSBGaWx0ZXJOb3JtYWxpemVkID0gTm9ybUVudHJ5XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBmaWx0ZXJOb3JtYWxpemUoe2lkOiB7XCI+XCI6IDAsIFwiPFwiOiAxMH19KVxuICoge29wOiBcIiZcIiwgdmFsdWU6IFt7cGF0aDogXCJpZFwiLCBvcDogXCI+XCIsIHZhbHVlOiAwfSwge3BhdGg6IFwiaWRcIiwgb3A6IFwiPFwiLCB2YWx1ZTogMTB9XX1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyTm9ybWFsaXplPFQgZXh0ZW5kcyBNb2RlbD4oZmlsdGVyczogRmlsdGVyPFQ+KTogRmlsdGVyTm9ybWFsaXplZCB7XG4gICAgcmV0dXJuIF9ub3JtYWxpemVGaWx0ZXIoZmlsdGVycylcbn1cblxuZnVuY3Rpb24gX25vcm1hbGl6ZUZpbHRlcjxUIGV4dGVuZHMgTW9kZWw+KGZpbHRlcnM6IEZpbHRlcjxUPiwgcGFyZW50Pzogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCBub3JtID0gZmxhdHRlbkRlZXAoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLm1hcCgoW3BhdGgsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChwYXRoKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3BlcmF0b3IgQU5EICgke0ZpbHRlck9wLkFuZH0pIG11c3QgaGF2ZSBhcnJheSB0eXBlYClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBvcDogRmlsdGVyT3AuQW5kLCB2YWx1ZTogdmFsdWUubWFwKHYgPT4gX25vcm1hbGl6ZUZpbHRlcih2LCBwYXJlbnQpKSB9XG5cbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlck9wLk9yOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9wZXJhdG9yIE9SICgke0ZpbHRlck9wLk9yfSkgbXVzdCBoYXZlIGFycmF5IHR5cGVgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG9wOiBGaWx0ZXJPcC5PciwgdmFsdWU6IHZhbHVlLm1hcCh2ID0+IF9ub3JtYWxpemVGaWx0ZXIodiwgcGFyZW50KSkgfVxuXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogY2hlY2sgYWxsIGZpbHRlciwgYW5kIGlmIG5vdCBmb3VuZCBmaWx0ZXIga2V5LCB0YWh0IG9iamVjdCBtYXlibmUgbm90IGEgZmlsdGVyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX25vcm1hbGl6ZUZpbHRlcih2YWx1ZSwgcGF0aClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGg6IHBhcmVudCwgb3A6IHBhdGgsIHZhbHVlIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGgsIG9wOiBGaWx0ZXJPcC5FcVN0cmljdCwgdmFsdWUgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKVxuXG4gICAgaWYgKG5vcm0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBub3JtXG4gICAgfSBlbHNlIGlmIChub3JtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gbm9ybVswXVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7IG9wOiBGaWx0ZXJPcC5BbmQsIHZhbHVlOiBub3JtIH1cbiAgICB9XG59XG5cbnR5cGUgR2V0UGF0aEZuID0gKHB0aDogc3RyaW5nKSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBwYXRoR2V0dGVyQ29tcGlsZT5cblxuZnVuY3Rpb24gX2ZpbHRlckNvbXBpbGU8VCBleHRlbmRzIE1vZGVsPihmaWx0ZXJzOiBGaWx0ZXI8VD4pOiBGaWx0ZXJGbjxUPiB7XG4gICAgY29uc3QgcGF0aENhY2hlOiB7IFtrZXk6IHN0cmluZ106IFBhdGhHZXR0ZXIgfSA9IHt9XG4gICAgY29uc3QgZ2V0UGF0aCA9IChwdGg6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAocGF0aENhY2hlW3B0aF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGhDYWNoZVtwdGhdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChwYXRoQ2FjaGVbcHRoXSA9IHBhdGhHZXR0ZXJDb21waWxlKHB0aCkpXG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBmaWx0ZXJOb3JtYWxpemUoZmlsdGVycylcbiAgICByZXR1cm4gX2ZpbHRlckNvbXBpbGVOb3JtKG5vcm1hbGl6ZWQsIGdldFBhdGgpXG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJDb21waWxlTm9ybShmaWx0ZXI6IEZpbHRlck5vcm1hbGl6ZWQsIGdldFBhdGg6IEdldFBhdGhGbik6IEZpbHRlckZuPGFueT4ge1xuICAgIHN3aXRjaCAoZmlsdGVyLm9wKSB7XG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQW5kOlxuICAgICAgICAgICAgcmV0dXJuIGFuZF8oZmlsdGVyLnZhbHVlLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5PcjpcbiAgICAgICAgICAgIHJldHVybiBvcl8oZmlsdGVyLnZhbHVlLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBfZmlsdGVyQ29tcGxpbGVOb3JtUGF0aChnZXRQYXRoKGZpbHRlci5wYXRoKSwgZmlsdGVyLm9wLCBmaWx0ZXIudmFsdWUsIGdldFBhdGgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBfZmlsdGVyQ29tcGxpbGVOb3JtUGF0aChnZXR0ZXI6IFBhdGhHZXR0ZXIsIG9wOiBGaWx0ZXJPcCwgdmFsdWU6IGFueSwgZ2V0UGF0aDogR2V0UGF0aEZuKTogRmlsdGVyRm48YW55PiB7XG4gICAgbGV0IGxvd2VyOiBzdHJpbmdcbiAgICBsZXQgcmVnZXg6IFJlZ0V4cFxuICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4gICAgICAgICAgICByZXR1cm4gYW5kXygodmFsdWUgYXMgTm9ybUVudHJ5W10pLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5PcjpcbiAgICAgICAgICAgIHJldHVybiBvcl8oKHZhbHVlIGFzIE5vcm1FbnRyeVtdKS5tYXAodiA9PiBfZmlsdGVyQ29tcGlsZU5vcm0odiwgZ2V0UGF0aCkpKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkVxU3RyaWN0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPT09IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXFJbnNlc2l0aXZlOlxuICAgICAgICAgICAgbG93ZXIgPSBTdHJpbmcodmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5OZXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiAhPSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcVN0cmljdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ICE9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpICE9PSBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPiB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0SW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPiBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0ZTpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ID49IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuR3RlSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPj0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2IDwgdmFsdWUpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDwgbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdGU6XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA8PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkx0ZUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDw9IGxvd2VyKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQ29udGFpbnM6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiAoQXJyYXkuaXNBcnJheSh2KSA/IHYuaW5jbHVkZXModmFsdWUpIDogU3RyaW5nKHYpLmluY2x1ZGVzKGxvd2VyKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5Db250YWluc0luc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlN0YXJ0c1dpdGg6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aDpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS5lbmRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmVuZHNXaXRoKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cDpcbiAgICAgICAgICAgIHJlZ2V4ID0gdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgPyB2YWx1ZSA6IG5ldyBSZWdFeHAodmFsdWUsIFwibXN2XCIpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gcmVnZXgudGVzdCh2KSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cEluc2VzaXRpdmU6XG4gICAgICAgICAgICByZWdleCA9IHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwID8gdmFsdWUgOiBuZXcgUmVnRXhwKHZhbHVlLCBcIm1zdmlcIilcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiByZWdleC50ZXN0KHYpKVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBvcGVyYXRvcjogJHtvcH1gKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVyKGdldHRlcjogUGF0aEdldHRlciwgcHJlZGljdDogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4pOiBGaWx0ZXJGbiB7XG4gICAgcmV0dXJuIG9iaiA9PiBnZXR0ZXIob2JqKS5zb21lKHByZWRpY3QpXG59XG5cbmZ1bmN0aW9uIGFuZF8oZm5zOiBGaWx0ZXJGbltdKTogRmlsdGVyRm4ge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBfID0+IHRydWVcbiAgICB9XG5cbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZm5zWzBdXG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgICAgICAgICAgaWYgKCFmbihpdGVtKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfVxufVxuXG5mdW5jdGlvbiBvcl8oZm5zOiBGaWx0ZXJGbltdKTogRmlsdGVyRm4ge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBfID0+IHRydWVcbiAgICB9XG5cbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZm5zWzBdXG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgICAgICAgICAgaWYgKGZuKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJNZXJnZSguLi5maWx0ZXJzOiBhbnlbXSk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xuICAgICAgICBpZiAoZmlsdGVyID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBkZWVwQ2xvbmUoZmlsdGVyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdFtrXVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc3VsdFtrXSA9IGRlZXBDbG9uZSh2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdCBhcyBhbnlcbn1cblxuZXhwb3J0IGNsYXNzIEZpbHRlclByb3BlcnR5PFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBRdWVyeVByb3BlcnR5PEZpbHRlcjxUPiwgRmlsdGVyTm9ybWFsaXplZD4ge1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBtZXJnZShcbiAgICAgICAgYT86IEZpbHRlck5vcm1hbGl6ZWQgfCB1bmRlZmluZWQsXG4gICAgICAgIGI/OiBGaWx0ZXJOb3JtYWxpemVkIHwgdW5kZWZpbmVkXG4gICAgKTogRmlsdGVyTm9ybWFsaXplZCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJNZXJnZShhLCBiKVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbm9ybShhOiBGaWx0ZXJOb3JtYWxpemVkIHwgRmlsdGVyPFQ+KTogRmlsdGVyTm9ybWFsaXplZCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJOb3JtYWxpemUoYSlcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJQcm9wZXJ0eVNldDxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUXVlcnlQcm9wZXJ0eVNldDxGaWx0ZXI8VD4+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmV3UHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyUHJvcGVydHkodW5kZWZpbmVkKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBtZXJnZSguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICByZXR1cm4gZmlsdGVyTWVyZ2UoLi4uYXJncylcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { QueryProperty, QueryPropertySet } from "./query-property";
|
|
1
2
|
export function groupBy(grouper) {
|
|
2
3
|
return grouperCompile(grouper);
|
|
3
4
|
}
|
|
@@ -7,6 +8,7 @@ function grouperCompile(grouper) {
|
|
|
7
8
|
export function grouperMerge(...groupers) {
|
|
8
9
|
return undefined;
|
|
9
10
|
}
|
|
11
|
+
export function grouperNormalize(grouper) { }
|
|
10
12
|
// import { Primitive } from "utility-types"
|
|
11
13
|
// import { Eval, Flatten } from "@ngutil/common"
|
|
12
14
|
// import { type Model } from "./query"
|
|
@@ -64,4 +66,20 @@ export function grouperMerge(...groupers) {
|
|
|
64
66
|
// ): Grouper<T, F> | undefined {
|
|
65
67
|
// return undefined
|
|
66
68
|
// }
|
|
67
|
-
|
|
69
|
+
export class GrouperProperty extends QueryProperty {
|
|
70
|
+
norm(a) {
|
|
71
|
+
return grouperNormalize;
|
|
72
|
+
}
|
|
73
|
+
merge(a, b) {
|
|
74
|
+
return grouperMerge(a, b);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export class GrouperPropertySet extends QueryPropertySet {
|
|
78
|
+
newProperty() {
|
|
79
|
+
return new GrouperProperty(undefined);
|
|
80
|
+
}
|
|
81
|
+
merge(...args) {
|
|
82
|
+
return grouperMerge(...args);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RhdGEvc3JjL3F1ZXJ5L2dyb3VwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBT2xFLE1BQU0sVUFBVSxPQUFPLENBQWtDLE9BQXNCO0lBQzNFLE9BQU8sY0FBYyxDQUFPLE9BQU8sQ0FBQyxDQUFBO0FBQ3hDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBa0MsT0FBc0I7SUFDM0UsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQTtBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FDeEIsR0FBRyxRQUFpRDtJQUVwRCxPQUFPLFNBQVMsQ0FBQTtBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFrQixPQUFtQixJQUFzQixDQUFDO0FBRTVGLDRDQUE0QztBQUU1QyxpREFBaUQ7QUFFakQsdUNBQXVDO0FBQ3ZDLHNDQUFzQztBQUV0Qyw4Q0FBOEM7QUFDOUMsaUJBQWlCO0FBQ2pCLHVCQUF1QjtBQUN2QixJQUFJO0FBRUosK0RBQStEO0FBRS9ELGtGQUFrRjtBQUVsRixzRkFBc0Y7QUFFdEYsK0NBQStDO0FBQy9DLG1CQUFtQjtBQUNuQixxQkFBcUI7QUFDckIsNEJBQTRCO0FBQzVCLHlCQUF5QjtBQUN6QixJQUFJO0FBRUosNkVBQTZFO0FBQzdFLHVCQUF1QjtBQUN2QixJQUFJO0FBRUosNERBQTREO0FBQzVELHNGQUFzRjtBQUV0Riw0RkFBNEY7QUFFNUYsK0VBQStFO0FBQy9FLGlCQUFpQjtBQUNqQixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLElBQUk7QUFFSixNQUFNO0FBQ04sY0FBYztBQUNkLFdBQVc7QUFDWCxnREFBZ0Q7QUFDaEQseUNBQXlDO0FBQ3pDLEtBQUs7QUFDTCxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELEtBQUs7QUFDTCxvRUFBb0U7QUFDcEUsNkZBQTZGO0FBQzdGLHFFQUFxRTtBQUNyRSxLQUFLO0FBQ0wsb0dBQW9HO0FBQ3BHLDhFQUE4RTtBQUM5RSxTQUFTO0FBQ1QsTUFBTTtBQUNOLGdGQUFnRjtBQUNoRiwyQkFBMkI7QUFDM0IsSUFBSTtBQUVKLHdDQUF3QztBQUV4Qyx3RkFBd0Y7QUFDeEYsNEJBQTRCO0FBQzVCLElBQUk7QUFFSixpRUFBaUU7QUFDakUsMkRBQTJEO0FBQzNELGlDQUFpQztBQUNqQyx1QkFBdUI7QUFDdkIsSUFBSTtBQUVKLE1BQU0sT0FBTyxlQUFpQyxTQUFRLGFBQTRDO0lBQzNFLElBQUksQ0FBQyxDQUFNO1FBQzFCLE9BQU8sZ0JBQWdCLENBQUE7SUFDM0IsQ0FBQztJQUVrQixLQUFLLENBQUMsQ0FBTyxFQUFFLENBQU87UUFDckMsT0FBTyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxrQkFBb0MsU0FBUSxnQkFBNEI7SUFDOUQsV0FBVztRQUMxQixPQUFPLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFa0IsS0FBSyxDQUFDLEdBQUcsSUFBVztRQUNuQyxPQUFPLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQ2hDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYXR0ZW4sIFByaW1pdGl2ZSB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsXCJcbmltcG9ydCB7IFF1ZXJ5UHJvcGVydHksIFF1ZXJ5UHJvcGVydHlTZXQgfSBmcm9tIFwiLi9xdWVyeS1wcm9wZXJ0eVwiXG5cbmV4cG9ydCB0eXBlIEdyb3VwZXJGbjxUID0gYW55PiA9IChpdGVtOiBhbnkpID0+IFByaW1pdGl2ZVxuXG5leHBvcnQgdHlwZSBHcm91cGVyPFQgZXh0ZW5kcyBNb2RlbCwgRiA9IEZsYXR0ZW48VD4+ID0gYW55XG5leHBvcnQgdHlwZSBHcm91cGVyTm9ybWFsaXplZCA9IGFueVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBCeTxUIGV4dGVuZHMgTW9kZWwsIEYgPSBGbGF0dGVuPFQ+Pihncm91cGVyOiBHcm91cGVyPFQsIEY+KTogR3JvdXBlckZuPFQ+IHtcbiAgICByZXR1cm4gZ3JvdXBlckNvbXBpbGU8VCwgRj4oZ3JvdXBlcilcbn1cblxuZnVuY3Rpb24gZ3JvdXBlckNvbXBpbGU8VCBleHRlbmRzIE1vZGVsLCBGID0gRmxhdHRlbjxUPj4oZ3JvdXBlcjogR3JvdXBlcjxULCBGPik6IEdyb3VwZXJGbjxUPiB7XG4gICAgcmV0dXJuIF8gPT4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91cGVyTWVyZ2U8VCBleHRlbmRzIE1vZGVsLCBGID0gRmxhdHRlbjxUPj4oXG4gICAgLi4uZ3JvdXBlcnM6IEFycmF5PEdyb3VwZXI8VCwgRj4gfCB1bmRlZmluZWQgfCBudWxsPlxuKTogR3JvdXBlcjxULCBGPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBlck5vcm1hbGl6ZTxUIGV4dGVuZHMgTW9kZWw+KGdyb3VwZXI6IEdyb3VwZXI8VD4pOiBHcm91cGVyTm9ybWFsaXplZCB7fVxuXG4vLyBpbXBvcnQgeyBQcmltaXRpdmUgfSBmcm9tIFwidXRpbGl0eS10eXBlc1wiXG5cbi8vIGltcG9ydCB7IEV2YWwsIEZsYXR0ZW4gfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG4vLyBpbXBvcnQgeyB0eXBlIE1vZGVsIH0gZnJvbSBcIi4vcXVlcnlcIlxuLy8gaW1wb3J0IHsgU29ydGVyRm4gfSBmcm9tIFwiLi9zb3J0ZXJcIlxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIEdyb3VwZWQ8VCBleHRlbmRzIE1vZGVsPiB7XG4vLyAgICAgaXRlbXM6IFRbXVxuLy8gICAgIGdyb3VwczogR3JvdXA8VD5cbi8vIH1cblxuLy8gZXhwb3J0IHR5cGUgR3JvdXBlckZuPFQgZXh0ZW5kcyBNb2RlbD4gPSAoaXRlbXM6IFRbXSkgPT4gYW55XG5cbi8vIGV4cG9ydCB0eXBlIEdyb3VwS2V5PFQgZXh0ZW5kcyBNb2RlbD4gPSAoaXRlbTogVCwgaW5kZXg6IG51bWJlcikgPT4gUHJpbWl0aXZlW11cblxuLy8gZXhwb3J0IHR5cGUgR3JvdXBJdGVtSXNNYXRjaDxUIGV4dGVuZHMgTW9kZWw+ID0gKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IGJvb2xlYW5cblxuLy8gZXhwb3J0IGludGVyZmFjZSBHcm91cGVyWDxUIGV4dGVuZHMgTW9kZWw+IHtcbi8vICAgICBuYW1lOiBzdHJpbmdcbi8vICAgICB0aXRsZT86IHN0cmluZ1xuLy8gICAgIGlzTWF0Y2g/OiBHcm91cEtleTxUPlxuLy8gICAgIFtrZXk6IHN0cmluZ106IGFueVxuLy8gfVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIEdyb3VwZXJYTm9ybWFsaXplZDxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgR3JvdXBlclg8VD4ge1xuLy8gICAgIGtleTogR3JvdXBLZXk8VD5cbi8vIH1cblxuLy8gdHlwZSBfR3JvdXBlcnM8VCBleHRlbmRzIE1vZGVsLCBGPiA9IGtleW9mIEYgfCBHcm91cGVyPFQ+XG4vLyBleHBvcnQgdHlwZSBHcm91cGVyPFQgZXh0ZW5kcyBNb2RlbCwgRiA9IEZsYXR0ZW48VD4+ID0gRXZhbDxBcnJheTxfR3JvdXBlcnM8VCwgRj4+PlxuXG4vLyBleHBvcnQgdHlwZSBHcm91cGVyTm9ybWFsaXplZDxUIGV4dGVuZHMgTW9kZWw+ID0geyBba2V5OiBzdHJpbmddOiBHcm91cGVyWE5vcm1hbGl6ZWQ8VD4gfVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIEdyb3VwPFQgZXh0ZW5kcyBNb2RlbCwgRyBleHRlbmRzIEdyb3VwZXI8VD4gPSBHcm91cGVyPFQ+PiB7XG4vLyAgICAgZ3JvdXBlcjogR1xuLy8gICAgIGJlZ2luOiBudW1iZXJcbi8vICAgICBlbmQ6IG51bWJlclxuLy8gfVxuXG4vLyAvKipcbi8vICAqIEBleGFtcGxlXG4vLyAgKiBgYGB0c1xuLy8gICogY29uc3QgZ3JvdXBlZCA9IGdyb3VwQnkoW1wic3RhdHVzXCJdKShpdGVtcylcbi8vICAqIC8vIGV4cGV4dGVkOiB7W3N0YXR1c106IFsuLi5pdGVtc119XG4vLyAgKlxuLy8gICogY29uc3QgZ3JvdXBlZCA9IGdyb3VwQnkoW1wibmFtZVwiLCBcImFnZVwiXSkoaXRlbXMpXG4vLyAgKiAvLyBleHBlY3RlZCB7W3N0YXR1c106IHtbYWdlXTogWy4uLml0ZW1zXX19XG4vLyAgKlxuLy8gICogY29uc3QgU1RBVFVTX0xBQkVMUyA9IHthY3RpdmU6IFwiQWN0aXZlXCIsIGluYWN0aXZlOiBcIkluYWN0aXZlXCJ9XG4vLyAgKiBjb25zdCBncm91cGVkID0gZ3JvdXBCeShbKGl0ZW0pID0+IChTVEFUVVNfTEFCRUxTW2l0ZW0uc3RhdHVzXSB8fCBcIlVuZGVmaW5lZFwiKV0pKGl0ZW1zKVxuLy8gICogLy8gZXhwZWN0ZWQge1tcIkFjdGl2ZVwiIHwgXCJJbmFjdGl2ZVwiIHwgXCJVbmRlZmluZWRcIl06IFsuLi5pdGVtc119XG4vLyAgKlxuLy8gICogY29uc3QgZ3JvdXBlZCA9IGdyb3VwQnkoWyhpdGVtKSA9PiAoU1RBVFVTX0xBQkVMU1tpdGVtLnN0YXR1c10gfHwgXCJVbmRlZmluZWRcIiksIFwiYWdlXCJdKShpdGVtcylcbi8vICAqIC8vIGV4cGVjdGVkIHtbXCJBY3RpdmVcIiB8IFwiSW5hY3RpdmVcIiB8IFwiVW5kZWZpbmVkXCJdOiB7W2FnZV06IFsuLi5pdGVtc119fVxuLy8gICogYGBgXG4vLyAgKi9cbi8vIGV4cG9ydCBmdW5jdGlvbiBncm91cEJ5PFQgZXh0ZW5kcyBNb2RlbD4oZ3JvdXBlcnM6IEdyb3VwZXI8VD4pOiBTb3J0ZXJGbjxUPiB7XG4vLyAgICAgcmV0dXJuIChfYSwgX2IpID0+IDBcbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdyb3VwZXJOb3JtYWxpemUoKSB7fVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gZ3JvdXBlckNvbXBpbGU8VCBleHRlbmRzIE1vZGVsPihncm91cGVyczogR3JvdXBlcjxUPik6IEdyb3VwZXJGbjxUPiB7XG4vLyAgICAgcmV0dXJuIF8gPT4gdW5kZWZpbmVkXG4vLyB9XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBncm91cGVyTWVyZ2U8VCBleHRlbmRzIE1vZGVsLCBGID0gRmxhdHRlbjxUPj4oXG4vLyAgICAgLi4uZ3JvdXBlcnM6IEFycmF5PEdyb3VwZXI8VCwgRj4gfCB1bmRlZmluZWQgfCBudWxsPlxuLy8gKTogR3JvdXBlcjxULCBGPiB8IHVuZGVmaW5lZCB7XG4vLyAgICAgcmV0dXJuIHVuZGVmaW5lZFxuLy8gfVxuXG5leHBvcnQgY2xhc3MgR3JvdXBlclByb3BlcnR5PFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBRdWVyeVByb3BlcnR5PEdyb3VwZXI8VD4sIEdyb3VwZXJOb3JtYWxpemVkPiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5vcm0oYTogYW55KSB7XG4gICAgICAgIHJldHVybiBncm91cGVyTm9ybWFsaXplXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG1lcmdlKGE/OiBhbnksIGI/OiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwZXJNZXJnZShhLCBiKVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdyb3VwZXJQcm9wZXJ0eVNldDxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUXVlcnlQcm9wZXJ0eVNldDxHcm91cGVyPFQ+PiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5ld1Byb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IEdyb3VwZXJQcm9wZXJ0eSh1bmRlZmluZWQpXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG1lcmdlKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIHJldHVybiBncm91cGVyTWVyZ2UoLi4uYXJncylcbiAgICB9XG59XG4iXX0=
|
package/esm2022/query/index.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export { filterBy, filterMerge } from "./filter";
|
|
1
|
+
export { filterBy, filterMerge, filterNormalize } from "./filter";
|
|
2
2
|
export { groupBy, grouperMerge } from "./grouper";
|
|
3
|
-
export { sortBy, sorterMerge,
|
|
3
|
+
export { sortBy, sorterMerge, sorterNormalize } from "./sorter";
|
|
4
4
|
export { slimBy, slimerMerge } from "./slimer";
|
|
5
5
|
export { sliceMerge, sliceApply, sliceInsert, sliceToPages, sliceClamp, sliceEq } from "./slice";
|
|
6
6
|
export { pathGetterCompile } from "./path";
|
|
7
|
+
export { querySubject } from "./query";
|
|
7
8
|
export { queryExecutor } from "./executor";
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLFFBQVEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFZLE1BQU0sVUFBVSxDQUFBO0FBQ3JHLE9BQU8sRUFBVyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFELE9BQU8sRUFHSCxNQUFNLEVBQ04sV0FBVyxFQUNYLGVBQWUsRUFJbEIsTUFBTSxVQUFVLENBQUE7QUFDakIsT0FBTyxFQUFVLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDdEQsT0FBTyxFQUFTLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3ZHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMxQyxPQUFPLEVBQXNDLFlBQVksRUFBZ0IsTUFBTSxTQUFTLENBQUE7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSxZQUFZLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGaWx0ZXIsIEZpbHRlck5vcm1hbGl6ZWQsIGZpbHRlckJ5LCBmaWx0ZXJNZXJnZSwgZmlsdGVyTm9ybWFsaXplLCBGaWx0ZXJPcCB9IGZyb20gXCIuL2ZpbHRlclwiXG5leHBvcnQgeyBHcm91cGVyLCBncm91cEJ5LCBncm91cGVyTWVyZ2UgfSBmcm9tIFwiLi9ncm91cGVyXCJcbmV4cG9ydCB7XG4gICAgU29ydGVyLFxuICAgIFNvcnRlck5vcm1hbGl6ZWQsXG4gICAgc29ydEJ5LFxuICAgIHNvcnRlck1lcmdlLFxuICAgIHNvcnRlck5vcm1hbGl6ZSxcbiAgICBTb3J0RGlyLFxuICAgIFNvcnREaXJlY3Rpb24sXG4gICAgU29ydERpckV4dHJhXG59IGZyb20gXCIuL3NvcnRlclwiXG5leHBvcnQgeyBTbGltZXIsIHNsaW1CeSwgc2xpbWVyTWVyZ2UgfSBmcm9tIFwiLi9zbGltZXJcIlxuZXhwb3J0IHsgU2xpY2UsIHNsaWNlTWVyZ2UsIHNsaWNlQXBwbHksIHNsaWNlSW5zZXJ0LCBzbGljZVRvUGFnZXMsIHNsaWNlQ2xhbXAsIHNsaWNlRXEgfSBmcm9tIFwiLi9zbGljZVwiXG5leHBvcnQgeyBwYXRoR2V0dGVyQ29tcGlsZSB9IGZyb20gXCIuL3BhdGhcIlxuZXhwb3J0IHsgUXVlcnksIFF1ZXJ5V2l0aFNsaWNlLCBRdWVyeVJlc3VsdCwgcXVlcnlTdWJqZWN0LCBRdWVyeVN1YmplY3QgfSBmcm9tIFwiLi9xdWVyeVwiXG5leHBvcnQgeyBxdWVyeUV4ZWN1dG9yLCBRdWVyeUV4ZWN1dG9yIH0gZnJvbSBcIi4vZXhlY3V0b3JcIlxuIl19
|