process-queue unifies queue lifecycle controls from QueueManager with promise-based concurrency limiting inspired by p-limit, in a single TypeScript-first package.
- Hybrid API:
enqueue/limitplusstart/pause/resume/next/clear/drain - Runtime control for
concurrency,delay, andbatch - QueueManager-style item processing via
add,addEach,each, andcomplete - No external queue dependency
- Typed API and npm-ready build output
npm install process-queueimport {ProcessQueue} from "process-queue";
const queue = new ProcessQueue({concurrency: 2});
const results = await Promise.all([
queue.limit(async (value: number) => value * 2, 2),
queue.enqueue(async () => "hello")
]);
console.log(results); // [4, "hello"]Runnable examples are available in examples/:
examples/basic-limit.mjsexamples/queue-items.mjsexamples/pause-resume-and-clear.mjs
Run them after building the package:
npm run build
node examples/basic-limit.mjsnew ProcessQueue({
concurrency?: number;
delay?: number; // -1 to disable automatic post-completion scheduling
batch?: number;
paused?: boolean;
rejectOnClear?: boolean;
maxQueueSize?: number;
queue?: TItem[]; // seed item queue
callback?: (item: TItem | TItem[]) => unknown;
complete?: () => unknown;
});enqueue(task, options?)limit(fn, ...args)map(iterable, mapper)drain()
start()/resume()pause()next(retry?)clear({rejectPending, reason}?)clearQueue(...)
add(item, priority?)addEach(items, priority?)each(handler)complete(handler)size()indexOf(item)update(options)
activeCountpendingCountisPausedconcurrency(get/set)metrics()
- This package provides a new hybrid API and is intentionally breaking versus both legacy projects.
- If you used
p-limit, start withlimit,map, andconcurrency. - If you used QueueManager, use
add/addEach+each/complete+ lifecycle methods.
npm install
npm run lint
npm run typecheck
npm test
npm run build