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

0.1.1 • Public • Published

jobify

npm JSR JSR Score

Type-safe and much simpler wrapper for the BullMQ library.

[!WARNING] This project is in the MVP state and the API may still change a lot. At the moment, the project fits the requirements of the project rather than general purpose

Usage

import { initJobify } from "jobify";
import IORedis from "ioredis";

const redis = new IORedis({
    maxRetriesPerRequest: null,
});

const defineJob = initJobify(redis);

const job1 = defineJob("some", {
    queue: {
        defaultJobOptions: {
            delay: 100,
        },
    },
})
    .input<{ date: string }>()
    // WORKER OPTIONS
    .options({
        limiter: {
            max: 10,
            duration: 1000,
        },
    })
    .action(async (job) => {
        console.log("running", job.data.date);
        //       ^?
    });

await job1.add(
    "some",
    { date: new Date().toISOString() },
    {
        delay: 5000,
    }
);

const job2 = await defineJob("some-cron")
    .input<{ date: string }>()
    .options({
        limiter: {
            max: 10,
            duration: 1000,
        },
    })
    .action(async (job) => {
        console.log("running", job.data.date);
        //       ^?
    })
    // it will run every minute and will not be duplicated during reboots.
    .repeatable(
        { date: new Date().toISOString() },
        {
            pattern: "* * * * *",
        }
    );

TODO:

  • maybe pg-boss adapter?
  • hooks?
  • make job title optional?
  • guide with bull-board and some improves for usage

Package Sidebar

Install

npm i jobify

Weekly Downloads

212

Version

0.1.1

License

none

Unpacked Size

6.28 kB

Total Files

5

Last publish

Collaborators

  • skravets