Merge branch 'main' into dependabot/github_actions/sonarsource/sonarcloud-github...
[e-mobility-charging-stations-simulator.git] / src / utils / ChargingStationConfigurationUtils.ts
index 3549fa7b634efaafc893def41ef74a68be149444..34d859c787eb54c4a87cd8d30ebdfb8d51fb88d0 100644 (file)
@@ -1,21 +1,20 @@
-import { Utils } from './Utils';
+import { isNullOrUndefined } from './Utils';
 import type { ChargingStation } from '../charging-station';
 import type {
   ChargingStationAutomaticTransactionGeneratorConfiguration,
   ConnectorStatus,
   EvseStatusConfiguration,
+  EvseStatusWorkerType,
 } from '../types';
 
 export const buildChargingStationAutomaticTransactionGeneratorConfiguration = (
-  chargingStation: ChargingStation
+  chargingStation: ChargingStation,
 ): ChargingStationAutomaticTransactionGeneratorConfiguration => {
   return {
     automaticTransactionGenerator: chargingStation.getAutomaticTransactionGeneratorConfiguration(),
-    ...(!Utils.isNullOrUndefined(
-      chargingStation.automaticTransactionGenerator?.connectorsStatus
-    ) && {
+    ...(!isNullOrUndefined(chargingStation.automaticTransactionGenerator?.connectorsStatus) && {
       automaticTransactionGeneratorStatuses: [
-        ...chargingStation.automaticTransactionGenerator.connectorsStatus.values(),
+        ...chargingStation.automaticTransactionGenerator!.connectorsStatus.values(),
       ],
     }),
   };
@@ -24,36 +23,38 @@ export const buildChargingStationAutomaticTransactionGeneratorConfiguration = (
 export const buildConnectorsStatus = (chargingStation: ChargingStation): ConnectorStatus[] => {
   return [...chargingStation.connectors.values()].map(
     // eslint-disable-next-line @typescript-eslint/no-unused-vars
-    ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
+    ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest,
   );
 };
 
 export const enum OutputFormat {
   configuration = 'configuration',
-  ipc = 'ipc',
+  worker = 'worker',
 }
 
 export const buildEvsesStatus = (
   chargingStation: ChargingStation,
-  outputFormat: OutputFormat = OutputFormat.configuration
-): EvseStatusConfiguration[] => {
+  outputFormat: OutputFormat = OutputFormat.configuration,
+): (EvseStatusWorkerType | EvseStatusConfiguration)[] => {
   return [...chargingStation.evses.values()].map((evseStatus) => {
     const connectorsStatus = [...evseStatus.connectors.values()].map(
       // eslint-disable-next-line @typescript-eslint/no-unused-vars
-      ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
+      ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest,
     );
-    if (outputFormat === OutputFormat.ipc) {
-      return {
-        ...evseStatus,
-        connectors: connectorsStatus,
-      };
-    } else if (outputFormat === OutputFormat.configuration) {
-      const status = {
-        ...evseStatus,
-        connectorsStatus,
-      };
-      delete status.connectors;
-      return status;
+    let status: EvseStatusConfiguration;
+    switch (outputFormat) {
+      case OutputFormat.worker:
+        return {
+          ...evseStatus,
+          connectors: connectorsStatus,
+        };
+      case OutputFormat.configuration:
+        status = {
+          ...evseStatus,
+          connectorsStatus,
+        };
+        delete (status as EvseStatusWorkerType).connectors;
+        return status;
     }
   });
 };