-import fs from 'node:fs';
-import path from 'node:path';
+import { type FSWatcher, readFileSync, watch } from 'node:fs';
+import { dirname, join, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
import chalk from 'chalk';
import { WorkerConstants, WorkerProcessType } from '../worker';
export class Configuration {
- private static configurationFile = path.join(
- path.dirname(fileURLToPath(import.meta.url)),
+ private static configurationFile = join(
+ dirname(fileURLToPath(import.meta.url)),
'assets',
'config.json'
);
- private static configurationFileWatcher: fs.FSWatcher | undefined;
+ private static configurationFileWatcher: FSWatcher | undefined;
private static configuration: ConfigurationData | null = null;
private static configurationChangeCallback: () => Promise<void>;
Configuration.warnDeprecatedConfigurationKey(
'logRotate',
undefined,
- "Use 'log' section to define the log rotation instead"
+ "Use 'log' section to define the log rotation enablement instead"
);
Configuration.warnDeprecatedConfigurationKey(
'logMaxFiles',
const logConfiguration: LogConfiguration = {
...defaultLogConfiguration,
...deprecatedLogConfiguration,
- ...Configuration.getConfig()?.log,
+ ...(Utils.hasOwnProp(Configuration.getConfig(), 'log') && Configuration.getConfig()?.log),
};
return logConfiguration;
}
const workerConfiguration: WorkerConfiguration = {
...defaultWorkerConfiguration,
...deprecatedWorkerConfiguration,
- ...Configuration.getConfig()?.worker,
+ ...(Utils.hasOwnProp(Configuration.getConfig(), 'worker') &&
+ Configuration.getConfig()?.worker),
};
return workerConfiguration;
}
if (!Configuration.configuration) {
try {
Configuration.configuration = JSON.parse(
- fs.readFileSync(Configuration.configurationFile, 'utf8')
+ readFileSync(Configuration.configurationFile, 'utf8')
) as ConfigurationData;
} catch (error) {
Configuration.handleFileException(
return Configuration.configuration;
}
- private static getConfigurationFileWatcher(): fs.FSWatcher | undefined {
+ private static getConfigurationFileWatcher(): FSWatcher | undefined {
try {
- return fs.watch(Configuration.configurationFile, (event, filename): void => {
+ return watch(Configuration.configurationFile, (event, filename): void => {
if (filename?.trim().length > 0 && event === 'change') {
// Nullify to force configuration file reading
Configuration.configuration = null;
switch (storageType) {
case StorageType.JSON_FILE:
return Configuration.buildPerformanceUriFilePath(
- Constants.DEFAULT_PERFORMANCE_RECORDS_FILENAME
+ `${Constants.DEFAULT_PERFORMANCE_DIRECTORY}/${Constants.DEFAULT_PERFORMANCE_RECORDS_FILENAME}`
);
case StorageType.SQLITE:
return Configuration.buildPerformanceUriFilePath(
- `${Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME}.db`
+ `${Constants.DEFAULT_PERFORMANCE_DIRECTORY}/${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
- )}`;
+ return `file://${join(resolve(dirname(fileURLToPath(import.meta.url)), '../'), file)}`;
}
}