]> Piment Noir Git Repositories - e-mobility-charging-stations-simulator.git/commitdiff
refactor: remove unnecessary type assertions across monorepo
authorJérôme Benoit <jerome.benoit@sap.com>
Mon, 11 May 2026 18:43:22 +0000 (20:43 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Mon, 11 May 2026 18:43:22 +0000 (20:43 +0200)
- Remove all @typescript-eslint/no-unnecessary-type-assertion violations
- Add assertIsJsonObject/isJsonObject utilities for runtime-safe narrowing
- Restructure OCPP16RequestService.buildRequestPayload with proper
  runtime validation (assertIsJsonObject + OCPPError) replacing unsafe cast
- Use _syncResult assignment pattern in OCPPResponseService for
  no-floating-promises compliance while preserving isAsyncFunction pattern
- Refine AsyncLock.runExclusive fn parameter as union of function types
  for proper isAsyncFunction type guard narrowing
- Configure varsIgnorePattern: '^_' for @typescript-eslint/no-unused-vars
- Remove unused type imports in test files

65 files changed:
eslint.config.js
src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts
src/charging-station/ocpp/1.6/OCPP16RequestService.ts
src/charging-station/ocpp/1.6/OCPP16ResponseService.ts
src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts
src/charging-station/ocpp/2.0/OCPP20CertificateManager.ts
src/charging-station/ocpp/2.0/OCPP20IncomingRequestService.ts
src/charging-station/ocpp/2.0/OCPP20RequestService.ts
src/charging-station/ocpp/2.0/OCPP20ResponseService.ts
src/charging-station/ocpp/2.0/OCPP20VariableRegistry.ts
src/charging-station/ocpp/2.0/__testable__/OCPP20RequestServiceTestable.ts
src/charging-station/ocpp/OCPPResponseService.ts
src/charging-station/ocpp/OCPPServiceUtils.ts
src/charging-station/ocpp/auth/adapters/OCPP20AuthAdapter.ts
src/performance/storage/MongoDBStorage.ts
src/utils/AsyncLock.ts
src/utils/ChargingStationConfigurationUtils.ts
src/utils/Utils.ts
src/utils/index.ts
tests/charging-station/ChargingStation-Resilience.test.ts
tests/charging-station/ConfigurationKeyUtils.test.ts
tests/charging-station/Helpers.test.ts
tests/charging-station/SharedLRUCache.test.ts
tests/charging-station/helpers/StationHelpers.ts
tests/charging-station/ocpp/1.6/OCPP16RequestService-CallChain.test.ts
tests/charging-station/ocpp/1.6/OCPP16ResponseService-SimpleHandlers.test.ts
tests/charging-station/ocpp/1.6/OCPP16ServiceUtils-MeterValues.test.ts
tests/charging-station/ocpp/1.6/OCPP16ServiceUtils.test.ts
tests/charging-station/ocpp/1.6/OCPP16TestUtils.ts
tests/charging-station/ocpp/2.0/OCPP20IncomingRequestService-CertificateSigned.test.ts
tests/charging-station/ocpp/2.0/OCPP20IncomingRequestService-GetTransactionStatus.test.ts
tests/charging-station/ocpp/2.0/OCPP20IncomingRequestService-RemoteStartAuth.test.ts
tests/charging-station/ocpp/2.0/OCPP20IncomingRequestService-UnlockConnector.test.ts
tests/charging-station/ocpp/2.0/OCPP20IncomingRequestService-UpdateFirmware.test.ts
tests/charging-station/ocpp/2.0/OCPP20RequestService-CallChain.test.ts
tests/charging-station/ocpp/2.0/OCPP20RequestService-NotifyReport.test.ts
tests/charging-station/ocpp/2.0/OCPP20ResponseService-BootNotification.test.ts
tests/charging-station/ocpp/2.0/OCPP20ResponseService-SimpleHandlers.test.ts
tests/charging-station/ocpp/2.0/OCPP20ServiceUtils-PostTransactionDelay.test.ts
tests/charging-station/ocpp/2.0/OCPP20VariableManager.test.ts
tests/charging-station/ocpp/OCPPServiceOperations.test.ts
tests/charging-station/ocpp/OCPPServiceUtils-pure.test.ts
tests/charging-station/ui-server/UIHttpServer.test.ts
tests/charging-station/ui-server/UIMCPServer.test.ts
tests/performance/storage/MikroOrmStorage.test.ts
tests/performance/storage/MongoDBStorage.test.ts
tests/performance/storage/StorageTestHelpers.ts
tests/utils/ChargingStationConfigurationUtils.test.ts
tests/utils/Configuration.test.ts
ui/cli/src/client/ws-adapter.ts
ui/cli/src/commands/atg.ts
ui/cli/src/commands/ocpp.ts
ui/cli/src/commands/station.ts
ui/cli/src/commands/supervision.ts
ui/cli/src/config/loader.ts
ui/cli/tests/format.test.ts
ui/cli/tests/helpers.ts
ui/cli/tests/ws-adapter.test.ts
ui/common/src/client/WebSocketClient.ts
ui/common/src/client/adapter.ts
ui/common/tests/adapter.test.ts
ui/common/tests/browser-adapter.test.ts
ui/web/tests/unit/shared/composables/useTheme.test.ts
ui/web/tests/unit/skins/modern/ConnectorRow.test.ts
ui/web/tests/unit/skins/modern/Dialogs.test.ts

index ab053f25822d714a19cef0200c5e35a15fb30720..0a32bbc966bb6d6c28138a8f698495b852185a0f 100644 (file)
@@ -200,6 +200,21 @@ export default defineConfig([
   ...neostandard({
     ts: true,
   }),
+  {
+    files: ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts', '**/*.vue'],
+    rules: {
+      '@typescript-eslint/no-unused-vars': [
+        'error',
+        {
+          args: 'none',
+          caughtErrors: 'none',
+          ignoreRestSiblings: true,
+          vars: 'all',
+          varsIgnorePattern: '^_',
+        },
+      ],
+    },
+  },
   {
     files: [
       'src/charging-station/Bootstrap.ts',
index 090458b7b0a12516f37d1e74feb049bf75e11561..f65bc5acbd6e75a8d88bb1f77d20e2b84a605e33 100644 (file)
@@ -597,10 +597,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
     chargingStation: ChargingStation,
     commandName: IncomingRequestCommand
   ): boolean {
-    return isIncomingRequestCommandSupported(
-      chargingStation,
-      commandName as OCPP16IncomingRequestCommand
-    )
+    return isIncomingRequestCommandSupported(chargingStation, commandName)
   }
 
   private composeCompositeSchedule (
index 01662f6e0225dbf9cb0202b4b383d28820b8ea0c..43e34113ae9ae2a157163f399a0b6995e9f4e06e 100644 (file)
@@ -7,7 +7,6 @@ import { OCPPError } from '../../../exception/index.js'
 import {
   ChargePointErrorCode,
   ErrorType,
-  type JsonObject,
   type JsonType,
   OCPP16ChargePointStatus,
   type OCPP16MeterValue,
@@ -17,7 +16,7 @@ import {
   OCPPVersion,
   type RequestParams,
 } from '../../../types/index.js'
-import { generateUUID, logger } from '../../../utils/index.js'
+import { assertIsJsonObject, generateUUID, logger } from '../../../utils/index.js'
 import { sendAndSetConnectorStatus } from '../OCPPConnectorStatusOperations.js'
 import { OCPPRequestService } from '../OCPPRequestService.js'
 import { createPayloadValidatorMap, isRequestCommandSupported } from '../OCPPServiceUtils.js'
@@ -170,16 +169,10 @@ export class OCPP16RequestService extends OCPPRequestService {
   ): Request {
     let connectorId: number | undefined
     let energyActiveImportRegister: number
-    commandParams = commandParams as JsonObject
     logger.debug(
       `${chargingStation.logPrefix()} ${moduleName}.buildRequestPayload: Building '${commandName}' payload`
     )
     switch (commandName) {
-      case OCPP16RequestCommand.AUTHORIZE:
-        return {
-          idTag: OCPP16Constants.OCPP_DEFAULT_IDTAG,
-          ...commandParams,
-        } as unknown as Request
       case OCPP16RequestCommand.BOOT_NOTIFICATION:
       case OCPP16RequestCommand.DATA_TRANSFER:
       case OCPP16RequestCommand.DIAGNOSTICS_STATUS_NOTIFICATION:
@@ -188,41 +181,57 @@ export class OCPP16RequestService extends OCPPRequestService {
         return commandParams as unknown as Request
       case OCPP16RequestCommand.HEARTBEAT:
         return OCPP16Constants.OCPP_REQUEST_EMPTY as unknown as Request
+    }
+    assertIsJsonObject(
+      commandParams,
+      new OCPPError(
+        ErrorType.PROTOCOL_ERROR,
+        `'${commandName}' command requires object parameters`,
+        commandName
+      )
+    )
+    const params = commandParams
+    switch (commandName) {
+      case OCPP16RequestCommand.AUTHORIZE:
+        return {
+          idTag: OCPP16Constants.OCPP_DEFAULT_IDTAG,
+          ...params,
+        } as unknown as Request
       case OCPP16RequestCommand.START_TRANSACTION:
         return {
           idTag: OCPP16Constants.OCPP_DEFAULT_IDTAG,
           meterStart: chargingStation.getEnergyActiveImportRegisterByConnectorId(
-            commandParams.connectorId as number,
+            params.connectorId as number,
             true
           ),
           timestamp: new Date(),
           ...(OCPP16ServiceUtils.hasReservation(
             chargingStation,
-            commandParams.connectorId as number,
-            commandParams.idTag as string
+            params.connectorId as number,
+            params.idTag as string
           ) && {
             reservationId: chargingStation.getReservationBy(
               'connectorId',
               chargingStation.getConnectorStatus(0)?.status === OCPP16ChargePointStatus.Reserved
                 ? 0
-                : (commandParams.connectorId as number)
+                : (params.connectorId as number)
             )?.reservationId,
           }),
-          ...commandParams,
+          ...params,
         } as unknown as Request
       case OCPP16RequestCommand.STATUS_NOTIFICATION:
         return OCPP16ServiceUtils.buildStatusNotificationRequest({
           errorCode: ChargePointErrorCode.NO_ERROR,
-          ...commandParams,
-        } as unknown as OCPP16StatusNotificationRequest) as unknown as Request
+          ...params,
+        } as OCPP16StatusNotificationRequest) as unknown as Request
       case OCPP16RequestCommand.STOP_TRANSACTION:
         ;(chargingStation.stationInfo?.transactionDataMeterValues === true ||
           OCPP16ServiceUtils.isSigningEnabled(chargingStation)) &&
           (connectorId = chargingStation.getConnectorIdByTransactionId(
-            commandParams.transactionId as number
+            params.transactionId as number
           ))
         energyActiveImportRegister = chargingStation.getEnergyActiveImportRegisterByTransactionId(
-          commandParams.transactionId as number,
+          params.transactionId as number,
           true
         )
         {
@@ -261,11 +270,11 @@ export class OCPP16RequestService extends OCPPRequestService {
             }
           }
           return {
-            idTag: chargingStation.getTransactionIdTag(commandParams.transactionId as number),
+            idTag: chargingStation.getTransactionIdTag(params.transactionId as number),
             meterStop: energyActiveImportRegister,
             timestamp: new Date(),
             ...(transactionData != null && { transactionData }),
-            ...commandParams,
+            ...params,
           } as unknown as Request
         }
       default: {
@@ -274,7 +283,7 @@ export class OCPP16RequestService extends OCPPRequestService {
         logger.error(
           `${chargingStation.logPrefix()} ${moduleName}.buildRequestPayload: ${errorMsg}`
         )
-        throw new OCPPError(ErrorType.NOT_SUPPORTED, errorMsg, commandName, commandParams)
+        throw new OCPPError(ErrorType.NOT_SUPPORTED, errorMsg, commandName, params)
       }
     }
   }
index a2a5d1a9173902f62a5d1730f456a980e6345453..c046a819ed92fad56588eab769d9354a59d90fa0 100644 (file)
@@ -178,7 +178,7 @@ export class OCPP16ResponseService extends OCPPResponseService {
     chargingStation: ChargingStation,
     commandName: RequestCommand
   ): boolean {
-    return isRequestCommandSupported(chargingStation, commandName as OCPP16RequestCommand)
+    return isRequestCommandSupported(chargingStation, commandName)
   }
 
   private handleResponseAuthorize (
index c0e2068d4c3592296b12a4d8937ad79b405a270c..5f3cd21bd9e5b10205abb832c5ba48d74a9d1471 100644 (file)
@@ -889,7 +889,7 @@ export class OCPP16ServiceUtils {
         connectorId,
         meterValue: [transactionEndMeterValue],
         transactionId,
-      } as MeterValuesRequest)
+      })
     }
     return await chargingStation.ocppRequestService.requestHandler<
       Partial<StopTransactionRequest>,
@@ -1016,10 +1016,7 @@ export class OCPP16ServiceUtils {
               }
               return schedulePeriod
             }),
-          duration: differenceInSeconds(
-            chargingScheduleInterval.end,
-            compositeInterval.start as Date
-          ),
+          duration: differenceInSeconds(chargingScheduleInterval.end, compositeInterval.start),
           startSchedule: compositeInterval.start as Date,
         }
       }
@@ -1032,10 +1029,7 @@ export class OCPP16ServiceUtils {
               compositeInterval
             )
           ),
-          duration: differenceInSeconds(
-            compositeInterval.end as Date,
-            chargingScheduleInterval.start
-          ),
+          duration: differenceInSeconds(compositeInterval.end, chargingScheduleInterval.start),
         }
       }
       return chargingSchedule
index 5f86dfba97908eff4c5be89a2857bb9f6279cee4..689ef983f11488f6c74bb995bed54d1287e904c2 100644 (file)
@@ -148,20 +148,20 @@ export class OCPP20CertificateManager {
         issuerPublicKeyDer = issuerCert.publicKey.export({
           format: 'der',
           type: 'spki',
-        }) as Buffer
+        })
       } else if (this.isSelfSignedCertificate(x509)) {
         // Self-signed certificate: issuer = subject, use the certificate's own public key
         issuerPublicKeyDer = x509.publicKey.export({
           format: 'der',
           type: 'spki',
-        }) as Buffer
+        })
       } else {
         // Non-self-signed without issuer cert: use subject's public key as fallback
         // This is technically incorrect per RFC 6960 but maintains backward compatibility
         issuerPublicKeyDer = x509.publicKey.export({
           format: 'der',
           type: 'spki',
-        }) as Buffer
+        })
       }
 
       const issuerKeyHash = hash(algorithmName, issuerPublicKeyDer, 'hex')
index b37ec067ec75f6b5c5eb8b17e6ea656916f3f6f8..6e063f931897a5cc938c69d54c7449a87a6065f4 100644 (file)
@@ -977,10 +977,7 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService {
     chargingStation: ChargingStation,
     commandName: IncomingRequestCommand
   ): boolean {
-    return isIncomingRequestCommandSupported(
-      chargingStation,
-      commandName as OCPP20IncomingRequestCommand
-    )
+    return isIncomingRequestCommandSupported(chargingStation, commandName)
   }
 
   private async authorizeToken (
@@ -3689,8 +3686,8 @@ export class OCPP20IncomingRequestService extends OCPPIncomingRequestService {
       // L01.FR.04: Simulate signature verification
       const simulateFailure = OCPP20ServiceUtils.readVariableAsBoolean(
         chargingStation,
-        OCPP20ComponentName.FirmwareCtrlr as string,
-        OCPP20VendorVariableName.SimulateSignatureVerificationFailure as string,
+        OCPP20ComponentName.FirmwareCtrlr,
+        OCPP20VendorVariableName.SimulateSignatureVerificationFailure,
         false
       )
 
index fd1d27978f214e35bc1a5107698e766583610bc9..5021ae373dc96553ad832c5eb5175aa33fc62fd1 100644 (file)
@@ -148,7 +148,6 @@ export class OCPP20RequestService extends OCPPRequestService {
     commandName: OCPP20RequestCommand,
     commandParams?: JsonType
   ): Request {
-    commandParams = commandParams as JsonObject
     logger.debug(
       `${chargingStation.logPrefix()} ${moduleName}.buildRequestPayload: Building '${commandName}' payload`
     )
index facc618a6aa0e56f4c619298d0d296a3d8142cc9..fb230a4762965a4f05cfd72cc269345f6594bb94 100644 (file)
@@ -190,7 +190,7 @@ export class OCPP20ResponseService extends OCPPResponseService {
     chargingStation: ChargingStation,
     commandName: RequestCommand
   ): boolean {
-    return isRequestCommandSupported(chargingStation, commandName as OCPP20RequestCommand)
+    return isRequestCommandSupported(chargingStation, commandName)
   }
 
   private handleResponseAuthorize (
index cd700ca224860434265074aea64bf8e3985114be..7cc9ec95461c01667c8e04988592cde04a3ad486 100644 (file)
@@ -2588,7 +2588,7 @@ export function getVariableMetadata (
   }
   return VARIABLE_REGISTRY_LOOKUP_CI[
     buildCaseInsensitiveCompositeKey(component, undefined, variable)
-  ] as undefined | VariableMetadata
+  ]
 }
 
 /**
index 60ddd64045a1ec149fd7fabcee7fab4c2ce30e70..6a04c01b1d9b4f4f8554b6f37ff170a43dd9b0b9 100644 (file)
@@ -132,7 +132,7 @@ export function createTestableRequestService<T extends JsonType = JsonType> (
 
   // Create typed wrapper for the mock
   const sendMessageMock: SendMessageMock = {
-    fn: mockFn as unknown as SendMessageFn,
+    fn: mockFn,
     mock: mockFn.mock as unknown as SendMessageMock['mock'],
   }
 
index 2a276db78650c3906ccc27e974013e85ecfc3bfb..21d248cca2d9f1df5f8da1244188a9e3cba24ba7 100644 (file)
@@ -81,13 +81,7 @@ export abstract class OCPPResponseService {
           if (isAsyncFunction(responseHandler)) {
             await responseHandler(chargingStation, payload, requestPayload)
           } else {
-            ;(
-              responseHandler as (
-                chargingStation: ChargingStation,
-                payload: JsonType,
-                requestPayload?: JsonType
-              ) => void
-            )(chargingStation, payload, requestPayload)
+            const _syncResult = responseHandler(chargingStation, payload, requestPayload)
           }
           logger.debug(
             `${chargingStation.logPrefix()} ${this.moduleName}.responseHandler: '${commandName}' response processed successfully`
index eaefda7b7375b6f4f0d661032be8f828f310c6fe..beac5cc1f7e841e5b9c4ac2451e20da77ac7c117 100644 (file)
@@ -212,7 +212,7 @@ export const convertDateToISOString = <T extends JsonType>(object: T): void => {
         const item = value[i]
         if (isDate(item)) {
           try {
-            value[i] = item.toISOString() as unknown as typeof item
+            value[i] = item.toISOString()
           } catch {
             // Ignore date conversion error
           }
@@ -1351,7 +1351,7 @@ const getLimitFromSampledValueTemplateCustomValue = (
 
 const isMeasurandSupported = (measurand: MeterValueMeasurand): boolean => {
   const supportedMeasurands = OCPPConstants.OCPP_MEASURANDS_SUPPORTED as readonly string[]
-  return supportedMeasurands.includes(measurand as string)
+  return supportedMeasurands.includes(measurand)
 }
 
 /**
@@ -1476,18 +1476,12 @@ export const resolveSampledValueFields = (
   value: number
 } => {
   const sampledValueMeasurand =
-    (sampledValueTemplate.measurand as MeterValueMeasurand | undefined) ??
-    MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
+    sampledValueTemplate.measurand ?? MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
   return {
-    context:
-      context ??
-      (sampledValueTemplate.context as MeterValueContext | undefined) ??
-      MeterValueContext.SAMPLE_PERIODIC,
-    location:
-      (sampledValueTemplate.location as MeterValueLocation | undefined) ??
-      getMeasurandDefaultLocation(sampledValueMeasurand),
+    context: context ?? sampledValueTemplate.context ?? MeterValueContext.SAMPLE_PERIODIC,
+    location: sampledValueTemplate.location ?? getMeasurandDefaultLocation(sampledValueMeasurand),
     measurand: sampledValueMeasurand,
-    phase: phase ?? (sampledValueTemplate.phase as MeterValuePhase | undefined),
+    phase: phase ?? sampledValueTemplate.phase,
     unit:
       (sampledValueTemplate.unit as MeterValueUnit | undefined) ??
       getMeasurandDefaultUnit(sampledValueMeasurand),
index b983d45738ab7d9457efa79ba428232349280fd2..05d694a2132332922d728f1a35dbd15d0cd53587 100644 (file)
@@ -174,7 +174,7 @@ export class OCPP20AuthAdapter implements OCPPAuthAdapter<OCPP20IdTokenType> {
             return {
               additionalIdToken: value,
               type: 'string',
-            } as AdditionalInfoType
+            }
           }
         })
       : undefined
index b00280aa3780c171629e2708c5ce271a13b5cf75..c030591f61b63fc25166c6b7acdc43d283816706 100644 (file)
@@ -50,7 +50,7 @@ export class MongoDBStorage extends Storage {
         .collection<Statistics>(Constants.PERFORMANCE_RECORDS_TABLE)
         .replaceOne(
           { id: performanceStatistics.id },
-          this.serializePerformanceStatistics(performanceStatistics) as unknown as Statistics,
+          this.serializePerformanceStatistics(performanceStatistics),
           { upsert: true }
         )
     } catch (error) {
index 0c8298586bab022b7ff2f7d9ac5efbd86f655b1f..4813d958490ee91c58ff85398d662303ec0e5b06 100644 (file)
@@ -21,13 +21,16 @@ export class AsyncLock {
     this.resolveQueue = new Queue<ResolveType>()
   }
 
-  public static async runExclusive<T>(type: AsyncLockType, fn: () => Promise<T> | T): Promise<T> {
+  public static async runExclusive<T>(
+    type: AsyncLockType,
+    fn: (() => Promise<T>) | (() => T)
+  ): Promise<T> {
     try {
       await AsyncLock.acquire(type)
       if (isAsyncFunction(fn)) {
         return await fn()
       } else {
-        return fn() as T
+        return fn()
       }
     } finally {
       AsyncLock.release(type)
index e9fd082a7cacdeb7d0d62b9ac90d4d85a1ed5a13..cc2f516c1c9f84c18b2d412cbf668063333ba1d6 100644 (file)
@@ -128,7 +128,7 @@ export const buildEvsesStatus = (
         {
           ...evseStatusRest,
           connectorsStatus,
-        } as EvseStatusConfiguration,
+        },
       ] as [number, EvseStatusConfiguration]
     })
     .toArray()
index 88d58011481f33912fccbcbf42de22897368f291..eb2de87a508e6291655a4e560ccefaccbf96e3fd 100644 (file)
@@ -15,6 +15,7 @@ import { getRandomValues, randomBytes, randomUUID } from 'node:crypto'
 import { env } from 'node:process'
 
 import {
+  type JsonObject,
   type JsonType,
   MapStringifyFormat,
   MessageType,
@@ -55,7 +56,7 @@ export const has = (property: PropertyKey, object: unknown): boolean => {
   if (object == null || (typeof object !== 'object' && typeof object !== 'function')) {
     return false
   }
-  return Object.hasOwn(object as Record<PropertyKey, unknown>, property)
+  return Object.hasOwn(object, property)
 }
 
 const type = (value: unknown): string => {
@@ -70,6 +71,30 @@ const isObject = (value: unknown): value is object => {
   return type(value) === 'Object'
 }
 
+export const isJsonObject = (value: unknown): value is JsonObject => {
+  return value != null && typeof value === 'object' && !Array.isArray(value)
+}
+
+/**
+ * Asserts that the given value is a JSON object (non-null, non-array object).
+ * @param value - Value to assert.
+ * @param error - Optional custom error or context message.
+ * @throws {Error | TypeError} The provided error, or a TypeError with the context message.
+ */
+export function assertIsJsonObject (
+  value: unknown,
+  error?: Error | string
+): asserts value is JsonObject {
+  if (value == null || typeof value !== 'object' || Array.isArray(value)) {
+    if (error instanceof Error) {
+      throw error
+    }
+    throw new TypeError(
+      error != null ? `Expected a JSON object: ${error}` : 'Expected a JSON object'
+    )
+  }
+}
+
 export const isEmpty = (value: unknown): boolean => {
   if (
     value == null ||
@@ -93,7 +118,7 @@ export const mergeDeepRight = <T extends object, S extends object>(target: T, so
   const output: Record<string, unknown> = { ...(target as Record<string, unknown>) }
 
   if (isObject(target) && isObject(source)) {
-    Object.keys(source as Record<string, unknown>).forEach(key => {
+    Object.keys(source).forEach(key => {
       const sourceValue = (source as Record<string, unknown>)[key]
       const targetValue = (target as Record<string, unknown>)[key]
       if (isObject(sourceValue) && isObject(targetValue)) {
@@ -487,11 +512,11 @@ export const getWebSocketCloseEventStatusString = (code: number): string => {
       return '(For applications)'
     }
   }
-  if (
-    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
-    WebSocketCloseEventStatusString[code as keyof typeof WebSocketCloseEventStatusString] != null
-  ) {
-    return WebSocketCloseEventStatusString[code as keyof typeof WebSocketCloseEventStatusString]
+  const statusString = (
+    WebSocketCloseEventStatusString as Readonly<Record<number, string | undefined>>
+  )[code]
+  if (statusString != null) {
+    return statusString
   }
   return '(Unknown)'
 }
index e6050e8847fa2c5ade2b7eec7858bc9433bf9581..799d80b562875e6b843b3f5cb52d03a203b7bba7 100644 (file)
@@ -31,6 +31,7 @@ export {
 } from './MessageChannelUtils.js'
 export { average, max, median, min, percentile, std } from './StatisticUtils.js'
 export {
+  assertIsJsonObject,
   clampToSafeTimerValue,
   clone,
   computeExponentialBackOffDelay,
@@ -51,6 +52,7 @@ export {
   isArraySorted,
   isAsyncFunction,
   isEmpty,
+  isJsonObject,
   isNotEmptyArray,
   isNotEmptyString,
   isValidDate,
index e31462ed57808bea359765001e543db51dabf6ba..bf562745de96c88aa8c423a2f3c8d50c87e8d69b 100644 (file)
@@ -267,7 +267,7 @@ await describe('ChargingStation Resilience', async () => {
       // Set up a heartbeat timer (simulated)
       station.heartbeatSetInterval = setInterval(() => {
         /* empty */
-      }, TEST_HEARTBEAT_INTERVAL_MS) as unknown as NodeJS.Timeout
+      }, TEST_HEARTBEAT_INTERVAL_MS)
 
       // Act - Cleanup station
       cleanupChargingStation(station)
index f395ff5a8103fdc8bca1212fdf4ccb9c5a84d5b4..1b97a03a331f933264d2b7ec9709e2ba87540691 100644 (file)
@@ -5,8 +5,6 @@
 import assert from 'node:assert/strict'
 import { afterEach, describe, it } from 'node:test'
 
-import type { ChargingStationOcppConfiguration } from '../../src/types/index.js'
-
 import {
   addConfigurationKey,
   buildConfigKey,
@@ -36,7 +34,7 @@ await describe('ConfigurationKeyUtils', async () => {
       // Arrange
       const { station: cs } = createMockChargingStation()
       // Simulate missing configurationKey array
-      cs.ocppConfiguration = {} as Partial<ChargingStationOcppConfiguration>
+      cs.ocppConfiguration = {}
 
       // Act & Assert
       assert.strictEqual(getConfigurationKey(cs, TEST_KEY_1), undefined)
@@ -167,7 +165,7 @@ await describe('ConfigurationKeyUtils', async () => {
       // Arrange
       const { station: cs } = createMockChargingStation()
       // Simulate missing configurationKey array
-      cs.ocppConfiguration = {} as Partial<ChargingStationOcppConfiguration>
+      cs.ocppConfiguration = {}
 
       // Act
       addConfigurationKey(cs, TEST_KEY_1, VALUE_A)
@@ -490,7 +488,7 @@ await describe('ConfigurationKeyUtils', async () => {
       // Arrange
       const { station: cs } = createMockChargingStation()
       // Simulate missing configurationKey array
-      cs.ocppConfiguration = {} as Partial<ChargingStationOcppConfiguration>
+      cs.ocppConfiguration = {}
       const errorMock = t.mock.method(logger, 'error')
 
       // Act
@@ -551,7 +549,7 @@ await describe('ConfigurationKeyUtils', async () => {
       // Arrange
       const { station: cs } = createMockChargingStation()
       // Simulate missing configurationKey array
-      cs.ocppConfiguration = {} as Partial<ChargingStationOcppConfiguration>
+      cs.ocppConfiguration = {}
 
       // Act
       const res = deleteConfigurationKey(cs, TEST_KEY_1)
index 22f7eefd5fc6da22ce0e1e178a05b763c777e932..9c5b8001de2d84833b95e93438fdb6c4d5215506 100644 (file)
@@ -27,13 +27,11 @@ import {
   AvailabilityType,
   type ChargingProfile,
   ChargingProfilePurposeType,
-  type ChargingStationConfiguration,
   type ChargingStationInfo,
   type ChargingStationOptions,
   type ChargingStationTemplate,
   type ConnectorStatus,
   ConnectorStatusEnum,
-  type MeterValue,
   OCPPVersion,
   type Reservation,
   type SampledValueTemplate,
@@ -58,13 +56,12 @@ await describe('Helpers', async () => {
   })
 
   // Helper to create test reservations with configurable expiry
-  const createTestReservation = (expired = false): Reservation =>
-    ({
-      connectorId: 1,
-      expiryDate: new Date(Date.now() + (expired ? -60000 : 60000)),
-      idTag: 'tag1',
-      reservationId: 1,
-    }) as Reservation
+  const createTestReservation = (expired = false): Reservation => ({
+    connectorId: 1,
+    expiryDate: new Date(Date.now() + (expired ? -60000 : 60000)),
+    idTag: 'tag1',
+    reservationId: 1,
+  })
 
   await it('should return formatted charging station ID with index', () => {
     assert.strictEqual(
@@ -668,7 +665,7 @@ await describe('Helpers', async () => {
     assert.strictEqual(errorMock.mock.calls.length, 1)
     assert.throws(
       () => {
-        checkConfiguration({} as ChargingStationConfiguration, 'log prefix |', 'configuration.json')
+        checkConfiguration({}, 'log prefix |', 'configuration.json')
       },
       { message: /Empty charging station configuration from file configuration\.json/ }
     )
@@ -905,7 +902,7 @@ await describe('Helpers', async () => {
       const connectorStatus: ConnectorStatus = {
         availability: AvailabilityType.Operative,
         MeterValues: [],
-        transactionBeginMeterValue: { sampledValue: [], timestamp: new Date() } as MeterValue,
+        transactionBeginMeterValue: { sampledValue: [], timestamp: new Date() },
         transactionDeauthorized: true,
         transactionDeauthorizedEnergyWh: 500,
         transactionEnergyActiveImportRegisterValue: 1234,
index 3d5cc30530eecece64dc7392a49d7d25913a7d6a..79c3e69fcac22e13cad8b5ee0e336f3e09cddd94 100644 (file)
@@ -54,7 +54,7 @@ function createTemplate (hash: string): ChargingStationTemplate {
     chargePointModel: 'test-model',
     chargePointVendor: 'test-vendor',
     templateHash: hash,
-  } as ChargingStationTemplate
+  }
 }
 
 /**
index a07016072ee9312e10523f7c4178bb810244b7a9..c973c9d89ae678e1454aee3061ba78abd904d34d 100644 (file)
@@ -278,7 +278,7 @@ export function createConnectorStatus (
     transactionRemoteStarted: false,
     transactionStart: undefined,
     transactionStarted: false,
-  } as unknown as ConnectorStatus
+  }
 }
 
 /**
index 8d180eb9348f3ef6995c61e2ab225977798cc3fd..6cba65d532ca56e5cc8cd19d7e94888760aceacf 100644 (file)
@@ -65,7 +65,7 @@ await describe('OCPP 1.6 Request Call Chain — requestHandler → buildRequestP
       await requestService.requestHandler(station, OCPP16RequestCommand.STATUS_NOTIFICATION, {
         connectorId: 1,
         status: OCPP16ChargePointStatus.Available,
-      } as unknown as JsonType)
+      })
 
       assert.strictEqual(sendMessageMock.mock.callCount(), 1)
       const sentPayload = sendMessageMock.mock.calls[0]
@@ -81,7 +81,7 @@ await describe('OCPP 1.6 Request Call Chain — requestHandler → buildRequestP
       await requestService.requestHandler(station, OCPP16RequestCommand.START_TRANSACTION, {
         connectorId: 1,
         idTag: 'TEST001',
-      } as unknown as JsonType)
+      })
 
       assert.strictEqual(sendMessageMock.mock.callCount(), 1)
       const sentPayload = sendMessageMock.mock.calls[0]
@@ -103,7 +103,7 @@ await describe('OCPP 1.6 Request Call Chain — requestHandler → buildRequestP
 
       await requestService.requestHandler(station, OCPP16RequestCommand.STOP_TRANSACTION, {
         transactionId: 12345,
-      } as unknown as JsonType)
+      })
 
       assert.strictEqual(sendMessageMock.mock.callCount(), 1)
       const sentPayload = sendMessageMock.mock.calls[0].arguments[2] as OCPP16StopTransactionRequest
index a78b78952186c8270377753a9abd8828410a5f76..c8e72c92d5e2f3685ae05c0deaf85d91dcee9ae9 100644 (file)
@@ -44,7 +44,7 @@ function createSimpleHandlerStation (): MockChargingStation {
     },
     websocketPingInterval: Constants.DEFAULT_WS_PING_INTERVAL_SECONDS,
   })
-  return station as MockChargingStation
+  return station
 }
 
 await describe('OCPP16ResponseService — SimpleHandlers', async () => {
index 0e61e1c3e8a5550a6add92617d2a6af4aa0b9990..23371f692ecbbf957546c4314f878dfa796dab39 100644 (file)
@@ -154,11 +154,11 @@ await describe('OCPP16ServiceUtils — MeterValues', async () => {
       const beginMeterValue: OCPP16MeterValue = {
         sampledValue: [{ context: OCPP16MeterValueContext.TRANSACTION_BEGIN, value: '0' }],
         timestamp: new Date('2025-01-01T00:00:00Z'),
-      } as OCPP16MeterValue
+      }
       const endMeterValue: OCPP16MeterValue = {
         sampledValue: [{ context: OCPP16MeterValueContext.TRANSACTION_END, value: '100' }],
         timestamp: new Date('2025-01-01T01:00:00Z'),
-      } as OCPP16MeterValue
+      }
 
       // Act
       const result = OCPP16ServiceUtils.buildTransactionDataMeterValues(
@@ -176,11 +176,11 @@ await describe('OCPP16ServiceUtils — MeterValues', async () => {
       const beginMeterValue: OCPP16MeterValue = {
         sampledValue: [],
         timestamp: new Date(),
-      } as OCPP16MeterValue
+      }
       const endMeterValue: OCPP16MeterValue = {
         sampledValue: [],
         timestamp: new Date(),
-      } as OCPP16MeterValue
+      }
 
       const result1 = OCPP16ServiceUtils.buildTransactionDataMeterValues(
         beginMeterValue,
index dbd9bc57cbbe845831862cd8a3745eeb92b6734c..94293e6c4f667b5d8baa8dc33b398fcd89051084 100644 (file)
@@ -72,7 +72,7 @@ await describe('OCPP16ServiceUtils — pure functions', async () => {
           chargingSchedulePeriod: [{ limit: 1000, startPeriod: 0 }],
         },
         stackLevel,
-      } as OCPP16ChargingProfile
+      }
     }
 
     await it('should return false for undefined profiles array', () => {
@@ -276,7 +276,7 @@ await describe('OCPP16ServiceUtils — pure functions', async () => {
         chargingSchedulePeriod: [{ limit, startPeriod: 0 }],
         duration: durationSeconds,
         startSchedule: start,
-      } as OCPP16ChargingSchedule
+      }
     }
 
     await it('should return undefined when both schedules are undefined', () => {
index c77b1ee6fa46eeabefa6d7031be13bfecf53ee1a..4c2abf1c64df70cac6df0c1e6bce3740bb8e6899 100644 (file)
@@ -11,12 +11,10 @@ import type { ChargingStation } from '../../../../src/charging-station/index.js'
 import type {
   ChargingStationInfo,
   ConfigurationKey,
-  IncomingRequestCommand,
   JsonObject,
   OCPP16ChargingProfile,
   OCPP16ChargingSchedulePeriod,
   OCPP16SampledValue,
-  RequestCommand,
   SampledValueTemplate,
 } from '../../../../src/types/index.js'
 
@@ -99,12 +97,9 @@ export function createCommandsSupport (config: {
   outgoingCommands?: Record<string, boolean>
 }): NonNullable<ChargingStationInfo['commandsSupport']> {
   return {
-    incomingCommands: (config.incomingCommands ?? {}) as unknown as Record<
-      IncomingRequestCommand,
-      boolean
-    >,
+    incomingCommands: config.incomingCommands ?? {},
     ...(config.outgoingCommands != null && {
-      outgoingCommands: config.outgoingCommands as unknown as Record<RequestCommand, boolean>,
+      outgoingCommands: config.outgoingCommands,
     }),
   }
 }
@@ -117,7 +112,7 @@ export function createCommandsSupport (config: {
  * @returns The entries typed as `SampledValueTemplate[]`
  */
 export function createMeterValuesTemplate (entries: OCPP16SampledValue[]): SampledValueTemplate[] {
-  return entries as unknown as SampledValueTemplate[]
+  return entries
 }
 
 /**
@@ -261,7 +256,7 @@ export function createStandardStation (
     websocketPingInterval: Constants.DEFAULT_WS_PING_INTERVAL_SECONDS,
   })
 
-  return station as MockChargingStation
+  return station
 }
 
 /**
@@ -280,12 +275,7 @@ export async function dispatchResponse (
   payload: JsonObject,
   requestPayload: JsonObject = {}
 ): Promise<void> {
-  await responseService.responseHandler(
-    station,
-    command,
-    payload as unknown as Parameters<OCPP16ResponseService['responseHandler']>[2],
-    requestPayload as unknown as Parameters<OCPP16ResponseService['responseHandler']>[3]
-  )
+  await responseService.responseHandler(station, command, payload, requestPayload)
 }
 
 /**
index ee58d328b545d03e4985be3ef1075c52887c3494..2e7f4299db68d8842f4c60378064f9642ef53834 100644 (file)
@@ -335,7 +335,7 @@ await describe('I04 - CertificateSigned', async () => {
       assert.strictEqual(response.statusInfo?.reasonCode, 'InvalidCertificate')
       assert.ok(
         response.statusInfo.additionalInfo?.includes(
-          OCPP20OptionalVariableName.MaxCertificateChainSize as string
+          OCPP20OptionalVariableName.MaxCertificateChainSize
         )
       )
     })
index a43f7062a727f7c8c8f4ae114cb4b2b9c13f9491..a87938d5dfa9477ac2cc559fda51e8373e527db7 100644 (file)
@@ -56,7 +56,7 @@ await describe('D14 - GetTransactionStatus', async () => {
   await it('should not include ongoingIndicator when active transaction exists but no transactionId (E14.FR.06)', () => {
     const transactionId = 'txn-12345'
     setupConnectorWithTransaction(station, 1, {
-      transactionId: transactionId as unknown as number,
+      transactionId,
     })
 
     const response = testableService.handleRequestGetTransactionStatus(station, {})
@@ -81,7 +81,7 @@ await describe('D14 - GetTransactionStatus', async () => {
   await it('should return ongoingIndicator true when specific transactionId exists', () => {
     const transactionId = 'txn-67890'
     setupConnectorWithTransaction(station, 2, {
-      transactionId: transactionId as unknown as number,
+      transactionId,
     })
 
     const response = testableService.handleRequestGetTransactionStatus(station, {
index 6e3b8543bc749144c2ee742edac558fae80f32db..b3557abfd9f480a4da761e03ae5b461869dcb97c 100644 (file)
@@ -206,8 +206,7 @@ await describe('G03 - Remote Start Pre-Authorization', async () => {
       // Given: Request without evseId (undefined)
 
       const request: OCPP20RequestStartTransactionRequest = {
-        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any -- testing invalid undefined input
-        evseId: undefined as any,
+        evseId: undefined,
         idToken: {
           idToken: 'VALID_TOKEN_006',
           type: OCPP20IdTokenEnumType.ISO14443,
index b9f9af980eb89c9db4157dbd49827631293c1361..6a4352d45c1d9b7bb45e4522639deebdfadeb1c3 100644 (file)
@@ -49,7 +49,7 @@ function createUnlockConnectorStation (): {
     },
     websocketPingInterval: Constants.DEFAULT_WS_PING_INTERVAL_SECONDS,
   })
-  return { mockStation: station as MockChargingStation, requestHandlerMock }
+  return { mockStation: station, requestHandlerMock }
 }
 
 await describe('F05 - UnlockConnector', async () => {
index b5d056f2fdf2b7bb87d8944f059cb478f8147f35..218676696b992d746cc9583863285f150a15b5e2 100644 (file)
@@ -549,7 +549,7 @@ await describe('L01/L02 - UpdateFirmware', async () => {
           {
             attributeType: AttributeEnumType.Actual,
             attributeValue: 'false',
-            component: { name: OCPP20ComponentName.ChargingStation as string },
+            component: { name: OCPP20ComponentName.ChargingStation },
             variable: { name: 'AllowNewSessionsPendingFirmwareUpdate' },
           },
         ])
@@ -746,7 +746,7 @@ await describe('L01/L02 - UpdateFirmware', async () => {
           {
             attributeType: AttributeEnumType.Actual,
             attributeValue: 'true',
-            component: { name: OCPP20ComponentName.FirmwareCtrlr as string },
+            component: { name: OCPP20ComponentName.FirmwareCtrlr },
             variable: { name: 'SimulateSignatureVerificationFailure' },
           },
         ])
@@ -824,7 +824,7 @@ await describe('L01/L02 - UpdateFirmware', async () => {
           {
             attributeType: AttributeEnumType.Actual,
             attributeValue: 'false',
-            component: { name: OCPP20ComponentName.FirmwareCtrlr as string },
+            component: { name: OCPP20ComponentName.FirmwareCtrlr },
             variable: { name: 'SimulateSignatureVerificationFailure' },
           },
         ])
index 38b9848ef6efcbe4f14aefaaa4305d4729cb22aa..e2d412a86d0ba479732832fed9cf706977429f0d 100644 (file)
@@ -197,7 +197,7 @@ await describe('OCPP 2.0 Request Call Chain — requestHandler → buildRequestP
       await service.requestHandler(
         station,
         OCPP20RequestCommand.TRANSACTION_EVENT,
-        preBuiltPayload as unknown as OCPP20TransactionEventRequest,
+        preBuiltPayload,
         { rawPayload: true }
       )
 
index 03bc7dbf6a34bdb02197a65eb6eeda36a6522996..db57ff4ee488e8118f9394a70c2976257115f378 100644 (file)
@@ -535,7 +535,7 @@ await describe('B07/B08 - NotifyReport', async () => {
 
     // Verify no additional properties are added
     const expectedKeys = ['generatedAt', 'reportData', 'requestId', 'seqNo', 'tbc']
-    const actualKeys = Object.keys(payload as object).sort()
+    const actualKeys = Object.keys(payload).sort()
     expectedKeys.sort()
     assert.deepStrictEqual(actualKeys, expectedKeys)
   })
index a5d43d37a02121a664727eeab7eacc221ee517ec..6192be625e8a84d4b6d1d194b3d3373465263005 100644 (file)
@@ -50,7 +50,7 @@ function createBootNotificationStation (): MockChargingStation {
     },
     websocketPingInterval: Constants.DEFAULT_WS_PING_INTERVAL_SECONDS,
   })
-  return station as MockChargingStation
+  return station
 }
 
 await describe('B01 - BootNotificationResponse handler', async () => {
@@ -76,8 +76,8 @@ await describe('B01 - BootNotificationResponse handler', async () => {
     await responseService.responseHandler(
       mockStation,
       OCPP20RequestCommand.BOOT_NOTIFICATION,
-      payload as unknown as Parameters<typeof responseService.responseHandler>[2],
-      {} as Parameters<typeof responseService.responseHandler>[3]
+      payload,
+      {}
     )
   }
 
index cb348d0c007daa3b2ea28046cd3d30bc5d6d4f5a..9656026d957a8039a4ff98c2b955256614a52628 100644 (file)
@@ -36,7 +36,7 @@ function createSimpleHandlerStation (): MockChargingStation {
     },
     websocketPingInterval: Constants.DEFAULT_WS_PING_INTERVAL_SECONDS,
   })
-  return station as MockChargingStation
+  return station
 }
 
 await describe('Simple response handlers', async () => {
@@ -57,12 +57,7 @@ await describe('Simple response handlers', async () => {
     await it('should handle Heartbeat response without throwing', async () => {
       const payload: OCPP20HeartbeatResponse = { currentTime: new Date() }
       await assert.doesNotReject(
-        responseService.responseHandler(
-          mockStation,
-          OCPP20RequestCommand.HEARTBEAT,
-          payload as unknown as Parameters<typeof responseService.responseHandler>[2],
-          {} as Parameters<typeof responseService.responseHandler>[3]
-        )
+        responseService.responseHandler(mockStation, OCPP20RequestCommand.HEARTBEAT, payload, {})
       )
     })
   })
@@ -74,8 +69,8 @@ await describe('Simple response handlers', async () => {
         responseService.responseHandler(
           mockStation,
           OCPP20RequestCommand.NOTIFY_REPORT,
-          payload as unknown as Parameters<typeof responseService.responseHandler>[2],
-          {} as Parameters<typeof responseService.responseHandler>[3]
+          payload,
+          {}
         )
       )
     })
@@ -88,8 +83,8 @@ await describe('Simple response handlers', async () => {
         responseService.responseHandler(
           mockStation,
           OCPP20RequestCommand.STATUS_NOTIFICATION,
-          payload as unknown as Parameters<typeof responseService.responseHandler>[2],
-          {} as Parameters<typeof responseService.responseHandler>[3]
+          payload,
+          {}
         )
       )
     })
index 81d226cb99fce5e0d86f62104dac7378950b00d6..4344088ab6795711c4e175223321a9f2f16dc2bb 100644 (file)
@@ -31,7 +31,7 @@ await describe('OCPP20ServiceUtils — PostTransactionDelay', async () => {
     const result = createMockChargingStation({
       connectorsCount: 1,
       ocppRequestService: {
-        requestHandler: requestHandler as (...args: unknown[]) => Promise<unknown>,
+        requestHandler,
       },
       ocppVersion: OCPPVersion.VERSION_20,
       started: true,
index dda53fac55babd9a9d8dda058c06541f27989d1c..5878592150b0602eef0188d5b886ea5fb36cae8b 100644 (file)
@@ -217,8 +217,8 @@ await describe('B05 - OCPP20VariableManager', async () => {
     await it('should handle invalid component gracefully', () => {
       const request: OCPP20GetVariableDataType[] = [
         {
-          component: { name: 'InvalidComponent' as unknown as OCPP20ComponentName },
-          variable: { name: 'SomeVariable' as unknown as OCPP20OptionalVariableName },
+          component: { name: 'InvalidComponent' },
+          variable: { name: 'SomeVariable' },
         },
       ]
 
@@ -474,7 +474,7 @@ await describe('B05 - OCPP20VariableManager', async () => {
     await it('should reject unknown variables', () => {
       const component: ComponentType = { name: OCPP20ComponentName.OCPPCommCtrlr }
       const variable: VariableType = {
-        name: 'UnknownVariable' as unknown as OCPP20OptionalVariableName,
+        name: 'UnknownVariable',
       }
 
       const isSupported = testable.isVariableSupported(component, variable)
@@ -520,7 +520,7 @@ await describe('B05 - OCPP20VariableManager', async () => {
       const request: OCPP20SetVariableDataType[] = [
         {
           attributeValue: '20',
-          component: { name: 'InvalidComponent' as unknown as OCPP20ComponentName },
+          component: { name: 'InvalidComponent' },
           variable: { name: OCPP20OptionalVariableName.WebSocketPingInterval },
         },
       ]
@@ -537,7 +537,7 @@ await describe('B05 - OCPP20VariableManager', async () => {
         {
           attributeValue: '10',
           component: { name: OCPP20ComponentName.OCPPCommCtrlr },
-          variable: { name: 'UnknownVariable' as unknown as VariableType['name'] },
+          variable: { name: 'UnknownVariable' },
         },
       ]
 
@@ -610,7 +610,7 @@ await describe('B05 - OCPP20VariableManager', async () => {
         {
           attributeValue: '10',
           component: { name: OCPP20ComponentName.OCPPCommCtrlr },
-          variable: { name: 'InvalidVariable' as unknown as VariableType['name'] },
+          variable: { name: 'InvalidVariable' },
         },
         {
           attributeType: AttributeEnumType.Target,
index 3b4b82d8e73aedf751bfcaa458cfa618401a3b6c..525f1a934567cf25b71af168f9fd73c425ca2004 100644 (file)
@@ -70,7 +70,7 @@ await describe('OCPPServiceOperations', async () => {
         requestHandler.mock.calls.length >= 1,
         'request handler should have been called at least once'
       )
-      assert.strictEqual(requestHandler.mock.calls[0].arguments[1] as string, 'StopTransaction')
+      assert.strictEqual(requestHandler.mock.calls[0].arguments[1], 'StopTransaction')
     })
 
     await it('should send TransactionEvent(Ended) for OCPP 2.0 stations and return accepted: true', async () => {
@@ -90,7 +90,7 @@ await describe('OCPPServiceOperations', async () => {
         requestHandler.mock.calls.length >= 1,
         'request handler should have been called at least once'
       )
-      assert.strictEqual(requestHandler.mock.calls[0].arguments[1] as string, 'TransactionEvent')
+      assert.strictEqual(requestHandler.mock.calls[0].arguments[1], 'TransactionEvent')
     })
 
     await it('should throw OCPPError for unsupported OCPP version in stopTransactionOnConnector', async () => {
@@ -209,7 +209,7 @@ await describe('OCPPServiceOperations', async () => {
         requestHandler.mock.calls.length >= 1,
         'request handler should have been called at least once'
       )
-      assert.strictEqual(requestHandler.mock.calls[0].arguments[1] as string, 'StartTransaction')
+      assert.strictEqual(requestHandler.mock.calls[0].arguments[1], 'StartTransaction')
     })
 
     await it('should send TransactionEvent(Started) for OCPP 2.0 stations and return accepted: true', async () => {
@@ -228,7 +228,7 @@ await describe('OCPPServiceOperations', async () => {
         requestHandler.mock.calls.length >= 1,
         'request handler should have been called at least once'
       )
-      assert.strictEqual(requestHandler.mock.calls[0].arguments[1] as string, 'TransactionEvent')
+      assert.strictEqual(requestHandler.mock.calls[0].arguments[1], 'TransactionEvent')
     })
 
     await it('should generate transactionId for OCPP 2.0 when not pre-populated', async () => {
index 40ba2ca72131cd84d50b07a42f01892bf5587fa1..146e6f1a62b4944a59ef429b51d2bdca0822b426 100644 (file)
@@ -121,10 +121,7 @@ await describe('OCPPServiceUtils — pure functions', async () => {
       const obj = { nested: { deep: { created: date } } } as unknown as JsonType
       convertDateToISOString(obj)
       assert.deepStrictEqual(
-        ((obj as Record<string, unknown>).nested as Record<string, unknown>).deep as Record<
-          string,
-          unknown
-        >,
+        ((obj as Record<string, unknown>).nested as Record<string, unknown>).deep,
         { created: '2025-06-01T12:00:00.000Z' }
       )
     })
index 7ca34ca3e14432e4e683c156a8e3455a2b01ad7f..075a42b15c2153fac7f0f8c19197de5d350ccf26 100644 (file)
@@ -33,7 +33,7 @@ class TestableUIHttpServer extends UIHttpServer {
   }
 
   public getAcceptsGzip (): Map<UUIDv4, boolean> {
-    return Reflect.get(this, 'acceptsGzip') as Map<UUIDv4, boolean>
+    return Reflect.get(this, 'acceptsGzip')
   }
 
   public getResponseHandlersSize (): number {
index 6b86bac100f3d00abb2b4bc8d50eb6b7234cc0c5..c7a3aedd024c450cff7eaf9e0fb70a9437a61394 100644 (file)
@@ -127,14 +127,7 @@ class TestableUIMCPServer extends UIMCPServer {
       timeout: ReturnType<typeof setTimeout>
     }
   > {
-    return Reflect.get(this, 'pendingMcpRequests') as Map<
-      string,
-      {
-        reject: (error: Error) => void
-        resolve: (payload: ResponsePayload) => void
-        timeout: ReturnType<typeof setTimeout>
-      }
-    >
+    return Reflect.get(this, 'pendingMcpRequests')
   }
 
   public getPendingMcpRequestsSize (): number {
index 54b4375bebfa4f414035c4f375357c2fa4e1aade..76af0572d4c946849f9f8d77f9175a7c33988482 100644 (file)
@@ -249,7 +249,7 @@ await describe('MikroOrmStorage', async () => {
       stats.statisticsData.set('StatusNotification', {
         requestCount: 50,
         responseCount: 50,
-      } as unknown as Record<string, unknown>)
+      })
 
       // Act
       await storage.storePerformanceStatistics(stats)
index 66fff99f1671b7f752eea3b1e15247f9e583a7ca..33b91f362ef4b7591d9d068b4a5caf19fd6b5d26 100644 (file)
@@ -37,7 +37,7 @@ class TestableMongoDBStorage extends MongoDBStorage {
   }
 
   public getOpened (): boolean {
-    return Reflect.get(this, 'opened') as boolean
+    return Reflect.get(this, 'opened')
   }
 
   public setClient (client: MockMongoClient): void {
@@ -349,7 +349,7 @@ await describe('MongoDBStorage', async () => {
       stats.statisticsData.set('StatusNotification', {
         requestCount: 50,
         responseCount: 50,
-      } as unknown as Record<string, unknown>)
+      })
 
       // Act
       await storage.storePerformanceStatistics(stats)
@@ -395,7 +395,7 @@ await describe('MongoDBStorage', async () => {
       const failingClient: MockMongoClient = {
         close: async () => Promise.resolve(),
         connect: async () => Promise.resolve(),
-        db: () => ({ collection: () => failingCollection }) as unknown as MockDb,
+        db: () => ({ collection: () => failingCollection }),
       }
       storage.setClient(failingClient)
       storage.setOpened(true)
index 79240f098d2a070a65799ff10c7eab788e7d08bc..ae7b63c3d4bd1d89e7d976a34385b21c72e9eaea 100644 (file)
@@ -27,5 +27,5 @@ export function buildTestStatistics (id: string, name?: string): Statistics {
     name: name ?? `cs-${id}`,
     statisticsData: statsData,
     uri: 'ws://localhost:8080',
-  } as unknown as Statistics
+  }
 }
index 0fefb46020748c0f60f878119d2625a4f038fb67..a8e0098366e1183b3b50765faf53cb00d6cad250 100644 (file)
@@ -64,15 +64,15 @@ await describe('ChargingStationConfigurationUtils', async () => {
         internals.connectors.set(0, {
           availability: AvailabilityType.Operative,
           MeterValues: [],
-        } as ConnectorStatus)
+        })
         internals.connectors.set(1, {
           availability: AvailabilityType.Operative,
           bootStatus: 'Available',
           MeterValues: [],
           transactionEndedMeterValues: [{ sampledValue: [], timestamp: new Date() }],
-          transactionEndedMeterValuesSetInterval: interval2 as unknown as NodeJS.Timeout,
+          transactionEndedMeterValuesSetInterval: interval2,
           transactionEventQueue: [],
-          transactionUpdatedMeterValuesSetInterval: interval1 as unknown as NodeJS.Timeout,
+          transactionUpdatedMeterValuesSetInterval: interval1,
         } as unknown as ConnectorStatus)
 
         const result = buildConnectorsStatus(station)
@@ -133,11 +133,11 @@ await describe('ChargingStationConfigurationUtils', async () => {
       internals.connectors.set(0, {
         availability: AvailabilityType.Operative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
       internals.connectors.set(3, {
         availability: AvailabilityType.Inoperative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
 
       const result = buildConnectorsStatus(station)
 
@@ -164,7 +164,7 @@ await describe('ChargingStationConfigurationUtils', async () => {
         MeterValues: [],
         transactionEventQueue: [],
         transactionUpdatedMeterValuesSetInterval: undefined,
-      } as unknown as ConnectorStatus)
+      })
 
       internals.evses.set(0, {
         availability: AvailabilityType.Operative,
@@ -204,7 +204,7 @@ await describe('ChargingStationConfigurationUtils', async () => {
         transactionEndedMeterValuesSetInterval: undefined,
         transactionEventQueue: [],
         transactionUpdatedMeterValuesSetInterval: undefined,
-      } as unknown as ConnectorStatus)
+      })
 
       internals.evses.set(0, {
         availability: AvailabilityType.Operative,
@@ -242,17 +242,17 @@ await describe('ChargingStationConfigurationUtils', async () => {
       evseConnectors.set(1, {
         availability: AvailabilityType.Operative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
       evseConnectors.set(2, {
         availability: AvailabilityType.Inoperative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
 
       const evse0Connectors = new Map<number, ConnectorStatus>()
       evse0Connectors.set(0, {
         availability: AvailabilityType.Operative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
 
       internals.evses.set(0, {
         availability: AvailabilityType.Operative,
@@ -451,7 +451,7 @@ await describe('ChargingStationConfigurationUtils', async () => {
       internals.connectors.set(0, {
         availability: AvailabilityType.Operative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
       internals.connectors.set(1, {
         availability: AvailabilityType.Operative,
         MeterValues: [],
@@ -459,7 +459,7 @@ await describe('ChargingStationConfigurationUtils', async () => {
         transactionEndedMeterValuesSetInterval: undefined,
         transactionEventQueue: [],
         transactionUpdatedMeterValuesSetInterval: undefined,
-      } as unknown as ConnectorStatus)
+      })
 
       const result = buildConnectorEntries(station)
 
@@ -491,15 +491,15 @@ await describe('ChargingStationConfigurationUtils', async () => {
       internals.connectors.set(0, {
         availability: AvailabilityType.Operative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
       internals.connectors.set(3, {
         availability: AvailabilityType.Operative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
       internals.connectors.set(7, {
         availability: AvailabilityType.Inoperative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
 
       const result = buildConnectorEntries(station)
 
@@ -529,7 +529,7 @@ await describe('ChargingStationConfigurationUtils', async () => {
         transactionEndedMeterValuesSetInterval: undefined,
         transactionEventQueue: [],
         transactionUpdatedMeterValuesSetInterval: undefined,
-      } as unknown as ConnectorStatus)
+      })
 
       internals.evses.set(0, {
         availability: AvailabilityType.Operative,
@@ -580,11 +580,11 @@ await describe('ChargingStationConfigurationUtils', async () => {
       evse2Connectors.set(2, {
         availability: AvailabilityType.Operative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
       evse2Connectors.set(5, {
         availability: AvailabilityType.Inoperative,
         MeterValues: [],
-      } as ConnectorStatus)
+      })
 
       internals.evses.set(0, {
         availability: AvailabilityType.Operative,
index 67ff6c2586a30843dae7ebdb9aede45f50125c6a..f64cb8ed1a49d700a5dba2fb5d54d10d42a18de0 100644 (file)
@@ -150,7 +150,7 @@ await describe('Configuration', async () => {
     const originalData = internals.configurationData
     internals.configurationData = {
       stationTemplateUrls: [],
-    } as ConfigurationData
+    }
 
     try {
       const distribution = Configuration.getSupervisionUrlDistribution()
index 2b505057c2983e8426b5dd7101a4442c2b7a0a28..7b88c480a1b06233c5bcd558a23b21200553e3a1 100644 (file)
@@ -12,7 +12,7 @@ const toDataString = (data: WsWebSocket.Data): string => {
     return Buffer.from(data).toString('utf-8')
   }
   if (Array.isArray(data)) {
-    return Buffer.concat(data as Buffer[]).toString('utf-8')
+    return Buffer.concat(data).toString('utf-8')
   }
   return data
 }
index 8afabef7ee24fdc0937235d7d7904105946419f3..ce37e56d9df6611ff10c6372479cd041cb7c8074 100644 (file)
@@ -21,7 +21,7 @@ export const createAtgCommands = (program: Command): Command => {
     .option('--connector-ids <ids>', 'comma-separated connector IDs', parseCommaSeparatedInts)
     .action(async (hashIds: string[], options: { connectorIds?: number[] }) => {
       const payload: RequestPayload = {
-        ...(pickPresent(options as Record<string, unknown>, ['connectorIds']) as RequestPayload),
+        ...(pickPresent(options, ['connectorIds']) as RequestPayload),
         ...buildHashIdsPayload(hashIds),
       }
       await runAction(program, ProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR, payload)
@@ -33,7 +33,7 @@ export const createAtgCommands = (program: Command): Command => {
     .option('--connector-ids <ids>', 'comma-separated connector IDs', parseCommaSeparatedInts)
     .action(async (hashIds: string[], options: { connectorIds?: number[] }) => {
       const payload: RequestPayload = {
-        ...(pickPresent(options as Record<string, unknown>, ['connectorIds']) as RequestPayload),
+        ...(pickPresent(options, ['connectorIds']) as RequestPayload),
         ...buildHashIdsPayload(hashIds),
       }
       await runAction(program, ProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR, payload)
index d8c67310b7c8a505fce7adaaf3e232647933a65f..6ab5a4069af76e02af238d157be4f4ba6b292b35 100644 (file)
@@ -64,7 +64,7 @@ export const createOcppCommands = (program: Command): Command => {
         options: { data?: string; messageId?: string; payload?: string; vendorId?: string }
       ) => {
         const payload: RequestPayload = {
-          ...pickDefined(options as Record<string, unknown>, {
+          ...pickDefined(options, {
             data: 'data',
             messageId: 'messageId',
             vendorId: 'vendorId',
index 3e029c48bca1e17df23635943d56a1c44cd3e8b1..8a49f89d7d4fce72242b483906236d8fa64970d8 100644 (file)
@@ -60,7 +60,7 @@ export const createStationCommands = (program: Command): Command => {
       }) => {
         const payload: RequestPayload = {
           numberOfStations: options.count,
-          options: pickDefined(options as Record<string, unknown>, {
+          options: pickDefined(options, {
             autoStart: 'autoStart',
             baseName: 'baseName',
             fixedName: 'fixedName',
@@ -83,7 +83,7 @@ export const createStationCommands = (program: Command): Command => {
     .option('--delete-config', 'delete station configuration files')
     .action(async (hashIds: string[], options: { deleteConfig?: true }) => {
       const payload: RequestPayload = {
-        ...(pickDefined(options as Record<string, unknown>, {
+        ...(pickDefined(options, {
           deleteConfig: 'deleteConfiguration',
         }) as RequestPayload),
         ...buildHashIdsPayload(hashIds),
index 57962819e51051152017d742dd318976a03b6a86..a0839bd79344039bf7e3639a913260bc2a5e262a 100644 (file)
@@ -24,7 +24,7 @@ export const createSupervisionCommands = (program: Command): Command => {
       ) => {
         const payload: RequestPayload = {
           url: options.supervisionUrl,
-          ...pickDefined(options as Record<string, unknown>, {
+          ...pickDefined(options, {
             supervisionPassword: 'supervisionPassword',
             supervisionUser: 'supervisionUser',
           }),
index 135f215679b5129b8173f008962de0d68a4236ef..fdaa277f404e75478b011cf9446231ae046b79cf 100644 (file)
@@ -63,7 +63,7 @@ const loadConfigFile = async (
       if (typeof uiServer !== 'object') {
         throw new Error('Config uiServer must be an object')
       }
-      return uiServer as Partial<UIServerConfigurationSection>
+      return uiServer
     }
     throw new Error(`Config file '${targetPath}' must contain a JSON object`)
   } catch (error: unknown) {
index c983179400b584581608d7e6f8355dd15eb916a5..02c1911007bc90a5b39baabaa508b597c5433f1b 100644 (file)
@@ -266,7 +266,7 @@ await describe('format helpers', async () => {
             connectorId: 1,
             connectorStatus: {
               availability: OCPP16AvailabilityType.OPERATIVE,
-              status: undefined as unknown as OCPP16ChargePointStatus,
+              status: undefined,
             },
           },
         ]
index 74721a1b0951ea6ba15fe27d775addd4c4211ac4..014e8bf0ae96ac06d8315313c36d221ae0cb971d 100644 (file)
@@ -4,10 +4,10 @@ export const captureStream = (stream: 'stderr' | 'stdout', fn: () => void): stri
   const target = stream === 'stdout' ? process.stdout : process.stderr
   const chunks: string[] = []
   const original = target.write.bind(target)
-  target.write = ((chunk: string): boolean => {
+  target.write = (chunk: string): boolean => {
     chunks.push(chunk)
     return true
-  }) as typeof target.write
+  }
   try {
     fn()
   } finally {
index 2a38f635b0bbd6924b407628850ce7793ca0e073..fada4dea6959ff57fd726f31bfa446602631038c 100644 (file)
@@ -171,7 +171,7 @@ await describe('WS Adapter', async () => {
     adapter.onerror = event => {
       receivedMessage = event.message
     }
-    mockWs.onerror?.(42 as unknown as Error)
+    mockWs.onerror?.(42)
     assert.strictEqual(receivedMessage, 'Unknown error')
   })
 
index cfa2d8e8192ba464537d6910e02760091adf46ae..1109c48f6a10d0049a6c0aa7b08c2d0df7ba3f3f 100644 (file)
@@ -166,7 +166,7 @@ export class WebSocketClient {
       responsePayload == null ||
       typeof responsePayload !== 'object' ||
       !('status' in responsePayload) ||
-      typeof (responsePayload as { status: unknown }).status !== 'string'
+      typeof responsePayload.status !== 'string'
     ) {
       this.settleHandler(uuid, handler)
       handler.reject(new Error('Server sent malformed response payload'))
index c6eb457aba624a3f8212b14908a51c0a8249172c..737c2679ba129142f3c0468f07b2eb6aa40a9646 100644 (file)
@@ -86,7 +86,7 @@ export const createWsAdapter = (ws: RawWebSocket, options: WsAdapterOptions): We
     },
 
     get readyState (): WebSocketReadyState {
-      return ws.readyState as WebSocketReadyState
+      return ws.readyState
     },
 
     send (data: string): void {
index e0c8cf27dd0c791c0357b21e53fecdf9b5dbf86f..d8f0c16b719500f7e283b96b69f418d0c00a56bc 100644 (file)
@@ -29,7 +29,7 @@ const createMockRawWs = (): MockRawWs => ({
 await describe('generic WebSocket adapter factory', async () => {
   await it('should apply dataConverter to message data', () => {
     const mockWs = createMockRawWs()
-    const adapter = createWsAdapter(mockWs as never, {
+    const adapter = createWsAdapter(mockWs, {
       dataConverter: data => `converted:${String(data)}`,
     })
     let receivedData: string | undefined
@@ -42,7 +42,7 @@ await describe('generic WebSocket adapter factory', async () => {
 
   await it('should use custom errorDefault in onerror fallback', () => {
     const mockWs = createMockRawWs()
-    const adapter = createWsAdapter(mockWs as never, {
+    const adapter = createWsAdapter(mockWs, {
       dataConverter: data => data as string,
       errorDefault: 'Custom fallback',
     })
@@ -56,7 +56,7 @@ await describe('generic WebSocket adapter factory', async () => {
 
   await it('should default errorDefault to WebSocket error', () => {
     const mockWs = createMockRawWs()
-    const adapter = createWsAdapter(mockWs as never, {
+    const adapter = createWsAdapter(mockWs, {
       dataConverter: data => data as string,
     })
     let receivedMessage: string | undefined
@@ -78,7 +78,7 @@ await describe('generic WebSocket adapter factory', async () => {
       sentData = data
     }
     mockWs.readyState = WebSocketReadyState.CONNECTING
-    const adapter = createWsAdapter(mockWs as never, {
+    const adapter = createWsAdapter(mockWs, {
       dataConverter: data => data as string,
     })
     adapter.close(1000)
@@ -90,7 +90,7 @@ await describe('generic WebSocket adapter factory', async () => {
 
   await it('should forward onclose and onopen events', () => {
     const mockWs = createMockRawWs()
-    const adapter = createWsAdapter(mockWs as never, {
+    const adapter = createWsAdapter(mockWs, {
       dataConverter: data => data as string,
     })
     let closeCode: number | undefined
index 869afc854a65f0d973f8182622d58aefc03e8777..772d5daad09d297e0d6399cc41d67f977236cdc5 100644 (file)
@@ -30,7 +30,7 @@ await describe('browser WebSocket adapter', async () => {
   // Test: MessageEvent data extraction
   await it('should extract data from MessageEvent in onmessage', () => {
     const mockWs = createMockBrowserWs()
-    const adapter = createBrowserWsAdapter(mockWs as never)
+    const adapter = createBrowserWsAdapter(mockWs)
     let receivedData: string | undefined
     adapter.onmessage = event => {
       receivedData = event.data
@@ -42,7 +42,7 @@ await describe('browser WebSocket adapter', async () => {
   // Test: onerror produces WebSocketLike error shape
   await it('should produce error shape from browser Event in onerror', () => {
     const mockWs = createMockBrowserWs()
-    const adapter = createBrowserWsAdapter(mockWs as never)
+    const adapter = createBrowserWsAdapter(mockWs)
     let receivedError: unknown
     let receivedMessage: string | undefined
     adapter.onerror = event => {
@@ -57,7 +57,7 @@ await describe('browser WebSocket adapter', async () => {
   // Test: onclose extracts code and reason
   await it('should extract code and reason from CloseEvent in onclose', () => {
     const mockWs = createMockBrowserWs()
-    const adapter = createBrowserWsAdapter(mockWs as never)
+    const adapter = createBrowserWsAdapter(mockWs)
     let receivedCode: number | undefined
     let receivedReason: string | undefined
     adapter.onclose = event => {
@@ -72,7 +72,7 @@ await describe('browser WebSocket adapter', async () => {
   // Test: onopen forwarded
   await it('should forward onopen callback', () => {
     const mockWs = createMockBrowserWs()
-    const adapter = createBrowserWsAdapter(mockWs as never)
+    const adapter = createBrowserWsAdapter(mockWs)
     let opened = false
     adapter.onopen = () => {
       opened = true
@@ -88,7 +88,7 @@ await describe('browser WebSocket adapter', async () => {
     mockWs.send = (data: string) => {
       sentData = data
     }
-    const adapter = createBrowserWsAdapter(mockWs as never)
+    const adapter = createBrowserWsAdapter(mockWs)
     adapter.send('{"test":1}')
     assert.strictEqual(sentData, '{"test":1}')
   })
@@ -97,7 +97,7 @@ await describe('browser WebSocket adapter', async () => {
   await it('should delegate readyState to browser WebSocket', () => {
     const mockWs = createMockBrowserWs()
     mockWs.readyState = WebSocketReadyState.CONNECTING
-    const adapter = createBrowserWsAdapter(mockWs as never)
+    const adapter = createBrowserWsAdapter(mockWs)
     assert.strictEqual(adapter.readyState, WebSocketReadyState.CONNECTING)
   })
 
@@ -108,7 +108,7 @@ await describe('browser WebSocket adapter', async () => {
     mockWs.close = (code?: number) => {
       closedCode = code
     }
-    const adapter = createBrowserWsAdapter(mockWs as never)
+    const adapter = createBrowserWsAdapter(mockWs)
     adapter.close(1000)
     assert.strictEqual(closedCode, 1000)
   })
index a80838cb950ed289bb897ac7f43deee07e8f63d7..d226e54f0a3c34b0f44e2418b22494b265f4e6cc 100644 (file)
@@ -70,7 +70,7 @@ describe('useTheme', () => {
   it('should ignore invalid theme name', () => {
     const { activeThemeId, switchTheme } = useTheme()
     const before = activeThemeId.value
-    const switchThemeUntyped = switchTheme as (name: string) => void
+    const switchThemeUntyped = switchTheme
     switchThemeUntyped('nonexistent')
     expect(activeThemeId.value).toBe(before)
   })
index d8bdc976e3401e77b26c6bcfd839e75ed7fc5869..077c6be6f8685ed9b7386be5db52b9167b49b1ed 100644 (file)
@@ -147,7 +147,7 @@ describe('ConnectorRow', () => {
     })
 
     it('should label "Stop ATG" when running', () => {
-      wrapper = mountRow({ atgStatus: { start: true } as Status })
+      wrapper = mountRow({ atgStatus: { start: true } })
       expect(wrapper.text()).toContain('Stop ATG')
     })
 
@@ -160,7 +160,7 @@ describe('ConnectorRow', () => {
     })
 
     it('should call stopAutomaticTransactionGenerator when stopping', async () => {
-      wrapper = mountRow({ atgStatus: { start: true } as Status })
+      wrapper = mountRow({ atgStatus: { start: true } })
       const chip = wrapper.find('.modern-btn--chip')
       await chip.trigger('click')
       await flushPromises()
index 1eefad8418d390993b150a780a298b502189f39c..2762f1e979993d9d82e560729fd2d60c9f8c5d82 100644 (file)
@@ -371,7 +371,7 @@ describe('Dialogs', () => {
             },
           ],
           status: ResponseStatus.FAILURE,
-        } as never)
+        })
       )
       await wrapper.find('#modern-tx-idtag').setValue('BAD-TAG')
       await wrapper.findAll('.stub-modal__foot button')[1].trigger('click')
@@ -429,7 +429,7 @@ describe('Dialogs', () => {
             },
           ],
           status: ResponseStatus.FAILURE,
-        } as never)
+        })
       )
       await wrapper.find('#modern-auth-tag').setValue('BAD')
       await wrapper.findAll('.stub-modal__foot button')[1].trigger('click')