0.0.1 • Published 8 years ago
cogsworth v0.0.1
cogsworth
easy & capable scheduling for node & the browser
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
micro
service- 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!
0.0.1
8 years ago