refactor(simulator): remove unused async lock class attribute
[e-mobility-charging-stations-simulator.git] / src / utils / FileUtils.ts
index b057d7f7e844b4684f823903bc22a60f98e200dd..4e556a4bc1c3d642c8c9edecbb92049d5e880044 100644 (file)
@@ -1,36 +1,44 @@
-import { EmptyObject } from '../types/EmptyObject';
-import { FileType } from '../types/FileType';
-import { HandleErrorParams } from '../types/Error';
-import { JsonType } from '../types/JsonType';
-import Utils from './Utils';
-import chalk from 'chalk';
-import fs from 'fs';
-import logger from './Logger';
+import fs from 'node:fs';
 
-export default class FileUtils {
-  static watchJsonFile<T extends JsonType>(
-    logPrefix: string,
-    fileType: FileType,
+import { ErrorUtils } from './ErrorUtils';
+import { logger } from './Logger';
+import { Utils } from './Utils';
+import type { FileType, JsonType } from '../types';
+
+export class FileUtils {
+  private constructor() {
+    // This is intentional
+  }
+
+  public static watchJsonFile<T extends JsonType>(
     file: string,
-    attribute?: T,
+    fileType: FileType,
+    logPrefix: string,
+    refreshedVariable?: T,
     listener: fs.WatchListener<string> = (event, filename) => {
-      if (filename && event === 'change') {
+      if (Utils.isNotEmptyString(filename) && event === 'change') {
         try {
-          logger.debug(logPrefix + ' ' + fileType + ' file ' + file + ' have changed, reload');
-          attribute && (attribute = JSON.parse(fs.readFileSync(file, 'utf8')) as T);
+          logger.debug(`${logPrefix} ${fileType} file ${file} have changed, reload`);
+          refreshedVariable && (refreshedVariable = JSON.parse(fs.readFileSync(file, 'utf8')) as T);
         } catch (error) {
-          FileUtils.handleFileException(logPrefix, fileType, file, error as NodeJS.ErrnoException, {
-            throwError: false,
-          });
+          ErrorUtils.handleFileException(
+            file,
+            fileType,
+            error as NodeJS.ErrnoException,
+            logPrefix,
+            {
+              throwError: false,
+            }
+          );
         }
       }
     }
-  ) {
-    if (file) {
+  ): fs.FSWatcher | undefined {
+    if (Utils.isNotEmptyString(file)) {
       try {
-        fs.watch(file, listener);
+        return fs.watch(file, listener);
       } catch (error) {
-        FileUtils.handleFileException(logPrefix, fileType, file, error as NodeJS.ErrnoException, {
+        ErrorUtils.handleFileException(file, fileType, error as NodeJS.ErrnoException, logPrefix, {
           throwError: false,
         });
       }
@@ -38,54 +46,4 @@ export default class FileUtils {
       logger.info(`${logPrefix} No ${fileType} file to watch given. Not monitoring its changes`);
     }
   }
-
-  static handleFileException(
-    logPrefix: string,
-    fileType: FileType,
-    file: string,
-    error: NodeJS.ErrnoException,
-    params: HandleErrorParams<EmptyObject> = { throwError: true, consoleOut: false }
-  ): void {
-    const prefix = !Utils.isEmptyString(logPrefix) ? logPrefix + ' ' : '';
-    if (error.code === 'ENOENT') {
-      if (params?.consoleOut) {
-        console.warn(
-          chalk.green(prefix) + chalk.yellow(fileType + ' file ' + file + ' not found: '),
-          error
-        );
-      } else {
-        logger.warn(prefix + fileType + ' file ' + file + ' not found: %j', error);
-      }
-    } else if (error.code === 'EEXIST') {
-      if (params?.consoleOut) {
-        console.warn(
-          chalk.green(prefix) + chalk.yellow(fileType + ' file ' + file + ' already exists: '),
-          error
-        );
-      } else {
-        logger.warn(prefix + fileType + ' file ' + file + ' already exists: %j', error);
-      }
-    } else if (error.code === 'EACCES') {
-      if (params?.consoleOut) {
-        console.warn(
-          chalk.green(prefix) + chalk.yellow(fileType + ' file ' + file + ' access denied: '),
-          error
-        );
-      } else {
-        logger.warn(prefix + fileType + ' file ' + file + ' access denied: %j', error);
-      }
-    } else {
-      if (params?.consoleOut) {
-        console.warn(
-          chalk.green(prefix) + chalk.yellow(fileType + ' file ' + file + ' error: '),
-          error
-        );
-      } else {
-        logger.warn(prefix + fileType + ' file ' + file + ' error: %j', error);
-      }
-      if (params?.throwError) {
-        throw error;
-      }
-    }
-  }
 }