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