promise-di

1.0.8 • Public • Published

promise-di

Simple, promise-based dependency injection container.

Usage

Di.Container(context, global): Container - create new container instance, context - any abstract object object, passed to service as dep global - services cached in this object, if service not depends on context

Di.Container.get(Prototype) - get configured instance from given service Prototype

Define service

function Logger(context) {
    var logger = {
        debug: function debug(msg) {
            console.log('log:', context, msg);
        }
    };
 
    return logger;
}
Logger._di = [Context, 'Logger'];
 
function Controller(logger) {
    console.log(logger.debug('message'));
}
Controller._di = [Logger, 'Controller'];
 
 
var Di = require('promise-di');
var cache = {};
var context = {
    test: 123
};
var container = Di.Container(context, cache);
 
var controller = container.get(Controller);  //outputs 'log: {test: 123}, message'

Handling errors

var Di = require('promise-di');
 
function Data(context) {
    throw new Error();
 
    return {test: 123};
}
Logger._di = [Context, 'Data'];
 
function Controller(data) {
    console.log(data);
}
Controller._di = [
    [Data, Di.cnt.data({test: 321})],
    'Controller'
];
 
var context = {
    test: 123
};
var controller = Di.Builder()(context).get(Controller);  //outputs '{test: 321}'
 

Readme

Keywords

Package Sidebar

Install

npm i promise-di

Weekly Downloads

2

Version

1.0.8

License

MIT

Last publish

Collaborators

  • zerkalica