/// /// import { ChildProcess } from 'child_process'; import async from 'async'; import { Result, Options, ExecutionOptions } from '../host/sandbox'; interface ClusterOptions extends Options { workers?: number; } interface ClusterWorker { childProcess: ChildProcess; executionTimeout?: NodeJS.Timeout | null; } export default class Cluster { workerCount: number; inactiveWorkers: ClusterWorker[]; activeWorkers: ClusterWorker[]; queue?: async.QueueObject; sandboxOptions: Options; constructor({ workers, ...options }?: ClusterOptions); execute({ code, timeout, globals, context, }: ExecutionOptions): Promise; shutdown(): void; start(): void; worker: (task: any, callback: any) => void; ensureWorkers(): void; forkWorker(): ChildProcess; popWorker(callback: (worker: ClusterWorker) => void): void; clearWorkerTimeout(worker: ClusterWorker): void; finishWorker(worker: ClusterWorker): void; removeWorker(worker: ClusterWorker): void; _execute({ code, timeout, globals, context, }: { code: any; timeout: any; globals: any; context: any; }, cb: any): void; } export {};