Skip to main content
This release is 1 version behind 0.3.3 — the latest version of @coven/cron. Jump to latest

@coven/cron@0.3.2
Built and signed on GitHub Actions

⏳ Fantastic cron parser and constructor.

This package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers
This package works with Cloudflare Workers
This package works with Node.js
This package works with Deno
This package works with Bun
This package works with Browsers
JSR Score
100%
Published
2 months ago (0.3.2)
Coven Engineering Cron logo

JSR JSR Score

⏳ Fantastic cron parser and constructor.

This library is the fastest, smallest and safest cron expression parser out there. This is because it uses a regular expression (built with @coven/expression) to parse strings into a consumable object, and the parse back is done by really quick curried functions and generators.

It also includes a nextDate util that given a Date and a valid cron expression, will return the next matching date. It does validations beforehand so no "Invalid Date" errors are returned.

Like all Coven Engineering libraries, it has 100% test coverage and it's built in top of modern tech compatible with all JavaScript runtimes.

Only known limitation is it only accepts valid standard unix cron expressions, so cron quartz is not supported.

Parsing

To parse we use the parse util:

import { parse } from "@coven/cron";

const cron = parse("1-2,3,4 * 2 8,9 1");

Which returns:

({
	minute: [{ from: 1, to: 2 }, 3, 4],
	hour: "*",
	dayOfMonth: 2,
	month: [8, 9],
	dayOfWeek: 1,
});

Stringifying

To stringify we use the stringify util:

import { stringify } from "@coven/cron";

const cron = stringify({
	minute: [{ from: 1, to: 2 }, 3, 4],
	hour: "*",
	dayOfMonth: 2,
	month: [8, 9],
	dayOfWeek: 1,
});

Which returns:

"1-2,3,4 * 2 8,9 1";

We can also pass a partial of that "cron object":

import { stringify } from "@coven/cron";

stringify({ hour: 13 }); // "* 13 * * *"

Which returns:

"* 13 * * *";

And when an invalid date is specified, undefined is returned:

import { parse } from "@coven/cron";

parse("* * 31 2 *"); // undefined because 31 of February is invalid
Built and signed on
GitHub Actions
View transparency log

Add Package

deno add jsr:@coven/cron

Import symbol

import * as cron from "@coven/cron";

---- OR ----

Import directly with a jsr specifier

import * as cron from "jsr:@coven/cron";

Add Package

npx jsr add @coven/cron

Import symbol

import * as cron from "@coven/cron";

Add Package

yarn dlx jsr add @coven/cron

Import symbol

import * as cron from "@coven/cron";

Add Package

pnpm dlx jsr add @coven/cron

Import symbol

import * as cron from "@coven/cron";

Add Package

bunx jsr add @coven/cron

Import symbol

import * as cron from "@coven/cron";