fix(simulator): make the modules export/import a bit less sensitive to
[e-mobility-charging-stations-simulator.git] / src / charging-station / AutomaticTransactionGenerator.ts
index 2774149e8be144cfac1cf11a2b4c4748be9879fe..e6b3dbf457fc0cde4bec0abb052d6453b2eb1fa8 100644 (file)
@@ -2,32 +2,30 @@
 
 import { AsyncResource } from 'async_hooks';
 
-import type ChargingStation from './ChargingStation';
+import type { ChargingStation } from './ChargingStation';
 import { ChargingStationUtils } from './ChargingStationUtils';
-import BaseError from '../exception/BaseError';
-import PerformanceStatistics from '../performance/PerformanceStatistics';
-import {
-  type AutomaticTransactionGeneratorConfiguration,
-  IdTagDistribution,
-  type Status,
-} from '../types/AutomaticTransactionGenerator';
-import { RequestCommand } from '../types/ocpp/Requests';
+import { BaseError } from '../exception';
+import { PerformanceStatistics } from '../performance';
 import {
   AuthorizationStatus,
   type AuthorizeRequest,
   type AuthorizeResponse,
+  type AutomaticTransactionGeneratorConfiguration,
+  IdTagDistribution,
+  RequestCommand,
   type StartTransactionRequest,
   type StartTransactionResponse,
+  type Status,
   StopTransactionReason,
   type StopTransactionResponse,
-} from '../types/ocpp/Transaction';
-import Constants from '../utils/Constants';
-import logger from '../utils/Logger';
-import Utils from '../utils/Utils';
+} from '../types';
+import { Constants } from '../utils/Constants';
+import { logger } from '../utils/Logger';
+import { Utils } from '../utils/Utils';
 
 const moduleName = 'AutomaticTransactionGenerator';
 
-export default class AutomaticTransactionGenerator extends AsyncResource {
+export class AutomaticTransactionGenerator extends AsyncResource {
   private static readonly instances: Map<string, AutomaticTransactionGenerator> = new Map<
     string,
     AutomaticTransactionGenerator
@@ -222,7 +220,7 @@ export default class AutomaticTransactionGenerator extends AsyncResource {
           logger.info(
             `${this.logPrefix(connectorId)} transaction ${this.chargingStation
               .getConnectorStatus(connectorId)
-              .transactionId.toString()} started and will stop in ${Utils.formatDurationMilliSeconds(
+              ?.transactionId?.toString()} started and will stop in ${Utils.formatDurationMilliSeconds(
               waitTrxEnd
             )}`
           );
@@ -266,8 +264,8 @@ export default class AutomaticTransactionGenerator extends AsyncResource {
   private setStartConnectorStatus(connectorId: number): void {
     this.connectorsStatus.get(connectorId).skippedConsecutiveTransactions = 0;
     const previousRunDuration =
-      this?.connectorsStatus.get(connectorId)?.startDate &&
-      this?.connectorsStatus.get(connectorId)?.lastRunDate
+      this.connectorsStatus.get(connectorId)?.startDate &&
+      this.connectorsStatus.get(connectorId)?.lastRunDate
         ? this.connectorsStatus.get(connectorId).lastRunDate.getTime() -
           this.connectorsStatus.get(connectorId).startDate.getTime()
         : 0;
@@ -387,7 +385,7 @@ export default class AutomaticTransactionGenerator extends AsyncResource {
       const transactionId = this.chargingStation.getConnectorStatus(connectorId)?.transactionId;
       logger.warn(
         `${this.logPrefix(connectorId)} stopping a not started transaction${
-          transactionId ? ` ${transactionId.toString()}` : ''
+          !Utils.isNullOrUndefined(transactionId) ? ` ${transactionId?.toString()}` : ''
         }`
       );
     }
@@ -434,13 +432,13 @@ export default class AutomaticTransactionGenerator extends AsyncResource {
     }
   }
 
-  private logPrefix(connectorId?: number): string {
+  private logPrefix = (connectorId?: number): string => {
     return Utils.logPrefix(
       ` ${this.chargingStation.stationInfo.chargingStationId} | ATG${
         connectorId !== undefined ? ` on connector #${connectorId.toString()}` : ''
       }:`
     );
-  }
+  };
 
   private handleStartTransactionResponse(
     connectorId: number,