index.d.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import { Worker, MessagePort } from 'node:worker_threads';
  2. import { EventEmitterAsyncResource } from 'node:events';
  3. import { version } from '../package.json';
  4. import type { Transferable, ResourceLimits, EnvSpecifier } from './types';
  5. import { kQueueOptions, kTransferable, kValue } from './symbols';
  6. import { TaskQueue, ArrayTaskQueue, FixedQueue, PiscinaTask, TransferList, TransferListItem } from './task_queue';
  7. import { AbortSignalAny } from './abort';
  8. interface Options {
  9. filename?: string | null;
  10. name?: string;
  11. minThreads?: number;
  12. maxThreads?: number;
  13. idleTimeout?: number;
  14. maxQueue?: number | 'auto';
  15. concurrentTasksPerWorker?: number;
  16. useAtomics?: boolean;
  17. resourceLimits?: ResourceLimits;
  18. argv?: string[];
  19. execArgv?: string[];
  20. env?: EnvSpecifier;
  21. workerData?: any;
  22. taskQueue?: TaskQueue;
  23. niceIncrement?: number;
  24. trackUnmanagedFds?: boolean;
  25. closeTimeout?: number;
  26. recordTiming?: boolean;
  27. }
  28. interface FilledOptions extends Options {
  29. filename: string | null;
  30. name: string;
  31. minThreads: number;
  32. maxThreads: number;
  33. idleTimeout: number;
  34. maxQueue: number;
  35. concurrentTasksPerWorker: number;
  36. useAtomics: boolean;
  37. taskQueue: TaskQueue;
  38. niceIncrement: number;
  39. closeTimeout: number;
  40. recordTiming: boolean;
  41. }
  42. interface RunOptions {
  43. transferList?: TransferList;
  44. filename?: string | null;
  45. signal?: AbortSignalAny | null;
  46. name?: string | null;
  47. }
  48. interface CloseOptions {
  49. force?: boolean;
  50. }
  51. export default class Piscina<T = any, R = any> extends EventEmitterAsyncResource {
  52. #private;
  53. constructor(options?: Options);
  54. /** @deprecated Use run(task, options) instead **/
  55. runTask(task: T, transferList?: TransferList, filename?: string, abortSignal?: AbortSignalAny): Promise<R>;
  56. /** @deprecated Use run(task, options) instead **/
  57. runTask(task: T, transferList?: TransferList, filename?: AbortSignalAny, abortSignal?: undefined): Promise<R>;
  58. /** @deprecated Use run(task, options) instead **/
  59. runTask(task: T, transferList?: string, filename?: AbortSignalAny, abortSignal?: undefined): Promise<R>;
  60. /** @deprecated Use run(task, options) instead **/
  61. runTask(task: T, transferList?: AbortSignalAny, filename?: undefined, abortSignal?: undefined): Promise<R>;
  62. run(task: T, options?: RunOptions): Promise<R>;
  63. close(options?: CloseOptions): Promise<void>;
  64. destroy(): Promise<void>;
  65. get maxThreads(): number;
  66. get minThreads(): number;
  67. get options(): FilledOptions;
  68. get threads(): Worker[];
  69. get queueSize(): number;
  70. get completed(): number;
  71. get waitTime(): any;
  72. get runTime(): any;
  73. get utilization(): number;
  74. get duration(): number;
  75. get needsDrain(): boolean;
  76. static get isWorkerThread(): boolean;
  77. static get workerData(): any;
  78. static get version(): string;
  79. static get Piscina(): typeof Piscina;
  80. static get FixedQueue(): typeof FixedQueue;
  81. static get ArrayTaskQueue(): typeof ArrayTaskQueue;
  82. static move(val: Transferable | TransferListItem | ArrayBufferView | ArrayBuffer | MessagePort): ArrayBuffer | ArrayBufferView | MessagePort | Transferable;
  83. static get transferableSymbol(): symbol;
  84. static get valueSymbol(): symbol;
  85. static get queueOptionsSymbol(): symbol;
  86. }
  87. export declare const move: typeof Piscina.move;
  88. export declare const isWorkerThread: boolean;
  89. export declare const workerData: any;
  90. export { Piscina, PiscinaTask, TaskQueue, kTransferable as transferableSymbol, kValue as valueSymbol, kQueueOptions as queueOptionsSymbol, version, FixedQueue };