X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Futils%2FConfiguration.ts;h=bf691fa8c1d96ffcb2da9ed44fc6f62ca977e098;hb=d7b57c65075000d84a930fad15d98217c4695337;hp=b9fc7bd67ca8a778a30c632f55f1806119766960;hpb=3602e107493f42e5f470fc9b8b504a4a7798a53f;p=e-mobility-charging-stations-simulator.git diff --git a/src/utils/Configuration.ts b/src/utils/Configuration.ts index b9fc7bd6..bf691fa8 100644 --- a/src/utils/Configuration.ts +++ b/src/utils/Configuration.ts @@ -6,7 +6,14 @@ import chalk from 'chalk'; import merge from 'just-merge'; import { Constants } from './Constants'; -import { hasOwnProp, isCFEnvironment, isNotEmptyString, isUndefined } from './Utils'; +import { + hasOwnProp, + isCFEnvironment, + isNotEmptyString, + isUndefined, + logPrefix, + once, +} from './Utils'; import { ApplicationProtocol, type ConfigurationData, @@ -53,8 +60,6 @@ export class Configuration { [ConfigurationSection.uiServer, Configuration.buildUIServerSection()], ]); - private static warnDeprecatedConfigurationKeys = false; - private static configurationChangeCallback?: () => Promise; private constructor() { @@ -74,21 +79,19 @@ export class Configuration { return Configuration.configurationSectionCache.get(sectionName) as T; } - public static getAutoReconnectMaxRetries(): number | undefined { - if (hasOwnProp(Configuration.getConfigurationData(), 'autoReconnectMaxRetries')) { - return Configuration.getConfigurationData()?.autoReconnectMaxRetries; - } - } - public static getStationTemplateUrls(): StationTemplateUrl[] | undefined { - Configuration.checkDeprecatedConfigurationKeys(); + const checkDeprecatedConfigurationKeysOnce = once( + Configuration.checkDeprecatedConfigurationKeys.bind(Configuration), + Configuration, + ); + checkDeprecatedConfigurationKeysOnce(); return Configuration.getConfigurationData()?.stationTemplateUrls; } public static getSupervisionUrls(): string | string[] | undefined { if ( !isUndefined( - Configuration.getConfigurationData()!['supervisionURLs' as keyof ConfigurationData], + Configuration.getConfigurationData()?.['supervisionURLs' as keyof ConfigurationData], ) ) { Configuration.getConfigurationData()!.supervisionUrls = Configuration.getConfigurationData()![ @@ -118,6 +121,10 @@ export class Configuration { ); } + private static logPrefix = (): string => { + return logPrefix(' Simulator configuration |'); + }; + private static isConfigurationSectionCached(sectionName: ConfigurationSection): boolean { return Configuration.configurationSectionCache.has(sectionName); } @@ -291,14 +298,7 @@ export class Configuration { return workerConfiguration; } - private static logPrefix = (): string => { - return `${new Date().toLocaleString()} Simulator configuration |`; - }; - private static checkDeprecatedConfigurationKeys() { - if (Configuration.warnDeprecatedConfigurationKeys) { - return; - } // connection timeout Configuration.warnDeprecatedConfigurationKey( 'autoReconnectTimeout', @@ -323,15 +323,15 @@ export class Configuration { "Use 'stationTemplateUrls' instead", ); !isUndefined( - Configuration.getConfigurationData()!['stationTemplateURLs' as keyof ConfigurationData], + Configuration.getConfigurationData()?.['stationTemplateURLs' as keyof ConfigurationData], ) && (Configuration.getConfigurationData()!.stationTemplateUrls = Configuration.getConfigurationData()![ 'stationTemplateURLs' as keyof ConfigurationData ] as StationTemplateUrl[]); - Configuration.getConfigurationData()!.stationTemplateUrls.forEach( + Configuration.getConfigurationData()?.stationTemplateUrls.forEach( (stationTemplateUrl: StationTemplateUrl) => { - if (!isUndefined(stationTemplateUrl['numberOfStation' as keyof StationTemplateUrl])) { + if (!isUndefined(stationTemplateUrl?.['numberOfStation' as keyof StationTemplateUrl])) { console.error( `${chalk.green(Configuration.logPrefix())} ${chalk.red( `Deprecated configuration key 'numberOfStation' usage for template file '${stationTemplateUrl.file}' in 'stationTemplateUrls'. Use 'numberOfStations' instead`, @@ -473,7 +473,6 @@ export class Configuration { )}`, ); } - Configuration.warnDeprecatedConfigurationKeys = true; } private static warnDeprecatedConfigurationKey( @@ -483,14 +482,16 @@ export class Configuration { ) { if ( sectionName && - !isUndefined(Configuration.getConfigurationData()![sectionName as keyof ConfigurationData]) && + !isUndefined( + Configuration.getConfigurationData()?.[sectionName as keyof ConfigurationData], + ) && !isUndefined( ( - Configuration.getConfigurationData()![sectionName as keyof ConfigurationData] as Record< + Configuration.getConfigurationData()?.[sectionName as keyof ConfigurationData] as Record< string, unknown > - )[key], + )?.[key], ) ) { console.error( @@ -501,7 +502,7 @@ export class Configuration { )}`, ); } else if ( - !isUndefined(Configuration.getConfigurationData()![key as keyof ConfigurationData]) + !isUndefined(Configuration.getConfigurationData()?.[key as keyof ConfigurationData]) ) { console.error( `${chalk.green(Configuration.logPrefix())} ${chalk.red( @@ -561,9 +562,9 @@ export class Configuration { file: string, fileType: FileType, error: NodeJS.ErrnoException, - logPrefix: string, + logPfx: string, ): void { - const prefix = isNotEmptyString(logPrefix) ? `${logPrefix} ` : ''; + const prefix = isNotEmptyString(logPfx) ? `${logPfx} ` : ''; let logMsg: string; switch (error.code) { case 'ENOENT':