X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fabstract-pool.ts;h=603409f020a721eedff0b3f130c9f36462d91bb6;hb=fe6df2852c1f0964cdffb0698461c9d66b1cf7ed;hp=8dedf2052baa90603be809d488639f0e9cb256fd;hpb=d07983740c0d4bec954b7ec29f7f7f11e6549658;p=poolifier.git diff --git a/src/pools/abstract-pool.ts b/src/pools/abstract-pool.ts index 8dedf205..603409f0 100644 --- a/src/pools/abstract-pool.ts +++ b/src/pools/abstract-pool.ts @@ -588,7 +588,8 @@ export abstract class AbstractPool< } /** - * The pool readiness boolean status. + * Whether the pool is ready or not. + * @returns The pool readiness boolean status. */ private get ready (): boolean { if (this.empty) { @@ -606,7 +607,8 @@ export abstract class AbstractPool< } /** - * The pool emptiness boolean status. + * Whether the pool is empty or not. + * @returns The pool emptiness boolean status. */ protected get empty (): boolean { return this.minimumNumberOfWorkers === 0 && this.workerNodes.length === 0 @@ -820,8 +822,7 @@ export abstract class AbstractPool< /** * Whether the pool is full or not. - * - * The pool filling boolean status. + * @returns The pool fullness boolean status. */ protected get full (): boolean { return ( @@ -832,8 +833,7 @@ export abstract class AbstractPool< /** * Whether the pool is busy or not. - * - * The pool busyness boolean status. + * @returns The pool busyness boolean status. */ protected abstract get busy (): boolean @@ -1125,14 +1125,14 @@ export abstract class AbstractPool< return new Set([ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.opts.workerChoiceStrategy!, - ...(this.listTaskFunctionsProperties() + ...this.listTaskFunctionsProperties() .map( (taskFunctionProperties: TaskFunctionProperties) => taskFunctionProperties.strategy ) .filter( (strategy: WorkerChoiceStrategy | undefined) => strategy != null - ) as WorkerChoiceStrategy[]), + ), ]) } @@ -1225,15 +1225,24 @@ export abstract class AbstractPool< }) } - /** @inheritDoc */ public mapExecute ( data: Iterable, name?: string, transferList?: readonly TransferListItem[] ): Promise { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (data == null) { + throw new TypeError('data argument must be a defined iterable') + } + if (typeof data[Symbol.iterator] !== 'function') { + throw new TypeError('data argument must be an iterable') + } + if (!Array.isArray(data)) { + data = [...data] + } return Promise.all( - [...data].map(data => this.execute(data, name, transferList)) + (data as Data[]).map(data => this.execute(data, name, transferList)) ) } @@ -1242,6 +1251,9 @@ export abstract class AbstractPool< * @param initWorkerNodeUsage - Whether to initialize the worker node usage or not. @defaultValue false */ private startMinimumNumberOfWorkers (initWorkerNodeUsage = false): void { + if (this.minimumNumberOfWorkers === 0) { + return + } this.startingMinimumNumberOfWorkers = true while ( this.workerNodes.reduce(