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!

    Install

    npm i cogsworth

    DownloadsWeekly Downloads

    0

    Version

    0.0.1

    License

    MIT

    Last publish

    Collaborators

    • cdaringe