import type {
TaskAsyncFunction,
TaskFunction,
- TaskFunctionOperationReturnType,
+ TaskFunctionOperationResult,
TaskFunctions,
TaskSyncFunction
} from './task-functions'
* @param name - The name of the task function to check.
* @returns Whether the worker has a task function with the given name or not.
*/
- public hasTaskFunction (name: string): TaskFunctionOperationReturnType {
+ public hasTaskFunction (name: string): TaskFunctionOperationResult {
try {
this.checkTaskFunctionName(name)
} catch (error) {
public addTaskFunction (
name: string,
fn: TaskFunction<Data, Response>
- ): TaskFunctionOperationReturnType {
+ ): TaskFunctionOperationResult {
try {
this.checkTaskFunctionName(name)
if (name === DEFAULT_TASK_NAME) {
* @param name - The name of the task function to remove.
* @returns Whether the task function existed and was removed or not.
*/
- public removeTaskFunction (name: string): TaskFunctionOperationReturnType {
+ public removeTaskFunction (name: string): TaskFunctionOperationResult {
try {
this.checkTaskFunctionName(name)
if (name === DEFAULT_TASK_NAME) {
* @param name - The name of the task function to use as default task function.
* @returns Whether the default task function was set or not.
*/
- public setDefaultTaskFunction (name: string): TaskFunctionOperationReturnType {
+ public setDefaultTaskFunction (name: string): TaskFunctionOperationResult {
try {
this.checkTaskFunctionName(name)
if (name === DEFAULT_TASK_NAME) {
DEFAULT_TASK_NAME,
this.taskFunctions.get(name) as TaskFunction<Data, Response>
)
+ this.sendTaskFunctionNamesToMainWorker()
return { status: true }
} catch (error) {
return { status: false, error: error as Error }
protected handleTaskFunctionOperationMessage (
message: MessageValue<Data>
): void {
- const { taskFunctionOperation, taskFunction, taskFunctionName } = message
- let response!: TaskFunctionOperationReturnType
- if (taskFunctionOperation === 'add') {
- response = this.addTaskFunction(
- taskFunctionName as string,
- // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func
- new Function(`return ${taskFunction as string}`)() as TaskFunction<
- Data,
- Response
- >
- )
- } else if (taskFunctionOperation === 'remove') {
- response = this.removeTaskFunction(taskFunctionName as string)
- } else if (taskFunctionOperation === 'default') {
- response = this.setDefaultTaskFunction(taskFunctionName as string)
+ const { taskFunctionOperation, taskFunctionName, taskFunction } = message
+ let response!: TaskFunctionOperationResult
+ switch (taskFunctionOperation) {
+ case 'add':
+ response = this.addTaskFunction(
+ taskFunctionName as string,
+ // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func
+ new Function(`return ${taskFunction as string}`)() as TaskFunction<
+ Data,
+ Response
+ >
+ )
+ break
+ case 'remove':
+ response = this.removeTaskFunction(taskFunctionName as string)
+ break
+ case 'default':
+ response = this.setDefaultTaskFunction(taskFunctionName as string)
+ break
+ default:
+ response = { status: false, error: new Error('Unknown task operation') }
+ break
}
this.sendToMainWorker({
taskFunctionOperation,
taskFunctionOperationStatus: response.status,
- workerError: {
- name: taskFunctionName as string,
- message: this.handleError(response.error as Error | string)
- }
+ taskFunctionName,
+ ...(!response.status &&
+ response?.error != null && {
+ workerError: {
+ name: taskFunctionName as string,
+ message: this.handleError(response.error as Error | string)
+ }
+ })
})
}
taskPerformance,
taskId
})
- return null
+ return undefined
})
.catch(error => {
this.sendToMainWorker({