xen-orchestra/@xen-orchestra/cron
2023-11-07 12:32:38 +01:00
..
.npmignore feat: unified .npmignore for all packages 2021-04-07 13:58:14 +02:00
.USAGE.md chore: hide USAGE.md 2022-02-18 17:11:52 +01:00
index.js chore(cron): remove build step 2022-03-25 17:10:22 +01:00
index.test.js test(cron): from Jest to test (#6485) 2022-10-26 09:41:39 +02:00
next.js chore(cron): remove build step 2022-03-25 17:10:22 +01:00
next.test.js test(cron): from Jest to test (#6485) 2022-10-26 09:41:39 +02:00
package.json chore: update dev deps 2023-11-07 12:32:38 +01:00
parse.js chore(cron): remove build step 2022-03-25 17:10:22 +01:00
parse.test.js test(cron): from Jest to test (#6485) 2022-10-26 09:41:39 +02:00
README.md docs: uniformize code blocks 2023-02-06 11:25:12 +01:00

@xen-orchestra/cron

Package Version License PackagePhobia Node compatibility

Focused, well maintained, cron parser/scheduler

Install

Installation of the npm package:

npm install --save @xen-orchestra/cron

Usage

Pattern syntax

<minute> <hour> <day of month> <month> <day of week>

Each entry can be:

  • a single value
  • a range (0-23 or */2)
  • a list of values/ranges (1,8-12)

A wildcard (*) can be used as a shortcut for the whole range (first-last).

Step values can be used in conjunctions with ranges. For instance, 1-7/2 is the same as 1,3,5,7.

Field Allowed values
minute 0-59
hour 0-23
day of the month 1-31 or 3-letter names (jan, feb, …)
month 0-11
day of week 0-7 (0 and 7 both mean Sunday) or 3-letter names (mon, tue, …)

Note: the month range is 0-11 to be compatible with cron, it does not appear to be very standard though.

API

createSchedule(pattern: string, zone: string = 'utc'): Schedule

Create a new schedule.

  • pattern: the pattern to use, see the syntax
  • zone: the timezone to use, use 'local' for the local timezone
import { createSchedule } from '@xen-orchestra/cron'

const schedule = createSchedule('0 0 * * sun', 'America/New_York')

Schedule#createJob(fn: Function): Job

Create a new job from this schedule.

  • fn: function to execute, if it returns a promise, it will be awaited before scheduling the next run.
const job = schedule.createJob(() => {
  console.log(new Date())
})

Schedule#next(n: number): Array<Date>

Returns the next dates matching this schedule.

  • n: number of dates to return
schedule.next(2)
// [ 2018-02-11T05:00:00.000Z, 2018-02-18T05:00:00.000Z ]

Schedule#startJob(fn: Function): () => void

Start a new job from this schedule and return a function to stop it.

  • fn: function to execute, if it returns a promise, it will be awaited before scheduling the next run.
const stopJob = schedule.startJob(() => {
  console.log(new Date())
})
stopJob()

Job#start(): void

Start this job.

job.start()

Job#stop(): void

Stop this job.

job.stop()

Contributions

Contributions are very welcomed, either on the documentation or on the code.

You may:

  • report any issue you've encountered;
  • fork and create a pull request.

License

ISC © Vates SAS