)
}
- private toHandler (
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- handler: (chargingStation: ChargingStation, commandPayload: any) => JsonType | Promise<JsonType>
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- bridges contravariant handler signatures into IncomingRequestHandler
+ private toHandler<P extends JsonType, R extends JsonType>(
+ handler: (chargingStation: ChargingStation, commandPayload: P) => Promise<R> | R
): IncomingRequestHandler {
- return handler as IncomingRequestHandler
+ return handler as unknown as IncomingRequestHandler
}
private triggerAllEvseStatusNotifications (
return `${new Date().toLocaleString()}${prefixString}`
}
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-export const once = <T extends (...args: any[]) => any>(fn: T): T => {
+export const once = <A extends unknown[], R>(fn: (...args: A) => R): ((...args: A) => R) => {
let hasBeenCalled = false
- let result: ReturnType<T>
+ let result!: R
let thrownError: Error | undefined
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- return function (this: any, ...args: Parameters<T>): ReturnType<T> {
+ return (...args: A): R => {
if (!hasBeenCalled) {
hasBeenCalled = true
try {
- result = fn.apply(this, args) as ReturnType<T>
+ result = fn(...args)
} catch (err) {
thrownError = err as Error
}
if (thrownError != null) {
throw thrownError
}
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
return result
- } as T
+ }
}
export const has = (property: PropertyKey, object: unknown): boolean => {