-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');
}
}
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): MessageEvent {
+ 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}:`);
+ };
}