@sumaris-net/ngx-components 18.14.4 → 18.14.6

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.
@@ -1,4 +1,5 @@
1
1
  import { RxState } from '@rx-angular/state';
2
+ import { map } from 'rxjs/operators';
2
3
  let production = false;
3
4
  export function enableRxStateProdMode() {
4
5
  production = true;
@@ -45,29 +46,21 @@ export function RxStateProperty(statePropertyName, projectValueReducer) {
45
46
  return function (target, key) {
46
47
  const finalStatePropertyName = statePropertyName || key;
47
48
  const stateVarName = target instanceof RxState ? null : target[STATE_VAR_NAME_KEY] || DEFAULT_STATE_VAR_NAME;
48
- // Create unique property names to avoid conflicts
49
- const privateValueKey = `__${key}_value`;
50
- const privateInitializedKey = `__${key}_initialized`;
51
49
  // Define property with getter/setter
52
50
  Object.defineProperty(target, key, {
53
51
  get: function () {
54
52
  const stateObject = stateVarName ? this[stateVarName] : this;
55
53
  DecoratorUtils.validateStateProperty(target, stateObject);
56
- if (!this[privateInitializedKey]) {
57
- this[privateValueKey] = stateObject.get(finalStatePropertyName);
58
- this[privateInitializedKey] = true;
59
- }
60
- return this[privateValueKey];
54
+ return stateObject.get(finalStatePropertyName);
61
55
  },
62
56
  set: function (value) {
63
57
  const stateObject = stateVarName ? this[stateVarName] : this;
64
58
  DecoratorUtils.validateStateProperty(target, stateObject);
65
- this[privateValueKey] = value;
66
59
  if (projectValueReducer) {
67
60
  stateObject.set(finalStatePropertyName, (state) => projectValueReducer(state, value));
68
61
  }
69
62
  else {
70
- stateObject.set(finalStatePropertyName, () => value);
63
+ stateObject.set({ [finalStatePropertyName]: value });
71
64
  }
72
65
  },
73
66
  enumerable: true,
@@ -93,25 +86,25 @@ export function RxStateSelect(statePropertyName, opts) {
93
86
  // Determine state object
94
87
  const stateVarName = target instanceof RxState ? null : target[STATE_VAR_NAME_KEY] || opts?.stateName || DEFAULT_STATE_VAR_NAME;
95
88
  // Create cache property name
96
- const cachePropertyName = `__${key}_cache`;
89
+ const internalPropertyName = `__${key}`;
97
90
  // Define property with getter only
98
91
  Object.defineProperty(target, key, {
99
92
  get: function () {
100
93
  const stateObject = stateVarName ? this[stateVarName] : this;
101
94
  DecoratorUtils.validateStateProperty(target, stateObject);
102
- if (!this[cachePropertyName]) {
95
+ if (!this[internalPropertyName]) {
103
96
  if (finalStatePropertyName === '$') {
104
- this[cachePropertyName] = stateObject.$;
97
+ this[internalPropertyName] = stateObject.$;
105
98
  }
106
99
  else if (finalStatePropertyName.includes('.')) {
107
100
  const path = finalStatePropertyName.split('.');
108
- this[cachePropertyName] = stateObject.select(...path);
101
+ this[internalPropertyName] = stateObject.select(...path);
109
102
  }
110
103
  else {
111
- this[cachePropertyName] = stateObject.select(finalStatePropertyName);
104
+ this[internalPropertyName] = stateObject.select(finalStatePropertyName);
112
105
  }
113
106
  }
114
- return this[cachePropertyName];
107
+ return this[internalPropertyName];
115
108
  },
116
109
  enumerable: true,
117
110
  configurable: false,
@@ -141,7 +134,6 @@ export function RxStateComputed(dependencies, computeFn, opts) {
141
134
  if (!this[cachePropertyName]) {
142
135
  let observable = stateObject.select(dependencies, opts?.keyCompareMap);
143
136
  if (computeFn) {
144
- const { map } = require('rxjs/operators');
145
137
  observable = observable.pipe(map(computeFn));
146
138
  }
147
139
  this[cachePropertyName] = observable;
@@ -157,4 +149,4 @@ export function RxStateComputed(dependencies, computeFn, opts) {
157
149
  }
158
150
  };
159
151
  }
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RhdGUuZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3J4LXN0YXRlL3J4LXN0YXRlLmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUF1QixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFDdkIsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLENBQUM7QUFPRCx5QkFBeUI7QUFDekIsTUFBTSxjQUFjO0lBQ2xCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBVztRQUMzQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxXQUFtQjtRQUN6RCxPQUFPLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQWMsRUFBRSxXQUFtQjtRQUMzRCxPQUFPLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLE1BQVcsRUFBRSxXQUFnQjtRQUN4RCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFN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cEIsQ0FBQyxDQUFDO1FBRUgsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUNYLHFCQUFxQixNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxHQUFhLHFCQUFxQixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQzlJLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb2plY3RWYWx1ZVJlZHVjZXIsIFJ4U3RhdGUgfSBmcm9tICdAcngtYW5ndWxhci9zdGF0ZSc7XG5cbmxldCBwcm9kdWN0aW9uID0gZmFsc2U7XG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlUnhTdGF0ZVByb2RNb2RlKCkge1xuICBwcm9kdWN0aW9uID0gdHJ1ZTtcbn1cblxuZGVjbGFyZSB0eXBlIENvbnN0cnVjdG9yPFQgPSBhbnk+ID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcblxudHlwZSBPYnNlcnZhYmxlUHJvcGVydHlEZWNvcmF0b3I8VD4gPSA8SyBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IEspID0+IHZvaWQ7XG50eXBlIFN0YXRlUHJvcGVydHlEZWNvcmF0b3I8VD4gPSA8SyBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IEspID0+IHZvaWQ7XG5cbi8vIFV0aWxpdHkgZm9yIGRlY29yYXRvcnNcbmNsYXNzIERlY29yYXRvclV0aWxzIHtcbiAgc3RhdGljIGNhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTWV0aG9kTmFtZShwcmVmaXg6IHN0cmluZywgcHJvcGVydHlLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke3RoaXMuY2FwaXRhbGl6ZShwcm9wZXJ0eUtleSl9YDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVQcm9wZXJ0eU5hbWUocHJlZml4OiBzdHJpbmcsIHByb3BlcnR5S2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHt0aGlzLmNhcGl0YWxpemUocHJvcGVydHlLZXkpfWA7XG4gIH1cblxuICBzdGF0aWMgdmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldDogYW55LCBzdGF0ZU9iamVjdDogYW55KTogdm9pZCB7XG4gICAgaWYgKCFwcm9kdWN0aW9uICYmICFzdGF0ZU9iamVjdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHN0YXRlISBQbGVhc2UgYWRkIGEgUnhTdGF0ZSBpbiBjbGFzczogJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgU1RBVEVfVkFSX05BTUVfS0VZID0gJ19fc3RhdGVOYW1lJztcbmNvbnN0IERFRkFVTFRfU1RBVEVfVkFSX05BTUUgPSAnX3N0YXRlJztcblxuLyoqXG4gKiBEZWNvcmF0b3IgdG8gcmVnaXN0ZXIgdGhlIFJ4U3RhdGUgcHJvcGVydHkgaW4gYSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVSZWdpc3RlcigpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBDb25zdHJ1Y3Rvcjxhbnk+LCBrZXk6IHN0cmluZykge1xuICAgIGlmICh0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZGVmaW5lIG1vcmUgdGhhbiBvbmUgQFJ4U3RhdGVSZWdpc3RlcigpIGluIGNsYXNzIGhpZXJhcmNoeS4gRm91bmQ6ICR7dGFyZ2V0W1NUQVRFX1ZBUl9OQU1FX0tFWV19IGFuZCAke2tleX1gKTtcbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBTVEFURV9WQVJfTkFNRV9LRVksIHtcbiAgICAgIHZhbHVlOiBrZXksXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVjb3JhdG9yIGZvciBSeFN0YXRlIHByb3BlcnRpZXMgd2l0aCBnZXR0ZXIvc2V0dGVyIGFjY2Vzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVByb3BlcnR5PFQgZXh0ZW5kcyBvYmplY3QgPSBhbnksIEsgZXh0ZW5kcyBrZXlvZiBUID0gYW55LCBWIGV4dGVuZHMgVFtLXSA9IGFueT4oXG4gIHN0YXRlUHJvcGVydHlOYW1lPzogc3RyaW5nIHwgSyxcbiAgcHJvamVjdFZhbHVlUmVkdWNlcj86IFByb2plY3RWYWx1ZVJlZHVjZXI8VCwgSywgVj5cbik6IFN0YXRlUHJvcGVydHlEZWNvcmF0b3I8Vj4ge1xuICByZXR1cm4gZnVuY3Rpb24gPFAgZXh0ZW5kcyBQcm9wZXJ0eUtleT4odGFyZ2V0OiBhbnksIGtleTogUCkge1xuICAgIGNvbnN0IGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgPSAoc3RhdGVQcm9wZXJ0eU5hbWUgYXMgc3RyaW5nKSB8fCAoa2V5IGFzIHN0cmluZyk7XG4gICAgY29uc3Qgc3RhdGVWYXJOYW1lID0gdGFyZ2V0IGluc3RhbmNlb2YgUnhTdGF0ZSA/IG51bGwgOiB0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuXG4gICAgLy8gQ3JlYXRlIHVuaXF1ZSBwcm9wZXJ0eSBuYW1lcyB0byBhdm9pZCBjb25mbGljdHNcbiAgICBjb25zdCBwcml2YXRlVmFsdWVLZXkgPSBgX18ke2tleSBhcyBzdHJpbmd9X3ZhbHVlYDtcbiAgICBjb25zdCBwcml2YXRlSW5pdGlhbGl6ZWRLZXkgPSBgX18ke2tleSBhcyBzdHJpbmd9X2luaXRpYWxpemVkYDtcblxuICAgIC8vIERlZmluZSBwcm9wZXJ0eSB3aXRoIGdldHRlci9zZXR0ZXJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzdGF0ZU9iamVjdDogUnhTdGF0ZTxUPiA9IHN0YXRlVmFyTmFtZSA/IHRoaXNbc3RhdGVWYXJOYW1lXSA6IHRoaXM7XG4gICAgICAgIERlY29yYXRvclV0aWxzLnZhbGlkYXRlU3RhdGVQcm9wZXJ0eSh0YXJnZXQsIHN0YXRlT2JqZWN0KTtcblxuICAgICAgICBpZiAoIXRoaXNbcHJpdmF0ZUluaXRpYWxpemVkS2V5XSkge1xuICAgICAgICAgIHRoaXNbcHJpdmF0ZVZhbHVlS2V5XSA9IHN0YXRlT2JqZWN0LmdldChmaW5hbFN0YXRlUHJvcGVydHlOYW1lIGFzIGtleW9mIFQpO1xuICAgICAgICAgIHRoaXNbcHJpdmF0ZUluaXRpYWxpemVkS2V5XSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpc1twcml2YXRlVmFsdWVLZXldIGFzIFY7XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWU6IFYpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmplY3Q6IFJ4U3RhdGU8VD4gPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgICAgICBEZWNvcmF0b3JVdGlscy52YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0LCBzdGF0ZU9iamVjdCk7XG5cbiAgICAgICAgdGhpc1twcml2YXRlVmFsdWVLZXldID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHByb2plY3RWYWx1ZVJlZHVjZXIpIHtcbiAgICAgICAgICBzdGF0ZU9iamVjdC5zZXQoZmluYWxTdGF0ZVByb3BlcnR5TmFtZSBhcyBrZXlvZiBULCAoc3RhdGU6IFQpID0+IHByb2plY3RWYWx1ZVJlZHVjZXIoc3RhdGUsIHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGVPYmplY3Quc2V0KGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgYXMga2V5b2YgVCwgKCkgPT4gdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIERldmVsb3BtZW50IGxvZ2dpbmdcbiAgICBpZiAoIXByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtSeFN0YXRlUHJvcGVydHldICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IC0+IHN0YXRlLiR7ZmluYWxTdGF0ZVByb3BlcnR5TmFtZX1gKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogRGVjb3JhdG9yIGZvciBSeFN0YXRlIG9ic2VydmFibGUgc2VsZWN0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSeFN0YXRlU2VsZWN0PFQgPSBhbnksIFIgPSBUW2tleW9mIFRdPihcbiAgc3RhdGVQcm9wZXJ0eU5hbWU/OiBzdHJpbmcgfCBrZXlvZiBUIHwgJyQnLFxuICBvcHRzPzoge1xuICAgIHN0YXRlTmFtZT86IHN0cmluZztcbiAgfVxuKTogT2JzZXJ2YWJsZVByb3BlcnR5RGVjb3JhdG9yPE9ic2VydmFibGU8Uj4+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxQIGV4dGVuZHMgUHJvcGVydHlLZXk+KHRhcmdldDogYW55LCBrZXk6IFApIHtcbiAgICAvLyBDb252ZW50aW9uIGNoZWNrXG4gICAgaWYgKCFwcm9kdWN0aW9uICYmICEoa2V5IGFzIHN0cmluZykuZW5kc1dpdGgoJyQnKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW1J4U3RhdGVTZWxlY3RdIENvbnZlbnRpb246IFByb3BlcnR5ICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IHNob3VsZCBlbmQgd2l0aCAnJCcgdG8gaW5kaWNhdGUgaXQncyBhbiBPYnNlcnZhYmxlYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgc3RhdGUgcHJvcGVydHkgbmFtZVxuICAgIGNvbnN0IGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgPSAoc3RhdGVQcm9wZXJ0eU5hbWUgYXMgc3RyaW5nKSB8fCAoa2V5IGFzIHN0cmluZykucmVwbGFjZSgvXFwkJC8sICcnKTtcblxuICAgIC8vIERldGVybWluZSBzdGF0ZSBvYmplY3RcbiAgICBjb25zdCBzdGF0ZVZhck5hbWUgPSB0YXJnZXQgaW5zdGFuY2VvZiBSeFN0YXRlID8gbnVsbCA6IHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldIHx8IG9wdHM/LnN0YXRlTmFtZSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuXG4gICAgLy8gQ3JlYXRlIGNhY2hlIHByb3BlcnR5IG5hbWVcbiAgICBjb25zdCBjYWNoZVByb3BlcnR5TmFtZSA9IGBfXyR7a2V5IGFzIHN0cmluZ31fY2FjaGVgO1xuXG4gICAgLy8gRGVmaW5lIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9ubHlcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzdGF0ZU9iamVjdCA9IHN0YXRlVmFyTmFtZSA/IHRoaXNbc3RhdGVWYXJOYW1lXSA6IHRoaXM7XG4gICAgICAgIERlY29yYXRvclV0aWxzLnZhbGlkYXRlU3RhdGVQcm9wZXJ0eSh0YXJnZXQsIHN0YXRlT2JqZWN0KTtcblxuICAgICAgICBpZiAoIXRoaXNbY2FjaGVQcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgICAgaWYgKGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgPT09ICckJykge1xuICAgICAgICAgICAgdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0gPSBzdGF0ZU9iamVjdC4kO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmluYWxTdGF0ZVByb3BlcnR5TmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gZmluYWxTdGF0ZVByb3BlcnR5TmFtZS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0gPSBzdGF0ZU9iamVjdC5zZWxlY3QoLi4ucGF0aCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXNbY2FjaGVQcm9wZXJ0eU5hbWVdID0gc3RhdGVPYmplY3Quc2VsZWN0KGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzW2NhY2hlUHJvcGVydHlOYW1lXTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIC8vIERldmVsb3BtZW50IGxvZ2dpbmdcbiAgICBpZiAoIXByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtSeFN0YXRlU2VsZWN0XSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSAtPiBzdGF0ZS5zZWxlY3QoJyR7ZmluYWxTdGF0ZVByb3BlcnR5TmFtZX0nKWApO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGRlY29yYXRvciB0byBjcmVhdGUgY29tcHV0ZWQgb2JzZXJ2YWJsZXMgZnJvbSBzdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZUNvbXB1dGVkPFQgPSBhbnksIEsgZXh0ZW5kcyBrZXlvZiBUID0gYW55LCBSID0gYW55PihcbiAgZGVwZW5kZW5jaWVzOiBLW10sXG4gIGNvbXB1dGVGbj86IChzbGljZTogUGljazxULCBLPikgPT4gUixcbiAgb3B0cz86IHtcbiAgICBzdGF0ZU5hbWU/OiBzdHJpbmc7XG4gICAga2V5Q29tcGFyZU1hcD86IGFueTtcbiAgfVxuKTogT2JzZXJ2YWJsZVByb3BlcnR5RGVjb3JhdG9yPE9ic2VydmFibGU8Uj4+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxQIGV4dGVuZHMgUHJvcGVydHlLZXk+KHRhcmdldDogYW55LCBrZXk6IFApIHtcbiAgICAvLyBDb252ZW50aW9uIGNoZWNrXG4gICAgaWYgKCFwcm9kdWN0aW9uICYmICEoa2V5IGFzIHN0cmluZykuZW5kc1dpdGgoJyQnKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW1J4U3RhdGVDb21wdXRlZF0gQ29udmVudGlvbjogUHJvcGVydHkgJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9LiR7a2V5IGFzIHN0cmluZ30gc2hvdWxkIGVuZCB3aXRoICckJyB0byBpbmRpY2F0ZSBpdCdzIGFuIE9ic2VydmFibGVgXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXRlVmFyTmFtZSA9IHRhcmdldCBpbnN0YW5jZW9mIFJ4U3RhdGUgPyBudWxsIDogdGFyZ2V0W1NUQVRFX1ZBUl9OQU1FX0tFWV0gfHwgb3B0cz8uc3RhdGVOYW1lIHx8IERFRkFVTFRfU1RBVEVfVkFSX05BTUU7XG4gICAgY29uc3QgY2FjaGVQcm9wZXJ0eU5hbWUgPSBgX18ke2tleSBhcyBzdHJpbmd9X2NhY2hlYDtcblxuICAgIC8vIERlZmluZSBwcm9wZXJ0eSB3aXRoIGdldHRlciBvbmx5XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmplY3QgPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgICAgICBEZWNvcmF0b3JVdGlscy52YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0LCBzdGF0ZU9iamVjdCk7XG5cbiAgICAgICAgaWYgKCF0aGlzW2NhY2hlUHJvcGVydHlOYW1lXSkge1xuICAgICAgICAgIGxldCBvYnNlcnZhYmxlID0gc3RhdGVPYmplY3Quc2VsZWN0KGRlcGVuZGVuY2llcywgb3B0cz8ua2V5Q29tcGFyZU1hcCk7XG5cbiAgICAgICAgICBpZiAoY29tcHV0ZUZuKSB7XG4gICAgICAgICAgICBjb25zdCB7IG1hcCB9ID0gcmVxdWlyZSgncnhqcy9vcGVyYXRvcnMnKTtcbiAgICAgICAgICAgIG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUobWFwKGNvbXB1dGVGbikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXNbY2FjaGVQcm9wZXJ0eU5hbWVdID0gb2JzZXJ2YWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzW2NhY2hlUHJvcGVydHlOYW1lXTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIC8vIERldmVsb3BtZW50IGxvZ2dpbmdcbiAgICBpZiAoIXByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICAgIGBbUnhTdGF0ZUNvbXB1dGVkXSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSAtPiBzdGF0ZS5zZWxlY3QoWyR7ZGVwZW5kZW5jaWVzLm1hcCgoZCkgPT4gYCcke2QgYXMgc3RyaW5nfSdgKS5qb2luKCcsICcpfV0pYFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RhdGUuZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3J4LXN0YXRlL3J4LXN0YXRlLmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUF1QixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBRXZCLE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUNwQixDQUFDO0FBT0QseUJBQXlCO0FBQ3pCLE1BQU0sY0FBYztJQUNsQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVc7UUFDM0IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDekQsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDM0QsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxNQUFXLEVBQUUsV0FBZ0I7UUFDeEQsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENB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IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9qZWN0VmFsdWVSZWR1Y2VyLCBSeFN0YXRlIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvc3RhdGUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5sZXQgcHJvZHVjdGlvbiA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlUnhTdGF0ZVByb2RNb2RlKCkge1xuICBwcm9kdWN0aW9uID0gdHJ1ZTtcbn1cblxuZGVjbGFyZSB0eXBlIENvbnN0cnVjdG9yPFQgPSBhbnk+ID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcblxudHlwZSBPYnNlcnZhYmxlUHJvcGVydHlEZWNvcmF0b3I8VD4gPSA8SyBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IEspID0+IHZvaWQ7XG50eXBlIFN0YXRlUHJvcGVydHlEZWNvcmF0b3I8VD4gPSA8SyBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IEspID0+IHZvaWQ7XG5cbi8vIFV0aWxpdHkgZm9yIGRlY29yYXRvcnNcbmNsYXNzIERlY29yYXRvclV0aWxzIHtcbiAgc3RhdGljIGNhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTWV0aG9kTmFtZShwcmVmaXg6IHN0cmluZywgcHJvcGVydHlLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke3RoaXMuY2FwaXRhbGl6ZShwcm9wZXJ0eUtleSl9YDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVQcm9wZXJ0eU5hbWUocHJlZml4OiBzdHJpbmcsIHByb3BlcnR5S2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHt0aGlzLmNhcGl0YWxpemUocHJvcGVydHlLZXkpfWA7XG4gIH1cblxuICBzdGF0aWMgdmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldDogYW55LCBzdGF0ZU9iamVjdDogYW55KTogdm9pZCB7XG4gICAgaWYgKCFwcm9kdWN0aW9uICYmICFzdGF0ZU9iamVjdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHN0YXRlISBQbGVhc2UgYWRkIGEgUnhTdGF0ZSBpbiBjbGFzczogJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgU1RBVEVfVkFSX05BTUVfS0VZID0gJ19fc3RhdGVOYW1lJztcbmNvbnN0IERFRkFVTFRfU1RBVEVfVkFSX05BTUUgPSAnX3N0YXRlJztcblxuLyoqXG4gKiBEZWNvcmF0b3IgdG8gcmVnaXN0ZXIgdGhlIFJ4U3RhdGUgcHJvcGVydHkgaW4gYSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVSZWdpc3RlcigpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBDb25zdHJ1Y3Rvcjxhbnk+LCBrZXk6IHN0cmluZykge1xuICAgIGlmICh0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZGVmaW5lIG1vcmUgdGhhbiBvbmUgQFJ4U3RhdGVSZWdpc3RlcigpIGluIGNsYXNzIGhpZXJhcmNoeS4gRm91bmQ6ICR7dGFyZ2V0W1NUQVRFX1ZBUl9OQU1FX0tFWV19IGFuZCAke2tleX1gKTtcbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBTVEFURV9WQVJfTkFNRV9LRVksIHtcbiAgICAgIHZhbHVlOiBrZXksXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVjb3JhdG9yIGZvciBSeFN0YXRlIHByb3BlcnRpZXMgd2l0aCBnZXR0ZXIvc2V0dGVyIGFjY2Vzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVByb3BlcnR5PFQgZXh0ZW5kcyBvYmplY3QgPSBhbnksIEsgZXh0ZW5kcyBrZXlvZiBUID0gYW55LCBWIGV4dGVuZHMgVFtLXSA9IGFueT4oXG4gIHN0YXRlUHJvcGVydHlOYW1lPzogc3RyaW5nIHwgSyxcbiAgcHJvamVjdFZhbHVlUmVkdWNlcj86IFByb2plY3RWYWx1ZVJlZHVjZXI8VCwgSywgVj5cbik6IFN0YXRlUHJvcGVydHlEZWNvcmF0b3I8Vj4ge1xuICByZXR1cm4gZnVuY3Rpb24gPFAgZXh0ZW5kcyBQcm9wZXJ0eUtleT4odGFyZ2V0OiBhbnksIGtleTogUCkge1xuICAgIGNvbnN0IGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgPSAoc3RhdGVQcm9wZXJ0eU5hbWUgYXMgc3RyaW5nKSB8fCAoa2V5IGFzIHN0cmluZyk7XG4gICAgY29uc3Qgc3RhdGVWYXJOYW1lID0gdGFyZ2V0IGluc3RhbmNlb2YgUnhTdGF0ZSA/IG51bGwgOiB0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuXG4gICAgLy8gRGVmaW5lIHByb3BlcnR5IHdpdGggZ2V0dGVyL3NldHRlclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqZWN0OiBSeFN0YXRlPFQ+ID0gc3RhdGVWYXJOYW1lID8gdGhpc1tzdGF0ZVZhck5hbWVdIDogdGhpcztcbiAgICAgICAgRGVjb3JhdG9yVXRpbHMudmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldCwgc3RhdGVPYmplY3QpO1xuICAgICAgICByZXR1cm4gc3RhdGVPYmplY3QuZ2V0KGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgYXMga2V5b2YgVCk7XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWU6IFYpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmplY3Q6IFJ4U3RhdGU8VD4gPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgICAgICBEZWNvcmF0b3JVdGlscy52YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0LCBzdGF0ZU9iamVjdCk7XG4gICAgICAgIGlmIChwcm9qZWN0VmFsdWVSZWR1Y2VyKSB7XG4gICAgICAgICAgc3RhdGVPYmplY3Quc2V0KGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUgYXMga2V5b2YgVCwgKHN0YXRlOiBUKSA9PiBwcm9qZWN0VmFsdWVSZWR1Y2VyKHN0YXRlLCB2YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlT2JqZWN0LnNldCg8UGFydGlhbDxUPj57IFtmaW5hbFN0YXRlUHJvcGVydHlOYW1lIGFzIGtleW9mIFRdOiB2YWx1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBEZXZlbG9wbWVudCBsb2dnaW5nXG4gICAgaWYgKCFwcm9kdWN0aW9uKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBbUnhTdGF0ZVByb3BlcnR5XSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSAtPiBzdGF0ZS4ke2ZpbmFsU3RhdGVQcm9wZXJ0eU5hbWV9YCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIERlY29yYXRvciBmb3IgUnhTdGF0ZSBvYnNlcnZhYmxlIHNlbGVjdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVNlbGVjdDxUID0gYW55LCBSID0gVFtrZXlvZiBUXT4oXG4gIHN0YXRlUHJvcGVydHlOYW1lPzogc3RyaW5nIHwga2V5b2YgVCB8ICckJyxcbiAgb3B0cz86IHtcbiAgICBzdGF0ZU5hbWU/OiBzdHJpbmc7XG4gIH1cbik6IE9ic2VydmFibGVQcm9wZXJ0eURlY29yYXRvcjxPYnNlcnZhYmxlPFI+PiB7XG4gIHJldHVybiBmdW5jdGlvbiA8UCBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwga2V5OiBQKSB7XG4gICAgLy8gQ29udmVudGlvbiBjaGVja1xuICAgIGlmICghcHJvZHVjdGlvbiAmJiAhKGtleSBhcyBzdHJpbmcpLmVuZHNXaXRoKCckJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtSeFN0YXRlU2VsZWN0XSBDb252ZW50aW9uOiBQcm9wZXJ0eSAke3RhcmdldC5jb25zdHJ1Y3Rvcj8ubmFtZX0uJHtrZXkgYXMgc3RyaW5nfSBzaG91bGQgZW5kIHdpdGggJyQnIHRvIGluZGljYXRlIGl0J3MgYW4gT2JzZXJ2YWJsZWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIHN0YXRlIHByb3BlcnR5IG5hbWVcbiAgICBjb25zdCBmaW5hbFN0YXRlUHJvcGVydHlOYW1lID0gKHN0YXRlUHJvcGVydHlOYW1lIGFzIHN0cmluZykgfHwgKGtleSBhcyBzdHJpbmcpLnJlcGxhY2UoL1xcJCQvLCAnJyk7XG5cbiAgICAvLyBEZXRlcm1pbmUgc3RhdGUgb2JqZWN0XG4gICAgY29uc3Qgc3RhdGVWYXJOYW1lID0gdGFyZ2V0IGluc3RhbmNlb2YgUnhTdGF0ZSA/IG51bGwgOiB0YXJnZXRbU1RBVEVfVkFSX05BTUVfS0VZXSB8fCBvcHRzPy5zdGF0ZU5hbWUgfHwgREVGQVVMVF9TVEFURV9WQVJfTkFNRTtcblxuICAgIC8vIENyZWF0ZSBjYWNoZSBwcm9wZXJ0eSBuYW1lXG4gICAgY29uc3QgaW50ZXJuYWxQcm9wZXJ0eU5hbWUgPSBgX18ke2tleSBhcyBzdHJpbmd9YDtcblxuICAgIC8vIERlZmluZSBwcm9wZXJ0eSB3aXRoIGdldHRlciBvbmx5XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVPYmplY3QgPSBzdGF0ZVZhck5hbWUgPyB0aGlzW3N0YXRlVmFyTmFtZV0gOiB0aGlzO1xuICAgICAgICBEZWNvcmF0b3JVdGlscy52YWxpZGF0ZVN0YXRlUHJvcGVydHkodGFyZ2V0LCBzdGF0ZU9iamVjdCk7XG5cbiAgICAgICAgaWYgKCF0aGlzW2ludGVybmFsUHJvcGVydHlOYW1lXSkge1xuICAgICAgICAgIGlmIChmaW5hbFN0YXRlUHJvcGVydHlOYW1lID09PSAnJCcpIHtcbiAgICAgICAgICAgIHRoaXNbaW50ZXJuYWxQcm9wZXJ0eU5hbWVdID0gc3RhdGVPYmplY3QuJDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGZpbmFsU3RhdGVQcm9wZXJ0eU5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIHRoaXNbaW50ZXJuYWxQcm9wZXJ0eU5hbWVdID0gc3RhdGVPYmplY3Quc2VsZWN0KC4uLnBhdGgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzW2ludGVybmFsUHJvcGVydHlOYW1lXSA9IHN0YXRlT2JqZWN0LnNlbGVjdChmaW5hbFN0YXRlUHJvcGVydHlOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpc1tpbnRlcm5hbFByb3BlcnR5TmFtZV07XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBEZXZlbG9wbWVudCBsb2dnaW5nXG4gICAgaWYgKCFwcm9kdWN0aW9uKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBbUnhTdGF0ZVNlbGVjdF0gJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9LiR7a2V5IGFzIHN0cmluZ30gLT4gc3RhdGUuc2VsZWN0KCcke2ZpbmFsU3RhdGVQcm9wZXJ0eU5hbWV9JylgKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVXRpbGl0eSBkZWNvcmF0b3IgdG8gY3JlYXRlIGNvbXB1dGVkIG9ic2VydmFibGVzIGZyb20gc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVDb21wdXRlZDxUID0gYW55LCBLIGV4dGVuZHMga2V5b2YgVCA9IGFueSwgUiA9IGFueT4oXG4gIGRlcGVuZGVuY2llczogS1tdLFxuICBjb21wdXRlRm4/OiAoc2xpY2U6IFBpY2s8VCwgSz4pID0+IFIsXG4gIG9wdHM/OiB7XG4gICAgc3RhdGVOYW1lPzogc3RyaW5nO1xuICAgIGtleUNvbXBhcmVNYXA/OiBhbnk7XG4gIH1cbik6IE9ic2VydmFibGVQcm9wZXJ0eURlY29yYXRvcjxPYnNlcnZhYmxlPFI+PiB7XG4gIHJldHVybiBmdW5jdGlvbiA8UCBleHRlbmRzIFByb3BlcnR5S2V5Pih0YXJnZXQ6IGFueSwga2V5OiBQKSB7XG4gICAgLy8gQ29udmVudGlvbiBjaGVja1xuICAgIGlmICghcHJvZHVjdGlvbiAmJiAhKGtleSBhcyBzdHJpbmcpLmVuZHNXaXRoKCckJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtSeFN0YXRlQ29tcHV0ZWRdIENvbnZlbnRpb246IFByb3BlcnR5ICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IHNob3VsZCBlbmQgd2l0aCAnJCcgdG8gaW5kaWNhdGUgaXQncyBhbiBPYnNlcnZhYmxlYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZVZhck5hbWUgPSB0YXJnZXQgaW5zdGFuY2VvZiBSeFN0YXRlID8gbnVsbCA6IHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldIHx8IG9wdHM/LnN0YXRlTmFtZSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuICAgIGNvbnN0IGNhY2hlUHJvcGVydHlOYW1lID0gYF9fJHtrZXkgYXMgc3RyaW5nfV9jYWNoZWA7XG5cbiAgICAvLyBEZWZpbmUgcHJvcGVydHkgd2l0aCBnZXR0ZXIgb25seVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlT2JqZWN0ID0gc3RhdGVWYXJOYW1lID8gdGhpc1tzdGF0ZVZhck5hbWVdIDogdGhpcztcbiAgICAgICAgRGVjb3JhdG9yVXRpbHMudmFsaWRhdGVTdGF0ZVByb3BlcnR5KHRhcmdldCwgc3RhdGVPYmplY3QpO1xuXG4gICAgICAgIGlmICghdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZSA9IHN0YXRlT2JqZWN0LnNlbGVjdChkZXBlbmRlbmNpZXMsIG9wdHM/LmtleUNvbXBhcmVNYXApO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVGbikge1xuICAgICAgICAgICAgb2JzZXJ2YWJsZSA9IG9ic2VydmFibGUucGlwZShtYXAoY29tcHV0ZUZuKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpc1tjYWNoZVByb3BlcnR5TmFtZV0gPSBvYnNlcnZhYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXNbY2FjaGVQcm9wZXJ0eU5hbWVdO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gRGV2ZWxvcG1lbnQgbG9nZ2luZ1xuICAgIGlmICghcHJvZHVjdGlvbikge1xuICAgICAgY29uc29sZS5kZWJ1ZyhcbiAgICAgICAgYFtSeFN0YXRlQ29tcHV0ZWRdICR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfS4ke2tleSBhcyBzdHJpbmd9IC0+IHN0YXRlLnNlbGVjdChbJHtkZXBlbmRlbmNpZXMubWFwKChkKSA9PiBgJyR7ZCBhcyBzdHJpbmd9J2ApLmpvaW4oJywgJyl9XSlgXG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
@@ -26396,29 +26396,21 @@ function RxStateProperty(statePropertyName, projectValueReducer) {
26396
26396
  return function (target, key) {
26397
26397
  const finalStatePropertyName = statePropertyName || key;
26398
26398
  const stateVarName = target instanceof RxState ? null : target[STATE_VAR_NAME_KEY] || DEFAULT_STATE_VAR_NAME;
26399
- // Create unique property names to avoid conflicts
26400
- const privateValueKey = `__${key}_value`;
26401
- const privateInitializedKey = `__${key}_initialized`;
26402
26399
  // Define property with getter/setter
26403
26400
  Object.defineProperty(target, key, {
26404
26401
  get: function () {
26405
26402
  const stateObject = stateVarName ? this[stateVarName] : this;
26406
26403
  DecoratorUtils.validateStateProperty(target, stateObject);
26407
- if (!this[privateInitializedKey]) {
26408
- this[privateValueKey] = stateObject.get(finalStatePropertyName);
26409
- this[privateInitializedKey] = true;
26410
- }
26411
- return this[privateValueKey];
26404
+ return stateObject.get(finalStatePropertyName);
26412
26405
  },
26413
26406
  set: function (value) {
26414
26407
  const stateObject = stateVarName ? this[stateVarName] : this;
26415
26408
  DecoratorUtils.validateStateProperty(target, stateObject);
26416
- this[privateValueKey] = value;
26417
26409
  if (projectValueReducer) {
26418
26410
  stateObject.set(finalStatePropertyName, (state) => projectValueReducer(state, value));
26419
26411
  }
26420
26412
  else {
26421
- stateObject.set(finalStatePropertyName, () => value);
26413
+ stateObject.set({ [finalStatePropertyName]: value });
26422
26414
  }
26423
26415
  },
26424
26416
  enumerable: true,
@@ -26444,25 +26436,25 @@ function RxStateSelect(statePropertyName, opts) {
26444
26436
  // Determine state object
26445
26437
  const stateVarName = target instanceof RxState ? null : target[STATE_VAR_NAME_KEY] || opts?.stateName || DEFAULT_STATE_VAR_NAME;
26446
26438
  // Create cache property name
26447
- const cachePropertyName = `__${key}_cache`;
26439
+ const internalPropertyName = `__${key}`;
26448
26440
  // Define property with getter only
26449
26441
  Object.defineProperty(target, key, {
26450
26442
  get: function () {
26451
26443
  const stateObject = stateVarName ? this[stateVarName] : this;
26452
26444
  DecoratorUtils.validateStateProperty(target, stateObject);
26453
- if (!this[cachePropertyName]) {
26445
+ if (!this[internalPropertyName]) {
26454
26446
  if (finalStatePropertyName === '$') {
26455
- this[cachePropertyName] = stateObject.$;
26447
+ this[internalPropertyName] = stateObject.$;
26456
26448
  }
26457
26449
  else if (finalStatePropertyName.includes('.')) {
26458
26450
  const path = finalStatePropertyName.split('.');
26459
- this[cachePropertyName] = stateObject.select(...path);
26451
+ this[internalPropertyName] = stateObject.select(...path);
26460
26452
  }
26461
26453
  else {
26462
- this[cachePropertyName] = stateObject.select(finalStatePropertyName);
26454
+ this[internalPropertyName] = stateObject.select(finalStatePropertyName);
26463
26455
  }
26464
26456
  }
26465
- return this[cachePropertyName];
26457
+ return this[internalPropertyName];
26466
26458
  },
26467
26459
  enumerable: true,
26468
26460
  configurable: false,
@@ -26492,7 +26484,6 @@ function RxStateComputed(dependencies, computeFn, opts) {
26492
26484
  if (!this[cachePropertyName]) {
26493
26485
  let observable = stateObject.select(dependencies, opts?.keyCompareMap);
26494
26486
  if (computeFn) {
26495
- const { map } = require('rxjs/operators');
26496
26487
  observable = observable.pipe(map(computeFn));
26497
26488
  }
26498
26489
  this[cachePropertyName] = observable;