unqueue
TypeScript icon, indicating that this package has built-in type declarations

2.0.13Β β€’Β PublicΒ β€’Β Published

πŸ“ Unqueue

Unqueue is a simple, zero-config, in-memory queue for async JavaScript tasks. You can use it to sequentially run tasks that return promises, like sending emails or performing networking requests. It automatically retries failed promises too.

Status
Build Node CI Dependencies GitHub release (latest by date) Snyk Vulnerabilities for GitHub Repo
Health License CI CLA Assistant Pull Request Labeler
PRs PR Generator CI Merge PRs

⭐️ Features

  • No configuration or databases required (in-memory)
  • Automatically retry tasks if they fail
  • First-class TypeScript and Node.js 14 support
  • No dependencies

πŸ’» Getting started

Install from npm:

npm install unqueue

Create a new instance of the class and use the add function:

import { Unqueue } from "unqueue";

const queue = new Unqueue();

queue.add(async () => {
  // Async function that might throw an error
});

Optionally, you can add metadata for tasks:

// Example helper to fetch and write user details
const userIds = ["anand", "carlo"];
const get = async (userId: string) => {
  const { data } = await axios.get(`https://example.com/users/${userId}`);
  await fs.writeFile(`${userId}.json`, data);
};

// Error handler that logs the user ID from metadata
const queue = new Unqueue({
  onError: ({ metadata, error }) =>
    console.log(`Got an error in fetching ${metadata.userId}`, error),
});
userIds.forEach((id) => {
  queue.add(() => get(id), { id });
});

You can configure the queue, these are the defaults:

const queue = new Unqueue({
  maxAttempts: 3,
  debug: false,
  ttl: 3600,
  onError: ({ task, error }) => console.log(`Error in ${task.name}`, error),
});

πŸ“„ License

MIT Β© Koj

Koj

An open source project by Koj.
Furnish your home in style, for as low as CHF175/month β†’

Package Sidebar

Install

npm i unqueue

Weekly Downloads

1

Version

2.0.13

License

MIT

Unpacked Size

22.6 kB

Total Files

15

Last publish

Collaborators

  • anandchowdhary
  • kojbot