feat: ensure charging station add op return its station info
[e-mobility-charging-stations-simulator.git] / src / types / ChargingStationWorker.ts
index 64849fc1aaad5af2ccfde7a2653021a109831362..c6fd0af2afdb84bb83cd354a4e00f8a3369d85c8 100644 (file)
@@ -1,64 +1,83 @@
-import type { WebSocket } from 'ws';
+import type { WebSocket } from 'ws'
 
-import type { ChargingStationAutomaticTransactionGeneratorConfiguration } from './AutomaticTransactionGenerator';
-import { ChargingStationEvents } from './ChargingStationEvents';
-import type { ChargingStationInfo } from './ChargingStationInfo';
-import type { ChargingStationOcppConfiguration } from './ChargingStationOcppConfiguration';
-import type { ConnectorStatus } from './ConnectorStatus';
-import type { EvseStatus } from './Evse';
-import type { JsonObject } from './JsonType';
-import type { BootNotificationResponse } from './ocpp/Responses';
-import type { Statistics } from './Statistics';
-import { type WorkerData, type WorkerMessage, WorkerMessageEvents } from '../worker';
+import { type WorkerData, type WorkerMessage, WorkerMessageEvents } from '../worker/index.js'
+import type { ChargingStationAutomaticTransactionGeneratorConfiguration } from './AutomaticTransactionGenerator.js'
+import { ChargingStationEvents } from './ChargingStationEvents.js'
+import type { ChargingStationInfo } from './ChargingStationInfo.js'
+import type { ChargingStationOcppConfiguration } from './ChargingStationOcppConfiguration.js'
+import type { ConnectorStatus } from './ConnectorStatus.js'
+import type { EvseStatus } from './Evse.js'
+import type { JsonObject } from './JsonType.js'
+import type { BootNotificationResponse } from './ocpp/Responses.js'
+import type { Statistics } from './Statistics.js'
 
-interface ChargingStationWorkerOptions extends JsonObject {
-  elementStartDelay?: number;
+export interface ChargingStationOptions extends JsonObject {
+  supervisionUrls?: string | string[]
+  persistentConfiguration?: boolean
+  autoStart?: boolean
+  autoRegister?: boolean
+  enableStatistics?: boolean
+  ocppStrictCompliance?: boolean
+  stopTransactionsOnStopped?: boolean
 }
 
 export interface ChargingStationWorkerData extends WorkerData {
-  index: number;
-  templateFile: string;
-  chargingStationWorkerOptions?: ChargingStationWorkerOptions;
+  index: number
+  templateFile: string
+  options?: ChargingStationOptions
 }
 
 export type EvseStatusWorkerType = Omit<EvseStatus, 'connectors'> & {
-  connectors?: ConnectorStatus[];
-};
+  connectors?: ConnectorStatus[]
+}
 
 export interface ChargingStationData extends WorkerData {
-  started: boolean;
-  stationInfo: ChargingStationInfo;
-  connectors: ConnectorStatus[];
-  evses: EvseStatusWorkerType[];
-  ocppConfiguration: ChargingStationOcppConfiguration;
+  started: boolean
+  stationInfo: ChargingStationInfo
+  connectors: ConnectorStatus[]
+  evses: EvseStatusWorkerType[]
+  ocppConfiguration: ChargingStationOcppConfiguration
+  supervisionUrl: string
   wsState?:
-    | typeof WebSocket.CONNECTING
-    | typeof WebSocket.OPEN
-    | typeof WebSocket.CLOSING
-    | typeof WebSocket.CLOSED;
-  bootNotificationResponse?: BootNotificationResponse;
-  automaticTransactionGenerator?: ChargingStationAutomaticTransactionGeneratorConfiguration;
+  | typeof WebSocket.CONNECTING
+  | typeof WebSocket.OPEN
+  | typeof WebSocket.CLOSING
+  | typeof WebSocket.CLOSED
+  bootNotificationResponse?: BootNotificationResponse
+  automaticTransactionGenerator?: ChargingStationAutomaticTransactionGeneratorConfiguration
 }
 
 enum ChargingStationMessageEvents {
-  performanceStatistics = 'performanceStatistics',
+  performanceStatistics = 'performanceStatistics'
 }
 
 export const ChargingStationWorkerMessageEvents = {
   ...WorkerMessageEvents,
   ...ChargingStationEvents,
-  ...ChargingStationMessageEvents,
-} as const;
+  ...ChargingStationMessageEvents
+} as const
+// eslint-disable-next-line @typescript-eslint/no-redeclare
 export type ChargingStationWorkerMessageEvents =
   | WorkerMessageEvents
   | ChargingStationEvents
-  | ChargingStationMessageEvents;
+  | ChargingStationMessageEvents
+
+export interface ChargingStationWorkerEventError extends WorkerData {
+  event: WorkerMessageEvents
+  name: string
+  message: string
+  stack?: string
+}
 
-export type ChargingStationWorkerMessageData = ChargingStationData | Statistics;
+export type ChargingStationWorkerMessageData =
+  | ChargingStationInfo
+  | ChargingStationData
+  | Statistics
+  | ChargingStationWorkerEventError
 
 export type ChargingStationWorkerMessage<T extends ChargingStationWorkerMessageData> = Omit<
-  WorkerMessage<T>,
-  'event'
+WorkerMessage<T>,
+'event'
 > & {
-  event: ChargingStationWorkerMessageEvents;
-};
+  event: ChargingStationWorkerMessageEvents
+}