Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

70 lines (55 sloc) 1.739 kb

change processor (node.js)

Makes it easy to compare objects and based on the differences decide what code to run.


var changeProcessor = require('./../lib/changeProcessor')

var personChangeProcessor = changeProcessor(function() {
    this.onChange("name", function(done) {
        // NOTE - Here we might do something like send a message, trigger an authorisation process...
        console.log("changed - name");


    this.onChange("name.first", function(done) {
        console.log("changed - name.first");


var original = {
    name : {
        first: "Bob",
        second: "Marshall"

var updated = {
    name : {
        first: "Robert", // NOTE - Different value
        second: "Marshall"

var allDone = function() { 
    console.log("all done."); 

personChangeProcessor(original, updated, allDone);

The output from this will be

changed - name
changed - name.first
all done

Note even though we only changed name.first the event for name was raised too.


The project comes with examples in the examples directory:

node examples/simple
node examples/allinOneFile


First install mocha:

npm install mocha -g

Run the tests using npm test or:

mocha -R spec spec/testFixture spec/ -w -G --recursive


  • A change to a property could trigger further changes and we should probably then call their appropriate handlers (avoiding cycles).
  • Suitable reporting of errors that occur inside changeTo methods.
  • Optional built-in logging using winston.
Jump to Line
Something went wrong with that request. Please try again.