Merge pull request #118 from pioardi/dependabot/npm_and_yarn/eslint-plugin-promise...
[poolifier.git] / src / dynamic.ts
index 667fa07a29780a4837c8f5a7f3af7643c8bb61e4..b4c6bddf30e8e9c964cb1038a05a7788d6bce589 100644 (file)
@@ -1,10 +1,10 @@
-import FixedThreadPool, {
+import { EventEmitter } from 'events'
+import {
+  FixedThreadPool,
   FixedThreadPoolOptions,
   WorkerWithMessageChannel
 } from './fixed'
 
-import { EventEmitter } from 'events'
-
 class MyEmitter extends EventEmitter {}
 
 export type DynamicThreadPoolOptions = FixedThreadPoolOptions
@@ -18,10 +18,12 @@ export type DynamicThreadPoolOptions = FixedThreadPoolOptions
  * @author [Alessandro Pio Ardizio](https://github.com/pioardi)
  * @since 0.0.1
  */
-export default class DynamicThreadPool<
+/* eslint-disable @typescript-eslint/no-explicit-any */
+export class DynamicThreadPool<
   Data = any,
   Response = any
 > extends FixedThreadPool<Data, Response> {
+  /* eslint-enable @typescript-eslint/no-explicit-any */
   public readonly emitter: MyEmitter
 
   /**
@@ -41,8 +43,8 @@ export default class DynamicThreadPool<
     this.emitter = new MyEmitter()
   }
 
-  protected _chooseWorker (): WorkerWithMessageChannel {
-    let worker: WorkerWithMessageChannel
+  protected chooseWorker (): WorkerWithMessageChannel {
+    let worker: WorkerWithMessageChannel | undefined
     for (const entry of this.tasks) {
       if (entry[1] === 0) {
         worker = entry[0]
@@ -56,14 +58,14 @@ export default class DynamicThreadPool<
     } else {
       if (this.workers.length === this.max) {
         this.emitter.emit('FullPool')
-        return super._chooseWorker()
+        return super.chooseWorker()
       }
       // all workers are busy create a new worker
-      const worker = this._newWorker()
-      worker.port2.on('message', (message) => {
+      const worker = this.newWorker()
+      worker.port2?.on('message', (message: { kill?: number }) => {
         if (message.kill) {
           worker.postMessage({ kill: 1 })
-          worker.terminate()
+          void worker.terminate()
           // clean workers from data structures
           const workerIndex = this.workers.indexOf(worker)
           this.workers.splice(workerIndex, 1)
@@ -74,5 +76,3 @@ export default class DynamicThreadPool<
     }
   }
 }
-
-module.exports = DynamicThreadPool