///
///
import {EventEmitter} from 'events';
import {ClientOpts, RedisClient} from 'redis';
declare class BeeQueue extends EventEmitter {
name: string;
keyPrefix: string;
jobs: any;
paused: boolean;
settings: any;
backoffStrategies: Map) => number>;
constructor(name: string, settings?: BeeQueue.QueueSettings);
on(ev: 'ready', fn: () => void): this;
on(ev: 'error', fn: (err: Error) => void): this;
on(ev: 'succeeded', fn: (job: BeeQueue.Job, result: any) => void): this;
on(ev: 'retrying', fn: (job: BeeQueue.Job, err: Error) => void): this;
on(ev: 'failed', fn: (job: BeeQueue.Job, err: Error) => void): this;
on(ev: 'stalled', fn: (jobId: string) => void): this;
on(ev: 'job succeeded', fn: (jobId: string, result: any) => void): this;
on(ev: 'job retrying', fn: (jobId: string, err: Error) => void): this;
on(ev: 'job failed', fn: (jobId: string, err: Error) => void): this;
on(ev: 'job progress', fn: (jobId: string, progress: any) => void): this;
ready(): Promise;
ready(cb?: (err: Error | null) => void): Promise;
isRunning(): boolean;
createJob(data: U): BeeQueue.Job;
getJob(jobId: string, cb: (job: BeeQueue.Job) => void): void;
getJob(jobId: string): Promise>;
getJobs(
type: string,
page: BeeQueue.Page,
cb: (jobs: BeeQueue.Job[]) => void
): void;
getJobs(type: string, page: BeeQueue.Page): Promise[]>;
process(handler: (job: BeeQueue.Job) => Promise): void;
process(
handler: (job: BeeQueue.Job, done: BeeQueue.DoneCallback) => void
): void;
process(
concurrency: number,
handler: (job: BeeQueue.Job) => Promise
): void;
process(
concurrency: number,
handler: (job: BeeQueue.Job, done: BeeQueue.DoneCallback) => void
): void;
checkStalledJobs(interval?: number): Promise;
checkStalledJobs(
interval: number,
cb: (err: Error, numStalled: number) => void
): void;
checkStalledJobs(cb: (err: Error, numStalled: number) => void): void;
checkHealth(): Promise;
checkHealth(cb: (counts: BeeQueue.HealthCheckResult) => void): void;
close(cb: () => void): void;
close(timeout?: number | null): Promise;
close(timeout: number | undefined | null, cb: () => void): void;
isRunning(): boolean;
ready(): Promise;
ready(cb: () => void): Promise;
removeJob(jobId: string): Promise;
removeJob(jobId: string, cb: () => void): void;
destroy(): Promise;
destroy(cb: () => void): void;
}
declare namespace BeeQueue {
interface QueueSettings {
prefix?: string;
stallInterval?: number;
nearTermWindow?: number;
delayedDebounce?: number;
redis?: ClientOpts | RedisClient;
isWorker?: boolean;
getEvents?: boolean;
sendEvents?: boolean;
storeJobs?: boolean;
ensureScripts?: boolean;
activateDelayedJobs?: boolean;
removeOnSuccess?: boolean;
removeOnFailure?: boolean;
quitCommandClient?: boolean;
redisScanCount?: number;
}
interface Job extends EventEmitter {
id: string;
data: T;
readonly options: any;
queue: BeeQueue;
progress: any;
status: 'created' | 'succeeded' | 'failed' | 'retrying';
on(ev: 'succeeded', fn: (result: any) => void): this;
on(ev: 'retrying', fn: (err: Error) => void): this;
on(ev: 'failed', fn: (err: Error) => void): this;
on(ev: 'progress', fn: (progress: any) => void): this;
setId(id: string): this;
retries(n: number): this;
backoff(strategy: string, delayFactor?: number): this;
delayUntil(dateOrTimestamp: Date | number): this;
timeout(milliseconds: number): this;
save(): Promise;
save(cb: (job: this) => void): void;
reportProgress(p: any): void;
remove(): Promise;
remove(cb: (job: this) => void): void;
}
interface Page {
start?: number;
end?: number;
size?: number;
}
interface HealthCheckResult {
waiting: number;
active: number;
succeeded: number;
failed: number;
delayed: number;
newestJob?: string;
}
type DoneCallback = (error: Error | null, result?: T) => void;
}
export = BeeQueue;