Neutron Polarization Manipulator

    james-bond
    TypeScript icon, indicating that this package has built-in type declarations

    0.5.0 • Public • Published

    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.

    Install

    npm i james-bond

    DownloadsWeekly Downloads

    24

    Version

    0.5.0

    License

    MIT

    Unpacked Size

    143 kB

    Total Files

    24

    Last publish

    Collaborators

    • trusktr