refactor: factor out performance records JSON file path building
[e-mobility-charging-stations-simulator.git] / src / charging-station / Bootstrap.ts
index f53225324ae21083fe0d82f6aa27363cb3523279..653a8ddbc1f85fdcd84b29a47b278e44864385bf 100644 (file)
@@ -2,12 +2,12 @@
 
 import path from 'node:path';
 import { fileURLToPath } from 'node:url';
-import { type Worker, isMainThread } from 'worker_threads';
+import { type Worker, isMainThread } from 'node:worker_threads';
 
 import chalk from 'chalk';
 
 import { type AbstractUIServer, ChargingStationUtils, UIServerFactory } from './internal';
-import { version } from '../../package.json';
+import packageJson from '../../package.json' assert { type: 'json' };
 import { BaseError } from '../exception';
 import { type Storage, StorageFactory } from '../performance';
 import {
@@ -19,9 +19,7 @@ import {
   type StationTemplateUrl,
   type Statistics,
 } from '../types';
-import { Configuration } from '../utils/Configuration';
-import { logger } from '../utils/Logger';
-import { Utils } from '../utils/Utils';
+import { Configuration, Utils, logger } from '../utils';
 import { type MessageHandler, type WorkerAbstract, WorkerFactory } from '../worker';
 
 const moduleName = 'Bootstrap';
@@ -39,7 +37,7 @@ export class Bootstrap {
   private readonly uiServer!: AbstractUIServer | null;
   private readonly storage!: Storage;
   private numberOfStartedChargingStations!: number;
-  private readonly version: string = version;
+  private readonly version: string = packageJson.version;
   private initializedCounters: boolean;
   private started: boolean;
   private readonly workerScript: string;
@@ -172,16 +170,16 @@ export class Bootstrap {
     // );
     try {
       switch (msg.id) {
-        case ChargingStationWorkerMessageEvents.STARTED:
+        case ChargingStationWorkerMessageEvents.started:
           this.workerEventStarted(msg.data as ChargingStationData);
           break;
-        case ChargingStationWorkerMessageEvents.STOPPED:
+        case ChargingStationWorkerMessageEvents.stopped:
           this.workerEventStopped(msg.data as ChargingStationData);
           break;
-        case ChargingStationWorkerMessageEvents.UPDATED:
+        case ChargingStationWorkerMessageEvents.updated:
           this.workerEventUpdated(msg.data as ChargingStationData);
           break;
-        case ChargingStationWorkerMessageEvents.PERFORMANCE_STATISTICS:
+        case ChargingStationWorkerMessageEvents.performanceStatistics:
           this.workerEventPerformanceStatistics(msg.data as Statistics);
           break;
         default:
@@ -238,9 +236,9 @@ export class Bootstrap {
       const stationTemplateUrls = Configuration.getStationTemplateUrls();
       if (Utils.isNotEmptyArray(stationTemplateUrls)) {
         this.numberOfChargingStationTemplates = stationTemplateUrls.length;
-        stationTemplateUrls.forEach((stationTemplateUrl) => {
+        for (const stationTemplateUrl of stationTemplateUrls) {
           this.numberOfChargingStations += stationTemplateUrl.numberOfStations ?? 0;
-        });
+        }
       } else {
         console.warn(
           chalk.yellow("'stationTemplateUrls' not defined or empty in configuration, exiting")