refactor: switch eslint configuration to strict type checking
[e-mobility-charging-stations-simulator.git] / src / utils / MessageChannelUtils.ts
1 import {
2 OutputFormat,
3 buildChargingStationAutomaticTransactionGeneratorConfiguration,
4 buildConnectorsStatus,
5 buildEvsesStatus
6 } from './ChargingStationConfigurationUtils.js'
7 import type { ChargingStation } from '../charging-station/index.js'
8 import {
9 type ChargingStationData,
10 type ChargingStationWorkerMessage,
11 ChargingStationWorkerMessageEvents,
12 type Statistics
13 } from '../types/index.js'
14
15 export const buildStartedMessage = (
16 chargingStation: ChargingStation
17 ): ChargingStationWorkerMessage<ChargingStationData> => {
18 return {
19 event: ChargingStationWorkerMessageEvents.started,
20 data: buildChargingStationDataPayload(chargingStation)
21 }
22 }
23
24 export const buildStoppedMessage = (
25 chargingStation: ChargingStation
26 ): ChargingStationWorkerMessage<ChargingStationData> => {
27 return {
28 event: ChargingStationWorkerMessageEvents.stopped,
29 data: buildChargingStationDataPayload(chargingStation)
30 }
31 }
32
33 export const buildUpdatedMessage = (
34 chargingStation: ChargingStation
35 ): ChargingStationWorkerMessage<ChargingStationData> => {
36 return {
37 event: ChargingStationWorkerMessageEvents.updated,
38 data: buildChargingStationDataPayload(chargingStation)
39 }
40 }
41
42 export const buildPerformanceStatisticsMessage = (
43 statistics: Statistics
44 ): ChargingStationWorkerMessage<Statistics> => {
45 return {
46 event: ChargingStationWorkerMessageEvents.performanceStatistics,
47 data: statistics
48 }
49 }
50
51 const buildChargingStationDataPayload = (chargingStation: ChargingStation): ChargingStationData => {
52 return {
53 started: chargingStation.started,
54 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
55 stationInfo: chargingStation.stationInfo!,
56 connectors: buildConnectorsStatus(chargingStation),
57 evses: buildEvsesStatus(chargingStation, OutputFormat.worker),
58 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
59 ocppConfiguration: chargingStation.ocppConfiguration!,
60 wsState: chargingStation.wsConnection?.readyState,
61 bootNotificationResponse: chargingStation.bootNotificationResponse,
62 ...(chargingStation.automaticTransactionGenerator != null && {
63 automaticTransactionGenerator:
64 buildChargingStationAutomaticTransactionGeneratorConfiguration(chargingStation)
65 })
66 }
67 }