@sumaris-net/ngx-components 18.21.14 → 18.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/doc/changelog.md +3 -0
- package/esm2022/src/app/admin/users/person.filter.mjs +8 -4
- package/esm2022/src/app/core/services/model/filter.model.mjs +152 -26
- package/fesm2022/sumaris-net.ngx-components.mjs +158 -28
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/admin/users/person.filter.d.ts +5 -1
- package/src/app/core/services/model/filter.model.d.ts +29 -13
- package/src/assets/manifest.json +1 -1
package/doc/changelog.md
CHANGED
|
@@ -1972,3 +1972,6 @@ enh: Environment: add useHash property to configure Angular router to use hash U
|
|
|
1972
1972
|
|
|
1973
1973
|
# 18.21.14
|
|
1974
1974
|
- fix(menu) Hide menu footer (about) on mobile device
|
|
1975
|
+
|
|
1976
|
+
# 18.22.0
|
|
1977
|
+
- enh(EntityFilter) Add logical combinators functions: `or()`, `and()` and `not()`
|
|
@@ -22,9 +22,13 @@ let PersonFilter = class PersonFilter extends EntityFilter {
|
|
|
22
22
|
'additionalFields',
|
|
23
23
|
];
|
|
24
24
|
static fromObject;
|
|
25
|
-
static
|
|
26
|
-
return
|
|
25
|
+
static asFilterFn(source) {
|
|
26
|
+
return PersonFilter_1.fromObject(source)?.asFilterFn();
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated Use `PersonFilter.asFilterFn` instead
|
|
30
|
+
*/
|
|
31
|
+
static searchFilter = PersonFilter_1.asFilterFn;
|
|
28
32
|
email;
|
|
29
33
|
pubkey;
|
|
30
34
|
searchText;
|
|
@@ -127,7 +131,7 @@ export class AdditionalFields {
|
|
|
127
131
|
return;
|
|
128
132
|
return (Object.keys(source)
|
|
129
133
|
// Exclude common fields, from PersonFilter
|
|
130
|
-
.filter((key) => !PersonFilter.FIELDS.includes(key))
|
|
134
|
+
.filter((key) => !PersonFilter.FIELDS.includes(key) && key !== 'and' && key !== 'or' && key !== 'not')
|
|
131
135
|
.reduce((target, key) => {
|
|
132
136
|
if (isNil(source[key]))
|
|
133
137
|
return target;
|
|
@@ -150,4 +154,4 @@ export class AdditionalFields {
|
|
|
150
154
|
return target;
|
|
151
155
|
}
|
|
152
156
|
}
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLmZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvYWRtaW4vdXNlcnMvcGVyc29uLmZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdEUsT0FBTyxFQUF5QixXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUc3RixXQUFXO0FBRUosSUFBTSxZQUFZLEdBQWxCLE1BQU0sWUFBYSxTQUFRLFlBQWtDOztJQUNsRSxNQUFNLENBQUMsTUFBTSxHQUEyQjtRQUN0QyxZQUFZO1FBQ1osSUFBSTtRQUNKLFlBQVk7UUFDWixPQUFPO1FBQ1AsUUFBUTtRQUNSLFlBQVk7UUFDWixXQUFXO1FBQ1gsY0FBYztRQUNkLGFBQWE7UUFDYixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLGtCQUFrQjtLQUNuQixDQUFDO0lBRUYsTUFBTSxDQUFDLFVBQVUsQ0FBdUM7SUFFeEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFXO1FBQzdCLE9BQU8sTUFBTSxJQUFJLGNBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVELEtBQUssQ0FBUztJQUNkLE1BQU0sQ0FBUztJQUNmLFVBQVUsQ0FBUztJQUNuQixTQUFTLENBQVc7SUFDcEIsWUFBWSxDQUFXO0lBQ3ZCLFdBQVcsQ0FBVztJQUN0QixXQUFXLENBQVc7SUFDdEIsZUFBZSxDQUFTO0lBQ3hCLGdCQUFnQixDQUFXO0lBQzNCLGdCQUFnQixDQUFtQjtJQUVuQztRQUNFLEtBQUssQ0FBQyxjQUFZ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QUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eUNsYXNzIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkuZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBFbnRpdHlGaWx0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2ZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBQZXJzb24gfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3BlcnNvbi5tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdHlBc09iamVjdE9wdGlvbnMsIEVudGl0eVV0aWxzIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgU3RvcmVPYmplY3QgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IGdldFByb3BlcnR5QnlQYXRoLCBpc05pbCwgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRmlsdGVyRm4gfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xuXG4vLyBAZHluYW1pY1xuQEVudGl0eUNsYXNzKHsgdHlwZW5hbWU6ICdQZXJzb25GaWx0ZXJWTycgfSlcbmV4cG9ydCBjbGFzcyBQZXJzb25GaWx0ZXIgZXh0ZW5kcyBFbnRpdHlGaWx0ZXI8UGVyc29uRmlsdGVyLCBQZXJzb24+IHtcbiAgc3RhdGljIEZJRUxEUzogKGtleW9mIFBlcnNvbkZpbHRlcilbXSA9IFtcbiAgICAnX190eXBlbmFtZScsXG4gICAgJ2lkJyxcbiAgICAndXBkYXRlRGF0ZScsXG4gICAgJ2VtYWlsJyxcbiAgICAncHVia2V5JyxcbiAgICAnc2VhcmNoVGV4dCcsXG4gICAgJ3N0YXR1c0lkcycsXG4gICAgJ3VzZXJQcm9maWxlcycsXG4gICAgJ2V4Y2x1ZGVkSWRzJyxcbiAgICAnc2VhcmNoQXR0cmlidXRlJyxcbiAgICAnc2VhcmNoQXR0cmlidXRlcycsXG4gICAgJ2FkZGl0aW9uYWxGaWVsZHMnLFxuICBdO1xuXG4gIHN0YXRpYyBmcm9tT2JqZWN0OiAoc291cmNlLCBvcHRzPzogYW55KSA9PiBQZXJzb25GaWx0ZXI7XG5cbiAgc3RhdGljIHNlYXJjaEZpbHRlcihzb3VyY2U6IGFueSk6IEZpbHRlckZuPFBlcnNvbj4ge1xuICAgIHJldHVybiBzb3VyY2UgJiYgUGVyc29uRmlsdGVyLmZyb21PYmplY3Qoc291cmNlKS5hc0ZpbHRlckZuKCk7XG4gIH1cblxuICBlbWFpbDogc3RyaW5nO1xuICBwdWJrZXk6IHN0cmluZztcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBzdGF0dXNJZHM6IG51bWJlcltdO1xuICB1c2VyUHJvZmlsZXM6IHN0cmluZ1tdO1xuICBpbmNsdWRlZElkczogbnVtYmVyW107XG4gIGV4Y2x1ZGVkSWRzOiBudW1iZXJbXTtcbiAgc2VhcmNoQXR0cmlidXRlOiBzdHJpbmc7XG4gIHNlYXJjaEF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICBhZGRpdGlvbmFsRmllbGRzOiBBZGRpdGlvbmFsRmllbGRzO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFBlcnNvbkZpbHRlci5UWVBFTkFNRSk7XG4gIH1cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55LCBvcHRzPzogRW50aXR5QXNPYmplY3RPcHRpb25zKSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UsIG9wdHMpO1xuICAgIHRoaXMuZW1haWwgPSBzb3VyY2UuZW1haWw7XG4gICAgdGhpcy5wdWJrZXkgPSBzb3VyY2UucHVia2V5O1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNvdXJjZS5zZWFyY2hUZXh0O1xuICAgIHRoaXMuc3RhdHVzSWRzID0gc291cmNlLnN0YXR1c0lkcyB8fCAoaXNOb3ROaWwoc291cmNlLnN0YXR1c0lkKSA/IFtzb3VyY2Uuc3RhdHVzSWRdIDogdW5kZWZpbmVkKTtcbiAgICB0aGlzLnVzZXJQcm9maWxlcyA9IHNvdXJjZS51c2VyUHJvZmlsZXM7XG4gICAgdGhpcy5leGNsdWRlZElkcyA9IHNvdXJjZS5leGNsdWRlZElkcztcbiAgICB0aGlzLnNlYXJjaEF0dHJpYnV0ZSA9IHNvdXJjZS5zZWFyY2hBdHRyaWJ1dGU7XG4gICAgdGhpcy5zZWFyY2hBdHRyaWJ1dGVzID0gc291cmNlLnNlYXJjaEF0dHJpYnV0ZXM7XG5cbiAgICAvLyBFeHRyYWN0IGFkZGl0aW9uYWwgZmllbGRzXG4gICAgdGhpcy5hZGRpdGlvbmFsRmllbGRzID0gQWRkaXRpb25hbEZpZWxkcy5mcm9tT2JqZWN0KHNvdXJjZSwgb3B0cyk7XG4gIH1cblxuICBhc09iamVjdChvcHRzPzogRW50aXR5QXNPYmplY3RPcHRpb25zKTogU3RvcmVPYmplY3Qge1xuICAgIGNvbnN0IHRhcmdldCA9IHN1cGVyLmFzT2JqZWN0KG9wdHMpO1xuICAgIHRhcmdldC5lbWFpbCA9IHRoaXMuZW1haWw7XG4gICAgdGFyZ2V0LnB1YmtleSA9IHRoaXMucHVia2V5O1xuICAgIHRhcmdldC5zZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hUZXh0O1xuICAgIHRhcmdldC5zdGF0dXNJZHMgPSB0aGlzLnN0YXR1c0lkcztcbiAgICB0YXJnZXQudXNlclByb2ZpbGVzID0gdGhpcy51c2VyUHJvZmlsZXM7XG4gICAgdGFyZ2V0LmV4Y2x1ZGVkSWRzID0gdGhpcy5leGNsdWRlZElkcztcbiAgICB0YXJnZXQuc2VhcmNoQXR0cmlidXRlID0gdGhpcy5zZWFyY2hBdHRyaWJ1dGU7XG4gICAgdGFyZ2V0LnNlYXJjaEF0dHJpYnV0ZXMgPSB0aGlzLnNlYXJjaEF0dHJpYnV0ZXM7XG4gICAgQWRkaXRpb25hbEZpZWxkcy5hc09iamVjdCh0aGlzLmFkZGl0aW9uYWxGaWVsZHMsIHRhcmdldCwgb3B0cyk7XG4gICAgZGVsZXRlIHRhcmdldC5hZGRpdGlvbmFsRmllbGRzO1xuXG4gICAgaWYgKG9wdHM/Lm1pbmlmeSkge1xuICAgICAgdGFyZ2V0LnVzZXJQcm9maWxlcyA9IEFycmF5LmlzQXJyYXkodGFyZ2V0LnVzZXJQcm9maWxlcykgPyB0YXJnZXQudXNlclByb2ZpbGVzPy5tYXAoKHVwKSA9PiB1cD8ubGFiZWwgPz8gdXApIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkRmlsdGVyKCk6IEZpbHRlckZuPFBlcnNvbj5bXSB7XG4gICAgY29uc3QgZmlsdGVyRm5zID0gc3VwZXIuYnVpbGRGaWx0ZXIoKTtcblxuICAgIC8vIEZpbHRlciBieSBzdGF0dXNcbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMuc3RhdHVzSWRzKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2goKGUpID0+IHRoaXMuc3RhdHVzSWRzLmluY2x1ZGVzKGUuc3RhdHVzSWQpKTtcbiAgICB9XG5cbiAgICAvLyBGaWx0ZXIgaW5jbHVkZWQgaWRzXG4gICAgY29uc3QgaW5jbHVkZWRJZHMgPSB0aGlzLmluY2x1ZGVkSWRzO1xuICAgIGlmIChpc05vdEVtcHR5QXJyYXkoaW5jbHVkZWRJZHMpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCgoZSkgPT4gaXNOb3ROaWwoZS5pZCkgJiYgaW5jbHVkZWRJZHMuaW5jbHVkZXMoZS5pZCkpO1xuICAgIH1cblxuICAgIC8vIEZpbHRlciBleGNsdWRlZCBpZHNcbiAgICBjb25zdCBleGNsdWRlZElkcyA9IHRoaXMuZXhjbHVkZWRJZHM7XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheShleGNsdWRlZElkcykpIHtcbiAgICAgIGZpbHRlckZucy5wdXNoKChlKSA9PiBpc05pbChlLmlkKSB8fCAhZXhjbHVkZWRJZHMuaW5jbHVkZXMoZS5pZCkpO1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCB0ZXh0XG4gICAgY29uc3Qgc2VhcmNoVGV4dEZpbHRlciA9IEVudGl0eVV0aWxzLnNlYXJjaFRleHRGaWx0ZXIoXG4gICAgICB0aGlzLnNlYXJjaEF0dHJpYnV0ZSB8fCB0aGlzLnNlYXJjaEF0dHJpYnV0ZXMgfHwgWydsYXN0TmFtZScsICdmaXJzdE5hbWUnLCAnZGVwYXJ0bWVudC5uYW1lJ10sXG4gICAgICB0aGlzLnNlYXJjaFRleHRcbiAgICApO1xuICAgIGlmIChzZWFyY2hUZXh0RmlsdGVyKSBmaWx0ZXJGbnMucHVzaChzZWFyY2hUZXh0RmlsdGVyKTtcblxuICAgIC8vIEZpbHRlciBieSBhZGRpdGlvbmFsIGZpZWxkc1xuICAgIGlmICh0aGlzLmFkZGl0aW9uYWxGaWVsZHMpIHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuYWRkaXRpb25hbEZpZWxkcykuZm9yRWFjaCgoZmllbGRLZXkpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuYWRkaXRpb25hbEZpZWxkc1tmaWVsZEtleV07XG4gICAgICAgIGlmIChpc05vdE5pbChmaWVsZFZhbHVlKSkge1xuICAgICAgICAgIGZpbHRlckZucy5wdXNoKChwZXJzb246IFBlcnNvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGVyc29uVmFsdWUgPSBnZXRQcm9wZXJ0eUJ5UGF0aChwZXJzb24sIGZpZWxkS2V5KTtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgdmFsdWUgdHlwZXMgKHN0cmluZywgb2JqZWN0IHdpdGggaWQsIGFycmF5LCBldGMuKVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgLy8gTXVsdGlwbGUgc2VsZWN0aW9uIC0gY2hlY2sgaWYgcGVyc29uIHZhbHVlIG1hdGNoZXMgYW55IHNlbGVjdGVkIHZhbHVlXG4gICAgICAgICAgICAgIHJldHVybiBmaWVsZFZhbHVlLnNvbWUoKHNlbGVjdGVkVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZElkID0gc2VsZWN0ZWRWYWx1ZT8uaWQgPz8gc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwZXJzb25JZCA9IHBlcnNvblZhbHVlPy5pZCA/PyBwZXJzb25WYWx1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJZCA9PT0gcGVyc29uSWQ7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gU2luZ2xlIHZhbHVlIC0gZGlyZWN0IGNvbXBhcmlzb25cbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZCA9IGZpZWxkVmFsdWU/LmlkID8/IGZpZWxkVmFsdWU7XG4gICAgICAgICAgICAgIGNvbnN0IHBlcnNvbklkID0gcGVyc29uVmFsdWU/LmlkID8/IHBlcnNvblZhbHVlO1xuICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJZCA9PT0gcGVyc29uSWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJGbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkZGl0aW9uYWxGaWVsZHMge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG5cbiAgc3RhdGljIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAoIXNvdXJjZSB8fCAhKHR5cGVvZiBzb3VyY2UgPT0gJ29iamVjdCcpKSByZXR1cm47XG4gICAgcmV0dXJuIChcbiAgICAgIE9iamVjdC5rZXlzKHNvdXJjZSlcbiAgICAgICAgLy8gRXhjbHVkZSBjb21tb24gZmllbGRzLCBmcm9tIFBlcnNvbkZpbHRlclxuICAgICAgICAuZmlsdGVyKChrZXkpID0+ICFQZXJzb25GaWx0ZXIuRklFTERTLmluY2x1ZGVzKGtleSBhcyBrZXlvZiBQZXJzb25GaWx0ZXIpKVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICh0YXJnZXQsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTmlsKHNvdXJjZVtrZXldKSkgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldCB8fCB7fTtcbiAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdW5kZWZpbmVkIGFzIHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgYXNPYmplY3Qoc291cmNlOiBhbnksIHRhcmdldDogYW55ID0ge30sIG9wdHM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAoIXNvdXJjZSB8fCAhKHR5cGVvZiBzb3VyY2UgPT0gJ29iamVjdCcpKSByZXR1cm47XG4gICAgT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoKHRhcmdldCwga2V5KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IEVudGl0eVV0aWxzLmFzT2JqZWN0KHNvdXJjZVtrZXldLCBvcHRzKTtcbiAgICAgIGlmIChpc05pbCh2YWx1ZSkpIHJldHVybiB0YXJnZXQ7XG4gICAgICB0YXJnZXQgPSB0YXJnZXQgfHwge307XG4gICAgICB0YXJnZXRba2V5XSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9LCB0YXJnZXQpO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbn1cbiJdfQ==
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLmZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvYWRtaW4vdXNlcnMvcGVyc29uLmZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdEUsT0FBTyxFQUF5QixXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUc3RixXQUFXO0FBRUosSUFBTSxZQUFZLEdBQWxCLE1BQU0sWUFBYSxTQUFRLFlBQWtDOztJQUNsRSxNQUFNLENBQUMsTUFBTSxHQUEyQjtRQUN0QyxZQUFZO1FBQ1osSUFBSTtRQUNKLFlBQVk7UUFDWixPQUFPO1FBQ1AsUUFBUTtRQUNSLFlBQVk7UUFDWixXQUFXO1FBQ1gsY0FBYztRQUNkLGFBQWE7UUFDYixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLGtCQUFrQjtLQUNuQixDQUFDO0lBRUYsTUFBTSxDQUFDLFVBQVUsQ0FBdUM7SUFFeEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFXO1FBQzNCLE9BQU8sY0FBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsWUFBWSxHQUFHLGNBQVksQ0FBQyxVQUFVLENBQUM7SUFFOUMsS0FBSyxDQUFTO0lBQ2QsTUFBTSxDQUFTO0lBQ2YsVUFBVSxDQUFTO0lBQ25CLFNBQVMsQ0FBVztJQUNwQixZQUFZLENBQVc7SUFDdkIsV0FBVyxDQUFXO0lBQ3RCLFdBQVcsQ0FBVztJQUN0QixlQUFlLENBQVM7SUFDeEIsZ0JBQWdCLENB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Q3RCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDcEIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5Q2xhc3MgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5kZWNvcmF0b3JzJztcbmltcG9ydCB7IEVudGl0eUZpbHRlciB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZmlsdGVyLm1vZGVsJztcbmltcG9ydCB7IFBlcnNvbiB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvcGVyc29uLm1vZGVsJztcbmltcG9ydCB7IEVudGl0eUFzT2JqZWN0T3B0aW9ucywgRW50aXR5VXRpbHMgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBTdG9yZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlCeVBhdGgsIGlzTmlsLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBGaWx0ZXJGbiB9IGZyb20gJy4uLy4uL3NoYXJlZC90eXBlcyc7XG5cbi8vIEBkeW5hbWljXG5ARW50aXR5Q2xhc3MoeyB0eXBlbmFtZTogJ1BlcnNvbkZpbHRlclZPJyB9KVxuZXhwb3J0IGNsYXNzIFBlcnNvbkZpbHRlciBleHRlbmRzIEVudGl0eUZpbHRlcjxQZXJzb25GaWx0ZXIsIFBlcnNvbj4ge1xuICBzdGF0aWMgRklFTERTOiAoa2V5b2YgUGVyc29uRmlsdGVyKVtdID0gW1xuICAgICdfX3R5cGVuYW1lJyxcbiAgICAnaWQnLFxuICAgICd1cGRhdGVEYXRlJyxcbiAgICAnZW1haWwnLFxuICAgICdwdWJrZXknLFxuICAgICdzZWFyY2hUZXh0JyxcbiAgICAnc3RhdHVzSWRzJyxcbiAgICAndXNlclByb2ZpbGVzJyxcbiAgICAnZXhjbHVkZWRJZHMnLFxuICAgICdzZWFyY2hBdHRyaWJ1dGUnLFxuICAgICdzZWFyY2hBdHRyaWJ1dGVzJyxcbiAgICAnYWRkaXRpb25hbEZpZWxkcycsXG4gIF07XG5cbiAgc3RhdGljIGZyb21PYmplY3Q6IChzb3VyY2UsIG9wdHM/OiBhbnkpID0+IFBlcnNvbkZpbHRlcjtcblxuICBzdGF0aWMgYXNGaWx0ZXJGbihzb3VyY2U6IGFueSk6IEZpbHRlckZuPFBlcnNvbj4ge1xuICAgIHJldHVybiBQZXJzb25GaWx0ZXIuZnJvbU9iamVjdChzb3VyY2UpPy5hc0ZpbHRlckZuKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBQZXJzb25GaWx0ZXIuYXNGaWx0ZXJGbmAgaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIHNlYXJjaEZpbHRlciA9IFBlcnNvbkZpbHRlci5hc0ZpbHRlckZuO1xuXG4gIGVtYWlsOiBzdHJpbmc7XG4gIHB1YmtleTogc3RyaW5nO1xuICBzZWFyY2hUZXh0OiBzdHJpbmc7XG4gIHN0YXR1c0lkczogbnVtYmVyW107XG4gIHVzZXJQcm9maWxlczogc3RyaW5nW107XG4gIGluY2x1ZGVkSWRzOiBudW1iZXJbXTtcbiAgZXhjbHVkZWRJZHM6IG51bWJlcltdO1xuICBzZWFyY2hBdHRyaWJ1dGU6IHN0cmluZztcbiAgc2VhcmNoQXR0cmlidXRlczogc3RyaW5nW107XG4gIGFkZGl0aW9uYWxGaWVsZHM6IEFkZGl0aW9uYWxGaWVsZHM7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoUGVyc29uRmlsdGVyLlRZUEVOQU1FKTtcbiAgfVxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlci5mcm9tT2JqZWN0KHNvdXJjZSwgb3B0cyk7XG4gICAgdGhpcy5lbWFpbCA9IHNvdXJjZS5lbWFpbDtcbiAgICB0aGlzLnB1YmtleSA9IHNvdXJjZS5wdWJrZXk7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gc291cmNlLnNlYXJjaFRleHQ7XG4gICAgdGhpcy5zdGF0dXNJZHMgPSBzb3VyY2Uuc3RhdHVzSWRzIHx8IChpc05vdE5pbChzb3VyY2Uuc3RhdHVzSWQpID8gW3NvdXJjZS5zdGF0dXNJZF0gOiB1bmRlZmluZWQpO1xuICAgIHRoaXMudXNlclByb2ZpbGVzID0gc291cmNlLnVzZXJQcm9maWxlcztcbiAgICB0aGlzLmV4Y2x1ZGVkSWRzID0gc291cmNlLmV4Y2x1ZGVkSWRzO1xuICAgIHRoaXMuc2VhcmNoQXR0cmlidXRlID0gc291cmNlLnNlYXJjaEF0dHJpYnV0ZTtcbiAgICB0aGlzLnNlYXJjaEF0dHJpYnV0ZXMgPSBzb3VyY2Uuc2VhcmNoQXR0cmlidXRlcztcblxuICAgIC8vIEV4dHJhY3QgYWRkaXRpb25hbCBmaWVsZHNcbiAgICB0aGlzLmFkZGl0aW9uYWxGaWVsZHMgPSBBZGRpdGlvbmFsRmllbGRzLmZyb21PYmplY3Qoc291cmNlLCBvcHRzKTtcbiAgfVxuXG4gIGFzT2JqZWN0KG9wdHM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpOiBTdG9yZU9iamVjdCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gc3VwZXIuYXNPYmplY3Qob3B0cyk7XG4gICAgdGFyZ2V0LmVtYWlsID0gdGhpcy5lbWFpbDtcbiAgICB0YXJnZXQucHVia2V5ID0gdGhpcy5wdWJrZXk7XG4gICAgdGFyZ2V0LnNlYXJjaFRleHQgPSB0aGlzLnNlYXJjaFRleHQ7XG4gICAgdGFyZ2V0LnN0YXR1c0lkcyA9IHRoaXMuc3RhdHVzSWRzO1xuICAgIHRhcmdldC51c2VyUHJvZmlsZXMgPSB0aGlzLnVzZXJQcm9maWxlcztcbiAgICB0YXJnZXQuZXhjbHVkZWRJZHMgPSB0aGlzLmV4Y2x1ZGVkSWRzO1xuICAgIHRhcmdldC5zZWFyY2hBdHRyaWJ1dGUgPSB0aGlzLnNlYXJjaEF0dHJpYnV0ZTtcbiAgICB0YXJnZXQuc2VhcmNoQXR0cmlidXRlcyA9IHRoaXMuc2VhcmNoQXR0cmlidXRlcztcbiAgICBBZGRpdGlvbmFsRmllbGRzLmFzT2JqZWN0KHRoaXMuYWRkaXRpb25hbEZpZWxkcywgdGFyZ2V0LCBvcHRzKTtcbiAgICBkZWxldGUgdGFyZ2V0LmFkZGl0aW9uYWxGaWVsZHM7XG5cbiAgICBpZiAob3B0cz8ubWluaWZ5KSB7XG4gICAgICB0YXJnZXQudXNlclByb2ZpbGVzID0gQXJyYXkuaXNBcnJheSh0YXJnZXQudXNlclByb2ZpbGVzKSA/IHRhcmdldC51c2VyUHJvZmlsZXM/Lm1hcCgodXApID0+IHVwPy5sYWJlbCA/PyB1cCkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRGaWx0ZXIoKTogRmlsdGVyRm48UGVyc29uPltdIHtcbiAgICBjb25zdCBmaWx0ZXJGbnMgPSBzdXBlci5idWlsZEZpbHRlcigpO1xuXG4gICAgLy8gRmlsdGVyIGJ5IHN0YXR1c1xuICAgIGlmIChpc05vdEVtcHR5QXJyYXkodGhpcy5zdGF0dXNJZHMpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCgoZSkgPT4gdGhpcy5zdGF0dXNJZHMuaW5jbHVkZXMoZS5zdGF0dXNJZCkpO1xuICAgIH1cblxuICAgIC8vIEZpbHRlciBpbmNsdWRlZCBpZHNcbiAgICBjb25zdCBpbmNsdWRlZElkcyA9IHRoaXMuaW5jbHVkZWRJZHM7XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheShpbmNsdWRlZElkcykpIHtcbiAgICAgIGZpbHRlckZucy5wdXNoKChlKSA9PiBpc05vdE5pbChlLmlkKSAmJiBpbmNsdWRlZElkcy5pbmNsdWRlcyhlLmlkKSk7XG4gICAgfVxuXG4gICAgLy8gRmlsdGVyIGV4Y2x1ZGVkIGlkc1xuICAgIGNvbnN0IGV4Y2x1ZGVkSWRzID0gdGhpcy5leGNsdWRlZElkcztcbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGV4Y2x1ZGVkSWRzKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2goKGUpID0+IGlzTmlsKGUuaWQpIHx8ICFleGNsdWRlZElkcy5pbmNsdWRlcyhlLmlkKSk7XG4gICAgfVxuXG4gICAgLy8gU2VhcmNoIHRleHRcbiAgICBjb25zdCBzZWFyY2hUZXh0RmlsdGVyID0gRW50aXR5VXRpbHMuc2VhcmNoVGV4dEZpbHRlcihcbiAgICAgIHRoaXMuc2VhcmNoQXR0cmlidXRlIHx8IHRoaXMuc2VhcmNoQXR0cmlidXRlcyB8fCBbJ2xhc3ROYW1lJywgJ2ZpcnN0TmFtZScsICdkZXBhcnRtZW50Lm5hbWUnXSxcbiAgICAgIHRoaXMuc2VhcmNoVGV4dFxuICAgICk7XG4gICAgaWYgKHNlYXJjaFRleHRGaWx0ZXIpIGZpbHRlckZucy5wdXNoKHNlYXJjaFRleHRGaWx0ZXIpO1xuXG4gICAgLy8gRmlsdGVyIGJ5IGFkZGl0aW9uYWwgZmllbGRzXG4gICAgaWYgKHRoaXMuYWRkaXRpb25hbEZpZWxkcykge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsRmllbGRzKS5mb3JFYWNoKChmaWVsZEtleSkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5hZGRpdGlvbmFsRmllbGRzW2ZpZWxkS2V5XTtcbiAgICAgICAgaWYgKGlzTm90TmlsKGZpZWxkVmFsdWUpKSB7XG4gICAgICAgICAgZmlsdGVyRm5zLnB1c2goKHBlcnNvbjogUGVyc29uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwZXJzb25WYWx1ZSA9IGdldFByb3BlcnR5QnlQYXRoKHBlcnNvbiwgZmllbGRLZXkpO1xuICAgICAgICAgICAgLy8gSGFuZGxlIGRpZmZlcmVudCB2YWx1ZSB0eXBlcyAoc3RyaW5nLCBvYmplY3Qgd2l0aCBpZCwgYXJyYXksIGV0Yy4pXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZFZhbHVlKSkge1xuICAgICAgICAgICAgICAvLyBNdWx0aXBsZSBzZWxlY3Rpb24gLSBjaGVjayBpZiBwZXJzb24gdmFsdWUgbWF0Y2hlcyBhbnkgc2VsZWN0ZWQgdmFsdWVcbiAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkVmFsdWUuc29tZSgoc2VsZWN0ZWRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSWQgPSBzZWxlY3RlZFZhbHVlPy5pZCA/PyBzZWxlY3RlZFZhbHVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBlcnNvbklkID0gcGVyc29uVmFsdWU/LmlkID8/IHBlcnNvblZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZElkID09PSBwZXJzb25JZDtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBTaW5nbGUgdmFsdWUgLSBkaXJlY3QgY29tcGFyaXNvblxuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZElkID0gZmllbGRWYWx1ZT8uaWQgPz8gZmllbGRWYWx1ZTtcbiAgICAgICAgICAgICAgY29uc3QgcGVyc29uSWQgPSBwZXJzb25WYWx1ZT8uaWQgPz8gcGVyc29uVmFsdWU7XG4gICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZElkID09PSBwZXJzb25JZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlckZucztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRkaXRpb25hbEZpZWxkcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcblxuICBzdGF0aWMgZnJvbU9iamVjdChzb3VyY2U6IGFueSwgb3B0cz86IGFueSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmICghc291cmNlIHx8ICEodHlwZW9mIHNvdXJjZSA9PSAnb2JqZWN0JykpIHJldHVybjtcbiAgICByZXR1cm4gKFxuICAgICAgT2JqZWN0LmtleXMoc291cmNlKVxuICAgICAgICAvLyBFeGNsdWRlIGNvbW1vbiBmaWVsZHMsIGZyb20gUGVyc29uRmlsdGVyXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4gIVBlcnNvbkZpbHRlci5GSUVMRFMuaW5jbHVkZXMoa2V5IGFzIGtleW9mIFBlcnNvbkZpbHRlcikgJiYga2V5ICE9PSAnYW5kJyAmJiBrZXkgIT09ICdvcicgJiYga2V5ICE9PSAnbm90JylcbiAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAodGFyZ2V0LCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc05pbChzb3VyY2Vba2V5XSkpIHJldHVybiB0YXJnZXQ7XG4gICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXQgfHwge307XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHVuZGVmaW5lZCBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGFzT2JqZWN0KHNvdXJjZTogYW55LCB0YXJnZXQ6IGFueSA9IHt9LCBvcHRzPzogRW50aXR5QXNPYmplY3RPcHRpb25zKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKCFzb3VyY2UgfHwgISh0eXBlb2Ygc291cmNlID09ICdvYmplY3QnKSkgcmV0dXJuO1xuICAgIE9iamVjdC5rZXlzKHNvdXJjZSkucmVkdWNlKCh0YXJnZXQsIGtleSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBFbnRpdHlVdGlscy5hc09iamVjdChzb3VyY2Vba2V5XSwgb3B0cyk7XG4gICAgICBpZiAoaXNOaWwodmFsdWUpKSByZXR1cm4gdGFyZ2V0O1xuICAgICAgdGFyZ2V0ID0gdGFyZ2V0IHx8IHt9O1xuICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSwgdGFyZ2V0KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG59XG4iXX0=
|
|
@@ -1,35 +1,20 @@
|
|
|
1
|
-
import { isEmptyArray } from '../../../shared/functions';
|
|
1
|
+
import { isEmptyArray, isNotEmptyArray, isNotNil } from '../../../shared/functions';
|
|
2
2
|
import { MINIFY_ENTITY_FOR_POD, ReferentialUtils } from './referential.model';
|
|
3
3
|
import { Entity, isInstanceOf } from './entity.model';
|
|
4
4
|
export class EntityFilter extends Entity {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
static composeFilters(filterFns) {
|
|
5
|
+
// Internal composition state (fluent API)
|
|
6
|
+
__and;
|
|
7
|
+
__or;
|
|
8
|
+
__not;
|
|
9
|
+
static andFns(filterFns) {
|
|
11
10
|
if (isEmptyArray(filterFns))
|
|
12
11
|
return undefined;
|
|
13
12
|
return (entity) => (filterFns || []).every((fn) => fn(entity));
|
|
14
13
|
}
|
|
15
|
-
static
|
|
16
|
-
const filterFns = (filters || []).reduce((res, f) => {
|
|
17
|
-
const fns = f.buildFilter();
|
|
18
|
-
if (!fns)
|
|
19
|
-
return res;
|
|
20
|
-
return res.concat(fns);
|
|
21
|
-
}, []);
|
|
22
|
-
return this.composeFilters(filterFns);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Compose some filter functions: all should return true
|
|
26
|
-
*
|
|
27
|
-
* @param filterFns
|
|
28
|
-
*/
|
|
29
|
-
static composeFns(filterFns) {
|
|
14
|
+
static orFns(filterFns) {
|
|
30
15
|
if (isEmptyArray(filterFns))
|
|
31
16
|
return undefined;
|
|
32
|
-
return (entity) => (filterFns || []).
|
|
17
|
+
return (entity) => (filterFns || []).some((fn) => fn(entity));
|
|
33
18
|
}
|
|
34
19
|
constructor(__typename) {
|
|
35
20
|
super(__typename);
|
|
@@ -48,9 +33,97 @@ export class EntityFilter extends Entity {
|
|
|
48
33
|
return Object.keys(json).filter((key) => this.isCriteriaNotEmpty(key, json[key])).length;
|
|
49
34
|
}
|
|
50
35
|
asFilterFn() {
|
|
51
|
-
|
|
52
|
-
|
|
36
|
+
// Base (this) filter functions
|
|
37
|
+
let filterFns = this.buildFilter() || [];
|
|
38
|
+
// AND filters
|
|
39
|
+
if (isNotEmptyArray(this.__and)) {
|
|
40
|
+
filterFns.push(...this.__and.map((f) => f?.asFilterFn()).filter(isNotNil));
|
|
41
|
+
}
|
|
42
|
+
// As filter function
|
|
43
|
+
let result = EntityFilter.andFns(filterFns);
|
|
44
|
+
// OR filters
|
|
45
|
+
if (isNotEmptyArray(this.__or)) {
|
|
46
|
+
result = EntityFilter.orFns([
|
|
47
|
+
result,
|
|
48
|
+
...(this.__or || []).map((f) => f?.asFilterFn())
|
|
49
|
+
].filter(isNotNil));
|
|
50
|
+
}
|
|
51
|
+
// NOT
|
|
52
|
+
if (this.__not && result) {
|
|
53
|
+
const inner = result;
|
|
54
|
+
result = (entity) => !inner(entity);
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
and(...filters) {
|
|
59
|
+
if (!isEmptyArray(filters)) {
|
|
60
|
+
this.__and = (this.__and || []).concat(filters.filter(isNotNil));
|
|
61
|
+
}
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
or(...filters) {
|
|
65
|
+
if (!isEmptyArray(filters)) {
|
|
66
|
+
this.__or = (this.__or || []).concat(filters.filter(isNotNil));
|
|
67
|
+
}
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
not() {
|
|
71
|
+
this.__not = !(this.__not ?? false);
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
asObject(opts) {
|
|
75
|
+
const target = super.asObject(opts);
|
|
76
|
+
// Serialize composition
|
|
77
|
+
if (isNotEmptyArray(this.__and)) {
|
|
78
|
+
target.and = this.__and.map((f) => f.asObject(opts));
|
|
79
|
+
}
|
|
80
|
+
if (isNotEmptyArray(this.__or)) {
|
|
81
|
+
target.or = this.__or.map((f) => f.asObject(opts));
|
|
82
|
+
}
|
|
83
|
+
if (this.__not) {
|
|
84
|
+
target.not = true;
|
|
85
|
+
}
|
|
86
|
+
// Sanitize
|
|
87
|
+
delete target.__and;
|
|
88
|
+
delete target.__or;
|
|
89
|
+
delete target.__not;
|
|
90
|
+
return target;
|
|
53
91
|
}
|
|
92
|
+
fromObject(source, opts) {
|
|
93
|
+
super.fromObject(source, opts);
|
|
94
|
+
// Deserialize composition using the same concrete filter type
|
|
95
|
+
// AND
|
|
96
|
+
if (Array.isArray(source?.and)) {
|
|
97
|
+
const Ctor = this.constructor;
|
|
98
|
+
this.__and = source.and.map((s) => {
|
|
99
|
+
if (!s)
|
|
100
|
+
return undefined;
|
|
101
|
+
const f = new Ctor();
|
|
102
|
+
f.fromObject(s, opts);
|
|
103
|
+
return f;
|
|
104
|
+
}).filter(isNotNil);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
this.__and = undefined;
|
|
108
|
+
}
|
|
109
|
+
// OR
|
|
110
|
+
if (Array.isArray(source?.or)) {
|
|
111
|
+
const Ctor = this.constructor;
|
|
112
|
+
this.__or = source.or.map((s) => {
|
|
113
|
+
if (!s)
|
|
114
|
+
return undefined;
|
|
115
|
+
const f = new Ctor();
|
|
116
|
+
f.fromObject(s, opts);
|
|
117
|
+
return f;
|
|
118
|
+
}).filter(isNotNil);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.__or = undefined;
|
|
122
|
+
}
|
|
123
|
+
// NOT
|
|
124
|
+
this.__not = !!source?.not;
|
|
125
|
+
}
|
|
126
|
+
/* -- protected functions -- */
|
|
54
127
|
buildFilter() {
|
|
55
128
|
// Can be completed by subclasses
|
|
56
129
|
return [];
|
|
@@ -71,6 +144,59 @@ export class EntityFilter extends Entity {
|
|
|
71
144
|
ReferentialUtils.isNotEmpty(value)));
|
|
72
145
|
}
|
|
73
146
|
}
|
|
147
|
+
export class OrFilter extends EntityFilter {
|
|
148
|
+
filters;
|
|
149
|
+
constructor(...filters) {
|
|
150
|
+
super('OrFilter');
|
|
151
|
+
this.filters = (filters || []).filter(isNotNil);
|
|
152
|
+
}
|
|
153
|
+
buildFilter() {
|
|
154
|
+
const fns = (this.filters || [])
|
|
155
|
+
.map((f) => (f ? f.asFilterFn() : undefined))
|
|
156
|
+
.filter(isNotNil);
|
|
157
|
+
if (isEmptyArray(fns))
|
|
158
|
+
return [];
|
|
159
|
+
return [
|
|
160
|
+
(entity) => fns.some((fn) => fn(entity))
|
|
161
|
+
];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
export class NotFilter extends EntityFilter {
|
|
165
|
+
filter;
|
|
166
|
+
constructor(filter) {
|
|
167
|
+
super('NotFilter');
|
|
168
|
+
this.filter = filter;
|
|
169
|
+
}
|
|
170
|
+
buildFilter() {
|
|
171
|
+
const fn = this.filter?.asFilterFn();
|
|
172
|
+
if (!fn)
|
|
173
|
+
return [];
|
|
174
|
+
return [
|
|
175
|
+
(entity) => !fn(entity)
|
|
176
|
+
];
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export class AndFilter extends EntityFilter {
|
|
180
|
+
filters;
|
|
181
|
+
constructor(...filters) {
|
|
182
|
+
super('AndFilter');
|
|
183
|
+
this.filters = (filters || []).filter(isNotNil);
|
|
184
|
+
}
|
|
185
|
+
and(...filters) {
|
|
186
|
+
this.filters = this.filters.concat(...(filters || []).filter(isNotNil));
|
|
187
|
+
return this;
|
|
188
|
+
}
|
|
189
|
+
buildFilter() {
|
|
190
|
+
const fns = (this.filters || [])
|
|
191
|
+
.map((f) => (f ? f.asFilterFn() : undefined))
|
|
192
|
+
.filter(isNotNil);
|
|
193
|
+
if (isEmptyArray(fns))
|
|
194
|
+
return [];
|
|
195
|
+
return [
|
|
196
|
+
(entity) => fns.every((fn) => fn(entity))
|
|
197
|
+
];
|
|
198
|
+
}
|
|
199
|
+
}
|
|
74
200
|
export class EntityFilterUtils {
|
|
75
201
|
static isEntityFilter(obj) {
|
|
76
202
|
return (obj && obj.asPodObject && obj.asFilterFn && true) || false;
|
|
@@ -90,4 +216,4 @@ export class EntityFilterUtils {
|
|
|
90
216
|
return target;
|
|
91
217
|
}
|
|
92
218
|
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2ZpbHRlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUUsT0FBTyxFQUFFLE1BQU0sRUFBa0MsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFvQnRGLE1BQU0sT0FBZ0IsWUFPcEIsU0FBUSxNQUFxQjtJQUc3Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBNEIsU0FBd0I7UUFDdkUsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDOUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBMEQsT0FBWTtRQUNsRixNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU8sR0FBRyxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMs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TixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eUFycmF5IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBNSU5JRllfRU5USVRZX0ZPUl9QT0QsIFJlZmVyZW50aWFsVXRpbHMgfSBmcm9tICcuL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5QXNPYmplY3RPcHRpb25zLCBJRW50aXR5LCBpc0luc3RhbmNlT2YgfSBmcm9tICcuL2VudGl0eS5tb2RlbCc7XG5cbmltcG9ydCB7IEZpbHRlckZuIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBJRW50aXR5RmlsdGVyPFxuICBGIGV4dGVuZHMgSUVudGl0eUZpbHRlcjxGLCBULCBJRCwgQU8sIEZPPixcbiAgVCBleHRlbmRzIElFbnRpdHk8VCwgYW55PixcbiAgSUQgPSBudW1iZXIsXG4gIEFPIGV4dGVuZHMgRW50aXR5QXNPYmplY3RPcHRpb25zID0gRW50aXR5QXNPYmplY3RPcHRpb25zLFxuICBGTyA9IGFueSxcbj4gZXh0ZW5kcyBJRW50aXR5PEYsIElELCBBTywgRk8+IHtcbiAgYXNQb2RPYmplY3QoKTogYW55O1xuXG4gIGFzRmlsdGVyRm4oKTogRmlsdGVyRm48VD47XG5cbiAgaXNFbXB0eSgpOiBib29sZWFuO1xuXG4gIGNvdW50Tm90RW1wdHlDcml0ZXJpYSgpOiBudW1iZXI7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnRpdHlGaWx0ZXI8XG4gICAgRiBleHRlbmRzIElFbnRpdHlGaWx0ZXI8RiwgVCwgSUQsIEFPLCBGTz4sXG4gICAgVCBleHRlbmRzIElFbnRpdHk8VCwgYW55PixcbiAgICBJRCA9IG51bWJlcixcbiAgICBBTyBleHRlbmRzIEVudGl0eUFzT2JqZWN0T3B0aW9ucyA9IEVudGl0eUFzT2JqZWN0T3B0aW9ucyxcbiAgICBGTyA9IGFueSxcbiAgPlxuICBleHRlbmRzIEVudGl0eTxGLCBJRCwgQU8sIEZPPlxuICBpbXBsZW1lbnRzIElFbnRpdHlGaWx0ZXI8RiwgVCwgSUQsIEFPLCBGTz5cbntcbiAgLyoqXG4gICAqIENvbXBvc2Ugc29tZSBmaWx0ZXIgZnVuY3Rpb25zOiBhbGwgc2hvdWxkIHJldHVybiB0cnVlXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXJGbnNcbiAgICovXG4gIHN0YXRpYyBjb21wb3NlRmlsdGVyczxUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+PihmaWx0ZXJGbnM6IEZpbHRlckZuPFQ+W10pOiBGaWx0ZXJGbjxUPiB7XG4gICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXJGbnMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiAoZW50aXR5KSA9PiAoZmlsdGVyRm5zIHx8IFtdKS5ldmVyeSgoZm4pID0+IGZuKGVudGl0eSkpO1xuICB9XG5cbiAgc3RhdGljIGNvbXBvc2U8RiBleHRlbmRzIEVudGl0eUZpbHRlcjxGLCBUPiwgVCBleHRlbmRzIElFbnRpdHk8VCwgYW55Pj4oZmlsdGVyczogRltdKTogRmlsdGVyRm48VD4ge1xuICAgIGNvbnN0IGZpbHRlckZucyA9IChmaWx0ZXJzIHx8IFtdKS5yZWR1Y2UoKHJlcywgZikgPT4ge1xuICAgICAgY29uc3QgZm5zID0gZi5idWlsZEZpbHRlcigpO1xuICAgICAgaWYgKCFmbnMpIHJldHVybiByZXM7XG4gICAgICByZXR1cm4gcmVzLmNvbmNhdChmbnMpO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gdGhpcy5jb21wb3NlRmlsdGVycyhmaWx0ZXJGbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBvc2Ugc29tZSBmaWx0ZXIgZnVuY3Rpb25zOiBhbGwgc2hvdWxkIHJldHVybiB0cnVlXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXJGbnNcbiAgICovXG4gIHN0YXRpYyBjb21wb3NlRm5zPFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4+KGZpbHRlckZuczogRmlsdGVyRm48VD5bXSk6IEZpbHRlckZuPFQ+IHtcbiAgICBpZiAoaXNFbXB0eUFycmF5KGZpbHRlckZucykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChlbnRpdHkpID0+IChmaWx0ZXJGbnMgfHwgW10pLmV2ZXJ5KChmbikgPT4gZm4oZW50aXR5KSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihfX3R5cGVuYW1lPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoX190eXBlbmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gYSBmaWx0ZXIsIGJlZm9yZSBzZW5kaW5nIHRvIHRoZSBwb2QgKGUuZyBjb252ZXJ0IGRhdGVzLCByZW1vdmUgaW50ZXJuYWwgcHJvcGVydGllcywgZXRjLilcbiAgICovXG4gIGFzUG9kT2JqZWN0KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuYXNPYmplY3QoTUlOSUZZX0VOVElUWV9GT1JfUE9EIGFzIEFPKTtcbiAgfVxuXG4gIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY291bnROb3RFbXB0eUNyaXRlcmlhKCkgPT09IDA7XG4gIH1cblxuICBjb3VudE5vdEVtcHR5Q3JpdGVyaWEoKTogbnVtYmVyIHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5hc1BvZE9iamVjdCgpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhqc29uKS5maWx0ZXIoKGtleSkgPT4gdGhpcy5pc0NyaXRlcmlhTm90RW1wdHkoa2V5LCBqc29uW2tleV0pKS5sZW5ndGg7XG4gIH1cblxuICBhc0ZpbHRlckZuKCk6IEZpbHRlckZuPFQ+IHtcbiAgICBjb25zdCBmaWx0ZXJGbnMgPSB0aGlzLmJ1aWxkRmlsdGVyKCk7XG4gICAgcmV0dXJuIEVudGl0eUZpbHRlci5jb21wb3NlRm5zKGZpbHRlckZucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRGaWx0ZXIoKTogRmlsdGVyRm48VD5bXSB7XG4gICAgLy8gQ2FuIGJlIGNvbXBsZXRlZCBieSBzdWJjbGFzc2VzXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzQ3JpdGVyaWFOb3RFbXB0eShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXNcbiAgICByZXR1cm4gKFxuICAgICAgdmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgIC8vIG5vdCBlbXB0eSBzdHJpbmdcbiAgICAgICgodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgIT09ICcnKSB8fFxuICAgICAgICAvLyB2YWxpZCBudW1iZXJcbiAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbHVlKSkgfHxcbiAgICAgICAgLy8gdmFsaWQgYm9vbGVhblxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fFxuICAgICAgICAvLyBub3QgZW1wdHkgYXJyYXlcbiAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHx8XG4gICAgICAgIC8vIGVudGl0eSB3aXRoIGFuIGlkXG4gICAgICAgIFJlZmVyZW50aWFsVXRpbHMuaXNOb3RFbXB0eSh2YWx1ZSkpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW50aXR5RmlsdGVyVXRpbHMge1xuICBzdGF0aWMgaXNFbnRpdHlGaWx0ZXI8RiBleHRlbmRzIEVudGl0eUZpbHRlcjxGLCBhbnk+PihvYmo6IFBhcnRpYWw8Rj4pOiBvYmogaXMgRiB7XG4gICAgcmV0dXJuIChvYmogJiYgb2JqLmFzUG9kT2JqZWN0ICYmIG9iai5hc0ZpbHRlckZuICYmIHRydWUpIHx8IGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3Q8Rj4oc291cmNlOiBhbnksIGZpbHRlclR5cGU6IG5ldyAoKSA9PiBGKTogRiB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiBzb3VyY2U7XG4gICAgaWYgKGlzSW5zdGFuY2VPZihzb3VyY2UsIGZpbHRlclR5cGUpKSByZXR1cm4gc291cmNlIGFzIEY7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IGZpbHRlclR5cGUoKTtcbiAgICBpZiAoRW50aXR5RmlsdGVyVXRpbHMuaXNFbnRpdHlGaWx0ZXIodGFyZ2V0KSkge1xuICAgICAgdGFyZ2V0LmZyb21PYmplY3Qoc291cmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbn1cbiJdfQ==
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2ZpbHRlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFrQyxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXlCdEYsTUFBTSxPQUFnQixZQU9wQixTQUFRLE1BQXFCO0lBRzdCLDBDQUEwQztJQUNoQyxLQUFLLENBQU87SUFDWixJQUFJLENBQU87SUFDWCxLQUFLLENBQVc7SUFFMUIsTUFBTSxDQUFDLE1BQU0sQ0FBNEIsU0FBd0I7UUFDL0QsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDOUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBNEIsU0FBd0I7UUFDOUQsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDOUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBR0QsWUFBWSxVQUFtQjtRQUM3QixLQUFL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QyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0VtcHR5QXJyYXksIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IE1JTklGWV9FTlRJVFlfRk9SX1BPRCwgUmVmZXJlbnRpYWxVdGlscyB9IGZyb20gJy4vcmVmZXJlbnRpYWwubW9kZWwnO1xuaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlBc09iamVjdE9wdGlvbnMsIElFbnRpdHksIGlzSW5zdGFuY2VPZiB9IGZyb20gJy4vZW50aXR5Lm1vZGVsJztcblxuaW1wb3J0IHsgRmlsdGVyRm4gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbnRpdHlGaWx0ZXI8XG4gIEYgZXh0ZW5kcyBJRW50aXR5RmlsdGVyPEYsIFQsIElELCBBTywgRk8+LFxuICBUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+LFxuICBJRCA9IG51bWJlcixcbiAgQU8gZXh0ZW5kcyBFbnRpdHlBc09iamVjdE9wdGlvbnMgPSBFbnRpdHlBc09iamVjdE9wdGlvbnMsXG4gIEZPID0gYW55LFxuPiBleHRlbmRzIElFbnRpdHk8RiwgSUQsIEFPLCBGTz4ge1xuICBhc1BvZE9iamVjdCgpOiBhbnk7XG5cbiAgYXNGaWx0ZXJGbigpOiBGaWx0ZXJGbjxUPjtcblxuICBpc0VtcHR5KCk6IGJvb2xlYW47XG5cbiAgY291bnROb3RFbXB0eUNyaXRlcmlhKCk6IG51bWJlcjtcblxuICAvLyBMb2dpY2FsIGNvbWJpbmF0b3JzIChmbHVlbnQsIHJldHVybiBzYW1lIGZpbHRlciB0eXBlIEYpXG4gIGFuZCguLi5maWx0ZXJzOiBGW10pOiBGO1xuICBvciguLi5maWx0ZXJzOiBGW10pOiBGO1xuICBub3QoKTogRjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eUZpbHRlcjxcbiAgICBGIGV4dGVuZHMgSUVudGl0eUZpbHRlcjxGLCBULCBJRCwgQU8sIEZPPixcbiAgICBUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+LFxuICAgIElEID0gbnVtYmVyLFxuICAgIEFPIGV4dGVuZHMgRW50aXR5QXNPYmplY3RPcHRpb25zID0gRW50aXR5QXNPYmplY3RPcHRpb25zLFxuICAgIEZPID0gYW55LFxuICA+XG4gIGV4dGVuZHMgRW50aXR5PEYsIElELCBBTywgRk8+XG4gIGltcGxlbWVudHMgSUVudGl0eUZpbHRlcjxGLCBULCBJRCwgQU8sIEZPPlxue1xuICAvLyBJbnRlcm5hbCBjb21wb3NpdGlvbiBzdGF0ZSAoZmx1ZW50IEFQSSlcbiAgcHJvdGVjdGVkIF9fYW5kPzogRltdO1xuICBwcm90ZWN0ZWQgX19vcj86IEZbXTtcbiAgcHJvdGVjdGVkIF9fbm90PzogYm9vbGVhbjtcblxuICBzdGF0aWMgYW5kRm5zPFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4+KGZpbHRlckZuczogRmlsdGVyRm48VD5bXSk6IEZpbHRlckZuPFQ+IHtcbiAgICBpZiAoaXNFbXB0eUFycmF5KGZpbHRlckZucykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChlbnRpdHkpID0+IChmaWx0ZXJGbnMgfHwgW10pLmV2ZXJ5KChmbikgPT4gZm4oZW50aXR5KSk7XG4gIH1cblxuICBzdGF0aWMgb3JGbnM8VCBleHRlbmRzIElFbnRpdHk8VCwgYW55Pj4oZmlsdGVyRm5zOiBGaWx0ZXJGbjxUPltdKTogRmlsdGVyRm48VD4ge1xuICAgIGlmIChpc0VtcHR5QXJyYXkoZmlsdGVyRm5zKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKGVudGl0eSkgPT4gKGZpbHRlckZucyB8fCBbXSkuc29tZSgoZm4pID0+IGZuKGVudGl0eSkpO1xuICB9XG5cblxuICBjb25zdHJ1Y3RvcihfX3R5cGVuYW1lPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoX190eXBlbmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gYSBmaWx0ZXIsIGJlZm9yZSBzZW5kaW5nIHRvIHRoZSBwb2QgKGUuZyBjb252ZXJ0IGRhdGVzLCByZW1vdmUgaW50ZXJuYWwgcHJvcGVydGllcywgZXRjLilcbiAgICovXG4gIGFzUG9kT2JqZWN0KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuYXNPYmplY3QoTUlOSUZZX0VOVElUWV9GT1JfUE9EIGFzIEFPKTtcbiAgfVxuXG4gIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY291bnROb3RFbXB0eUNyaXRlcmlhKCkgPT09IDA7XG4gIH1cblxuICBjb3VudE5vdEVtcHR5Q3JpdGVyaWEoKTogbnVtYmVyIHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5hc1BvZE9iamVjdCgpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhqc29uKS5maWx0ZXIoKGtleSkgPT4gdGhpcy5pc0NyaXRlcmlhTm90RW1wdHkoa2V5LCBqc29uW2tleV0pKS5sZW5ndGg7XG4gIH1cblxuICBhc0ZpbHRlckZuKCk6IEZpbHRlckZuPFQ+IHtcbiAgICAvLyBCYXNlICh0aGlzKSBmaWx0ZXIgZnVuY3Rpb25zXG4gICAgbGV0IGZpbHRlckZucyA9IHRoaXMuYnVpbGRGaWx0ZXIoKSB8fCBbXTtcblxuICAgIC8vIEFORCBmaWx0ZXJzXG4gICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLl9fYW5kKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2goLi4udGhpcy5fX2FuZC5tYXAoKGYpID0+IGY/LmFzRmlsdGVyRm4oKSkuZmlsdGVyKGlzTm90TmlsKSk7XG4gICAgfVxuXG4gICAgLy8gQXMgZmlsdGVyIGZ1bmN0aW9uXG4gICAgbGV0IHJlc3VsdCA9IEVudGl0eUZpbHRlci5hbmRGbnM8VD4oZmlsdGVyRm5zKTtcblxuICAgIC8vIE9SIGZpbHRlcnNcbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMuX19vcikpIHtcbiAgICAgIHJlc3VsdCA9IEVudGl0eUZpbHRlci5vckZucyhcbiAgICAgICAgW1xuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAuLi4odGhpcy5fX29yIHx8IFtdKS5tYXAoKGYpID0+IGY/LmFzRmlsdGVyRm4oKSlcbiAgICAgICAgXS5maWx0ZXIoaXNOb3ROaWwpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIE5PVFxuICAgIGlmICh0aGlzLl9fbm90ICYmIHJlc3VsdCkge1xuICAgICAgY29uc3QgaW5uZXIgPSByZXN1bHQ7XG4gICAgICByZXN1bHQgPSAoZW50aXR5OiBUKSA9PiAhaW5uZXIoZW50aXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYW5kKC4uLmZpbHRlcnM6IEZbXSk6IEYge1xuICAgIGlmICghaXNFbXB0eUFycmF5KGZpbHRlcnMpKSB7XG4gICAgICB0aGlzLl9fYW5kID0gKHRoaXMuX19hbmQgfHwgW10pLmNvbmNhdChmaWx0ZXJzLmZpbHRlcihpc05vdE5pbCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIEY7XG4gIH1cblxuICBvciguLi5maWx0ZXJzOiBGW10pOiBGIHtcbiAgICBpZiAoIWlzRW1wdHlBcnJheShmaWx0ZXJzKSkge1xuICAgICAgdGhpcy5fX29yID0gKHRoaXMuX19vciB8fCBbXSkuY29uY2F0KGZpbHRlcnMuZmlsdGVyKGlzTm90TmlsKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgRjtcbiAgfVxuXG4gIG5vdCgpOiBGIHtcbiAgICB0aGlzLl9fbm90ID0gISh0aGlzLl9fbm90ID8/IGZhbHNlKTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIEY7XG4gIH1cblxuICBhc09iamVjdChvcHRzPzogQU8pOiBhbnkge1xuICAgIGNvbnN0IHRhcmdldDogYW55ID0gc3VwZXIuYXNPYmplY3Qob3B0cyk7XG5cbiAgICAvLyBTZXJpYWxpemUgY29tcG9zaXRpb25cbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMuX19hbmQpKSB7XG4gICAgICB0YXJnZXQuYW5kID0gdGhpcy5fX2FuZC5tYXAoKGYpID0+IGYuYXNPYmplY3Qob3B0cykpO1xuICAgIH1cbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMuX19vcikpIHtcbiAgICAgIHRhcmdldC5vciA9IHRoaXMuX19vci5tYXAoKGYpID0+IGYuYXNPYmplY3Qob3B0cykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fX25vdCkge1xuICAgICAgdGFyZ2V0Lm5vdCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gU2FuaXRpemVcbiAgICBkZWxldGUgdGFyZ2V0Ll9fYW5kO1xuICAgIGRlbGV0ZSB0YXJnZXQuX19vcjtcbiAgICBkZWxldGUgdGFyZ2V0Ll9fbm90O1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBGTykge1xuICAgIHN1cGVyLmZyb21PYmplY3Qoc291cmNlLCBvcHRzIGFzIGFueSk7XG4gICAgLy8gRGVzZXJpYWxpemUgY29tcG9zaXRpb24gdXNpbmcgdGhlIHNhbWUgY29uY3JldGUgZmlsdGVyIHR5cGVcblxuICAgIC8vIEFORFxuICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZT8uYW5kKSkge1xuICAgICAgY29uc3QgQ3RvcjogbmV3ICgpID0+IEYgPSAodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpO1xuICAgICAgdGhpcy5fX2FuZCA9IHNvdXJjZS5hbmQubWFwKChzKSA9PiB7XG4gICAgICAgIGlmICghcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgZiA9IG5ldyBDdG9yKCk7XG4gICAgICAgIChmIGFzIGFueSkuZnJvbU9iamVjdChzLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIGY7XG4gICAgICB9KS5maWx0ZXIoaXNOb3ROaWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9fYW5kID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIE9SXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlPy5vcikpIHtcbiAgICAgIGNvbnN0IEN0b3I6IG5ldyAoKSA9PiBGID0gKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KTtcbiAgICAgIHRoaXMuX19vciA9IHNvdXJjZS5vci5tYXAoKHMpID0+IHtcbiAgICAgICAgaWYgKCFzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmID0gbmV3IEN0b3IoKTtcbiAgICAgICAgKGYgYXMgYW55KS5mcm9tT2JqZWN0KHMsIG9wdHMpO1xuICAgICAgICByZXR1cm4gZjtcbiAgICAgIH0pLmZpbHRlcihpc05vdE5pbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX19vciA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBOT1RcbiAgICB0aGlzLl9fbm90ID0gISFzb3VyY2U/Lm5vdDtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBmdW5jdGlvbnMgLS0gKi9cblxuICBwcm90ZWN0ZWQgYnVpbGRGaWx0ZXIoKTogRmlsdGVyRm48VD5bXSB7XG4gICAgLy8gQ2FuIGJlIGNvbXBsZXRlZCBieSBzdWJjbGFzc2VzXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzQ3JpdGVyaWFOb3RFbXB0eShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXNcbiAgICByZXR1cm4gKFxuICAgICAgdmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgIC8vIG5vdCBlbXB0eSBzdHJpbmdcbiAgICAgICgodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgIT09ICcnKSB8fFxuICAgICAgICAvLyB2YWxpZCBudW1iZXJcbiAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbHVlKSkgfHxcbiAgICAgICAgLy8gdmFsaWQgYm9vbGVhblxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fFxuICAgICAgICAvLyBub3QgZW1wdHkgYXJyYXlcbiAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHx8XG4gICAgICAgIC8vIGVudGl0eSB3aXRoIGFuIGlkXG4gICAgICAgIFJlZmVyZW50aWFsVXRpbHMuaXNOb3RFbXB0eSh2YWx1ZSkpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3JGaWx0ZXI8VCBleHRlbmRzIElFbnRpdHk8VCwgYW55Pj4gZXh0ZW5kcyBFbnRpdHlGaWx0ZXI8T3JGaWx0ZXI8VD4sIFQ+IHtcbiAgcHJvdGVjdGVkIGZpbHRlcnM6IEVudGl0eUZpbHRlcjxhbnksIFQ+W107XG5cbiAgY29uc3RydWN0b3IoLi4uZmlsdGVyczogRW50aXR5RmlsdGVyPGFueSwgVD5bXSkge1xuICAgIHN1cGVyKCdPckZpbHRlcicpO1xuICAgIHRoaXMuZmlsdGVycyA9IChmaWx0ZXJzIHx8IFtdKS5maWx0ZXIoaXNOb3ROaWwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkRmlsdGVyKCk6IEZpbHRlckZuPFQ+W10ge1xuICAgIGNvbnN0IGZucyA9ICh0aGlzLmZpbHRlcnMgfHwgW10pXG4gICAgICAubWFwKChmKSA9PiAoZiA/IGYuYXNGaWx0ZXJGbigpIDogdW5kZWZpbmVkKSlcbiAgICAgIC5maWx0ZXIoaXNOb3ROaWwpO1xuXG4gICAgaWYgKGlzRW1wdHlBcnJheShmbnMpKSByZXR1cm4gW107XG5cbiAgICByZXR1cm4gW1xuICAgICAgKGVudGl0eTogVCkgPT4gZm5zLnNvbWUoKGZuKSA9PiBmbihlbnRpdHkpKVxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEZpbHRlcjxUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+PiBleHRlbmRzIEVudGl0eUZpbHRlcjxOb3RGaWx0ZXI8VD4sIFQ+IHtcbiAgcHJvdGVjdGVkIGZpbHRlcjogRW50aXR5RmlsdGVyPGFueSwgVD47XG5cbiAgY29uc3RydWN0b3IoZmlsdGVyOiBFbnRpdHlGaWx0ZXI8YW55LCBUPikge1xuICAgIHN1cGVyKCdOb3RGaWx0ZXInKTtcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEZpbHRlcigpOiBGaWx0ZXJGbjxUPltdIHtcbiAgICBjb25zdCBmbiA9IHRoaXMuZmlsdGVyPy5hc0ZpbHRlckZuKCk7XG4gICAgaWYgKCFmbikgcmV0dXJuIFtdO1xuICAgIHJldHVybiBbXG4gICAgICAoZW50aXR5OiBUKSA9PiAhZm4oZW50aXR5KVxuICAgIF07XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgQW5kRmlsdGVyPFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4+IGV4dGVuZHMgRW50aXR5RmlsdGVyPEFuZEZpbHRlcjxUPiwgVD4ge1xuICBwcm90ZWN0ZWQgZmlsdGVyczogRW50aXR5RmlsdGVyPGFueSwgVD5bXTtcblxuICBjb25zdHJ1Y3RvciguLi5maWx0ZXJzOiBFbnRpdHlGaWx0ZXI8YW55LCBUPltdKSB7XG4gICAgc3VwZXIoJ0FuZEZpbHRlcicpO1xuICAgIHRoaXMuZmlsdGVycyA9IChmaWx0ZXJzIHx8IFtdKS5maWx0ZXIoaXNOb3ROaWwpO1xuICB9XG5cbiAgYW5kKC4uLmZpbHRlcnM6IEVudGl0eUZpbHRlcjxhbnksIFQ+W10pOiBBbmRGaWx0ZXI8VD4ge1xuICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycy5jb25jYXQoLi4uKGZpbHRlcnMgfHwgW10pLmZpbHRlcihpc05vdE5pbCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkRmlsdGVyKCk6IEZpbHRlckZuPFQ+W10ge1xuICAgIGNvbnN0IGZucyA9ICh0aGlzLmZpbHRlcnMgfHwgW10pXG4gICAgICAubWFwKChmKSA9PiAoZiA/IGYuYXNGaWx0ZXJGbigpIDogdW5kZWZpbmVkKSlcbiAgICAgIC5maWx0ZXIoaXNOb3ROaWwpO1xuXG4gICAgaWYgKGlzRW1wdHlBcnJheShmbnMpKSByZXR1cm4gW107XG5cbiAgICByZXR1cm4gW1xuICAgICAgKGVudGl0eTogVCkgPT4gZm5zLmV2ZXJ5KChmbikgPT4gZm4oZW50aXR5KSlcbiAgICBdO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnRpdHlGaWx0ZXJVdGlscyB7XG4gIHN0YXRpYyBpc0VudGl0eUZpbHRlcjxGIGV4dGVuZHMgRW50aXR5RmlsdGVyPEYsIGFueT4+KG9iajogUGFydGlhbDxGPik6IG9iaiBpcyBGIHtcbiAgICByZXR1cm4gKG9iaiAmJiBvYmouYXNQb2RPYmplY3QgJiYgb2JqLmFzRmlsdGVyRm4gJiYgdHJ1ZSkgfHwgZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgZnJvbU9iamVjdDxGPihzb3VyY2U6IGFueSwgZmlsdGVyVHlwZTogbmV3ICgpID0+IEYpOiBGIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHNvdXJjZTtcbiAgICBpZiAoaXNJbnN0YW5jZU9mKHNvdXJjZSwgZmlsdGVyVHlwZSkpIHJldHVybiBzb3VyY2UgYXMgRjtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgZmlsdGVyVHlwZSgpO1xuICAgIGlmIChFbnRpdHlGaWx0ZXJVdGlscy5pc0VudGl0eUZpbHRlcih0YXJnZXQpKSB7XG4gICAgICB0YXJnZXQuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG59XG4iXX0=
|