Use the fixed JsonType definition where appropriate
authorJérôme Benoit <jerome.benoit@sap.com>
Fri, 6 May 2022 19:56:24 +0000 (21:56 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Fri, 6 May 2022 19:56:24 +0000 (21:56 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
13 files changed:
src/charging-station/ChargingStation.ts
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/OCPPIncomingRequestService.ts
src/charging-station/ocpp/OCPPRequestService.ts
src/charging-station/ocpp/OCPPResponseService.ts
src/charging-station/ui-websocket-services/AbstractUIService.ts
src/charging-station/ui-websocket-services/UIService001.ts
src/exception/OCPPError.ts
src/types/UIProtocol.ts
src/types/ocpp/Requests.ts
src/types/ocpp/Responses.ts

index d070704303e08f5be8b796f1a78c037101a34f34..e5759c33be3a2114e0df6c7eb04131cdcafb4ff7 100644 (file)
@@ -64,7 +64,7 @@ import Constants from '../utils/Constants';
 import { ErrorType } from '../types/ocpp/ErrorType';
 import { FileType } from '../types/FileType';
 import FileUtils from '../utils/FileUtils';
-import { JsonObject } from '../types/JsonType';
+import { JsonType } from '../types/JsonType';
 import { MessageType } from '../types/ocpp/MessageType';
 import OCPP16IncomingRequestService from './ocpp/1.6/OCPP16IncomingRequestService';
 import OCPP16RequestService from './ocpp/1.6/OCPP16RequestService';
@@ -1572,14 +1572,14 @@ export default class ChargingStation {
     let messageType: number;
     let messageId: string;
     let commandName: IncomingRequestCommand;
-    let commandPayload: JsonObject;
+    let commandPayload: JsonType;
     let errorType: ErrorType;
     let errorMessage: string;
-    let errorDetails: JsonObject;
-    let responseCallback: (payload: JsonObject, requestPayload: JsonObject) => void;
+    let errorDetails: JsonType;
+    let responseCallback: (payload: JsonType, requestPayload: JsonType) => void;
     let errorCallback: (error: OCPPError, requestStatistic?: boolean) => void;
     let requestCommandName: RequestCommand | IncomingRequestCommand;
-    let requestPayload: JsonObject;
+    let requestPayload: JsonType;
     let cachedRequest: CachedRequest;
     let errMsg: string;
     try {
@@ -1627,7 +1627,7 @@ export default class ChargingStation {
                 ErrorType.PROTOCOL_ERROR,
                 `Cached request for message id ${messageId} response is not iterable`,
                 null,
-                cachedRequest as unknown as JsonObject
+                cachedRequest as unknown as JsonType
               );
             }
             logger.debug(
@@ -1657,7 +1657,7 @@ export default class ChargingStation {
                 ErrorType.PROTOCOL_ERROR,
                 `Cached request for message id ${messageId} error response is not iterable`,
                 null,
-                cachedRequest as unknown as JsonObject
+                cachedRequest as unknown as JsonType
               );
             }
             logger.debug(
index 0241e17730c780acad51350611d6354c853b141e..8dc9135fa7b80e314b0880214fd029f0f7c9a8db 100644 (file)
@@ -64,7 +64,7 @@ import Constants from '../../../utils/Constants';
 import { DefaultResponse } from '../../../types/ocpp/Responses';
 import { ErrorType } from '../../../types/ocpp/ErrorType';
 import { IncomingRequestHandler } from '../../../types/ocpp/Requests';
-import { JsonObject } from '../../../types/JsonType';
+import { JsonType } from '../../../types/JsonType';
 import { OCPP16ChargePointErrorCode } from '../../../types/ocpp/1.6/ChargePointErrorCode';
 import { OCPP16ChargePointStatus } from '../../../types/ocpp/1.6/ChargePointStatus';
 import { OCPP16DiagnosticsStatus } from '../../../types/ocpp/1.6/DiagnosticsStatus';
@@ -129,9 +129,9 @@ export default class OCPP16IncomingRequestService extends OCPPIncomingRequestSer
   public async incomingRequestHandler(
     messageId: string,
     commandName: OCPP16IncomingRequestCommand,
-    commandPayload: JsonObject
+    commandPayload: JsonType
   ): Promise<void> {
-    let response: JsonObject;
+    let response: JsonType;
     if (
       this.chargingStation.getOcppStrictCompliance() &&
       this.chargingStation.isInPendingState() &&
index 2a4165c491471064aca600a321b838ecfe2259ff..eb3474809edca7e437ef223443137e9f6d23b4d0 100644 (file)
@@ -1,9 +1,10 @@
 // Partial Copyright Jerome Benoit. 2021. All Rights Reserved.
 
+import { JsonObject, JsonType } from '../../../types/JsonType';
+
 import type ChargingStation from '../../ChargingStation';
 import Constants from '../../../utils/Constants';
 import { ErrorType } from '../../../types/ocpp/ErrorType';
-import { JsonObject } from '../../../types/JsonType';
 import { OCPP16RequestCommand } from '../../../types/ocpp/1.6/Requests';
 import { OCPP16ServiceUtils } from './OCPP16ServiceUtils';
 import OCPPError from '../../../exception/OCPPError';
@@ -22,9 +23,9 @@ export default class OCPP16RequestService extends OCPPRequestService {
     super(chargingStation, ocppResponseService);
   }
 
-  public async requestHandler<Request extends JsonObject, Response extends JsonObject>(
+  public async requestHandler<Request extends JsonType, Response extends JsonType>(
     commandName: OCPP16RequestCommand,
-    commandParams?: JsonObject,
+    commandParams?: JsonType,
     params?: RequestParams
   ): Promise<Response> {
     if (Object.values(OCPP16RequestCommand).includes(commandName)) {
@@ -43,11 +44,12 @@ export default class OCPP16RequestService extends OCPPRequestService {
     );
   }
 
-  private buildRequestPayload<Request extends JsonObject>(
+  private buildRequestPayload<Request extends JsonType>(
     commandName: OCPP16RequestCommand,
-    commandParams?: JsonObject
+    commandParams?: JsonType
   ): Request {
     let connectorId: number;
+    commandParams = commandParams as JsonObject;
     switch (commandName) {
       case OCPP16RequestCommand.AUTHORIZE:
         return {
index c8946d439f84d08e5421d3fa4e330e12d9ffb74a..5a60af632a0372460c75cf5f739cfd6ddaa8f0c2 100644 (file)
@@ -26,7 +26,7 @@ import {
 
 import type ChargingStation from '../../ChargingStation';
 import { ErrorType } from '../../../types/ocpp/ErrorType';
-import { JsonObject } from '../../../types/JsonType';
+import { JsonType } from '../../../types/JsonType';
 import { OCPP16ChargePointErrorCode } from '../../../types/ocpp/1.6/ChargePointErrorCode';
 import { OCPP16ChargePointStatus } from '../../../types/ocpp/1.6/ChargePointStatus';
 import { OCPP16ServiceUtils } from './OCPP16ServiceUtils';
@@ -60,8 +60,8 @@ export default class OCPP16ResponseService extends OCPPResponseService {
 
   public async responseHandler(
     commandName: OCPP16RequestCommand,
-    payload: JsonObject,
-    requestPayload: JsonObject
+    payload: JsonType,
+    requestPayload: JsonType
   ): Promise<void> {
     if (
       this.chargingStation.isRegistered() ||
index d7d14c2ecbf3f674a27dbe03e9e099c62a920b31..b5f607f534abb3e98a8dfa0c1eb8842740fc88c6 100644 (file)
@@ -1,7 +1,7 @@
 import type ChargingStation from '../ChargingStation';
 import { HandleErrorParams } from '../../types/Error';
 import { IncomingRequestCommand } from '../../types/ocpp/Requests';
-import { JsonObject } from '../../types/JsonType';
+import { JsonType } from '../../types/JsonType';
 import logger from '../../utils/Logger';
 
 export default abstract class OCPPIncomingRequestService {
@@ -50,6 +50,6 @@ export default abstract class OCPPIncomingRequestService {
   public abstract incomingRequestHandler(
     messageId: string,
     commandName: IncomingRequestCommand,
-    commandPayload: JsonObject
+    commandPayload: JsonType
   ): Promise<void>;
 }
index c19944bace4de2a511e2e8303a258cc51c134633..f8b6b227a90b3936e3a167d9f22f91ef21138fd5 100644 (file)
@@ -6,13 +6,13 @@ import {
   RequestParams,
   ResponseType,
 } from '../../types/ocpp/Requests';
+import { JsonObject, JsonType } from '../../types/JsonType';
 
 import type ChargingStation from '../ChargingStation';
 import Constants from '../../utils/Constants';
 import { EmptyObject } from '../../types/EmptyObject';
 import { ErrorType } from '../../types/ocpp/ErrorType';
 import { HandleErrorParams } from '../../types/Error';
-import { JsonObject } from '../../types/JsonType';
 import { MessageType } from '../../types/ocpp/MessageType';
 import OCPPError from '../../exception/OCPPError';
 import type OCPPResponseService from './OCPPResponseService';
@@ -56,7 +56,7 @@ export default abstract class OCPPRequestService {
 
   public async sendResponse(
     messageId: string,
-    messagePayload: JsonObject,
+    messagePayload: JsonType,
     commandName: IncomingRequestCommand
   ): Promise<ResponseType> {
     try {
@@ -92,7 +92,7 @@ export default abstract class OCPPRequestService {
 
   protected async sendMessage(
     messageId: string,
-    messagePayload: JsonObject,
+    messagePayload: JsonType,
     commandName: RequestCommand,
     params: RequestParams = {
       skipBufferingOnError: false,
@@ -114,7 +114,7 @@ export default abstract class OCPPRequestService {
 
   private async internalSendMessage(
     messageId: string,
-    messagePayload: JsonObject | OCPPError,
+    messagePayload: JsonType | OCPPError,
     messageType: MessageType,
     commandName?: RequestCommand | IncomingRequestCommand,
     params: RequestParams = {
@@ -169,7 +169,7 @@ export default abstract class OCPPRequestService {
               ErrorType.GENERIC_ERROR,
               `WebSocket closed for buffered message id '${messageId}' with content '${messageToSend}'`,
               commandName,
-              (messagePayload?.details as JsonObject) ?? {}
+              (messagePayload as JsonObject)?.details ?? {}
             );
             if (messageType === MessageType.CALL_MESSAGE) {
               // Reject it but keep the request in the cache
@@ -183,7 +183,7 @@ export default abstract class OCPPRequestService {
                 ErrorType.GENERIC_ERROR,
                 `WebSocket closed for non buffered message id '${messageId}' with content '${messageToSend}'`,
                 commandName,
-                (messagePayload?.details as JsonObject) ?? {}
+                (messagePayload as JsonObject)?.details ?? {}
               ),
               false
             );
@@ -201,8 +201,8 @@ export default abstract class OCPPRequestService {
            * @param requestPayload
            */
           async function responseCallback(
-            payload: JsonObject,
-            requestPayload: JsonObject
+            payload: JsonType,
+            requestPayload: JsonType
           ): Promise<void> {
             if (self.chargingStation.getEnableStatistics()) {
               self.chargingStation.performanceStatistics.addRequestStatistic(
@@ -253,7 +253,7 @@ export default abstract class OCPPRequestService {
           ErrorType.GENERIC_ERROR,
           `Timeout for message id '${messageId}'`,
           commandName,
-          (messagePayload?.details as JsonObject) ?? {}
+          (messagePayload as JsonObject)?.details ?? {}
         ),
         () => {
           messageType === MessageType.CALL_MESSAGE &&
@@ -270,10 +270,10 @@ export default abstract class OCPPRequestService {
 
   private buildMessageToSend(
     messageId: string,
-    messagePayload: JsonObject | OCPPError,
+    messagePayload: JsonType | OCPPError,
     messageType: MessageType,
     commandName?: RequestCommand | IncomingRequestCommand,
-    responseCallback?: (payload: JsonObject, requestPayload: JsonObject) => Promise<void>,
+    responseCallback?: (payload: JsonType, requestPayload: JsonType) => Promise<void>,
     errorCallback?: (error: OCPPError, requestStatistic?: boolean) => void
   ): string {
     let messageToSend: string;
@@ -286,7 +286,7 @@ export default abstract class OCPPRequestService {
           responseCallback,
           errorCallback,
           commandName,
-          messagePayload as JsonObject,
+          messagePayload as JsonType,
         ]);
         messageToSend = JSON.stringify([
           messageType,
@@ -342,9 +342,9 @@ export default abstract class OCPPRequestService {
   }
 
   // eslint-disable-next-line @typescript-eslint/no-unused-vars
-  public abstract requestHandler<Request extends JsonObject, Response extends JsonObject>(
+  public abstract requestHandler<Request extends JsonType, Response extends JsonType>(
     commandName: RequestCommand,
-    commandParams?: JsonObject,
+    commandParams?: JsonType,
     params?: RequestParams
   ): Promise<Response>;
 }
index f45d1b43c076e758bdd1e86bbd15677186bbc7b6..e838bd9fb1d4ae2280ca08d2e9516917ffac37fc 100644 (file)
@@ -1,5 +1,5 @@
 import type ChargingStation from '../ChargingStation';
-import { JsonObject } from '../../types/JsonType';
+import { JsonType } from '../../types/JsonType';
 import { RequestCommand } from '../../types/ocpp/Requests';
 
 export default abstract class OCPPResponseService {
@@ -26,7 +26,7 @@ export default abstract class OCPPResponseService {
 
   public abstract responseHandler(
     commandName: RequestCommand,
-    payload: JsonObject,
-    requestPayload: JsonObject
+    payload: JsonType,
+    requestPayload: JsonType
   ): Promise<void>;
 }
index 9fd577cdc37ec5b2c896edc76f1276ed93f097b0..42cfa428f1373cc36e1b67bca96661d1eebf6b19 100644 (file)
@@ -1,7 +1,7 @@
 import { ProtocolCommand, ProtocolRequestHandler } from '../../types/UIProtocol';
 
 import BaseError from '../../exception/BaseError';
-import { JsonObject } from '../../types/JsonType';
+import { JsonType } from '../../types/JsonType';
 import UIWebSocketServer from '../UIWebSocketServer';
 import logger from '../../utils/Logger';
 
@@ -16,12 +16,12 @@ export default abstract class AbstractUIService {
     ]);
   }
 
-  public async messageHandler(command: ProtocolCommand, payload: JsonObject): Promise<void> {
-    let messageResponse: JsonObject;
+  public async messageHandler(command: ProtocolCommand, payload: JsonType): Promise<void> {
+    let messageResponse: JsonType;
     if (this.messageHandlers.has(command)) {
       try {
         // Call the method to build the message response
-        messageResponse = (await this.messageHandlers.get(command)(payload)) as JsonObject;
+        messageResponse = (await this.messageHandlers.get(command)(payload)) as JsonType;
       } catch (error) {
         // Log
         logger.error(this.uiWebSocketServer.logPrefix() + ' Handle message error: %j', error);
@@ -41,7 +41,7 @@ export default abstract class AbstractUIService {
     this.uiWebSocketServer.broadcastToClients(this.buildProtocolMessage(command, messageResponse));
   }
 
-  protected buildProtocolMessage(command: ProtocolCommand, payload: JsonObject): string {
+  protected buildProtocolMessage(command: ProtocolCommand, payload: JsonType): string {
     return JSON.stringify([command, payload]);
   }
 
index 82bafd78f246c59f7b53d8f571d53223b273ac4b..18fb66a9d4a08589883bcb3569622bccac817034 100644 (file)
@@ -1,7 +1,7 @@
 import { ProtocolCommand, ProtocolRequestHandler } from '../../types/UIProtocol';
 
 import AbstractUIService from './AbstractUIService';
-import { JsonObject } from '../../types/JsonType';
+import { JsonType } from '../../types/JsonType';
 import UIWebSocketServer from '../UIWebSocketServer';
 
 export default class UIService001 extends AbstractUIService {
@@ -17,6 +17,6 @@ export default class UIService001 extends AbstractUIService {
     );
   }
 
-  private handleStartTransaction(payload: JsonObject): void {}
-  private handleStopTransaction(payload: JsonObject): void {}
+  private handleStartTransaction(payload: JsonType): void {}
+  private handleStopTransaction(payload: JsonType): void {}
 }
index bfe64fb43a657049e27ce451787de42933b310f6..e67f3c95f56c38b81a22e1c70a1be191199e610c 100644 (file)
@@ -4,18 +4,18 @@ import { IncomingRequestCommand, RequestCommand } from '../types/ocpp/Requests';
 
 import BaseError from './BaseError';
 import { ErrorType } from '../types/ocpp/ErrorType';
-import { JsonObject } from '../types/JsonType';
+import { JsonType } from '../types/JsonType';
 
 export default class OCPPError extends BaseError {
   code: ErrorType;
   command?: RequestCommand | IncomingRequestCommand;
-  details?: JsonObject;
+  details?: JsonType;
 
   constructor(
     code: ErrorType,
     message: string,
     command?: RequestCommand | IncomingRequestCommand,
-    details?: JsonObject
+    details?: JsonType
   ) {
     super(message);
 
index 4ff499b48cfbbd52a03c5507709752782271d346..6d2478924285e3b97dfa67c1de04b28c0272bee5 100644 (file)
@@ -1,4 +1,4 @@
-import { JsonObject } from './JsonType';
+import { JsonType } from './JsonType';
 
 export enum Protocol {
   UI = 'ui',
@@ -15,8 +15,8 @@ export enum ProtocolCommand {
   UNKNOWN = 'unknown',
 }
 
-export type ProtocolRequest = [ProtocolCommand, JsonObject];
+export type ProtocolRequest = [ProtocolCommand, JsonType];
 
 export type ProtocolRequestHandler = (
-  payload: JsonObject
-) => void | Promise<void> | JsonObject | Promise<JsonObject>;
+  payload: JsonType
+) => void | Promise<void> | JsonType | Promise<JsonType>;
index 60724254c8a61390bcee73787bfc4facdaa8514f..16a79c05d2cf74365cd09f2e102af269cfe08b0a 100644 (file)
@@ -7,33 +7,26 @@ import {
   OCPP16StatusNotificationRequest,
 } from './1.6/Requests';
 
-import { JsonObject } from '../JsonType';
+import { JsonType } from '../JsonType';
 import { MessageType } from './MessageType';
 import { OCPP16DiagnosticsStatus } from './1.6/DiagnosticsStatus';
 import { OCPP16MeterValuesRequest } from './1.6/MeterValues';
 import OCPPError from '../../exception/OCPPError';
 
-export type OutgoingRequest = [MessageType.CALL_MESSAGE, string, RequestCommand, JsonObject];
+export type OutgoingRequest = [MessageType.CALL_MESSAGE, string, RequestCommand, JsonType];
 
-export type IncomingRequest = [
-  MessageType.CALL_MESSAGE,
-  string,
-  IncomingRequestCommand,
-  JsonObject
-];
+export type IncomingRequest = [MessageType.CALL_MESSAGE, string, IncomingRequestCommand, JsonType];
 
 export type CachedRequest = [
-  (payload: JsonObject, requestPayload: JsonObject) => void,
+  (payload: JsonType, requestPayload: JsonType) => void,
   (error: OCPPError, requestStatistic?: boolean) => void,
   RequestCommand | IncomingRequestCommand,
-  JsonObject
+  JsonType
 ];
 
-export type IncomingRequestHandler = (
-  commandPayload: JsonObject
-) => JsonObject | Promise<JsonObject>;
+export type IncomingRequestHandler = (commandPayload: JsonType) => JsonType | Promise<JsonType>;
 
-export type ResponseType = JsonObject | OCPPError;
+export type ResponseType = JsonType | OCPPError;
 
 export interface RequestParams {
   skipBufferingOnError?: boolean;
index db44800c4e0c9d44eb3db03eab6d746d14190a34..baefc637ba389df281b8136323137b6312891451 100644 (file)
@@ -12,17 +12,17 @@ import {
 } from './1.6/Responses';
 
 import { ErrorType } from './ErrorType';
-import { JsonObject } from '../JsonType';
+import { JsonType } from '../JsonType';
 import { MessageType } from './MessageType';
 import { OCPP16MeterValuesResponse } from './1.6/MeterValues';
 
-export type Response = [MessageType.CALL_RESULT_MESSAGE, string, JsonObject];
+export type Response = [MessageType.CALL_RESULT_MESSAGE, string, JsonType];
 
-export type ErrorResponse = [MessageType.CALL_ERROR_MESSAGE, string, ErrorType, string, JsonObject];
+export type ErrorResponse = [MessageType.CALL_ERROR_MESSAGE, string, ErrorType, string, JsonType];
 
 export type ResponseHandler = (
-  payload: JsonObject,
-  requestPayload?: JsonObject
+  payload: JsonType,
+  requestPayload?: JsonType
 ) => void | Promise<void>;
 
 export type BootNotificationResponse = OCPP16BootNotificationResponse;