///
import type { Page, PuppeteerNodeLaunchOptions } from 'puppeteer';
import { EventEmitter } from 'events';
import { ConcurrencyImplementationClassType } from './concurrency/ConcurrencyImplementation';
interface ClusterOptions {
concurrency: number | ConcurrencyImplementationClassType;
maxConcurrency: number;
workerCreationDelay: number;
puppeteerOptions: PuppeteerNodeLaunchOptions;
perBrowserOptions: PuppeteerNodeLaunchOptions[] | undefined;
monitor: boolean;
timeout: number;
retryLimit: number;
retryDelay: number;
skipDuplicateUrls: boolean;
sameDomainDelay: number;
puppeteer: any;
}
declare type Partial = {
[P in keyof T]?: T[P];
};
declare type ClusterOptionsArgument = Partial;
interface TaskFunctionArguments {
page: Page;
data: JobData;
worker: {
id: number;
};
}
export declare type TaskFunction = (arg: TaskFunctionArguments) => Promise;
export default class Cluster extends EventEmitter {
static CONCURRENCY_PAGE: number;
static CONCURRENCY_CONTEXT: number;
static CONCURRENCY_BROWSER: number;
private options;
private perBrowserOptions;
private workers;
private workersAvail;
private workersBusy;
private workersStarting;
private allTargetCount;
private processed;
private jobQueue;
private errorCount;
private taskFunction;
private idleResolvers;
private waitForOneResolvers;
private browser;
private isClosed;
private startTime;
private nextWorkerId;
private monitoringInterval;
private display;
private duplicateCheckUrls;
private lastDomainAccesses;
private systemMonitor;
private checkForWorkInterval;
static launch(options: ClusterOptionsArgument): Promise>;
private constructor();
private init;
private launchWorker;
task(taskFunction: TaskFunction): Promise;
private nextWorkCall;
private workCallTimeout;
private work;
private doWork;
private lastLaunchedWorkerTime;
private allowedToStartWorker;
private isTaskFunction;
private queueJob;
queue(data: JobData, taskFunction?: TaskFunction): Promise;
queue(taskFunction: TaskFunction): Promise;
execute(data: JobData, taskFunction?: TaskFunction): Promise;
execute(taskFunction: TaskFunction): Promise;
idle(): Promise;
waitForOne(): Promise;
close(): Promise;
private monitor;
}
export {};