refactor: enforce more worker type safety
authorJérôme Benoit <jerome.benoit@sap.com>
Mon, 10 Apr 2023 11:41:53 +0000 (13:41 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Mon, 10 Apr 2023 11:41:53 +0000 (13:41 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/pools/pool.ts
src/pools/worker.ts
src/utility-types.ts

index 3c660031fb90b233bb93125331c81e53200b6803..f24d79e41e01dfba297821ea88acc22066052550 100644 (file)
@@ -2,6 +2,7 @@ import EventEmitter from 'node:events'
 import type {
   ErrorHandler,
   ExitHandler,
+  IWorker,
   MessageHandler,
   OnlineHandler
 } from './worker'
@@ -31,7 +32,7 @@ export type PoolEvent = keyof typeof PoolEvents
 /**
  * Options for a poolifier pool.
  */
-export interface PoolOptions<Worker> {
+export interface PoolOptions<Worker extends IWorker> {
   /**
    * A function that will listen for message event on each worker.
    */
index 4ff2c494664b571927f9d44e04fe3acbe3ec72e7..1e23ee872aa0b9f1a5ae97d48c2a8c87b06e6567 100644 (file)
@@ -3,22 +3,31 @@ import type { CircularArray } from '../circular-array'
 /**
  * Callback invoked if the worker has received a message.
  */
-export type MessageHandler<Worker> = (this: Worker, m: unknown) => void
+export type MessageHandler<Worker extends IWorker> = (
+  this: Worker,
+  m: unknown
+) => void
 
 /**
  * Callback invoked if the worker raised an error.
  */
-export type ErrorHandler<Worker> = (this: Worker, e: Error) => void
+export type ErrorHandler<Worker extends IWorker> = (
+  this: Worker,
+  e: Error
+) => void
 
 /**
  * Callback invoked when the worker has started successfully.
  */
-export type OnlineHandler<Worker> = (this: Worker) => void
+export type OnlineHandler<Worker extends IWorker> = (this: Worker) => void
 
 /**
  * Callback invoked when the worker exits successfully.
  */
-export type ExitHandler<Worker> = (this: Worker, code: number) => void
+export type ExitHandler<Worker extends IWorker> = (
+  this: Worker,
+  code: number
+) => void
 
 /**
  * Worker task interface.
index b5611f9ea18c2a90403998245173693525f45b2c..544b4cd0a07e85f407a192466601167392167a41 100644 (file)
@@ -39,6 +39,7 @@ export interface MessageValue<
    * Reference to main worker.
    *
    * Only for internal use.
+   * @internal
    */
   readonly parent?: MainWorker
 }