1 import { clone
} from
'rambda'
3 import type { ChargingStation
} from
'../charging-station/index.js'
5 type ChargingStationData
,
6 type ChargingStationWorkerMessage
,
7 ChargingStationWorkerMessageEvents
,
9 } from
'../types/index.js'
11 buildChargingStationAutomaticTransactionGeneratorConfiguration
,
12 buildConnectorsStatus
,
15 } from
'./ChargingStationConfigurationUtils.js'
17 export const buildAddedMessage
= (
18 chargingStation
: ChargingStation
19 ): ChargingStationWorkerMessage
<ChargingStationData
> => {
21 event
: ChargingStationWorkerMessageEvents
.added
,
22 data
: buildChargingStationDataPayload(chargingStation
)
26 export const buildDeletedMessage
= (
27 chargingStation
: ChargingStation
28 ): ChargingStationWorkerMessage
<ChargingStationData
> => {
30 event
: ChargingStationWorkerMessageEvents
.deleted
,
31 data
: buildChargingStationDataPayload(chargingStation
)
35 export const buildStartedMessage
= (
36 chargingStation
: ChargingStation
37 ): ChargingStationWorkerMessage
<ChargingStationData
> => {
39 event
: ChargingStationWorkerMessageEvents
.started
,
40 data
: buildChargingStationDataPayload(chargingStation
)
44 export const buildStoppedMessage
= (
45 chargingStation
: ChargingStation
46 ): ChargingStationWorkerMessage
<ChargingStationData
> => {
48 event
: ChargingStationWorkerMessageEvents
.stopped
,
49 data
: buildChargingStationDataPayload(chargingStation
)
53 export const buildUpdatedMessage
= (
54 chargingStation
: ChargingStation
55 ): ChargingStationWorkerMessage
<ChargingStationData
> => {
57 event
: ChargingStationWorkerMessageEvents
.updated
,
58 data
: buildChargingStationDataPayload(chargingStation
)
62 export const buildPerformanceStatisticsMessage
= (
63 statistics
: Statistics
64 ): ChargingStationWorkerMessage
<Statistics
> => {
66 event
: ChargingStationWorkerMessageEvents
.performanceStatistics
,
67 // FIXME: CircularBuffer is not structured-cloneable, rambda clone strips the whole statisticsData Map
68 data
: clone(statistics
)
72 const buildChargingStationDataPayload
= (chargingStation
: ChargingStation
): ChargingStationData
=> {
74 started
: chargingStation
.started
,
75 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
76 stationInfo
: chargingStation
.stationInfo
!,
77 connectors
: buildConnectorsStatus(chargingStation
),
78 evses
: buildEvsesStatus(chargingStation
, OutputFormat
.worker
),
79 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
80 ocppConfiguration
: chargingStation
.ocppConfiguration
!,
81 supervisionUrl
: chargingStation
.wsConnectionUrl
.href
,
82 wsState
: chargingStation
.wsConnection
?.readyState
,
83 bootNotificationResponse
: chargingStation
.bootNotificationResponse
,
84 ...(chargingStation
.automaticTransactionGenerator
!= null && {
85 automaticTransactionGenerator
:
86 buildChargingStationAutomaticTransactionGeneratorConfiguration(chargingStation
)