-import type { Worker as ClusterWorker } from 'node:cluster'
-import type { MessagePort } from 'node:worker_threads'
import type { EventLoopUtilization } from 'node:perf_hooks'
import type { KillBehavior } from './worker/worker-options'
import type { IWorker, Task } from './pools/worker'
/**
- * Make all properties in T non-readonly.
+ * Task error.
*
- * @typeParam T - Type in which properties will be non-readonly.
+ * @typeParam Data - Type of data sent to the worker triggering an error. This can only be structured-cloneable data.
*/
-export type Draft<T> = { -readonly [P in keyof T]?: T[P] }
-
export interface TaskError<Data = unknown> {
/**
* Error message.
* Task runtime.
*/
runTime?: number
- /**
- * Task wait time.
- */
- waitTime?: number
/**
* Task event loop utilization.
*/
*/
export interface WorkerStatistics {
runTime: boolean
- waitTime: boolean
elu: boolean
}
/**
* Message object that is passed between main worker and worker.
*
- * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
- * @typeParam MainWorker - Type of main worker.
+ * @typeParam Data - Type of data sent to the worker or execution response. This can only be structured-cloneable data.
+ * @typeParam ErrorData - Type of data sent to the worker triggering an error. This can only be structured-cloneable data.
* @internal
*/
-export interface MessageValue<
- Data = unknown,
- ErrorData = unknown,
- MainWorker extends ClusterWorker | MessagePort = ClusterWorker | MessagePort
-> extends Task<Data> {
+export interface MessageValue<Data = unknown, ErrorData = unknown>
+ extends Task<Data> {
/**
* Kill code.
*/
*/
readonly taskPerformance?: TaskPerformance
/**
- * Reference to main worker.
- */
- readonly parent?: MainWorker
- /**
- * Whether to compute the given statistics or not.
+ * Whether the worker computes the given statistics or not.
*/
readonly statistics?: WorkerStatistics
}
* An object holding the execution response promise resolve/reject callbacks.
*
* @typeParam Worker - Type of worker.
- * @typeParam Response - Type of execution response. This can only be serializable data.
+ * @typeParam Response - Type of execution response. This can only be structured-cloneable data.
* @internal
*/
export interface PromiseResponseWrapper<