@sumaris-net/ngx-components 18.22.1 → 18.22.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,6 +19,10 @@ export class EntityFilter extends Entity {
19
19
  constructor(__typename) {
20
20
  super(__typename);
21
21
  }
22
+ create() {
23
+ const Ctor = this.constructor;
24
+ return new Ctor();
25
+ }
22
26
  /**
23
27
  * Clean a filter, before sending to the pod (e.g convert dates, remove internal properties, etc.)
24
28
  */
@@ -35,6 +39,11 @@ export class EntityFilter extends Entity {
35
39
  asFilterFn() {
36
40
  // Base (this) filter functions
37
41
  let filterFns = this.buildFilter() || [];
42
+ // NOT
43
+ if (this.__not) {
44
+ const notFn = this.__not.asFilterFn();
45
+ filterFns.push((item) => !notFn(item));
46
+ }
38
47
  // AND filters
39
48
  if (isNotEmptyArray(this.__and)) {
40
49
  filterFns.push(...this.__and.map((f) => f?.asFilterFn()).filter(isNotNil));
@@ -48,11 +57,6 @@ export class EntityFilter extends Entity {
48
57
  ...(this.__or || []).map((f) => f?.asFilterFn())
49
58
  ].filter(isNotNil));
50
59
  }
51
- // NOT
52
- if (this.__not && result) {
53
- const inner = result;
54
- result = (entity) => !inner(entity);
55
- }
56
60
  return result;
57
61
  }
58
62
  and(...filters) {
@@ -67,22 +71,22 @@ export class EntityFilter extends Entity {
67
71
  }
68
72
  return this;
69
73
  }
70
- not() {
71
- this.__not = !(this.__not ?? false);
74
+ not(filter) {
75
+ this.__not = filter;
72
76
  return this;
73
77
  }
74
78
  asObject(opts) {
75
79
  const target = super.asObject(opts);
76
80
  // Serialize composition
81
+ if (this.__not) {
82
+ target.not = this.__not.asObject(opts);
83
+ }
77
84
  if (isNotEmptyArray(this.__and)) {
78
85
  target.and = this.__and.map((f) => f.asObject(opts));
79
86
  }
80
87
  if (isNotEmptyArray(this.__or)) {
81
88
  target.or = this.__or.map((f) => f.asObject(opts));
82
89
  }
83
- if (this.__not) {
84
- target.not = true;
85
- }
86
90
  // Sanitize
87
91
  delete target.__and;
88
92
  delete target.__or;
@@ -94,11 +98,10 @@ export class EntityFilter extends Entity {
94
98
  // Deserialize composition using the same concrete filter type
95
99
  // AND
96
100
  if (Array.isArray(source?.and)) {
97
- const Ctor = this.constructor;
98
101
  this.__and = source.and.map((s) => {
99
102
  if (!s)
100
103
  return undefined;
101
- const f = new Ctor();
104
+ const f = this.create();
102
105
  f.fromObject(s, opts);
103
106
  return f;
104
107
  }).filter(isNotNil);
@@ -108,11 +111,10 @@ export class EntityFilter extends Entity {
108
111
  }
109
112
  // OR
110
113
  if (Array.isArray(source?.or)) {
111
- const Ctor = this.constructor;
112
114
  this.__or = source.or.map((s) => {
113
115
  if (!s)
114
116
  return undefined;
115
- const f = new Ctor();
117
+ const f = this.create();
116
118
  f.fromObject(s, opts);
117
119
  return f;
118
120
  }).filter(isNotNil);
@@ -121,7 +123,11 @@ export class EntityFilter extends Entity {
121
123
  this.__or = undefined;
122
124
  }
123
125
  // NOT
124
- this.__not = !!source?.not;
126
+ if (source?.not) {
127
+ const f = this.create();
128
+ f.fromObject(source.not, opts);
129
+ this.__not = f;
130
+ }
125
131
  }
126
132
  /* -- protected functions -- */
127
133
  buildFilter() {
@@ -216,4 +222,4 @@ export class EntityFilterUtils {
216
222
  return target;
217
223
  }
218
224
  }
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=
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL21vZGVsL2ZpbHRlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFrQyxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXlCdEYsTUFBTSxPQUFnQixZQU9wQixTQUFRLE1BQXFCO0lBRzdCLDBDQUEwQztJQUNoQyxLQUFLLENBQU87SUFDWixJQUFJLENBQU87SUFDWCxLQUFLLENBQUs7SUFFcEIsTUFBTSxDQUFDLE1BQU0sQ0FBNEIsU0FBd0I7UUFDL0QsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDOUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBNEIsU0FBd0I7UUFDOUQsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDOUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBR0QsWUFBWSxVQUFtQjtRQUM3QixLQUFL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O1lBQUUsT0FBTyxNQUFXLENBQUM7UUFDekQsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxJQUFJLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBNSU5JRllfRU5USVRZX0ZPUl9QT0QsIFJlZmVyZW50aWFsVXRpbHMgfSBmcm9tICcuL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5QXNPYmplY3RPcHRpb25zLCBJRW50aXR5LCBpc0luc3RhbmNlT2YgfSBmcm9tICcuL2VudGl0eS5tb2RlbCc7XG5cbmltcG9ydCB7IEZpbHRlckZuIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBJRW50aXR5RmlsdGVyPFxuICBGIGV4dGVuZHMgSUVudGl0eUZpbHRlcjxGLCBULCBJRCwgQU8sIEZPPixcbiAgVCBleHRlbmRzIElFbnRpdHk8VCwgYW55PixcbiAgSUQgPSBudW1iZXIsXG4gIEFPIGV4dGVuZHMgRW50aXR5QXNPYmplY3RPcHRpb25zID0gRW50aXR5QXNPYmplY3RPcHRpb25zLFxuICBGTyA9IGFueSxcbj4gZXh0ZW5kcyBJRW50aXR5PEYsIElELCBBTywgRk8+IHtcbiAgYXNQb2RPYmplY3QoKTogYW55O1xuXG4gIGFzRmlsdGVyRm4oKTogRmlsdGVyRm48VD47XG5cbiAgaXNFbXB0eSgpOiBib29sZWFuO1xuXG4gIGNvdW50Tm90RW1wdHlDcml0ZXJpYSgpOiBudW1iZXI7XG5cbiAgLy8gTG9naWNhbCBjb21iaW5hdG9ycyAoZmx1ZW50LCByZXR1cm4gc2FtZSBmaWx0ZXIgdHlwZSBGKVxuICBhbmQoLi4uZmlsdGVyczogRltdKTogRjtcbiAgb3IoLi4uZmlsdGVyczogRltdKTogRjtcbiAgbm90KGZpbHRlcjogRik6IEY7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbnRpdHlGaWx0ZXI8XG4gICAgRiBleHRlbmRzIElFbnRpdHlGaWx0ZXI8RiwgVCwgSUQsIEFPLCBGTz4sXG4gICAgVCBleHRlbmRzIElFbnRpdHk8VCwgYW55PixcbiAgICBJRCA9IG51bWJlcixcbiAgICBBTyBleHRlbmRzIEVudGl0eUFzT2JqZWN0T3B0aW9ucyA9IEVudGl0eUFzT2JqZWN0T3B0aW9ucyxcbiAgICBGTyA9IGFueSxcbiAgPlxuICBleHRlbmRzIEVudGl0eTxGLCBJRCwgQU8sIEZPPlxuICBpbXBsZW1lbnRzIElFbnRpdHlGaWx0ZXI8RiwgVCwgSUQsIEFPLCBGTz5cbntcbiAgLy8gSW50ZXJuYWwgY29tcG9zaXRpb24gc3RhdGUgKGZsdWVudCBBUEkpXG4gIHByb3RlY3RlZCBfX2FuZD86IEZbXTtcbiAgcHJvdGVjdGVkIF9fb3I/OiBGW107XG4gIHByb3RlY3RlZCBfX25vdD86IEY7XG5cbiAgc3RhdGljIGFuZEZuczxUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+PihmaWx0ZXJGbnM6IEZpbHRlckZuPFQ+W10pOiBGaWx0ZXJGbjxUPiB7XG4gICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXJGbnMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiAoZW50aXR5KSA9PiAoZmlsdGVyRm5zIHx8IFtdKS5ldmVyeSgoZm4pID0+IGZuKGVudGl0eSkpO1xuICB9XG5cbiAgc3RhdGljIG9yRm5zPFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4+KGZpbHRlckZuczogRmlsdGVyRm48VD5bXSk6IEZpbHRlckZuPFQ+IHtcbiAgICBpZiAoaXNFbXB0eUFycmF5KGZpbHRlckZucykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChlbnRpdHkpID0+IChmaWx0ZXJGbnMgfHwgW10pLnNvbWUoKGZuKSA9PiBmbihlbnRpdHkpKTtcbiAgfVxuXG5cbiAgY29uc3RydWN0b3IoX190eXBlbmFtZT86IHN0cmluZykge1xuICAgIHN1cGVyKF9fdHlwZW5hbWUpO1xuICB9XG5cbiAgY3JlYXRlKCkge1xuICAgIGNvbnN0IEN0b3I6IG5ldyAoKSA9PiBGID0gKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KTtcbiAgICByZXR1cm4gbmV3IEN0b3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbiBhIGZpbHRlciwgYmVmb3JlIHNlbmRpbmcgdG8gdGhlIHBvZCAoZS5nIGNvbnZlcnQgZGF0ZXMsIHJlbW92ZSBpbnRlcm5hbCBwcm9wZXJ0aWVzLCBldGMuKVxuICAgKi9cbiAgYXNQb2RPYmplY3QoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5hc09iamVjdChNSU5JRllfRU5USVRZX0ZPUl9QT0QgYXMgQU8pO1xuICB9XG5cbiAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudE5vdEVtcHR5Q3JpdGVyaWEoKSA9PT0gMDtcbiAgfVxuXG4gIGNvdW50Tm90RW1wdHlDcml0ZXJpYSgpOiBudW1iZXIge1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLmFzUG9kT2JqZWN0KCk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGpzb24pLmZpbHRlcigoa2V5KSA9PiB0aGlzLmlzQ3JpdGVyaWFOb3RFbXB0eShrZXksIGpzb25ba2V5XSkpLmxlbmd0aDtcbiAgfVxuXG4gIGFzRmlsdGVyRm4oKTogRmlsdGVyRm48VD4ge1xuICAgIC8vIEJhc2UgKHRoaXMpIGZpbHRlciBmdW5jdGlvbnNcbiAgICBsZXQgZmlsdGVyRm5zID0gdGhpcy5idWlsZEZpbHRlcigpIHx8IFtdO1xuXG4gICAgLy8gTk9UXG4gICAgaWYgKHRoaXMuX19ub3QpIHtcbiAgICAgIGNvbnN0IG5vdEZuID0gdGhpcy5fX25vdC5hc0ZpbHRlckZuKCk7XG4gICAgICBmaWx0ZXJGbnMucHVzaCgoaXRlbSkgPT4gIW5vdEZuKGl0ZW0pKTtcbiAgICB9XG5cbiAgICAvLyBBTkQgZmlsdGVyc1xuICAgIGlmIChpc05vdEVtcHR5QXJyYXkodGhpcy5fX2FuZCkpIHtcbiAgICAgIGZpbHRlckZucy5wdXNoKC4uLnRoaXMuX19hbmQubWFwKChmKSA9PiBmPy5hc0ZpbHRlckZuKCkpLmZpbHRlcihpc05vdE5pbCkpO1xuICAgIH1cblxuICAgIC8vIEFzIGZpbHRlciBmdW5jdGlvblxuICAgIGxldCByZXN1bHQgPSBFbnRpdHlGaWx0ZXIuYW5kRm5zPFQ+KGZpbHRlckZucyk7XG5cbiAgICAvLyBPUiBmaWx0ZXJzXG4gICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLl9fb3IpKSB7XG4gICAgICByZXN1bHQgPSBFbnRpdHlGaWx0ZXIub3JGbnMoXG4gICAgICAgIFtcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgLi4uKHRoaXMuX19vciB8fCBbXSkubWFwKChmKSA9PiBmPy5hc0ZpbHRlckZuKCkpXG4gICAgICAgIF0uZmlsdGVyKGlzTm90TmlsKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYW5kKC4uLmZpbHRlcnM6IEZbXSk6IEYge1xuICAgIGlmICghaXNFbXB0eUFycmF5KGZpbHRlcnMpKSB7XG4gICAgICB0aGlzLl9fYW5kID0gKHRoaXMuX19hbmQgfHwgW10pLmNvbmNhdChmaWx0ZXJzLmZpbHRlcihpc05vdE5pbCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIEY7XG4gIH1cblxuICBvciguLi5maWx0ZXJzOiBGW10pOiBGIHtcbiAgICBpZiAoIWlzRW1wdHlBcnJheShmaWx0ZXJzKSkge1xuICAgICAgdGhpcy5fX29yID0gKHRoaXMuX19vciB8fCBbXSkuY29uY2F0KGZpbHRlcnMuZmlsdGVyKGlzTm90TmlsKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgRjtcbiAgfVxuXG4gIG5vdChmaWx0ZXI6IEYpOiBGIHtcbiAgICB0aGlzLl9fbm90ID0gZmlsdGVyO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgRjtcbiAgfVxuXG4gIGFzT2JqZWN0KG9wdHM/OiBBTyk6IGFueSB7XG4gICAgY29uc3QgdGFyZ2V0OiBhbnkgPSBzdXBlci5hc09iamVjdChvcHRzKTtcblxuICAgIC8vIFNlcmlhbGl6ZSBjb21wb3NpdGlvblxuICAgIGlmICh0aGlzLl9fbm90KSB7XG4gICAgICB0YXJnZXQubm90ID0gdGhpcy5fX25vdC5hc09iamVjdChvcHRzKTtcbiAgICB9XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLl9fYW5kKSkge1xuICAgICAgdGFyZ2V0LmFuZCA9IHRoaXMuX19hbmQubWFwKChmKSA9PiBmLmFzT2JqZWN0KG9wdHMpKTtcbiAgICB9XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLl9fb3IpKSB7XG4gICAgICB0YXJnZXQub3IgPSB0aGlzLl9fb3IubWFwKChmKSA9PiBmLmFzT2JqZWN0KG9wdHMpKTtcbiAgICB9XG5cbiAgICAvLyBTYW5pdGl6ZVxuICAgIGRlbGV0ZSB0YXJnZXQuX19hbmQ7XG4gICAgZGVsZXRlIHRhcmdldC5fX29yO1xuICAgIGRlbGV0ZSB0YXJnZXQuX19ub3Q7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSwgb3B0cz86IEZPKSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UsIG9wdHMgYXMgYW55KTtcbiAgICAvLyBEZXNlcmlhbGl6ZSBjb21wb3NpdGlvbiB1c2luZyB0aGUgc2FtZSBjb25jcmV0ZSBmaWx0ZXIgdHlwZVxuXG4gICAgLy8gQU5EXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlPy5hbmQpKSB7XG4gICAgICB0aGlzLl9fYW5kID0gc291cmNlLmFuZC5tYXAoKHMpID0+IHtcbiAgICAgICAgaWYgKCFzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmID0gdGhpcy5jcmVhdGUoKTtcbiAgICAgICAgKGYgYXMgYW55KS5mcm9tT2JqZWN0KHMsIG9wdHMpO1xuICAgICAgICByZXR1cm4gZjtcbiAgICAgIH0pLmZpbHRlcihpc05vdE5pbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX19hbmQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gT1JcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2U/Lm9yKSkge1xuICAgICAgdGhpcy5fX29yID0gc291cmNlLm9yLm1hcCgocykgPT4ge1xuICAgICAgICBpZiAoIXMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGYgPSB0aGlzLmNyZWF0ZSgpO1xuICAgICAgICAoZiBhcyBhbnkpLmZyb21PYmplY3Qocywgb3B0cyk7XG4gICAgICAgIHJldHVybiBmO1xuICAgICAgfSkuZmlsdGVyKGlzTm90TmlsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fX29yID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIE5PVFxuICAgIGlmIChzb3VyY2U/Lm5vdCkge1xuICAgICAgY29uc3QgZiA9IHRoaXMuY3JlYXRlKCk7XG4gICAgICAoZiBhcyBhbnkpLmZyb21PYmplY3Qoc291cmNlLm5vdCwgb3B0cyk7XG4gICAgICB0aGlzLl9fbm90ID0gZjtcbiAgICB9XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgZnVuY3Rpb25zIC0tICovXG5cbiAgcHJvdGVjdGVkIGJ1aWxkRmlsdGVyKCk6IEZpbHRlckZuPFQ+W10ge1xuICAgIC8vIENhbiBiZSBjb21wbGV0ZWQgYnkgc3ViY2xhc3Nlc1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0NyaXRlcmlhTm90RW1wdHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzXG4gICAgcmV0dXJuIChcbiAgICAgIHZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgICAvLyBub3QgZW1wdHkgc3RyaW5nXG4gICAgICAoKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpICE9PSAnJykgfHxcbiAgICAgICAgLy8gdmFsaWQgbnVtYmVyXG4gICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmICFpc05hTih2YWx1ZSkpIHx8XG4gICAgICAgIC8vIHZhbGlkIGJvb2xlYW5cbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgLy8gbm90IGVtcHR5IGFycmF5XG4gICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB8fFxuICAgICAgICAvLyBlbnRpdHkgd2l0aCBhbiBpZFxuICAgICAgICBSZWZlcmVudGlhbFV0aWxzLmlzTm90RW1wdHkodmFsdWUpKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9yRmlsdGVyPFQgZXh0ZW5kcyBJRW50aXR5PFQsIGFueT4+IGV4dGVuZHMgRW50aXR5RmlsdGVyPE9yRmlsdGVyPFQ+LCBUPiB7XG4gIHByb3RlY3RlZCBmaWx0ZXJzOiBFbnRpdHlGaWx0ZXI8YW55LCBUPltdO1xuXG4gIGNvbnN0cnVjdG9yKC4uLmZpbHRlcnM6IEVudGl0eUZpbHRlcjxhbnksIFQ+W10pIHtcbiAgICBzdXBlcignT3JGaWx0ZXInKTtcbiAgICB0aGlzLmZpbHRlcnMgPSAoZmlsdGVycyB8fCBbXSkuZmlsdGVyKGlzTm90TmlsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEZpbHRlcigpOiBGaWx0ZXJGbjxUPltdIHtcbiAgICBjb25zdCBmbnMgPSAodGhpcy5maWx0ZXJzIHx8IFtdKVxuICAgICAgLm1hcCgoZikgPT4gKGYgPyBmLmFzRmlsdGVyRm4oKSA6IHVuZGVmaW5lZCkpXG4gICAgICAuZmlsdGVyKGlzTm90TmlsKTtcblxuICAgIGlmIChpc0VtcHR5QXJyYXkoZm5zKSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIChlbnRpdHk6IFQpID0+IGZucy5zb21lKChmbikgPT4gZm4oZW50aXR5KSlcbiAgICBdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RGaWx0ZXI8VCBleHRlbmRzIElFbnRpdHk8VCwgYW55Pj4gZXh0ZW5kcyBFbnRpdHlGaWx0ZXI8Tm90RmlsdGVyPFQ+LCBUPiB7XG4gIHByb3RlY3RlZCBmaWx0ZXI6IEVudGl0eUZpbHRlcjxhbnksIFQ+O1xuXG4gIGNvbnN0cnVjdG9yKGZpbHRlcjogRW50aXR5RmlsdGVyPGFueSwgVD4pIHtcbiAgICBzdXBlcignTm90RmlsdGVyJyk7XG4gICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRGaWx0ZXIoKTogRmlsdGVyRm48VD5bXSB7XG4gICAgY29uc3QgZm4gPSB0aGlzLmZpbHRlcj8uYXNGaWx0ZXJGbigpO1xuICAgIGlmICghZm4pIHJldHVybiBbXTtcbiAgICByZXR1cm4gW1xuICAgICAgKGVudGl0eTogVCkgPT4gIWZuKGVudGl0eSlcbiAgICBdO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEFuZEZpbHRlcjxUIGV4dGVuZHMgSUVudGl0eTxULCBhbnk+PiBleHRlbmRzIEVudGl0eUZpbHRlcjxBbmRGaWx0ZXI8VD4sIFQ+IHtcbiAgcHJvdGVjdGVkIGZpbHRlcnM6IEVudGl0eUZpbHRlcjxhbnksIFQ+W107XG5cbiAgY29uc3RydWN0b3IoLi4uZmlsdGVyczogRW50aXR5RmlsdGVyPGFueSwgVD5bXSkge1xuICAgIHN1cGVyKCdBbmRGaWx0ZXInKTtcbiAgICB0aGlzLmZpbHRlcnMgPSAoZmlsdGVycyB8fCBbXSkuZmlsdGVyKGlzTm90TmlsKTtcbiAgfVxuXG4gIGFuZCguLi5maWx0ZXJzOiBFbnRpdHlGaWx0ZXI8YW55LCBUPltdKTogQW5kRmlsdGVyPFQ+IHtcbiAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlcnMuY29uY2F0KC4uLihmaWx0ZXJzIHx8IFtdKS5maWx0ZXIoaXNOb3ROaWwpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEZpbHRlcigpOiBGaWx0ZXJGbjxUPltdIHtcbiAgICBjb25zdCBmbnMgPSAodGhpcy5maWx0ZXJzIHx8IFtdKVxuICAgICAgLm1hcCgoZikgPT4gKGYgPyBmLmFzRmlsdGVyRm4oKSA6IHVuZGVmaW5lZCkpXG4gICAgICAuZmlsdGVyKGlzTm90TmlsKTtcblxuICAgIGlmIChpc0VtcHR5QXJyYXkoZm5zKSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIChlbnRpdHk6IFQpID0+IGZucy5ldmVyeSgoZm4pID0+IGZuKGVudGl0eSkpXG4gICAgXTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW50aXR5RmlsdGVyVXRpbHMge1xuICBzdGF0aWMgaXNFbnRpdHlGaWx0ZXI8RiBleHRlbmRzIEVudGl0eUZpbHRlcjxGLCBhbnk+PihvYmo6IFBhcnRpYWw8Rj4pOiBvYmogaXMgRiB7XG4gICAgcmV0dXJuIChvYmogJiYgb2JqLmFzUG9kT2JqZWN0ICYmIG9iai5hc0ZpbHRlckZuICYmIHRydWUpIHx8IGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3Q8Rj4oc291cmNlOiBhbnksIGZpbHRlclR5cGU6IG5ldyAoKSA9PiBGKTogRiB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiBzb3VyY2U7XG4gICAgaWYgKGlzSW5zdGFuY2VPZihzb3VyY2UsIGZpbHRlclR5cGUpKSByZXR1cm4gc291cmNlIGFzIEY7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IGZpbHRlclR5cGUoKTtcbiAgICBpZiAoRW50aXR5RmlsdGVyVXRpbHMuaXNFbnRpdHlGaWx0ZXIodGFyZ2V0KSkge1xuICAgICAgdGFyZ2V0LmZyb21PYmplY3Qoc291cmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxufVxuIl19
@@ -17985,6 +17985,10 @@ class EntityFilter extends Entity {
17985
17985
  constructor(__typename) {
17986
17986
  super(__typename);
17987
17987
  }
17988
+ create() {
17989
+ const Ctor = this.constructor;
17990
+ return new Ctor();
17991
+ }
17988
17992
  /**
17989
17993
  * Clean a filter, before sending to the pod (e.g convert dates, remove internal properties, etc.)
17990
17994
  */
@@ -18001,6 +18005,11 @@ class EntityFilter extends Entity {
18001
18005
  asFilterFn() {
18002
18006
  // Base (this) filter functions
18003
18007
  let filterFns = this.buildFilter() || [];
18008
+ // NOT
18009
+ if (this.__not) {
18010
+ const notFn = this.__not.asFilterFn();
18011
+ filterFns.push((item) => !notFn(item));
18012
+ }
18004
18013
  // AND filters
18005
18014
  if (isNotEmptyArray(this.__and)) {
18006
18015
  filterFns.push(...this.__and.map((f) => f?.asFilterFn()).filter(isNotNil));
@@ -18014,11 +18023,6 @@ class EntityFilter extends Entity {
18014
18023
  ...(this.__or || []).map((f) => f?.asFilterFn())
18015
18024
  ].filter(isNotNil));
18016
18025
  }
18017
- // NOT
18018
- if (this.__not && result) {
18019
- const inner = result;
18020
- result = (entity) => !inner(entity);
18021
- }
18022
18026
  return result;
18023
18027
  }
18024
18028
  and(...filters) {
@@ -18033,22 +18037,22 @@ class EntityFilter extends Entity {
18033
18037
  }
18034
18038
  return this;
18035
18039
  }
18036
- not() {
18037
- this.__not = !(this.__not ?? false);
18040
+ not(filter) {
18041
+ this.__not = filter;
18038
18042
  return this;
18039
18043
  }
18040
18044
  asObject(opts) {
18041
18045
  const target = super.asObject(opts);
18042
18046
  // Serialize composition
18047
+ if (this.__not) {
18048
+ target.not = this.__not.asObject(opts);
18049
+ }
18043
18050
  if (isNotEmptyArray(this.__and)) {
18044
18051
  target.and = this.__and.map((f) => f.asObject(opts));
18045
18052
  }
18046
18053
  if (isNotEmptyArray(this.__or)) {
18047
18054
  target.or = this.__or.map((f) => f.asObject(opts));
18048
18055
  }
18049
- if (this.__not) {
18050
- target.not = true;
18051
- }
18052
18056
  // Sanitize
18053
18057
  delete target.__and;
18054
18058
  delete target.__or;
@@ -18060,11 +18064,10 @@ class EntityFilter extends Entity {
18060
18064
  // Deserialize composition using the same concrete filter type
18061
18065
  // AND
18062
18066
  if (Array.isArray(source?.and)) {
18063
- const Ctor = this.constructor;
18064
18067
  this.__and = source.and.map((s) => {
18065
18068
  if (!s)
18066
18069
  return undefined;
18067
- const f = new Ctor();
18070
+ const f = this.create();
18068
18071
  f.fromObject(s, opts);
18069
18072
  return f;
18070
18073
  }).filter(isNotNil);
@@ -18074,11 +18077,10 @@ class EntityFilter extends Entity {
18074
18077
  }
18075
18078
  // OR
18076
18079
  if (Array.isArray(source?.or)) {
18077
- const Ctor = this.constructor;
18078
18080
  this.__or = source.or.map((s) => {
18079
18081
  if (!s)
18080
18082
  return undefined;
18081
- const f = new Ctor();
18083
+ const f = this.create();
18082
18084
  f.fromObject(s, opts);
18083
18085
  return f;
18084
18086
  }).filter(isNotNil);
@@ -18087,7 +18089,11 @@ class EntityFilter extends Entity {
18087
18089
  this.__or = undefined;
18088
18090
  }
18089
18091
  // NOT
18090
- this.__not = !!source?.not;
18092
+ if (source?.not) {
18093
+ const f = this.create();
18094
+ f.fromObject(source.not, opts);
18095
+ this.__not = f;
18096
+ }
18091
18097
  }
18092
18098
  /* -- protected functions -- */
18093
18099
  buildFilter() {