UNPKG

@igo2/core

Version:
98 lines 13 kB
import { HttpBackend, HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { ObjectUtils } from '@igo2/utils'; import { BehaviorSubject, throwError } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { ALTERNATE_CONFIG_FROM_DEPRECATION, CONFIG_DEPRECATED } from './config-deprecated'; import { version } from './version'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; export class ConfigService { config; httpClient; configDeprecated = new Map(Object.entries(CONFIG_DEPRECATED)); _isLoaded$ = new BehaviorSubject(null); isLoaded$ = this._isLoaded$.asObservable(); constructor(handler) { this.httpClient = new HttpClient(handler); } /** * Use to get the all config file (merge from environnement.ts and config.json) */ getConfigs() { Array.from(this.configDeprecated.keys()).map((deprecatedKey) => { const deprecatedValue = ObjectUtils.resolve(this.config, deprecatedKey); if (deprecatedValue !== undefined) { this.handleDeprecatedConfig(deprecatedKey); } }); return this.config; } /** * Use to get the data found in config file */ getConfig(key, defaultValue) { let value = ObjectUtils.resolve(this.config, key); const isDeprecated = this.configDeprecated.get(key); if (isDeprecated && value !== undefined) { this.handleDeprecatedConfig(key); } else if (value === undefined) { value = this.handleDeprecationPossibility(key); } return value ?? defaultValue; } handleDeprecatedConfig(key) { const options = this.configDeprecated.get(key); let message = `This config (${key}) is deprecated and will be removed shortly`; if (options.alternativeKey) { message += ` You should use this key (${options.alternativeKey}) as an alternate solution`; } const currentDate = new Date(); currentDate >= options.mayBeRemoveIn ? console.error(message) : console.warn(message); } handleDeprecationPossibility(key) { const options = ALTERNATE_CONFIG_FROM_DEPRECATION.get(key); if (!options) { return; } return this.getConfig(options.deprecatedKey); } /** * This method loads "[path]" to get all config's variables */ load(options) { const baseConfig = options.default; if (!options.path) { this.config = baseConfig; this._isLoaded$.next(true); return true; } return new Promise((resolve) => { this.httpClient .get(options.path) .pipe(catchError((error) => { console.log(`Configuration file ${options.path} could not be read`); this._isLoaded$.next(false); resolve(true); return throwError(error.error || 'Server error'); })) .subscribe((configResponse) => { this.config = ObjectUtils.mergeDeep(ObjectUtils.mergeDeep({ version }, baseConfig), configResponse); this._isLoaded$.next(true); resolve(true); }); }); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigService, deps: [{ token: i1.HttpBackend }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.HttpBackend }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2NvbmZpZy9zcmMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsaUJBQWlCLEVBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBS3BDLE1BQU0sT0FBTyxhQUFhO0lBQ2hCLE1BQU0sQ0FBVztJQUNqQixVQUFVLENBQWE7SUFDdkIsZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFFOUQsVUFBVSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO0lBQ3hELFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTNDLFlBQVksT0FBb0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVO1FBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUs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QUNkLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksY0FBYyxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDLENBQ0g7aUJBQ0EsU0FBUyxDQUFDLENBQUMsY0FBc0IsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQ2pDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFDOUMsY0FBYyxDQUNmLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0EvRlUsYUFBYTs0R0FBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQmFja2VuZCwgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgQUxURVJOQVRFX0NPTkZJR19GUk9NX0RFUFJFQ0FUSU9OLFxuICBDT05GSUdfREVQUkVDQVRFRFxufSBmcm9tICcuL2NvbmZpZy1kZXByZWNhdGVkJztcbmltcG9ydCB7IENvbmZpZ09wdGlvbnMgfSBmcm9tICcuL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4vdmVyc2lvbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ1NlcnZpY2U8VCBleHRlbmRzIG9iamVjdCA9IFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgcHJpdmF0ZSBjb25maWc6IFQgfCBudWxsO1xuICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XG4gIHByaXZhdGUgY29uZmlnRGVwcmVjYXRlZCA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoQ09ORklHX0RFUFJFQ0FURUQpKTtcblxuICBwcml2YXRlIF9pc0xvYWRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KG51bGwpO1xuICBpc0xvYWRlZCQgPSB0aGlzLl9pc0xvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoaGFuZGxlcjogSHR0cEJhY2tlbmQpIHtcbiAgICB0aGlzLmh0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudChoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdG8gZ2V0IHRoZSBhbGwgY29uZmlnIGZpbGUgKG1lcmdlIGZyb20gZW52aXJvbm5lbWVudC50cyBhbmQgY29uZmlnLmpzb24pXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29uZmlncygpOiBhbnkge1xuICAgIEFycmF5LmZyb20odGhpcy5jb25maWdEZXByZWNhdGVkLmtleXMoKSkubWFwKChkZXByZWNhdGVkS2V5KSA9PiB7XG4gICAgICBjb25zdCBkZXByZWNhdGVkVmFsdWUgPSBPYmplY3RVdGlscy5yZXNvbHZlKHRoaXMuY29uZmlnLCBkZXByZWNhdGVkS2V5KTtcbiAgICAgIGlmIChkZXByZWNhdGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmhhbmRsZURlcHJlY2F0ZWRDb25maWcoZGVwcmVjYXRlZEtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0byBnZXQgdGhlIGRhdGEgZm91bmQgaW4gY29uZmlnIGZpbGVcbiAgICovXG4gIHB1YmxpYyBnZXRDb25maWc8VCA9IGFueT4oa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHVua25vd24pOiBUIHtcbiAgICBsZXQgdmFsdWUgPSBPYmplY3RVdGlscy5yZXNvbHZlKHRoaXMuY29uZmlnLCBrZXkpO1xuXG4gICAgY29uc3QgaXNEZXByZWNhdGVkID0gdGhpcy5jb25maWdEZXByZWNhdGVkLmdldChrZXkpO1xuICAgIGlmIChpc0RlcHJlY2F0ZWQgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5oYW5kbGVEZXByZWNhdGVkQ29uZmlnKGtleSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuaGFuZGxlRGVwcmVjYXRpb25Qb3NzaWJpbGl0eShrZXkpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSA/PyBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURlcHJlY2F0ZWRDb25maWcoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jb25maWdEZXByZWNhdGVkLmdldChrZXkpO1xuXG4gICAgbGV0IG1lc3NhZ2UgPSBgVGhpcyBjb25maWcgKCR7a2V5fSkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIHNob3J0bHlgO1xuICAgIGlmIChvcHRpb25zLmFsdGVybmF0aXZlS2V5KSB7XG4gICAgICBtZXNzYWdlICs9IGAgWW91IHNob3VsZCB1c2UgdGhpcyBrZXkgKCR7b3B0aW9ucy5hbHRlcm5hdGl2ZUtleX0pIGFzIGFuIGFsdGVybmF0ZSBzb2x1dGlvbmA7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGN1cnJlbnREYXRlID49IG9wdGlvbnMubWF5QmVSZW1vdmVJblxuICAgICAgPyBjb25zb2xlLmVycm9yKG1lc3NhZ2UpXG4gICAgICA6IGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRGVwcmVjYXRpb25Qb3NzaWJpbGl0eShrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IEFMVEVSTkFURV9DT05GSUdfRlJPTV9ERVBSRUNBVElPTi5nZXQoa2V5KTtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRDb25maWcob3B0aW9ucy5kZXByZWNhdGVkS2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBsb2FkcyBcIltwYXRoXVwiIHRvIGdldCBhbGwgY29uZmlnJ3MgdmFyaWFibGVzXG4gICAqL1xuICBwdWJsaWMgbG9hZChvcHRpb25zOiBDb25maWdPcHRpb25zPFQ+KSB7XG4gICAgY29uc3QgYmFzZUNvbmZpZyA9IG9wdGlvbnMuZGVmYXVsdDtcbiAgICBpZiAoIW9wdGlvbnMucGF0aCkge1xuICAgICAgdGhpcy5jb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgdGhpcy5faXNMb2FkZWQkLm5leHQodHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAuZ2V0KG9wdGlvbnMucGF0aClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSk6IGFueSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQ29uZmlndXJhdGlvbiBmaWxlICR7b3B0aW9ucy5wYXRofSBjb3VsZCBub3QgYmUgcmVhZGApO1xuICAgICAgICAgICAgdGhpcy5faXNMb2FkZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yLmVycm9yIHx8ICdTZXJ2ZXIgZXJyb3InKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZ1Jlc3BvbnNlOiBvYmplY3QpID0+IHtcbiAgICAgICAgICB0aGlzLmNvbmZpZyA9IE9iamVjdFV0aWxzLm1lcmdlRGVlcChcbiAgICAgICAgICAgIE9iamVjdFV0aWxzLm1lcmdlRGVlcCh7IHZlcnNpb24gfSwgYmFzZUNvbmZpZyksXG4gICAgICAgICAgICBjb25maWdSZXNwb25zZVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5faXNMb2FkZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==