UNPKG

qyu

Version:

A general-purpose asynchronous job queue for Node.js

43 lines (42 loc) 1.5 kB
import { MaybePromise } from './utils/MaybePromise.js'; export { QyuBase, type QyuInputOptions, type JobAddInput, type JobFunction }; declare class QyuBase { isAtMaxConcurrency: boolean; isRunningJobChannels: boolean; isPaused: boolean; opts: NormalizedQyuOptions; private whenEmptyDeferred; private whenFreeDeferred; private jobChannels; private jobQueue; constructor(opts?: QyuInputOptions); set(newOpts: QyuInputOptions): void; add<T>(input: JobAddInput<T>): Promise<T>; add<T extends readonly JobAddInput<unknown>[] | readonly []>(input: T): Promise<{ [K in keyof T]: T[K] extends JobAddInput<infer RetVal> ? RetVal : never; }>; pause(): Promise<undefined | void>; resume(): undefined | void; empty(): Promise<void[]>; whenEmpty(): Promise<undefined | void>; whenFree(): Promise<undefined | void>; private enqueue; private dequeue; private runJobChannel; private runJobChannels; } type JobFunction<TRes> = () => MaybePromise<TRes>; type NormalizedQyuOptions = Required<{ [K in keyof QyuInputOptions]: NonNullable<QyuInputOptions[K]>; }>; interface QyuInputOptions { concurrency?: number | undefined | null; capacity?: number | undefined | null; rampUpTime?: number | undefined | null; } type JobAddInput<JobResultVal> = JobFunction<JobResultVal> | { fn: JobFunction<JobResultVal>; signal?: AbortSignal; timeout?: number | undefined; priority?: number | undefined; };