From 6f24be2ae6c1a9f58b8eee10db7b8ea92331f868 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Mon, 18 Aug 2025 21:10:11 +0200 Subject: [PATCH] refactor: cleanup charging station worker code MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- src/charging-station/ChargingStationWorker.ts | 93 +++++++++++-------- 1 file changed, 55 insertions(+), 38 deletions(-) diff --git a/src/charging-station/ChargingStationWorker.ts b/src/charging-station/ChargingStationWorker.ts index b8ec0afc..fd9717c4 100644 --- a/src/charging-station/ChargingStationWorker.ts +++ b/src/charging-station/ChargingStationWorker.ts @@ -16,8 +16,10 @@ if (Configuration.workerPoolInUse()) { ChargingStationWorkerData, ChargingStationInfo | undefined >((data?: ChargingStationWorkerData): ChargingStationInfo | undefined => { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const { index, options, templateFile } = data! + if (data == null) { + throw new BaseError('Invalid charging station worker data') + } + const { index, options, templateFile } = data return new ChargingStation(index, templateFile, options).stationInfo }) } else { @@ -27,43 +29,58 @@ if (Configuration.workerPoolInUse()) { parentPort?.on('message', (message: WorkerMessage) => { const { data, event, uuid } = message // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (uuid != null) { - switch (event) { - case WorkerMessageEvents.addWorkerElement: - try { - const chargingStation = new ChargingStation( - data.index, - data.templateFile, - data.options - ) - parentPort?.postMessage({ - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - data: chargingStation.stationInfo!, - event: WorkerMessageEvents.addedWorkerElement, - uuid, - } satisfies WorkerMessage) - } catch (error) { - parentPort?.postMessage({ - data: { - event, - message: (error as Error).message, - name: (error as Error).name, - stack: (error as Error).stack, - }, - event: WorkerMessageEvents.workerElementError, - uuid, - } satisfies WorkerMessage) - } - break - default: - throw new BaseError( - `Unknown worker message event: '${event}' received with data: '${JSON.stringify( - data, - undefined, - 2 - )}'` + if (data == null || event == null || uuid == null) { + parentPort?.postMessage({ + data: { + event, + message: 'Invalid worker message format', + name: 'WorkerMessageFormatError', + }, + event: WorkerMessageEvents.workerElementError, + uuid, + } satisfies WorkerMessage) + return + } + switch (event) { + case WorkerMessageEvents.addWorkerElement: + try { + const chargingStation = new ChargingStation( + data.index, + data.templateFile, + data.options ) - } + const stationInfo = chargingStation.stationInfo + if (stationInfo == null) { + throw new BaseError('Charging station info is not defined') + } + parentPort?.postMessage({ + data: stationInfo, + event: WorkerMessageEvents.addedWorkerElement, + uuid, + } satisfies WorkerMessage) + } catch (error) { + parentPort?.postMessage({ + data: { + event, + message: (error as Error).message, + name: (error as Error).name, + stack: (error as Error).stack, + }, + event: WorkerMessageEvents.workerElementError, + uuid, + } satisfies WorkerMessage) + } + break + default: + parentPort?.postMessage({ + data: { + event, + message: `Unknown worker message event: '${event}'`, + name: 'WorkerMessageEventError', + }, + event: WorkerMessageEvents.workerElementError, + uuid, + } satisfies WorkerMessage) } }) } -- 2.43.0