///
import type { Worker } from 'worker_threads';
import type { WorkerOptions } from './misc.js';
import type { MessengerRawData } from './messenger.js';
import type { BaseWorkerOptions } from './workers.js';
import type { WorkerType } from '../constants/workers.js';
import type { Counter } from '../utilities/counter.js';
import type { SharedUint32 } from '../utilities/shared_uint32.js';
export type PoolData = {
active: Counter;
concurrency: SharedUint32;
};
export type PoolItemEvents = {
created: (worker: Worker) => void;
};
export type BasePoolItemConfig = {
file: string;
};
/**
* Used to create a `PoolItem`.
*/
export type PoolItemConfig = {
workerData: Type extends WorkerType.Task ? {
type: WorkerType.Task;
identifier: string;
name: string;
params: any[];
} : {
type: WorkerType.Service;
identifier: string;
};
} & BaseWorkerOptions & BasePoolItemConfig;
/**
* Used internally by the `PoolItem` class.
*/
export type PoolItemOptions = {
workerData: {
identifier: string;
type: WorkerType;
name?: string;
params?: any[];
messengerTransfers: MessengerRawData[];
messengers: Record;
};
options: WorkerOptions;
priority: boolean;
reffed: boolean;
shareEnv: boolean;
} & BasePoolItemConfig;