Ninjas Practicing Multidimensionality

    bjson

    1.0.1 • Public • Published

    bjson

    Bind Json: Reactive way to read/write json files.

    npm install bjson --save
    

    How it works

    When you need to edit a json file, what you do?

    1. Read json file.
    2. Deserialize json file.
    3. Edit parsed object.
    4. Serialize new object.
    5. Write back into file.

    With bjson:

    1. Read json file. (Will return parsed object)
    2. Edit object. (All changes are reactive. Will write it back into file)

    Getting started

    Binding json

    settings.json

    {}

    whatever.js

    var bjson = require('bjson');
    var settings = bjson('settings'); // will read or create settings.json
    settings.prop = 'bar';

    settings.json:

    {
        "prop": "bar"
    }

    Watching changes with observe

    You can watch changes with a instance of Object.observe passed as callback argument.

    settings.json:

    {
        "prop": "bar"
    }

    whatever.js

    var bjson = require('bjson');
    var settings = bjson('settings', function(observe){
        observe.on('change', function(changes){
            console.log('Path:', changes.path);
            console.log('Old Value:', changes.oldValue);
            console.log('New Value:', changes.value);
            console.log('-----');
        });
    });
     
    settings.prop = 'foo';
    settings.otherprop = 'bar';

    Log output:

    Path: prop
    Old Value: bar
    New Value: foo
    -----
    Path: otherprop
    Old Value: undefined
    New Value: bar
    -----
    

    settings.json:

    {
        "prop": "foo",
        "otherprop": "bar"
    }

    Observe events

    var bjson = require('bjson');
    var settings = bjson('settings', function(observe){
        observe.on('add', function(changes){});
        observe.on('update', function(changes){});
        observe.on('delete', function(changes){});
        observe.on('reconfigure', function(changes){});
        observe.on('change', function(changes){}); // fired when any of the above events are emitted
    });
     

    Observe events callback changes

    path: full path to the property, including nesting
    name: name of the path
    type: name of the event
    object: object
    value: current value for the given path. same as object[name]
    oldValue: previous value of the property

    Example:

    var bjson = require('bjson');
    var settings = bjson('settings', function(observe){
        observe.on('change', function(changes){
            console.log(changes);
        });
    });
     
    settings.foo = 'bar'
     
    //log:
    // { path: 'foo',
    //   name: 'foo',
    //   type: 'add',
    //   object: { foo: 'bar' },
    //   value: 'bar',
    //   oldValue: undefined }

    Keywords

    none

    Install

    npm i bjson

    DownloadsWeekly Downloads

    4

    Version

    1.0.1

    License

    ISC

    Last publish

    Collaborators

    • renatorib