build(deps): apply updates
[e-mobility-charging-stations-simulator.git] / src / charging-station / WorkerBroadcastChannel.ts
index b19bf946dc633db77e5c690e75dd4b921de6868a..f3c168bdc8f1057611d1b8768d6d1dde0364c627 100644 (file)
@@ -1,14 +1,16 @@
-import { BroadcastChannel } from 'worker_threads';
+import { BroadcastChannel } from 'node:worker_threads';
 
-import BaseError from '../exception/BaseError';
-import type { JsonType } from '../types/JsonType';
 import type {
   BroadcastChannelRequest,
   BroadcastChannelResponse,
+  JsonType,
   MessageEvent,
-} from '../types/WorkerBroadcastChannel';
+} from '../types';
+import { Utils, logger } from '../utils';
 
-export default abstract class WorkerBroadcastChannel extends BroadcastChannel {
+const moduleName = 'WorkerBroadcastChannel';
+
+export abstract class WorkerBroadcastChannel extends BroadcastChannel {
   protected constructor() {
     super('worker');
   }
@@ -22,16 +24,36 @@ export default abstract class WorkerBroadcastChannel extends BroadcastChannel {
   }
 
   protected isRequest(message: JsonType[]): boolean {
-    return Array.isArray(message) && message.length === 3;
+    return Array.isArray(message) === true && message.length === 3;
   }
 
   protected isResponse(message: JsonType[]): boolean {
-    return Array.isArray(message) && message.length === 2;
+    return Array.isArray(message) === true && message.length === 2;
   }
 
-  protected validateMessageEvent(messageEvent: MessageEvent): void {
+  protected validateMessageEvent(messageEvent: MessageEvent): MessageEvent | false {
     if (Array.isArray(messageEvent.data) === false) {
-      throw new BaseError('Worker broadcast channel protocol message event data is not an array');
+      logger.error(
+        `${this.logPrefix(
+          moduleName,
+          'validateMessageEvent'
+        )} Worker broadcast channel protocol message event data is not an array`
+      );
+      return false;
+    }
+    if (Utils.validateUUID(messageEvent.data[0]) === false) {
+      logger.error(
+        `${this.logPrefix(
+          moduleName,
+          'validateMessageEvent'
+        )} Worker broadcast channel protocol message event data UUID field is invalid`
+      );
+      return false;
     }
+    return messageEvent;
   }
+
+  private logPrefix = (modName: string, methodName: string): string => {
+    return Utils.logPrefix(` Worker Broadcast Channel | ${modName}.${methodName}:`);
+  };
 }