nuclear-binding-container
Version:
A binding registry to be used within a nuclear app to register resolver functions for specific keys.
54 lines (47 loc) • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.bind = bind;
exports.bindIf = bindIf;
exports.singleton = singleton;
var _actionTypes = require('./actionTypes');
var _getters = require('./getters');
/**
* Register a binding with the container.
*
* @public
* @param {Nuclear.Reactor} reactor
* @param {string} key
* @param {boolean} shared
* @param {function} resolver
*/
function bind(reactor, key, shared, resolver) {
reactor.dispatch(_actionTypes.ADD, { key: key, shared: shared, resolver: resolver });
}
/**
* Register a binding if it is not in the container.
*
* @public
* @param {Nuclear.Reactor} reactor
* @param {string} key
* @param {boolean} shared
* @param {function} resolver
*/
function bindIf(reactor, key, shared, resolver) {
if (reactor.evaluate((0, _getters.binding)(key))) {
return;
}
bind(reactor, key, shared, resolver);
}
/**
* Register a shared binding in the container.
*
* @public
* @param {Nuclear.Reactor} reactor
* @param {string} key
* @param {function} resolver
*/
function singleton(reactor, key, resolver) {
bind(reactor, key, true, resolver);
}