fix: ensure constants are readonly data structures
authorJérôme Benoit <jerome.benoit@sap.com>
Tue, 18 Apr 2023 17:18:40 +0000 (19:18 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Tue, 18 Apr 2023 17:18:40 +0000 (19:18 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/charging-station/ocpp/1.6/OCPP16Constants.ts
src/charging-station/ocpp/2.0/OCPP20Constants.ts

index 2697171c372b09d4bc74eab0704236f521b30c66..5f6958817a1103d1c80317ee8654bf34df2f9d3f 100644 (file)
@@ -1,25 +1,29 @@
 import { OCPP16ChargePointStatus } from '../../../types';
 import { OCPPConstants } from '../internal';
 
-type Transition = { from?: OCPP16ChargePointStatus; to: OCPP16ChargePointStatus };
+type Transition = Readonly<{
+  from?: OCPP16ChargePointStatus;
+  to: OCPP16ChargePointStatus;
+}>;
 
 export class OCPP16Constants extends OCPPConstants {
-  static readonly ChargePointStatusChargingStationTransitions: Transition[] = [
-    { to: OCPP16ChargePointStatus.Available },
-    // { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Available },
-    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Faulted },
-    { to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Available },
-    // { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Unavailable },
-    { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Faulted },
-    { to: OCPP16ChargePointStatus.Faulted },
-    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Available },
-    { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Unavailable },
-    // { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Faulted },
-  ];
+  static readonly ChargePointStatusChargingStationTransitions: Readonly<Transition[]> =
+    Object.freeze([
+      { to: OCPP16ChargePointStatus.Available },
+      // { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Available },
+      { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Unavailable },
+      { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Faulted },
+      { to: OCPP16ChargePointStatus.Unavailable },
+      { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Available },
+      // { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Unavailable },
+      { from: OCPP16ChargePointStatus.Unavailable, to: OCPP16ChargePointStatus.Faulted },
+      { to: OCPP16ChargePointStatus.Faulted },
+      { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Available },
+      { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Unavailable },
+      // { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Faulted },
+    ]);
 
-  static readonly ChargePointStatusConnectorTransitions: Transition[] = [
+  static readonly ChargePointStatusConnectorTransitions: Readonly<Transition[]> = Object.freeze([
     { to: OCPP16ChargePointStatus.Available },
     // { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Available },
     { from: OCPP16ChargePointStatus.Available, to: OCPP16ChargePointStatus.Preparing },
@@ -110,5 +114,5 @@ export class OCPP16Constants extends OCPPConstants {
     { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Reserved },
     { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Unavailable },
     // { from: OCPP16ChargePointStatus.Faulted, to: OCPP16ChargePointStatus.Faulted },
-  ];
+  ]);
 }
index 58a1004ca90ab7a128bbe03c941c797578800408..f24cc565bca5f627781709111fd30da1a06fcf88 100644 (file)
@@ -1,10 +1,13 @@
 import { OCPP20ConnectorStatusEnumType } from '../../../types';
 import { OCPPConstants } from '../internal';
 
-type Transition = { from?: OCPP20ConnectorStatusEnumType; to: OCPP20ConnectorStatusEnumType };
+type Transition = Readonly<{
+  from?: OCPP20ConnectorStatusEnumType;
+  to: OCPP20ConnectorStatusEnumType;
+}>;
 
 export class OCPP20Constants extends OCPPConstants {
-  static readonly ChargingStationStatusTransitions: Transition[] = [
+  static readonly ChargingStationStatusTransitions: Readonly<Transition[]> = Object.freeze([
     { to: OCPP20ConnectorStatusEnumType.Available },
     // { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Available },
     {
@@ -26,9 +29,9 @@ export class OCPP20Constants extends OCPPConstants {
     { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Available },
     { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Unavailable },
     // { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Faulted },
-  ];
+  ]);
 
-  static readonly ConnectorStatusTransitions: Transition[] = [
+  static readonly ConnectorStatusTransitions: Readonly<Transition[]> = Object.freeze([
     { to: OCPP20ConnectorStatusEnumType.Available },
     // { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Available },
     { from: OCPP20ConnectorStatusEnumType.Available, to: OCPP20ConnectorStatusEnumType.Occupied },
@@ -65,5 +68,5 @@ export class OCPP20Constants extends OCPPConstants {
     { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Reserved },
     { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Unavailable },
     // { from: OCPP20ConnectorStatusEnumType.Faulted, to: OCPP20ConnectorStatusEnumType.Faulted },
-  ];
+  ]);
 }