cogsworth

0.0.1 • Public • Published

cogsworth

easy & capable scheduling for node & the browser

Codeship Status for cdaringe/cogsworth

cogsworth

what

a scheduling suite. use it to:

  • load events, recurrences, or intervals into the system
  • have the system emit an event or call a function when a scheduled event is triggered

for example,

  • "make an API call every 10 minutes"
  • "run a backup every month"
  • "call my sister every 20 seconds"

it ships with:

  • a Scheduler
    • inspired by the all-to-rad Java Quartz scheduler
  • a microservice
    • an easy plug-n-play REST API to load & interact with schedule ticks
  • various extendable scheduling primatives used by the scheduler, such as the Trigger, Schedule, & Storage interfaces (with base classes).

demo

see the docsite

usage

var Scheduler = require('cogsworth-scheduler')
var TriggerRrule = require('cogsworth-trigger-rrule') // e.g. iCal
 
// create a scheduler & a schedule
var scheduler = new Scheduler()
var schedule = {
  id: 'best_schedule',
  trigger: new TriggerRrule({
    rrule: 'FREQ=SECONDLY;COUNT=5'
  })
}
 
// add the schedule, start the scheduler, and watch the events stream thru
scheduler.addSchedule(schedule)
.then(scheduler.start.bind(scheduler))
.then(function (observable) {
  observable.subscribe(function logEvent (evt) {
    console.log(evt.schedule.id, evt.trigger.date)
    // best_schedule 2017-07-10T07:26:38.082Z
    // best_schedule 2017-07-10T07:26:39.000Z
    // best_schedule 2017-07-10T07:26:40.000Z
    // best_schedule 2017-07-10T07:26:41.000Z
    // best_schedule 2017-07-10T07:26:42.000Z
  })
})

some users may not care for the observable syntax, and may use the following instead:

var scheduler = new Scheduler({
  onTick: function (evt) {
    console.log(evt.schedule.id, evt.trigger.date)
  }
})
scheduler.addSchedule(...).then(scheduler.start.bind(scheduler))

this is a boring example with only one schedule. add as many schedules as you desire!

Package Sidebar

Install

npm i cogsworth

Weekly Downloads

3

Version

0.0.1

License

MIT

Last publish

Collaborators

  • cdaringe