chore: switch coding style to JS standard
[e-mobility-charging-stations-simulator.git] / src / charging-station / broadcast-channel / UIServiceWorkerBroadcastChannel.ts
index 62588e0aa4f11925cf9d084eca1fbae108d72c6b..57b4bc788fecf56ad3a9b467f7162d636634ad09 100644 (file)
@@ -1,79 +1,82 @@
-import { WorkerBroadcastChannel } from './WorkerBroadcastChannel.js';
+import { WorkerBroadcastChannel } from './WorkerBroadcastChannel.js'
 import {
   type BroadcastChannelResponse,
   type BroadcastChannelResponsePayload,
   type MessageEvent,
   type ResponsePayload,
-  ResponseStatus,
-} from '../../types/index.js';
-import { isNullOrUndefined, logger } from '../../utils/index.js';
-import type { AbstractUIService } from '../ui-server/ui-services/AbstractUIService.js';
+  ResponseStatus
+} from '../../types/index.js'
+import { isNullOrUndefined, logger } from '../../utils/index.js'
+import type { AbstractUIService } from '../ui-server/ui-services/AbstractUIService.js'
 
-const moduleName = 'UIServiceWorkerBroadcastChannel';
+const moduleName = 'UIServiceWorkerBroadcastChannel'
 
 interface Responses {
-  responsesExpected: number;
-  responsesReceived: number;
-  responses: BroadcastChannelResponsePayload[];
+  responsesExpected: number
+  responsesReceived: number
+  responses: BroadcastChannelResponsePayload[]
 }
 
 export class UIServiceWorkerBroadcastChannel extends WorkerBroadcastChannel {
-  private readonly uiService: AbstractUIService;
-  private readonly responses: Map<string, Responses>;
+  private readonly uiService: AbstractUIService
+  private readonly responses: Map<string, Responses>
 
-  constructor(uiService: AbstractUIService) {
-    super();
-    this.uiService = uiService;
-    this.onmessage = this.responseHandler.bind(this) as (message: unknown) => void;
-    this.onmessageerror = this.messageErrorHandler.bind(this) as (message: unknown) => void;
-    this.responses = new Map<string, Responses>();
+  constructor (uiService: AbstractUIService) {
+    super()
+    this.uiService = uiService
+    this.onmessage = this.responseHandler.bind(this) as (message: unknown) => void
+    this.onmessageerror = this.messageErrorHandler.bind(this) as (message: unknown) => void
+    this.responses = new Map<string, Responses>()
   }
 
-  private responseHandler(messageEvent: MessageEvent): void {
-    const validatedMessageEvent = this.validateMessageEvent(messageEvent);
+  private responseHandler (messageEvent: MessageEvent): void {
+    const validatedMessageEvent = this.validateMessageEvent(messageEvent)
     if (validatedMessageEvent === false) {
-      return;
+      return
     }
-    if (this.isRequest(validatedMessageEvent.data) === true) {
-      return;
+    if (this.isRequest(validatedMessageEvent.data)) {
+      return
     }
-    const [uuid, responsePayload] = validatedMessageEvent.data as BroadcastChannelResponse;
-    if (this.responses.has(uuid) === false) {
+    const [uuid, responsePayload] = validatedMessageEvent.data as BroadcastChannelResponse
+    if (!this.responses.has(uuid)) {
       this.responses.set(uuid, {
         responsesExpected: this.uiService.getBroadcastChannelExpectedResponses(uuid),
         responsesReceived: 1,
-        responses: [responsePayload],
-      });
+        responses: [responsePayload]
+      })
     } else if (
+      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
       this.responses.get(uuid)!.responsesReceived <= this.responses.get(uuid)!.responsesExpected
     ) {
-      ++this.responses.get(uuid)!.responsesReceived;
-      this.responses.get(uuid)?.responses.push(responsePayload);
+      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+      ++this.responses.get(uuid)!.responsesReceived
+      this.responses.get(uuid)?.responses.push(responsePayload)
     }
     if (
       this.responses.get(uuid)?.responsesReceived === this.responses.get(uuid)?.responsesExpected
     ) {
-      this.uiService.sendResponse(uuid, this.buildResponsePayload(uuid));
-      this.responses.delete(uuid);
-      this.uiService.deleteBroadcastChannelRequest(uuid);
+      this.uiService.sendResponse(uuid, this.buildResponsePayload(uuid))
+      this.responses.delete(uuid)
+      this.uiService.deleteBroadcastChannelRequest(uuid)
     }
   }
 
-  private buildResponsePayload(uuid: string): ResponsePayload {
+  private buildResponsePayload (uuid: string): ResponsePayload {
     const responsesStatus =
       this.responses
         .get(uuid)
         ?.responses.every(({ status }) => status === ResponseStatus.SUCCESS) === true
         ? ResponseStatus.SUCCESS
-        : ResponseStatus.FAILURE;
+        : ResponseStatus.FAILURE
     return {
       status: responsesStatus,
       hashIdsSucceeded: this.responses
         .get(uuid)
         ?.responses.map(({ status, hashId }) => {
           if (hashId !== undefined && status === ResponseStatus.SUCCESS) {
-            return hashId;
+            return hashId
           }
+          return undefined
         })
         .filter((hashId) => !isNullOrUndefined(hashId)) as string[],
       ...(responsesStatus === ResponseStatus.FAILURE && {
@@ -81,28 +84,30 @@ export class UIServiceWorkerBroadcastChannel extends WorkerBroadcastChannel {
           .get(uuid)
           ?.responses.map(({ status, hashId }) => {
             if (hashId !== undefined && status === ResponseStatus.FAILURE) {
-              return hashId;
+              return hashId
             }
+            return undefined
           })
-          .filter((hashId) => !isNullOrUndefined(hashId)) as string[],
+          .filter((hashId) => !isNullOrUndefined(hashId)) as string[]
       }),
       ...(responsesStatus === ResponseStatus.FAILURE && {
         responsesFailed: this.responses
           .get(uuid)
           ?.responses.map((response) => {
             if (response !== undefined && response.status === ResponseStatus.FAILURE) {
-              return response;
+              return response
             }
+            return undefined
           })
-          .filter((response) => !isNullOrUndefined(response)) as BroadcastChannelResponsePayload[],
-      }),
-    };
+          .filter((response) => !isNullOrUndefined(response)) as BroadcastChannelResponsePayload[]
+      })
+    }
   }
 
-  private messageErrorHandler(messageEvent: MessageEvent): void {
+  private messageErrorHandler (messageEvent: MessageEvent): void {
     logger.error(
       `${this.uiService.logPrefix(moduleName, 'messageErrorHandler')} Error at handling message:`,
-      messageEvent,
-    );
+      messageEvent
+    )
   }
 }