jb

james-bond

Hire James Bond to deeply observe your (object) targets.

Showing:

Popularity

Downloads/wk

3

GitHub Stars

1

Maintenance

Last Commit

2mos ago

Contributors

0

Package

Dependencies

1

License

MIT

Type Definitions

Built-In

Tree-Shakeable

No?

Categories

Readme

James Bond

Hire James Bond to deeply observe your (object) targets.

Summary

Use james-bond to observe changes in objects (including nested objects) recursively, then fire a handler with the specified arguments. james-bond uses Object.observe internally. Object.observe on it's own watches only the top-most level of an object for changes.

This works with nodejs>=0.11.3 and browsers that have Object.observe.

Usage

var bond = require('james-bond')

var janus = {
    name: 'Alec Trevelyan',
    stats: {
        kills: 8,
    },
    kill: function (someone) {
        console.log('killed ' + someone)
        this.stats.kills++
    },
}

bond.observe(janus, function (intel) {
    console.log('Changes were made to these paths:', intel.paths)
})

setTimeout(function () {
    janus.kill('someone')
}, 1000)

If you need to update a view, or something, who knows, you can pass in the function responsible for it, plus arguments for the function. The intel parameter will be passed in as the last argument to the function, that way the function works without having to modify it's signature, but if you do want to modify the function then you can take advantage of the intel parameter.

var bond = require('james-bond')

var janus = {
    name: 'Alec Trevelyan',
    stats: {
        kills: 8,
    },
    kill: function (someone) {
        console.log('killed ' + someone)
        this.stats.kills++
    },
}

// A function called updateView is defined and available in this scope, then:

bond.observe(janus, updateView, arg1, arg2, arg3, etc)

// updateView will be called as updateView(arg1, arg2, arg3, etc, intel)

setTimeout(function () {
    janus.kill('someone')
}, 1000)

Roadmap

v1.0.0

  • Provide more information through the intel parameter of the callback. Currently only the paths of things that have changed are available.
  • Observe new inner objects. Currently, if you replace an object inside a target with a new object, this new inner object is not observed.
  • Don't fire the callback for each inner object that is changed, but once for the whole object.

v2.0.0

  • Add a way to specify that the handler function should be called with requestAnimationFrame so rendering isn't blocked.
  • Observe when functions are called. E.g. intel will show that Janus killed someone.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial