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,
[ConfigurationSection.uiServer, Configuration.buildUIServerSection()],
]);
- private static warnDeprecatedConfigurationKeys = false;
-
private static configurationChangeCallback?: () => Promise<void>;
private constructor() {
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()![
);
}
+ private static logPrefix = (): string => {
+ return logPrefix(' Simulator configuration |');
+ };
+
private static isConfigurationSectionCached(sectionName: ConfigurationSection): boolean {
return Configuration.configurationSectionCache.has(sectionName);
}
return workerConfiguration;
}
- private static logPrefix = (): string => {
- return `${new Date().toLocaleString()} Simulator configuration |`;
- };
-
private static checkDeprecatedConfigurationKeys() {
- if (Configuration.warnDeprecatedConfigurationKeys) {
- return;
- }
// connection timeout
Configuration.warnDeprecatedConfigurationKey(
'autoReconnectTimeout',
"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`,
)}`,
);
}
- Configuration.warnDeprecatedConfigurationKeys = true;
}
private static warnDeprecatedConfigurationKey(
) {
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(
)}`,
);
} else if (
- !isUndefined(Configuration.getConfigurationData()![key as keyof ConfigurationData])
+ !isUndefined(Configuration.getConfigurationData()?.[key as keyof ConfigurationData])
) {
console.error(
`${chalk.green(Configuration.logPrefix())} ${chalk.red(
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':