@o3r/configuration 12.0.0-next.3 → 12.0.0-next.5

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,13 +19,6 @@ export interface Identifiable {
19
19
  */
20
20
  id: string;
21
21
  }
22
- /**
23
- * Get the configuration name
24
- * @deprecated use {@link computeItemIdentifier} from @o3r/core. Will be removed in v12
25
- * @param componentName Name of the component to get the configuration
26
- * @param libraryName Name of the library the component is coming from
27
- */
28
- export declare function computeConfigurationName(componentName: string, libraryName?: string): string;
29
22
  /**
30
23
  * Get the component and library's names based on the configuration name
31
24
  * @param configurationName Name of the component as found in the store
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/core/configuration.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EACX,MAAM,MAAM,CAAC;AAOd;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,aAAa,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,UAEnF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAQ/I;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC,IACzE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,UAAU,UAAU,CAAC,CAAC,GAAG,SAAS,CAAE,KAAG,UAAU,CAAC,CAAC,CAAC,CAQjF"}
1
+ {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/core/configuration.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EACX,MAAM,MAAM,CAAC;AAOd;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,aAAa,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAQ/I;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC,IACzE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,UAAU,UAAU,CAAC,CAAC,GAAG,SAAS,CAAE,KAAG,UAAU,CAAC,CAAC,CAAC,CAQjF"}
@@ -55,12 +55,6 @@ export declare class ConfigurationDevtoolsConsoleService implements DevtoolsServ
55
55
  * Copy the whole configuration to the clipboard
56
56
  */
57
57
  copyConfigurationToClipboard(): Promise<void>;
58
- /**
59
- * Load a json configuration
60
- * @param configurations configurations to load
61
- * @deprecated please use `updateConfigurations` instead, will be removed in Otter v12.
62
- */
63
- loadConfiguration(configurations: string | CustomConfig<Configuration>[]): void;
64
58
  /**
65
59
  * Replace N configurations in one shot
66
60
  * @param configurations array of configurations to update
@@ -1 +1 @@
1
- {"version":3,"file":"configuration-devtools.console.service.d.ts","sourceRoot":"","sources":["../../src/devkit/configuration-devtools.console.service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EAEb,YAAY,EACZ,wBAAwB,EAEzB,MAAM,WAAW,CAAC;AAInB,OAAO,EACL,sCAAsC,EACtC,mCAAmC,EACpC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAC3B,MAAM,kCAAkC,CAAC;;AAM1C,qBAGa,mCAAoC,YAAW,wBAAwB,EAAE,sCAAsC;IAKxH,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACoB,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpF,4DAA4D;IAC5D,gBAAuB,gBAAgB,mBAAmB;gBAGvC,qBAAqB,EAAE,0BAA0B,EACS,OAAO,EAAE,mCAAmC;IAezH,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,sBAAsB;IAS9B;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,IAAI;IAIvI,kBAAkB;IACX,QAAQ;IAQf;;;OAGG;IACU,kCAAkC;IAK/C;;;;;;OAMG;IACU,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAK1G;;;OAGG;IACU,iBAAiB,CAAC,QAAQ,GAAE,MAAyC;IAKlF;;OAEG;IACU,oBAAoB;IAKjC;;OAEG;IACU,4BAA4B;IAOzC;;OAEG;IACU,4BAA4B;IAKzC;;;;OAIG;IACI,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI;IAItF;;;OAGG;IACI,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI;yCA9H9E,mCAAmC;6CAAnC,mCAAmC;CAiI/C"}
1
+ {"version":3,"file":"configuration-devtools.console.service.d.ts","sourceRoot":"","sources":["../../src/devkit/configuration-devtools.console.service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EAEb,YAAY,EACZ,wBAAwB,EAEzB,MAAM,WAAW,CAAC;AAInB,OAAO,EACL,sCAAsC,EACtC,mCAAmC,EACpC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAC3B,MAAM,kCAAkC,CAAC;;AAM1C,qBAGa,mCAAoC,YAAW,wBAAwB,EAAE,sCAAsC;IAKxH,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACoB,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpF,4DAA4D;IAC5D,gBAAuB,gBAAgB,mBAAmB;gBAGvC,qBAAqB,EAAE,0BAA0B,EACS,OAAO,EAAE,mCAAmC;IAezH,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,sBAAsB;IAS9B;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,IAAI;IAIvI,kBAAkB;IACX,QAAQ;IAQf;;;OAGG;IACU,kCAAkC;IAK/C;;;;;;OAMG;IACU,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAK1G;;;OAGG;IACU,iBAAiB,CAAC,QAAQ,GAAE,MAAyC;IAKlF;;OAEG;IACU,oBAAoB;IAKjC;;OAEG;IACU,4BAA4B;IAOzC;;OAEG;IACU,4BAA4B;IAKzC;;;OAGG;IACI,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI;yCArH9E,mCAAmC;6CAAnC,mCAAmC;CAwH/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"configuration-devtools.service.d.ts","sourceRoot":"","sources":["../../src/devkit/configuration-devtools.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,EACN,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,YAAY,EACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAEL,UAAU,EACX,MAAM,MAAM,CAAC;AAUd,OAAO,EAGL,kBAAkB,EAKnB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mCAAmC,EACpC,MAAM,oCAAoC,CAAC;;AAM5C,qBACa,0BAA0B;IAKnC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACmC,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpF,+BAA+B;IAC/B,SAAgB,sBAAsB,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;gBAGvD,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC,EACzB,MAAM,EAAE,cAAc,EACoC,OAAO,EAAE,mCAAmC;IAmBzH;;;;;;OAMG;IACI,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,cAAc,UAAQ;IAUpH;;OAEG;IACI,8BAA8B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAc1D;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,IAAI;IAUvI;;;;OAIG;IACI,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAczH;;OAEG;IACI,gBAAgB;IAIvB;;;OAGG;IACI,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI;yCA1G3E,0BAA0B;6CAA1B,0BAA0B;CA8GtC"}
1
+ {"version":3,"file":"configuration-devtools.service.d.ts","sourceRoot":"","sources":["../../src/devkit/configuration-devtools.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,EACN,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,aAAa,EACb,YAAY,EACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAEL,UAAU,EACX,MAAM,MAAM,CAAC;AASd,OAAO,EAGL,kBAAkB,EAKnB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,mCAAmC,EACpC,MAAM,oCAAoC,CAAC;;AAM5C,qBACa,0BAA0B;IAKnC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACmC,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpF,+BAA+B;IAC/B,SAAgB,sBAAsB,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;gBAGvD,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC,EACzB,MAAM,EAAE,cAAc,EACoC,OAAO,EAAE,mCAAmC;IAmBzH;;;;;;OAMG;IACI,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,cAAc,UAAQ;IAUpH;;OAEG;IACI,8BAA8B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAc1D;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,IAAI;IAUvI;;;;OAIG;IACI,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAczH;;OAEG;IACI,gBAAgB;IAIvB;;;OAGG;IACI,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI;yCA1G3E,0BAA0B;6CAA1B,0BAA0B;CA8GtC"}
@@ -1,14 +1,5 @@
1
- import { computeItemIdentifier, deepFill, } from '@o3r/core';
1
+ import { deepFill, } from '@o3r/core';
2
2
  import { distinctUntilChanged, map, shareReplay, } from 'rxjs/operators';
3
- /**
4
- * Get the configuration name
5
- * @deprecated use {@link computeItemIdentifier} from @o3r/core. Will be removed in v12
6
- * @param componentName Name of the component to get the configuration
7
- * @param libraryName Name of the library the component is coming from
8
- */
9
- export function computeConfigurationName(componentName, libraryName) {
10
- return computeItemIdentifier(componentName, libraryName);
11
- }
12
3
  /**
13
4
  * Get the component and library's names based on the configuration name
14
5
  * @param configurationName Name of the component as found in the store
@@ -32,4 +23,4 @@ export function getConfiguration(defaultValue) {
32
23
  return deepFill(defaultValue, configOverride);
33
24
  }), distinctUntilChanged((prev, current) => JSON.stringify(prev) === JSON.stringify(current)), shareReplay({ refCount: true, bufferSize: 1 }));
34
25
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2NvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixRQUFRLEdBQ1QsTUFBTSxXQUFXLENBQUM7QUFJbkIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsV0FBVyxHQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFzQnhCOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLGFBQXFCLEVBQUUsV0FBb0I7SUFDbEYsT0FBTyxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsaUJBQXlCO0lBQzlELE1BQU0sdUJBQXVCLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0UsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQzVCLE9BQU87WUFDTCxPQUFPLEVBQUUsdUJBQXVCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDcEYsYUFBYSxFQUFFLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7U0FDNUcsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFvQyxZQUFlO0lBQ2pGLE9BQU8sQ0FBdUIsTUFBa0MsRUFBaUIsRUFBRSxDQUNqRixNQUFNLENBQUMsSUFBSSxDQUNULEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1FBQ3JCLE9BQU8sUUFBUSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNoRCxDQUFDLENBQUMsRUFDRixvQkFBb0IsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUN6RixXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNvbXB1dGVJdGVtSWRlbnRpZmllcixcbiAgZGVlcEZpbGwsXG59IGZyb20gJ0BvM3IvY29yZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogSW50ZXJmYWNlIHRvIGRlZmluZSB0aGUgZXJyb3IgbWVzc2FnZXMgaW50byBjb21wb25lbnQgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTWVzc2FnZXMge1xuICAvKipcbiAgICogRXJyb3IgbWVzc2FnZSBtYXBcbiAgICovXG4gIGVycm9yTWVzc2FnZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHRvIHNwZWNpZnkgdGhhdCB0aGUgY29tcG9uZW50IGhhcyBhbiBJRFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aWZpYWJsZSB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyXG4gICAqL1xuICBpZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY29uZmlndXJhdGlvbiBuYW1lXG4gKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGNvbXB1dGVJdGVtSWRlbnRpZmllcn0gZnJvbSBAbzNyL2NvcmUuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTJcbiAqIEBwYXJhbSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCB0byBnZXQgdGhlIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBsaWJyYXJ5TmFtZSBOYW1lIG9mIHRoZSBsaWJyYXJ5IHRoZSBjb21wb25lbnQgaXMgY29taW5nIGZyb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVDb25maWd1cmF0aW9uTmFtZShjb21wb25lbnROYW1lOiBzdHJpbmcsIGxpYnJhcnlOYW1lPzogc3RyaW5nKSB7XG4gIHJldHVybiBjb21wdXRlSXRlbUlkZW50aWZpZXIoY29tcG9uZW50TmFtZSwgbGlicmFyeU5hbWUpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY29tcG9uZW50IGFuZCBsaWJyYXJ5J3MgbmFtZXMgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gbmFtZVxuICogQHBhcmFtIGNvbmZpZ3VyYXRpb25OYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBhcyBmb3VuZCBpbiB0aGUgc3RvcmVcbiAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIGxpYnJhcnkgYW5kIGNvbXBvbmVudCBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25maWd1cmF0aW9uTmFtZShjb25maWd1cmF0aW9uTmFtZTogc3RyaW5nKTogeyBsaWJyYXJ5Pzogc3RyaW5nOyBsaWJyYXJ5TmFtZT86IHN0cmluZzsgY29tcG9uZW50TmFtZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICBjb25zdCBwYXJzZWRDb25maWd1cmF0aW9uTmFtZSA9IGNvbmZpZ3VyYXRpb25OYW1lLm1hdGNoKC9eKFteI10qKSMoLiopJC9pKTtcbiAgaWYgKHBhcnNlZENvbmZpZ3VyYXRpb25OYW1lKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpYnJhcnk6IHBhcnNlZENvbmZpZ3VyYXRpb25OYW1lLmxlbmd0aCA+IDIgPyBwYXJzZWRDb25maWd1cmF0aW9uTmFtZVsxXSA6IHVuZGVmaW5lZCxcbiAgICAgIGNvbXBvbmVudE5hbWU6IHBhcnNlZENvbmZpZ3VyYXRpb25OYW1lLmxlbmd0aCA+IDIgPyBwYXJzZWRDb25maWd1cmF0aW9uTmFtZVsyXSA6IHBhcnNlZENvbmZpZ3VyYXRpb25OYW1lWzBdXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIE9wZXJhdG9yIHRvIGdldCB0aGUgY29uZmlndXJhdGlvbiBmcm9tIHN0b3JlIGZvciBhIGdpdmVuIGNvbXBvbmVudCBhbmQgbWVyZ2UgaXQgd2l0aCB0aGUgZ2xvYmFsIGNvbmZpZ1xuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBEZWZhdWx0IHZhbHVlIG9mIHRoZSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWd1cmF0aW9uPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oZGVmYXVsdFZhbHVlOiBUKSB7XG4gIHJldHVybiA8QyBleHRlbmRzIFBhcnRpYWw8VD4+KHNvdXJjZTogT2JzZXJ2YWJsZTxDIHwgdW5kZWZpbmVkID4pOiBPYnNlcnZhYmxlPFQ+ID0+XG4gICAgc291cmNlLnBpcGUoXG4gICAgICBtYXAoKGNvbmZpZ092ZXJyaWRlKSA9PiB7XG4gICAgICAgIHJldHVybiBkZWVwRmlsbChkZWZhdWx0VmFsdWUsIGNvbmZpZ092ZXJyaWRlKTtcbiAgICAgIH0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnJlbnQpID0+IEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShjdXJyZW50KSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKTtcbn1cbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2NvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsR0FDVCxNQUFNLFdBQVcsQ0FBQztBQUluQixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxXQUFXLEdBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQXNCeEI7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxpQkFBeUI7SUFDOUQsTUFBTSx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzRSxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDNUIsT0FBTztZQUNMLE9BQU8sRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNwRixhQUFhLEVBQUUsdUJBQXVCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztTQUM1RyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQW9DLFlBQWU7SUFDakYsT0FBTyxDQUF1QixNQUFrQyxFQUFpQixFQUFFLENBQ2pGLE1BQU0sQ0FBQyxJQUFJLENBQ1QsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7UUFDckIsT0FBTyxRQUFRLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxFQUNGLG9CQUFvQixDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ3pGLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQy9DLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZGVlcEZpbGwsXG59IGZyb20gJ0BvM3IvY29yZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogSW50ZXJmYWNlIHRvIGRlZmluZSB0aGUgZXJyb3IgbWVzc2FnZXMgaW50byBjb21wb25lbnQgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTWVzc2FnZXMge1xuICAvKipcbiAgICogRXJyb3IgbWVzc2FnZSBtYXBcbiAgICovXG4gIGVycm9yTWVzc2FnZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHRvIHNwZWNpZnkgdGhhdCB0aGUgY29tcG9uZW50IGhhcyBhbiBJRFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aWZpYWJsZSB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyXG4gICAqL1xuICBpZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY29tcG9uZW50IGFuZCBsaWJyYXJ5J3MgbmFtZXMgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gbmFtZVxuICogQHBhcmFtIGNvbmZpZ3VyYXRpb25OYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBhcyBmb3VuZCBpbiB0aGUgc3RvcmVcbiAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIGxpYnJhcnkgYW5kIGNvbXBvbmVudCBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25maWd1cmF0aW9uTmFtZShjb25maWd1cmF0aW9uTmFtZTogc3RyaW5nKTogeyBsaWJyYXJ5Pzogc3RyaW5nOyBsaWJyYXJ5TmFtZT86IHN0cmluZzsgY29tcG9uZW50TmFtZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICBjb25zdCBwYXJzZWRDb25maWd1cmF0aW9uTmFtZSA9IGNvbmZpZ3VyYXRpb25OYW1lLm1hdGNoKC9eKFteI10qKSMoLiopJC9pKTtcbiAgaWYgKHBhcnNlZENvbmZpZ3VyYXRpb25OYW1lKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpYnJhcnk6IHBhcnNlZENvbmZpZ3VyYXRpb25OYW1lLmxlbmd0aCA+IDIgPyBwYXJzZWRDb25maWd1cmF0aW9uTmFtZVsxXSA6IHVuZGVmaW5lZCxcbiAgICAgIGNvbXBvbmVudE5hbWU6IHBhcnNlZENvbmZpZ3VyYXRpb25OYW1lLmxlbmd0aCA+IDIgPyBwYXJzZWRDb25maWd1cmF0aW9uTmFtZVsyXSA6IHBhcnNlZENvbmZpZ3VyYXRpb25OYW1lWzBdXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIE9wZXJhdG9yIHRvIGdldCB0aGUgY29uZmlndXJhdGlvbiBmcm9tIHN0b3JlIGZvciBhIGdpdmVuIGNvbXBvbmVudCBhbmQgbWVyZ2UgaXQgd2l0aCB0aGUgZ2xvYmFsIGNvbmZpZ1xuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBEZWZhdWx0IHZhbHVlIG9mIHRoZSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWd1cmF0aW9uPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oZGVmYXVsdFZhbHVlOiBUKSB7XG4gIHJldHVybiA8QyBleHRlbmRzIFBhcnRpYWw8VD4+KHNvdXJjZTogT2JzZXJ2YWJsZTxDIHwgdW5kZWZpbmVkID4pOiBPYnNlcnZhYmxlPFQ+ID0+XG4gICAgc291cmNlLnBpcGUoXG4gICAgICBtYXAoKGNvbmZpZ092ZXJyaWRlKSA9PiB7XG4gICAgICAgIHJldHVybiBkZWVwRmlsbChkZWZhdWx0VmFsdWUsIGNvbmZpZ092ZXJyaWRlKTtcbiAgICAgIH0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnJlbnQpID0+IEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShjdXJyZW50KSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKTtcbn1cbiJdfQ==
@@ -98,14 +98,6 @@ export class ConfigurationDevtoolsConsoleService {
98
98
  const configs = await firstValueFrom(this.configurationDevtools.configurationEntities$);
99
99
  this.copyElementToClipboard(JSON.stringify(configs));
100
100
  }
101
- /**
102
- * Load a json configuration
103
- * @param configurations configurations to load
104
- * @deprecated please use `updateConfigurations` instead, will be removed in Otter v12.
105
- */
106
- loadConfiguration(configurations) {
107
- this.configurationDevtools.loadConfiguration(configurations);
108
- }
109
101
  /**
110
102
  * Replace N configurations in one shot
111
103
  * @param configurations array of configurations to update
@@ -127,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
127
119
  type: Inject,
128
120
  args: [OTTER_CONFIGURATION_DEVTOOLS_OPTIONS]
129
121
  }] }] });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1kZXZ0b29scy5jb25zb2xlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGV2a2l0L2NvbmZpZ3VyYXRpb24tZGV2dG9vbHMuY29uc29sZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdFQUF3RTtBQUN4RSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUNMLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQUtkLE9BQU8sRUFDTCwwQkFBMEIsR0FDM0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsNENBQTRDLEVBQzVDLG9DQUFvQyxHQUNyQyxNQUFNLGdDQUFnQyxDQUFDOzs7QUFLeEMsTUFBTSxPQUFPLG1DQUFtQztJQUM5Qyw0REFBNEQ7YUFDckMscUJBQWdCLEdBQUcsZUFBZSxBQUFsQixDQUFtQjtJQUUxRCxZQUNtQixxQkFBaUQsRUFDUyxPQUE0QztRQUR0RywwQkFBcUIsR0FBckIscUJBQXFCLENBQTRCO1FBQ1MsWUFBTyxHQUFQLE9BQU8sQ0FBcUM7UUFFdkgsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsNENBQTRDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUUvRSxJQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCO2VBQ2hDLENBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0M7bUJBQzdDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBb0MsQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUM3RSxFQUNELENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsT0FBZSxFQUFFLFdBQW1CLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CO1FBQ3ZGLE1BQU0sQ0FBQyxHQUFH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Q0FBQyw0REFBNEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3SCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsNEJBQTRCO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FBQyxjQUFzRDtRQUM3RSxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLG9CQUFvQixDQUFDLGNBQXNEO1FBQ2hGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvRCxDQUFDO2tJQWhJVSxtQ0FBbUMsNERBTXhCLG9DQUFvQztzSUFOL0MsbUNBQW1DLGNBRmxDLE1BQU07OzRGQUVQLG1DQUFtQztrQkFIL0MsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9JLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAtLSBzZXJ2aWNlIHRvIGxvZyBtZXNzYWdlIGluIHRoZSBjb25zb2xlICovXG5pbXBvcnQge1xuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcbiAgQ29uZmlndXJhdGlvbixcbiAgQ29udGV4dHVhbGl6YXRpb25EYXRhc2V0LFxuICBDdXN0b21Db25maWcsXG4gIERldnRvb2xzU2VydmljZUludGVyZmFjZSxcbiAgV2luZG93V2l0aERldnRvb2xzLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHtcbiAgZmlyc3RWYWx1ZUZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbkNvbnRleHR1YWxpemF0aW9uRGV2dG9vbHMsXG4gIENvbmZpZ3VyYXRpb25EZXZ0b29sc1NlcnZpY2VPcHRpb25zLFxufSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tZGV2dG9vbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIE90dGVyQ29uZmlndXJhdGlvbkRldnRvb2xzLFxufSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tZGV2dG9vbHMuc2VydmljZSc7XG5pbXBvcnQge1xuICBPVFRFUl9DT05GSUdVUkFUSU9OX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUyxcbiAgT1RURVJfQ09ORklHVVJBVElPTl9ERVZUT09MU19PUFRJT05TLFxufSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tZGV2dG9vbHMudG9rZW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uRGV2dG9vbHNDb25zb2xlU2VydmljZSBpbXBsZW1lbnRzIERldnRvb2xzU2VydmljZUludGVyZmFjZSwgQ29uZmlndXJhdGlvbkNvbnRleHR1YWxpemF0aW9uRGV2dG9vbHMge1xuICAvKiogTmFtZSBvZiB0aGUgV2luZG93IHByb3BlcnR5IHRvIGFjY2VzcyB0byB0aGUgZGV2dG9vbHMgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB3aW5kb3dNb2R1bGVOYW1lID0gJ2NvbmZpZ3VyYXRpb24nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlndXJhdGlvbkRldnRvb2xzOiBPdHRlckNvbmZpZ3VyYXRpb25EZXZ0b29scyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE9UVEVSX0NPTkZJR1VSQVRJT05fREVWVE9PTFNfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDb25maWd1cmF0aW9uRGV2dG9vbHNTZXJ2aWNlT3B0aW9uc1xuICApIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLk9UVEVSX0NPTkZJR1VSQVRJT05fREVWVE9PTFNfREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm9wdGlvbnMuaXNBY3RpdmF0ZWRPbkJvb3RzdHJhcFxuICAgICAgfHwgKFxuICAgICAgICB0aGlzLm9wdGlvbnMuaXNBY3RpdmF0ZWRPbkJvb3RzdHJhcFdoZW5DTVNDb250ZXh0XG4gICAgICAgICYmIChkb2N1bWVudC5ib2R5LmRhdGFzZXQgYXMgQ29udGV4dHVhbGl6YXRpb25EYXRhc2V0KS5jbXNjb250ZXh0ID09PSAndHJ1ZSdcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkSlNPTihjb250ZW50OiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcgPSB0aGlzLm9wdGlvbnMuZGVmYXVsdEpzb25GaWxlbmFtZSk6IHZvaWQge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtjb250ZW50XSwgeyB0eXBlOiAndGV4dC9wbGFpbicgfSk7XG4gICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgYS5jbGljaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3B5RWxlbWVudFRvQ2xpcGJvYXJkKGNvbnRlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICBpbnB1dC52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoaW5wdXQpO1xuICAgIGlucHV0LnNlbGVjdCgpO1xuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgaW5wdXQucmVtb3ZlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgc3BlY2lmaWVkIHZhbHVlIG9mIGEgY29tcG9uZW50IGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIHNlbGVjdG9yIFNlbGVjdG9yIGZvciBhIGNvbXBvbmVudCBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBjb25maWdQcm9wZXJ0eSBOYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uIHByb3BlcnR5IHRvIHNldFxuICAgKiBAcGFyYW0gY29uZmlnVmFsdWUgVmFsdWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgdG8gc2V0XG4gICAqL1xuICBwdWJsaWMgc2V0RHluYW1pY0NvbmZpZyhzZWxlY3Rvcjogc3RyaW5nIHwgeyBsaWJyYXJ5Pzogc3RyaW5nOyBjb21wb25lbnROYW1lOiBzdHJpbmcgfSwgY29uZmlnUHJvcGVydHk6IHN0cmluZywgY29uZmlnVmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLnNldER5bmFtaWNDb25maWcoc2VsZWN0b3IsIGNvbmZpZ1Byb3BlcnR5LCBjb25maWdWYWx1ZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGFjdGl2YXRlKCkge1xuICAgIGNvbnN0IHdpbmRvd1dpdGhEZXZ0b29sczogV2luZG93V2l0aERldnRvb2xzID0gd2luZG93O1xuICAgIHdpbmRvd1dpdGhEZXZ0b29scy5fT1RURVJfREVWVE9PTFNfIHx8PSB7fTtcbiAgICB3aW5kb3dXaXRoRGV2dG9vbHMuX09UVEVSX0RFVlRPT0xTX1tDb25maWd1cmF0aW9uRGV2dG9vbHNDb25zb2xlU2VydmljZS53aW5kb3dNb2R1bGVOYW1lXSA9IHRoaXM7XG5cbiAgICBjb25zb2xlLmluZm8oYE90dGVyIENvbmZpZ3VyYXRpb24gRGV2dG9vbHMgaXMgbm93IGFjY2Vzc2libGUgdmlhIHRoZSBfT1RURVJfREVWVE9PTFNfLiR7Q29uZmlndXJhdGlvbkRldnRvb2xzQ29uc29sZVNlcnZpY2Uud2luZG93TW9kdWxlTmFtZX0gdmFyaWFibGVgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIGxvYWRlZCBpbiB0aGUgc3RvcmUgYW5kIHRoZSBsaWJyYXJ5IHRoZXkgb3JpZ2luYXRlIGZyb21cbiAgICogQHJldHVybnMgYXJyYXkgd2l0aCB0aGUgY29uZmlndXJhdGlvbnMgYW5kIGxpYnJhcmllcyBmb3IgZXhhbXBsZTogW1wiTGliQ29tcG9uZW50c0NvbW1vblJ1bnRpbWVDb25maWcgZnJvbSBAbXktbGliL3NoYXJlZC1jb21tb25cIl1cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaXNwbGF5Q29tcG9uZW50c1dpdGhDb25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IHNlbGVjdG9ycyA9IGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLmdldENvbXBvbmVudHNXaXRoQ29uZmlndXJhdGlvbigpO1xuICAgIGNvbnNvbGUubG9nKHNlbGVjdG9ycyk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBmb3IgYSBzcGVjaWZpYyBjb21wb25lbnRcbiAgICogQHBhcmFtIHNlbGVjdG9yIFNlbGVjdG9yIGZvciBhIGNvbXBvbmVudCBjb25maWd1cmF0aW9uLiBJdCBjYW4gYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gbGlicmFyeSNjb25maWd1cmF0aW9uTmFtZSAoaS5lOiAnQG15LWxpYi9zaGFyZWQtY29tcG9uZW50cyNIZWFkZXJDb250Q29uZmlnJylcbiAgICogb3IgYW4gb2JqZWN0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGxpYnJhcnkgbmFtZXMgKGkuZToge2xpYnJhcnk6XCJAbXktbGliL3NoYXJlZC1jb21wb25lbnRzXCIsIGNvbXBvbmVudE5hbWU6J0hlYWRlckNvbnRDb25maWcnfSkuXG4gICAqIE5vdGUgdGhlIG9iamVjdCBpbnB1dCBjb21wb25lbnROYW1lIGV4cGVjdHMgYSBjb25maWd1cmF0aW9uIG5hbWUgbm90IGEgY29tcG9uZW50IG5hbWUuXG4gICAqIEByZXR1cm5zIENvbmZpZ3VyYXRpb24gb2JqZWN0IChpLmU6IHthaXJsaW5lTG9nb1BhdGg6IFwiaW1nL2FpcmxpbmVzL2ljb24tQkguc3ZnXCIsIGRpc3BsYXlMYW5ndWFnZVNlbGVjdG9yOiBmYWxzZX0pXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlzcGxheUN1cnJlbnRDb25maWd1cmF0aW9uRm9yKHNlbGVjdG9yOiBzdHJpbmcgfCB7IGxpYnJhcnk/OiBzdHJpbmc7IGNvbXBvbmVudE5hbWU6IHN0cmluZyB9KSB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLmdldEN1cnJlbnRDb25maWd1cmF0aW9uRm9yKHNlbGVjdG9yKTtcbiAgICBjb25zb2xlLmxvZyhjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZCB0aGUgSlNPTiBmaWxlIG9mIHRoZSB3aG9sZSBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBmaWxlTmFtZSBOYW1lIG9mIHRoZSBmaWxlIHRvIGRvd25sb2FkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2F2ZUNvbmZpZ3VyYXRpb24oZmlsZU5hbWU6IHN0cmluZyA9IHRoaXMub3B0aW9ucy5kZWZhdWx0SnNvbkZpbGVuYW1lKSB7XG4gICAgY29uc3QgY29uZmlncyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLmNvbmZpZ3VyYXRpb25FbnRpdGllcyQpO1xuICAgIHRoaXMuZG93bmxvYWRKU09OKEpTT04uc3RyaW5naWZ5KGNvbmZpZ3MpLCBmaWxlTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiBvZiB0aGUgYXBwbGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaXNwbGF5Q29uZmlndXJhdGlvbigpIHtcbiAgICBjb25zdCBjb25maWdzID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uRGV2dG9vbHMuZ2V0Q29uZmlndXJhdGlvbigpO1xuICAgIGNvbnNvbGUubG9nKGNvbmZpZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgYSBib29rbWFyayB0byBnZW5lcmF0ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlzcGxheUNvbmZpZ3VyYXRpb25Cb29rbWFyaygpIHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uRGV2dG9vbHMuZ2V0Q29uZmlndXJhdGlvbigpO1xuXG4gICAgY29uc29sZS5sb2coJ0JPT0tNQVJLJyk7XG4gICAgY29uc29sZS5sb2coYGphdmFzY3JpcHQ6d2luZG93Ll9PVFRFUl9ERVZUT09MU18udXBkYXRlQ29uZmlndXJhdGlvbnMoJyR7SlNPTi5zdHJpbmdpZnkoY29udGVudCkucmVwbGFjZSgvJy9nLCAnXFxcXFxcJycpfScpYCk7XG4gIH1cblxuICAvKipcbiAgICogQ29weSB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiB0byB0aGUgY2xpcGJvYXJkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY29weUNvbmZpZ3VyYXRpb25Ub0NsaXBib2FyZCgpIHtcbiAgICBjb25zdCBjb25maWdzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5jb25maWd1cmF0aW9uRGV2dG9vbHMuY29uZmlndXJhdGlvbkVudGl0aWVzJCk7XG4gICAgdGhpcy5jb3B5RWxlbWVudFRvQ2xpcGJvYXJkKEpTT04uc3RyaW5naWZ5KGNvbmZpZ3MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEganNvbiBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBjb25maWd1cmF0aW9ucyBjb25maWd1cmF0aW9ucyB0byBsb2FkXG4gICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgYHVwZGF0ZUNvbmZpZ3VyYXRpb25zYCBpbnN0ZWFkLCB3aWxsIGJlIHJlbW92ZWQgaW4gT3R0ZXIgdjEyLlxuICAgKi9cbiAgcHVibGljIGxvYWRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25zOiBzdHJpbmcgfCBDdXN0b21Db25maWc8Q29uZmlndXJhdGlvbj5bXSk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLmxvYWRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIE4gY29uZmlndXJhdGlvbnMgaW4gb25lIHNob3RcbiAgICogQHBhcmFtIGNvbmZpZ3VyYXRpb25zIGFycmF5IG9mIGNvbmZpZ3VyYXRpb25zIHRvIHVwZGF0ZVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZUNvbmZpZ3VyYXRpb25zKGNvbmZpZ3VyYXRpb25zOiBzdHJpbmcgfCBDdXN0b21Db25maWc8Q29uZmlndXJhdGlvbj5bXSk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLmxvYWRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25zKTtcbiAgfVxufVxuIl19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1kZXZ0b29scy5jb25zb2xlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGV2a2l0L2NvbmZpZ3VyYXRpb24tZGV2dG9vbHMuY29uc29sZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdFQUF3RTtBQUN4RSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUNMLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQUtkLE9BQU8sRUFDTCwwQkFBMEIsR0FDM0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsNENBQTRDLEVBQzVDLG9DQUFvQyxHQUNyQyxNQUFNLGdDQUFnQyxDQUFDOzs7QUFLeEMsTUFBTSxPQUFPLG1DQUFtQztJQUM5Qyw0REFBNEQ7YUFDckMscUJBQWdCLEdBQUcsZUFBZSxBQUFsQixDQUFtQjtJQUUxRCxZQUNtQixxQkFBaUQsRUFDUyxPQUE0QztRQUR0RywwQkFBcUIsR0FBckIscUJBQXFCLENBQTRCO1FBQ1MsWUFBTyxHQUFQLE9BQU8sQ0FBcUM7UUFFdkgsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsNENBQTRDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUUvRSxJQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCO2VBQ2hDLENBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0M7bUJBQzdDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBb0MsQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUM3RSxFQUNELENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsT0FBZSxFQUFFLFdBQW1CLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CO1FBQ3ZGLE1BQU0sQ0FBQyxHQUFH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Q0FBQyw0REFBNEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3SCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsNEJBQTRCO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLG9CQUFvQixDQUFDLGNBQXNEO1FBQ2hGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvRCxDQUFDO2tJQXZIVSxtQ0FBbUMsNERBTXhCLG9DQUFvQztzSUFOL0MsbUNBQW1DLGNBRmxDLE1BQU07OzRGQUVQLG1DQUFtQztrQkFIL0MsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9JLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAtLSBzZXJ2aWNlIHRvIGxvZyBtZXNzYWdlIGluIHRoZSBjb25zb2xlICovXG5pbXBvcnQge1xuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcbiAgQ29uZmlndXJhdGlvbixcbiAgQ29udGV4dHVhbGl6YXRpb25EYXRhc2V0LFxuICBDdXN0b21Db25maWcsXG4gIERldnRvb2xzU2VydmljZUludGVyZmFjZSxcbiAgV2luZG93V2l0aERldnRvb2xzLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHtcbiAgZmlyc3RWYWx1ZUZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbkNvbnRleHR1YWxpemF0aW9uRGV2dG9vbHMsXG4gIENvbmZpZ3VyYXRpb25EZXZ0b29sc1NlcnZpY2VPcHRpb25zLFxufSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tZGV2dG9vbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIE90dGVyQ29uZmlndXJhdGlvbkRldnRvb2xzLFxufSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tZGV2dG9vbHMuc2VydmljZSc7XG5pbXBvcnQge1xuICBPVFRFUl9DT05GSUdVUkFUSU9OX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUyxcbiAgT1RURVJfQ09ORklHVVJBVElPTl9ERVZUT09MU19PUFRJT05TLFxufSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tZGV2dG9vbHMudG9rZW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uRGV2dG9vbHNDb25zb2xlU2VydmljZSBpbXBsZW1lbnRzIERldnRvb2xzU2VydmljZUludGVyZmFjZSwgQ29uZmlndXJhdGlvbkNvbnRleHR1YWxpemF0aW9uRGV2dG9vbHMge1xuICAvKiogTmFtZSBvZiB0aGUgV2luZG93IHByb3BlcnR5IHRvIGFjY2VzcyB0byB0aGUgZGV2dG9vbHMgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB3aW5kb3dNb2R1bGVOYW1lID0gJ2NvbmZpZ3VyYXRpb24nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlndXJhdGlvbkRldnRvb2xzOiBPdHRlckNvbmZpZ3VyYXRpb25EZXZ0b29scyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE9UVEVSX0NPTkZJR1VSQVRJT05fREVWVE9PTFNfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDb25maWd1cmF0aW9uRGV2dG9vbHNTZXJ2aWNlT3B0aW9uc1xuICApIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLk9UVEVSX0NPTkZJR1VSQVRJT05fREVWVE9PTFNfREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm9wdGlvbnMuaXNBY3RpdmF0ZWRPbkJvb3RzdHJhcFxuICAgICAgfHwgKFxuICAgICAgICB0aGlzLm9wdGlvbnMuaXNBY3RpdmF0ZWRPbkJvb3RzdHJhcFdoZW5DTVNDb250ZXh0XG4gICAgICAgICYmIChkb2N1bWVudC5ib2R5LmRhdGFzZXQgYXMgQ29udGV4dHVhbGl6YXRpb25EYXRhc2V0KS5jbXNjb250ZXh0ID09PSAndHJ1ZSdcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkSlNPTihjb250ZW50OiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcgPSB0aGlzLm9wdGlvbnMuZGVmYXVsdEpzb25GaWxlbmFtZSk6IHZvaWQge1xuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtjb250ZW50XSwgeyB0eXBlOiAndGV4dC9wbGFpbicgfSk7XG4gICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgYS5jbGljaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3B5RWxlbWVudFRvQ2xpcGJvYXJkKGNvbnRlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICBpbnB1dC52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoaW5wdXQpO1xuICAgIGlucHV0LnNlbGVjdCgpO1xuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgaW5wdXQucmVtb3ZlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgc3BlY2lmaWVkIHZhbHVlIG9mIGEgY29tcG9uZW50IGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIHNlbGVjdG9yIFNlbGVjdG9yIGZvciBhIGNvbXBvbmVudCBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBjb25maWdQcm9wZXJ0eSBOYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uIHByb3BlcnR5IHRvIHNldFxuICAgKiBAcGFyYW0gY29uZmlnVmFsdWUgVmFsdWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgdG8gc2V0XG4gICAqL1xuICBwdWJsaWMgc2V0RHluYW1pY0NvbmZpZyhzZWxlY3Rvcjogc3RyaW5nIHwgeyBsaWJyYXJ5Pzogc3RyaW5nOyBjb21wb25lbnROYW1lOiBzdHJpbmcgfSwgY29uZmlnUHJvcGVydHk6IHN0cmluZywgY29uZmlnVmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLnNldER5bmFtaWNDb25maWcoc2VsZWN0b3IsIGNvbmZpZ1Byb3BlcnR5LCBjb25maWdWYWx1ZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGFjdGl2YXRlKCkge1xuICAgIGNvbnN0IHdpbmRvd1dpdGhEZXZ0b29sczogV2luZG93V2l0aERldnRvb2xzID0gd2luZG93O1xuICAgIHdpbmRvd1dpdGhEZXZ0b29scy5fT1RURVJfREVWVE9PTFNfIHx8PSB7fTtcbiAgICB3aW5kb3dXaXRoRGV2dG9vbHMuX09UVEVSX0RFVlRPT0xTX1tDb25maWd1cmF0aW9uRGV2dG9vbHNDb25zb2xlU2VydmljZS53aW5kb3dNb2R1bGVOYW1lXSA9IHRoaXM7XG5cbiAgICBjb25zb2xlLmluZm8oYE90dGVyIENvbmZpZ3VyYXRpb24gRGV2dG9vbHMgaXMgbm93IGFjY2Vzc2libGUgdmlhIHRoZSBfT1RURVJfREVWVE9PTFNfLiR7Q29uZmlndXJhdGlvbkRldnRvb2xzQ29uc29sZVNlcnZpY2Uud2luZG93TW9kdWxlTmFtZX0gdmFyaWFibGVgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5IHRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIGxvYWRlZCBpbiB0aGUgc3RvcmUgYW5kIHRoZSBsaWJyYXJ5IHRoZXkgb3JpZ2luYXRlIGZyb21cbiAgICogQHJldHVybnMgYXJyYXkgd2l0aCB0aGUgY29uZmlndXJhdGlvbnMgYW5kIGxpYnJhcmllcyBmb3IgZXhhbXBsZTogW1wiTGliQ29tcG9uZW50c0NvbW1vblJ1bnRpbWVDb25maWcgZnJvbSBAbXktbGliL3NoYXJlZC1jb21tb25cIl1cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaXNwbGF5Q29tcG9uZW50c1dpdGhDb25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IHNlbGVjdG9ycyA9IGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLmdldENvbXBvbmVudHNXaXRoQ29uZmlndXJhdGlvbigpO1xuICAgIGNvbnNvbGUubG9nKHNlbGVjdG9ycyk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBmb3IgYSBzcGVjaWZpYyBjb21wb25lbnRcbiAgICogQHBhcmFtIHNlbGVjdG9yIFNlbGVjdG9yIGZvciBhIGNvbXBvbmVudCBjb25maWd1cmF0aW9uLiBJdCBjYW4gYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gbGlicmFyeSNjb25maWd1cmF0aW9uTmFtZSAoaS5lOiAnQG15LWxpYi9zaGFyZWQtY29tcG9uZW50cyNIZWFkZXJDb250Q29uZmlnJylcbiAgICogb3IgYW4gb2JqZWN0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGxpYnJhcnkgbmFtZXMgKGkuZToge2xpYnJhcnk6XCJAbXktbGliL3NoYXJlZC1jb21wb25lbnRzXCIsIGNvbXBvbmVudE5hbWU6J0hlYWRlckNvbnRDb25maWcnfSkuXG4gICAqIE5vdGUgdGhlIG9iamVjdCBpbnB1dCBjb21wb25lbnROYW1lIGV4cGVjdHMgYSBjb25maWd1cmF0aW9uIG5hbWUgbm90IGEgY29tcG9uZW50IG5hbWUuXG4gICAqIEByZXR1cm5zIENvbmZpZ3VyYXRpb24gb2JqZWN0IChpLmU6IHthaXJsaW5lTG9nb1BhdGg6IFwiaW1nL2FpcmxpbmVzL2ljb24tQkguc3ZnXCIsIGRpc3BsYXlMYW5ndWFnZVNlbGVjdG9yOiBmYWxzZX0pXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlzcGxheUN1cnJlbnRDb25maWd1cmF0aW9uRm9yKHNlbGVjdG9yOiBzdHJpbmcgfCB7IGxpYnJhcnk/OiBzdHJpbmc7IGNvbXBvbmVudE5hbWU6IHN0cmluZyB9KSB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLmdldEN1cnJlbnRDb25maWd1cmF0aW9uRm9yKHNlbGVjdG9yKTtcbiAgICBjb25zb2xlLmxvZyhjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZCB0aGUgSlNPTiBmaWxlIG9mIHRoZSB3aG9sZSBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBmaWxlTmFtZSBOYW1lIG9mIHRoZSBmaWxlIHRvIGRvd25sb2FkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2F2ZUNvbmZpZ3VyYXRpb24oZmlsZU5hbWU6IHN0cmluZyA9IHRoaXMub3B0aW9ucy5kZWZhdWx0SnNvbkZpbGVuYW1lKSB7XG4gICAgY29uc3QgY29uZmlncyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLmNvbmZpZ3VyYXRpb25FbnRpdGllcyQpO1xuICAgIHRoaXMuZG93bmxvYWRKU09OKEpTT04uc3RyaW5naWZ5KGNvbmZpZ3MpLCBmaWxlTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiBvZiB0aGUgYXBwbGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaXNwbGF5Q29uZmlndXJhdGlvbigpIHtcbiAgICBjb25zdCBjb25maWdzID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uRGV2dG9vbHMuZ2V0Q29uZmlndXJhdGlvbigpO1xuICAgIGNvbnNvbGUubG9nKGNvbmZpZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgYSBib29rbWFyayB0byBnZW5lcmF0ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGlzcGxheUNvbmZpZ3VyYXRpb25Cb29rbWFyaygpIHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uRGV2dG9vbHMuZ2V0Q29uZmlndXJhdGlvbigpO1xuXG4gICAgY29uc29sZS5sb2coJ0JPT0tNQVJLJyk7XG4gICAgY29uc29sZS5sb2coYGphdmFzY3JpcHQ6d2luZG93Ll9PVFRFUl9ERVZUT09MU18udXBkYXRlQ29uZmlndXJhdGlvbnMoJyR7SlNPTi5zdHJpbmdpZnkoY29udGVudCkucmVwbGFjZSgvJy9nLCAnXFxcXFxcJycpfScpYCk7XG4gIH1cblxuICAvKipcbiAgICogQ29weSB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiB0byB0aGUgY2xpcGJvYXJkXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY29weUNvbmZpZ3VyYXRpb25Ub0NsaXBib2FyZCgpIHtcbiAgICBjb25zdCBjb25maWdzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5jb25maWd1cmF0aW9uRGV2dG9vbHMuY29uZmlndXJhdGlvbkVudGl0aWVzJCk7XG4gICAgdGhpcy5jb3B5RWxlbWVudFRvQ2xpcGJvYXJkKEpTT04uc3RyaW5naWZ5KGNvbmZpZ3MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIE4gY29uZmlndXJhdGlvbnMgaW4gb25lIHNob3RcbiAgICogQHBhcmFtIGNvbmZpZ3VyYXRpb25zIGFycmF5IG9mIGNvbmZpZ3VyYXRpb25zIHRvIHVwZGF0ZVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZUNvbmZpZ3VyYXRpb25zKGNvbmZpZ3VyYXRpb25zOiBzdHJpbmcgfCBDdXN0b21Db25maWc8Q29uZmlndXJhdGlvbj5bXSk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbkRldnRvb2xzLmxvYWRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25zKTtcbiAgfVxufVxuIl19
@@ -1,8 +1,9 @@
1
1
  import { ApplicationRef, Inject, Injectable, Optional, } from '@angular/core';
2
2
  import { select, Store, } from '@ngrx/store';
3
+ import { computeItemIdentifier, } from '@o3r/core';
3
4
  import { firstValueFrom, } from 'rxjs';
4
5
  import { filter, map, shareReplay, } from 'rxjs/operators';
5
- import { computeConfigurationName, parseConfigurationName, } from '../core';
6
+ import { parseConfigurationName, } from '../core';
6
7
  import { computeConfiguration, selectConfigurationEntities, selectConfigurationIds, upsertConfigurationEntities, upsertConfigurationEntity, } from '../stores';
7
8
  import { OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, OTTER_CONFIGURATION_DEVTOOLS_OPTIONS, } from './configuration-devtools.token';
8
9
  import * as i0 from "@angular/core";
@@ -31,11 +32,11 @@ export class OtterConfigurationDevtools {
31
32
  */
32
33
  getComponentConfigName(selector, isFallbackName = false) {
33
34
  if (!isFallbackName) {
34
- return typeof selector === 'string' ? selector : computeConfigurationName(selector.componentName, selector.library || this.options.defaultLibraryName);
35
+ return typeof selector === 'string' ? selector : computeItemIdentifier(selector.componentName, selector.library || this.options.defaultLibraryName);
35
36
  }
36
37
  return typeof selector === 'string'
37
- ? computeConfigurationName(selector, this.options.defaultLibraryName || 'global')
38
- : computeConfigurationName(selector.componentName, this.options.defaultLibraryName || 'global');
38
+ ? computeItemIdentifier(selector, this.options.defaultLibraryName || 'global')
39
+ : computeItemIdentifier(selector.componentName, this.options.defaultLibraryName || 'global');
39
40
  }
40
41
  /**
41
42
  * Get the list of components which have a configuration loaded in the store
@@ -97,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
97
98
  type: Inject,
98
99
  args: [OTTER_CONFIGURATION_DEVTOOLS_OPTIONS]
99
100
  }] }] });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1kZXZ0b29scy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RldmtpdC9jb25maWd1cmF0aW9uLWRldnRvb2xzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsTUFBTSxFQUNOLEtBQUssR0FDTixNQUFNLGFBQWEsQ0FBQztBQUtyQixPQUFPLEVBQ0wsY0FBYyxHQUVmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxHQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixzQkFBc0IsR0FDdkIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUNMLG9CQUFvQixFQUdwQiwyQkFBMkIsRUFDM0Isc0JBQXNCLEVBQ3RCLDJCQUEyQixFQUMzQix5QkFBeUIsR0FDMUIsTUFBTSxXQUFXLENBQUM7QUFJbkIsT0FBTyxFQUNMLDRDQUE0QyxFQUM1QyxvQ0FBb0MsR0FDckMsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBR3hDLE1BQU0sT0FBTywwQkFBMEI7SUFJckMsWUFDWSxLQUFnQyxFQUN6QixNQUFzQixFQUNvQyxPQUE0QztRQUY3RyxVQUFLLEdBQUwsS0FBSyxDQUEyQjtRQUN6QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUNvQyxZQUFPLEdBQVAsT0FBTyxDQUFxQztRQUN2SCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyw0Q0FBNEMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBRS9FLCtCQUErQjtRQUMvQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzNDLE1BQU0sQ0FBQywyQkFB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dGlvblJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBzZWxlY3QsXG4gIFN0b3JlLFxufSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uLFxuICBDdXN0b21Db25maWcsXG59IGZyb20gJ0BvM3IvY29yZSc7XG5pbXBvcnQge1xuICBmaXJzdFZhbHVlRnJvbSxcbiAgT2JzZXJ2YWJsZSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBmaWx0ZXIsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIGNvbXB1dGVDb25maWd1cmF0aW9uTmFtZSxcbiAgcGFyc2VDb25maWd1cmF0aW9uTmFtZSxcbn0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQge1xuICBjb21wdXRlQ29uZmlndXJhdGlvbixcbiAgQ29uZmlndXJhdGlvbk1vZGVsLFxuICBDb25maWd1cmF0aW9uU3RvcmUsXG4gIHNlbGVjdENvbmZpZ3VyYXRpb25FbnRpdGllcyxcbiAgc2VsZWN0Q29uZmlndXJhdGlvbklkcyxcbiAgdXBzZXJ0Q29uZmlndXJhdGlvbkVudGl0aWVzLFxuICB1cHNlcnRDb25maWd1cmF0aW9uRW50aXR5LFxufSBmcm9tICcuLi9zdG9yZXMnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbkRldnRvb2xzU2VydmljZU9wdGlvbnMsXG59IGZyb20gJy4vY29uZmlndXJhdGlvbi1kZXZ0b29scy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgT1RURVJfQ09ORklHVVJBVElPTl9ERVZUT09MU19ERUZBVUxUX09QVElPTlMsXG4gIE9UVEVSX0NPTkZJR1VSQVRJT05fREVWVE9PTFNfT1BUSU9OUyxcbn0gZnJvbSAnLi9jb25maWd1cmF0aW9uLWRldnRvb2xzLnRva2VuJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBPdHRlckNvbmZpZ3VyYXRpb25EZXZ0b29scyB7XG4gIC8qKiBTdHJlYW0gb2YgY29uZmlndXJhdGlvbnMgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25FbnRpdGllcyQ6IE9ic2VydmFibGU8Q3VzdG9tQ29uZmlnW10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8Q29uZmlndXJhdGlvblN0b3JlPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChPVFRFUl9DT05GSUdVUkFUSU9OX0RFVlRPT0xTX09QVElPTlMpIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ29uZmlndXJhdGlvbkRldnRvb2xzU2VydmljZU9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLk9UVEVSX0NPTkZJR1VSQVRJT05fREVWVE9PTFNfREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICAvKiogRnVsbCBjb25maWd1cmF0aW9uIHN0b3JlICovXG4gICAgdGhpcy5jb25maWd1cmF0aW9uRW50aXRpZXMkID0gdGhpcy5zdG9yZS5waXBlKFxuICAgICAgc2VsZWN0KHNlbGVjdENvbmZpZ3VyYXRpb25FbnRpdGllcyksXG4gICAgICBtYXAoKGVudGl0aWVzKSA9PlxuICAgICAgICBPYmplY3QudmFsdWVzKGVudGl0aWVzKVxuICAgICAgICAgIC5maWx0ZXIoKGVudGl0eSk6IGVudGl0eSBpcyBDb25maWd1cmF0aW9uTW9kZWwgPT4gISFlbnRpdHkpXG4gICAgICAgICAgLm1hcCgoZW50aXR5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGlkLCAuLi5jb25maWcgfSA9IGVudGl0eTtcbiAgICAgICAgICAgIGNvbnN0IHsgbGlicmFyeSA9IHRoaXMub3B0aW9ucy5kZWZhdWx0TGlicmFyeU5hbWUsIGNvbXBvbmVudE5hbWU6IG5hbWUgPSBpZCB9ID0gcGFyc2VDb25maWd1cmF0aW9uTmFtZShpZCkgfHwge307XG4gICAgICAgICAgICByZXR1cm4geyBuYW1lLCBjb25maWcsIGxpYnJhcnkgfSBzYXRpc2ZpZXMgQ3VzdG9tQ29uZmlnO1xuICAgICAgICAgIH0pXG4gICAgICApLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb25maWd1cmF0aW9uIG5hbWUgYmFzZWQgb24gaW5wdXQgaW5mb3JtYXRpb25cbiAgICogQHBhcmFtIHNlbGVjdG9yIFNlbGVjdG9yIGZvciBhIGNvbXBvbmVudCBjb25maWd1cmF0aW9uLiBJdCBjYW4gYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gbGlicmFyeSNjb21wb25lbnROYW1lIChpLmU6IEBteS1saWIvc2hhcmVkLWNvbXBvbmVudHMjSGVhZGVyQ29udENvbXBvbmVudClcbiAgICogb3IgYW4gb2JqZWN0IHdpdGggdGhlIGNvbXBvbmVudCBhbmQgbGlicmFyeSBuYW1lcyAoaS5lOiB7bGlicmFyeTpcIkBteS1saWIvc2hhcmVkLWNvbXBvbmVudHNcIiwgY29tcG9uZW50TmFtZTonSGVhZGVyQ29udENvbXBvbmVudCd9KVxuICAgKiBAcGFyYW0gaXNGYWxsYmFja05hbWUgRGV0ZXJtaW5lIGlmIHRoZSBuYW1lIHJlcXVlc3RlZCBpcyBhIGZhbGxiYWNrIG5hbWVcbiAgICogQHJldHVybnMgc3RyaW5nIGluIHRoZSBmb3JtYXQgbGlicmFyeSNjb21wb25lbnROYW1lIChpLmU6IFwiQG15LWxpYi9zaGFyZWQtY29tcG9uZW50cyNIZWFkZXJDb250Q29tcG9uZW50XCIpXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29tcG9uZW50Q29uZmlnTmFtZShzZWxlY3Rvcjogc3RyaW5nIHwgeyBsaWJyYXJ5Pzogc3RyaW5nOyBjb21wb25lbnROYW1lOiBzdHJpbmcgfSwgaXNGYWxsYmFja05hbWUgPSBmYWxzZSkge1xuICAgIGlmICghaXNGYWxsYmFja05hbWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygc2VsZWN0b3IgPT09ICdzdHJpbmcnID8gc2VsZWN0b3IgOiBjb21wdXRlQ29uZmlndXJhdGlvbk5hbWUoc2VsZWN0b3IuY29tcG9uZW50TmFtZSwgc2VsZWN0b3IubGlicmFyeSB8fCB0aGlzLm9wdGlvbnMuZGVmYXVsdExpYnJhcnlOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZW9mIHNlbGVjdG9yID09PSAnc3RyaW5nJ1xuICAgICAgPyBjb21wdXRlQ29uZmlndXJhdGlvbk5hbWUoc2VsZWN0b3IsIHRoaXMub3B0aW9ucy5kZWZhdWx0TGlicmFyeU5hbWUgfHwgJ2dsb2JhbCcpXG4gICAgICA6IGNvbXB1dGVDb25maWd1cmF0aW9uTmFtZShzZWxlY3Rvci5jb21wb25lbnROYW1lLCB0aGlzLm9wdGlvbnMuZGVmYXVsdExpYnJhcnlOYW1lIHx8ICdnbG9iYWwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgY29tcG9uZW50cyB3aGljaCBoYXZlIGEgY29uZmlndXJhdGlvbiBsb2FkZWQgaW4gdGhlIHN0b3JlXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29tcG9uZW50c1dpdGhDb25maWd1cmF0aW9uKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnN0b3JlXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHNlbGVjdChzZWxlY3RDb25maWd1cmF0aW9uSWRzKSxcbiAgICAgICAgICBtYXAoKGlkcykgPT4gaWRzXG4gICAgICAgICAgICAubWFwKChjb25maWdOYW1lKSA9PiBwYXJzZUNvbmZpZ3VyYXRpb25OYW1lKGNvbmZpZ05hbWUudG9TdHJpbmcoKSkpXG4gICAgICAgICAgICAuZmlsdGVyKChwYXJzZWROYW1lKTogcGFyc2VkTmFtZSBpcyB7IGxpYnJhcnk/OiBzdHJpbmc7IGNvbXBvbmVudE5hbWU6IHN0cmluZyB9ID0+ICEhcGFyc2VkTmFtZSlcbiAgICAgICAgICAgIC5tYXAoKHBhcnNlZE5hbWUpID0+IHBhcnNlZE5hbWUuY29tcG9uZW50TmFtZSArIChwYXJzZWROYW1lLmxpYnJhcnkgPyAnIGZyb20gJyArIHBhcnNlZE5hbWUubGlicmFyeSA6ICcnKSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIHNwZWNpZmllZCB2YWx1ZSBvZiBhIGNvbXBvbmVudCBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBzZWxlY3RvciBTZWxlY3RvciBmb3IgYSBjb21wb25lbnQgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gY29uZmlnUHJvcGVydHkgTmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSB0byBzZXRcbiAgICogQHBhcmFtIGNvbmZpZ1ZhbHVlIFZhbHVlIG9mIHRoZSBjb25maWd1cmF0aW9uIHByb3BlcnR5IHRvIHNldFxuICAgKi9cbiAgcHVibGljIHNldER5bmFtaWNDb25maWcoc2VsZWN0b3I6IHN0cmluZyB8IHsgbGlicmFyeT86IHN0cmluZzsgY29tcG9uZW50TmFtZTogc3RyaW5nIH0sIGNvbmZpZ1Byb3BlcnR5OiBzdHJpbmcsIGNvbmZpZ1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgdXBzZXJ0Q29uZmlndXJhdGlvbkVudGl0eSh7XG4gICAgICAgIGlkOiB0aGlzLmdldENvbXBvbmVudENvbmZpZ05hbWUoc2VsZWN0b3IpLFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7IFtjb25maWdQcm9wZXJ0eV06IGNvbmZpZ1ZhbHVlIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb25maWd1cmF0aW9uIGZvciBhIHNwZWNpZmljIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gc2VsZWN0b3IgU2VsZWN0b3IgZm9yIGEgY29tcG9uZW50IGNvbmZpZ3VyYXRpb24uIEl0IGNhbiBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSBsaWJyYXJ5I2NvbmZpZ3VyYXRpb25OYW1lIChpLmU6IEBteS1saWIvc2hhcmVkLWNvbXBvbmVudHMjSGVhZGVyUHJlc0NvbmZpZylcbiAgICogb3IgYW4gb2JqZWN0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGxpYnJhcnkgbmFtZXMgKGkuZToge2xpYnJhcnk6XCJAbXktbGliL3NoYXJlZC1jb21wb25lbnRzXCIsIGNvbXBvbmVudE5hbWU6J0hlYWRlclByZXNDb25maWcnfSlcbiAgICovXG4gIHB1YmxpYyBnZXRDdXJyZW50Q29uZmlndXJhdGlvbkZvcihzZWxlY3Rvcjogc3RyaW5nIHwgeyBsaWJyYXJ5Pzogc3RyaW5nOyBjb21wb25lbnROYW1lOiBzdHJpbmcgfSk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuc3RvcmUucGlwZShcbiAgICAgICAgc2VsZWN0KHNlbGVjdENvbmZpZ3VyYXRpb25FbnRpdGllcyksXG4gICAgICAgIG1hcCgoZW50aXRpZXMpID0+IGVudGl0aWVzW3RoaXMuZ2V0Q29tcG9uZW50Q29uZmlnTmFtZShzZWxlY3RvcildIHx8IGVudGl0aWVzW3RoaXMuZ2V0Q29tcG9uZW50Q29uZmlnTmFtZShzZWxlY3RvciwgdHJ1ZSldKSxcbiAgICAgICAgZmlsdGVyKChlbnRpdHkpOiBlbnRpdHkgaXMgQ29uZmlndXJhdGlvbk1vZGVsID0+ICEhZW50aXR5KSxcbiAgICAgICAgbWFwKChlbnRpdHkpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGlkLCAuLi5jb25maWd1cmF0aW9uIH0gPSBlbnRpdHk7XG4gICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24gYXMgQ29uZmlndXJhdGlvbjtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2hvbGUgY29uZmlndXJhdGlvbiBvZiB0aGUgYXBwbGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXRDb25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmNvbmZpZ3VyYXRpb25FbnRpdGllcyQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBqc29uIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGNvbmZpZ3VyYXRpb25zIGNvbmZpZ3VyYXRpb25zIHRvIGxvYWRcbiAgICovXG4gIHB1YmxpYyBsb2FkQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uczogc3RyaW5nIHwgQ3VzdG9tQ29uZmlnPENvbmZpZ3VyYXRpb24+W10pOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHVwc2VydENvbmZpZ3VyYXRpb25FbnRpdGllcyhjb21wdXRlQ29uZmlndXJhdGlvbih0eXBlb2YgY29uZmlndXJhdGlvbnMgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShjb25maWd1cmF0aW9ucykgOiBjb25maWd1cmF0aW9ucykpKTtcbiAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gIH1cbn1cbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1kZXZ0b29scy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RldmtpdC9jb25maWd1cmF0aW9uLWRldnRvb2xzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsTUFBTSxFQUNOLEtBQUssR0FDTixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wscUJBQXFCLEdBR3RCLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCxjQUFjLEdBRWYsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsTUFBTSxFQUNOLEdBQUcsRUFDSCxXQUFXLEdBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsc0JBQXNCLEdBQ3ZCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFDTCxvQkFBb0IsRUFHcEIsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IseUJBQXlCLEdBQzFCLE1BQU0sV0FBVyxDQUFDO0FBSW5CLE9BQU8sRUFDTCw0Q0FBNEMsRUFDNUMsb0NBQW9DLEdBQ3JDLE1BQU0sZ0NBQWdDLENBQUM7OztBQUd4QyxNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLFlBQ1ksS0FBZ0MsRUFDekIsTUFBc0IsRUFDb0MsT0FBNEM7UUFGN0csVUFBSyxHQUFMLEtBQUssQ0FBMkI7UUFDekIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDb0MsWUFBTyxHQUFQLE9BQU8sQ0FBcUM7UUFDdkgsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsNENBQTRDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUUvRSwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxLQUFL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c0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgc2VsZWN0LFxuICBTdG9yZSxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgY29tcHV0ZUl0ZW1JZGVudGlmaWVyLFxuICBDb25maWd1cmF0aW9uLFxuICBDdXN0b21Db25maWcsXG59IGZyb20gJ0BvM3IvY29yZSc7XG5pbXBvcnQge1xuICBmaXJzdFZhbHVlRnJvbSxcbiAgT2JzZXJ2YWJsZSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBmaWx0ZXIsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIHBhcnNlQ29uZmlndXJhdGlvbk5hbWUsXG59IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHtcbiAgY29tcHV0ZUNvbmZpZ3VyYXRpb24sXG4gIENvbmZpZ3VyYXRpb25Nb2RlbCxcbiAgQ29uZmlndXJhdGlvblN0b3JlLFxuICBzZWxlY3RDb25maWd1cmF0aW9uRW50aXRpZXMsXG4gIHNlbGVjdENvbmZpZ3VyYXRpb25JZHMsXG4gIHVwc2VydENvbmZpZ3VyYXRpb25FbnRpdGllcyxcbiAgdXBzZXJ0Q29uZmlndXJhdGlvbkVudGl0eSxcbn0gZnJvbSAnLi4vc3RvcmVzJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25EZXZ0b29sc1NlcnZpY2VPcHRpb25zLFxufSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tZGV2dG9vbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIE9UVEVSX0NPTkZJR1VSQVRJT05fREVWVE9PTFNfREVGQVVMVF9PUFRJT05TLFxuICBPVFRFUl9DT05GSUdVUkFUSU9OX0RFVlRPT0xTX09QVElPTlMsXG59IGZyb20gJy4vY29uZmlndXJhdGlvbi1kZXZ0b29scy50b2tlbic7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgT3R0ZXJDb25maWd1cmF0aW9uRGV2dG9vbHMge1xuICAvKiogU3RyZWFtIG9mIGNvbmZpZ3VyYXRpb25zICovXG4gIHB1YmxpYyByZWFkb25seSBjb25maWd1cmF0aW9uRW50aXRpZXMkOiBPYnNlcnZhYmxlPEN1c3RvbUNvbmZpZ1tdPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPENvbmZpZ3VyYXRpb25TdG9yZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoT1RURVJfQ09ORklHVVJBVElPTl9ERVZUT09MU19PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IENvbmZpZ3VyYXRpb25EZXZ0b29sc1NlcnZpY2VPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5PVFRFUl9DT05GSUdVUkFUSU9OX0RFVlRPT0xTX0RFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gICAgLyoqIEZ1bGwgY29uZmlndXJhdGlvbiBzdG9yZSAqL1xuICAgIHRoaXMuY29uZmlndXJhdGlvbkVudGl0aWVzJCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICAgIHNlbGVjdChzZWxlY3RDb25maWd1cmF0aW9uRW50aXRpZXMpLFxuICAgICAgbWFwKChlbnRpdGllcykgPT5cbiAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRpdGllcylcbiAgICAgICAgICAuZmlsdGVyKChlbnRpdHkpOiBlbnRpdHkgaXMgQ29uZmlndXJhdGlvbk1vZGVsID0+ICEhZW50aXR5KVxuICAgICAgICAgIC5tYXAoKGVudGl0eSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBpZCwgLi4uY29uZmlnIH0gPSBlbnRpdHk7XG4gICAgICAgICAgICBjb25zdCB7IGxpYnJhcnkgPSB0aGlzLm9wdGlvbnMuZGVmYXVsdExpYnJhcnlOYW1lLCBjb21wb25lbnROYW1lOiBuYW1lID0gaWQgfSA9IHBhcnNlQ29uZmlndXJhdGlvbk5hbWUoaWQpIHx8IHt9O1xuICAgICAgICAgICAgcmV0dXJuIHsgbmFtZSwgY29uZmlnLCBsaWJyYXJ5IH0gc2F0aXNmaWVzIEN1c3RvbUNvbmZpZztcbiAgICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29uZmlndXJhdGlvbiBuYW1lIGJhc2VkIG9uIGlucHV0IGluZm9ybWF0aW9uXG4gICAqIEBwYXJhbSBzZWxlY3RvciBTZWxlY3RvciBmb3IgYSBjb21wb25lbnQgY29uZmlndXJhdGlvbi4gSXQgY2FuIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtIGxpYnJhcnkjY29tcG9uZW50TmFtZSAoaS5lOiBAbXktbGliL3NoYXJlZC1jb21wb25lbnRzI0hlYWRlckNvbnRDb21wb25lbnQpXG4gICAqIG9yIGFuIG9iamVjdCB3aXRoIHRoZSBjb21wb25lbnQgYW5kIGxpYnJhcnkgbmFtZXMgKGkuZToge2xpYnJhcnk6XCJAbXktbGliL3NoYXJlZC1jb21wb25lbnRzXCIsIGNvbXBvbmVudE5hbWU6J0hlYWRlckNvbnRDb21wb25lbnQnfSlcbiAgICogQHBhcmFtIGlzRmFsbGJhY2tOYW1lIERldGVybWluZSBpZiB0aGUgbmFtZSByZXF1ZXN0ZWQgaXMgYSBmYWxsYmFjayBuYW1lXG4gICAqIEByZXR1cm5zIHN0cmluZyBpbiB0aGUgZm9ybWF0IGxpYnJhcnkjY29tcG9uZW50TmFtZSAoaS5lOiBcIkBteS1saWIvc2hhcmVkLWNvbXBvbmVudHMjSGVhZGVyQ29udENvbXBvbmVudFwiKVxuICAgKi9cbiAgcHVibGljIGdldENvbXBvbmVudENvbmZpZ05hbWUoc2VsZWN0b3I6IHN0cmluZyB8IHsgbGlicmFyeT86IHN0cmluZzsgY29tcG9uZW50TmFtZTogc3RyaW5nIH0sIGlzRmFsbGJhY2tOYW1lID0gZmFsc2UpIHtcbiAgICBpZiAoIWlzRmFsbGJhY2tOYW1lKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHNlbGVjdG9yID09PSAnc3RyaW5nJyA/IHNlbGVjdG9yIDogY29tcHV0ZUl0ZW1JZGVudGlmaWVyKHNlbGVjdG9yLmNvbXBvbmVudE5hbWUsIHNlbGVjdG9yLmxpYnJhcnkgfHwgdGhpcy5vcHRpb25zLmRlZmF1bHRMaWJyYXJ5TmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVvZiBzZWxlY3RvciA9PT0gJ3N0cmluZydcbiAgICAgID8gY29tcHV0ZUl0ZW1JZGVudGlmaWVyKHNlbGVjdG9yLCB0aGlzLm9wdGlvbnMuZGVmYXVsdExpYnJhcnlOYW1lIHx8ICdnbG9iYWwnKVxuICAgICAgOiBjb21wdXRlSXRlbUlkZW50aWZpZXIoc2VsZWN0b3IuY29tcG9uZW50TmFtZSwgdGhpcy5vcHRpb25zLmRlZmF1bHRMaWJyYXJ5TmFtZSB8fCAnZ2xvYmFsJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSBhIGNvbmZpZ3VyYXRpb24gbG9hZGVkIGluIHRoZSBzdG9yZVxuICAgKi9cbiAgcHVibGljIGdldENvbXBvbmVudHNXaXRoQ29uZmlndXJhdGlvbigpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzZWxlY3Qoc2VsZWN0Q29uZmlndXJhdGlvbklkcyksXG4gICAgICAgICAgbWFwKChpZHMpID0+IGlkc1xuICAgICAgICAgICAgLm1hcCgoY29uZmlnTmFtZSkgPT4gcGFyc2VDb25maWd1cmF0aW9uTmFtZShjb25maWdOYW1lLnRvU3RyaW5nKCkpKVxuICAgICAgICAgICAgLmZpbHRlcigocGFyc2VkTmFtZSk6IHBhcnNlZE5hbWUgaXMgeyBsaWJyYXJ5Pzogc3RyaW5nOyBjb21wb25lbnROYW1lOiBzdHJpbmcgfSA9PiAhIXBhcnNlZE5hbWUpXG4gICAgICAgICAgICAubWFwKChwYXJzZWROYW1lKSA9PiBwYXJzZWROYW1lLmNvbXBvbmVudE5hbWUgKyAocGFyc2VkTmFtZS5saWJyYXJ5ID8gJyBmcm9tICcgKyBwYXJzZWROYW1lLmxpYnJhcnkgOiAnJykpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBzcGVjaWZpZWQgdmFsdWUgb2YgYSBjb21wb25lbnQgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gc2VsZWN0b3IgU2VsZWN0b3IgZm9yIGEgY29tcG9uZW50IGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGNvbmZpZ1Byb3BlcnR5IE5hbWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgdG8gc2V0XG4gICAqIEBwYXJhbSBjb25maWdWYWx1ZSBWYWx1ZSBvZiB0aGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSB0byBzZXRcbiAgICovXG4gIHB1YmxpYyBzZXREeW5hbWljQ29uZmlnKHNlbGVjdG9yOiBzdHJpbmcgfCB7IGxpYnJhcnk/OiBzdHJpbmc7IGNvbXBvbmVudE5hbWU6IHN0cmluZyB9LCBjb25maWdQcm9wZXJ0eTogc3RyaW5nLCBjb25maWdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIHVwc2VydENvbmZpZ3VyYXRpb25FbnRpdHkoe1xuICAgICAgICBpZDogdGhpcy5nZXRDb21wb25lbnRDb25maWdOYW1lKHNlbGVjdG9yKSxcbiAgICAgICAgY29uZmlndXJhdGlvbjogeyBbY29uZmlnUHJvcGVydHldOiBjb25maWdWYWx1ZSB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5hcHBSZWYudGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY29uZmlndXJhdGlvbiBmb3IgYSBzcGVjaWZpYyBjb21wb25lbnRcbiAgICogQHBhcmFtIHNlbGVjdG9yIFNlbGVjdG9yIGZvciBhIGNvbXBvbmVudCBjb25maWd1cmF0aW9uLiBJdCBjYW4gYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gbGlicmFyeSNjb25maWd1cmF0aW9uTmFtZSAoaS5lOiBAbXktbGliL3NoYXJlZC1jb21wb25lbnRzI0hlYWRlclByZXNDb25maWcpXG4gICAqIG9yIGFuIG9iamVjdCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIGFuZCBsaWJyYXJ5IG5hbWVzIChpLmU6IHtsaWJyYXJ5OlwiQG15LWxpYi9zaGFyZWQtY29tcG9uZW50c1wiLCBjb21wb25lbnROYW1lOidIZWFkZXJQcmVzQ29uZmlnJ30pXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudENvbmZpZ3VyYXRpb25Gb3Ioc2VsZWN0b3I6IHN0cmluZyB8IHsgbGlicmFyeT86IHN0cmluZzsgY29tcG9uZW50TmFtZTogc3RyaW5nIH0pOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+IHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnN0b3JlLnBpcGUoXG4gICAgICAgIHNlbGVjdChzZWxlY3RDb25maWd1cmF0aW9uRW50aXRpZXMpLFxuICAgICAgICBtYXAoKGVudGl0aWVzKSA9PiBlbnRpdGllc1t0aGlzLmdldENvbXBvbmVudENvbmZpZ05hbWUoc2VsZWN0b3IpXSB8fCBlbnRpdGllc1t0aGlzLmdldENvbXBvbmVudENvbmZpZ05hbWUoc2VsZWN0b3IsIHRydWUpXSksXG4gICAgICAgIGZpbHRlcigoZW50aXR5KTogZW50aXR5IGlzIENvbmZpZ3VyYXRpb25Nb2RlbCA9PiAhIWVudGl0eSksXG4gICAgICAgIG1hcCgoZW50aXR5KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBpZCwgLi4uY29uZmlndXJhdGlvbiB9ID0gZW50aXR5O1xuICAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uIGFzIENvbmZpZ3VyYXRpb247XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHdob2xlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29uZmlndXJhdGlvbigpIHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5jb25maWd1cmF0aW9uRW50aXRpZXMkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEganNvbiBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBjb25maWd1cmF0aW9ucyBjb25maWd1cmF0aW9ucyB0byBsb2FkXG4gICAqL1xuICBwdWJsaWMgbG9hZENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbnM6IHN0cmluZyB8IEN1c3RvbUNvbmZpZzxDb25maWd1cmF0aW9uPltdKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh1cHNlcnRDb25maWd1cmF0aW9uRW50aXRpZXMoY29tcHV0ZUNvbmZpZ3VyYXRpb24odHlwZW9mIGNvbmZpZ3VyYXRpb25zID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoY29uZmlndXJhdGlvbnMpIDogY29uZmlndXJhdGlvbnMpKSk7XG4gICAgdGhpcy5hcHBSZWYudGljaygpO1xuICB9XG59XG4iXX0=
@@ -17,14 +17,6 @@ const decorator = (target, key) => {
17
17
  });
18
18
  }
19
19
  };
20
- /**
21
- * Decorator to identify the configuration observer
22
- * @deprecated please use O3rConfig, will be removed in v12
23
- */
24
- // eslint-disable-next-line @typescript-eslint/naming-convention -- decorator should be PascalCase
25
- export function ConfigObserver() {
26
- return decorator;
27
- }
28
20
  /**
29
21
  * Decorator to identify the component's configuration
30
22
  */
@@ -32,4 +24,4 @@ export function ConfigObserver() {
32
24
  export function O3rConfig() {
33
25
  return decorator;
34
26
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5kZWNvcmF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xzL2NvbmZpZ3VyYXRpb24uZGVjb3JhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsOEJBQThCLEdBQy9CLE1BQU0sV0FBVyxDQUFDO0FBUW5CLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBVyxFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQzdDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFFL0IsSUFBSSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNqQyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUNELEdBQUcsRUFBRSxVQUFxQixLQUFnRjtnQkFDeEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDM0IsSUFBSSxJQUFJLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDO29CQUN6QyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDOUUsQ0FBQztZQUNILENBQUM7WUFDRCxVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsa0dBQWtHO0FBQ2xHLE1BQU0sVUFBVSxjQUFjO0lBQzVCLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7R0FFRztBQUNILGtHQUFrRztBQUNsRyxNQUFNLFVBQVUsU0FBUztJQUN2QixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbixcbiAgb3R0ZXJDb21wb25lbnRJbmZvUHJvcGVydHlOYW1lLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbk9ic2VydmVyLFxufSBmcm9tICcuL2NvbmZpZ3VyYXRpb24ub2JzZXJ2ZXInO1xuaW1wb3J0IHR5cGUge1xuICBDb25maWd1cmF0aW9uU2lnbmFsLFxufSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2lnbmFsJztcblxuY29uc3QgZGVjb3JhdG9yID0gKHRhcmdldDogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBwcml2YXRlRmllbGQgPSBgXyR7a2V5fWA7XG5cbiAgaWYgKGRlbGV0ZSB0YXJnZXRba2V5XSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAodGhpczogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzW3ByaXZhdGVGaWVsZF07XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAodGhpczogYW55LCB2YWx1ZTogQ29uZmlndXJhdGlvbk9ic2VydmVyPENvbmZpZ3VyYXRpb24+IHwgQ29uZmlndXJhdGlvblNpZ25hbDxDb25maWd1cmF0aW9uPikge1xuICAgICAgICB0aGlzW3ByaXZhdGVGaWVsZF0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXNbb3R0ZXJDb21wb25lbnRJbmZvUHJvcGVydHlOYW1lXSkge1xuICAgICAgICAgIHRoaXNbb3R0ZXJDb21wb25lbnRJbmZvUHJvcGVydHlOYW1lXS5jb25maWdJZCA9IHRoaXNbcHJpdmF0ZUZpZWxkXS5jb25maWdJZDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxufTtcblxuLyoqXG4gKiBEZWNvcmF0b3IgdG8gaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb2JzZXJ2ZXJcbiAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgTzNyQ29uZmlnLCB3aWxsIGJlIHJlbW92ZWQgaW4gdjEyXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gLS0gZGVjb3JhdG9yIHNob3VsZCBiZSBQYXNjYWxDYXNlXG5leHBvcnQgZnVuY3Rpb24gQ29uZmlnT2JzZXJ2ZXIoKSB7XG4gIHJldHVybiBkZWNvcmF0b3I7XG59XG5cbi8qKlxuICogRGVjb3JhdG9yIHRvIGlkZW50aWZ5IHRoZSBjb21wb25lbnQncyBjb25maWd1cmF0aW9uXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gLS0gZGVjb3JhdG9yIHNob3VsZCBiZSBQYXNjYWxDYXNlXG5leHBvcnQgZnVuY3Rpb24gTzNyQ29uZmlnKCkge1xuICByZXR1cm4gZGVjb3JhdG9yO1xufVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5kZWNvcmF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xzL2NvbmZpZ3VyYXRpb24uZGVjb3JhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsOEJBQThCLEdBQy9CLE1BQU0sV0FBVyxDQUFDO0FBUW5CLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBVyxFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQzdDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFFL0IsSUFBSSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNqQyxHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUNELEdBQUcsRUFBRSxVQUFxQixLQUFnRjtnQkFDeEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDM0IsSUFBSSxJQUFJLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDO29CQUN6QyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDOUUsQ0FBQztZQUNILENBQUM7WUFDRCxVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxrR0FBa0c7QUFDbEcsTUFBTSxVQUFVLFNBQVM7SUFDdkIsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb24sXG4gIG90dGVyQ29tcG9uZW50SW5mb1Byb3BlcnR5TmFtZSxcbn0gZnJvbSAnQG8zci9jb3JlJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25PYnNlcnZlcixcbn0gZnJvbSAnLi9jb25maWd1cmF0aW9uLm9ic2VydmVyJztcbmltcG9ydCB0eXBlIHtcbiAgQ29uZmlndXJhdGlvblNpZ25hbCxcbn0gZnJvbSAnLi9jb25maWd1cmF0aW9uLnNpZ25hbCc7XG5cbmNvbnN0IGRlY29yYXRvciA9ICh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcHJpdmF0ZUZpZWxkID0gYF8ke2tleX1gO1xuXG4gIGlmIChkZWxldGUgdGFyZ2V0W2tleV0pIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpc1twcml2YXRlRmllbGRdO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHRoaXM6IGFueSwgdmFsdWU6IENvbmZpZ3VyYXRpb25PYnNlcnZlcjxDb25maWd1cmF0aW9uPiB8IENvbmZpZ3VyYXRpb25TaWduYWw8Q29uZmlndXJhdGlvbj4pIHtcbiAgICAgICAgdGhpc1twcml2YXRlRmllbGRdID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzW290dGVyQ29tcG9uZW50SW5mb1Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICB0aGlzW290dGVyQ29tcG9uZW50SW5mb1Byb3BlcnR5TmFtZV0uY29uZmlnSWQgPSB0aGlzW3ByaXZhdGVGaWVsZF0uY29uZmlnSWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cbn07XG5cbi8qKlxuICogRGVjb3JhdG9yIHRvIGlkZW50aWZ5IHRoZSBjb21wb25lbnQncyBjb25maWd1cmF0aW9uXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gLS0gZGVjb3JhdG9yIHNob3VsZCBiZSBQYXNjYWxDYXNlXG5leHBvcnQgZnVuY3Rpb24gTzNyQ29uZmlnKCkge1xuICByZXR1cm4gZGVjb3JhdG9yO1xufVxuIl19
@@ -3,9 +3,14 @@ import { toObservable, toSignal, } from '@angular/core/rxjs-interop';
3
3
  import { shareReplay, } from 'rxjs';
4
4
  import { getConfiguration, } from '../core';
5
5
  import { ConfigurationBaseService, } from '../services';
6
- // eslint-disable-next-line jsdoc/require-jsdoc -- overload signature will be removed in v12
7
- export function configSignal(configInput, configId, defaultConfig, configurationService) {
8
- configurationService = configurationService ?? inject(ConfigurationBaseService, { optional: true });
6
+ /**
7
+ * Get a configuration signal
8
+ * @param configInput
9
+ * @param configId
10
+ * @param defaultConfig
11
+ */
12
+ export function configSignal(configInput, configId, defaultConfig) {
13
+ const configurationService = inject(ConfigurationBaseService, { optional: true });
9
14
  if (configurationService) {
10
15
  configurationService.extendConfiguration(defaultConfig, configId);
11
16
  }
@@ -13,4 +18,4 @@ export function configSignal(configInput, configId, defaultConfig, configuration
13
18
  signal.configId = configId;
14
19
  return signal;
15
20
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zaWduYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvY29uZmlndXJhdGlvbi5zaWduYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsWUFBWSxFQUNaLFFBQVEsR0FDVCxNQUFNLDRCQUE0QixDQUFDO0FBSXBDLE9BQU8sRUFDTCxXQUFXLEdBQ1osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsZ0JBQWdCLEdBQ2pCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFDTCx3QkFBd0IsR0FDekIsTUFBTSxhQUFhLENBQUM7QUErQnJCLDRGQUE0RjtBQUM1RixNQUFNLFVBQVUsWUFBWSxDQUMxQixXQUFnRCxFQUNoRCxRQUFnQixFQUNoQixhQUFnQixFQUNoQixvQkFBc0Q7SUFFdEQsb0JBQW9CLEdBQUcsb0JBQW9CLElBQUksTUFBTSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pCLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQTJCLFFBQVEsQ0FDN0MsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDNUIsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEVBQ3pILFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLEVBQ0QsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLENBQ04sQ0FBQztJQUM1QixNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaW5qZWN0LFxuICB0eXBlIElucHV0U2lnbmFsLFxuICB0eXBlIFNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICB0b09ic2VydmFibGUsXG4gIHRvU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbmZpZ3VyYXRpb24sXG59IGZyb20gJ0BvM3IvY29yZSc7XG5pbXBvcnQge1xuICBzaGFyZVJlcGxheSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBnZXRDb25maWd1cmF0aW9uLFxufSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25CYXNlU2VydmljZSxcbn0gZnJvbSAnLi4vc2VydmljZXMnO1xuXG4vKiogQ29uZmlndXJhdGlvbiBzaWduYWwgKi9cbmV4cG9ydCB0eXBlIENvbmZpZ3VyYXRpb25TaWduYWw8VD4gPSBTaWduYWw8VD4gJiB7IGNvbmZpZ0lkOiBzdHJpbmcgfTtcblxuLyoqXG4gKiBHZXQgYSBjb25maWd1cmF0aW9uIHNpZ25hbFxuICogQHBhcmFtIGNvbmZpZ0lucHV0XG4gKiBAcGFyYW0gY29uZmlnSWRcbiAqIEBwYXJhbSBkZWZhdWx0Q29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25maWdTaWduYWw8VCBleHRlbmRzIENvbmZpZ3VyYXRpb24+KFxuICBjb25maWdJbnB1dDogSW5wdXRTaWduYWw8UGFydGlhbDxUPiB8IHVuZGVmaW5lZD4sXG4gIGNvbmZpZ0lkOiBzdHJpbmcsXG4gIGRlZmF1bHRDb25maWc6IFRcbik6IENvbmZpZ3VyYXRpb25TaWduYWw8VD47XG4vKipcbiAqIEdldCBhIGNvbmZpZ3VyYXRpb24gc2lnbmFsXG4gKiBAcGFyYW0gY29uZmlnSW5wdXRcbiAqIEBwYXJhbSBjb25maWdJZFxuICogQHBhcmFtIGRlZmF1bHRDb25maWdcbiAqIEBwYXJhbSBjb25maWd1cmF0aW9uU2VydmljZVxuICogQGRlcHJlY2F0ZWQgcGxlYXNlIGRvIG5vdCBwcm92aWRlIGBjb25maWd1cmF0aW9uU2VydmljZWAsIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ1NpZ25hbDxUIGV4dGVuZHMgQ29uZmlndXJhdGlvbj4oXG4gIGNvbmZpZ0lucHV0OiBJbnB1dFNpZ25hbDxQYXJ0aWFsPFQ+IHwgdW5kZWZpbmVkPixcbiAgY29uZmlnSWQ6IHN0cmluZyxcbiAgZGVmYXVsdENvbmZpZzogVCxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmlmaWVkLXNpZ25hdHVyZXMgLS0gZGVwcmVjYXRlZCB3aWxsIGJlIHJlbW92ZWQgaW4gdjEyXG4gIGNvbmZpZ3VyYXRpb25TZXJ2aWNlPzogQ29uZmlndXJhdGlvbkJhc2VTZXJ2aWNlIHwgbnVsbFxuKTogQ29uZmlndXJhdGlvblNpZ25hbDxUPjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jIC0tIG92ZXJsb2FkIHNpZ25hdHVyZSB3aWxsIGJlIHJlbW92ZWQgaW4gdjEyXG5leHBvcnQgZnVuY3Rpb24gY29uZmlnU2lnbmFsPFQgZXh0ZW5kcyBDb25maWd1cmF0aW9uPihcbiAgY29uZmlnSW5wdXQ6IElucHV0U2lnbmFsPFBhcnRpYWw8VD4gfCB1bmRlZmluZWQ+LFxuICBjb25maWdJZDogc3RyaW5nLFxuICBkZWZhdWx0Q29uZmlnOiBULFxuICBjb25maWd1cmF0aW9uU2VydmljZT86IENvbmZpZ3VyYXRpb25CYXNlU2VydmljZSB8IG51bGxcbik6IENvbmZpZ3VyYXRpb25TaWduYWw8VD4ge1xuICBjb25maWd1cmF0aW9uU2VydmljZSA9IGNvbmZpZ3VyYXRpb25TZXJ2aWNlID8/IGluamVjdChDb25maWd1cmF0aW9uQmFzZVNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIGlmIChjb25maWd1cmF0aW9uU2VydmljZSkge1xuICAgIGNvbmZpZ3VyYXRpb25TZXJ2aWNlLmV4dGVuZENvbmZpZ3VyYXRpb24oZGVmYXVsdENvbmZpZywgY29uZmlnSWQpO1xuICB9XG5cbiAgY29uc3Qgc2lnbmFsOiBDb25maWd1cmF0aW9uU2lnbmFsPFQ+ID0gdG9TaWduYWwoXG4gICAgdG9PYnNlcnZhYmxlKGNvbmZpZ0lucHV0KS5waXBlKFxuICAgICAgY29uZmlndXJhdGlvblNlcnZpY2UgPyBjb25maWd1cmF0aW9uU2VydmljZS5nZXRDb21wb25lbnRDb25maWcoY29uZmlnSWQsIGRlZmF1bHRDb25maWcpIDogZ2V0Q29uZmlndXJhdGlvbihkZWZhdWx0Q29uZmlnKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSlcbiAgICApLFxuICAgIHsgaW5pdGlhbFZhbHVlOiBkZWZhdWx0Q29uZmlnIH1cbiAgKSBhcyBDb25maWd1cmF0aW9uU2lnbmFsPFQ+O1xuICBzaWduYWwuY29uZmlnSWQgPSBjb25maWdJZDtcbiAgcmV0dXJuIHNpZ25hbDtcbn1cbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zaWduYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvY29uZmlndXJhdGlvbi5zaWduYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsWUFBWSxFQUNaLFFBQVEsR0FDVCxNQUFNLDRCQUE0QixDQUFDO0FBSXBDLE9BQU8sRUFDTCxXQUFXLEdBQ1osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsZ0JBQWdCLEdBQ2pCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFDTCx3QkFBd0IsR0FDekIsTUFBTSxhQUFhLENBQUM7QUFLckI7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixXQUFnRCxFQUNoRCxRQUFnQixFQUNoQixhQUFnQjtJQUVoQixNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUN6QixvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUEyQixRQUFRLENBQzdDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQzVCLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxFQUN6SCxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvQyxFQUNELEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxDQUNOLENBQUM7SUFDNUIsTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGluamVjdCxcbiAgdHlwZSBJbnB1dFNpZ25hbCxcbiAgdHlwZSBTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgdG9PYnNlcnZhYmxlLFxuICB0b1NpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHR5cGUge1xuICBDb25maWd1cmF0aW9uLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHtcbiAgc2hhcmVSZXBsYXksXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZ2V0Q29uZmlndXJhdGlvbixcbn0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uQmFzZVNlcnZpY2UsXG59IGZyb20gJy4uL3NlcnZpY2VzJztcblxuLyoqIENvbmZpZ3VyYXRpb24gc2lnbmFsICovXG5leHBvcnQgdHlwZSBDb25maWd1cmF0aW9uU2lnbmFsPFQ+ID0gU2lnbmFsPFQ+ICYgeyBjb25maWdJZDogc3RyaW5nIH07XG5cbi8qKlxuICogR2V0IGEgY29uZmlndXJhdGlvbiBzaWduYWxcbiAqIEBwYXJhbSBjb25maWdJbnB1dFxuICogQHBhcmFtIGNvbmZpZ0lkXG4gKiBAcGFyYW0gZGVmYXVsdENvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZmlnU2lnbmFsPFQgZXh0ZW5kcyBDb25maWd1cmF0aW9uPihcbiAgY29uZmlnSW5wdXQ6IElucHV0U2lnbmFsPFBhcnRpYWw8VD4gfCB1bmRlZmluZWQ+LFxuICBjb25maWdJZDogc3RyaW5nLFxuICBkZWZhdWx0Q29uZmlnOiBUXG4pOiBDb25maWd1cmF0aW9uU2lnbmFsPFQ+IHtcbiAgY29uc3QgY29uZmlndXJhdGlvblNlcnZpY2UgPSBpbmplY3QoQ29uZmlndXJhdGlvbkJhc2VTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBpZiAoY29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAgICBjb25maWd1cmF0aW9uU2VydmljZS5leHRlbmRDb25maWd1cmF0aW9uKGRlZmF1bHRDb25maWcsIGNvbmZpZ0lkKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ25hbDogQ29uZmlndXJhdGlvblNpZ25hbDxUPiA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZShjb25maWdJbnB1dCkucGlwZShcbiAgICAgIGNvbmZpZ3VyYXRpb25TZXJ2aWNlID8gY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0Q29tcG9uZW50Q29uZmlnKGNvbmZpZ0lkLCBkZWZhdWx0Q29uZmlnKSA6IGdldENvbmZpZ3VyYXRpb24oZGVmYXVsdENvbmZpZyksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKSxcbiAgICB7IGluaXRpYWxWYWx1ZTogZGVmYXVsdENvbmZpZyB9XG4gICkgYXMgQ29uZmlndXJhdGlvblNpZ25hbDxUPjtcbiAgc2lnbmFsLmNvbmZpZ0lkID0gY29uZmlnSWQ7XG4gIHJldHVybiBzaWduYWw7XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { computeItemIdentifier, deepFill, sendOtterMessage, filterMessageContent, otterComponentInfoPropertyName } from '@o3r/core';
1
+ import { deepFill, computeItemIdentifier, sendOtterMessage, filterMessageContent, otterComponentInfoPropertyName } from '@o3r/core';
2
2
  import { map, distinctUntilChanged, shareReplay, filter, take, switchMap } from 'rxjs/operators';
3
3
  import * as i0 from '@angular/core';
4
4
  import { InjectionToken, NgModule, Injectable, Optional, Inject, inject, DestroyRef } from '@angular/core';
@@ -10,15 +10,6 @@ import { takeUntilDestroyed, toSignal, toObservable } from '@angular/core/rxjs-i
10
10
  import * as i2 from '@o3r/logger';
11
11
  import { LoggerModule } from '@o3r/logger';
12
12
 
13
- /**
14
- * Get the configuration name
15
- * @deprecated use {@link computeItemIdentifier} from @o3r/core. Will be removed in v12
16
- * @param componentName Name of the component to get the configuration
17
- * @param libraryName Name of the library the component is coming from
18
- */
19
- function computeConfigurationName(componentName, libraryName) {
20
- return computeItemIdentifier(componentName, libraryName);
21
- }
22
13
  /**
23
14
  * Get the component and library's names based on the configuration name
24
15
  * @param configurationName Name of the component as found in the store
@@ -307,11 +298,11 @@ class OtterConfigurationDevtools {
307
298
  */
308
299
  getComponentConfigName(selector, isFallbackName = false) {
309
300
  if (!isFallbackName) {
310
- return typeof selector === 'string' ? selector : computeConfigurationName(selector.componentName, selector.library || this.options.defaultLibraryName);
301
+ return typeof selector === 'string' ? selector : computeItemIdentifier(selector.componentName, selector.library || this.options.defaultLibraryName);
311
302
  }
312
303
  return typeof selector === 'string'
313
- ? computeConfigurationName(selector, this.options.defaultLibraryName || 'global')
314
- : computeConfigurationName(selector.componentName, this.options.defaultLibraryName || 'global');
304
+ ? computeItemIdentifier(selector, this.options.defaultLibraryName || 'global')
305
+ : computeItemIdentifier(selector.componentName, this.options.defaultLibraryName || 'global');
315
306
  }
316
307
  /**
317
308
  * Get the list of components which have a configuration loaded in the store
@@ -468,14 +459,6 @@ class ConfigurationDevtoolsConsoleService {
468
459
  const configs = await firstValueFrom(this.configurationDevtools.configurationEntities$);
469
460
  this.copyElementToClipboard(JSON.stringify(configs));
470
461
  }
471
- /**
472
- * Load a json configuration
473
- * @param configurations configurations to load
474
- * @deprecated please use `updateConfigurations` instead, will be removed in Otter v12.
475
- */
476
- loadConfiguration(configurations) {
477
- this.configurationDevtools.loadConfiguration(configurations);
478
- }
479
462
  /**
480
463
  * Replace N configurations in one shot
481
464
  * @param configurations array of configurations to update
@@ -752,14 +735,6 @@ const decorator = (target, key) => {
752
735
  });
753
736
  }
754
737
  };
755
- /**
756
- * Decorator to identify the configuration observer
757
- * @deprecated please use O3rConfig, will be removed in v12
758
- */
759
- // eslint-disable-next-line @typescript-eslint/naming-convention -- decorator should be PascalCase
760
- function ConfigObserver() {
761
- return decorator;
762
- }
763
738
  /**
764
739
  * Decorator to identify the component's configuration
765
740
  */
@@ -803,9 +778,14 @@ class ConfigurationObserver {
803
778
  }
804
779
  }
805
780
 
806
- // eslint-disable-next-line jsdoc/require-jsdoc -- overload signature will be removed in v12
807
- function configSignal(configInput, configId, defaultConfig, configurationService) {
808
- configurationService = configurationService ?? inject(ConfigurationBaseService, { optional: true });
781
+ /**
782
+ * Get a configuration signal
783
+ * @param configInput
784
+ * @param configId
785
+ * @param defaultConfig
786
+ */
787
+ function configSignal(configInput, configId, defaultConfig) {
788
+ const configurationService = inject(ConfigurationBaseService, { optional: true });
809
789
  if (configurationService) {
810
790
  configurationService.extendConfiguration(defaultConfig, configId);
811
791
  }
@@ -818,5 +798,5 @@ function configSignal(configInput, configId, defaultConfig, configurationService
818
798
  * Generated bundle index. Do not edit.
819
799
  */
820
800
 
821
- export { CONFIGURATION_REDUCER_TOKEN, CONFIGURATION_STORE_NAME, CONFIG_OVERRIDE_REDUCER_TOKEN, CONFIG_OVERRIDE_STORE_NAME, ConfigObserver, ConfigOverrideStoreModule, ConfigurationBaseService, ConfigurationBaseServiceModule, ConfigurationDevtoolsConsoleService, ConfigurationDevtoolsMessageService, ConfigurationDevtoolsModule, ConfigurationObserver, ConfigurationStoreModule, O3rConfig, OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, OTTER_CONFIGURATION_DEVTOOLS_OPTIONS, OtterConfigurationDevtools, clearConfigurationEntities, computeConfiguration, computeConfigurationName, configOverrideInitialState, configOverrideReducer, configOverrideReducerFeatures, configOverrideStorageDeserializer, configOverrideStorageSync, configSignal, configurationAdapter, configurationInitialState, configurationReducer, configurationReducerFeatures, configurationStorageSync, getConfiguration, getDefaultConfigOverrideReducer, getDefaultConfigurationReducer, globalConfigurationId, isConfigurationMessage, parseConfigurationName, selectAllConfiguration, selectComponentOverrideConfig, selectConfigOverride, selectConfigOverrideState, selectConfigurationEntities, selectConfigurationForComponent, selectConfigurationIds, selectConfigurationState, selectConfigurationTotal, selectGlobalConfiguration, setConfigOverride, setConfigurationEntities, updateConfigurationEntities, updateConfigurationEntity, upsertConfigurationEntities, upsertConfigurationEntity };
801
+ export { CONFIGURATION_REDUCER_TOKEN, CONFIGURATION_STORE_NAME, CONFIG_OVERRIDE_REDUCER_TOKEN, CONFIG_OVERRIDE_STORE_NAME, ConfigOverrideStoreModule, ConfigurationBaseService, ConfigurationBaseServiceModule, ConfigurationDevtoolsConsoleService, ConfigurationDevtoolsMessageService, ConfigurationDevtoolsModule, ConfigurationObserver, ConfigurationStoreModule, O3rConfig, OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, OTTER_CONFIGURATION_DEVTOOLS_OPTIONS, OtterConfigurationDevtools, clearConfigurationEntities, computeConfiguration, configOverrideInitialState, configOverrideReducer, configOverrideReducerFeatures, configOverrideStorageDeserializer, configOverrideStorageSync, configSignal, configurationAdapter, configurationInitialState, configurationReducer, configurationReducerFeatures, configurationStorageSync, getConfiguration, getDefaultConfigOverrideReducer, getDefaultConfigurationReducer, globalConfigurationId, isConfigurationMessage, parseConfigurationName, selectAllConfiguration, selectComponentOverrideConfig, selectConfigOverride, selectConfigOverrideState, selectConfigurationEntities, selectConfigurationForComponent, selectConfigurationIds, selectConfigurationState, selectConfigurationTotal, selectGlobalConfiguration, setConfigOverride, setConfigurationEntities, updateConfigurationEntities, updateConfigurationEntity, upsertConfigurationEntities, upsertConfigurationEntity };
822
802
  //# sourceMappingURL=o3r-configuration.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"o3r-configuration.mjs","sources":["../../src/core/configuration.ts","../../src/stores/config-override/config-override.actions.ts","../../src/stores/config-override/config-override.reducer.ts","../../src/stores/config-override/config-override.state.ts","../../src/stores/config-override/config-override.module.ts","../../src/stores/config-override/config-override.selectors.ts","../../src/stores/config-override/config-override.sync.ts","../../src/stores/configuration/configuration.actions.ts","../../src/stores/configuration/configuration.helpers.ts","../../src/stores/configuration/configuration.reducer.ts","../../src/stores/configuration/configuration.state.ts","../../src/stores/configuration/configuration.module.ts","../../src/stores/configuration/configuration.selectors.ts","../../src/stores/configuration/configuration.sync.ts","../../src/devkit/configuration-devtools.token.ts","../../src/devkit/configuration-devtools.service.ts","../../src/devkit/configuration-devtools.console.service.ts","../../src/devkit/configuration-devtools.interface.ts","../../src/devkit/configuration-devtools.message.service.ts","../../src/devkit/configuration-devtools.module.ts","../../src/services/configuration/configuration.base.module.ts","../../src/services/configuration/configuration.base.service.ts","../../src/tools/configuration.decorators.ts","../../src/tools/configuration.observer.ts","../../src/tools/configuration.signal.ts","../../src/o3r-configuration.ts"],"sourcesContent":["import {\n computeItemIdentifier,\n deepFill,\n} from '@o3r/core';\nimport {\n Observable,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n shareReplay,\n} from 'rxjs/operators';\n\n/**\n * Interface to define the error messages into component configuration\n */\nexport interface ErrorMessages {\n /**\n * Error message map\n */\n errorMessages: { [key: string]: string };\n}\n\n/**\n * Interface to specify that the component has an ID\n */\nexport interface Identifiable {\n /**\n * Identifier\n */\n id: string;\n}\n\n/**\n * Get the configuration name\n * @deprecated use {@link computeItemIdentifier} from @o3r/core. Will be removed in v12\n * @param componentName Name of the component to get the configuration\n * @param libraryName Name of the library the component is coming from\n */\nexport function computeConfigurationName(componentName: string, libraryName?: string) {\n return computeItemIdentifier(componentName, libraryName);\n}\n\n/**\n * Get the component and library's names based on the configuration name\n * @param configurationName Name of the component as found in the store\n * @returns Object containing library and component name.\n */\nexport function parseConfigurationName(configurationName: string): { library?: string; libraryName?: string; componentName: string } | undefined {\n const parsedConfigurationName = configurationName.match(/^([^#]*)#(.*)$/i);\n if (parsedConfigurationName) {\n return {\n library: parsedConfigurationName.length > 2 ? parsedConfigurationName[1] : undefined,\n componentName: parsedConfigurationName.length > 2 ? parsedConfigurationName[2] : parsedConfigurationName[0]\n };\n }\n}\n\n/**\n * Operator to get the configuration from store for a given component and merge it with the global config\n * @param defaultValue Default value of the configuration\n */\nexport function getConfiguration<T extends Record<string, unknown>>(defaultValue: T) {\n return <C extends Partial<T>>(source: Observable<C | undefined >): Observable<T> =>\n source.pipe(\n map((configOverride) => {\n return deepFill(defaultValue, configOverride);\n }),\n distinctUntilChanged((prev, current) => JSON.stringify(prev) === JSON.stringify(current)),\n shareReplay({ refCount: true, bufferSize: 1 })\n );\n}\n","import {\n createAction,\n props,\n} from '@ngrx/store';\nimport {\n SetStateActionPayload,\n} from '@o3r/core';\nimport {\n ConfigOverrideState,\n} from './config-override.state';\n\n/** Actions */\nconst ACTION_SET = '[ConfigOverride] set';\n\n/**\n * Clear all overrides and fill the store with the payload\n */\nexport const setConfigOverride = createAction(ACTION_SET, props<SetStateActionPayload<ConfigOverrideState>>());\n","import {\n ActionCreator,\n createReducer,\n on,\n ReducerTypes,\n} from '@ngrx/store';\nimport * as actions from './config-override.actions';\nimport {\n ConfigOverrideState,\n} from './config-override.state';\n\n/**\n * ConfigOverride Store initial value\n */\nexport const configOverrideInitialState: ConfigOverrideState = { configOverrides: {} };\n\n/**\n * List of basic actions for ConfigOverride Store\n */\nexport const configOverrideReducerFeatures: ReducerTypes<ConfigOverrideState, ActionCreator[]>[] = [\n on(actions.setConfigOverride, (_state, payload) => ({ ...payload.state }))\n];\n\n/**\n * ConfigOverride Store reducer\n */\nexport const configOverrideReducer = createReducer(\n configOverrideInitialState,\n ...configOverrideReducerFeatures\n);\n","/**\n * Property override model\n */\nexport interface PropertyOverride {\n [property: string]: any;\n}\n\n/**\n * ConfigOverride store state\n */\nexport interface ConfigOverrideState {\n /** Map of PropertyOverride indexed on component + config name */\n configOverrides: Record<string, PropertyOverride>;\n}\n\n/**\n * Name of the ConfigOverride Store\n */\nexport const CONFIG_OVERRIDE_STORE_NAME = 'configOverride';\n\n/**\n * ConfigOverride Store Interface\n */\nexport interface ConfigOverrideStore {\n /** ConfigOverride state */\n [CONFIG_OVERRIDE_STORE_NAME]: ConfigOverrideState;\n}\n","import {\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n StoreModule,\n} from '@ngrx/store';\nimport {\n configOverrideReducer,\n} from './config-override.reducer';\nimport {\n CONFIG_OVERRIDE_STORE_NAME,\n ConfigOverrideState,\n} from './config-override.state';\n\n/** Token of the ConfigOverride reducer */\nexport const CONFIG_OVERRIDE_REDUCER_TOKEN = new InjectionToken<ActionReducer<ConfigOverrideState, Action>>('Feature ConfigOverride Reducer');\n\n/** Provide default reducer for ConfigOverride store */\nexport function getDefaultConfigOverrideReducer() {\n return configOverrideReducer;\n}\n\n@NgModule({\n imports: [\n StoreModule.forFeature(CONFIG_OVERRIDE_STORE_NAME, CONFIG_OVERRIDE_REDUCER_TOKEN)\n ],\n providers: [\n { provide: CONFIG_OVERRIDE_REDUCER_TOKEN, useFactory: getDefaultConfigOverrideReducer }\n ]\n})\nexport class ConfigOverrideStoreModule {\n public static forRoot<T extends ConfigOverrideState>(reducerFactory: () => ActionReducer<T, Action>): ModuleWithProviders<ConfigOverrideStoreModule> {\n return {\n ngModule: ConfigOverrideStoreModule,\n providers: [\n { provide: CONFIG_OVERRIDE_REDUCER_TOKEN, useFactory: reducerFactory }\n ]\n };\n }\n}\n","import {\n createFeatureSelector,\n createSelector,\n} from '@ngrx/store';\nimport {\n CONFIG_OVERRIDE_STORE_NAME,\n ConfigOverrideState,\n} from './config-override.state';\n\n/** Select ConfigOverride State */\nexport const selectConfigOverrideState = createFeatureSelector<ConfigOverrideState>(CONFIG_OVERRIDE_STORE_NAME);\n\n/** Select the array of ConfigOverride */\nexport const selectConfigOverride = createSelector(selectConfigOverrideState, (state) => state?.configOverrides || {});\n\n/**\n * Get the override for given component identifier\n * @param componentId\n */\nexport const selectComponentOverrideConfig = (componentId: string) => createSelector(selectConfigOverride, (configOverrides) => configOverrides[componentId] || {});\n","import {\n Serializer,\n} from '@o3r/core';\nimport {\n configOverrideInitialState,\n} from './config-override.reducer';\nimport {\n ConfigOverrideState,\n} from './config-override.state';\n\n/**\n * Deserializer\n * @param rawObject\n */\nexport const configOverrideStorageDeserializer = (rawObject: any) => {\n if (!rawObject) {\n return configOverrideInitialState;\n }\n return rawObject;\n};\n\nexport const configOverrideStorageSync: Serializer<ConfigOverrideState> = {\n deserialize: configOverrideStorageDeserializer\n};\n","import {\n createAction,\n props,\n} from '@ngrx/store';\nimport {\n Configuration,\n} from '@o3r/core';\n\nexport interface SetConfigurationEntitiesPayload {\n /** Map of configurations to update/insert, this is now Partial due the change of Configuration interface */\n entities: { [id: string]: Partial<Configuration> };\n}\n\nexport interface UpsertConfigurationEntityPayload {\n /** ID of the item */\n id: string;\n /** Updated/New configuration object */\n configuration: Partial<Configuration>;\n}\n\nexport interface UpdateConfigurationEntityPayload {\n /** ID of the item */\n id: string;\n /** Updated/New configuration partial object */\n configuration: Partial<Configuration>;\n}\n\n/** Entity Actions */\nconst ACTION_CLEAR_ENTITIES = '[Configuration] clear entities';\nconst ACTION_UPDATE_ENTITIES = '[Configuration] update entities';\nconst ACTION_UPSERT_ENTITIES = '[Configuration] upsert entities';\nconst ACTION_SET_ENTITIES = '[Configuration] set entities';\nconst ACTION_UPDATE_CONFIGURATION_ENTITY = '[Configuration] update configuration entity';\nconst ACTION_UPSERT_CONFIGURATION_ENTITY = '[Configuration] set configuration entity';\n\n/**\n * Upsert one configuration entity\n */\nexport const upsertConfigurationEntity = createAction(ACTION_UPSERT_CONFIGURATION_ENTITY, props<UpsertConfigurationEntityPayload>());\n\n/**\n * Update one configuration entity\n */\nexport const updateConfigurationEntity = createAction(ACTION_UPDATE_CONFIGURATION_ENTITY, props<UpdateConfigurationEntityPayload>());\n\n/**\n * Clear all configuration and fill the store with the payload\n */\nexport const setConfigurationEntities = createAction(ACTION_SET_ENTITIES, props<SetConfigurationEntitiesPayload>());\n\n/**\n * Update configuration with known IDs, ignore the new ones\n */\nexport const updateConfigurationEntities = createAction(ACTION_UPDATE_ENTITIES, props<SetConfigurationEntitiesPayload>());\n\n/**\n * Update configuration with known IDs, insert the new ones\n */\nexport const upsertConfigurationEntities = createAction(ACTION_UPSERT_ENTITIES, props<SetConfigurationEntitiesPayload>());\n\n/**\n * Clear only the entities, keeps the other attributes in the state\n */\nexport const clearConfigurationEntities = createAction(ACTION_CLEAR_ENTITIES);\n","import type {\n Configuration,\n CustomConfig,\n} from '@o3r/core';\nimport {\n computeItemIdentifier,\n} from '@o3r/core';\nimport {\n SetConfigurationEntitiesPayload,\n} from './configuration.actions';\n\n/**\n * compute the configuration into SetEntitiesPayload\n * @param customConfigObject array of configurations\n */\nexport function computeConfiguration<T extends Configuration>(customConfigObject: CustomConfig<T>[]): SetConfigurationEntitiesPayload {\n const entities = customConfigObject.reduce<{ [k: string]: Partial<T> & { id: string } }>((acc, conf) => {\n const id = computeItemIdentifier(conf.name, conf.library);\n acc[id] = { ...conf.config, id };\n return acc;\n }, {});\n return { entities };\n}\n","import {\n createEntityAdapter,\n EntityAdapter,\n} from '@ngrx/entity';\nimport {\n ActionCreator,\n createReducer,\n on,\n ReducerTypes,\n} from '@ngrx/store';\nimport * as actions from './configuration.actions';\nimport {\n ConfigurationModel,\n ConfigurationState,\n} from './configuration.state';\n\n/**\n * Configuration Store adapter\n */\nexport const configurationAdapter: EntityAdapter<ConfigurationModel> = createEntityAdapter<ConfigurationModel>({\n selectId: (model) => model.id\n});\n\n/**\n * Configuration Store initial value\n */\nexport const configurationInitialState: ConfigurationState = configurationAdapter.getInitialState({});\n\n/**\n * List of basic actions for Configuration Store\n */\nexport const configurationReducerFeatures: ReducerTypes<ConfigurationState, ActionCreator[]>[] = [\n\n on(actions.setConfigurationEntities, (state, payload) => configurationAdapter.addMany((Object.keys(payload) as (keyof typeof payload)[]).map((id) =>\n ({ ...(payload[id] as any), id })), configurationAdapter.removeAll(state))),\n\n on(actions.updateConfigurationEntities, (state, payload) =>\n configurationAdapter.updateMany(Object.keys(payload.entities).map((id) => ({ id: id, changes: payload.entities[id] })), state)),\n\n on(actions.upsertConfigurationEntities, (state, payload) => configurationAdapter.upsertMany(Object.keys(payload.entities).map((id) => ({ ...payload.entities[id], id })), state)),\n\n on(actions.clearConfigurationEntities, (state) => configurationAdapter.removeAll(state)),\n\n on(actions.updateConfigurationEntity, (state, payload) => configurationAdapter.updateOne({ id: payload.id, changes: payload.configuration }, state)),\n\n on(actions.upsertConfigurationEntity, (state, payload) => configurationAdapter.upsertOne({ id: payload.id, ...payload.configuration }, state))\n];\n\n/**\n * Configuration Store reducer\n */\nexport const configurationReducer = createReducer(\n configurationInitialState,\n ...configurationReducerFeatures\n);\n","import type {\n EntityState,\n} from '@ngrx/entity';\nimport type {\n Configuration,\n} from '@o3r/core';\n\n/**\n * Configuration model\n */\nexport interface ConfigurationModel extends Configuration {\n id: string;\n}\n\n/**\n * Configuration store state\n */\nexport interface ConfigurationState extends EntityState<ConfigurationModel> {\n}\n\n/**\n * Name of the Configuration Store\n */\nexport const CONFIGURATION_STORE_NAME = 'configuration';\n\n/**\n * Configuration Store Interface\n */\nexport interface ConfigurationStore {\n /** Configuration state */\n [CONFIGURATION_STORE_NAME]: ConfigurationState;\n}\n\n/**\n * ID of the global configuration\n */\nexport const globalConfigurationId = 'global';\n","import {\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n StoreModule,\n} from '@ngrx/store';\nimport {\n configurationReducer,\n} from './configuration.reducer';\nimport {\n CONFIGURATION_STORE_NAME,\n ConfigurationState,\n} from './configuration.state';\n\n/** Token of the Configuration reducer */\nexport const CONFIGURATION_REDUCER_TOKEN = new InjectionToken<ActionReducer<ConfigurationState, Action>>('Feature Configuration Reducer');\n\n/** Provide default reducer for Configuration store */\nexport function getDefaultConfigurationReducer() {\n return configurationReducer;\n}\n\n@NgModule({\n imports: [\n StoreModule.forFeature(CONFIGURATION_STORE_NAME, CONFIGURATION_REDUCER_TOKEN)\n ],\n providers: [\n { provide: CONFIGURATION_REDUCER_TOKEN, useFactory: getDefaultConfigurationReducer }\n ]\n})\nexport class ConfigurationStoreModule {\n public static forRoot<T extends ConfigurationState>(reducerFactory: () => ActionReducer<T, Action>): ModuleWithProviders<ConfigurationStoreModule> {\n return {\n ngModule: ConfigurationStoreModule,\n providers: [\n { provide: CONFIGURATION_REDUCER_TOKEN, useFactory: reducerFactory }\n ]\n };\n }\n}\n","import {\n createSelector,\n} from '@ngrx/store';\nimport {\n Configuration,\n} from '@o3r/core';\nimport {\n configurationAdapter,\n} from './configuration.reducer';\nimport {\n CONFIGURATION_STORE_NAME,\n ConfigurationState,\n globalConfigurationId,\n} from './configuration.state';\n\nconst { selectIds, selectEntities, selectAll, selectTotal } = configurationAdapter.getSelectors();\n\n/**\n * Select Configuration State\n * Note: the usage of createSelector is to avoid warning printing because of potentially undefined feature store\n */\nexport const selectConfigurationState = createSelector<{ [CONFIGURATION_STORE_NAME]: ConfigurationState }, [state: ConfigurationState | undefined], ConfigurationState | undefined>(\n (state) => state[CONFIGURATION_STORE_NAME],\n (state) => state\n);\n\n/** Select the array of Configuration ids */\nexport const selectConfigurationIds = createSelector(selectConfigurationState, (state) => state ? selectIds(state) : []);\n\n/** Select the array of Configuration */\nexport const selectAllConfiguration = createSelector(selectConfigurationState, (state) => state ? selectAll(state) : []);\n\n/** Select the dictionary of Configuration entities */\nexport const selectConfigurationEntities = createSelector(selectConfigurationState, (state) => state ? selectEntities(state) : {});\n\n/** Select the total Configuration count */\nexport const selectConfigurationTotal = createSelector(selectConfigurationState, (state) => state ? selectTotal(state) : 0);\n\n/**\n * Select the configuration for component with id\n * @param props property of the selector\n * @param props.id id of the component\n */\nexport const selectConfigurationForComponent = <T extends Configuration>(props: { id: string }) =>\n createSelector(selectConfigurationEntities, (entities) => (entities?.[props.id] || {}) as Configuration as T);\n\n/**\n * Select the global configuration\n */\nexport const selectGlobalConfiguration = createSelector(selectConfigurationForComponent({ id: globalConfigurationId }), (config) => config);\n","import {\n configurationAdapter,\n configurationInitialState,\n} from './configuration.reducer';\nimport {\n ConfigurationState,\n} from './configuration.state';\n\nexport const configurationStorageSync = {\n deserialize: (rawObject: any) => {\n if (!rawObject || !rawObject.ids) {\n return configurationInitialState;\n }\n const storeObject = configurationAdapter.getInitialState<ConfigurationState>(rawObject);\n return storeObject as ConfigurationState;\n }\n};\n","import {\n InjectionToken,\n} from '@angular/core';\nimport {\n ConfigurationDevtoolsServiceOptions,\n} from './configuration-devtools.interface';\n\nexport const OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS: Readonly<ConfigurationDevtoolsServiceOptions> = {\n defaultLibraryName: '@o3r/components',\n defaultJsonFilename: 'partial-static-config.json',\n isActivatedOnBootstrap: false,\n isActivatedOnBootstrapWhenCMSContext: true\n} as const;\n\nexport const OTTER_CONFIGURATION_DEVTOOLS_OPTIONS = new InjectionToken<ConfigurationDevtoolsServiceOptions>('Otter Configuration Devtools options');\n","import {\n ApplicationRef,\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport {\n select,\n Store,\n} from '@ngrx/store';\nimport {\n Configuration,\n CustomConfig,\n} from '@o3r/core';\nimport {\n firstValueFrom,\n Observable,\n} from 'rxjs';\nimport {\n filter,\n map,\n shareReplay,\n} from 'rxjs/operators';\nimport {\n computeConfigurationName,\n parseConfigurationName,\n} from '../core';\nimport {\n computeConfiguration,\n ConfigurationModel,\n ConfigurationStore,\n selectConfigurationEntities,\n selectConfigurationIds,\n upsertConfigurationEntities,\n upsertConfigurationEntity,\n} from '../stores';\nimport {\n ConfigurationDevtoolsServiceOptions,\n} from './configuration-devtools.interface';\nimport {\n OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS,\n OTTER_CONFIGURATION_DEVTOOLS_OPTIONS,\n} from './configuration-devtools.token';\n\n@Injectable({ providedIn: 'root' })\nexport class OtterConfigurationDevtools {\n /** Stream of configurations */\n public readonly configurationEntities$: Observable<CustomConfig[]>;\n\n constructor(\n protected store: Store<ConfigurationStore>,\n private readonly appRef: ApplicationRef,\n @Optional() @Inject(OTTER_CONFIGURATION_DEVTOOLS_OPTIONS) private readonly options: ConfigurationDevtoolsServiceOptions) {\n this.options = { ...OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, ...options };\n\n /** Full configuration store */\n this.configurationEntities$ = this.store.pipe(\n select(selectConfigurationEntities),\n map((entities) =>\n Object.values(entities)\n .filter((entity): entity is ConfigurationModel => !!entity)\n .map((entity) => {\n const { id, ...config } = entity;\n const { library = this.options.defaultLibraryName, componentName: name = id } = parseConfigurationName(id) || {};\n return { name, config, library } satisfies CustomConfig;\n })\n ),\n shareReplay(1)\n );\n }\n\n /**\n * Get configuration name based on input information\n * @param selector Selector for a component configuration. It can be a string in the form library#componentName (i.e: @my-lib/shared-components#HeaderContComponent)\n * or an object with the component and library names (i.e: {library:\"@my-lib/shared-components\", componentName:'HeaderContComponent'})\n * @param isFallbackName Determine if the name requested is a fallback name\n * @returns string in the format library#componentName (i.e: \"@my-lib/shared-components#HeaderContComponent\")\n */\n public getComponentConfigName(selector: string | { library?: string; componentName: string }, isFallbackName = false) {\n if (!isFallbackName) {\n return typeof selector === 'string' ? selector : computeConfigurationName(selector.componentName, selector.library || this.options.defaultLibraryName);\n }\n\n return typeof selector === 'string'\n ? computeConfigurationName(selector, this.options.defaultLibraryName || 'global')\n : computeConfigurationName(selector.componentName, this.options.defaultLibraryName || 'global');\n }\n\n /**\n * Get the list of components which have a configuration loaded in the store\n */\n public getComponentsWithConfiguration(): Promise<string[]> {\n return firstValueFrom(\n this.store\n .pipe(\n select(selectConfigurationIds),\n map((ids) => ids\n .map((configName) => parseConfigurationName(configName.toString()))\n .filter((parsedName): parsedName is { library?: string; componentName: string } => !!parsedName)\n .map((parsedName) => parsedName.componentName + (parsedName.library ? ' from ' + parsedName.library : ''))\n )\n )\n );\n }\n\n /**\n * Set a specified value of a component configuration\n * @param selector Selector for a component configuration\n * @param configProperty Name of the configuration property to set\n * @param configValue Value of the configuration property to set\n */\n public setDynamicConfig(selector: string | { library?: string; componentName: string }, configProperty: string, configValue: any): void {\n this.store.dispatch(\n upsertConfigurationEntity({\n id: this.getComponentConfigName(selector),\n configuration: { [configProperty]: configValue }\n })\n );\n this.appRef.tick();\n }\n\n /**\n * Get the configuration for a specific component\n * @param selector Selector for a component configuration. It can be a string in the form library#configurationName (i.e: @my-lib/shared-components#HeaderPresConfig)\n * or an object with the configuration and library names (i.e: {library:\"@my-lib/shared-components\", componentName:'HeaderPresConfig'})\n */\n public getCurrentConfigurationFor(selector: string | { library?: string; componentName: string }): Promise<Configuration> {\n return firstValueFrom(\n this.store.pipe(\n select(selectConfigurationEntities),\n map((entities) => entities[this.getComponentConfigName(selector)] || entities[this.getComponentConfigName(selector, true)]),\n filter((entity): entity is ConfigurationModel => !!entity),\n map((entity) => {\n const { id, ...configuration } = entity;\n return configuration as Configuration;\n })\n )\n );\n }\n\n /**\n * Get the whole configuration of the application\n */\n public getConfiguration() {\n return firstValueFrom(this.configurationEntities$);\n }\n\n /**\n * Load a json configuration\n * @param configurations configurations to load\n */\n public loadConfiguration(configurations: string | CustomConfig<Configuration>[]): void {\n this.store.dispatch(upsertConfigurationEntities(computeConfiguration(typeof configurations === 'string' ? JSON.parse(configurations) : configurations)));\n this.appRef.tick();\n }\n}\n","/* eslint-disable no-console -- service to log message in the console */\nimport {\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport type {\n Configuration,\n ContextualizationDataset,\n CustomConfig,\n DevtoolsServiceInterface,\n WindowWithDevtools,\n} from '@o3r/core';\nimport {\n firstValueFrom,\n} from 'rxjs';\nimport {\n ConfigurationContextualizationDevtools,\n ConfigurationDevtoolsServiceOptions,\n} from './configuration-devtools.interface';\nimport {\n OtterConfigurationDevtools,\n} from './configuration-devtools.service';\nimport {\n OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS,\n OTTER_CONFIGURATION_DEVTOOLS_OPTIONS,\n} from './configuration-devtools.token';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationDevtoolsConsoleService implements DevtoolsServiceInterface, ConfigurationContextualizationDevtools {\n /** Name of the Window property to access to the devtools */\n public static readonly windowModuleName = 'configuration';\n\n constructor(\n private readonly configurationDevtools: OtterConfigurationDevtools,\n @Optional() @Inject(OTTER_CONFIGURATION_DEVTOOLS_OPTIONS) private readonly options: ConfigurationDevtoolsServiceOptions\n ) {\n this.options = { ...OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, ...options };\n\n if (\n this.options.isActivatedOnBootstrap\n || (\n this.options.isActivatedOnBootstrapWhenCMSContext\n && (document.body.dataset as ContextualizationDataset).cmscontext === 'true'\n )\n ) {\n this.activate();\n }\n }\n\n private downloadJSON(content: string, fileName: string = this.options.defaultJsonFilename): void {\n const a = document.createElement('a');\n const file = new Blob([content], { type: 'text/plain' });\n a.href = URL.createObjectURL(file);\n a.download = fileName;\n a.click();\n }\n\n private copyElementToClipboard(content: string): void {\n const input = document.createElement('textarea');\n input.value = content;\n document.body.append(input);\n input.select();\n document.execCommand('copy');\n input.remove();\n }\n\n /**\n * Set a specified value of a component configuration\n * @param selector Selector for a component configuration\n * @param configProperty Name of the configuration property to set\n * @param configValue Value of the configuration property to set\n */\n public setDynamicConfig(selector: string | { library?: string; componentName: string }, configProperty: string, configValue: any): void {\n this.configurationDevtools.setDynamicConfig(selector, configProperty, configValue);\n }\n\n /** @inheritDoc */\n public activate() {\n const windowWithDevtools: WindowWithDevtools = window;\n windowWithDevtools._OTTER_DEVTOOLS_ ||= {};\n windowWithDevtools._OTTER_DEVTOOLS_[ConfigurationDevtoolsConsoleService.windowModuleName] = this;\n\n console.info(`Otter Configuration Devtools is now accessible via the _OTTER_DEVTOOLS_.${ConfigurationDevtoolsConsoleService.windowModuleName} variable`);\n }\n\n /**\n * Display the list of configurations loaded in the store and the library they originate from\n * @returns array with the configurations and libraries for example: [\"LibComponentsCommonRuntimeConfig from @my-lib/shared-common\"]\n */\n public async displayComponentsWithConfiguration() {\n const selectors = await this.configurationDevtools.getComponentsWithConfiguration();\n console.log(selectors);\n }\n\n /**\n * Display the configuration for a specific component\n * @param selector Selector for a component configuration. It can be a string in the form library#configurationName (i.e: '@my-lib/shared-components#HeaderContConfig')\n * or an object with the configuration and library names (i.e: {library:\"@my-lib/shared-components\", componentName:'HeaderContConfig'}).\n * Note the object input componentName expects a configuration name not a component name.\n * @returns Configuration object (i.e: {airlineLogoPath: \"img/airlines/icon-BH.svg\", displayLanguageSelector: false})\n */\n public async displayCurrentConfigurationFor(selector: string | { library?: string; componentName: string }) {\n const configuration = await this.configurationDevtools.getCurrentConfigurationFor(selector);\n console.log(configuration);\n }\n\n /**\n * Download the JSON file of the whole configuration\n * @param fileName Name of the file to download\n */\n public async saveConfiguration(fileName: string = this.options.defaultJsonFilename) {\n const configs = await firstValueFrom(this.configurationDevtools.configurationEntities$);\n this.downloadJSON(JSON.stringify(configs), fileName);\n }\n\n /**\n * Display the whole configuration of the application\n */\n public async displayConfiguration() {\n const configs = await this.configurationDevtools.getConfiguration();\n console.log(configs);\n }\n\n /**\n * Display a bookmark to generate the current configuration\n */\n public async displayConfigurationBookmark() {\n const content = await this.configurationDevtools.getConfiguration();\n\n console.log('BOOKMARK');\n console.log(`javascript:window._OTTER_DEVTOOLS_.updateConfigurations('${JSON.stringify(content).replace(/'/g, '\\\\\\'')}')`);\n }\n\n /**\n * Copy the whole configuration to the clipboard\n */\n public async copyConfigurationToClipboard() {\n const configs = await firstValueFrom(this.configurationDevtools.configurationEntities$);\n this.copyElementToClipboard(JSON.stringify(configs));\n }\n\n /**\n * Load a json configuration\n * @param configurations configurations to load\n * @deprecated please use `updateConfigurations` instead, will be removed in Otter v12.\n */\n public loadConfiguration(configurations: string | CustomConfig<Configuration>[]): void {\n this.configurationDevtools.loadConfiguration(configurations);\n }\n\n /**\n * Replace N configurations in one shot\n * @param configurations array of configurations to update\n */\n public updateConfigurations(configurations: string | CustomConfig<Configuration>[]): void {\n this.configurationDevtools.loadConfiguration(configurations);\n }\n}\n","import type {\n Dictionary,\n} from '@ngrx/entity';\nimport type {\n Configuration,\n ConnectContentMessage,\n ContextualizationDevtoolsCommonOptions,\n CustomConfig,\n DevtoolsCommonOptions,\n MessageDataTypes,\n OtterMessageContent,\n RequestMessagesContentMessage,\n} from '@o3r/core';\nimport type {\n ConfigurationModel,\n} from '../stores/index';\n\n/** Option for Configuration devtools service */\nexport interface ConfigurationDevtoolsServiceOptions extends DevtoolsCommonOptions, ContextualizationDevtoolsCommonOptions {\n /**\n * Default library name to use if not specified in the function call\n * @default `@o3r/components`\n */\n defaultLibraryName: string;\n /**\n * Default JSON file name if not specified in the function\n * @default partial-static-config.json\n */\n defaultJsonFilename: string;\n}\n\nexport interface ConfigurationsMessage extends OtterMessageContent<'configurations'> {\n /** Configurations */\n configurations: Dictionary<ConfigurationModel>;\n}\n\nexport interface UpdateConfigMessage extends OtterMessageContent<'updateConfig'> {\n /** Configuration ID */\n id: string;\n /** Configuration value */\n configValue: any;\n}\n\ntype ConfigurationMessageContents =\n | ConfigurationsMessage\n | UpdateConfigMessage;\n\n/** List of possible DataTypes for Configuration messages */\nexport type ConfigurationMessageDataTypes = MessageDataTypes<ConfigurationMessageContents>;\n\n/** List of all messages for configuration purpose */\nexport type AvailableConfigurationMessageContents =\n | ConfigurationMessageContents\n | ConnectContentMessage\n | RequestMessagesContentMessage<ConfigurationMessageDataTypes>;\n\n/**\n * Determine if the given message is a Configuration message\n * @param message message to check\n */\nexport const isConfigurationMessage = (message: any): message is AvailableConfigurationMessageContents => {\n return message && (\n message.dataType === 'configurations'\n || message.dataType === 'updateConfig'\n || message.dataType === 'requestMessages'\n || message.dataType === 'connect');\n};\n\n/**\n * Contextualization devtools exposed for configuration in CMS integration\n */\nexport interface ConfigurationContextualizationDevtools {\n /**\n * Replace N configurations in one shot\n * @param configs array of configurations to update\n */\n updateConfigurations: (configurations: CustomConfig<Configuration>[]) => void;\n}\n","import {\n DestroyRef,\n inject,\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport {\n takeUntilDestroyed,\n} from '@angular/core/rxjs-interop';\nimport {\n select,\n Store,\n} from '@ngrx/store';\nimport {\n DevtoolsServiceInterface,\n filterMessageContent,\n sendOtterMessage,\n} from '@o3r/core';\nimport {\n LoggerService,\n} from '@o3r/logger';\nimport {\n firstValueFrom,\n fromEvent,\n} from 'rxjs';\nimport {\n ConfigurationStore,\n selectConfigurationEntities,\n} from '../stores';\nimport {\n AvailableConfigurationMessageContents,\n ConfigurationDevtoolsServiceOptions,\n ConfigurationMessageDataTypes,\n isConfigurationMessage,\n} from './configuration-devtools.interface';\nimport {\n OtterConfigurationDevtools,\n} from './configuration-devtools.service';\nimport {\n OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS,\n OTTER_CONFIGURATION_DEVTOOLS_OPTIONS,\n} from './configuration-devtools.token';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationDevtoolsMessageService implements DevtoolsServiceInterface {\n private readonly sendMessage = sendOtterMessage<AvailableConfigurationMessageContents>;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private readonly store: Store<ConfigurationStore>,\n private readonly logger: LoggerService,\n private readonly configurationDevtools: OtterConfigurationDevtools,\n @Optional() @Inject(OTTER_CONFIGURATION_DEVTOOLS_OPTIONS) private readonly options: ConfigurationDevtoolsServiceOptions) {\n this.options = { ...OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, ...options };\n\n if (this.options.isActivatedOnBootstrap) {\n this.activate();\n }\n }\n\n private async sendCurrentConfigurationState() {\n const configurations = await firstValueFrom(this.store.pipe(\n select(selectConfigurationEntities)\n ));\n this.sendMessage('configurations', { configurations });\n }\n\n /**\n * Function to trigger a re-send a requested messages to the Otter Chrome DevTools extension\n * @param only restricted list of messages to re-send\n */\n private handleReEmitRequest(only?: ConfigurationMessageDataTypes[]) {\n if (!only || only.includes('configurations')) {\n return this.sendCurrentConfigurationState();\n }\n }\n\n /**\n * Function to handle the incoming messages from Otter Chrome DevTools extension\n * @param message message coming from the Otter Chrome DevTools extension\n */\n private async handleEvents(message: AvailableConfigurationMessageContents) {\n this.logger.debug('Message handling by the configuration service', message);\n\n switch (message.dataType) {\n case 'connect': {\n await this.connectPlugin();\n break;\n }\n case 'requestMessages': {\n await this.handleReEmitRequest(message.only);\n break;\n }\n case 'updateConfig': {\n this.configurationDevtools.loadConfiguration([{\n name: message.id,\n config: message.configValue\n }]);\n break;\n }\n default: {\n this.logger.warn('Message ignored by the configuration service', message);\n }\n }\n }\n\n /**\n * Function to connect the plugin to the Otter DevTools extension\n */\n private connectPlugin() {\n this.logger.debug('Otter DevTools is plugged to configuration service of the application');\n return this.sendCurrentConfigurationState();\n }\n\n /** @inheritDoc */\n public activate() {\n fromEvent(window, 'message').pipe(\n takeUntilDestroyed(this.destroyRef),\n filterMessageContent(isConfigurationMessage)\n ).subscribe((e) => this.handleEvents(e));\n\n this.store.pipe(\n select(selectConfigurationEntities),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe((configurations) => this.sendMessage('configurations', { configurations }));\n }\n}\n","import {\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n StoreModule,\n} from '@ngrx/store';\nimport {\n ConfigurationStoreModule,\n} from '../stores/index';\nimport {\n ConfigurationDevtoolsConsoleService,\n} from './configuration-devtools.console.service';\nimport type {\n ConfigurationDevtoolsServiceOptions,\n} from './configuration-devtools.interface';\nimport {\n ConfigurationDevtoolsMessageService,\n} from './configuration-devtools.message.service';\nimport {\n OtterConfigurationDevtools,\n} from './configuration-devtools.service';\nimport {\n OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS,\n OTTER_CONFIGURATION_DEVTOOLS_OPTIONS,\n} from './configuration-devtools.token';\n\n@NgModule({\n imports: [\n StoreModule,\n ConfigurationStoreModule\n ],\n providers: [\n { provide: OTTER_CONFIGURATION_DEVTOOLS_OPTIONS, useValue: OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS },\n ConfigurationDevtoolsMessageService,\n ConfigurationDevtoolsConsoleService,\n OtterConfigurationDevtools\n ]\n})\nexport class ConfigurationDevtoolsModule {\n /**\n * Initialize Otter Devtools\n * @param options\n */\n public static instrument(options: Partial<ConfigurationDevtoolsServiceOptions>): ModuleWithProviders<ConfigurationDevtoolsModule> {\n return {\n ngModule: ConfigurationDevtoolsModule,\n providers: [\n { provide: OTTER_CONFIGURATION_DEVTOOLS_OPTIONS, useValue: { ...OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, ...options }, multi: false },\n ConfigurationDevtoolsMessageService,\n ConfigurationDevtoolsConsoleService,\n OtterConfigurationDevtools\n ]\n };\n }\n}\n","import {\n NgModule,\n} from '@angular/core';\nimport {\n LoggerModule,\n} from '@o3r/logger';\nimport {\n ConfigurationStoreModule,\n} from '../../stores/index';\n\n@NgModule({\n imports: [ConfigurationStoreModule, LoggerModule]\n})\nexport class ConfigurationBaseServiceModule {}\n","import {\n Injectable,\n} from '@angular/core';\nimport {\n select,\n Store,\n} from '@ngrx/store';\nimport {\n Configuration,\n CustomConfig,\n deepFill,\n} from '@o3r/core';\nimport {\n combineLatest,\n Observable,\n of,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n switchMap,\n take,\n} from 'rxjs/operators';\nimport {\n ConfigOverrideStore,\n selectComponentOverrideConfig,\n} from '../../stores/config-override/index';\nimport {\n computeConfiguration,\n ConfigurationStore,\n globalConfigurationId,\n selectConfigurationEntities,\n selectConfigurationForComponent,\n selectGlobalConfiguration,\n updateConfigurationEntity,\n upsertConfigurationEntities,\n upsertConfigurationEntity,\n} from '../../stores/index';\nimport {\n ConfigurationBaseServiceModule,\n} from './configuration.base.module';\n\nconst jsonStringifyDiff = (obj1: any, obj2: any) => JSON.stringify(obj1) === JSON.stringify(obj2);\n\n/**\n * Configuration service\n */\n@Injectable({\n providedIn: ConfigurationBaseServiceModule\n})\nexport class ConfigurationBaseService {\n private readonly extendedConfiguration: { [key: string]: boolean } = {};\n\n constructor(private readonly store: Store<ConfigurationStore & ConfigOverrideStore>) {}\n\n /**\n * Update a specific component config or add it to the store if does not exist\n * @param configuration to edit/add\n * @param configurationId Configuration ID\n */\n public upsertConfiguration<T extends Configuration>(configuration: T, configurationId = globalConfigurationId) {\n this.store.dispatch(upsertConfigurationEntity({ id: configurationId, configuration }));\n }\n\n /**\n * Update a specific component config\n * @param configuration Partial config to edit\n * @param configurationId Configuration ID\n */\n public updateConfiguration<T extends Partial<Configuration>>(configuration: T, configurationId = globalConfigurationId) {\n this.store.dispatch(updateConfigurationEntity({ id: configurationId, configuration }));\n }\n\n /**\n * This function will get the configuration stored in the data attribute of the html's body tag\n * @param configTagName Value used to identify the data attribute where the config is pushed in the index.html\n */\n public getConfigFromBodyTag<T extends Configuration>(configTagName = 'staticconfig') {\n const bootstrapConfigString = document.body.dataset[configTagName];\n const customConfigObject: CustomConfig<T>[] = bootstrapConfigString ? JSON.parse(bootstrapConfigString) : [];\n if (customConfigObject.length > 0) {\n this.computeConfiguration(customConfigObject);\n }\n }\n\n /**\n * Transform the custom configuration in store configuration model\n * @param customConfigObject Configuration object (extracted from body tag for static config or downloaded in case of dynamic config)\n */\n public computeConfiguration<T extends Configuration>(customConfigObject: CustomConfig<T>[]) {\n this.store.dispatch(upsertConfigurationEntities(computeConfiguration(customConfigObject)));\n }\n\n /**\n * Complete a stored configuration by adding the missing fields\n * @param extension Configuration extension to be included in the store\n * @param configurationId Configuration ID to extend\n * @param forceUpdate Force update the configuration in the store\n */\n public extendConfiguration<T extends Configuration>(extension: T, configurationId = globalConfigurationId, forceUpdate = false) {\n if (this.extendedConfiguration[configurationId] && !forceUpdate) {\n return;\n }\n this.extendedConfiguration[configurationId] = true;\n this.store.pipe(\n select(selectConfigurationEntities),\n take(1),\n map((storedConfigs) => configurationId in storedConfigs ? deepFill(extension, storedConfigs[configurationId]) : extension)\n ).subscribe((extendedConfig) => this.upsertConfiguration(extendedConfig, configurationId));\n }\n\n /**\n * Operator to get the configuration from store for a given component and merge it with the global config\n * @param id Id of the component\n * @param defaultValue Default value of the configuration\n */\n public getComponentConfig<T extends Configuration>(id: string, defaultValue: T) {\n return (source: Observable<Partial<T> | undefined>): Observable<T> => {\n const componentConfigurationFromStore$ = this.getConfig<T>(id);\n\n return source.pipe(\n switchMap((overrideConfig) => componentConfigurationFromStore$.pipe(\n map((componentConfigurationFromStore) => {\n const config = componentConfigurationFromStore ? deepFill(defaultValue, componentConfigurationFromStore) : defaultValue;\n return overrideConfig ? deepFill(config, overrideConfig) : config;\n })\n ))\n );\n };\n }\n\n /**\n * Get an observable of the configuration from store for a given component and merge it with the global config + the config overrides from the rules engine\n * @param id Id of the component\n */\n public getConfig<T extends Configuration>(id: string): Observable<T> {\n const globalConfig$ = this.store.pipe(select(selectGlobalConfiguration));\n const componentConfig$ = id === globalConfigurationId ? of({}) : this.store.pipe(select(selectConfigurationForComponent({ id })));\n const overrideConfig$ = this.store.pipe(select(selectComponentOverrideConfig(id)));\n\n return combineLatest([globalConfig$, componentConfig$, overrideConfig$]).pipe(\n map(([globalConfig, componentConfig, overrideConfig]) => ({ ...globalConfig, ...componentConfig, ...overrideConfig })),\n distinctUntilChanged(jsonStringifyDiff)\n );\n }\n}\n","import {\n Configuration,\n otterComponentInfoPropertyName,\n} from '@o3r/core';\nimport {\n ConfigurationObserver,\n} from './configuration.observer';\nimport type {\n ConfigurationSignal,\n} from './configuration.signal';\n\nconst decorator = (target: any, key: string) => {\n const privateField = `_${key}`;\n\n if (delete target[key]) {\n Object.defineProperty(target, key, {\n get: function (this: any) {\n return this[privateField];\n },\n set: function (this: any, value: ConfigurationObserver<Configuration> | ConfigurationSignal<Configuration>) {\n this[privateField] = value;\n if (this[otterComponentInfoPropertyName]) {\n this[otterComponentInfoPropertyName].configId = this[privateField].configId;\n }\n },\n enumerable: true,\n configurable: true\n });\n }\n};\n\n/**\n * Decorator to identify the configuration observer\n * @deprecated please use O3rConfig, will be removed in v12\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- decorator should be PascalCase\nexport function ConfigObserver() {\n return decorator;\n}\n\n/**\n * Decorator to identify the component's configuration\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- decorator should be PascalCase\nexport function O3rConfig() {\n return decorator;\n}\n","import type {\n Configuration,\n} from '@o3r/core';\nimport {\n BehaviorSubject,\n type Observable,\n type Observer,\n type Subject,\n} from 'rxjs';\nimport {\n shareReplay,\n} from 'rxjs/operators';\nimport {\n getConfiguration,\n} from '../core';\nimport {\n ConfigurationBaseService,\n} from '../services/configuration/configuration.base.service';\n\nexport class ConfigurationObserver<T extends Configuration> implements Observer<Partial<T> | undefined>, Pick<Subject<T>, 'asObservable'> {\n /** Inner observable */\n private readonly observable: Observable<T>;\n\n /** Inner subscriber */\n private readonly subscriber: BehaviorSubject<Partial<T>> = new BehaviorSubject<Partial<T>>({});\n\n /** @inheritdoc */\n public closed?: boolean;\n\n constructor(\n /** Configuration ID */\n public configId: string,\n defaultConfig: T,\n configurationService?: ConfigurationBaseService\n ) {\n if (configurationService) {\n configurationService.extendConfiguration(defaultConfig, configId);\n }\n\n this.observable = this.subscriber\n .pipe(\n configurationService ? configurationService.getComponentConfig(configId, defaultConfig) : getConfiguration(defaultConfig),\n shareReplay({ refCount: true, bufferSize: 1 })\n );\n }\n\n /** @inheritdoc */\n public next(value?: Partial<T>): void {\n this.subscriber.next(value || {});\n }\n\n /** @inheritdoc */\n public error(err: any): void {\n this.subscriber.error(err);\n this.closed = true;\n }\n\n /** @inheritdoc */\n public complete(): void {\n this.subscriber.complete();\n this.closed = true;\n }\n\n /**\n * @inheritdoc\n */\n public asObservable(): Observable<T> {\n return this.observable;\n }\n}\n","import {\n inject,\n type InputSignal,\n type Signal,\n} from '@angular/core';\nimport {\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport type {\n Configuration,\n} from '@o3r/core';\nimport {\n shareReplay,\n} from 'rxjs';\nimport {\n getConfiguration,\n} from '../core';\nimport {\n ConfigurationBaseService,\n} from '../services';\n\n/** Configuration signal */\nexport type ConfigurationSignal<T> = Signal<T> & { configId: string };\n\n/**\n * Get a configuration signal\n * @param configInput\n * @param configId\n * @param defaultConfig\n */\nexport function configSignal<T extends Configuration>(\n configInput: InputSignal<Partial<T> | undefined>,\n configId: string,\n defaultConfig: T\n): ConfigurationSignal<T>;\n/**\n * Get a configuration signal\n * @param configInput\n * @param configId\n * @param defaultConfig\n * @param configurationService\n * @deprecated please do not provide `configurationService`, will be removed in v12\n */\nexport function configSignal<T extends Configuration>(\n configInput: InputSignal<Partial<T> | undefined>,\n configId: string,\n defaultConfig: T,\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- deprecated will be removed in v12\n configurationService?: ConfigurationBaseService | null\n): ConfigurationSignal<T>;\n// eslint-disable-next-line jsdoc/require-jsdoc -- overload signature will be removed in v12\nexport function configSignal<T extends Configuration>(\n configInput: InputSignal<Partial<T> | undefined>,\n configId: string,\n defaultConfig: T,\n configurationService?: ConfigurationBaseService | null\n): ConfigurationSignal<T> {\n configurationService = configurationService ?? inject(ConfigurationBaseService, { optional: true });\n if (configurationService) {\n configurationService.extendConfiguration(defaultConfig, configId);\n }\n\n const signal: ConfigurationSignal<T> = toSignal(\n toObservable(configInput).pipe(\n configurationService ? configurationService.getComponentConfig(configId, defaultConfig) : getConfiguration(defaultConfig),\n shareReplay({ bufferSize: 1, refCount: true })\n ),\n { initialValue: defaultConfig }\n ) as ConfigurationSignal<T>;\n signal.configId = configId;\n return signal;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["actions.setConfigOverride","actions.setConfigurationEntities","actions.updateConfigurationEntities","actions.upsertConfigurationEntities","actions.clearConfigurationEntities","actions.updateConfigurationEntity","actions.upsertConfigurationEntity","shareReplay"],"mappings":";;;;;;;;;;;;AAiCA;;;;;AAKG;AACa,SAAA,wBAAwB,CAAC,aAAqB,EAAE,WAAoB,EAAA;AAClF,IAAA,OAAO,qBAAqB,CAAC,aAAa,EAAE,WAAW,CAAC;AAC1D;AAEA;;;;AAIG;AACG,SAAU,sBAAsB,CAAC,iBAAyB,EAAA;IAC9D,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAC1E,IAAI,uBAAuB,EAAE;QAC3B,OAAO;AACL,YAAA,OAAO,EAAE,uBAAuB,CAAC,MAAM,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,GAAG,SAAS;AACpF,YAAA,aAAa,EAAE,uBAAuB,CAAC,MAAM,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC;SAC3G;;AAEL;AAEA;;;AAGG;AACG,SAAU,gBAAgB,CAAoC,YAAe,EAAA;AACjF,IAAA,OAAO,CAAuB,MAAkC,KAC9D,MAAM,CAAC,IAAI,CACT,GAAG,CAAC,CAAC,cAAc,KAAI;AACrB,QAAA,OAAO,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;AAC/C,KAAC,CAAC,EACF,oBAAoB,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EACzF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C;AACL;;AC5DA;AACA,MAAM,UAAU,GAAG,sBAAsB;AAEzC;;AAEG;AACU,MAAA,iBAAiB,GAAG,YAAY,CAAC,UAAU,EAAE,KAAK,EAA8C;;ACN7G;;AAEG;MACU,0BAA0B,GAAwB,EAAE,eAAe,EAAE,EAAE;AAEpF;;AAEG;AACU,MAAA,6BAA6B,GAAyD;IACjG,EAAE,CAACA,iBAAyB,EAAE,CAAC,MAAM,EAAE,OAAO,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;;AAG3E;;AAEG;AACU,MAAA,qBAAqB,GAAG,aAAa,CAChD,0BAA0B,EAC1B,GAAG,6BAA6B;;ACblC;;AAEG;AACI,MAAM,0BAA0B,GAAG;;ACA1C;MACa,6BAA6B,GAAG,IAAI,cAAc,CAA6C,gCAAgC;AAE5I;SACgB,+BAA+B,GAAA;AAC7C,IAAA,OAAO,qBAAqB;AAC9B;MAUa,yBAAyB,CAAA;IAC7B,OAAO,OAAO,CAAgC,cAA8C,EAAA;QACjG,OAAO;AACL,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,6BAA6B,EAAE,UAAU,EAAE,cAAc;AACrE;SACF;;kIAPQ,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mIAAzB,yBAAyB,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,CAAA;AAAzB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAJzB,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,6BAA6B,EAAE,UAAU,EAAE,+BAA+B;AACtF,SAAA,EAAA,OAAA,EAAA,CAJC,WAAW,CAAC,UAAU,CAAC,0BAA0B,EAAE,6BAA6B,CAAC,CAAA,EAAA,CAAA,CAAA;;4FAMxE,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,WAAW,CAAC,UAAU,CAAC,0BAA0B,EAAE,6BAA6B;AACjF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,6BAA6B,EAAE,UAAU,EAAE,+BAA+B;AACtF;AACF,iBAAA;;;ACxBD;MACa,yBAAyB,GAAG,qBAAqB,CAAsB,0BAA0B;AAE9G;AACa,MAAA,oBAAoB,GAAG,cAAc,CAAC,yBAAyB,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,eAAe,IAAI,EAAE;AAErH;;;AAGG;AACU,MAAA,6BAA6B,GAAG,CAAC,WAAmB,KAAK,cAAc,CAAC,oBAAoB,EAAE,CAAC,eAAe,KAAK,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE;;ACTlK;;;AAGG;AACU,MAAA,iCAAiC,GAAG,CAAC,SAAc,KAAI;IAClE,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,0BAA0B;;AAEnC,IAAA,OAAO,SAAS;AAClB;AAEa,MAAA,yBAAyB,GAAoC;AACxE,IAAA,WAAW,EAAE;;;ACKf;AACA,MAAM,qBAAqB,GAAG,gCAAgC;AAC9D,MAAM,sBAAsB,GAAG,iCAAiC;AAChE,MAAM,sBAAsB,GAAG,iCAAiC;AAChE,MAAM,mBAAmB,GAAG,8BAA8B;AAC1D,MAAM,kCAAkC,GAAG,6CAA6C;AACxF,MAAM,kCAAkC,GAAG,0CAA0C;AAErF;;AAEG;AACU,MAAA,yBAAyB,GAAG,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAoC;AAEnI;;AAEG;AACU,MAAA,yBAAyB,GAAG,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAoC;AAEnI;;AAEG;AACU,MAAA,wBAAwB,GAAG,YAAY,CAAC,mBAAmB,EAAE,KAAK,EAAmC;AAElH;;AAEG;AACU,MAAA,2BAA2B,GAAG,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAAmC;AAExH;;AAEG;AACU,MAAA,2BAA2B,GAAG,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAAmC;AAExH;;AAEG;MACU,0BAA0B,GAAG,YAAY,CAAC,qBAAqB;;ACpD5E;;;AAGG;AACG,SAAU,oBAAoB,CAA0B,kBAAqC,EAAA;IACjG,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAA+C,CAAC,GAAG,EAAE,IAAI,KAAI;AACrG,QAAA,MAAM,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;AACzD,QAAA,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE;AAChC,QAAA,OAAO,GAAG;KACX,EAAE,EAAE,CAAC;IACN,OAAO,EAAE,QAAQ,EAAE;AACrB;;ACNA;;AAEG;AACI,MAAM,oBAAoB,GAAsC,mBAAmB,CAAqB;IAC7G,QAAQ,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC;AAC5B,CAAA;AAED;;AAEG;AACU,MAAA,yBAAyB,GAAuB,oBAAoB,CAAC,eAAe,CAAC,EAAE;AAEpG;;AAEG;AACU,MAAA,4BAA4B,GAAwD;IAE/F,EAAE,CAACC,wBAAgC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,oBAAoB,CAAC,OAAO,CAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAA8B,CAAC,GAAG,CAAC,CAAC,EAAE,MAC7I,EAAE,GAAI,OAAO,CAAC,EAAE,CAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7E,EAAE,CAACC,2BAAmC,EAAE,CAAC,KAAK,EAAE,OAAO,KACrD,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEjI,EAAE,CAACC,2BAAmC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAEjL,IAAA,EAAE,CAACC,0BAAkC,EAAE,CAAC,KAAK,KAAK,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAExF,IAAA,EAAE,CAACC,yBAAiC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC,CAAC;AAEpJ,IAAA,EAAE,CAACC,yBAAiC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,KAAK,CAAC;;AAG/I;;AAEG;AACU,MAAA,oBAAoB,GAAG,aAAa,CAC/C,yBAAyB,EACzB,GAAG,4BAA4B;;ACjCjC;;AAEG;AACI,MAAM,wBAAwB,GAAG;AAUxC;;AAEG;AACI,MAAM,qBAAqB,GAAG;;AClBrC;MACa,2BAA2B,GAAG,IAAI,cAAc,CAA4C,+BAA+B;AAExI;SACgB,8BAA8B,GAAA;AAC5C,IAAA,OAAO,oBAAoB;AAC7B;MAUa,wBAAwB,CAAA;IAC5B,OAAO,OAAO,CAA+B,cAA8C,EAAA;QAChG,OAAO;AACL,YAAA,QAAQ,EAAE,wBAAwB;AAClC,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,2BAA2B,EAAE,UAAU,EAAE,cAAc;AACnE;SACF;;kIAPQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mIAAxB,wBAAwB,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,CAAA;AAAxB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAJxB,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,2BAA2B,EAAE,UAAU,EAAE,8BAA8B;AACnF,SAAA,EAAA,OAAA,EAAA,CAJC,WAAW,CAAC,UAAU,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,CAAA,EAAA,CAAA,CAAA;;4FAMpE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,WAAW,CAAC,UAAU,CAAC,wBAAwB,EAAE,2BAA2B;AAC7E,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,2BAA2B,EAAE,UAAU,EAAE,8BAA8B;AACnF;AACF,iBAAA;;;AClBD,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,YAAY,EAAE;AAEjG;;;AAGG;MACU,wBAAwB,GAAG,cAAc,CACpD,CAAC,KAAK,KAAK,KAAK,CAAC,wBAAwB,CAAC,EAC1C,CAAC,KAAK,KAAK,KAAK;AAGlB;AACa,MAAA,sBAAsB,GAAG,cAAc,CAAC,wBAAwB,EAAE,CAAC,KAAK,KAAK,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;AAEvH;AACa,MAAA,sBAAsB,GAAG,cAAc,CAAC,wBAAwB,EAAE,CAAC,KAAK,KAAK,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;AAEvH;AACa,MAAA,2BAA2B,GAAG,cAAc,CAAC,wBAAwB,EAAE,CAAC,KAAK,KAAK,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE;AAEjI;AACa,MAAA,wBAAwB,GAAG,cAAc,CAAC,wBAAwB,EAAE,CAAC,KAAK,KAAK,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AAE1H;;;;AAIG;AACI,MAAM,+BAA+B,GAAG,CAA0B,KAAqB,KAC5F,cAAc,CAAC,2BAA2B,EAAE,CAAC,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAuB;AAE9G;;AAEG;MACU,yBAAyB,GAAG,cAAc,CAAC,+BAA+B,CAAC,EAAE,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,MAAM;;ACzC7H,MAAA,wBAAwB,GAAG;AACtC,IAAA,WAAW,EAAE,CAAC,SAAc,KAAI;QAC9B,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;AAChC,YAAA,OAAO,yBAAyB;;QAElC,MAAM,WAAW,GAAG,oBAAoB,CAAC,eAAe,CAAqB,SAAS,CAAC;AACvF,QAAA,OAAO,WAAiC;;;;ACP/B,MAAA,4CAA4C,GAAkD;AACzG,IAAA,kBAAkB,EAAE,iBAAiB;AACrC,IAAA,mBAAmB,EAAE,4BAA4B;AACjD,IAAA,sBAAsB,EAAE,KAAK;AAC7B,IAAA,oCAAoC,EAAE;;MAG3B,oCAAoC,GAAG,IAAI,cAAc,CAAsC,sCAAsC;;MC+BrI,0BAA0B,CAAA;AAIrC,IAAA,WAAA,CACY,KAAgC,EACzB,MAAsB,EACoC,OAA4C,EAAA;QAF7G,IAAK,CAAA,KAAA,GAAL,KAAK;QACE,IAAM,CAAA,MAAA,GAAN,MAAM;QACoD,IAAO,CAAA,OAAA,GAAP,OAAO;QAClF,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,4CAA4C,EAAE,GAAG,OAAO,EAAE;;QAG9E,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC3C,MAAM,CAAC,2BAA2B,CAAC,EACnC,GAAG,CAAC,CAAC,QAAQ,KACX,MAAM,CAAC,MAAM,CAAC,QAAQ;aACnB,MAAM,CAAC,CAAC,MAAM,KAAmC,CAAC,CAAC,MAAM;AACzD,aAAA,GAAG,CAAC,CAAC,MAAM,KAAI;YACd,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM;YAChC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,aAAa,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE;AAChH,YAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAyB;SACxD,CAAC,CACL,EACD,WAAW,CAAC,CAAC,CAAC,CACf;;AAGH;;;;;;AAMG;AACI,IAAA,sBAAsB,CAAC,QAA8D,EAAE,cAAc,GAAG,KAAK,EAAA;QAClH,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;;QAGxJ,OAAO,OAAO,QAAQ,KAAK;AACzB,cAAE,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,QAAQ;AAChF,cAAE,wBAAwB,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,QAAQ,CAAC;;AAGnG;;AAEG;IACI,8BAA8B,GAAA;AACnC,QAAA,OAAO,cAAc,CACnB,IAAI,CAAC;AACF,aAAA,IAAI,CACH,MAAM,CAAC,sBAAsB,CAAC,EAC9B,GAAG,CAAC,CAAC,GAAG,KAAK;AACV,aAAA,GAAG,CAAC,CAAC,UAAU,KAAK,sBAAsB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;aACjE,MAAM,CAAC,CAAC,UAAU,KAAgE,CAAC,CAAC,UAAU;AAC9F,aAAA,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAC3G,CACF,CACJ;;AAGH;;;;;AAKG;AACI,IAAA,gBAAgB,CAAC,QAA8D,EAAE,cAAsB,EAAE,WAAgB,EAAA;AAC9H,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,yBAAyB,CAAC;AACxB,YAAA,EAAE,EAAE,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;AACzC,YAAA,aAAa,EAAE,EAAE,CAAC,cAAc,GAAG,WAAW;AAC/C,SAAA,CAAC,CACH;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;AAGpB;;;;AAIG;AACI,IAAA,0BAA0B,CAAC,QAA8D,EAAA;AAC9F,QAAA,OAAO,cAAc,CACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,MAAM,CAAC,2BAA2B,CAAC,EACnC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAC3H,MAAM,CAAC,CAAC,MAAM,KAAmC,CAAC,CAAC,MAAM,CAAC,EAC1D,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,MAAM,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM;AACvC,YAAA,OAAO,aAA8B;SACtC,CAAC,CACH,CACF;;AAGH;;AAEG;IACI,gBAAgB,GAAA;AACrB,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC;;AAGpD;;;AAGG;AACI,IAAA,iBAAiB,CAAC,cAAsD,EAAA;AAC7E,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,OAAO,cAAc,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;AACxJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;AA5GT,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,qEAOf,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAP/C,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA,CAAA;;4FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAQ7B;;0BAAY,MAAM;2BAAC,oCAAoC;;;ACpD5D;MA+Ba,mCAAmC,CAAA;;aAEvB,IAAgB,CAAA,gBAAA,GAAG,eAAH,CAAmB;IAE1D,WACmB,CAAA,qBAAiD,EACS,OAA4C,EAAA;QADtG,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACqC,IAAO,CAAA,OAAA,GAAP,OAAO;QAElF,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,4CAA4C,EAAE,GAAG,OAAO,EAAE;AAE9E,QAAA,IACE,IAAI,CAAC,OAAO,CAAC;AACV,gBACD,IAAI,CAAC,OAAO,CAAC;mBACT,QAAQ,CAAC,IAAI,CAAC,OAAoC,CAAC,UAAU,KAAK,MAAM,CAC7E,EACD;YACA,IAAI,CAAC,QAAQ,EAAE;;;IAIX,YAAY,CAAC,OAAe,EAAE,QAAA,GAAmB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAA;QACvF,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QACxD,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AAClC,QAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ;QACrB,CAAC,CAAC,KAAK,EAAE;;AAGH,IAAA,sBAAsB,CAAC,OAAe,EAAA;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;AAChD,QAAA,KAAK,CAAC,KAAK,GAAG,OAAO;AACrB,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,KAAK,CAAC,MAAM,EAAE;AACd,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;QAC5B,KAAK,CAAC,MAAM,EAAE;;AAGhB;;;;;AAKG;AACI,IAAA,gBAAgB,CAAC,QAA8D,EAAE,cAAsB,EAAE,WAAgB,EAAA;QAC9H,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC;;;IAI7E,QAAQ,GAAA;QACb,MAAM,kBAAkB,GAAuB,MAAM;AACrD,QAAA,kBAAkB,CAAC,gBAAgB,KAAK,EAAE;QAC1C,kBAAkB,CAAC,gBAAgB,CAAC,mCAAmC,CAAC,gBAAgB,CAAC,GAAG,IAAI;QAEhG,OAAO,CAAC,IAAI,CAAC,CAAA,wEAAA,EAA2E,mCAAmC,CAAC,gBAAgB,CAAW,SAAA,CAAA,CAAC;;AAG1J;;;AAGG;AACI,IAAA,MAAM,kCAAkC,GAAA;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,8BAA8B,EAAE;AACnF,QAAA,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;;AAGxB;;;;;;AAMG;IACI,MAAM,8BAA8B,CAAC,QAA8D,EAAA;QACxG,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,QAAQ,CAAC;AAC3F,QAAA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;;AAG5B;;;AAGG;IACI,MAAM,iBAAiB,CAAC,QAAA,GAAmB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAA;QAChF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC;AACvF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;;AAGtD;;AAEG;AACI,IAAA,MAAM,oBAAoB,GAAA;QAC/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;AACnE,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;;AAGtB;;AAEG;AACI,IAAA,MAAM,4BAA4B,GAAA;QACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;AAEnE,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACvB,QAAA,OAAO,CAAC,GAAG,CAAC,4DAA4D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA,EAAA,CAAI,CAAC;;AAG5H;;AAEG;AACI,IAAA,MAAM,4BAA4B,GAAA;QACvC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC;QACvF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;;AAGtD;;;;AAIG;AACI,IAAA,iBAAiB,CAAC,cAAsD,EAAA;AAC7E,QAAA,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,cAAc,CAAC;;AAG9D;;;AAGG;AACI,IAAA,oBAAoB,CAAC,cAAsD,EAAA;AAChF,QAAA,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,cAAc,CAAC;;AA/HnD,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,yDAMxB,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAN/C,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,cAFlC,MAAM,EAAA,CAAA,CAAA;;4FAEP,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAH/C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAOI;;0BAAY,MAAM;2BAAC,oCAAoC;;;ACmB5D;;;AAGG;AACU,MAAA,sBAAsB,GAAG,CAAC,OAAY,KAAsD;AACvG,IAAA,OAAO,OAAO,KACZ,OAAO,CAAC,QAAQ,KAAK;WAClB,OAAO,CAAC,QAAQ,KAAK;WACrB,OAAO,CAAC,QAAQ,KAAK;AACrB,WAAA,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;AACtC;;MCnBa,mCAAmC,CAAA;AAI9C,IAAA,WAAA,CACmB,KAAgC,EAChC,MAAqB,EACrB,qBAAiD,EACS,OAA4C,EAAA;QAHtG,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACqC,IAAO,CAAA,OAAA,GAAP,OAAO;AAPnE,QAAA,IAAA,CAAA,WAAW,IAAG,gBAAuD,CAAA;AACrE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAO9C,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,4CAA4C,EAAE,GAAG,OAAO,EAAE;AAE9E,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE;YACvC,IAAI,CAAC,QAAQ,EAAE;;;AAIX,IAAA,MAAM,6BAA6B,GAAA;AACzC,QAAA,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CACzD,MAAM,CAAC,2BAA2B,CAAC,CACpC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,EAAE,cAAc,EAAE,CAAC;;AAGxD;;;AAGG;AACK,IAAA,mBAAmB,CAAC,IAAsC,EAAA;QAChE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAC5C,YAAA,OAAO,IAAI,CAAC,6BAA6B,EAAE;;;AAI/C;;;AAGG;IACK,MAAM,YAAY,CAAC,OAA8C,EAAA;QACvE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE,OAAO,CAAC;AAE3E,QAAA,QAAQ,OAAO,CAAC,QAAQ;YACtB,KAAK,SAAS,EAAE;AACd,gBAAA,MAAM,IAAI,CAAC,aAAa,EAAE;gBAC1B;;YAEF,KAAK,iBAAiB,EAAE;gBACtB,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC5C;;YAEF,KAAK,cAAc,EAAE;AACnB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;wBAC5C,IAAI,EAAE,OAAO,CAAC,EAAE;wBAChB,MAAM,EAAE,OAAO,CAAC;AACjB,qBAAA,CAAC,CAAC;gBACH;;YAEF,SAAS;gBACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE,OAAO,CAAC;;;;AAK/E;;AAEG;IACK,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC;AAC1F,QAAA,OAAO,IAAI,CAAC,6BAA6B,EAAE;;;IAItC,QAAQ,GAAA;AACb,QAAA,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAC/B,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EACnC,oBAAoB,CAAC,sBAAsB,CAAC,CAC7C,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAExC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,MAAM,CAAC,2BAA2B,CAAC,EACnC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CACpC,CAAC,SAAS,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;;AAhF9E,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,2GAQxB,oCAAoC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAR/C,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,cAFlC,MAAM,EAAA,CAAA,CAAA;;4FAEP,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAH/C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BASI;;0BAAY,MAAM;2BAAC,oCAAoC;;;MChB/C,2BAA2B,CAAA;AACtC;;;AAGG;IACI,OAAO,UAAU,CAAC,OAAqD,EAAA;QAC5E,OAAO;AACL,YAAA,QAAQ,EAAE,2BAA2B;AACrC,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,oCAAoC,EAAE,QAAQ,EAAE,EAAE,GAAG,4CAA4C,EAAE,GAAG,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC1I,mCAAmC;gBACnC,mCAAmC;gBACnC;AACD;SACF;;kIAdQ,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA3B,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAVpC,WAAW;YACX,wBAAwB,CAAA,EAAA,CAAA,CAAA;AASf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,EAP3B,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,oCAAoC,EAAE,QAAQ,EAAE,4CAA4C,EAAE;YACzG,mCAAmC;YACnC,mCAAmC;YACnC;AACD,SAAA,EAAA,OAAA,EAAA,CARC,WAAW;YACX,wBAAwB,CAAA,EAAA,CAAA,CAAA;;4FASf,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAZvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,WAAW;wBACX;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,oCAAoC,EAAE,QAAQ,EAAE,4CAA4C,EAAE;wBACzG,mCAAmC;wBACnC,mCAAmC;wBACnC;AACD;AACF,iBAAA;;;MCzBY,8BAA8B,CAAA;kIAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mIAA9B,8BAA8B,EAAA,OAAA,EAAA,CAF/B,wBAAwB,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;mIAErC,8BAA8B,EAAA,OAAA,EAAA,CAF/B,wBAAwB,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAErC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,wBAAwB,EAAE,YAAY;AACjD,iBAAA;;;AC8BD,MAAM,iBAAiB,GAAG,CAAC,IAAS,EAAE,IAAS,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAEjG;;AAEG;MAIU,wBAAwB,CAAA;AAGnC,IAAA,WAAA,CAA6B,KAAsD,EAAA;QAAtD,IAAK,CAAA,KAAA,GAAL,KAAK;QAFjB,IAAqB,CAAA,qBAAA,GAA+B,EAAE;;AAIvE;;;;AAIG;AACI,IAAA,mBAAmB,CAA0B,aAAgB,EAAE,eAAe,GAAG,qBAAqB,EAAA;AAC3G,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;;AAGxF;;;;AAIG;AACI,IAAA,mBAAmB,CAAmC,aAAgB,EAAE,eAAe,GAAG,qBAAqB,EAAA;AACpH,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;;AAGxF;;;AAGG;IACI,oBAAoB,CAA0B,aAAa,GAAG,cAAc,EAAA;QACjF,MAAM,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAClE,QAAA,MAAM,kBAAkB,GAAsB,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,EAAE;AAC5G,QAAA,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;;;AAIjD;;;AAGG;AACI,IAAA,oBAAoB,CAA0B,kBAAqC,EAAA;AACxF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC;;AAG5F;;;;;AAKG;IACI,mBAAmB,CAA0B,SAAY,EAAE,eAAe,GAAG,qBAAqB,EAAE,WAAW,GAAG,KAAK,EAAA;QAC5H,IAAI,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE;YAC/D;;AAEF,QAAA,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,GAAG,IAAI;AAClD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,MAAM,CAAC,2BAA2B,CAAC,EACnC,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,aAAa,KAAK,eAAe,IAAI,aAAa,GAAG,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,GAAG,SAAS,CAAC,CAC3H,CAAC,SAAS,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;;AAG5F;;;;AAIG;IACI,kBAAkB,CAA0B,EAAU,EAAE,YAAe,EAAA;QAC5E,OAAO,CAAC,MAA0C,KAAmB;YACnE,MAAM,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAI,EAAE,CAAC;YAE9D,OAAO,MAAM,CAAC,IAAI,CAChB,SAAS,CAAC,CAAC,cAAc,KAAK,gCAAgC,CAAC,IAAI,CACjE,GAAG,CAAC,CAAC,+BAA+B,KAAI;AACtC,gBAAA,MAAM,MAAM,GAAG,+BAA+B,GAAG,QAAQ,CAAC,YAAY,EAAE,+BAA+B,CAAC,GAAG,YAAY;AACvH,gBAAA,OAAO,cAAc,GAAG,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,MAAM;AACnE,aAAC,CAAC,CACH,CAAC,CACH;AACH,SAAC;;AAGH;;;AAGG;AACI,IAAA,SAAS,CAA0B,EAAU,EAAA;AAClD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACxE,QAAA,MAAM,gBAAgB,GAAG,EAAE,KAAK,qBAAqB,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,+BAA+B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACjI,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;QAElF,OAAO,aAAa,CAAC,CAAC,aAAa,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAC3E,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,CAAC,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,eAAe,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC,EACtH,oBAAoB,CAAC,iBAAiB,CAAC,CACxC;;kIA7FQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,8BAA8B,EAAA,CAAA,CAAA;;4FAE/B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACtCD,MAAM,SAAS,GAAG,CAAC,MAAW,EAAE,GAAW,KAAI;AAC7C,IAAA,MAAM,YAAY,GAAG,CAAI,CAAA,EAAA,GAAG,EAAE;AAE9B,IAAA,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE;AACtB,QAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;AACjC,YAAA,GAAG,EAAE,YAAA;AACH,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC;aAC1B;YACD,GAAG,EAAE,UAAqB,KAAgF,EAAA;AACxG,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK;AAC1B,gBAAA,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE;AACxC,oBAAA,IAAI,CAAC,8BAA8B,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ;;aAE9E;AACD,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;;AAEN,CAAC;AAED;;;AAGG;AACH;SACgB,cAAc,GAAA;AAC5B,IAAA,OAAO,SAAS;AAClB;AAEA;;AAEG;AACH;SACgB,SAAS,GAAA;AACvB,IAAA,OAAO,SAAS;AAClB;;MC3Ba,qBAAqB,CAAA;AAUhC,IAAA,WAAA;;IAES,QAAgB,EACvB,aAAgB,EAChB,oBAA+C,EAAA;QAFxC,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAPA,QAAA,IAAA,CAAA,UAAU,GAAgC,IAAI,eAAe,CAAa,EAAE,CAAC;QAW5F,IAAI,oBAAoB,EAAE;AACxB,YAAA,oBAAoB,CAAC,mBAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC;;AAGnE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACpB,aAAA,IAAI,CACH,oBAAoB,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,EACzH,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/C;;;AAIE,IAAA,IAAI,CAAC,KAAkB,EAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;;;AAI5B,IAAA,KAAK,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;;IAIb,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;AAGpB;;AAEG;IACI,YAAY,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;;AAEzB;;AClBD;AACM,SAAU,YAAY,CAC1B,WAAgD,EAChD,QAAgB,EAChB,aAAgB,EAChB,oBAAsD,EAAA;AAEtD,IAAA,oBAAoB,GAAG,oBAAoB,IAAI,MAAM,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACnG,IAAI,oBAAoB,EAAE;AACxB,QAAA,oBAAoB,CAAC,mBAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC;;IAGnE,MAAM,MAAM,GAA2B,QAAQ,CAC7C,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAC5B,oBAAoB,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,EACzHC,aAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C,EACD,EAAE,YAAY,EAAE,aAAa,EAAE,CACN;AAC3B,IAAA,MAAM,CAAC,QAAQ,GAAG,QAAQ;AAC1B,IAAA,OAAO,MAAM;AACf;;ACxEA;;AAEG;;;;"}
1
+ {"version":3,"file":"o3r-configuration.mjs","sources":["../../src/core/configuration.ts","../../src/stores/config-override/config-override.actions.ts","../../src/stores/config-override/config-override.reducer.ts","../../src/stores/config-override/config-override.state.ts","../../src/stores/config-override/config-override.module.ts","../../src/stores/config-override/config-override.selectors.ts","../../src/stores/config-override/config-override.sync.ts","../../src/stores/configuration/configuration.actions.ts","../../src/stores/configuration/configuration.helpers.ts","../../src/stores/configuration/configuration.reducer.ts","../../src/stores/configuration/configuration.state.ts","../../src/stores/configuration/configuration.module.ts","../../src/stores/configuration/configuration.selectors.ts","../../src/stores/configuration/configuration.sync.ts","../../src/devkit/configuration-devtools.token.ts","../../src/devkit/configuration-devtools.service.ts","../../src/devkit/configuration-devtools.console.service.ts","../../src/devkit/configuration-devtools.interface.ts","../../src/devkit/configuration-devtools.message.service.ts","../../src/devkit/configuration-devtools.module.ts","../../src/services/configuration/configuration.base.module.ts","../../src/services/configuration/configuration.base.service.ts","../../src/tools/configuration.decorators.ts","../../src/tools/configuration.observer.ts","../../src/tools/configuration.signal.ts","../../src/o3r-configuration.ts"],"sourcesContent":["import {\n deepFill,\n} from '@o3r/core';\nimport {\n Observable,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n shareReplay,\n} from 'rxjs/operators';\n\n/**\n * Interface to define the error messages into component configuration\n */\nexport interface ErrorMessages {\n /**\n * Error message map\n */\n errorMessages: { [key: string]: string };\n}\n\n/**\n * Interface to specify that the component has an ID\n */\nexport interface Identifiable {\n /**\n * Identifier\n */\n id: string;\n}\n\n/**\n * Get the component and library's names based on the configuration name\n * @param configurationName Name of the component as found in the store\n * @returns Object containing library and component name.\n */\nexport function parseConfigurationName(configurationName: string): { library?: string; libraryName?: string; componentName: string } | undefined {\n const parsedConfigurationName = configurationName.match(/^([^#]*)#(.*)$/i);\n if (parsedConfigurationName) {\n return {\n library: parsedConfigurationName.length > 2 ? parsedConfigurationName[1] : undefined,\n componentName: parsedConfigurationName.length > 2 ? parsedConfigurationName[2] : parsedConfigurationName[0]\n };\n }\n}\n\n/**\n * Operator to get the configuration from store for a given component and merge it with the global config\n * @param defaultValue Default value of the configuration\n */\nexport function getConfiguration<T extends Record<string, unknown>>(defaultValue: T) {\n return <C extends Partial<T>>(source: Observable<C | undefined >): Observable<T> =>\n source.pipe(\n map((configOverride) => {\n return deepFill(defaultValue, configOverride);\n }),\n distinctUntilChanged((prev, current) => JSON.stringify(prev) === JSON.stringify(current)),\n shareReplay({ refCount: true, bufferSize: 1 })\n );\n}\n","import {\n createAction,\n props,\n} from '@ngrx/store';\nimport {\n SetStateActionPayload,\n} from '@o3r/core';\nimport {\n ConfigOverrideState,\n} from './config-override.state';\n\n/** Actions */\nconst ACTION_SET = '[ConfigOverride] set';\n\n/**\n * Clear all overrides and fill the store with the payload\n */\nexport const setConfigOverride = createAction(ACTION_SET, props<SetStateActionPayload<ConfigOverrideState>>());\n","import {\n ActionCreator,\n createReducer,\n on,\n ReducerTypes,\n} from '@ngrx/store';\nimport * as actions from './config-override.actions';\nimport {\n ConfigOverrideState,\n} from './config-override.state';\n\n/**\n * ConfigOverride Store initial value\n */\nexport const configOverrideInitialState: ConfigOverrideState = { configOverrides: {} };\n\n/**\n * List of basic actions for ConfigOverride Store\n */\nexport const configOverrideReducerFeatures: ReducerTypes<ConfigOverrideState, ActionCreator[]>[] = [\n on(actions.setConfigOverride, (_state, payload) => ({ ...payload.state }))\n];\n\n/**\n * ConfigOverride Store reducer\n */\nexport const configOverrideReducer = createReducer(\n configOverrideInitialState,\n ...configOverrideReducerFeatures\n);\n","/**\n * Property override model\n */\nexport interface PropertyOverride {\n [property: string]: any;\n}\n\n/**\n * ConfigOverride store state\n */\nexport interface ConfigOverrideState {\n /** Map of PropertyOverride indexed on component + config name */\n configOverrides: Record<string, PropertyOverride>;\n}\n\n/**\n * Name of the ConfigOverride Store\n */\nexport const CONFIG_OVERRIDE_STORE_NAME = 'configOverride';\n\n/**\n * ConfigOverride Store Interface\n */\nexport interface ConfigOverrideStore {\n /** ConfigOverride state */\n [CONFIG_OVERRIDE_STORE_NAME]: ConfigOverrideState;\n}\n","import {\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n StoreModule,\n} from '@ngrx/store';\nimport {\n configOverrideReducer,\n} from './config-override.reducer';\nimport {\n CONFIG_OVERRIDE_STORE_NAME,\n ConfigOverrideState,\n} from './config-override.state';\n\n/** Token of the ConfigOverride reducer */\nexport const CONFIG_OVERRIDE_REDUCER_TOKEN = new InjectionToken<ActionReducer<ConfigOverrideState, Action>>('Feature ConfigOverride Reducer');\n\n/** Provide default reducer for ConfigOverride store */\nexport function getDefaultConfigOverrideReducer() {\n return configOverrideReducer;\n}\n\n@NgModule({\n imports: [\n StoreModule.forFeature(CONFIG_OVERRIDE_STORE_NAME, CONFIG_OVERRIDE_REDUCER_TOKEN)\n ],\n providers: [\n { provide: CONFIG_OVERRIDE_REDUCER_TOKEN, useFactory: getDefaultConfigOverrideReducer }\n ]\n})\nexport class ConfigOverrideStoreModule {\n public static forRoot<T extends ConfigOverrideState>(reducerFactory: () => ActionReducer<T, Action>): ModuleWithProviders<ConfigOverrideStoreModule> {\n return {\n ngModule: ConfigOverrideStoreModule,\n providers: [\n { provide: CONFIG_OVERRIDE_REDUCER_TOKEN, useFactory: reducerFactory }\n ]\n };\n }\n}\n","import {\n createFeatureSelector,\n createSelector,\n} from '@ngrx/store';\nimport {\n CONFIG_OVERRIDE_STORE_NAME,\n ConfigOverrideState,\n} from './config-override.state';\n\n/** Select ConfigOverride State */\nexport const selectConfigOverrideState = createFeatureSelector<ConfigOverrideState>(CONFIG_OVERRIDE_STORE_NAME);\n\n/** Select the array of ConfigOverride */\nexport const selectConfigOverride = createSelector(selectConfigOverrideState, (state) => state?.configOverrides || {});\n\n/**\n * Get the override for given component identifier\n * @param componentId\n */\nexport const selectComponentOverrideConfig = (componentId: string) => createSelector(selectConfigOverride, (configOverrides) => configOverrides[componentId] || {});\n","import {\n Serializer,\n} from '@o3r/core';\nimport {\n configOverrideInitialState,\n} from './config-override.reducer';\nimport {\n ConfigOverrideState,\n} from './config-override.state';\n\n/**\n * Deserializer\n * @param rawObject\n */\nexport const configOverrideStorageDeserializer = (rawObject: any) => {\n if (!rawObject) {\n return configOverrideInitialState;\n }\n return rawObject;\n};\n\nexport const configOverrideStorageSync: Serializer<ConfigOverrideState> = {\n deserialize: configOverrideStorageDeserializer\n};\n","import {\n createAction,\n props,\n} from '@ngrx/store';\nimport {\n Configuration,\n} from '@o3r/core';\n\nexport interface SetConfigurationEntitiesPayload {\n /** Map of configurations to update/insert, this is now Partial due the change of Configuration interface */\n entities: { [id: string]: Partial<Configuration> };\n}\n\nexport interface UpsertConfigurationEntityPayload {\n /** ID of the item */\n id: string;\n /** Updated/New configuration object */\n configuration: Partial<Configuration>;\n}\n\nexport interface UpdateConfigurationEntityPayload {\n /** ID of the item */\n id: string;\n /** Updated/New configuration partial object */\n configuration: Partial<Configuration>;\n}\n\n/** Entity Actions */\nconst ACTION_CLEAR_ENTITIES = '[Configuration] clear entities';\nconst ACTION_UPDATE_ENTITIES = '[Configuration] update entities';\nconst ACTION_UPSERT_ENTITIES = '[Configuration] upsert entities';\nconst ACTION_SET_ENTITIES = '[Configuration] set entities';\nconst ACTION_UPDATE_CONFIGURATION_ENTITY = '[Configuration] update configuration entity';\nconst ACTION_UPSERT_CONFIGURATION_ENTITY = '[Configuration] set configuration entity';\n\n/**\n * Upsert one configuration entity\n */\nexport const upsertConfigurationEntity = createAction(ACTION_UPSERT_CONFIGURATION_ENTITY, props<UpsertConfigurationEntityPayload>());\n\n/**\n * Update one configuration entity\n */\nexport const updateConfigurationEntity = createAction(ACTION_UPDATE_CONFIGURATION_ENTITY, props<UpdateConfigurationEntityPayload>());\n\n/**\n * Clear all configuration and fill the store with the payload\n */\nexport const setConfigurationEntities = createAction(ACTION_SET_ENTITIES, props<SetConfigurationEntitiesPayload>());\n\n/**\n * Update configuration with known IDs, ignore the new ones\n */\nexport const updateConfigurationEntities = createAction(ACTION_UPDATE_ENTITIES, props<SetConfigurationEntitiesPayload>());\n\n/**\n * Update configuration with known IDs, insert the new ones\n */\nexport const upsertConfigurationEntities = createAction(ACTION_UPSERT_ENTITIES, props<SetConfigurationEntitiesPayload>());\n\n/**\n * Clear only the entities, keeps the other attributes in the state\n */\nexport const clearConfigurationEntities = createAction(ACTION_CLEAR_ENTITIES);\n","import type {\n Configuration,\n CustomConfig,\n} from '@o3r/core';\nimport {\n computeItemIdentifier,\n} from '@o3r/core';\nimport {\n SetConfigurationEntitiesPayload,\n} from './configuration.actions';\n\n/**\n * compute the configuration into SetEntitiesPayload\n * @param customConfigObject array of configurations\n */\nexport function computeConfiguration<T extends Configuration>(customConfigObject: CustomConfig<T>[]): SetConfigurationEntitiesPayload {\n const entities = customConfigObject.reduce<{ [k: string]: Partial<T> & { id: string } }>((acc, conf) => {\n const id = computeItemIdentifier(conf.name, conf.library);\n acc[id] = { ...conf.config, id };\n return acc;\n }, {});\n return { entities };\n}\n","import {\n createEntityAdapter,\n EntityAdapter,\n} from '@ngrx/entity';\nimport {\n ActionCreator,\n createReducer,\n on,\n ReducerTypes,\n} from '@ngrx/store';\nimport * as actions from './configuration.actions';\nimport {\n ConfigurationModel,\n ConfigurationState,\n} from './configuration.state';\n\n/**\n * Configuration Store adapter\n */\nexport const configurationAdapter: EntityAdapter<ConfigurationModel> = createEntityAdapter<ConfigurationModel>({\n selectId: (model) => model.id\n});\n\n/**\n * Configuration Store initial value\n */\nexport const configurationInitialState: ConfigurationState = configurationAdapter.getInitialState({});\n\n/**\n * List of basic actions for Configuration Store\n */\nexport const configurationReducerFeatures: ReducerTypes<ConfigurationState, ActionCreator[]>[] = [\n\n on(actions.setConfigurationEntities, (state, payload) => configurationAdapter.addMany((Object.keys(payload) as (keyof typeof payload)[]).map((id) =>\n ({ ...(payload[id] as any), id })), configurationAdapter.removeAll(state))),\n\n on(actions.updateConfigurationEntities, (state, payload) =>\n configurationAdapter.updateMany(Object.keys(payload.entities).map((id) => ({ id: id, changes: payload.entities[id] })), state)),\n\n on(actions.upsertConfigurationEntities, (state, payload) => configurationAdapter.upsertMany(Object.keys(payload.entities).map((id) => ({ ...payload.entities[id], id })), state)),\n\n on(actions.clearConfigurationEntities, (state) => configurationAdapter.removeAll(state)),\n\n on(actions.updateConfigurationEntity, (state, payload) => configurationAdapter.updateOne({ id: payload.id, changes: payload.configuration }, state)),\n\n on(actions.upsertConfigurationEntity, (state, payload) => configurationAdapter.upsertOne({ id: payload.id, ...payload.configuration }, state))\n];\n\n/**\n * Configuration Store reducer\n */\nexport const configurationReducer = createReducer(\n configurationInitialState,\n ...configurationReducerFeatures\n);\n","import type {\n EntityState,\n} from '@ngrx/entity';\nimport type {\n Configuration,\n} from '@o3r/core';\n\n/**\n * Configuration model\n */\nexport interface ConfigurationModel extends Configuration {\n id: string;\n}\n\n/**\n * Configuration store state\n */\nexport interface ConfigurationState extends EntityState<ConfigurationModel> {\n}\n\n/**\n * Name of the Configuration Store\n */\nexport const CONFIGURATION_STORE_NAME = 'configuration';\n\n/**\n * Configuration Store Interface\n */\nexport interface ConfigurationStore {\n /** Configuration state */\n [CONFIGURATION_STORE_NAME]: ConfigurationState;\n}\n\n/**\n * ID of the global configuration\n */\nexport const globalConfigurationId = 'global';\n","import {\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n StoreModule,\n} from '@ngrx/store';\nimport {\n configurationReducer,\n} from './configuration.reducer';\nimport {\n CONFIGURATION_STORE_NAME,\n ConfigurationState,\n} from './configuration.state';\n\n/** Token of the Configuration reducer */\nexport const CONFIGURATION_REDUCER_TOKEN = new InjectionToken<ActionReducer<ConfigurationState, Action>>('Feature Configuration Reducer');\n\n/** Provide default reducer for Configuration store */\nexport function getDefaultConfigurationReducer() {\n return configurationReducer;\n}\n\n@NgModule({\n imports: [\n StoreModule.forFeature(CONFIGURATION_STORE_NAME, CONFIGURATION_REDUCER_TOKEN)\n ],\n providers: [\n { provide: CONFIGURATION_REDUCER_TOKEN, useFactory: getDefaultConfigurationReducer }\n ]\n})\nexport class ConfigurationStoreModule {\n public static forRoot<T extends ConfigurationState>(reducerFactory: () => ActionReducer<T, Action>): ModuleWithProviders<ConfigurationStoreModule> {\n return {\n ngModule: ConfigurationStoreModule,\n providers: [\n { provide: CONFIGURATION_REDUCER_TOKEN, useFactory: reducerFactory }\n ]\n };\n }\n}\n","import {\n createSelector,\n} from '@ngrx/store';\nimport {\n Configuration,\n} from '@o3r/core';\nimport {\n configurationAdapter,\n} from './configuration.reducer';\nimport {\n CONFIGURATION_STORE_NAME,\n ConfigurationState,\n globalConfigurationId,\n} from './configuration.state';\n\nconst { selectIds, selectEntities, selectAll, selectTotal } = configurationAdapter.getSelectors();\n\n/**\n * Select Configuration State\n * Note: the usage of createSelector is to avoid warning printing because of potentially undefined feature store\n */\nexport const selectConfigurationState = createSelector<{ [CONFIGURATION_STORE_NAME]: ConfigurationState }, [state: ConfigurationState | undefined], ConfigurationState | undefined>(\n (state) => state[CONFIGURATION_STORE_NAME],\n (state) => state\n);\n\n/** Select the array of Configuration ids */\nexport const selectConfigurationIds = createSelector(selectConfigurationState, (state) => state ? selectIds(state) : []);\n\n/** Select the array of Configuration */\nexport const selectAllConfiguration = createSelector(selectConfigurationState, (state) => state ? selectAll(state) : []);\n\n/** Select the dictionary of Configuration entities */\nexport const selectConfigurationEntities = createSelector(selectConfigurationState, (state) => state ? selectEntities(state) : {});\n\n/** Select the total Configuration count */\nexport const selectConfigurationTotal = createSelector(selectConfigurationState, (state) => state ? selectTotal(state) : 0);\n\n/**\n * Select the configuration for component with id\n * @param props property of the selector\n * @param props.id id of the component\n */\nexport const selectConfigurationForComponent = <T extends Configuration>(props: { id: string }) =>\n createSelector(selectConfigurationEntities, (entities) => (entities?.[props.id] || {}) as Configuration as T);\n\n/**\n * Select the global configuration\n */\nexport const selectGlobalConfiguration = createSelector(selectConfigurationForComponent({ id: globalConfigurationId }), (config) => config);\n","import {\n configurationAdapter,\n configurationInitialState,\n} from './configuration.reducer';\nimport {\n ConfigurationState,\n} from './configuration.state';\n\nexport const configurationStorageSync = {\n deserialize: (rawObject: any) => {\n if (!rawObject || !rawObject.ids) {\n return configurationInitialState;\n }\n const storeObject = configurationAdapter.getInitialState<ConfigurationState>(rawObject);\n return storeObject as ConfigurationState;\n }\n};\n","import {\n InjectionToken,\n} from '@angular/core';\nimport {\n ConfigurationDevtoolsServiceOptions,\n} from './configuration-devtools.interface';\n\nexport const OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS: Readonly<ConfigurationDevtoolsServiceOptions> = {\n defaultLibraryName: '@o3r/components',\n defaultJsonFilename: 'partial-static-config.json',\n isActivatedOnBootstrap: false,\n isActivatedOnBootstrapWhenCMSContext: true\n} as const;\n\nexport const OTTER_CONFIGURATION_DEVTOOLS_OPTIONS = new InjectionToken<ConfigurationDevtoolsServiceOptions>('Otter Configuration Devtools options');\n","import {\n ApplicationRef,\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport {\n select,\n Store,\n} from '@ngrx/store';\nimport {\n computeItemIdentifier,\n Configuration,\n CustomConfig,\n} from '@o3r/core';\nimport {\n firstValueFrom,\n Observable,\n} from 'rxjs';\nimport {\n filter,\n map,\n shareReplay,\n} from 'rxjs/operators';\nimport {\n parseConfigurationName,\n} from '../core';\nimport {\n computeConfiguration,\n ConfigurationModel,\n ConfigurationStore,\n selectConfigurationEntities,\n selectConfigurationIds,\n upsertConfigurationEntities,\n upsertConfigurationEntity,\n} from '../stores';\nimport {\n ConfigurationDevtoolsServiceOptions,\n} from './configuration-devtools.interface';\nimport {\n OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS,\n OTTER_CONFIGURATION_DEVTOOLS_OPTIONS,\n} from './configuration-devtools.token';\n\n@Injectable({ providedIn: 'root' })\nexport class OtterConfigurationDevtools {\n /** Stream of configurations */\n public readonly configurationEntities$: Observable<CustomConfig[]>;\n\n constructor(\n protected store: Store<ConfigurationStore>,\n private readonly appRef: ApplicationRef,\n @Optional() @Inject(OTTER_CONFIGURATION_DEVTOOLS_OPTIONS) private readonly options: ConfigurationDevtoolsServiceOptions) {\n this.options = { ...OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, ...options };\n\n /** Full configuration store */\n this.configurationEntities$ = this.store.pipe(\n select(selectConfigurationEntities),\n map((entities) =>\n Object.values(entities)\n .filter((entity): entity is ConfigurationModel => !!entity)\n .map((entity) => {\n const { id, ...config } = entity;\n const { library = this.options.defaultLibraryName, componentName: name = id } = parseConfigurationName(id) || {};\n return { name, config, library } satisfies CustomConfig;\n })\n ),\n shareReplay(1)\n );\n }\n\n /**\n * Get configuration name based on input information\n * @param selector Selector for a component configuration. It can be a string in the form library#componentName (i.e: @my-lib/shared-components#HeaderContComponent)\n * or an object with the component and library names (i.e: {library:\"@my-lib/shared-components\", componentName:'HeaderContComponent'})\n * @param isFallbackName Determine if the name requested is a fallback name\n * @returns string in the format library#componentName (i.e: \"@my-lib/shared-components#HeaderContComponent\")\n */\n public getComponentConfigName(selector: string | { library?: string; componentName: string }, isFallbackName = false) {\n if (!isFallbackName) {\n return typeof selector === 'string' ? selector : computeItemIdentifier(selector.componentName, selector.library || this.options.defaultLibraryName);\n }\n\n return typeof selector === 'string'\n ? computeItemIdentifier(selector, this.options.defaultLibraryName || 'global')\n : computeItemIdentifier(selector.componentName, this.options.defaultLibraryName || 'global');\n }\n\n /**\n * Get the list of components which have a configuration loaded in the store\n */\n public getComponentsWithConfiguration(): Promise<string[]> {\n return firstValueFrom(\n this.store\n .pipe(\n select(selectConfigurationIds),\n map((ids) => ids\n .map((configName) => parseConfigurationName(configName.toString()))\n .filter((parsedName): parsedName is { library?: string; componentName: string } => !!parsedName)\n .map((parsedName) => parsedName.componentName + (parsedName.library ? ' from ' + parsedName.library : ''))\n )\n )\n );\n }\n\n /**\n * Set a specified value of a component configuration\n * @param selector Selector for a component configuration\n * @param configProperty Name of the configuration property to set\n * @param configValue Value of the configuration property to set\n */\n public setDynamicConfig(selector: string | { library?: string; componentName: string }, configProperty: string, configValue: any): void {\n this.store.dispatch(\n upsertConfigurationEntity({\n id: this.getComponentConfigName(selector),\n configuration: { [configProperty]: configValue }\n })\n );\n this.appRef.tick();\n }\n\n /**\n * Get the configuration for a specific component\n * @param selector Selector for a component configuration. It can be a string in the form library#configurationName (i.e: @my-lib/shared-components#HeaderPresConfig)\n * or an object with the configuration and library names (i.e: {library:\"@my-lib/shared-components\", componentName:'HeaderPresConfig'})\n */\n public getCurrentConfigurationFor(selector: string | { library?: string; componentName: string }): Promise<Configuration> {\n return firstValueFrom(\n this.store.pipe(\n select(selectConfigurationEntities),\n map((entities) => entities[this.getComponentConfigName(selector)] || entities[this.getComponentConfigName(selector, true)]),\n filter((entity): entity is ConfigurationModel => !!entity),\n map((entity) => {\n const { id, ...configuration } = entity;\n return configuration as Configuration;\n })\n )\n );\n }\n\n /**\n * Get the whole configuration of the application\n */\n public getConfiguration() {\n return firstValueFrom(this.configurationEntities$);\n }\n\n /**\n * Load a json configuration\n * @param configurations configurations to load\n */\n public loadConfiguration(configurations: string | CustomConfig<Configuration>[]): void {\n this.store.dispatch(upsertConfigurationEntities(computeConfiguration(typeof configurations === 'string' ? JSON.parse(configurations) : configurations)));\n this.appRef.tick();\n }\n}\n","/* eslint-disable no-console -- service to log message in the console */\nimport {\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport type {\n Configuration,\n ContextualizationDataset,\n CustomConfig,\n DevtoolsServiceInterface,\n WindowWithDevtools,\n} from '@o3r/core';\nimport {\n firstValueFrom,\n} from 'rxjs';\nimport {\n ConfigurationContextualizationDevtools,\n ConfigurationDevtoolsServiceOptions,\n} from './configuration-devtools.interface';\nimport {\n OtterConfigurationDevtools,\n} from './configuration-devtools.service';\nimport {\n OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS,\n OTTER_CONFIGURATION_DEVTOOLS_OPTIONS,\n} from './configuration-devtools.token';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationDevtoolsConsoleService implements DevtoolsServiceInterface, ConfigurationContextualizationDevtools {\n /** Name of the Window property to access to the devtools */\n public static readonly windowModuleName = 'configuration';\n\n constructor(\n private readonly configurationDevtools: OtterConfigurationDevtools,\n @Optional() @Inject(OTTER_CONFIGURATION_DEVTOOLS_OPTIONS) private readonly options: ConfigurationDevtoolsServiceOptions\n ) {\n this.options = { ...OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, ...options };\n\n if (\n this.options.isActivatedOnBootstrap\n || (\n this.options.isActivatedOnBootstrapWhenCMSContext\n && (document.body.dataset as ContextualizationDataset).cmscontext === 'true'\n )\n ) {\n this.activate();\n }\n }\n\n private downloadJSON(content: string, fileName: string = this.options.defaultJsonFilename): void {\n const a = document.createElement('a');\n const file = new Blob([content], { type: 'text/plain' });\n a.href = URL.createObjectURL(file);\n a.download = fileName;\n a.click();\n }\n\n private copyElementToClipboard(content: string): void {\n const input = document.createElement('textarea');\n input.value = content;\n document.body.append(input);\n input.select();\n document.execCommand('copy');\n input.remove();\n }\n\n /**\n * Set a specified value of a component configuration\n * @param selector Selector for a component configuration\n * @param configProperty Name of the configuration property to set\n * @param configValue Value of the configuration property to set\n */\n public setDynamicConfig(selector: string | { library?: string; componentName: string }, configProperty: string, configValue: any): void {\n this.configurationDevtools.setDynamicConfig(selector, configProperty, configValue);\n }\n\n /** @inheritDoc */\n public activate() {\n const windowWithDevtools: WindowWithDevtools = window;\n windowWithDevtools._OTTER_DEVTOOLS_ ||= {};\n windowWithDevtools._OTTER_DEVTOOLS_[ConfigurationDevtoolsConsoleService.windowModuleName] = this;\n\n console.info(`Otter Configuration Devtools is now accessible via the _OTTER_DEVTOOLS_.${ConfigurationDevtoolsConsoleService.windowModuleName} variable`);\n }\n\n /**\n * Display the list of configurations loaded in the store and the library they originate from\n * @returns array with the configurations and libraries for example: [\"LibComponentsCommonRuntimeConfig from @my-lib/shared-common\"]\n */\n public async displayComponentsWithConfiguration() {\n const selectors = await this.configurationDevtools.getComponentsWithConfiguration();\n console.log(selectors);\n }\n\n /**\n * Display the configuration for a specific component\n * @param selector Selector for a component configuration. It can be a string in the form library#configurationName (i.e: '@my-lib/shared-components#HeaderContConfig')\n * or an object with the configuration and library names (i.e: {library:\"@my-lib/shared-components\", componentName:'HeaderContConfig'}).\n * Note the object input componentName expects a configuration name not a component name.\n * @returns Configuration object (i.e: {airlineLogoPath: \"img/airlines/icon-BH.svg\", displayLanguageSelector: false})\n */\n public async displayCurrentConfigurationFor(selector: string | { library?: string; componentName: string }) {\n const configuration = await this.configurationDevtools.getCurrentConfigurationFor(selector);\n console.log(configuration);\n }\n\n /**\n * Download the JSON file of the whole configuration\n * @param fileName Name of the file to download\n */\n public async saveConfiguration(fileName: string = this.options.defaultJsonFilename) {\n const configs = await firstValueFrom(this.configurationDevtools.configurationEntities$);\n this.downloadJSON(JSON.stringify(configs), fileName);\n }\n\n /**\n * Display the whole configuration of the application\n */\n public async displayConfiguration() {\n const configs = await this.configurationDevtools.getConfiguration();\n console.log(configs);\n }\n\n /**\n * Display a bookmark to generate the current configuration\n */\n public async displayConfigurationBookmark() {\n const content = await this.configurationDevtools.getConfiguration();\n\n console.log('BOOKMARK');\n console.log(`javascript:window._OTTER_DEVTOOLS_.updateConfigurations('${JSON.stringify(content).replace(/'/g, '\\\\\\'')}')`);\n }\n\n /**\n * Copy the whole configuration to the clipboard\n */\n public async copyConfigurationToClipboard() {\n const configs = await firstValueFrom(this.configurationDevtools.configurationEntities$);\n this.copyElementToClipboard(JSON.stringify(configs));\n }\n\n /**\n * Replace N configurations in one shot\n * @param configurations array of configurations to update\n */\n public updateConfigurations(configurations: string | CustomConfig<Configuration>[]): void {\n this.configurationDevtools.loadConfiguration(configurations);\n }\n}\n","import type {\n Dictionary,\n} from '@ngrx/entity';\nimport type {\n Configuration,\n ConnectContentMessage,\n ContextualizationDevtoolsCommonOptions,\n CustomConfig,\n DevtoolsCommonOptions,\n MessageDataTypes,\n OtterMessageContent,\n RequestMessagesContentMessage,\n} from '@o3r/core';\nimport type {\n ConfigurationModel,\n} from '../stores/index';\n\n/** Option for Configuration devtools service */\nexport interface ConfigurationDevtoolsServiceOptions extends DevtoolsCommonOptions, ContextualizationDevtoolsCommonOptions {\n /**\n * Default library name to use if not specified in the function call\n * @default `@o3r/components`\n */\n defaultLibraryName: string;\n /**\n * Default JSON file name if not specified in the function\n * @default partial-static-config.json\n */\n defaultJsonFilename: string;\n}\n\nexport interface ConfigurationsMessage extends OtterMessageContent<'configurations'> {\n /** Configurations */\n configurations: Dictionary<ConfigurationModel>;\n}\n\nexport interface UpdateConfigMessage extends OtterMessageContent<'updateConfig'> {\n /** Configuration ID */\n id: string;\n /** Configuration value */\n configValue: any;\n}\n\ntype ConfigurationMessageContents =\n | ConfigurationsMessage\n | UpdateConfigMessage;\n\n/** List of possible DataTypes for Configuration messages */\nexport type ConfigurationMessageDataTypes = MessageDataTypes<ConfigurationMessageContents>;\n\n/** List of all messages for configuration purpose */\nexport type AvailableConfigurationMessageContents =\n | ConfigurationMessageContents\n | ConnectContentMessage\n | RequestMessagesContentMessage<ConfigurationMessageDataTypes>;\n\n/**\n * Determine if the given message is a Configuration message\n * @param message message to check\n */\nexport const isConfigurationMessage = (message: any): message is AvailableConfigurationMessageContents => {\n return message && (\n message.dataType === 'configurations'\n || message.dataType === 'updateConfig'\n || message.dataType === 'requestMessages'\n || message.dataType === 'connect');\n};\n\n/**\n * Contextualization devtools exposed for configuration in CMS integration\n */\nexport interface ConfigurationContextualizationDevtools {\n /**\n * Replace N configurations in one shot\n * @param configs array of configurations to update\n */\n updateConfigurations: (configurations: CustomConfig<Configuration>[]) => void;\n}\n","import {\n DestroyRef,\n inject,\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport {\n takeUntilDestroyed,\n} from '@angular/core/rxjs-interop';\nimport {\n select,\n Store,\n} from '@ngrx/store';\nimport {\n DevtoolsServiceInterface,\n filterMessageContent,\n sendOtterMessage,\n} from '@o3r/core';\nimport {\n LoggerService,\n} from '@o3r/logger';\nimport {\n firstValueFrom,\n fromEvent,\n} from 'rxjs';\nimport {\n ConfigurationStore,\n selectConfigurationEntities,\n} from '../stores';\nimport {\n AvailableConfigurationMessageContents,\n ConfigurationDevtoolsServiceOptions,\n ConfigurationMessageDataTypes,\n isConfigurationMessage,\n} from './configuration-devtools.interface';\nimport {\n OtterConfigurationDevtools,\n} from './configuration-devtools.service';\nimport {\n OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS,\n OTTER_CONFIGURATION_DEVTOOLS_OPTIONS,\n} from './configuration-devtools.token';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationDevtoolsMessageService implements DevtoolsServiceInterface {\n private readonly sendMessage = sendOtterMessage<AvailableConfigurationMessageContents>;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private readonly store: Store<ConfigurationStore>,\n private readonly logger: LoggerService,\n private readonly configurationDevtools: OtterConfigurationDevtools,\n @Optional() @Inject(OTTER_CONFIGURATION_DEVTOOLS_OPTIONS) private readonly options: ConfigurationDevtoolsServiceOptions) {\n this.options = { ...OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, ...options };\n\n if (this.options.isActivatedOnBootstrap) {\n this.activate();\n }\n }\n\n private async sendCurrentConfigurationState() {\n const configurations = await firstValueFrom(this.store.pipe(\n select(selectConfigurationEntities)\n ));\n this.sendMessage('configurations', { configurations });\n }\n\n /**\n * Function to trigger a re-send a requested messages to the Otter Chrome DevTools extension\n * @param only restricted list of messages to re-send\n */\n private handleReEmitRequest(only?: ConfigurationMessageDataTypes[]) {\n if (!only || only.includes('configurations')) {\n return this.sendCurrentConfigurationState();\n }\n }\n\n /**\n * Function to handle the incoming messages from Otter Chrome DevTools extension\n * @param message message coming from the Otter Chrome DevTools extension\n */\n private async handleEvents(message: AvailableConfigurationMessageContents) {\n this.logger.debug('Message handling by the configuration service', message);\n\n switch (message.dataType) {\n case 'connect': {\n await this.connectPlugin();\n break;\n }\n case 'requestMessages': {\n await this.handleReEmitRequest(message.only);\n break;\n }\n case 'updateConfig': {\n this.configurationDevtools.loadConfiguration([{\n name: message.id,\n config: message.configValue\n }]);\n break;\n }\n default: {\n this.logger.warn('Message ignored by the configuration service', message);\n }\n }\n }\n\n /**\n * Function to connect the plugin to the Otter DevTools extension\n */\n private connectPlugin() {\n this.logger.debug('Otter DevTools is plugged to configuration service of the application');\n return this.sendCurrentConfigurationState();\n }\n\n /** @inheritDoc */\n public activate() {\n fromEvent(window, 'message').pipe(\n takeUntilDestroyed(this.destroyRef),\n filterMessageContent(isConfigurationMessage)\n ).subscribe((e) => this.handleEvents(e));\n\n this.store.pipe(\n select(selectConfigurationEntities),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe((configurations) => this.sendMessage('configurations', { configurations }));\n }\n}\n","import {\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n StoreModule,\n} from '@ngrx/store';\nimport {\n ConfigurationStoreModule,\n} from '../stores/index';\nimport {\n ConfigurationDevtoolsConsoleService,\n} from './configuration-devtools.console.service';\nimport type {\n ConfigurationDevtoolsServiceOptions,\n} from './configuration-devtools.interface';\nimport {\n ConfigurationDevtoolsMessageService,\n} from './configuration-devtools.message.service';\nimport {\n OtterConfigurationDevtools,\n} from './configuration-devtools.service';\nimport {\n OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS,\n OTTER_CONFIGURATION_DEVTOOLS_OPTIONS,\n} from './configuration-devtools.token';\n\n@NgModule({\n imports: [\n StoreModule,\n ConfigurationStoreModule\n ],\n providers: [\n { provide: OTTER_CONFIGURATION_DEVTOOLS_OPTIONS, useValue: OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS },\n ConfigurationDevtoolsMessageService,\n ConfigurationDevtoolsConsoleService,\n OtterConfigurationDevtools\n ]\n})\nexport class ConfigurationDevtoolsModule {\n /**\n * Initialize Otter Devtools\n * @param options\n */\n public static instrument(options: Partial<ConfigurationDevtoolsServiceOptions>): ModuleWithProviders<ConfigurationDevtoolsModule> {\n return {\n ngModule: ConfigurationDevtoolsModule,\n providers: [\n { provide: OTTER_CONFIGURATION_DEVTOOLS_OPTIONS, useValue: { ...OTTER_CONFIGURATION_DEVTOOLS_DEFAULT_OPTIONS, ...options }, multi: false },\n ConfigurationDevtoolsMessageService,\n ConfigurationDevtoolsConsoleService,\n OtterConfigurationDevtools\n ]\n };\n }\n}\n","import {\n NgModule,\n} from '@angular/core';\nimport {\n LoggerModule,\n} from '@o3r/logger';\nimport {\n ConfigurationStoreModule,\n} from '../../stores/index';\n\n@NgModule({\n imports: [ConfigurationStoreModule, LoggerModule]\n})\nexport class ConfigurationBaseServiceModule {}\n","import {\n Injectable,\n} from '@angular/core';\nimport {\n select,\n Store,\n} from '@ngrx/store';\nimport {\n Configuration,\n CustomConfig,\n deepFill,\n} from '@o3r/core';\nimport {\n combineLatest,\n Observable,\n of,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n switchMap,\n take,\n} from 'rxjs/operators';\nimport {\n ConfigOverrideStore,\n selectComponentOverrideConfig,\n} from '../../stores/config-override/index';\nimport {\n computeConfiguration,\n ConfigurationStore,\n globalConfigurationId,\n selectConfigurationEntities,\n selectConfigurationForComponent,\n selectGlobalConfiguration,\n updateConfigurationEntity,\n upsertConfigurationEntities,\n upsertConfigurationEntity,\n} from '../../stores/index';\nimport {\n ConfigurationBaseServiceModule,\n} from './configuration.base.module';\n\nconst jsonStringifyDiff = (obj1: any, obj2: any) => JSON.stringify(obj1) === JSON.stringify(obj2);\n\n/**\n * Configuration service\n */\n@Injectable({\n providedIn: ConfigurationBaseServiceModule\n})\nexport class ConfigurationBaseService {\n private readonly extendedConfiguration: { [key: string]: boolean } = {};\n\n constructor(private readonly store: Store<ConfigurationStore & ConfigOverrideStore>) {}\n\n /**\n * Update a specific component config or add it to the store if does not exist\n * @param configuration to edit/add\n * @param configurationId Configuration ID\n */\n public upsertConfiguration<T extends Configuration>(configuration: T, configurationId = globalConfigurationId) {\n this.store.dispatch(upsertConfigurationEntity({ id: configurationId, configuration }));\n }\n\n /**\n * Update a specific component config\n * @param configuration Partial config to edit\n * @param configurationId Configuration ID\n */\n public updateConfiguration<T extends Partial<Configuration>>(configuration: T, configurationId = globalConfigurationId) {\n this.store.dispatch(updateConfigurationEntity({ id: configurationId, configuration }));\n }\n\n /**\n * This function will get the configuration stored in the data attribute of the html's body tag\n * @param configTagName Value used to identify the data attribute where the config is pushed in the index.html\n */\n public getConfigFromBodyTag<T extends Configuration>(configTagName = 'staticconfig') {\n const bootstrapConfigString = document.body.dataset[configTagName];\n const customConfigObject: CustomConfig<T>[] = bootstrapConfigString ? JSON.parse(bootstrapConfigString) : [];\n if (customConfigObject.length > 0) {\n this.computeConfiguration(customConfigObject);\n }\n }\n\n /**\n * Transform the custom configuration in store configuration model\n * @param customConfigObject Configuration object (extracted from body tag for static config or downloaded in case of dynamic config)\n */\n public computeConfiguration<T extends Configuration>(customConfigObject: CustomConfig<T>[]) {\n this.store.dispatch(upsertConfigurationEntities(computeConfiguration(customConfigObject)));\n }\n\n /**\n * Complete a stored configuration by adding the missing fields\n * @param extension Configuration extension to be included in the store\n * @param configurationId Configuration ID to extend\n * @param forceUpdate Force update the configuration in the store\n */\n public extendConfiguration<T extends Configuration>(extension: T, configurationId = globalConfigurationId, forceUpdate = false) {\n if (this.extendedConfiguration[configurationId] && !forceUpdate) {\n return;\n }\n this.extendedConfiguration[configurationId] = true;\n this.store.pipe(\n select(selectConfigurationEntities),\n take(1),\n map((storedConfigs) => configurationId in storedConfigs ? deepFill(extension, storedConfigs[configurationId]) : extension)\n ).subscribe((extendedConfig) => this.upsertConfiguration(extendedConfig, configurationId));\n }\n\n /**\n * Operator to get the configuration from store for a given component and merge it with the global config\n * @param id Id of the component\n * @param defaultValue Default value of the configuration\n */\n public getComponentConfig<T extends Configuration>(id: string, defaultValue: T) {\n return (source: Observable<Partial<T> | undefined>): Observable<T> => {\n const componentConfigurationFromStore$ = this.getConfig<T>(id);\n\n return source.pipe(\n switchMap((overrideConfig) => componentConfigurationFromStore$.pipe(\n map((componentConfigurationFromStore) => {\n const config = componentConfigurationFromStore ? deepFill(defaultValue, componentConfigurationFromStore) : defaultValue;\n return overrideConfig ? deepFill(config, overrideConfig) : config;\n })\n ))\n );\n };\n }\n\n /**\n * Get an observable of the configuration from store for a given component and merge it with the global config + the config overrides from the rules engine\n * @param id Id of the component\n */\n public getConfig<T extends Configuration>(id: string): Observable<T> {\n const globalConfig$ = this.store.pipe(select(selectGlobalConfiguration));\n const componentConfig$ = id === globalConfigurationId ? of({}) : this.store.pipe(select(selectConfigurationForComponent({ id })));\n const overrideConfig$ = this.store.pipe(select(selectComponentOverrideConfig(id)));\n\n return combineLatest([globalConfig$, componentConfig$, overrideConfig$]).pipe(\n map(([globalConfig, componentConfig, overrideConfig]) => ({ ...globalConfig, ...componentConfig, ...overrideConfig })),\n distinctUntilChanged(jsonStringifyDiff)\n );\n }\n}\n","import {\n Configuration,\n otterComponentInfoPropertyName,\n} from '@o3r/core';\nimport {\n ConfigurationObserver,\n} from './configuration.observer';\nimport type {\n ConfigurationSignal,\n} from './configuration.signal';\n\nconst decorator = (target: any, key: string) => {\n const privateField = `_${key}`;\n\n if (delete target[key]) {\n Object.defineProperty(target, key, {\n get: function (this: any) {\n return this[privateField];\n },\n set: function (this: any, value: ConfigurationObserver<Configuration> | ConfigurationSignal<Configuration>) {\n this[privateField] = value;\n if (this[otterComponentInfoPropertyName]) {\n this[otterComponentInfoPropertyName].configId = this[privateField].configId;\n }\n },\n enumerable: true,\n configurable: true\n });\n }\n};\n\n/**\n * Decorator to identify the component's configuration\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- decorator should be PascalCase\nexport function O3rConfig() {\n return decorator;\n}\n","import type {\n Configuration,\n} from '@o3r/core';\nimport {\n BehaviorSubject,\n type Observable,\n type Observer,\n type Subject,\n} from 'rxjs';\nimport {\n shareReplay,\n} from 'rxjs/operators';\nimport {\n getConfiguration,\n} from '../core';\nimport {\n ConfigurationBaseService,\n} from '../services/configuration/configuration.base.service';\n\nexport class ConfigurationObserver<T extends Configuration> implements Observer<Partial<T> | undefined>, Pick<Subject<T>, 'asObservable'> {\n /** Inner observable */\n private readonly observable: Observable<T>;\n\n /** Inner subscriber */\n private readonly subscriber: BehaviorSubject<Partial<T>> = new BehaviorSubject<Partial<T>>({});\n\n /** @inheritdoc */\n public closed?: boolean;\n\n constructor(\n /** Configuration ID */\n public configId: string,\n defaultConfig: T,\n configurationService?: ConfigurationBaseService\n ) {\n if (configurationService) {\n configurationService.extendConfiguration(defaultConfig, configId);\n }\n\n this.observable = this.subscriber\n .pipe(\n configurationService ? configurationService.getComponentConfig(configId, defaultConfig) : getConfiguration(defaultConfig),\n shareReplay({ refCount: true, bufferSize: 1 })\n );\n }\n\n /** @inheritdoc */\n public next(value?: Partial<T>): void {\n this.subscriber.next(value || {});\n }\n\n /** @inheritdoc */\n public error(err: any): void {\n this.subscriber.error(err);\n this.closed = true;\n }\n\n /** @inheritdoc */\n public complete(): void {\n this.subscriber.complete();\n this.closed = true;\n }\n\n /**\n * @inheritdoc\n */\n public asObservable(): Observable<T> {\n return this.observable;\n }\n}\n","import {\n inject,\n type InputSignal,\n type Signal,\n} from '@angular/core';\nimport {\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport type {\n Configuration,\n} from '@o3r/core';\nimport {\n shareReplay,\n} from 'rxjs';\nimport {\n getConfiguration,\n} from '../core';\nimport {\n ConfigurationBaseService,\n} from '../services';\n\n/** Configuration signal */\nexport type ConfigurationSignal<T> = Signal<T> & { configId: string };\n\n/**\n * Get a configuration signal\n * @param configInput\n * @param configId\n * @param defaultConfig\n */\nexport function configSignal<T extends Configuration>(\n configInput: InputSignal<Partial<T> | undefined>,\n configId: string,\n defaultConfig: T\n): ConfigurationSignal<T> {\n const configurationService = inject(ConfigurationBaseService, { optional: true });\n if (configurationService) {\n configurationService.extendConfiguration(defaultConfig, configId);\n }\n\n const signal: ConfigurationSignal<T> = toSignal(\n toObservable(configInput).pipe(\n configurationService ? configurationService.getComponentConfig(configId, defaultConfig) : getConfiguration(defaultConfig),\n shareReplay({ bufferSize: 1, refCount: true })\n ),\n { initialValue: defaultConfig }\n ) as ConfigurationSignal<T>;\n signal.configId = configId;\n return signal;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["actions.setConfigOverride","actions.setConfigurationEntities","actions.updateConfigurationEntities","actions.upsertConfigurationEntities","actions.clearConfigurationEntities","actions.updateConfigurationEntity","actions.upsertConfigurationEntity","shareReplay"],"mappings":"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"}
package/migration.json CHANGED
@@ -10,6 +10,11 @@
10
10
  "version": "11.6.0-prerelease.0",
11
11
  "description": "Updates of @o3r/configuration to v11.6.*",
12
12
  "factory": "./schematics/ng-update/v11-6/index#updateV116"
13
+ },
14
+ "migration-v12_0": {
15
+ "version": "12.0.0-next.0",
16
+ "description": "Updates of @o3r/configuration to v12.0.*",
17
+ "factory": "./schematics/ng-update/v12-0/index#updateV12_0"
13
18
  }
14
19
  }
15
20
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o3r/configuration",
3
- "version": "12.0.0-next.3",
3
+ "version": "12.0.0-next.5",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -52,15 +52,16 @@
52
52
  "@angular/platform-browser-dynamic": "^18.2.0",
53
53
  "@ngrx/entity": "^18.0.0",
54
54
  "@ngrx/store": "^18.0.0",
55
- "@o3r/core": "^12.0.0-next.3",
56
- "@o3r/logger": "^12.0.0-next.3",
57
- "@o3r/schematics": "^12.0.0-next.3",
58
- "@o3r/testing": "^12.0.0-next.3",
55
+ "@o3r/core": "^12.0.0-next.5",
56
+ "@o3r/logger": "^12.0.0-next.5",
57
+ "@o3r/schematics": "^12.0.0-next.5",
58
+ "@o3r/testing": "^12.0.0-next.5",
59
59
  "@schematics/angular": "^18.2.0",
60
60
  "cheerio": "^1.0.0-rc.10",
61
61
  "express-interceptor": "^1.2.0",
62
62
  "jasmine": "^5.0.0",
63
63
  "rxjs": "^7.8.1",
64
+ "ts-node": "~10.9.2",
64
65
  "typescript": "^5.5.4"
65
66
  },
66
67
  "peerDependenciesMeta": {
@@ -0,0 +1,6 @@
1
+ import { type Rule } from '@angular-devkit/schematics';
2
+ /**
3
+ * Update of Otter configuration V12.0
4
+ */
5
+ export declare const updateV12_0: (options: unknown) => Rule;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../schematics/ng-update/v12-0/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,IAAI,EAGV,MAAM,4BAA4B,CAAC;AA+BpC;;GAEG;AAEH,eAAO,MAAM,WAAW,4BAAuD,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateV12_0 = void 0;
4
+ const schematics_1 = require("@angular-devkit/schematics");
5
+ const schematics_2 = require("@o3r/schematics");
6
+ /** Map containing the import and value changes for computeConfigurationName updated to computeItemIdentifier in @o3r/core */
7
+ const mapImportsConfigurationName = {
8
+ '@o3r/configuration': {
9
+ computeConfigurationName: {
10
+ newPackage: '@o3r/core',
11
+ newValue: 'computeItemIdentifier'
12
+ }
13
+ }
14
+ };
15
+ /**
16
+ * Update of Otter library V12.0
17
+ */
18
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- version is in the function name
19
+ function updateV12_0Fn() {
20
+ return (tree, context) => {
21
+ const updateRules = [
22
+ (0, schematics_2.updateImports)(mapImportsConfigurationName)
23
+ ];
24
+ return (0, schematics_1.chain)(updateRules)(tree, context);
25
+ };
26
+ }
27
+ /**
28
+ * Update of Otter configuration V12.0
29
+ */
30
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- version in the function name
31
+ exports.updateV12_0 = (0, schematics_2.createSchematicWithMetricsIfInstalled)(updateV12_0Fn);
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../schematics/ng-update/v12-0/index.ts"],"names":[],"mappings":";;;AAAA,2DAKoC;AACpC,gDAIyB;AAEzB,6HAA6H;AAC7H,MAAM,2BAA2B,GAAmB;IAClD,oBAAoB,EAAE;QACpB,wBAAwB,EAAE;YACxB,UAAU,EAAE,WAAW;YACvB,QAAQ,EAAE,uBAAuB;SAClC;KACF;CACF,CAAC;AAEF;;GAEG;AACH,mGAAmG;AACnG,SAAS,aAAa;IACpB,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,MAAM,WAAW,GAAW;YAC1B,IAAA,0BAAa,EAAC,2BAA2B,CAAC;SAC3C,CAAC;QAEF,OAAO,IAAA,kBAAK,EAAC,WAAW,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,gGAAgG;AACnF,QAAA,WAAW,GAAG,IAAA,kDAAqC,EAAC,aAAa,CAAC,CAAC"}
@@ -1,8 +1,3 @@
1
- /**
2
- * Decorator to identify the configuration observer
3
- * @deprecated please use O3rConfig, will be removed in v12
4
- */
5
- export declare function ConfigObserver(): (target: any, key: string) => void;
6
1
  /**
7
2
  * Decorator to identify the component's configuration
8
3
  */
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.decorators.d.ts","sourceRoot":"","sources":["../../src/tools/configuration.decorators.ts"],"names":[],"mappings":"AA+BA;;;GAGG;AAEH,wBAAgB,cAAc,aAzBH,GAAG,OAAO,MAAM,UA2B1C;AAED;;GAEG;AAEH,wBAAgB,SAAS,aAjCE,GAAG,OAAO,MAAM,UAmC1C"}
1
+ {"version":3,"file":"configuration.decorators.d.ts","sourceRoot":"","sources":["../../src/tools/configuration.decorators.ts"],"names":[],"mappings":"AA+BA;;GAEG;AAEH,wBAAgB,SAAS,aAxBE,GAAG,OAAO,MAAM,UA0B1C"}
@@ -1,6 +1,5 @@
1
1
  import { type InputSignal, type Signal } from '@angular/core';
2
2
  import type { Configuration } from '@o3r/core';
3
- import { ConfigurationBaseService } from '../services';
4
3
  /** Configuration signal */
5
4
  export type ConfigurationSignal<T> = Signal<T> & {
6
5
  configId: string;
@@ -12,13 +11,4 @@ export type ConfigurationSignal<T> = Signal<T> & {
12
11
  * @param defaultConfig
13
12
  */
14
13
  export declare function configSignal<T extends Configuration>(configInput: InputSignal<Partial<T> | undefined>, configId: string, defaultConfig: T): ConfigurationSignal<T>;
15
- /**
16
- * Get a configuration signal
17
- * @param configInput
18
- * @param configId
19
- * @param defaultConfig
20
- * @param configurationService
21
- * @deprecated please do not provide `configurationService`, will be removed in v12
22
- */
23
- export declare function configSignal<T extends Configuration>(configInput: InputSignal<Partial<T> | undefined>, configId: string, defaultConfig: T, configurationService?: ConfigurationBaseService | null): ConfigurationSignal<T>;
24
14
  //# sourceMappingURL=configuration.signal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.signal.d.ts","sourceRoot":"","sources":["../../src/tools/configuration.signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,MAAM,EACZ,MAAM,eAAe,CAAC;AAKvB,OAAO,KAAK,EACV,aAAa,EACd,MAAM,WAAW,CAAC;AAOnB,OAAO,EACL,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAErB,2BAA2B;AAC3B,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAChD,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,CAAC,GACf,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC1B;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAChD,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,CAAC,EAEhB,oBAAoB,CAAC,EAAE,wBAAwB,GAAG,IAAI,GACrD,mBAAmB,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"configuration.signal.d.ts","sourceRoot":"","sources":["../../src/tools/configuration.signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,MAAM,EACZ,MAAM,eAAe,CAAC;AAKvB,OAAO,KAAK,EACV,aAAa,EACd,MAAM,WAAW,CAAC;AAWnB,2BAA2B;AAC3B,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAChD,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,CAAC,GACf,mBAAmB,CAAC,CAAC,CAAC,CAexB"}