@igo2/core
Version:
98 lines • 13 kB
JavaScript
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==