import merge from 'just-merge';
import { WorkerChoiceStrategies } from 'poolifier';
-// import { Constants, FileUtils, Utils } from './internal';
import { Constants } from './Constants';
-import { FileUtils } from './FileUtils';
import { Utils } from './Utils';
import {
ApplicationProtocol,
storageConfiguration = {
...storageConfiguration,
...Configuration.getConfig()?.performanceStorage,
+ ...(Configuration.getConfig()?.performanceStorage?.type === StorageType.JSON_FILE &&
+ Configuration.getConfig()?.performanceStorage?.uri && {
+ uri: Configuration.buildPerformanceUriFilePath(
+ new URL(Configuration.getConfig()?.performanceStorage?.uri).pathname
+ ),
+ }),
};
}
return storageConfiguration;
(Configuration.getConfig().stationTemplateUrls = Configuration.getConfig()[
'stationTemplateURLs'
] as StationTemplateUrl[]);
- Configuration.getConfig().stationTemplateUrls.forEach((stationUrl: StationTemplateUrl) => {
- if (!Utils.isUndefined(stationUrl['numberOfStation'])) {
- console.error(
- chalk`{green ${Configuration.logPrefix()}} {red Deprecated configuration key 'numberOfStation' usage for template file '${
- stationUrl.file
- }' in 'stationTemplateUrls'. Use 'numberOfStations' instead}`
- );
+ Configuration.getConfig().stationTemplateUrls.forEach(
+ (stationTemplateUrl: StationTemplateUrl) => {
+ if (!Utils.isUndefined(stationTemplateUrl['numberOfStation'])) {
+ console.error(
+ chalk`{green ${Configuration.logPrefix()}} {red Deprecated configuration key 'numberOfStation' usage for template file '${
+ stationTemplateUrl.file
+ }' in 'stationTemplateUrls'. Use 'numberOfStations' instead}`
+ );
+ }
}
- });
+ );
// Read conf
return Configuration.getConfig()?.stationTemplateUrls;
}
) {
console.error(
chalk`{green ${Configuration.logPrefix()}} {red Deprecated configuration key '${key}' usage in section '${sectionName}'${
- logMsgToAppend.trim().length > 0 && `. ${logMsgToAppend}`
+ logMsgToAppend.trim().length > 0 ? `. ${logMsgToAppend}` : ''
}}`
);
} else if (!Utils.isUndefined(Configuration.getConfig()[key])) {
console.error(
chalk`{green ${Configuration.logPrefix()}} {red Deprecated configuration key '${key}' usage${
- logMsgToAppend.trim().length > 0 && `. ${logMsgToAppend}`
+ logMsgToAppend.trim().length > 0 ? `. ${logMsgToAppend}` : ''
}}`
);
}
fs.readFileSync(Configuration.configurationFile, 'utf8')
) as ConfigurationData;
} catch (error) {
- FileUtils.handleFileException(
+ Configuration.handleFileException(
Configuration.configurationFile,
FileType.Configuration,
error as NodeJS.ErrnoException,
- Configuration.logPrefix(),
- { consoleOut: true }
+ Configuration.logPrefix()
);
}
if (!Configuration.configurationFileWatcher) {
}
});
} catch (error) {
- FileUtils.handleFileException(
+ Configuration.handleFileException(
Configuration.configurationFile,
FileType.Configuration,
error as NodeJS.ErrnoException,
- Configuration.logPrefix(),
- { consoleOut: true }
+ Configuration.logPrefix()
);
}
}
+ private static handleFileException(
+ file: string,
+ fileType: FileType,
+ error: NodeJS.ErrnoException,
+ logPrefix: string
+ ): void {
+ const prefix = Utils.isNotEmptyString(logPrefix) ? `${logPrefix} ` : '';
+ let logMsg: string;
+ switch (error.code) {
+ case 'ENOENT':
+ logMsg = `${fileType} file ${file} not found:`;
+ break;
+ case 'EEXIST':
+ logMsg = `${fileType} file ${file} already exists:`;
+ break;
+ case 'EACCES':
+ logMsg = `${fileType} file ${file} access denied:`;
+ break;
+ default:
+ logMsg = `${fileType} file ${file} error:`;
+ }
+ console.warn(`${chalk.green(prefix)}${chalk.yellow(`${logMsg} `)}`, error);
+ }
+
private static getDefaultPerformanceStorageUri(storageType: StorageType) {
switch (storageType) {
case StorageType.JSON_FILE:
- return `file://${path.join(
- path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../'),
+ return Configuration.buildPerformanceUriFilePath(
Constants.DEFAULT_PERFORMANCE_RECORDS_FILENAME
- )}`;
+ );
case StorageType.SQLITE:
- return `file://${path.join(
- path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../'),
+ return Configuration.buildPerformanceUriFilePath(
`${Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME}.db`
- )}`;
+ );
default:
throw new Error(`Performance storage URI is mandatory with storage type '${storageType}'`);
}
}
+
+ private static buildPerformanceUriFilePath(file: string) {
+ return `file://${path.join(
+ path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../'),
+ file
+ )}`;
+ }
}