///
import { EventEmitter } from 'events';
import { Job } from './job';
import { QueueEvents } from './queue-events';
import { JobsOptions, QueueOptions, RepeatOptions, QueueEventsOptions, QueueSchedulerOptions, WorkerOptions, Processor } from '../interfaces';
declare type CommonOptions = QueueSchedulerOptions & QueueOptions & WorkerOptions & QueueEventsOptions;
export declare class Queue3 extends EventEmitter {
/**
* The name of the queue
*/
name: string;
queueEvents: QueueEvents;
private opts;
private readonly queue;
private worker;
private queueScheduler;
/**
* This is the Queue constructor.
* It creates a new Queue that is persisted in Redis.
* Every time the same queue is instantiated it tries to process all the old jobs
* that may exist from a previous unfinished session.
*/
constructor(name: string, opts?: CommonOptions);
/**
* Returns a promise that resolves when Redis is connected and the queue is ready to accept jobs.
* This replaces the `ready` event emitted on Queue in previous versions.
*/
isReady(): Promise;
/**
* Defines a processing function for the jobs placed into a given Queue.
*
* The callback is called every time a job is placed in the queue.
* It is passed an instance of the job as first argument.
*
* If the callback signature contains the second optional done argument,
* the callback will be passed a done callback to be called after the job has been completed.
* The done callback can be called with an Error instance, to signal that the job did not complete successfully,
* or with a result as second argument (e.g.: done(null, result);) when the job is successful.
* Errors will be passed as a second argument to the "failed" event; results,
* as a second argument to the "completed" event.
*
* If, however, the callback signature does not contain the done argument,
* a promise must be returned to signal job completion.
* If the promise is rejected, the error will be passed as a second argument to the "failed" event.
* If it is resolved, its value will be the "completed" event's second argument.
*/
process(processor: string | Processor): Promise;
add(jobName: string, data: any, opts?: JobsOptions): Promise;
/**
* Returns a promise that resolves when the queue is paused.
*
* A paused queue will not process new jobs until resumed, but current jobs being processed will continue until
* they are finalized. The pause can be either global or local. If global, all workers in all queue instances
* for a given queue will be paused. If local, just this worker will stop processing new jobs after the current
* lock expires. This can be useful to stop a worker from taking new jobs prior to shutting down.
*
* Pausing a queue that is already paused does nothing.
*/
pause(): Promise;
pauseWorker(doNotWaitActive?: boolean): Promise;
/**
* Returns a promise that resolves when the queue is resumed after being paused.
*
* The resume can be either local or global. If global, all workers in all queue instances for a given queue
* will be resumed. If local, only this worker will be resumed. Note that resuming a queue globally will not
* resume workers that have been paused locally; for those, resume(true) must be called directly on their
* instances.
*
* Resuming a queue that is not paused does nothing.
*/
resume(): Promise;
resumeWorker(): Promise;
isWorkerPaused(): boolean;
/**
* Returns a promise that returns the number of jobs in the queue, waiting or paused.
* Since there may be other processes adding or processing jobs,
* this value may be true only for a very small amount of time.
*/
count(): Promise;
/**
* Empties a queue deleting all the input lists and associated jobs.
*/
empty(): Promise;
/**
* Closes the underlying redis client. Use this to perform a graceful shutdown.
*
* `close` can be called from anywhere, with one caveat:
* if called from within a job handler the queue won't close until after the job has been processed
*/
close(): Promise;
/**
* Returns a promise that will return the job instance associated with the jobId parameter.
* If the specified job cannot be located, the promise callback parameter will be set to null.
*/
getJob(jobId: string): Promise;
/**
* Returns a promise that will return an array with the waiting jobs between start and end.
*/
getWaiting(start?: number, end?: number): Promise>;
/**
* Returns a promise that will return an array with the active jobs between start and end.
*/
getActive(start?: number, end?: number): Promise>;
/**
* Returns a promise that will return an array with the delayed jobs between start and end.
*/
getDelayed(start?: number, end?: number): Promise>;
/**
* Returns a promise that will return an array with the completed jobs between start and end.
*/
getCompleted(start?: number, end?: number): Promise>;
/**
* Returns a promise that will return an array with the failed jobs between start and end.
*/
getFailed(start?: number, end?: number): Promise>;
/**
* Returns JobInformation of repeatable jobs (ordered descending). Provide a start and/or an end
* index to limit the number of results. Start defaults to 0, end to -1 and asc to false.
*/
getRepeatableJobs(start?: number, end?: number, asc?: boolean): Promise;
/**
* ???
*/
nextRepeatableJob(name: string, data: any, opts?: JobsOptions, skipCheckExists?: boolean): Promise;
/**
* Removes a given repeatable job. The RepeatOptions and JobId needs to be the same as the ones
* used for the job when it was added.
*
* name: The name of the to be removed job
*/
removeRepeatable(name: string, opts: RepeatOptions): Promise;
/**
* Removes a given repeatable job by key.
*/
removeRepeatableByKey(repeatJobKey: string): Promise;
/**
* Returns a promise that will return an array of job instances of the given types.
* Optional parameters for range and ordering are provided.
*/
getJobs(types: string[] | string, start?: number, end?: number, asc?: boolean): Promise>;
getNextJob(): Promise;
/**
* Returns a object with the logs according to the start and end arguments. The returned count
* value is the total amount of logs, useful for implementing pagination.
*/
getJobLogs(jobId: string, start?: number, end?: number): Promise<{
logs: string[];
count: number;
}>;
/**
* Returns a promise that resolves with the job counts for the given queue.
*/
getJobCounts(...types: string[]): Promise<{
[index: string]: number;
}>;
/**
* Returns a promise that resolves with the job counts for the given queue of the given types.
*/
getJobCountByTypes(...types: string[]): Promise;
/**
* Returns a promise that resolves with the quantity of completed jobs.
*/
getCompletedCount(): Promise;
/**
* Returns a promise that resolves with the quantity of failed jobs.
*/
getFailedCount(): Promise;
/**
* Returns a promise that resolves with the quantity of delayed jobs.
*/
getDelayedCount(): Promise;
/**
* Returns a promise that resolves with the quantity of waiting jobs.
*/
getWaitingCount(): Promise;
/**
* Returns a promise that resolves with the quantity of paused jobs.
*/
getPausedCount(): Promise;
/**
* Returns a promise that resolves with the quantity of active jobs.
*/
getActiveCount(): Promise;
/**
* Returns a promise that resolves to the quantity of repeatable jobs.
*/
getRepeatableCount(): Promise;
/**
* Tells the queue remove all jobs created outside of a grace period in milliseconds.
* You can clean the jobs with the following states: completed, wait (typo for waiting), active, delayed, and failed.
* @param grace Grace period in milliseconds.
* @param limit Maximum amount of jobs to clean per call. If not provided will clean all matching jobs.
* @param type Status of the job to clean. Values are completed, wait,
* active, paused, delayed, and failed. Defaults to completed.
*/
clean(grace: number, limit: number, type?: 'completed' | 'wait' | 'active' | 'paused' | 'delayed' | 'failed'): Promise;
/**
* Listens to queue events
*/
on(event: string, callback: (...args: any[]) => void): this;
/**
* An error occurred
*/
on(event: 'error', callback: ErrorEventCallback3): this;
/**
* A Job is waiting to be processed as soon as a worker is idling.
*/
on(event: 'waiting', callback: WaitingEventCallback3): this;
/**
* A job has started. You can use `jobPromise.cancel()` to abort it
*/
on(event: 'active', callback: ActiveEventCallback3): this;
/**
* A job has been marked as stalled.
* This is useful for debugging job workers that crash or pause the event loop.
*/
on(event: 'stalled', callback: StalledEventCallback3): this;
/**
* A job's progress was updated
*/
on(event: 'progress', callback: ProgressEventCallback3): this;
/**
* A job successfully completed with a `result`
*/
on(event: 'completed', callback: CompletedEventCallback3): this;
/**
* A job failed with `err` as the reason
*/
on(event: 'failed', callback: FailedEventCallback3): this;
/**
* The queue has been paused
*/
on(event: 'paused', callback: EventCallback3): this;
/**
* The queue has been resumed
*/
on(event: 'resumed', callback: EventCallback3): this;
/**
* A job successfully removed.
*/
on(event: 'removed', callback: RemovedEventCallback3): this;
/**
* Old jobs have been cleaned from the queue.
* `jobs` is an array of jobs that were removed, and `type` is the type of those jobs.
*
* @see Queue#clean() for details
*/
on(event: 'cleaned', callback: CleanedEventCallback3): this;
/**
* Emitted every time the queue has processed all the waiting jobs
* (even if there can be some delayed jobs not yet processed)
*/
on(event: 'drained', callback: EventCallback3): this;
once(event: string | symbol, listener: (...args: any[]) => void): this;
off(event: string | symbol, listener: (...args: any[]) => void): this;
removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
removeAllListeners(event: string | symbol): this;
/**
* Set clientName to Redis.client
*/
setWorkerName(): Promise;
/**
* Returns Redis clients array which belongs to current Queue
*/
getWorkers(): Promise<{
[key: string]: string;
}[]>;
/**
* Returns Queue name in base64 encoded format
*/
base64Name(): string;
/**
* Returns Queue name with keyPrefix (default: 'bull')
*/
clientName(): string;
/**
* Returns Redis clients array which belongs to current Queue from string with all redis clients
*
* @param list String with all redis clients
*/
parseClientList(list: string): {
[key: string]: string;
}[];
retryJob(job: Job): Promise;
private getQueueEvents;
private ensureWorkerCreated;
private attachListener;
detachListener(event: string | symbol, listener?: (...args: any[]) => void): this;
}
export declare type JobStatusClean3 = 'completed' | 'wait' | 'active' | 'delayed' | 'paused' | 'failed';
export interface JobInformation3 {
key: string;
name: string;
id?: string;
endDate?: number;
tz?: string;
cron: string;
next: number;
}
export declare type EventCallback3 = () => void;
export declare type ErrorEventCallback3 = (error: Error) => void;
export interface JobPromise3 {
/**
* Abort this job
*/
cancel(): void;
}
export declare type ActiveEventCallback3 = (job: Job, jobPromise?: JobPromise3) => void;
export declare type StalledEventCallback3 = (job: Job) => void;
export declare type ProgressEventCallback3 = (job: Job, progress: any) => void;
export declare type CompletedEventCallback3 = (job: Job, result: any) => void;
export declare type FailedEventCallback3 = (job: Job, error: Error) => void;
export declare type CleanedEventCallback3 = (jobs: Array, status: JobStatusClean3) => void;
export declare type RemovedEventCallback3 = (job: Job) => void;
export declare type WaitingEventCallback3 = (jobId: string) => void;
export {};