refactor: cleanup imports
[e-mobility-charging-stations-simulator.git] / src / utils / Configuration.ts
index 4f5e1ef143d96baf2828b3ce7169315049eec493..e115aeb324a12b9709682f49855e3eacadb9856f 100644 (file)
@@ -1,5 +1,5 @@
-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';
@@ -23,13 +23,13 @@ import {
 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>;
 
@@ -178,7 +178,7 @@ export class Configuration {
     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',
@@ -234,7 +234,7 @@ export class Configuration {
     const logConfiguration: LogConfiguration = {
       ...defaultLogConfiguration,
       ...deprecatedLogConfiguration,
-      ...Configuration.getConfig()?.log,
+      ...(Utils.hasOwnProp(Configuration.getConfig(), 'log') && Configuration.getConfig()?.log),
     };
     return logConfiguration;
   }
@@ -321,7 +321,8 @@ export class Configuration {
     const workerConfiguration: WorkerConfiguration = {
       ...defaultWorkerConfiguration,
       ...deprecatedWorkerConfiguration,
-      ...Configuration.getConfig()?.worker,
+      ...(Utils.hasOwnProp(Configuration.getConfig(), 'worker') &&
+        Configuration.getConfig()?.worker),
     };
     return workerConfiguration;
   }
@@ -403,7 +404,7 @@ export class Configuration {
     if (!Configuration.configuration) {
       try {
         Configuration.configuration = JSON.parse(
-          fs.readFileSync(Configuration.configurationFile, 'utf8')
+          readFileSync(Configuration.configurationFile, 'utf8')
         ) as ConfigurationData;
       } catch (error) {
         Configuration.handleFileException(
@@ -420,9 +421,9 @@ export class Configuration {
     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;
@@ -475,11 +476,11 @@ export class Configuration {
     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}'`);
@@ -487,9 +488,6 @@ export class Configuration {
   }
 
   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)}`;
   }
 }