@rxap/config 14.1.4 → 15.0.0
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.
|
@@ -21,9 +21,9 @@ export class ConfigLoaderService {
|
|
|
21
21
|
return loading$.toPromise();
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
ConfigLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
25
|
-
ConfigLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
24
|
+
ConfigLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigLoaderService, deps: [{ token: HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
25
|
+
ConfigLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigLoaderService, providedIn: 'root' });
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigLoaderService, decorators: [{
|
|
27
27
|
type: Injectable,
|
|
28
28
|
args: [{ providedIn: 'root' }]
|
|
29
29
|
}], ctorParameters: function () { return [{ type: i1.HttpClient, decorators: [{
|
|
@@ -191,9 +191,9 @@ ConfigService.Defaults = {};
|
|
|
191
191
|
ConfigService.Overwrites = {};
|
|
192
192
|
ConfigService.LocalStorageKey = 'rxap/config/local-config';
|
|
193
193
|
ConfigService.Urls = ['config.json'];
|
|
194
|
-
ConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
195
|
-
ConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
194
|
+
ConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigService, deps: [{ token: RXAP_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
195
|
+
ConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigService, providedIn: 'root' });
|
|
196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigService, decorators: [{
|
|
197
197
|
type: Injectable,
|
|
198
198
|
args: [{
|
|
199
199
|
providedIn: 'root'
|
|
@@ -204,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
|
|
|
204
204
|
type: Inject,
|
|
205
205
|
args: [RXAP_CONFIG]
|
|
206
206
|
}] }]; } });
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbmZpZy9zcmMvbGliL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsU0FBUyxFQUNULGNBQWMsRUFDZixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBYXZDLE1BQU0sT0FBTyxhQUFhO0lBdU14QixZQUE2QyxTQUFxQixJQUFJO1FBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQTFMTyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBVSxHQUFXLEVBQUUsUUFBa0IsRUFBRSxNQUFrQjtRQUUxRixJQUFJLE1BQVcsQ0FBQztRQUNoQixJQUFJLFFBQWEsQ0FBQztRQUVsQixJQUFJO1lBQ0YsUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQzVCO1FBQUMsT0FBTyxLQUFVLEVBQUU7WUFDbkIsTUFBTSxPQUFPLEdBQUcsZ0NBQWdDLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMs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VUFBVSxDQUFVLFlBQW9CLEVBQUUsWUFBZ0I7UUFDL0QsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsWUFBWSxHQUFHLENBQUMsQ0FBQztTQUNwRTtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7QUFyT2Esb0JBQU0sR0FBUSxJQUFLLENBQUE7QUFFakM7Ozs7R0FJRztBQUNXLHNCQUFRLEdBQVEsRUFBRyxDQUFBO0FBRWpDOzs7R0FHRztBQUNXLHdCQUFVLEdBQVEsRUFBRyxDQUFBO0FBRXJCLDZCQUFlLEdBQUcsMEJBQTJCLENBQUE7QUFFN0Msa0JBQUksR0FBRyxDQUFFLGFBQWEsQ0FBRyxDQUFBOzBHQW5CNUIsYUFBYSxrQkF1TVEsV0FBVzs4R0F2TWhDLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF3TWMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWwsXG4gIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGRlZXBNZXJnZSxcbiAgU2V0T2JqZWN0VmFsdWVcbn0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcbmltcG9ydCB7IFJYQVBfQ09ORklHIH0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHsgTm9JbmZlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEFueVNjaGVtYSB9IGZyb20gJ2pvaSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnTG9hZE9wdGlvbnMge1xuICBmcm9tVXJsUGFyYW0/OiBzdHJpbmcgfCBib29sZWFuO1xuICBmcm9tTG9jYWxTdG9yYWdlPzogYm9vbGVhbjtcbiAgc2NoZW1hPzogQW55U2NoZW1hO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlPENvbmZpZyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG5cbiAgcHVibGljIHN0YXRpYyBDb25maWc6IGFueSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGNvbmZpZyBvYmplY3QuXG4gICAqIFdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgYW4gZHluYW1pYyBjb25maWcgZmlsZSBzcGVjaWZpZWQgaW5cbiAgICogdGhlIFVybHMgYXJyYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERlZmF1bHRzOiBhbnkgPSB7fTtcblxuICAvKipcbiAgICogQW55IHZhbHVlIGRlZmluaXRpb24gaW4gdGhlIE92ZXJ3cml0ZXMgb2JqZWN0IHdpbGwgb3ZlcndyaXRlIGFueVxuICAgKiB2YWx1ZSBmb3JtIHRoZSBEZWZhdWx0cyB2YWx1ZXMgb3IgZHluYW1pYyBjb25maWcgZmlsZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgT3ZlcndyaXRlczogYW55ID0ge307XG5cbiAgcHVibGljIHN0YXRpYyBMb2NhbFN0b3JhZ2VLZXkgPSAncnhhcC9jb25maWcvbG9jYWwtY29uZmlnJztcblxuICBwdWJsaWMgc3RhdGljIFVybHMgPSBbICdjb25maWcuanNvbicgXTtcblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBsb2FkQ29uZmlnPFQgPSBhbnk+KHVybDogc3RyaW5nLCByZXF1aXJlZD86IGJvb2xlYW4sIHNjaGVtYT86IEFueVNjaGVtYSk6IFByb21pc2U8VCB8IG51bGw+IHtcblxuICAgIGxldCBjb25maWc6IGFueTtcbiAgICBsZXQgcmVzcG9uc2U6IGFueTtcblxuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYENvdWxkIG5vdCBmZXRjaCBjb25maWcgZnJvbSAnJHt1cmx9JzogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3IobWVzc2FnZSk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbmZpZyA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ291bGQgbm90IHBhcnNlIGNvbmZpZyBmcm9tICcke3VybH0nIHRvIGEganNvbiBvYmplY3Q6ICR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yKG1lc3NhZ2UpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbmZpZyA9IGF3YWl0IHNjaGVtYS52YWxpZGF0ZUFzeW5jKGNvbmZpZyk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ29uZmlnIGZyb20gJyR7dXJsfScgaXMgbm90IHZhbGlkOiAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb25maWc7XG5cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNob3dFcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoYXNVbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyeGFwLWNvbmZpZy1lcnJvcicpICE9PSBudWxsO1xuICAgIGNvbnN0IHVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3J4YXAtY29uZmlnLWVycm9yJykgPz8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTtcbiAgICB1bC5pZCA9ICdyeGFwLWNvbmZpZy1lcnJvcic7XG4gICAgdWwuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIHVsLnN0eWxlLmJvdHRvbSA9ICcxNnB4JztcbiAgICB1bC5zdHlsZS5yaWdodCA9ICcxNnB4JztcbiAgICB1bC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xuICAgIHVsLnN0eWxlLnBhZGRpbmcgPSAnMzJweCc7XG4gICAgdWwuc3R5bGUuekluZGV4ID0gJzk5OTk5OTk5JztcbiAgICB1bC5zdHlsZS5jb2xvciA9ICdibGFjayc7XG4gICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuICAgIGxpLmlubmVyVGV4dCA9IG1lc3NhZ2U7XG4gICAgdWwuYXBwZW5kQ2hpbGQobGkpO1xuICAgIGlmICghaGFzVWwpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodWwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgU2lkZUxvYWQodXJsOiBzdHJpbmcsIHByb3BlcnR5UGF0aDogc3RyaW5nLCByZXF1aXJlZD86IGJvb2xlYW4sIHNjaGVtYT86IEFueVNjaGVtYSk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgaWYgKCF0aGlzLkNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25maWcgc2lkZSBsb2FkIGlzIG9ubHkgcG9zc2libGUgYWZ0ZXIgdGhlIGluaXRpYWwgY29uZmlnIGxvYWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5sb2FkQ29uZmlnKHVybCwgcmVxdWlyZWQsIHNjaGVtYSk7XG5cbiAgICBTZXRPYmplY3RWYWx1ZSh0aGlzLkNvbmZpZywgcHJvcGVydHlQYXRoLCBjb25maWcpO1xuXG4gICAgY29uc29sZS5kZWJ1ZyhgU2lkZSBsb2FkZWQgY29uZmlnIGZvciAnJHtwcm9wZXJ0eVBhdGh9JyBzdWNjZXNzZnVsYCwgdGhpcy5Db25maWcpO1xuXG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBsb2FkIHRoZSBhcHAgY29uZmlnIGZyb20gYSByZW1vdGUgcmVzb3VyY2UuXG4gICAqXG4gICAqIFByb21pc2UuYWxsKFsgQ29uZmlnU2VydmljZS5Mb2FkKCkgXSlcbiAgICogLnRoZW4oKCkgPT4gcGxhdGZvcm1Ccm93c2VyRHluYW1pYygpLmJvb3RzdHJhcE1vZHVsZShBcHBNb2R1bGUpKVxuICAgKiAuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSlcbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgTG9hZChvcHRpb25zPzogQ29uZmlnTG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5EZWZhdWx0cztcbiAgICBmb3IgKGNvbnN0IHVybCBvZiBDb25maWdTZXJ2aWNlLlVybHMpIHtcbiAgICAgIGNvbmZpZyA9IGF3YWl0IHRoaXMubG9hZENvbmZpZyh1cmwsIHRydWUsIG9wdGlvbnM/LnNjaGVtYSk7XG4gICAgfVxuXG4gICAgY29uZmlnID0gZGVlcE1lcmdlKGNvbmZpZywgdGhpcy5PdmVyd3JpdGVzKTtcblxuICAgIGlmIChvcHRpb25zPy5mcm9tTG9jYWxTdG9yYWdlICE9PSBmYWxzZSkge1xuXG4gICAgICBjb25zdCBsb2NhbENvbmZpZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKENvbmZpZ1NlcnZpY2UuTG9jYWxTdG9yYWdlS2V5KTtcblxuICAgICAgaWYgKGxvY2FsQ29uZmlnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uZmlnID0gZGVlcE1lcmdlKGNvbmZpZywgSlNPTi5wYXJzZShsb2NhbENvbmZpZykpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdsb2NhbCBjb25maWcgY291bGQgbm90IGJlIHBhcnNlZCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8uZnJvbVVybFBhcmFtKSB7XG4gICAgICBjb25zdCBwYXJhbSA9IHR5cGVvZiBvcHRpb25zLmZyb21VcmxQYXJhbSA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmZyb21VcmxQYXJhbSA6ICdjb25maWcnO1xuICAgICAgY29uZmlnICAgICAgPSBkZWVwTWVyZ2UoY29uZmlnLCB0aGlzLkxvYWRDb25maWdEZWZhdWx0RnJvbVVybFBhcmFtKHBhcmFtKSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZygnYXBwIGNvbmZpZycsIGNvbmZpZyk7XG5cbiAgICB0aGlzLkNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIExvYWRDb25maWdEZWZhdWx0RnJvbVVybFBhcmFtKHBhcmFtOiBzdHJpbmcgPSAnY29uZmlnJykge1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgIGNvbnN0IHVybFBhcmFtcyAgID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG5cbiAgICBjb25zdCBjb25maWdGcm9tUGFyYW1zID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ1BhcmFtIG9mIHVybFBhcmFtcy5nZXRBbGwoJ2NvbmZpZycpKSB7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gY29uZmlnUGFyYW0uc3BsaXQoJzsnKTtcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGNvbnN0IGtleVBhdGggPSBzcGxpdFsgMCBdO1xuICAgICAgICAgIGNvbnN0IHZhbHVlICAgPSBzcGxpdFsgMSBdO1xuICAgICAgICAgIFNldE9iamVjdFZhbHVlKGNvbmZpZ0Zyb21QYXJhbXMsIGtleVBhdGgsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgUGFyc2luZyBvZiB1cmwgY29uZmlnIHBhcmFtIGZhaWxlZCBmb3IgJyR7Y29uZmlnUGFyYW19JzogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnRnJvbVBhcmFtcztcblxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBHZXQ8VCA9IGFueSwgSyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZCwgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogVFxuICBwdWJsaWMgc3RhdGljIEdldDxUID0gYW55LCBLIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU6IE5vSW5mZXJUeXBlPFQ+LFxuICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuQ29uZmlnXG4gICk6IFQge1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbmZpZyBub3QgbG9hZGVkJyk7XG4gICAgfVxuICAgIGxldCBjb25maWdWYWx1ZTogYW55ID0gY29uZmlnO1xuICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGNvbmZpZyBwcm9wZXJ0eSBwYXRoIGlzIG5vdCBhIHN0cmluZycpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZyYWdtZW50IG9mIChwYXRoIGFzIGFueSkuc3BsaXQoJy4nKSkge1xuICAgICAgaWYgKGNvbmZpZ1ZhbHVlPy5oYXNPd25Qcm9wZXJ0eShmcmFnbWVudCkpIHtcbiAgICAgICAgY29uZmlnVmFsdWUgPSBjb25maWdWYWx1ZVsgZnJhZ21lbnQgXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS53YXJuKGBDb25maWcgd2l0aCBwYXRoICcke3BhdGh9JyBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBhbnk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb25maWdWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjb25maWchOiBDb25maWc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChSWEFQX0NPTkZJRykgY29uZmlnOiBhbnkgfCBudWxsID0gbnVsbCkge1xuICAgIHRoaXMuY29uZmlnID0gQ29uZmlnU2VydmljZS5Db25maWc7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSBkZWVwTWVyZ2UodGhpcy5jb25maWcgPz8ge30sIGNvbmZpZyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29uZmlnIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0TG9jYWxDb25maWcoY29uZmlnOiBDb25maWcpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShDb25maWdTZXJ2aWNlLkxvY2FsU3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJMb2NhbENvbmZpZygpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShDb25maWdTZXJ2aWNlLkxvY2FsU3RvcmFnZUtleSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0PFQgPSBhbnk+KHByb3BlcnR5UGF0aDogc3RyaW5nKTogVCB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGdldDxUID0gYW55Pihwcm9wZXJ0eVBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBOb0luZmVyVHlwZTxUPik6IFQ7XG4gIHB1YmxpYyBnZXQ8VCA9IGFueT4ocHJvcGVydHlQYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gQ29uZmlnU2VydmljZS5HZXQocHJvcGVydHlQYXRoLCBkZWZhdWx0VmFsdWUsIHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRPclRocm93PFQgPSBhbnk+KHByb3BlcnR5UGF0aDogc3RyaW5nKTogVDtcbiAgcHVibGljIGdldE9yVGhyb3c8VCA9IGFueT4ocHJvcGVydHlQYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogTm9JbmZlclR5cGU8VD4pOiBUO1xuICBwdWJsaWMgZ2V0T3JUaHJvdzxUID0gYW55Pihwcm9wZXJ0eVBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogVCk6IFQge1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlnU2VydmljZS5HZXQocHJvcGVydHlQYXRoLCBkZWZhdWx0VmFsdWUsIHRoaXMuY29uZmlnKTtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBjb25maWcgaW4gcGF0aCAnJHtwcm9wZXJ0eVBhdGh9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxufVxuIl19
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbmZpZy9zcmMvbGliL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsU0FBUyxFQUNULGNBQWMsRUFDZixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBYXZDLE1BQU0sT0FBTyxhQUFhO0lBdU14QixZQUE2QyxTQUFxQixJQUFJO1FBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQTFMTyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBVSxHQUFXLEVBQUUsUUFBa0IsRUFBRSxNQUFrQjtRQUUxRixJQUFJLE1BQVcsQ0FBQztRQUNoQixJQUFJLFFBQWEsQ0FBQztRQUVsQixJQUFJO1lBQ0YsUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQzVCO1FBQUMsT0FBTyxLQUFVLEVBQUU7WUFDbkIsTUFBTSxPQUFPLEdBQUcsZ0NBQWdDLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMs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VUFBVSxDQUFVLFlBQW9CLEVBQUUsWUFBZ0I7UUFDL0QsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsWUFBWSxHQUFHLENBQUMsQ0FBQztTQUNwRTtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7QUFyT2Esb0JBQU0sR0FBUSxJQUFJLENBQUM7QUFFakM7Ozs7R0FJRztBQUNXLHNCQUFRLEdBQVEsRUFBRSxDQUFDO0FBRWpDOzs7R0FHRztBQUNXLHdCQUFVLEdBQVEsRUFBRSxDQUFDO0FBRXJCLDZCQUFlLEdBQUcsMEJBQTBCLENBQUM7QUFFN0Msa0JBQUksR0FBRyxDQUFFLGFBQWEsQ0FBRSxDQUFDOzBHQW5CNUIsYUFBYSxrQkF1TVEsV0FBVzs4R0F2TWhDLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF3TWMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWwsXG4gIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGRlZXBNZXJnZSxcbiAgU2V0T2JqZWN0VmFsdWVcbn0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcbmltcG9ydCB7IFJYQVBfQ09ORklHIH0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHsgTm9JbmZlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEFueVNjaGVtYSB9IGZyb20gJ2pvaSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnTG9hZE9wdGlvbnMge1xuICBmcm9tVXJsUGFyYW0/OiBzdHJpbmcgfCBib29sZWFuO1xuICBmcm9tTG9jYWxTdG9yYWdlPzogYm9vbGVhbjtcbiAgc2NoZW1hPzogQW55U2NoZW1hO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlPENvbmZpZyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG5cbiAgcHVibGljIHN0YXRpYyBDb25maWc6IGFueSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGNvbmZpZyBvYmplY3QuXG4gICAqIFdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgYW4gZHluYW1pYyBjb25maWcgZmlsZSBzcGVjaWZpZWQgaW5cbiAgICogdGhlIFVybHMgYXJyYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERlZmF1bHRzOiBhbnkgPSB7fTtcblxuICAvKipcbiAgICogQW55IHZhbHVlIGRlZmluaXRpb24gaW4gdGhlIE92ZXJ3cml0ZXMgb2JqZWN0IHdpbGwgb3ZlcndyaXRlIGFueVxuICAgKiB2YWx1ZSBmb3JtIHRoZSBEZWZhdWx0cyB2YWx1ZXMgb3IgZHluYW1pYyBjb25maWcgZmlsZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgT3ZlcndyaXRlczogYW55ID0ge307XG5cbiAgcHVibGljIHN0YXRpYyBMb2NhbFN0b3JhZ2VLZXkgPSAncnhhcC9jb25maWcvbG9jYWwtY29uZmlnJztcblxuICBwdWJsaWMgc3RhdGljIFVybHMgPSBbICdjb25maWcuanNvbicgXTtcblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBsb2FkQ29uZmlnPFQgPSBhbnk+KHVybDogc3RyaW5nLCByZXF1aXJlZD86IGJvb2xlYW4sIHNjaGVtYT86IEFueVNjaGVtYSk6IFByb21pc2U8VCB8IG51bGw+IHtcblxuICAgIGxldCBjb25maWc6IGFueTtcbiAgICBsZXQgcmVzcG9uc2U6IGFueTtcblxuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYENvdWxkIG5vdCBmZXRjaCBjb25maWcgZnJvbSAnJHt1cmx9JzogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3IobWVzc2FnZSk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbmZpZyA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ291bGQgbm90IHBhcnNlIGNvbmZpZyBmcm9tICcke3VybH0nIHRvIGEganNvbiBvYmplY3Q6ICR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yKG1lc3NhZ2UpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbmZpZyA9IGF3YWl0IHNjaGVtYS52YWxpZGF0ZUFzeW5jKGNvbmZpZyk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ29uZmlnIGZyb20gJyR7dXJsfScgaXMgbm90IHZhbGlkOiAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb25maWc7XG5cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNob3dFcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoYXNVbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyeGFwLWNvbmZpZy1lcnJvcicpICE9PSBudWxsO1xuICAgIGNvbnN0IHVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3J4YXAtY29uZmlnLWVycm9yJykgPz8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTtcbiAgICB1bC5pZCA9ICdyeGFwLWNvbmZpZy1lcnJvcic7XG4gICAgdWwuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIHVsLnN0eWxlLmJvdHRvbSA9ICcxNnB4JztcbiAgICB1bC5zdHlsZS5yaWdodCA9ICcxNnB4JztcbiAgICB1bC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xuICAgIHVsLnN0eWxlLnBhZGRpbmcgPSAnMzJweCc7XG4gICAgdWwuc3R5bGUuekluZGV4ID0gJzk5OTk5OTk5JztcbiAgICB1bC5zdHlsZS5jb2xvciA9ICdibGFjayc7XG4gICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuICAgIGxpLmlubmVyVGV4dCA9IG1lc3NhZ2U7XG4gICAgdWwuYXBwZW5kQ2hpbGQobGkpO1xuICAgIGlmICghaGFzVWwpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodWwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgU2lkZUxvYWQodXJsOiBzdHJpbmcsIHByb3BlcnR5UGF0aDogc3RyaW5nLCByZXF1aXJlZD86IGJvb2xlYW4sIHNjaGVtYT86IEFueVNjaGVtYSk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgaWYgKCF0aGlzLkNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25maWcgc2lkZSBsb2FkIGlzIG9ubHkgcG9zc2libGUgYWZ0ZXIgdGhlIGluaXRpYWwgY29uZmlnIGxvYWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5sb2FkQ29uZmlnKHVybCwgcmVxdWlyZWQsIHNjaGVtYSk7XG5cbiAgICBTZXRPYmplY3RWYWx1ZSh0aGlzLkNvbmZpZywgcHJvcGVydHlQYXRoLCBjb25maWcpO1xuXG4gICAgY29uc29sZS5kZWJ1ZyhgU2lkZSBsb2FkZWQgY29uZmlnIGZvciAnJHtwcm9wZXJ0eVBhdGh9JyBzdWNjZXNzZnVsYCwgdGhpcy5Db25maWcpO1xuXG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBsb2FkIHRoZSBhcHAgY29uZmlnIGZyb20gYSByZW1vdGUgcmVzb3VyY2UuXG4gICAqXG4gICAqIFByb21pc2UuYWxsKFsgQ29uZmlnU2VydmljZS5Mb2FkKCkgXSlcbiAgICogLnRoZW4oKCkgPT4gcGxhdGZvcm1Ccm93c2VyRHluYW1pYygpLmJvb3RzdHJhcE1vZHVsZShBcHBNb2R1bGUpKVxuICAgKiAuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSlcbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgTG9hZChvcHRpb25zPzogQ29uZmlnTG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5EZWZhdWx0cztcbiAgICBmb3IgKGNvbnN0IHVybCBvZiBDb25maWdTZXJ2aWNlLlVybHMpIHtcbiAgICAgIGNvbmZpZyA9IGF3YWl0IHRoaXMubG9hZENvbmZpZyh1cmwsIHRydWUsIG9wdGlvbnM/LnNjaGVtYSk7XG4gICAgfVxuXG4gICAgY29uZmlnID0gZGVlcE1lcmdlKGNvbmZpZywgdGhpcy5PdmVyd3JpdGVzKTtcblxuICAgIGlmIChvcHRpb25zPy5mcm9tTG9jYWxTdG9yYWdlICE9PSBmYWxzZSkge1xuXG4gICAgICBjb25zdCBsb2NhbENvbmZpZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKENvbmZpZ1NlcnZpY2UuTG9jYWxTdG9yYWdlS2V5KTtcblxuICAgICAgaWYgKGxvY2FsQ29uZmlnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uZmlnID0gZGVlcE1lcmdlKGNvbmZpZywgSlNPTi5wYXJzZShsb2NhbENvbmZpZykpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdsb2NhbCBjb25maWcgY291bGQgbm90IGJlIHBhcnNlZCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8uZnJvbVVybFBhcmFtKSB7XG4gICAgICBjb25zdCBwYXJhbSA9IHR5cGVvZiBvcHRpb25zLmZyb21VcmxQYXJhbSA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmZyb21VcmxQYXJhbSA6ICdjb25maWcnO1xuICAgICAgY29uZmlnICAgICAgPSBkZWVwTWVyZ2UoY29uZmlnLCB0aGlzLkxvYWRDb25maWdEZWZhdWx0RnJvbVVybFBhcmFtKHBhcmFtKSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZygnYXBwIGNvbmZpZycsIGNvbmZpZyk7XG5cbiAgICB0aGlzLkNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIExvYWRDb25maWdEZWZhdWx0RnJvbVVybFBhcmFtKHBhcmFtOiBzdHJpbmcgPSAnY29uZmlnJykge1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgIGNvbnN0IHVybFBhcmFtcyAgID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG5cbiAgICBjb25zdCBjb25maWdGcm9tUGFyYW1zID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ1BhcmFtIG9mIHVybFBhcmFtcy5nZXRBbGwoJ2NvbmZpZycpKSB7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gY29uZmlnUGFyYW0uc3BsaXQoJzsnKTtcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGNvbnN0IGtleVBhdGggPSBzcGxpdFsgMCBdO1xuICAgICAgICAgIGNvbnN0IHZhbHVlICAgPSBzcGxpdFsgMSBdO1xuICAgICAgICAgIFNldE9iamVjdFZhbHVlKGNvbmZpZ0Zyb21QYXJhbXMsIGtleVBhdGgsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgUGFyc2luZyBvZiB1cmwgY29uZmlnIHBhcmFtIGZhaWxlZCBmb3IgJyR7Y29uZmlnUGFyYW19JzogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnRnJvbVBhcmFtcztcblxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBHZXQ8VCA9IGFueSwgSyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZCwgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogVFxuICBwdWJsaWMgc3RhdGljIEdldDxUID0gYW55LCBLIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU6IE5vSW5mZXJUeXBlPFQ+LFxuICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuQ29uZmlnXG4gICk6IFQge1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbmZpZyBub3QgbG9hZGVkJyk7XG4gICAgfVxuICAgIGxldCBjb25maWdWYWx1ZTogYW55ID0gY29uZmlnO1xuICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGNvbmZpZyBwcm9wZXJ0eSBwYXRoIGlzIG5vdCBhIHN0cmluZycpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZyYWdtZW50IG9mIChwYXRoIGFzIGFueSkuc3BsaXQoJy4nKSkge1xuICAgICAgaWYgKGNvbmZpZ1ZhbHVlPy5oYXNPd25Qcm9wZXJ0eShmcmFnbWVudCkpIHtcbiAgICAgICAgY29uZmlnVmFsdWUgPSBjb25maWdWYWx1ZVsgZnJhZ21lbnQgXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS53YXJuKGBDb25maWcgd2l0aCBwYXRoICcke3BhdGh9JyBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBhbnk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb25maWdWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjb25maWchOiBDb25maWc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChSWEFQX0NPTkZJRykgY29uZmlnOiBhbnkgfCBudWxsID0gbnVsbCkge1xuICAgIHRoaXMuY29uZmlnID0gQ29uZmlnU2VydmljZS5Db25maWc7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSBkZWVwTWVyZ2UodGhpcy5jb25maWcgPz8ge30sIGNvbmZpZyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29uZmlnIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0TG9jYWxDb25maWcoY29uZmlnOiBDb25maWcpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShDb25maWdTZXJ2aWNlLkxvY2FsU3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJMb2NhbENvbmZpZygpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShDb25maWdTZXJ2aWNlLkxvY2FsU3RvcmFnZUtleSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0PFQgPSBhbnk+KHByb3BlcnR5UGF0aDogc3RyaW5nKTogVCB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGdldDxUID0gYW55Pihwcm9wZXJ0eVBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBOb0luZmVyVHlwZTxUPik6IFQ7XG4gIHB1YmxpYyBnZXQ8VCA9IGFueT4ocHJvcGVydHlQYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gQ29uZmlnU2VydmljZS5HZXQocHJvcGVydHlQYXRoLCBkZWZhdWx0VmFsdWUsIHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRPclRocm93PFQgPSBhbnk+KHByb3BlcnR5UGF0aDogc3RyaW5nKTogVDtcbiAgcHVibGljIGdldE9yVGhyb3c8VCA9IGFueT4ocHJvcGVydHlQYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogTm9JbmZlclR5cGU8VD4pOiBUO1xuICBwdWJsaWMgZ2V0T3JUaHJvdzxUID0gYW55Pihwcm9wZXJ0eVBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogVCk6IFQge1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlnU2VydmljZS5HZXQocHJvcGVydHlQYXRoLCBkZWZhdWx0VmFsdWUsIHRoaXMuY29uZmlnKTtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBjb25maWcgaW4gcGF0aCAnJHtwcm9wZXJ0eVBhdGh9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxufVxuIl19
|
package/fesm2015/rxap-config.mjs
CHANGED
|
@@ -205,9 +205,9 @@ ConfigService.Defaults = {};
|
|
|
205
205
|
ConfigService.Overwrites = {};
|
|
206
206
|
ConfigService.LocalStorageKey = 'rxap/config/local-config';
|
|
207
207
|
ConfigService.Urls = ['config.json'];
|
|
208
|
-
ConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
209
|
-
ConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
208
|
+
ConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigService, deps: [{ token: RXAP_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
209
|
+
ConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigService, providedIn: 'root' });
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigService, decorators: [{
|
|
211
211
|
type: Injectable,
|
|
212
212
|
args: [{
|
|
213
213
|
providedIn: 'root'
|
|
@@ -241,9 +241,9 @@ class ConfigLoaderService {
|
|
|
241
241
|
});
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
|
-
ConfigLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
245
|
-
ConfigLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
244
|
+
ConfigLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigLoaderService, deps: [{ token: HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
245
|
+
ConfigLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigLoaderService, providedIn: 'root' });
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigLoaderService, decorators: [{
|
|
247
247
|
type: Injectable,
|
|
248
248
|
args: [{ providedIn: 'root' }]
|
|
249
249
|
}], ctorParameters: function () {
|
|
@@ -259,3 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
|
|
|
259
259
|
|
|
260
260
|
export { ConfigLoaderService, ConfigService, RXAP_CONFIG };
|
|
261
261
|
//# sourceMappingURL=rxap-config.mjs.map
|
|
262
|
+
//# sourceMappingURL=rxap-config.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rxap-config.mjs","sources":["../../../../libs/config/src/lib/tokens.ts","../../../../libs/config/src/lib/config.service.ts","../../../../libs/config/src/lib/config-loader.service.ts","../../../../libs/config/src/rxap-config.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const RXAP_CONFIG = new InjectionToken('rxap/config');\n","import {\n Injectable,\n Optional,\n Inject\n} from '@angular/core';\nimport {\n deepMerge,\n SetObjectValue\n} from '@rxap/utilities';\nimport { RXAP_CONFIG } from './tokens';\nimport { NoInferType } from './types';\nimport { AnySchema } from 'joi';\n\nexport interface ConfigLoadOptions {\n fromUrlParam?: string | boolean;\n fromLocalStorage?: boolean;\n schema?: AnySchema;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService<Config extends Record<string, any> = Record<string, any>> {\n\n public static Config: any = null;\n\n /**\n * Static default values for the config object.\n * Will be overwritten by an dynamic config file specified in\n * the Urls array.\n */\n public static Defaults: any = {};\n\n /**\n * Any value definition in the Overwrites object will overwrite any\n * value form the Defaults values or dynamic config files\n */\n public static Overwrites: any = {};\n\n public static LocalStorageKey = 'rxap/config/local-config';\n\n public static Urls = [ 'config.json' ];\n\n private static async loadConfig<T = any>(url: string, required?: boolean, schema?: AnySchema): Promise<T | null> {\n\n let config: any;\n let response: any;\n\n try {\n response = await fetch(url)\n } catch (error: any) {\n const message = `Could not fetch config from '${url}': ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n } else {\n console.warn(message);\n return null;\n }\n }\n\n try {\n config = await response.json()\n } catch (error: any) {\n const message = `Could not parse config from '${url}' to a json object: ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n } else {\n console.warn(message);\n return null;\n }\n }\n\n if (schema) {\n try {\n config = await schema.validateAsync(config);\n } catch (error: any) {\n const message = `Config from '${url}' is not valid: ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n } else {\n console.warn(message);\n return null;\n }\n }\n }\n\n return config;\n\n }\n\n private static showError(message: string) {\n const hasUl = document.getElementById('rxap-config-error') !== null;\n const ul = document.getElementById('rxap-config-error') ?? document.createElement('ul');\n ul.id = 'rxap-config-error';\n ul.style.position = 'fixed';\n ul.style.bottom = '16px';\n ul.style.right = '16px';\n ul.style.backgroundColor = 'white';\n ul.style.padding = '32px';\n ul.style.zIndex = '99999999';\n ul.style.color = 'black';\n const li = document.createElement('li');\n li.innerText = message;\n ul.appendChild(li);\n if (!hasUl) {\n document.body.appendChild(ul);\n }\n }\n\n public static async SideLoad(url: string, propertyPath: string, required?: boolean, schema?: AnySchema): Promise<void> {\n\n if (!this.Config) {\n throw new Error('Config side load is only possible after the initial config load.');\n }\n\n const config = await this.loadConfig(url, required, schema);\n\n SetObjectValue(this.Config, propertyPath, config);\n\n console.debug(`Side loaded config for '${propertyPath}' successful`, this.Config);\n\n }\n\n /**\n * Used to load the app config from a remote resource.\n *\n * Promise.all([ ConfigService.Load() ])\n * .then(() => platformBrowserDynamic().bootstrapModule(AppModule))\n * .catch(err => console.error(err))\n *\n */\n public static async Load(options?: ConfigLoadOptions): Promise<void> {\n let config = this.Defaults;\n for (const url of ConfigService.Urls) {\n config = await this.loadConfig(url, true, options?.schema);\n }\n\n config = deepMerge(config, this.Overwrites);\n\n if (options?.fromLocalStorage !== false) {\n\n const localConfig = localStorage.getItem(ConfigService.LocalStorageKey);\n\n if (localConfig) {\n try {\n config = deepMerge(config, JSON.parse(localConfig));\n } catch (e: any) {\n console.error('local config could not be parsed');\n }\n }\n\n }\n\n if (options?.fromUrlParam) {\n const param = typeof options.fromUrlParam === 'string' ? options.fromUrlParam : 'config';\n config = deepMerge(config, this.LoadConfigDefaultFromUrlParam(param));\n }\n\n console.debug('app config', config);\n\n this.Config = config;\n }\n\n private static LoadConfigDefaultFromUrlParam(param: string = 'config') {\n\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n\n const configFromParams = {};\n\n for (const configParam of urlParams.getAll('config')) {\n\n try {\n const split = configParam.split(';');\n if (split.length === 2) {\n const keyPath = split[ 0 ];\n const value = split[ 1 ];\n SetObjectValue(configFromParams, keyPath, value);\n }\n } catch (e: any) {\n console.warn(`Parsing of url config param failed for '${configParam}': ${e.message}`);\n }\n\n }\n\n return configFromParams;\n\n }\n\n public static Get<T = any, K extends Record<string, any> = Record<string, any>>(path: string, defaultValue: T | undefined, config: Record<string, any>): T\n public static Get<T = any, K extends Record<string, any> = Record<string, any>>(\n path: string,\n defaultValue: NoInferType<T>,\n config: Record<string, any> = this.Config\n ): T {\n if (!config) {\n throw new Error('config not loaded');\n }\n let configValue: any = config;\n if (typeof path !== 'string') {\n throw new Error('The config property path is not a string');\n }\n for (const fragment of (path as any).split('.')) {\n if (configValue?.hasOwnProperty(fragment)) {\n configValue = configValue[ fragment ];\n } else {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n console.warn(`Config with path '${path}' not found`);\n return undefined as any;\n }\n }\n return configValue;\n }\n\n public readonly config!: Config;\n\n constructor(@Optional() @Inject(RXAP_CONFIG) config: any | null = null) {\n this.config = ConfigService.Config;\n if (config) {\n this.config = deepMerge(this.config ?? {}, config);\n }\n if (!this.config) {\n throw new Error('config not available');\n }\n }\n\n public setLocalConfig(config: Config): void {\n localStorage.setItem(ConfigService.LocalStorageKey, JSON.stringify(config));\n }\n\n public clearLocalConfig(): void {\n localStorage.removeItem(ConfigService.LocalStorageKey);\n }\n\n public get<T = any>(propertyPath: string): T | undefined;\n public get<T = any>(propertyPath: string, defaultValue: NoInferType<T>): T;\n public get<T = any>(propertyPath: string, defaultValue?: T): T | undefined {\n return ConfigService.Get(propertyPath, defaultValue, this.config);\n }\n\n public getOrThrow<T = any>(propertyPath: string): T;\n public getOrThrow<T = any>(propertyPath: string, defaultValue: NoInferType<T>): T;\n public getOrThrow<T = any>(propertyPath: string, defaultValue?: T): T {\n const value = ConfigService.Get(propertyPath, defaultValue, this.config);\n if (value === undefined) {\n throw new Error(`Could not find config in path '${propertyPath}'`);\n }\n return value;\n }\n\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { finalize, share } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigLoaderService {\n public readonly configs = new Map<string, any>();\n\n public readonly configLoading = new Map<string, Observable<any>>();\n\n constructor(\n @Inject(HttpClient)\n public readonly http: HttpClient\n ) {}\n\n public async load$<T = any>(url: string): Promise<T> {\n if (this.configs.has(url)) {\n return this.configs.get(url);\n }\n\n if (this.configLoading.has(url)) {\n return this.configLoading.get(url)!.toPromise();\n }\n\n const loading$ = this.http.get<T>(url).pipe(\n finalize(() => this.configLoading.delete(url)),\n share()\n );\n\n this.configLoading.set(url, loading$);\n\n return loading$.toPromise();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rxap-config.mjs","sources":["../esm2020/lib/tokens.mjs","../esm2020/lib/config.service.mjs","../esm2020/lib/config-loader.service.mjs","../esm2020/rxap-config.mjs"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const RXAP_CONFIG = new InjectionToken('rxap/config');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb25maWcvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgUlhBUF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ3J4YXAvY29uZmlnJyk7XG4iXX0=","import { Injectable, Optional, Inject } from '@angular/core';\nimport { deepMerge, SetObjectValue } from '@rxap/utilities';\nimport { RXAP_CONFIG } from './tokens';\nimport * as i0 from \"@angular/core\";\nexport class ConfigService {\n constructor(config = null) {\n this.config = ConfigService.Config;\n if (config) {\n this.config = deepMerge(this.config ?? {}, config);\n }\n if (!this.config) {\n throw new Error('config not available');\n }\n }\n static async loadConfig(url, required, schema) {\n let config;\n let response;\n try {\n response = await fetch(url);\n }\n catch (error) {\n const message = `Could not fetch config from '${url}': ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n }\n else {\n console.warn(message);\n return null;\n }\n }\n try {\n config = await response.json();\n }\n catch (error) {\n const message = `Could not parse config from '${url}' to a json object: ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n }\n else {\n console.warn(message);\n return null;\n }\n }\n if (schema) {\n try {\n config = await schema.validateAsync(config);\n }\n catch (error) {\n const message = `Config from '${url}' is not valid: ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n }\n else {\n console.warn(message);\n return null;\n }\n }\n }\n return config;\n }\n static showError(message) {\n const hasUl = document.getElementById('rxap-config-error') !== null;\n const ul = document.getElementById('rxap-config-error') ?? document.createElement('ul');\n ul.id = 'rxap-config-error';\n ul.style.position = 'fixed';\n ul.style.bottom = '16px';\n ul.style.right = '16px';\n ul.style.backgroundColor = 'white';\n ul.style.padding = '32px';\n ul.style.zIndex = '99999999';\n ul.style.color = 'black';\n const li = document.createElement('li');\n li.innerText = message;\n ul.appendChild(li);\n if (!hasUl) {\n document.body.appendChild(ul);\n }\n }\n static async SideLoad(url, propertyPath, required, schema) {\n if (!this.Config) {\n throw new Error('Config side load is only possible after the initial config load.');\n }\n const config = await this.loadConfig(url, required, schema);\n SetObjectValue(this.Config, propertyPath, config);\n console.debug(`Side loaded config for '${propertyPath}' successful`, this.Config);\n }\n /**\n * Used to load the app config from a remote resource.\n *\n * Promise.all([ ConfigService.Load() ])\n * .then(() => platformBrowserDynamic().bootstrapModule(AppModule))\n * .catch(err => console.error(err))\n *\n */\n static async Load(options) {\n let config = this.Defaults;\n for (const url of ConfigService.Urls) {\n config = await this.loadConfig(url, true, options?.schema);\n }\n config = deepMerge(config, this.Overwrites);\n if (options?.fromLocalStorage !== false) {\n const localConfig = localStorage.getItem(ConfigService.LocalStorageKey);\n if (localConfig) {\n try {\n config = deepMerge(config, JSON.parse(localConfig));\n }\n catch (e) {\n console.error('local config could not be parsed');\n }\n }\n }\n if (options?.fromUrlParam) {\n const param = typeof options.fromUrlParam === 'string' ? options.fromUrlParam : 'config';\n config = deepMerge(config, this.LoadConfigDefaultFromUrlParam(param));\n }\n console.debug('app config', config);\n this.Config = config;\n }\n static LoadConfigDefaultFromUrlParam(param = 'config') {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const configFromParams = {};\n for (const configParam of urlParams.getAll('config')) {\n try {\n const split = configParam.split(';');\n if (split.length === 2) {\n const keyPath = split[0];\n const value = split[1];\n SetObjectValue(configFromParams, keyPath, value);\n }\n }\n catch (e) {\n console.warn(`Parsing of url config param failed for '${configParam}': ${e.message}`);\n }\n }\n return configFromParams;\n }\n static Get(path, defaultValue, config = this.Config) {\n if (!config) {\n throw new Error('config not loaded');\n }\n let configValue = config;\n if (typeof path !== 'string') {\n throw new Error('The config property path is not a string');\n }\n for (const fragment of path.split('.')) {\n if (configValue?.hasOwnProperty(fragment)) {\n configValue = configValue[fragment];\n }\n else {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n console.warn(`Config with path '${path}' not found`);\n return undefined;\n }\n }\n return configValue;\n }\n setLocalConfig(config) {\n localStorage.setItem(ConfigService.LocalStorageKey, JSON.stringify(config));\n }\n clearLocalConfig() {\n localStorage.removeItem(ConfigService.LocalStorageKey);\n }\n get(propertyPath, defaultValue) {\n return ConfigService.Get(propertyPath, defaultValue, this.config);\n }\n getOrThrow(propertyPath, defaultValue) {\n const value = ConfigService.Get(propertyPath, defaultValue, this.config);\n if (value === undefined) {\n throw new Error(`Could not find config in path '${propertyPath}'`);\n }\n return value;\n }\n}\nConfigService.Config = null;\n/**\n * Static default values for the config object.\n * Will be overwritten by an dynamic config file specified in\n * the Urls array.\n */\nConfigService.Defaults = {};\n/**\n * Any value definition in the Overwrites object will overwrite any\n * value form the Defaults values or dynamic config files\n */\nConfigService.Overwrites = {};\nConfigService.LocalStorageKey = 'rxap/config/local-config';\nConfigService.Urls = ['config.json'];\nConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigService, deps: [{ token: RXAP_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RXAP_CONFIG]\n }] }]; } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbmZpZy9zcmMvbGliL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsU0FBUyxFQUNULGNBQWMsRUFDZixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBYXZDLE1BQU0sT0FBTyxhQUFhO0lBdU14QixZQUE2QyxTQUFxQixJQUFJO1FBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQTFMTyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBVSxHQUFXLEVBQUUsUUFBa0IsRUFBRSxNQUFrQjtRQUUxRixJQUFJLE1BQVcsQ0FBQztRQUNoQixJQUFJLFFBQWEsQ0FBQztRQUVsQixJQUFJO1lBQ0YsUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQzVCO1FBQUMsT0FBTyxLQUFVLEVBQUU7WUFDbkIsTUFBTSxPQUFPLEdBQUcsZ0NBQWdDLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMs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VUFBVSxDQUFVLFlBQW9CLEVBQUUsWUFBZ0I7UUFDL0QsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsWUFBWSxHQUFHLENBQUMsQ0FBQztTQUNwRTtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7QUFyT2Esb0JBQU0sR0FBUSxJQUFJLENBQUM7QUFFakM7Ozs7R0FJRztBQUNXLHNCQUFRLEdBQVEsRUFBRSxDQUFDO0FBRWpDOzs7R0FHRztBQUNXLHdCQUFVLEdBQVEsRUFBRSxDQUFDO0FBRXJCLDZCQUFlLEdBQUcsMEJBQTBCLENBQUM7QUFFN0Msa0JBQUksR0FBRyxDQUFFLGFBQWEsQ0FBRSxDQUFDOzBHQW5CNUIsYUFBYSxrQkF1TVEsV0FBVzs4R0F2TWhDLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF3TWMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWwsXG4gIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGRlZXBNZXJnZSxcbiAgU2V0T2JqZWN0VmFsdWVcbn0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcbmltcG9ydCB7IFJYQVBfQ09ORklHIH0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHsgTm9JbmZlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEFueVNjaGVtYSB9IGZyb20gJ2pvaSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnTG9hZE9wdGlvbnMge1xuICBmcm9tVXJsUGFyYW0/OiBzdHJpbmcgfCBib29sZWFuO1xuICBmcm9tTG9jYWxTdG9yYWdlPzogYm9vbGVhbjtcbiAgc2NoZW1hPzogQW55U2NoZW1hO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlPENvbmZpZyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG5cbiAgcHVibGljIHN0YXRpYyBDb25maWc6IGFueSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGNvbmZpZyBvYmplY3QuXG4gICAqIFdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgYW4gZHluYW1pYyBjb25maWcgZmlsZSBzcGVjaWZpZWQgaW5cbiAgICogdGhlIFVybHMgYXJyYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERlZmF1bHRzOiBhbnkgPSB7fTtcblxuICAvKipcbiAgICogQW55IHZhbHVlIGRlZmluaXRpb24gaW4gdGhlIE92ZXJ3cml0ZXMgb2JqZWN0IHdpbGwgb3ZlcndyaXRlIGFueVxuICAgKiB2YWx1ZSBmb3JtIHRoZSBEZWZhdWx0cyB2YWx1ZXMgb3IgZHluYW1pYyBjb25maWcgZmlsZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgT3ZlcndyaXRlczogYW55ID0ge307XG5cbiAgcHVibGljIHN0YXRpYyBMb2NhbFN0b3JhZ2VLZXkgPSAncnhhcC9jb25maWcvbG9jYWwtY29uZmlnJztcblxuICBwdWJsaWMgc3RhdGljIFVybHMgPSBbICdjb25maWcuanNvbicgXTtcblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBsb2FkQ29uZmlnPFQgPSBhbnk+KHVybDogc3RyaW5nLCByZXF1aXJlZD86IGJvb2xlYW4sIHNjaGVtYT86IEFueVNjaGVtYSk6IFByb21pc2U8VCB8IG51bGw+IHtcblxuICAgIGxldCBjb25maWc6IGFueTtcbiAgICBsZXQgcmVzcG9uc2U6IGFueTtcblxuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYENvdWxkIG5vdCBmZXRjaCBjb25maWcgZnJvbSAnJHt1cmx9JzogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3IobWVzc2FnZSk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbmZpZyA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ291bGQgbm90IHBhcnNlIGNvbmZpZyBmcm9tICcke3VybH0nIHRvIGEganNvbiBvYmplY3Q6ICR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yKG1lc3NhZ2UpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbmZpZyA9IGF3YWl0IHNjaGVtYS52YWxpZGF0ZUFzeW5jKGNvbmZpZyk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ29uZmlnIGZyb20gJyR7dXJsfScgaXMgbm90IHZhbGlkOiAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb25maWc7XG5cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNob3dFcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoYXNVbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyeGFwLWNvbmZpZy1lcnJvcicpICE9PSBudWxsO1xuICAgIGNvbnN0IHVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3J4YXAtY29uZmlnLWVycm9yJykgPz8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTtcbiAgICB1bC5pZCA9ICdyeGFwLWNvbmZpZy1lcnJvcic7XG4gICAgdWwuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIHVsLnN0eWxlLmJvdHRvbSA9ICcxNnB4JztcbiAgICB1bC5zdHlsZS5yaWdodCA9ICcxNnB4JztcbiAgICB1bC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xuICAgIHVsLnN0eWxlLnBhZGRpbmcgPSAnMzJweCc7XG4gICAgdWwuc3R5bGUuekluZGV4ID0gJzk5OTk5OTk5JztcbiAgICB1bC5zdHlsZS5jb2xvciA9ICdibGFjayc7XG4gICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuICAgIGxpLmlubmVyVGV4dCA9IG1lc3NhZ2U7XG4gICAgdWwuYXBwZW5kQ2hpbGQobGkpO1xuICAgIGlmICghaGFzVWwpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodWwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgU2lkZUxvYWQodXJsOiBzdHJpbmcsIHByb3BlcnR5UGF0aDogc3RyaW5nLCByZXF1aXJlZD86IGJvb2xlYW4sIHNjaGVtYT86IEFueVNjaGVtYSk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgaWYgKCF0aGlzLkNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25maWcgc2lkZSBsb2FkIGlzIG9ubHkgcG9zc2libGUgYWZ0ZXIgdGhlIGluaXRpYWwgY29uZmlnIGxvYWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5sb2FkQ29uZmlnKHVybCwgcmVxdWlyZWQsIHNjaGVtYSk7XG5cbiAgICBTZXRPYmplY3RWYWx1ZSh0aGlzLkNvbmZpZywgcHJvcGVydHlQYXRoLCBjb25maWcpO1xuXG4gICAgY29uc29sZS5kZWJ1ZyhgU2lkZSBsb2FkZWQgY29uZmlnIGZvciAnJHtwcm9wZXJ0eVBhdGh9JyBzdWNjZXNzZnVsYCwgdGhpcy5Db25maWcpO1xuXG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBsb2FkIHRoZSBhcHAgY29uZmlnIGZyb20gYSByZW1vdGUgcmVzb3VyY2UuXG4gICAqXG4gICAqIFByb21pc2UuYWxsKFsgQ29uZmlnU2VydmljZS5Mb2FkKCkgXSlcbiAgICogLnRoZW4oKCkgPT4gcGxhdGZvcm1Ccm93c2VyRHluYW1pYygpLmJvb3RzdHJhcE1vZHVsZShBcHBNb2R1bGUpKVxuICAgKiAuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSlcbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgTG9hZChvcHRpb25zPzogQ29uZmlnTG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5EZWZhdWx0cztcbiAgICBmb3IgKGNvbnN0IHVybCBvZiBDb25maWdTZXJ2aWNlLlVybHMpIHtcbiAgICAgIGNvbmZpZyA9IGF3YWl0IHRoaXMubG9hZENvbmZpZyh1cmwsIHRydWUsIG9wdGlvbnM/LnNjaGVtYSk7XG4gICAgfVxuXG4gICAgY29uZmlnID0gZGVlcE1lcmdlKGNvbmZpZywgdGhpcy5PdmVyd3JpdGVzKTtcblxuICAgIGlmIChvcHRpb25zPy5mcm9tTG9jYWxTdG9yYWdlICE9PSBmYWxzZSkge1xuXG4gICAgICBjb25zdCBsb2NhbENvbmZpZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKENvbmZpZ1NlcnZpY2UuTG9jYWxTdG9yYWdlS2V5KTtcblxuICAgICAgaWYgKGxvY2FsQ29uZmlnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uZmlnID0gZGVlcE1lcmdlKGNvbmZpZywgSlNPTi5wYXJzZShsb2NhbENvbmZpZykpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdsb2NhbCBjb25maWcgY291bGQgbm90IGJlIHBhcnNlZCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8uZnJvbVVybFBhcmFtKSB7XG4gICAgICBjb25zdCBwYXJhbSA9IHR5cGVvZiBvcHRpb25zLmZyb21VcmxQYXJhbSA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmZyb21VcmxQYXJhbSA6ICdjb25maWcnO1xuICAgICAgY29uZmlnICAgICAgPSBkZWVwTWVyZ2UoY29uZmlnLCB0aGlzLkxvYWRDb25maWdEZWZhdWx0RnJvbVVybFBhcmFtKHBhcmFtKSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZygnYXBwIGNvbmZpZycsIGNvbmZpZyk7XG5cbiAgICB0aGlzLkNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIExvYWRDb25maWdEZWZhdWx0RnJvbVVybFBhcmFtKHBhcmFtOiBzdHJpbmcgPSAnY29uZmlnJykge1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgIGNvbnN0IHVybFBhcmFtcyAgID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG5cbiAgICBjb25zdCBjb25maWdGcm9tUGFyYW1zID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ1BhcmFtIG9mIHVybFBhcmFtcy5nZXRBbGwoJ2NvbmZpZycpKSB7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gY29uZmlnUGFyYW0uc3BsaXQoJzsnKTtcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGNvbnN0IGtleVBhdGggPSBzcGxpdFsgMCBdO1xuICAgICAgICAgIGNvbnN0IHZhbHVlICAgPSBzcGxpdFsgMSBdO1xuICAgICAgICAgIFNldE9iamVjdFZhbHVlKGNvbmZpZ0Zyb21QYXJhbXMsIGtleVBhdGgsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgUGFyc2luZyBvZiB1cmwgY29uZmlnIHBhcmFtIGZhaWxlZCBmb3IgJyR7Y29uZmlnUGFyYW19JzogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnRnJvbVBhcmFtcztcblxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBHZXQ8VCA9IGFueSwgSyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZCwgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogVFxuICBwdWJsaWMgc3RhdGljIEdldDxUID0gYW55LCBLIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU6IE5vSW5mZXJUeXBlPFQ+LFxuICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuQ29uZmlnXG4gICk6IFQge1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbmZpZyBub3QgbG9hZGVkJyk7XG4gICAgfVxuICAgIGxldCBjb25maWdWYWx1ZTogYW55ID0gY29uZmlnO1xuICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGNvbmZpZyBwcm9wZXJ0eSBwYXRoIGlzIG5vdCBhIHN0cmluZycpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZyYWdtZW50IG9mIChwYXRoIGFzIGFueSkuc3BsaXQoJy4nKSkge1xuICAgICAgaWYgKGNvbmZpZ1ZhbHVlPy5oYXNPd25Qcm9wZXJ0eShmcmFnbWVudCkpIHtcbiAgICAgICAgY29uZmlnVmFsdWUgPSBjb25maWdWYWx1ZVsgZnJhZ21lbnQgXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS53YXJuKGBDb25maWcgd2l0aCBwYXRoICcke3BhdGh9JyBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBhbnk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb25maWdWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjb25maWchOiBDb25maWc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChSWEFQX0NPTkZJRykgY29uZmlnOiBhbnkgfCBudWxsID0gbnVsbCkge1xuICAgIHRoaXMuY29uZmlnID0gQ29uZmlnU2VydmljZS5Db25maWc7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSBkZWVwTWVyZ2UodGhpcy5jb25maWcgPz8ge30sIGNvbmZpZyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29uZmlnIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0TG9jYWxDb25maWcoY29uZmlnOiBDb25maWcpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShDb25maWdTZXJ2aWNlLkxvY2FsU3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJMb2NhbENvbmZpZygpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShDb25maWdTZXJ2aWNlLkxvY2FsU3RvcmFnZUtleSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0PFQgPSBhbnk+KHByb3BlcnR5UGF0aDogc3RyaW5nKTogVCB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGdldDxUID0gYW55Pihwcm9wZXJ0eVBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBOb0luZmVyVHlwZTxUPik6IFQ7XG4gIHB1YmxpYyBnZXQ8VCA9IGFueT4ocHJvcGVydHlQYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gQ29uZmlnU2VydmljZS5HZXQocHJvcGVydHlQYXRoLCBkZWZhdWx0VmFsdWUsIHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRPclRocm93PFQgPSBhbnk+KHByb3BlcnR5UGF0aDogc3RyaW5nKTogVDtcbiAgcHVibGljIGdldE9yVGhyb3c8VCA9IGFueT4ocHJvcGVydHlQYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogTm9JbmZlclR5cGU8VD4pOiBUO1xuICBwdWJsaWMgZ2V0T3JUaHJvdzxUID0gYW55Pihwcm9wZXJ0eVBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogVCk6IFQge1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlnU2VydmljZS5HZXQocHJvcGVydHlQYXRoLCBkZWZhdWx0VmFsdWUsIHRoaXMuY29uZmlnKTtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBjb25maWcgaW4gcGF0aCAnJHtwcm9wZXJ0eVBhdGh9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxufVxuIl19","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { finalize, share } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class ConfigLoaderService {\n constructor(http) {\n this.http = http;\n this.configs = new Map();\n this.configLoading = new Map();\n }\n async load$(url) {\n if (this.configs.has(url)) {\n return this.configs.get(url);\n }\n if (this.configLoading.has(url)) {\n return this.configLoading.get(url).toPromise();\n }\n const loading$ = this.http.get(url).pipe(finalize(() => this.configLoading.delete(url)), share());\n this.configLoading.set(url, loading$);\n return loading$.toPromise();\n }\n}\nConfigLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigLoaderService, deps: [{ token: HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigLoaderService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigLoaderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.HttpClient, decorators: [{\n type: Inject,\n args: [HttpClient]\n }] }]; } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb25maWcvc3JjL2xpYi9jb25maWctbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUdqRCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBRWtCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFObEIsWUFBTyxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFFakMsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUtoRSxDQUFDO0lBRUcsS0FBSyxDQUFDLEtBQUssQ0FBVSxHQUFXO1FBQ3JDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QjtRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNqRDtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDekMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzlDLEtBQUssRUFBRSxDQUNSLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFdEMsT0FBTyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7Z0hBM0JVLG1CQUFtQixrQkFNcEIsVUFBVTtvSEFOVCxtQkFBbUIsY0FETixNQUFNOzJGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFPN0IsTUFBTTsyQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgZmluYWxpemUsIHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENvbmZpZ0xvYWRlclNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgY29uZmlncyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZ0xvYWRpbmcgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxhbnk+PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoSHR0cENsaWVudClcbiAgICBwdWJsaWMgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudFxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGxvYWQkPFQgPSBhbnk+KHVybDogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMuY29uZmlncy5oYXModXJsKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlncy5nZXQodXJsKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWdMb2FkaW5nLmhhcyh1cmwpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWdMb2FkaW5nLmdldCh1cmwpIS50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkaW5nJCA9IHRoaXMuaHR0cC5nZXQ8VD4odXJsKS5waXBlKFxuICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5jb25maWdMb2FkaW5nLmRlbGV0ZSh1cmwpKSxcbiAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgdGhpcy5jb25maWdMb2FkaW5nLnNldCh1cmwsIGxvYWRpbmckKTtcblxuICAgIHJldHVybiBsb2FkaW5nJC50b1Byb21pc2UoKTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhhcC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvbmZpZy9zcmMvcnhhcC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
package/fesm2020/rxap-config.mjs
CHANGED
|
@@ -196,9 +196,9 @@ ConfigService.Defaults = {};
|
|
|
196
196
|
ConfigService.Overwrites = {};
|
|
197
197
|
ConfigService.LocalStorageKey = 'rxap/config/local-config';
|
|
198
198
|
ConfigService.Urls = ['config.json'];
|
|
199
|
-
ConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
200
|
-
ConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
201
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
199
|
+
ConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigService, deps: [{ token: RXAP_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
200
|
+
ConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigService, providedIn: 'root' });
|
|
201
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigService, decorators: [{
|
|
202
202
|
type: Injectable,
|
|
203
203
|
args: [{
|
|
204
204
|
providedIn: 'root'
|
|
@@ -228,9 +228,9 @@ class ConfigLoaderService {
|
|
|
228
228
|
return loading$.toPromise();
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
|
-
ConfigLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
232
|
-
ConfigLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
233
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
231
|
+
ConfigLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigLoaderService, deps: [{ token: HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
232
|
+
ConfigLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigLoaderService, providedIn: 'root' });
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: ConfigLoaderService, decorators: [{
|
|
234
234
|
type: Injectable,
|
|
235
235
|
args: [{ providedIn: 'root' }]
|
|
236
236
|
}], ctorParameters: function () { return [{ type: i1.HttpClient, decorators: [{
|
|
@@ -244,3 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
|
|
|
244
244
|
|
|
245
245
|
export { ConfigLoaderService, ConfigService, RXAP_CONFIG };
|
|
246
246
|
//# sourceMappingURL=rxap-config.mjs.map
|
|
247
|
+
//# sourceMappingURL=rxap-config.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rxap-config.mjs","sources":["../../../../libs/config/src/lib/tokens.ts","../../../../libs/config/src/lib/config.service.ts","../../../../libs/config/src/lib/config-loader.service.ts","../../../../libs/config/src/rxap-config.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const RXAP_CONFIG = new InjectionToken('rxap/config');\n","import {\n Injectable,\n Optional,\n Inject\n} from '@angular/core';\nimport {\n deepMerge,\n SetObjectValue\n} from '@rxap/utilities';\nimport { RXAP_CONFIG } from './tokens';\nimport { NoInferType } from './types';\nimport { AnySchema } from 'joi';\n\nexport interface ConfigLoadOptions {\n fromUrlParam?: string | boolean;\n fromLocalStorage?: boolean;\n schema?: AnySchema;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService<Config extends Record<string, any> = Record<string, any>> {\n\n public static Config: any = null;\n\n /**\n * Static default values for the config object.\n * Will be overwritten by an dynamic config file specified in\n * the Urls array.\n */\n public static Defaults: any = {};\n\n /**\n * Any value definition in the Overwrites object will overwrite any\n * value form the Defaults values or dynamic config files\n */\n public static Overwrites: any = {};\n\n public static LocalStorageKey = 'rxap/config/local-config';\n\n public static Urls = [ 'config.json' ];\n\n private static async loadConfig<T = any>(url: string, required?: boolean, schema?: AnySchema): Promise<T | null> {\n\n let config: any;\n let response: any;\n\n try {\n response = await fetch(url)\n } catch (error: any) {\n const message = `Could not fetch config from '${url}': ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n } else {\n console.warn(message);\n return null;\n }\n }\n\n try {\n config = await response.json()\n } catch (error: any) {\n const message = `Could not parse config from '${url}' to a json object: ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n } else {\n console.warn(message);\n return null;\n }\n }\n\n if (schema) {\n try {\n config = await schema.validateAsync(config);\n } catch (error: any) {\n const message = `Config from '${url}' is not valid: ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n } else {\n console.warn(message);\n return null;\n }\n }\n }\n\n return config;\n\n }\n\n private static showError(message: string) {\n const hasUl = document.getElementById('rxap-config-error') !== null;\n const ul = document.getElementById('rxap-config-error') ?? document.createElement('ul');\n ul.id = 'rxap-config-error';\n ul.style.position = 'fixed';\n ul.style.bottom = '16px';\n ul.style.right = '16px';\n ul.style.backgroundColor = 'white';\n ul.style.padding = '32px';\n ul.style.zIndex = '99999999';\n ul.style.color = 'black';\n const li = document.createElement('li');\n li.innerText = message;\n ul.appendChild(li);\n if (!hasUl) {\n document.body.appendChild(ul);\n }\n }\n\n public static async SideLoad(url: string, propertyPath: string, required?: boolean, schema?: AnySchema): Promise<void> {\n\n if (!this.Config) {\n throw new Error('Config side load is only possible after the initial config load.');\n }\n\n const config = await this.loadConfig(url, required, schema);\n\n SetObjectValue(this.Config, propertyPath, config);\n\n console.debug(`Side loaded config for '${propertyPath}' successful`, this.Config);\n\n }\n\n /**\n * Used to load the app config from a remote resource.\n *\n * Promise.all([ ConfigService.Load() ])\n * .then(() => platformBrowserDynamic().bootstrapModule(AppModule))\n * .catch(err => console.error(err))\n *\n */\n public static async Load(options?: ConfigLoadOptions): Promise<void> {\n let config = this.Defaults;\n for (const url of ConfigService.Urls) {\n config = await this.loadConfig(url, true, options?.schema);\n }\n\n config = deepMerge(config, this.Overwrites);\n\n if (options?.fromLocalStorage !== false) {\n\n const localConfig = localStorage.getItem(ConfigService.LocalStorageKey);\n\n if (localConfig) {\n try {\n config = deepMerge(config, JSON.parse(localConfig));\n } catch (e: any) {\n console.error('local config could not be parsed');\n }\n }\n\n }\n\n if (options?.fromUrlParam) {\n const param = typeof options.fromUrlParam === 'string' ? options.fromUrlParam : 'config';\n config = deepMerge(config, this.LoadConfigDefaultFromUrlParam(param));\n }\n\n console.debug('app config', config);\n\n this.Config = config;\n }\n\n private static LoadConfigDefaultFromUrlParam(param: string = 'config') {\n\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n\n const configFromParams = {};\n\n for (const configParam of urlParams.getAll('config')) {\n\n try {\n const split = configParam.split(';');\n if (split.length === 2) {\n const keyPath = split[ 0 ];\n const value = split[ 1 ];\n SetObjectValue(configFromParams, keyPath, value);\n }\n } catch (e: any) {\n console.warn(`Parsing of url config param failed for '${configParam}': ${e.message}`);\n }\n\n }\n\n return configFromParams;\n\n }\n\n public static Get<T = any, K extends Record<string, any> = Record<string, any>>(path: string, defaultValue: T | undefined, config: Record<string, any>): T\n public static Get<T = any, K extends Record<string, any> = Record<string, any>>(\n path: string,\n defaultValue: NoInferType<T>,\n config: Record<string, any> = this.Config\n ): T {\n if (!config) {\n throw new Error('config not loaded');\n }\n let configValue: any = config;\n if (typeof path !== 'string') {\n throw new Error('The config property path is not a string');\n }\n for (const fragment of (path as any).split('.')) {\n if (configValue?.hasOwnProperty(fragment)) {\n configValue = configValue[ fragment ];\n } else {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n console.warn(`Config with path '${path}' not found`);\n return undefined as any;\n }\n }\n return configValue;\n }\n\n public readonly config!: Config;\n\n constructor(@Optional() @Inject(RXAP_CONFIG) config: any | null = null) {\n this.config = ConfigService.Config;\n if (config) {\n this.config = deepMerge(this.config ?? {}, config);\n }\n if (!this.config) {\n throw new Error('config not available');\n }\n }\n\n public setLocalConfig(config: Config): void {\n localStorage.setItem(ConfigService.LocalStorageKey, JSON.stringify(config));\n }\n\n public clearLocalConfig(): void {\n localStorage.removeItem(ConfigService.LocalStorageKey);\n }\n\n public get<T = any>(propertyPath: string): T | undefined;\n public get<T = any>(propertyPath: string, defaultValue: NoInferType<T>): T;\n public get<T = any>(propertyPath: string, defaultValue?: T): T | undefined {\n return ConfigService.Get(propertyPath, defaultValue, this.config);\n }\n\n public getOrThrow<T = any>(propertyPath: string): T;\n public getOrThrow<T = any>(propertyPath: string, defaultValue: NoInferType<T>): T;\n public getOrThrow<T = any>(propertyPath: string, defaultValue?: T): T {\n const value = ConfigService.Get(propertyPath, defaultValue, this.config);\n if (value === undefined) {\n throw new Error(`Could not find config in path '${propertyPath}'`);\n }\n return value;\n }\n\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { finalize, share } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigLoaderService {\n public readonly configs = new Map<string, any>();\n\n public readonly configLoading = new Map<string, Observable<any>>();\n\n constructor(\n @Inject(HttpClient)\n public readonly http: HttpClient\n ) {}\n\n public async load$<T = any>(url: string): Promise<T> {\n if (this.configs.has(url)) {\n return this.configs.get(url);\n }\n\n if (this.configLoading.has(url)) {\n return this.configLoading.get(url)!.toPromise();\n }\n\n const loading$ = this.http.get<T>(url).pipe(\n finalize(() => this.configLoading.delete(url)),\n share()\n );\n\n this.configLoading.set(url, loading$);\n\n return loading$.toPromise();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rxap-config.mjs","sources":["../esm2020/lib/tokens.mjs","../esm2020/lib/config.service.mjs","../esm2020/lib/config-loader.service.mjs","../esm2020/rxap-config.mjs"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const RXAP_CONFIG = new InjectionToken('rxap/config');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb25maWcvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgUlhBUF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ3J4YXAvY29uZmlnJyk7XG4iXX0=","import { Injectable, Optional, Inject } from '@angular/core';\nimport { deepMerge, SetObjectValue } from '@rxap/utilities';\nimport { RXAP_CONFIG } from './tokens';\nimport * as i0 from \"@angular/core\";\nexport class ConfigService {\n constructor(config = null) {\n this.config = ConfigService.Config;\n if (config) {\n this.config = deepMerge(this.config ?? {}, config);\n }\n if (!this.config) {\n throw new Error('config not available');\n }\n }\n static async loadConfig(url, required, schema) {\n let config;\n let response;\n try {\n response = await fetch(url);\n }\n catch (error) {\n const message = `Could not fetch config from '${url}': ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n }\n else {\n console.warn(message);\n return null;\n }\n }\n try {\n config = await response.json();\n }\n catch (error) {\n const message = `Could not parse config from '${url}' to a json object: ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n }\n else {\n console.warn(message);\n return null;\n }\n }\n if (schema) {\n try {\n config = await schema.validateAsync(config);\n }\n catch (error) {\n const message = `Config from '${url}' is not valid: ${error.message}`;\n if (required) {\n this.showError(message);\n throw new Error(message);\n }\n else {\n console.warn(message);\n return null;\n }\n }\n }\n return config;\n }\n static showError(message) {\n const hasUl = document.getElementById('rxap-config-error') !== null;\n const ul = document.getElementById('rxap-config-error') ?? document.createElement('ul');\n ul.id = 'rxap-config-error';\n ul.style.position = 'fixed';\n ul.style.bottom = '16px';\n ul.style.right = '16px';\n ul.style.backgroundColor = 'white';\n ul.style.padding = '32px';\n ul.style.zIndex = '99999999';\n ul.style.color = 'black';\n const li = document.createElement('li');\n li.innerText = message;\n ul.appendChild(li);\n if (!hasUl) {\n document.body.appendChild(ul);\n }\n }\n static async SideLoad(url, propertyPath, required, schema) {\n if (!this.Config) {\n throw new Error('Config side load is only possible after the initial config load.');\n }\n const config = await this.loadConfig(url, required, schema);\n SetObjectValue(this.Config, propertyPath, config);\n console.debug(`Side loaded config for '${propertyPath}' successful`, this.Config);\n }\n /**\n * Used to load the app config from a remote resource.\n *\n * Promise.all([ ConfigService.Load() ])\n * .then(() => platformBrowserDynamic().bootstrapModule(AppModule))\n * .catch(err => console.error(err))\n *\n */\n static async Load(options) {\n let config = this.Defaults;\n for (const url of ConfigService.Urls) {\n config = await this.loadConfig(url, true, options?.schema);\n }\n config = deepMerge(config, this.Overwrites);\n if (options?.fromLocalStorage !== false) {\n const localConfig = localStorage.getItem(ConfigService.LocalStorageKey);\n if (localConfig) {\n try {\n config = deepMerge(config, JSON.parse(localConfig));\n }\n catch (e) {\n console.error('local config could not be parsed');\n }\n }\n }\n if (options?.fromUrlParam) {\n const param = typeof options.fromUrlParam === 'string' ? options.fromUrlParam : 'config';\n config = deepMerge(config, this.LoadConfigDefaultFromUrlParam(param));\n }\n console.debug('app config', config);\n this.Config = config;\n }\n static LoadConfigDefaultFromUrlParam(param = 'config') {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const configFromParams = {};\n for (const configParam of urlParams.getAll('config')) {\n try {\n const split = configParam.split(';');\n if (split.length === 2) {\n const keyPath = split[0];\n const value = split[1];\n SetObjectValue(configFromParams, keyPath, value);\n }\n }\n catch (e) {\n console.warn(`Parsing of url config param failed for '${configParam}': ${e.message}`);\n }\n }\n return configFromParams;\n }\n static Get(path, defaultValue, config = this.Config) {\n if (!config) {\n throw new Error('config not loaded');\n }\n let configValue = config;\n if (typeof path !== 'string') {\n throw new Error('The config property path is not a string');\n }\n for (const fragment of path.split('.')) {\n if (configValue?.hasOwnProperty(fragment)) {\n configValue = configValue[fragment];\n }\n else {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n console.warn(`Config with path '${path}' not found`);\n return undefined;\n }\n }\n return configValue;\n }\n setLocalConfig(config) {\n localStorage.setItem(ConfigService.LocalStorageKey, JSON.stringify(config));\n }\n clearLocalConfig() {\n localStorage.removeItem(ConfigService.LocalStorageKey);\n }\n get(propertyPath, defaultValue) {\n return ConfigService.Get(propertyPath, defaultValue, this.config);\n }\n getOrThrow(propertyPath, defaultValue) {\n const value = ConfigService.Get(propertyPath, defaultValue, this.config);\n if (value === undefined) {\n throw new Error(`Could not find config in path '${propertyPath}'`);\n }\n return value;\n }\n}\nConfigService.Config = null;\n/**\n * Static default values for the config object.\n * Will be overwritten by an dynamic config file specified in\n * the Urls array.\n */\nConfigService.Defaults = {};\n/**\n * Any value definition in the Overwrites object will overwrite any\n * value form the Defaults values or dynamic config files\n */\nConfigService.Overwrites = {};\nConfigService.LocalStorageKey = 'rxap/config/local-config';\nConfigService.Urls = ['config.json'];\nConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigService, deps: [{ token: RXAP_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RXAP_CONFIG]\n }] }]; } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbmZpZy9zcmMvbGliL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsU0FBUyxFQUNULGNBQWMsRUFDZixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBYXZDLE1BQU0sT0FBTyxhQUFhO0lBdU14QixZQUE2QyxTQUFxQixJQUFJO1FBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQTFMTyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBVSxHQUFXLEVBQUUsUUFBa0IsRUFBRSxNQUFrQjtRQUUxRixJQUFJLE1BQVcsQ0FBQztRQUNoQixJQUFJLFFBQWEsQ0FBQztRQUVsQixJQUFJO1lBQ0YsUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQzVCO1FBQUMsT0FBTyxLQUFVLEVBQUU7WUFDbkIsTUFBTSxPQUFPLEdBQUcsZ0NBQWdDLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMs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VUFBVSxDQUFVLFlBQW9CLEVBQUUsWUFBZ0I7UUFDL0QsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsWUFBWSxHQUFHLENBQUMsQ0FBQztTQUNwRTtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7QUFyT2Esb0JBQU0sR0FBUSxJQUFJLENBQUM7QUFFakM7Ozs7R0FJRztBQUNXLHNCQUFRLEdBQVEsRUFBRSxDQUFDO0FBRWpDOzs7R0FHRztBQUNXLHdCQUFVLEdBQVEsRUFBRSxDQUFDO0FBRXJCLDZCQUFlLEdBQUcsMEJBQTBCLENBQUM7QUFFN0Msa0JBQUksR0FBRyxDQUFFLGFBQWEsQ0FBRSxDQUFDOzBHQW5CNUIsYUFBYSxrQkF1TVEsV0FBVzs4R0F2TWhDLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF3TWMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWwsXG4gIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGRlZXBNZXJnZSxcbiAgU2V0T2JqZWN0VmFsdWVcbn0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcbmltcG9ydCB7IFJYQVBfQ09ORklHIH0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHsgTm9JbmZlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEFueVNjaGVtYSB9IGZyb20gJ2pvaSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnTG9hZE9wdGlvbnMge1xuICBmcm9tVXJsUGFyYW0/OiBzdHJpbmcgfCBib29sZWFuO1xuICBmcm9tTG9jYWxTdG9yYWdlPzogYm9vbGVhbjtcbiAgc2NoZW1hPzogQW55U2NoZW1hO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlPENvbmZpZyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG5cbiAgcHVibGljIHN0YXRpYyBDb25maWc6IGFueSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGNvbmZpZyBvYmplY3QuXG4gICAqIFdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgYW4gZHluYW1pYyBjb25maWcgZmlsZSBzcGVjaWZpZWQgaW5cbiAgICogdGhlIFVybHMgYXJyYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERlZmF1bHRzOiBhbnkgPSB7fTtcblxuICAvKipcbiAgICogQW55IHZhbHVlIGRlZmluaXRpb24gaW4gdGhlIE92ZXJ3cml0ZXMgb2JqZWN0IHdpbGwgb3ZlcndyaXRlIGFueVxuICAgKiB2YWx1ZSBmb3JtIHRoZSBEZWZhdWx0cyB2YWx1ZXMgb3IgZHluYW1pYyBjb25maWcgZmlsZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgT3ZlcndyaXRlczogYW55ID0ge307XG5cbiAgcHVibGljIHN0YXRpYyBMb2NhbFN0b3JhZ2VLZXkgPSAncnhhcC9jb25maWcvbG9jYWwtY29uZmlnJztcblxuICBwdWJsaWMgc3RhdGljIFVybHMgPSBbICdjb25maWcuanNvbicgXTtcblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBsb2FkQ29uZmlnPFQgPSBhbnk+KHVybDogc3RyaW5nLCByZXF1aXJlZD86IGJvb2xlYW4sIHNjaGVtYT86IEFueVNjaGVtYSk6IFByb21pc2U8VCB8IG51bGw+IHtcblxuICAgIGxldCBjb25maWc6IGFueTtcbiAgICBsZXQgcmVzcG9uc2U6IGFueTtcblxuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYENvdWxkIG5vdCBmZXRjaCBjb25maWcgZnJvbSAnJHt1cmx9JzogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3IobWVzc2FnZSk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbmZpZyA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ291bGQgbm90IHBhcnNlIGNvbmZpZyBmcm9tICcke3VybH0nIHRvIGEganNvbiBvYmplY3Q6ICR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yKG1lc3NhZ2UpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbmZpZyA9IGF3YWl0IHNjaGVtYS52YWxpZGF0ZUFzeW5jKGNvbmZpZyk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ29uZmlnIGZyb20gJyR7dXJsfScgaXMgbm90IHZhbGlkOiAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb25maWc7XG5cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNob3dFcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoYXNVbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyeGFwLWNvbmZpZy1lcnJvcicpICE9PSBudWxsO1xuICAgIGNvbnN0IHVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3J4YXAtY29uZmlnLWVycm9yJykgPz8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTtcbiAgICB1bC5pZCA9ICdyeGFwLWNvbmZpZy1lcnJvcic7XG4gICAgdWwuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIHVsLnN0eWxlLmJvdHRvbSA9ICcxNnB4JztcbiAgICB1bC5zdHlsZS5yaWdodCA9ICcxNnB4JztcbiAgICB1bC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xuICAgIHVsLnN0eWxlLnBhZGRpbmcgPSAnMzJweCc7XG4gICAgdWwuc3R5bGUuekluZGV4ID0gJzk5OTk5OTk5JztcbiAgICB1bC5zdHlsZS5jb2xvciA9ICdibGFjayc7XG4gICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuICAgIGxpLmlubmVyVGV4dCA9IG1lc3NhZ2U7XG4gICAgdWwuYXBwZW5kQ2hpbGQobGkpO1xuICAgIGlmICghaGFzVWwpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodWwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgU2lkZUxvYWQodXJsOiBzdHJpbmcsIHByb3BlcnR5UGF0aDogc3RyaW5nLCByZXF1aXJlZD86IGJvb2xlYW4sIHNjaGVtYT86IEFueVNjaGVtYSk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgaWYgKCF0aGlzLkNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25maWcgc2lkZSBsb2FkIGlzIG9ubHkgcG9zc2libGUgYWZ0ZXIgdGhlIGluaXRpYWwgY29uZmlnIGxvYWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5sb2FkQ29uZmlnKHVybCwgcmVxdWlyZWQsIHNjaGVtYSk7XG5cbiAgICBTZXRPYmplY3RWYWx1ZSh0aGlzLkNvbmZpZywgcHJvcGVydHlQYXRoLCBjb25maWcpO1xuXG4gICAgY29uc29sZS5kZWJ1ZyhgU2lkZSBsb2FkZWQgY29uZmlnIGZvciAnJHtwcm9wZXJ0eVBhdGh9JyBzdWNjZXNzZnVsYCwgdGhpcy5Db25maWcpO1xuXG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBsb2FkIHRoZSBhcHAgY29uZmlnIGZyb20gYSByZW1vdGUgcmVzb3VyY2UuXG4gICAqXG4gICAqIFByb21pc2UuYWxsKFsgQ29uZmlnU2VydmljZS5Mb2FkKCkgXSlcbiAgICogLnRoZW4oKCkgPT4gcGxhdGZvcm1Ccm93c2VyRHluYW1pYygpLmJvb3RzdHJhcE1vZHVsZShBcHBNb2R1bGUpKVxuICAgKiAuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSlcbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgTG9hZChvcHRpb25zPzogQ29uZmlnTG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5EZWZhdWx0cztcbiAgICBmb3IgKGNvbnN0IHVybCBvZiBDb25maWdTZXJ2aWNlLlVybHMpIHtcbiAgICAgIGNvbmZpZyA9IGF3YWl0IHRoaXMubG9hZENvbmZpZyh1cmwsIHRydWUsIG9wdGlvbnM/LnNjaGVtYSk7XG4gICAgfVxuXG4gICAgY29uZmlnID0gZGVlcE1lcmdlKGNvbmZpZywgdGhpcy5PdmVyd3JpdGVzKTtcblxuICAgIGlmIChvcHRpb25zPy5mcm9tTG9jYWxTdG9yYWdlICE9PSBmYWxzZSkge1xuXG4gICAgICBjb25zdCBsb2NhbENvbmZpZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKENvbmZpZ1NlcnZpY2UuTG9jYWxTdG9yYWdlS2V5KTtcblxuICAgICAgaWYgKGxvY2FsQ29uZmlnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uZmlnID0gZGVlcE1lcmdlKGNvbmZpZywgSlNPTi5wYXJzZShsb2NhbENvbmZpZykpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdsb2NhbCBjb25maWcgY291bGQgbm90IGJlIHBhcnNlZCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8uZnJvbVVybFBhcmFtKSB7XG4gICAgICBjb25zdCBwYXJhbSA9IHR5cGVvZiBvcHRpb25zLmZyb21VcmxQYXJhbSA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmZyb21VcmxQYXJhbSA6ICdjb25maWcnO1xuICAgICAgY29uZmlnICAgICAgPSBkZWVwTWVyZ2UoY29uZmlnLCB0aGlzLkxvYWRDb25maWdEZWZhdWx0RnJvbVVybFBhcmFtKHBhcmFtKSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZygnYXBwIGNvbmZpZycsIGNvbmZpZyk7XG5cbiAgICB0aGlzLkNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIExvYWRDb25maWdEZWZhdWx0RnJvbVVybFBhcmFtKHBhcmFtOiBzdHJpbmcgPSAnY29uZmlnJykge1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgIGNvbnN0IHVybFBhcmFtcyAgID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XG5cbiAgICBjb25zdCBjb25maWdGcm9tUGFyYW1zID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ1BhcmFtIG9mIHVybFBhcmFtcy5nZXRBbGwoJ2NvbmZpZycpKSB7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gY29uZmlnUGFyYW0uc3BsaXQoJzsnKTtcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGNvbnN0IGtleVBhdGggPSBzcGxpdFsgMCBdO1xuICAgICAgICAgIGNvbnN0IHZhbHVlICAgPSBzcGxpdFsgMSBdO1xuICAgICAgICAgIFNldE9iamVjdFZhbHVlKGNvbmZpZ0Zyb21QYXJhbXMsIGtleVBhdGgsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgUGFyc2luZyBvZiB1cmwgY29uZmlnIHBhcmFtIGZhaWxlZCBmb3IgJyR7Y29uZmlnUGFyYW19JzogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnRnJvbVBhcmFtcztcblxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBHZXQ8VCA9IGFueSwgSyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZCwgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogVFxuICBwdWJsaWMgc3RhdGljIEdldDxUID0gYW55LCBLIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU6IE5vSW5mZXJUeXBlPFQ+LFxuICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuQ29uZmlnXG4gICk6IFQge1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbmZpZyBub3QgbG9hZGVkJyk7XG4gICAgfVxuICAgIGxldCBjb25maWdWYWx1ZTogYW55ID0gY29uZmlnO1xuICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGNvbmZpZyBwcm9wZXJ0eSBwYXRoIGlzIG5vdCBhIHN0cmluZycpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZyYWdtZW50IG9mIChwYXRoIGFzIGFueSkuc3BsaXQoJy4nKSkge1xuICAgICAgaWYgKGNvbmZpZ1ZhbHVlPy5oYXNPd25Qcm9wZXJ0eShmcmFnbWVudCkpIHtcbiAgICAgICAgY29uZmlnVmFsdWUgPSBjb25maWdWYWx1ZVsgZnJhZ21lbnQgXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS53YXJuKGBDb25maWcgd2l0aCBwYXRoICcke3BhdGh9JyBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBhbnk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb25maWdWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjb25maWchOiBDb25maWc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChSWEFQX0NPTkZJRykgY29uZmlnOiBhbnkgfCBudWxsID0gbnVsbCkge1xuICAgIHRoaXMuY29uZmlnID0gQ29uZmlnU2VydmljZS5Db25maWc7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSBkZWVwTWVyZ2UodGhpcy5jb25maWcgPz8ge30sIGNvbmZpZyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29uZmlnIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0TG9jYWxDb25maWcoY29uZmlnOiBDb25maWcpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShDb25maWdTZXJ2aWNlLkxvY2FsU3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJMb2NhbENvbmZpZygpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShDb25maWdTZXJ2aWNlLkxvY2FsU3RvcmFnZUtleSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0PFQgPSBhbnk+KHByb3BlcnR5UGF0aDogc3RyaW5nKTogVCB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGdldDxUID0gYW55Pihwcm9wZXJ0eVBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBOb0luZmVyVHlwZTxUPik6IFQ7XG4gIHB1YmxpYyBnZXQ8VCA9IGFueT4ocHJvcGVydHlQYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gQ29uZmlnU2VydmljZS5HZXQocHJvcGVydHlQYXRoLCBkZWZhdWx0VmFsdWUsIHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRPclRocm93PFQgPSBhbnk+KHByb3BlcnR5UGF0aDogc3RyaW5nKTogVDtcbiAgcHVibGljIGdldE9yVGhyb3c8VCA9IGFueT4ocHJvcGVydHlQYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogTm9JbmZlclR5cGU8VD4pOiBUO1xuICBwdWJsaWMgZ2V0T3JUaHJvdzxUID0gYW55Pihwcm9wZXJ0eVBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogVCk6IFQge1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlnU2VydmljZS5HZXQocHJvcGVydHlQYXRoLCBkZWZhdWx0VmFsdWUsIHRoaXMuY29uZmlnKTtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBjb25maWcgaW4gcGF0aCAnJHtwcm9wZXJ0eVBhdGh9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxufVxuIl19","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { finalize, share } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nexport class ConfigLoaderService {\n constructor(http) {\n this.http = http;\n this.configs = new Map();\n this.configLoading = new Map();\n }\n async load$(url) {\n if (this.configs.has(url)) {\n return this.configs.get(url);\n }\n if (this.configLoading.has(url)) {\n return this.configLoading.get(url).toPromise();\n }\n const loading$ = this.http.get(url).pipe(finalize(() => this.configLoading.delete(url)), share());\n this.configLoading.set(url, loading$);\n return loading$.toPromise();\n }\n}\nConfigLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigLoaderService, deps: [{ token: HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigLoaderService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.0.3\", ngImport: i0, type: ConfigLoaderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.HttpClient, decorators: [{\n type: Inject,\n args: [HttpClient]\n }] }]; } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb25maWcvc3JjL2xpYi9jb25maWctbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUdqRCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBRWtCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFObEIsWUFBTyxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFFakMsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUtoRSxDQUFDO0lBRUcsS0FBSyxDQUFDLEtBQUssQ0FBVSxHQUFXO1FBQ3JDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QjtRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNqRDtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDekMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzlDLEtBQUssRUFBRSxDQUNSLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFdEMsT0FBTyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7Z0hBM0JVLG1CQUFtQixrQkFNcEIsVUFBVTtvSEFOVCxtQkFBbUIsY0FETixNQUFNOzJGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFPN0IsTUFBTTsyQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgZmluYWxpemUsIHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENvbmZpZ0xvYWRlclNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgY29uZmlncyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZ0xvYWRpbmcgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxhbnk+PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoSHR0cENsaWVudClcbiAgICBwdWJsaWMgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudFxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGxvYWQkPFQgPSBhbnk+KHVybDogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMuY29uZmlncy5oYXModXJsKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlncy5nZXQodXJsKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWdMb2FkaW5nLmhhcyh1cmwpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWdMb2FkaW5nLmdldCh1cmwpIS50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkaW5nJCA9IHRoaXMuaHR0cC5nZXQ8VD4odXJsKS5waXBlKFxuICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5jb25maWdMb2FkaW5nLmRlbGV0ZSh1cmwpKSxcbiAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgdGhpcy5jb25maWdMb2FkaW5nLnNldCh1cmwsIGxvYWRpbmckKTtcblxuICAgIHJldHVybiBsb2FkaW5nJC50b1Byb21pc2UoKTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhhcC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NvbmZpZy9zcmMvcnhhcC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rxap/config",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "15.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Merzough Münker",
|
|
6
6
|
"homepage": "https://gitlab.com/rxap/packages/libs/config",
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
},
|
|
18
18
|
"description": "Simple config file manager for angular applications.",
|
|
19
19
|
"peerDependencies": {
|
|
20
|
-
"@angular-devkit/schematics": "^
|
|
21
|
-
"@angular/common": "^
|
|
22
|
-
"@angular/core": "^
|
|
23
|
-
"@angular/platform-browser-dynamic": "^
|
|
24
|
-
"@rxap/utilities": "^
|
|
20
|
+
"@angular-devkit/schematics": "^15.0.3",
|
|
21
|
+
"@angular/common": "^15.0.3",
|
|
22
|
+
"@angular/core": "^15.0.3",
|
|
23
|
+
"@angular/platform-browser-dynamic": "^15.0.3",
|
|
24
|
+
"@rxap/utilities": "^15.0.0",
|
|
25
25
|
"joi": "^17.6.3",
|
|
26
26
|
"reflect-metadata": "^0.1.13",
|
|
27
27
|
"rxjs": "^6.6.0"
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"save": "dependencies"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@rxap/schematics-ts-morph": "^
|
|
46
|
-
"@rxap/schematics-utilities": "^
|
|
45
|
+
"@rxap/schematics-ts-morph": "^15.0.0",
|
|
46
|
+
"@rxap/schematics-utilities": "^15.0.0",
|
|
47
47
|
"ts-morph": "^13.0.3",
|
|
48
48
|
"tslib": "^2.3.1"
|
|
49
49
|
},
|