perf: reduce OCPPUtils memory usage
[e-mobility-charging-stations-simulator.git] / src / charging-station / ocpp / 1.6 / OCPP16IncomingRequestService.ts
index 90b7d1fcaac7a25370aef76303517353b2fff198..21a6e1ece5b377925ba469643740f73e2c9f1554 100644 (file)
@@ -6,7 +6,14 @@ import { URL, fileURLToPath } from 'node:url';
 
 import type { JSONSchemaType } from 'ajv';
 import { Client, type FTPResponse } from 'basic-ftp';
-import { addSeconds, differenceInSeconds, isDate, maxTime, secondsToMilliseconds } from 'date-fns';
+import {
+  type Interval,
+  addSeconds,
+  differenceInSeconds,
+  isDate,
+  secondsToMilliseconds,
+} from 'date-fns';
+import { maxTime } from 'date-fns/constants';
 import { create } from 'tar';
 
 import { OCPP16Constants } from './OCPP16Constants';
@@ -35,7 +42,6 @@ import {
   type GetDiagnosticsRequest,
   type GetDiagnosticsResponse,
   type IncomingRequestHandler,
-  type JsonObject,
   type JsonType,
   OCPP16AuthorizationStatus,
   OCPP16AvailabilityType,
@@ -109,7 +115,7 @@ import { OCPPIncomingRequestService } from '../OCPPIncomingRequestService';
 const moduleName = 'OCPP16IncomingRequestService';
 
 export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
-  protected jsonSchemas: Map<OCPP16IncomingRequestCommand, JSONSchemaType<JsonObject>>;
+  protected jsonSchemas: Map<OCPP16IncomingRequestCommand, JSONSchemaType<JsonType>>;
   private incomingRequestHandlers: Map<OCPP16IncomingRequestCommand, IncomingRequestHandler>;
 
   public constructor() {
@@ -187,7 +193,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
         this.handleRequestCancelReservation.bind(this) as unknown as IncomingRequestHandler,
       ],
     ]);
-    this.jsonSchemas = new Map<OCPP16IncomingRequestCommand, JSONSchemaType<JsonObject>>([
+    this.jsonSchemas = new Map<OCPP16IncomingRequestCommand, JSONSchemaType<JsonType>>([
       [
         OCPP16IncomingRequestCommand.RESET,
         OCPP16ServiceUtils.parseJsonSchemaFile<ResetRequest>(
@@ -340,7 +346,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
   ): Promise<void> {
     let response: ResType;
     if (
-      chargingStation.getOcppStrictCompliance() === true &&
+      chargingStation.stationInfo?.ocppStrictCompliance === true &&
       chargingStation.inPendingState() === true &&
       (commandName === OCPP16IncomingRequestCommand.REMOTE_START_TRANSACTION ||
         commandName === OCPP16IncomingRequestCommand.REMOTE_STOP_TRANSACTION)
@@ -349,7 +355,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
         ErrorType.SECURITY_ERROR,
         `${commandName} cannot be issued to handle request PDU ${JSON.stringify(
           commandPayload,
-          null,
+          undefined,
           2,
         )} while the charging station is in pending state on the central server`,
         commandName,
@@ -358,7 +364,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
     }
     if (
       chargingStation.isRegistered() === true ||
-      (chargingStation.getOcppStrictCompliance() === false &&
+      (chargingStation.stationInfo?.ocppStrictCompliance === false &&
         chargingStation.inUnknownState() === true)
     ) {
       if (
@@ -386,7 +392,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
           ErrorType.NOT_IMPLEMENTED,
           `${commandName} is not implemented to handle request PDU ${JSON.stringify(
             commandPayload,
-            null,
+            undefined,
             2,
           )}`,
           commandName,
@@ -398,7 +404,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
         ErrorType.SECURITY_ERROR,
         `${commandName} cannot be issued to handle request PDU ${JSON.stringify(
           commandPayload,
-          null,
+          undefined,
           2,
         )} while the charging station is not registered on the central server.`,
         commandName,
@@ -512,7 +518,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
     } else if (isNotEmptyArray(key) === true) {
       for (const k of key!) {
         const keyFound = getConfigurationKey(chargingStation, k, true);
-        if (keyFound) {
+        if (keyFound !== undefined) {
           if (isUndefined(keyFound.visible) === true) {
             keyFound.visible = true;
           }
@@ -1456,7 +1462,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
               .requestHandler<OCPP16HeartbeatRequest, OCPP16HeartbeatResponse>(
                 chargingStation,
                 OCPP16RequestCommand.HEARTBEAT,
-                null,
+                undefined,
                 {
                   triggerMessage: true,
                 },