cokoa

0.1.1 • Public • Published

cokoa

Koa meets dependency injection container

Usage

 
var app = require('cokoa')();
 
// Delegates to app.container.set()
app.set('db.host', 'localhost');
// Delegates to app.container.get()
app.get('db.host');
app.set('service', (c) => {
    // c is app.container
    return new Service();
});
 
// But real fun starts by registering a bundle
let bundle = {
    register: (c) => {
        c.set('foo.bar', 'bar');
        c.define('foo', ['foo.bar', (bar) => {
            console.log('Lazy load!');
            return {
                bar: () => bar
            };
        }]);
    },
    run: (app) => {
        return function *(next) {
            console.log('A');
            app.context.foo = app.get('foo');
            console.log(foo.bar());
            yield next;
            console.log('B');
        }
    }
};
 
app.register(bundle, {
    'foo.bar': 'baz'
});
// app.container.get('foo.bar') == 'baz'
app.register({
    register: (c) => {
        c.set('foo.bar', 'foo');
    },
    run: (c) => {
        return function *(next) {
            console.log('C');
            yield next;
            console.log('D');
        }
    }
});
// app.container.get('foo.bar') == 'foo'
 
app.run().then((app) => {
    console.log('done');
    console.log(app.context.foo.bar());
});
 
// Will log
// > A
// > Lazy load!
// > bar
// > C
// > D
// > B
// > done
// > foo
 

Package Sidebar

Install

npm i cokoa

Weekly Downloads

2

Version

0.1.1

License

ISC

Last publish

Collaborators

  • alxarch