1 import type { Worker
} from
'node:worker_threads'
3 import { type PoolEvent
, PoolEvents
, type ThreadPoolOptions
} from
'poolifier'
5 export enum WorkerProcessType
{
6 workerSet
= 'workerSet',
7 fixedPool
= 'fixedPool',
9 dynamicPool
= 'dynamicPool'
12 export interface SetInfo
{
18 elementsExecuting
: number
19 elementsPerWorker
: number
22 export enum WorkerSetEvents
{
26 elementAdded
= 'elementAdded',
27 elementError
= 'elementError'
30 export const WorkerEvents
= {
34 // eslint-disable-next-line @typescript-eslint/no-redeclare
35 export type WorkerEvents
= PoolEvent
| WorkerSetEvents
37 export interface WorkerOptions
{
38 workerStartDelay
?: number
39 elementAddDelay
?: number
42 elementsPerWorker
?: number
43 poolOptions
?: ThreadPoolOptions
46 export type WorkerData
= Record
<string, unknown
>
48 export interface WorkerDataError
extends WorkerData
{
49 event
: WorkerMessageEvents
55 export interface WorkerSetElement
{
57 numberOfWorkerElements
: number
60 export interface WorkerMessage
<T
extends WorkerData
> {
61 uuid
: `${string}-${string}-${string}-${string}`
62 event
: WorkerMessageEvents
66 export enum WorkerMessageEvents
{
67 addWorkerElement
= 'addWorkerElement',
68 addedWorkerElement
= 'addedWorkerElement',
69 workerElementError
= 'workerElementError'