import crypto from 'node:crypto';
-import path from 'path';
-import { fileURLToPath } from 'url';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
import moment from 'moment';
-import type ChargingStation from './ChargingStation';
-import BaseError from '../exception/BaseError';
-import type { ChargingStationInfo } from '../types/ChargingStationInfo';
+import type { ChargingStation } from './internal';
+import { BaseError } from '../exception';
import {
AmpereUnits,
+ type BootNotificationRequest,
+ BootReasonEnumType,
+ type ChargingProfile,
+ ChargingProfileKindType,
+ ChargingRateUnitType,
+ type ChargingSchedulePeriod,
+ type ChargingStationInfo,
type ChargingStationTemplate,
CurrentType,
+ type OCPP16BootNotificationRequest,
+ type OCPP20BootNotificationRequest,
+ OCPPVersion,
+ RecurrencyKindType,
Voltage,
-} from '../types/ChargingStationTemplate';
-import { ChargingProfileKindType, RecurrencyKindType } from '../types/ocpp/1.6/ChargingProfile';
-import type { OCPP16BootNotificationRequest } from '../types/ocpp/1.6/Requests';
-import { BootReasonEnumType, type OCPP20BootNotificationRequest } from '../types/ocpp/2.0/Requests';
+} from '../types';
import {
- type ChargingProfile,
- ChargingRateUnitType,
- type ChargingSchedulePeriod,
-} from '../types/ocpp/ChargingProfile';
-import { OCPPVersion } from '../types/ocpp/OCPPVersion';
-import type { BootNotificationRequest } from '../types/ocpp/Requests';
-import { WorkerProcessType } from '../types/Worker';
-import Configuration from '../utils/Configuration';
-import Constants from '../utils/Constants';
-import { ACElectricUtils, DCElectricUtils } from '../utils/ElectricUtils';
-import logger from '../utils/Logger';
-import Utils from '../utils/Utils';
+ ACElectricUtils,
+ Configuration,
+ Constants,
+ DCElectricUtils,
+ Utils,
+ logger,
+} from '../utils';
+import { WorkerProcessType } from '../worker';
const moduleName = 'ChargingStationUtils';
): string {
// In case of multiple instances: add instance index to charging station id
const instanceIndex = process.env.CF_INSTANCE_INDEX ?? 0;
- const idSuffix = stationTemplate.nameSuffix ?? '';
- const idStr = '000000000' + index.toString();
+ const idSuffix = stationTemplate?.nameSuffix ?? '';
+ const idStr = `000000000${index.toString()}`;
return stationTemplate?.fixedName
? stationTemplate.baseName
- : stationTemplate.baseName +
- '-' +
- instanceIndex.toString() +
- idStr.substring(idStr.length - 4) +
- idSuffix;
+ : `${stationTemplate.baseName}-${instanceIndex.toString()}${idStr.substring(
+ idStr.length - 4
+ )}${idSuffix}`;
}
public static getHashId(index: number, stationTemplate: ChargingStationTemplate): string {
return crypto
.createHash(Constants.DEFAULT_HASH_ALGORITHM)
.update(
- JSON.stringify(chargingStationInfo) +
- ChargingStationUtils.getChargingStationId(index, stationTemplate)
+ `${JSON.stringify(chargingStationInfo)}${ChargingStationUtils.getChargingStationId(
+ index,
+ stationTemplate
+ )}`
)
.digest('hex');
}
public static getConfiguredNumberOfConnectors(stationTemplate: ChargingStationTemplate): number {
let configuredMaxConnectors: number;
- if (Utils.isEmptyArray(stationTemplate.numberOfConnectors) === false) {
+ if (Utils.isNotEmptyArray(stationTemplate.numberOfConnectors) === true) {
const numberOfConnectors = stationTemplate.numberOfConnectors as number[];
configuredMaxConnectors =
numberOfConnectors[Math.floor(Utils.secureRandom() * numberOfConnectors.length)];
}
public static workerPoolInUse(): boolean {
- return [WorkerProcessType.DYNAMIC_POOL, WorkerProcessType.STATIC_POOL].includes(
+ return [WorkerProcessType.dynamicPool, WorkerProcessType.staticPool].includes(
Configuration.getWorker().processType
);
}
public static workerDynamicPoolInUse(): boolean {
- return Configuration.getWorker().processType === WorkerProcessType.DYNAMIC_POOL;
+ return Configuration.getWorker().processType === WorkerProcessType.dynamicPool;
}
public static warnDeprecatedTemplateKey(
if (!Utils.isUndefined(template[key])) {
logger.warn(
`${logPrefix} Deprecated template key '${key}' usage in file '${templateFile}'${
- logMsgToAppend && '. ' + logMsgToAppend
+ Utils.isNotEmptyString(logMsgToAppend) && `. ${logMsgToAppend}`
}`
);
}
upperCase: params.randomSerialNumberUpperCase,
})
: '';
- stationInfo.chargePointSerialNumber =
- stationTemplate?.chargePointSerialNumberPrefix &&
- stationTemplate.chargePointSerialNumberPrefix + serialNumberSuffix;
- stationInfo.chargeBoxSerialNumber =
- stationTemplate?.chargeBoxSerialNumberPrefix &&
- stationTemplate.chargeBoxSerialNumberPrefix + serialNumberSuffix;
- stationInfo.meterSerialNumber =
- stationTemplate?.meterSerialNumberPrefix &&
- stationTemplate.meterSerialNumberPrefix + serialNumberSuffix;
+ stationInfo.chargePointSerialNumber = Utils.isNotEmptyString(
+ stationTemplate?.chargePointSerialNumberPrefix
+ )
+ ? `${stationTemplate.chargePointSerialNumberPrefix}${serialNumberSuffix}`
+ : undefined;
+ stationInfo.chargeBoxSerialNumber = Utils.isNotEmptyString(
+ stationTemplate?.chargeBoxSerialNumberPrefix
+ )
+ ? `${stationTemplate.chargeBoxSerialNumberPrefix}${serialNumberSuffix}`
+ : undefined;
+ stationInfo.meterSerialNumber = Utils.isNotEmptyString(stationTemplate?.meterSerialNumberPrefix)
+ ? `${stationTemplate.meterSerialNumberPrefix}${serialNumberSuffix}`
+ : undefined;
}
public static propagateSerialNumber(
// Get charging profiles for connector and sort by stack level
chargingProfiles = chargingStation
.getConnectorStatus(connectorId)
- .chargingProfiles.sort((a, b) => b.stackLevel - a.stackLevel);
+ ?.chargingProfiles?.sort((a, b) => b.stackLevel - a.stackLevel);
// Get profiles on connector 0
- if (chargingStation.getConnectorStatus(0).chargingProfiles) {
+ if (chargingStation.getConnectorStatus(0)?.chargingProfiles) {
chargingProfiles.push(
...chargingStation
.getConnectorStatus(0)
.chargingProfiles.sort((a, b) => b.stackLevel - a.stackLevel)
);
}
- if (!Utils.isEmptyArray(chargingProfiles)) {
+ if (Utils.isNotEmptyArray(chargingProfiles)) {
const result = ChargingStationUtils.getLimitFromChargingProfiles(
chargingProfiles,
chargingStation.logPrefix()
);
if (!Utils.isNullOrUndefined(result)) {
- limit = result.limit;
- matchingChargingProfile = result.matchingChargingProfile;
+ limit = result?.limit;
+ matchingChargingProfile = result?.matchingChargingProfile;
switch (chargingStation.getCurrentOutType()) {
case CurrentType.AC:
limit =