/cron-compose

Easily craft precise cron expressions using a declarative syntax.

Primary LanguageTypeScriptMIT LicenseMIT

Cron Compose

License: MIT NodeJS Codecov

Cron Compose is a TypeScript library designed to make the creation of cron expressions simpler and less error-prone. With an intuitive API, it abstracts the complexities of cron syntax, allowing developers to build cron expressions through method chaining and clear function calls.

Features

  • Ease of Use: Construct cron expressions through easy-to-understand method calls.
  • Manipulate Existing Strings: Load existing cron expressions and manipulate them.
  • Flexibility: Add or remove specific time units or ranges effortlessly.
  • Type Safety: Leveage TypeScript's type-checking to avoid invalid inputs.
  • Clean Output: Automatically removes unnecessary elements and outputs clean cron strings.

Installation

To install Cron Compose, run the following command:

npm install cron-compose

Usage

Here's how to use Cron Compose:

import { CronComposer, SlotType } from "cron-compose";

const cronComposer = new CronComposer()
  .addSingle(SlotType.Minute, 1)
  .addRange(SlotType.Day, 1, 8)
  .addRange(SlotType.Day, 6, 13);

console.log(cronComposer.toString()); // "1 * 1-13 * *"

You can also parse existing Cron strings with it:

import { CronComposer } from "cron-compose";

const cronComposer = new CronComposer().parse(
  "3-4,5,6-8 */30,*/20 5-8,10-12 1,1 5,3,5 *",
);

console.log(cronComposer.toString()); // "3-8 0,20,30,40 5-8,10-12 1 3,5 *"

Finally, you can use the more human-readable API to create your Cron strings:

import { CronComposer } from "cron-compose";

console.log(
  new CronComposer()
    .parse("* * * * *")
    .every(1, "hours")
    .except.at(1, "pm")
    .toString(),
); // "* 0-12,14-23 * * *"

Testing

To run tests, use the following command:

pnpm run test

Contributing

I welcome all contributions! Please see CONTRIBUTING.md for details on how to contribute.

License

This project is licensed under the the MIT License.