{"version":3,"file":"igo2-core-config.mjs","sources":["../../../packages/core/config/src/config-deprecated.ts","../../../packages/core/config/src/version.ts","../../../packages/core/config/src/config.service.ts","../../../packages/core/config/src/config.provider.ts","../../../packages/core/config/src/config.module.ts","../../../packages/core/config/src/igo2-core-config.ts"],"sourcesContent":["import { AlternateConfigOptions, DeprecatedOptions } from './config.interface';\n\nexport const CONFIG_DEPRECATED: Record<string, DeprecatedOptions> = {\n  showMenuButton: {\n    alternativeKey: 'menu.button.visible',\n    mayBeRemoveIn: new Date('2024-06-06')\n  },\n  menuButtonReverseColor: {\n    alternativeKey: 'menu.button.useThemeColor',\n    mayBeRemoveIn: new Date('2024-06-06')\n  },\n  importWithStyle: {\n    alternativeKey: 'importExport.importWithStyle',\n    mayBeRemoveIn: new Date('2024-06-06')\n  },\n  hasGeolocateButton: {\n    alternativeKey: 'geolocate.button.visible',\n    mayBeRemoveIn: new Date('2024-06-06')\n  }\n};\n\nexport const ALTERNATE_CONFIG_FROM_DEPRECATION = new Map<\n  string,\n  AlternateConfigOptions\n>(\n  Object.entries(CONFIG_DEPRECATED)\n    .filter(([_, options]) => options.alternativeKey)\n    .map(([key, options]) => [\n      options.alternativeKey,\n      {\n        deprecatedKey: key\n      } satisfies AlternateConfigOptions\n    ])\n);\n","export interface Version {\n  app?: string;\n  lib?: string;\n  releaseDateApp?: number;\n  releaseDate?: number;\n}\n\nexport const version: Version = {\n  lib: '20.1.1',\n  releaseDate: 1779216550996\n};\n","import { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { BehaviorSubject, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport {\n  ALTERNATE_CONFIG_FROM_DEPRECATION,\n  CONFIG_DEPRECATED\n} from './config-deprecated';\nimport { ConfigOptions } from './config.interface';\nimport { version } from './version';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ConfigService<T extends object = Record<string, any>> {\n  private config: T | null;\n  private httpClient: HttpClient;\n  private configDeprecated = new Map(Object.entries(CONFIG_DEPRECATED));\n\n  private _isLoaded$ = new BehaviorSubject<boolean>(null);\n  isLoaded$ = this._isLoaded$.asObservable();\n\n  constructor() {\n    const handler = inject(HttpBackend);\n\n    this.httpClient = new HttpClient(handler);\n  }\n\n  /**\n   * Use to get the all config file (merge from environnement.ts and config.json)\n   */\n  public getConfigs(): any {\n    Array.from(this.configDeprecated.keys()).map((deprecatedKey) => {\n      const deprecatedValue = ObjectUtils.resolve(this.config, deprecatedKey);\n      if (deprecatedValue !== undefined) {\n        this.handleDeprecatedConfig(deprecatedKey);\n      }\n    });\n    return this.config;\n  }\n\n  /**\n   * Use to get the data found in config file\n   */\n  public getConfig<T = any>(key: string, defaultValue?: unknown): T {\n    let value = ObjectUtils.resolve(this.config, key);\n\n    const isDeprecated = this.configDeprecated.get(key);\n    if (isDeprecated && value !== undefined) {\n      this.handleDeprecatedConfig(key);\n    } else if (value === undefined) {\n      value = this.handleDeprecationPossibility(key);\n    }\n\n    return value ?? defaultValue;\n  }\n\n  private handleDeprecatedConfig(key: string): void {\n    const options = this.configDeprecated.get(key);\n\n    let message = `This config (${key}) is deprecated and will be removed shortly`;\n    if (options.alternativeKey) {\n      message += ` You should use this key (${options.alternativeKey}) as an alternate solution`;\n    }\n\n    const currentDate = new Date();\n    currentDate >= options.mayBeRemoveIn\n      ? console.error(message)\n      : console.warn(message);\n  }\n\n  private handleDeprecationPossibility(key: string): any {\n    const options = ALTERNATE_CONFIG_FROM_DEPRECATION.get(key);\n    if (!options) {\n      return;\n    }\n\n    return this.getConfig(options.deprecatedKey);\n  }\n\n  /**\n   * This method loads \"[path]\" to get all config's variables\n   */\n  public load(options: ConfigOptions<T>): void | Promise<unknown> {\n    const baseConfig = options.default;\n    if (!options.path) {\n      this.config = baseConfig;\n      this._isLoaded$.next(true);\n      return;\n    }\n\n    return new Promise((resolve) => {\n      this.httpClient\n        .get(options.path)\n        .pipe(\n          catchError((error: any): any => {\n            console.log(`Configuration file ${options.path} could not be read`);\n            this._isLoaded$.next(false);\n            resolve(true);\n            return throwError(error.error || 'Server error');\n          })\n        )\n        .subscribe((configResponse: object) => {\n          this.config = ObjectUtils.mergeDeep(\n            ObjectUtils.mergeDeep({ version }, baseConfig),\n            configResponse\n          );\n          this._isLoaded$.next(true);\n          resolve(true);\n        });\n    });\n  }\n}\n","import {\n  EnvironmentProviders,\n  InjectionToken,\n  inject,\n  makeEnvironmentProviders,\n  provideAppInitializer\n} from '@angular/core';\n\nimport { ConfigOptions } from './config.interface';\nimport { ConfigService } from './config.service';\n\nexport const CONFIG_OPTIONS = new InjectionToken<ConfigOptions>(\n  'configOptions'\n);\n\nexport function provideConfig(options: ConfigOptions): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    {\n      provide: CONFIG_OPTIONS,\n      useValue: options\n    },\n    provideAppInitializer(async () => {\n      const configService = inject(ConfigService);\n      const options = inject(CONFIG_OPTIONS);\n      return configService.load(options);\n    })\n  ]);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { provideConfig } from './config.provider';\n\n/**\n * @deprecated import the provideConfig directly\n */\n@NgModule({\n  imports: [],\n  declarations: [],\n  exports: []\n})\nexport class IgoConfigModule {\n  static forRoot(): ModuleWithProviders<IgoConfigModule> {\n    return {\n      ngModule: IgoConfigModule,\n      providers: [provideConfig({})]\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}