X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2Fabstract-worker.ts;h=163736696b8ec7080ee17556a52e18aa40e07466;hb=88d983fa5c8db26fa52b8a69a2b724ade989db9b;hp=1a2a15599d301df8c929d92ad5846c46c9531650;hpb=7b427d7348fce3ef4005d92676c1f9576b69f8de;p=poolifier.git diff --git a/src/worker/abstract-worker.ts b/src/worker/abstract-worker.ts index 1a2a1559..16373669 100644 --- a/src/worker/abstract-worker.ts +++ b/src/worker/abstract-worker.ts @@ -8,7 +8,7 @@ import type { WorkerFunction, WorkerSyncFunction } from '../utility-types' -import { EMPTY_FUNCTION } from '../utils' +import { EMPTY_FUNCTION, isPlainObject } from '../utils' import type { KillBehavior, WorkerOptions } from './worker-options' import { KillBehaviors } from './worker-options' @@ -103,25 +103,14 @@ export abstract class AbstractWorker< if (taskFunctions == null) { throw new Error('taskFunctions parameter is mandatory') } - if ( - typeof taskFunctions !== 'function' && - typeof taskFunctions !== 'object' - ) { - throw new Error('taskFunctions parameter is not a function or an object') - } - if ( - typeof taskFunctions === 'object' && - taskFunctions.constructor !== Object && - Object.prototype.toString.call(taskFunctions) !== '[object Object]' - ) { - throw new Error('taskFunctions parameter is not an object literal') - } this.taskFunctions = new Map>() - if (typeof taskFunctions !== 'function') { + if (typeof taskFunctions === 'function') { + this.taskFunctions.set(DEFAULT_FUNCTION_NAME, taskFunctions.bind(this)) + } else if (isPlainObject(taskFunctions)) { let firstEntry = true for (const [name, fn] of Object.entries(taskFunctions)) { if (typeof fn !== 'function') { - throw new Error( + throw new TypeError( 'A taskFunctions parameter object value is not a function' ) } @@ -131,8 +120,13 @@ export abstract class AbstractWorker< firstEntry = false } } + if (firstEntry) { + throw new Error('taskFunctions parameter object is empty') + } } else { - this.taskFunctions.set(DEFAULT_FUNCTION_NAME, taskFunctions.bind(this)) + throw new TypeError( + 'taskFunctions parameter is not a function or a plain object' + ) } }