No description, website, or topics provided.
JavaScript Shell
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


A simple Node.js checklist for synchronising asynchronous tasks by maintaining a list of items to check off before calling back.


  • should callback immediately if there are no items to check off
  • should callback once all the items have been checked off
  • should callback with an error if an item is checked off that we are not waiting for
  • should callback with an error if an item is checked off twice
  • should callback with an error if an item is checked off out of order and ordered has been set to true
  • should not callback again after error
  • should throw an error if checked again after completion
  • should not alter the array passed in on construction
  • should callback with a list of errors for each item that was checked off with an error


npm install checklist


var Checklist = require('checklist');

var testItem = {
  test: 'hello'

var checklist = new Checklist([
  'item 1',
  'item 2'
], {
  ordered: true, // Set to true to error if items are checked out of order (defaults to false)
  debug: true    // Set to true to print each item to the console as it is checked off (defaults to false);
}, function(error) {
  if (error) {
    // A problem occurred
  } else {
    // Everything in the list was checked off

checklist.check('item 1');
checklist.check('item 2');


  • should allow more items to be added after construction
    • This would only be useful if before checking off an existing item it is expanded into a new list which is then added - as such maybe it may make sense to just create a new checklist and chain them


In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using ./ or .\grunt.bat.

Release History

(Nothing yet)


Copyright (c) 2012 Peter Halliday
Licensed under the MIT license.