refactor: cleanup worker related type definitions
[e-mobility-charging-stations-simulator.git] / src / types / ChargingStationWorker.ts
index a48e07688f4df67b21eee449fa407c3ba85518de..4d47a5e3698bb96a5bad1e9f3093af396993be32 100644 (file)
@@ -1,24 +1,68 @@
-import { WorkerData, WorkerMessage, WorkerMessageEvents } from './Worker';
+import type { WebSocket } from 'ws'
+
+import type { WorkerData } 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'
+
+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;
+  index: number
+  templateFile: string
+  options?: ChargingStationOptions
 }
 
-enum InternalChargingStationWorkerMessageEvents {
-  STARTED = 'started',
-  STOPPED = 'stopped',
-  PERFORMANCE_STATISTICS = 'performanceStatistics'
+export type EvseStatusWorkerType = Omit<EvseStatus, 'connectors'> & {
+  connectors?: ConnectorStatus[]
 }
 
-export type ChargingStationWorkerMessageEvents = WorkerMessageEvents | InternalChargingStationWorkerMessageEvents;
+export interface ChargingStationData extends WorkerData {
+  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
+}
+
+enum ChargingStationMessageEvents {
+  performanceStatistics = 'performanceStatistics'
+}
 
 export const ChargingStationWorkerMessageEvents = {
-  ...WorkerMessageEvents,
-  ...InternalChargingStationWorkerMessageEvents
-};
+  ...ChargingStationEvents,
+  ...ChargingStationMessageEvents
+} as const
+// eslint-disable-next-line @typescript-eslint/no-redeclare
+export type ChargingStationWorkerMessageEvents =
+  | ChargingStationEvents
+  | ChargingStationMessageEvents
 
+export type ChargingStationWorkerMessageData = ChargingStationData | Statistics
 
-export interface ChargingStationWorkerMessage extends Omit<WorkerMessage, 'id'> {
-  id: ChargingStationWorkerMessageEvents;
+export interface ChargingStationWorkerMessage<T extends ChargingStationWorkerMessageData> {
+  event: ChargingStationWorkerMessageEvents
+  data: T
 }