refactor: code reformatting
[poolifier.git] / src / pools / abstract-pool.ts
index 8dedf2052baa90603be809d488639f0e9cb256fd..603409f020a721eedff0b3f130c9f36462d91bb6 100644 (file)
@@ -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<Data>,
     name?: string,
     transferList?: readonly TransferListItem[]
   ): Promise<Response[]> {
+    // 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(