fix(simulator): make the modules export/import a bit less sensitive to
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / UIWebSocketServer.ts
index 006c3914b8a67f6c7368345c8b747631698cdcbe..d5e6ff808afbee13a4f3eee9c35a433203c8247a 100644 (file)
@@ -4,17 +4,20 @@ import type internal from 'stream';
 import { StatusCodes } from 'http-status-codes';
 import WebSocket, { type RawData, WebSocketServer } from 'ws';
 
-import { AbstractUIServer } from './AbstractUIServer';
 import { UIServerUtils } from './UIServerUtils';
-import type { UIServerConfiguration } from '../../types/ConfigurationData';
-import type { ProtocolRequest, ProtocolResponse } from '../../types/UIProtocol';
-import { WebSocketCloseEventStatusCode } from '../../types/WebSocket';
-import logger from '../../utils/Logger';
-import Utils from '../../utils/Utils';
+import {
+  type ProtocolRequest,
+  type ProtocolResponse,
+  type UIServerConfiguration,
+  WebSocketCloseEventStatusCode,
+} from '../../types';
+import { logger } from '../../utils/Logger';
+import { Utils } from '../../utils/Utils';
+import { AbstractUIServer } from '../internal';
 
 const moduleName = 'UIWebSocketServer';
 
-export default class UIWebSocketServer extends AbstractUIServer {
+export class UIWebSocketServer extends AbstractUIServer {
   private readonly webSocketServer: WebSocketServer;
 
   public constructor(protected readonly uiServerConfiguration: UIServerConfiguration) {
@@ -39,7 +42,7 @@ export default class UIWebSocketServer extends AbstractUIServer {
       }
       const [, version] = UIServerUtils.getProtocolAndVersion(ws.protocol);
       this.registerProtocolVersionUIService(version);
-      ws.on('message', rawData => {
+      ws.on('message', (rawData) => {
         const request = this.validateRawDataRequest(rawData);
         if (request === false) {
           ws.close(WebSocketCloseEventStatusCode.CLOSE_INVALID_PAYLOAD);
@@ -49,12 +52,12 @@ export default class UIWebSocketServer extends AbstractUIServer {
         this.responseHandlers.set(requestId, ws);
         this.uiServices
           .get(version)
-          .requestHandler(request)
+          ?.requestHandler(request)
           .catch(() => {
             /* Error caught by AbstractUIService */
           });
       });
-      ws.on('error', error => {
+      ws.on('error', (error) => {
         logger.error(`${this.logPrefix(moduleName, 'start.ws.onerror')} WebSocket error:`, error);
       });
       ws.on('close', (code, reason) => {
@@ -78,7 +81,7 @@ export default class UIWebSocketServer extends AbstractUIServer {
     this.httpServer.on(
       'upgrade',
       (req: IncomingMessage, socket: internal.Duplex, head: Buffer): void => {
-        this.authenticate(req, err => {
+        this.authenticate(req, (err) => {
           if (err) {
             socket.write(`HTTP/1.1 ${StatusCodes.UNAUTHORIZED} Unauthorized\r\n\r\n`);
             socket.destroy();
@@ -145,14 +148,16 @@ export default class UIWebSocketServer extends AbstractUIServer {
     }
   }
 
-  public logPrefix(modName?: string, methodName?: string, prefixSuffix?: string): string {
+  public logPrefix = (modName?: string, methodName?: string, prefixSuffix?: string): string => {
     const logMsgPrefix = prefixSuffix
       ? `UI WebSocket Server ${prefixSuffix}`
       : 'UI WebSocket Server';
     const logMsg =
-      modName && methodName ? ` ${logMsgPrefix} | ${modName}.${methodName}:` : ` ${logMsgPrefix} |`;
+      Utils.isNotEmptyString(modName) && Utils.isNotEmptyString(methodName)
+        ? ` ${logMsgPrefix} | ${modName}.${methodName}:`
+        : ` ${logMsgPrefix} |`;
     return Utils.logPrefix(logMsg);
-  }
+  };
 
   private broadcastToClients(message: string): void {
     for (const client of this.webSocketServer.clients) {