X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2Fabstract-worker.ts;h=12307f47c07ba019ca2da01f9547b633cfc64e03;hb=27a8a097ad47621d1a914240d777921f129cff61;hp=890f340e69a63ac1bce217ecafa0ae5191febae1;hpb=799c9e089724b6402ae72e0a60719017055a6669;p=poolifier.git diff --git a/src/worker/abstract-worker.ts b/src/worker/abstract-worker.ts index 890f340e..12307f47 100644 --- a/src/worker/abstract-worker.ts +++ b/src/worker/abstract-worker.ts @@ -1,6 +1,7 @@ import type { Worker } from 'node:cluster' -import type { MessagePort } from 'node:worker_threads' import { performance } from 'node:perf_hooks' +import type { MessagePort } from 'node:worker_threads' + import type { MessageValue, Task, @@ -13,7 +14,6 @@ import { isAsyncFunction, isPlainObject } from '../utils.js' -import { KillBehaviors, type WorkerOptions } from './worker-options.js' import type { TaskAsyncFunction, TaskFunction, @@ -26,6 +26,7 @@ import { checkValidTaskFunctionEntry, checkValidWorkerOptions } from './utils.js' +import { KillBehaviors, type WorkerOptions } from './worker-options.js' const DEFAULT_MAX_INACTIVE_TIME = 60000 const DEFAULT_WORKER_OPTIONS: WorkerOptions = { @@ -127,7 +128,7 @@ export abstract class AbstractWorker< this.taskFunctions.set(DEFAULT_TASK_NAME, boundFn) this.taskFunctions.set( typeof taskFunctions.name === 'string' && - taskFunctions.name.trim().length > 0 + taskFunctions.name.trim().length > 0 ? taskFunctions.name : 'fn1', boundFn @@ -241,8 +242,8 @@ export abstract class AbstractWorker< * @returns The names of the worker's task functions. */ public listTaskFunctionNames (): string[] { - const names: string[] = [...this.taskFunctions.keys()] - let defaultTaskFunctionName: string = DEFAULT_TASK_NAME + const names = [...this.taskFunctions.keys()] + let defaultTaskFunctionName = DEFAULT_TASK_NAME for (const [name, fn] of this.taskFunctions) { if ( name !== DEFAULT_TASK_NAME && @@ -325,26 +326,28 @@ export abstract class AbstractWorker< message: MessageValue ): void { const { taskFunctionOperation, taskFunctionName, taskFunction } = message - let response!: TaskFunctionOperationResult + if (taskFunctionName == null) { + throw new Error( + 'Cannot handle task function operation message without a task function name' + ) + } + let response: TaskFunctionOperationResult switch (taskFunctionOperation) { case 'add': response = this.addTaskFunction( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - taskFunctionName!, - // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func, @typescript-eslint/no-non-null-assertion - new Function(`return ${taskFunction!}`)() as TaskFunction< + taskFunctionName, + // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func + new Function(`return ${taskFunction}`)() as TaskFunction< Data, Response > ) break case 'remove': - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - response = this.removeTaskFunction(taskFunctionName!) + response = this.removeTaskFunction(taskFunctionName) break case 'default': - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - response = this.setDefaultTaskFunction(taskFunctionName!) + response = this.setDefaultTaskFunction(taskFunctionName) break default: response = { status: false, error: new Error('Unknown task operation') } @@ -357,8 +360,7 @@ export abstract class AbstractWorker< ...(!response.status && response.error != null && { workerError: { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - name: taskFunctionName!, + name: taskFunctionName, message: this.handleError(response.error as Error | string) } }) @@ -567,7 +569,7 @@ export abstract class AbstractWorker< }) return undefined }) - .catch(error => { + .catch((error: unknown) => { this.sendToMainWorker({ workerError: { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion