README
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}'