1 import type { Worker
as ClusterWorker
} from
'cluster'
2 import type { MessagePort
} from
'worker_threads'
3 import type { IPoolWorker
} from
'./pools/pool-worker'
4 import type { KillBehavior
} from
'./worker/worker-options'
7 * Make all properties in T non-readonly.
9 export type Draft
<T
> = { -readonly [P
in keyof T
]?: T
[P
] }
12 * Message object that is passed between worker and main worker.
14 export interface MessageValue
<
16 MainWorker
extends ClusterWorker
| MessagePort
| unknown
= unknown
19 * Input data that will be passed to the worker.
29 readonly kill
?: KillBehavior
| 1
33 readonly error
?: string
37 readonly taskRunTime
?: number
39 * Reference to main worker.
41 * Only for internal use.
43 readonly parent?: MainWorker
47 * An object holding the worker that will be used to resolve/rejects the promise later on.
49 * @typeParam Worker - Type of worker.
50 * @typeParam Response - Type of response of execution. This can only be serializable data.
52 export interface PromiseWorkerResponseWrapper
<
53 Worker
extends IPoolWorker
,
57 * Resolve callback to fulfill the promise.
59 readonly resolve
: (value
: Response
) => void
61 * Reject callback to reject the promise.
63 readonly reject
: (reason
?: string) => void
65 * The worker that has the assigned task.
67 readonly worker
: Worker