npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

cronos

v0.1.0

Published

A module for handling cron jobs

Readme

Cronos

A NodeJS module for handling cron jobs. It's a wrapper around node-schedule and it enhances its features by allowing to automatically keep track of the status of a job and adding a more efficient errors handling mechanic.

Status

Alpha as f*ck

Installation

Just clone this repo and launch npm install -d

Features

  • All the features of node-schedule are present
  • Easy to track the jobs that are running (see the how to)
  • In case of failure recover all the running job with the load() function
  • Error handling based on events

General Instructions

The main component of this module is the Scheduler, that allows to create and schedule job. A job is created by passing a JSON object

job = {
   name:'myJob',
   work:'fileName',
   period:'cronExpression'
}

work is a JavaScript file containing the function that will be executed by the job. It must conform the following structure:

var execute = function(){
  //body of the function
};
exports.execute = execute;

period is a cron expression defining when the job must be executed ( actually you can specify the period in all the way supported by node-schedule )

Both the Scheduler and the job objects are event emitter.

The Scheduler emits the following event:

  • scheduled: A particular job is scheduled
  • run: A particular job has been executed (triggered AFTER the execution of the function)
  • stop: A particular job has been stopped

The job emits the following event:

  • error: An error is occurred during the execution of the job function

How-to

Hello World

First require the module:

var Scheduler = require('path_to_the_module/scheduler.js'); //to be change as I publish the module on npm

Then to create a job:

var scheduler = new Scheduler('path_to_the_script_folder');
var job = {name:'myJob', work:'work', period:'* * * * *'};
scheduler.createJobAndSchedule(job,function(cronJob){
  //..do some other stuff
});

Given that work is this JavaScript file:

var execute = function(){
  console.log('Hello World!')
};
exports = exports.execute;

Scheduler

This object contains all the method for handling jobs

  • createJob(job,callback): create a job but don't schedule it
  • createJobAndSchduler(job,callback): create a job and schedule it for execution
  • reSchedule(cronJob): re-schedule a job
  • stopJob(cronJob): stop a job
  • cancelJob(cronJob): terminate a job and cancel it from the database
  • terminateJob(cronJob): terminate a job but don't remove it from the database
  • load(): load all the not terminated jobs saved in the database and schedule them.

All the jobs are contained in the jobs array of the Scheduler object

Handling errors

To handle errors simply write a handler for the error event of the job

var scheduler = new Scheduler('path_to_the_script_folder');
var job = {name:'myJob', work:'work', period:'* * * * *'};
scheduler.createJobAndSchedule(job,function(cronJob){
  cronJob.on('error',functon(err){
     //handle the error
  });
});

NOTE: if you schedule the job through the load method you have to rewrite the error handler.