best-queue
Version:
Queue in runtime base promise
16 lines (15 loc) • 781 B
TypeScript
import { Listener } from './subscriber';
export interface Options {
max?: number;
interval?: number;
recordError?: boolean;
}
declare type PromiseReturn<R> = R extends () => infer P ? P extends Promise<infer Result> ? Result : P : R extends Promise<infer S> ? S : R;
export declare type QueueResult<R> = R extends [infer First, ...infer Rest] ? [PromiseReturn<First>, ...QueueResult<Rest>] : R extends [] ? R : R extends Array<infer S> ? PromiseReturn<S>[] : R[];
interface EnhanceQueue<R> extends Promise<QueueResult<R>> {
pause: () => void;
resume: () => void;
subscribe: (listener: Listener<QueueResult<R>>) => () => void;
}
declare function createQueue<R extends any[] = unknown[]>(tasks: R, options?: Options): EnhanceQueue<R>;
export { createQueue };