JSPM

croner

3.0.41
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2360696
  • Score
    100M100P100Q198071F
  • License MIT

Isomorphic JavaScript cron parser and scheduler.

Package Exports

  • croner
  • croner/minified

Readme

Croner

Build status npm version Codacy Badge MIT License jsdelivr

Pure JavaScript minimal isomorphic cron parser and scheduler. Or simply speaking - setInterval on steroids.

Documented with JSDoc for intellisense, and include TypeScript typings.

<script src="https://cdn.jsdelivr.net/npm/croner@3/dist/croner.min.js"></script>
// Run a function each second
Cron('* * * * * *', function () {
    console.log('This will run every second');
});

Installation

Manual

Node.js

npm install croner --save

// ESM Import
import Cron from "croner";

// ... or

// CommonJS Require

const Cron = require("croner");

CDN

To use as a UMD-module (stand alone, RequireJS etc.)

<script src="https://cdn.jsdelivr.net/npm/croner@3/dist/croner.min.js"></script>

To use as a ES-module

<script type="module">
    import Cron from "https://cdn.jsdelivr.net/npm/croner@3/dist/croner.min.mjs";

    // ... see usage section ...
</script>

... or a ES-module with import-map

<script type="importmap">
    {
        "imports": {
            "croner": "https://cdn.jsdelivr.net/npm/croner@3/dist/croner.min.mjs"
        }
    }
</script>
<script type="module">
    import Cron from 'croner';

    // ... see usage section ...
</script>

Examples

Minimalist scheduling

// Run a function each second
Cron('* * * * * *', function () {
    console.log('This will run every second');
});

Minimalist scheduling with stepping

// Run a function every fifth second
Cron('*/5 * * * * *', function () {
    console.log('This will run every fifth second');
});

Minimalist scheduling with range

// Run a function the first five seconds of a minute
Cron('0-4 * * * * *', function () {
    console.log('This will run the first five seconds every minute');
});

Minimalist scheduling with options

// Run a function each second, limit to five runs
Cron('* * * * * *', { maxRuns: 5 }, function () {
    console.log('This will run each second, but only five times.');
});

Minimalist scheduling with job controls

// Run a function each second, get reference to job
var job = Cron('* * * * * *', function () {
    console.log('This will run each second.');
});

// Pause job
job.pause();

// Resume job
job.resume();

// Stop job
job.stop();

Basic scheduling

// Run every minute
var scheduler = Cron('0 * * * * *');

scheduler.schedule(function() {
    console.log('This will run every minute');
});

Scheduling with options

// Run every minute
var scheduler = Cron('0 * * * * *');

// Schedule with options (all options are optional)
scheduler.schedule({ maxRuns: 5 }, function() {
    console.log('This will run every minute.');
});

Scheduling with job controls

// Run every minute
var scheduler = Cron('0 * * * * *');

// Schedule with options (all options are optional)
var job = scheduler.schedule({ maxRuns: 5 }, function() {
    console.log('This will run every minute.');
});

// Pause job
job.pause();

// Resume job
job.resume();

// Stop job
job.stop();

Full API

var o = Cron( <string pattern> [, <object options>] [, <function callback> ] );
// If Cron is initialized without a scheduled function, cron itself is returned
// and the following member functions is available.
o.next( [ <date previous> ] );
o.msToNext();
o.previous();

// If Cron is initialized _with_ a scheduled function, the job is retured instead.
// Otherwise you get a reference to the job when scheduling a new job.
var job = o.schedule( [ { startAt: <date>, stopAt: <date>, maxRuns: <integer> } ,] callback);

// These self-explanatory functions is available to control the job
job.pause();
job.resume();
job.stop();

Pattern

┌──────────────── (optional) second (0 - 59)
│ ┌────────────── minute (0 - 59)
│ │ ┌──────────── hour (0 - 23)
│ │ │ ┌────────── day of month (1 - 31)
│ │ │ │ ┌──────── month (1 - 12)
│ │ │ │ │ ┌────── day of week (0 - 6) 
│ │ │ │ │        (0 to 6 are Sunday to Saturday; 7 is Sunday, the same as 0)
│ │ │ │ │ │
* * * * * *

License

MIT