fix: readd nullish checks on worker usage
[poolifier.git] / src / pools / pool.ts
index 7bc8cf850b105983907d7b74cbab618121f8560b..3aa9feb70b04d8ea3b321777dd053d9823d994b0 100644 (file)
@@ -1,7 +1,7 @@
 import type { TransferListItem, WorkerOptions } from 'node:worker_threads'
 import type { EventEmitterAsyncResource } from 'node:events'
 import type { ClusterSettings } from 'node:cluster'
-import type { TaskFunction } from '../worker/task-functions'
+import type { TaskFunction } from '../worker/task-functions.js'
 import type {
   ErrorHandler,
   ExitHandler,
@@ -10,11 +10,11 @@ import type {
   MessageHandler,
   OnlineHandler,
   WorkerType
-} from './worker'
+} from './worker.js'
 import type {
   WorkerChoiceStrategy,
   WorkerChoiceStrategyOptions
-} from './selection-strategies/selection-strategies-types'
+} from './selection-strategies/selection-strategies-types.js'
 
 /**
  * Enumeration of pool types.
@@ -69,6 +69,8 @@ export interface PoolInfo {
   readonly utilization?: number
   /** Pool total worker nodes. */
   readonly workerNodes: number
+  /** Pool stealing worker nodes. */
+  readonly stealingWorkerNodes?: number
   /** Pool idle worker nodes. */
   readonly idleWorkerNodes: number
   /** Pool busy worker nodes. */
@@ -122,6 +124,12 @@ export interface TasksQueueOptions {
    * @defaultValue true
    */
   readonly tasksStealingOnBackPressure?: boolean
+  /**
+   * Queued tasks finished timeout in milliseconds at worker node termination.
+   *
+   * @defaultValue 2000
+   */
+  readonly tasksFinishedTimeout?: number
 }
 
 /**
@@ -232,14 +240,6 @@ export interface IPool<
    * @internal
    */
   readonly workerNodes: Array<IWorkerNode<Worker, Data>>
-  /**
-   * Whether the worker node has back pressure (i.e. its tasks queue is full).
-   *
-   * @param workerNodeKey - The worker node key.
-   * @returns `true` if the worker node has back pressure, `false` otherwise.
-   * @internal
-   */
-  readonly hasWorkerNodeBackPressure: (workerNodeKey: number) => boolean
   /**
    * Event emitter integrated with async resource on which events can be listened to.
    * The async tracking tooling identifier is `poolifier:<PoolType>-<WorkerType>-pool`.