@queuedash/api
Version:
A stunning, sleek dashboard for Bull, BullMQ, and Bee-Queue
104 lines • 3.62 kB
TypeScript
import type { RedisInfo } from "redis-info";
export type JobOptions = {
priority?: number;
attempts?: number;
delay?: number;
lifo?: boolean;
timeout?: number;
removeOnComplete?: boolean | number;
removeOnFail?: boolean | number;
repeat?: {
count?: number;
pattern?: string;
every?: number;
limit?: number;
};
};
export type AdaptedJob = {
id: string;
name: string;
data: Record<string, unknown>;
opts: JobOptions;
createdAt: Date;
processedAt: Date | null;
finishedAt: Date | null;
failedReason?: string;
stacktrace?: string[];
retriedAt: Date | null;
returnValue?: unknown;
};
export type JobCounts = Partial<Record<string, number>>;
export type FeatureSupport<SupportedStatus extends string = string> = {
pause: boolean;
resume: boolean;
clean: boolean | {
supportedStatuses: SupportedStatus[];
};
retry: boolean;
promote: boolean;
logs: boolean;
schedulers: boolean;
flows: boolean;
priorities: boolean;
empty: boolean;
metrics: boolean;
statuses: SupportedStatus[];
};
export type SchedulerInfo = {
key: string;
name: string;
id?: string | null;
iterationCount?: number;
limit?: number;
endDate?: number;
tz?: string;
pattern?: string;
every?: number;
next?: number;
template?: {
data?: Record<string, unknown>;
};
};
export type QueueMetrics = {
data: number[];
count: number;
meta: {
count: number;
prevTS: number;
prevCount: number;
};
};
export declare abstract class QueueAdapter<SupportedStatus extends string = string, CleanableStatus extends SupportedStatus = SupportedStatus> {
protected displayName: string;
protected jobNameFn?: (data: Record<string, unknown>) => string;
constructor(displayName: string, jobNameFn?: (data: Record<string, unknown>) => string);
abstract getName(): string;
abstract getType(): "bull" | "bullmq" | "bee" | "groupmq";
getDisplayName(): string;
abstract supports: FeatureSupport<SupportedStatus>;
abstract getJobCounts(): Promise<JobCounts>;
abstract isPaused(): Promise<boolean>;
abstract pause(): Promise<void>;
abstract resume(): Promise<void>;
abstract empty(): Promise<void>;
abstract clean(status: CleanableStatus, graceMs: number): Promise<void>;
abstract getRedisInfo(): Promise<RedisInfo & {
maxclients: string;
}>;
abstract getJobs(status: SupportedStatus, start: number, end: number): Promise<AdaptedJob[]>;
abstract getJob(jobId: string): Promise<AdaptedJob | null>;
abstract addJob(data: Record<string, unknown>, opts?: Record<string, unknown>): Promise<AdaptedJob>;
abstract removeJob(jobId: string): Promise<void>;
abstract retryJob(jobId: string): Promise<void>;
abstract promoteJob(jobId: string): Promise<void>;
abstract discardJob(jobId: string): Promise<void>;
abstract getJobLogs(jobId: string): Promise<string[] | null>;
getSchedulers?(): Promise<SchedulerInfo[]>;
addScheduler?(name: string, opts: Record<string, unknown>, template: Record<string, unknown>): Promise<void>;
removeScheduler?(key: string): Promise<void>;
getMetrics?(type: "completed" | "failed", start: number, end: number): Promise<QueueMetrics>;
protected getJobName(data: Record<string, unknown>, fallback: string): string;
supportsStatus(status: SupportedStatus): boolean;
canCleanStatus(status: SupportedStatus): status is CleanableStatus;
}
//# sourceMappingURL=base.adapter.d.ts.map