UNPKG

best-queue

Version:

Queue in runtime base promise

16 lines (15 loc) 781 B
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 };