From: Jérôme Benoit Date: Fri, 27 Mar 2026 14:56:48 +0000 (+0100) Subject: refactor: eliminate explicit `any` from `once()` and `toHandler()` with proper generics X-Git-Tag: ocpp-server@v4.0.0~39 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=0d41439d7ae8ba25223ae41c70f4667f514b201f;p=e-mobility-charging-stations-simulator.git refactor: eliminate explicit `any` from `once()` and `toHandler()` with proper generics --- diff --git a/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts b/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts index fe1d2e2e..eaaef171 100644 --- a/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts +++ b/src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts @@ -3668,11 +3668,11 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService { ) } - private toHandler ( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - handler: (chargingStation: ChargingStation, commandPayload: any) => JsonType | Promise + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- bridges contravariant handler signatures into IncomingRequestHandler + private toHandler

( + handler: (chargingStation: ChargingStation, commandPayload: P) => Promise | R ): IncomingRequestHandler { - return handler as IncomingRequestHandler + return handler as unknown as IncomingRequestHandler } private triggerAllEvseStatusNotifications ( diff --git a/src/utils/Utils.ts b/src/utils/Utils.ts index 1d79ac89..71159ee7 100644 --- a/src/utils/Utils.ts +++ b/src/utils/Utils.ts @@ -30,17 +30,15 @@ export const logPrefix = (prefixString = ''): string => { return `${new Date().toLocaleString()}${prefixString}` } -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const once = any>(fn: T): T => { +export const once = (fn: (...args: A) => R): ((...args: A) => R) => { let hasBeenCalled = false - let result: ReturnType + let result!: R let thrownError: Error | undefined - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return function (this: any, ...args: Parameters): ReturnType { + return (...args: A): R => { if (!hasBeenCalled) { hasBeenCalled = true try { - result = fn.apply(this, args) as ReturnType + result = fn(...args) } catch (err) { thrownError = err as Error } @@ -48,9 +46,8 @@ export const once = any>(fn: T): T => { 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 => {