feat: add dynamic pool sizes type check
[poolifier.git] / src / pools / pool.ts
index b1892752111884b3a9edcf82f8e33a776b34172e..207a8598e3bb9d401ca653eee8b232b4f8f52ee7 100644 (file)
@@ -42,6 +42,7 @@ export class PoolEmitter extends EventEmitter {}
  */
 export const PoolEvents = Object.freeze({
   full: 'full',
+  ready: 'ready',
   busy: 'busy',
   error: 'error',
   taskError: 'taskError'
@@ -59,15 +60,17 @@ export interface PoolInfo {
   readonly version: string
   readonly type: PoolType
   readonly worker: WorkerType
+  readonly ready: boolean
+  readonly strategy: WorkerChoiceStrategy
   readonly minSize: number
   readonly maxSize: number
-  /** Pool utilization ratio. */
+  /** Pool utilization. */
   readonly utilization?: number
-  /** Pool total worker nodes */
+  /** Pool total worker nodes. */
   readonly workerNodes: number
-  /** Pool idle worker nodes */
+  /** Pool idle worker nodes. */
   readonly idleWorkerNodes: number
-  /** Pool busy worker nodes */
+  /** Pool busy worker nodes. */
   readonly busyWorkerNodes: number
   readonly executedTasks: number
   readonly executingTasks: number
@@ -179,8 +182,9 @@ export interface IPool<
    *
    * Events that can currently be listened to:
    *
-   * - `'full'`: Emitted when the pool is dynamic and full.
-   * - `'busy'`: Emitted when the pool is busy.
+   * - `'full'`: Emitted when the pool is dynamic and the number of workers created has reached the maximum size expected.
+   * - `'ready'`: Emitted when the number of workers created in the pool has reached the minimum size expected and are ready.
+   * - `'busy'`: Emitted when the number of workers created in the pool has reached the maximum size expected and are executing at least one task.
    * - `'error'`: Emitted when an uncaught error occurs.
    * - `'taskError'`: Emitted when an error occurs while executing a task.
    */
@@ -194,7 +198,7 @@ export interface IPool<
    */
   readonly execute: (data?: Data, name?: string) => Promise<Response>
   /**
-   * Terminates every current worker in this pool.
+   * Terminates all workers in this pool.
    */
   readonly destroy: () => Promise<void>
   /**