refactor: refine prettier configuration
[e-mobility-charging-stations-simulator.git] / src / utils / ChargingStationConfigurationUtils.ts
1 import type { ChargingStation } from '../charging-station/index.js'
2 import type {
3 ChargingStationAutomaticTransactionGeneratorConfiguration,
4 ConnectorStatus,
5 EvseStatusConfiguration,
6 EvseStatusWorkerType
7 } from '../types/index.js'
8
9 export const buildChargingStationAutomaticTransactionGeneratorConfiguration = (
10 chargingStation: ChargingStation
11 ): ChargingStationAutomaticTransactionGeneratorConfiguration => {
12 return {
13 automaticTransactionGenerator: chargingStation.getAutomaticTransactionGeneratorConfiguration(),
14 ...(chargingStation.automaticTransactionGenerator?.connectorsStatus != null && {
15 automaticTransactionGeneratorStatuses: [
16 ...chargingStation.automaticTransactionGenerator.connectorsStatus.values()
17 ]
18 })
19 }
20 }
21
22 export const buildConnectorsStatus = (chargingStation: ChargingStation): ConnectorStatus[] => {
23 return [...chargingStation.connectors.values()].map(
24 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
25 )
26 }
27
28 export const enum OutputFormat {
29 configuration = 'configuration',
30 worker = 'worker'
31 }
32
33 export const buildEvsesStatus = (
34 chargingStation: ChargingStation,
35 outputFormat: OutputFormat = OutputFormat.configuration
36 ): Array<EvseStatusWorkerType | EvseStatusConfiguration> => {
37 // eslint-disable-next-line array-callback-return
38 return [...chargingStation.evses.values()].map(evseStatus => {
39 const connectorsStatus = [...evseStatus.connectors.values()].map(
40 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
41 )
42 let status: EvseStatusConfiguration
43 switch (outputFormat) {
44 case OutputFormat.worker:
45 return {
46 ...evseStatus,
47 connectors: connectorsStatus
48 }
49 case OutputFormat.configuration:
50 status = {
51 ...evseStatus,
52 connectorsStatus
53 }
54 delete (status as EvseStatusWorkerType).connectors
55 return status
56 }
57 })
58 }