2.0.13 • Published 3 years ago

unqueue v2.0.13

Weekly downloads
99
License
MIT
Repository
github
Last release
3 years ago

📏 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
BuildNode CI Dependencies GitHub release (latest by date) Snyk Vulnerabilities for GitHub Repo
HealthLicense CI CLA Assistant Pull Request Labeler
PRsPR 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

2.0.13

3 years ago

2.0.12

3 years ago

2.0.11

3 years ago

2.0.10

3 years ago

2.0.9

3 years ago

2.0.8

3 years ago

2.0.7

3 years ago

2.0.6

3 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago