@difizen/mana-syringe
Version:
84 lines (82 loc) • 2.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _exportNames = {
bindSingleton: true,
bindTransient: true,
bindLifecycle: true,
bindNamed: true,
bindGeneralToken: true,
bindMonoToken: true,
namedToIdentifier: true,
tokenToIdentifier: true,
GlobalContainer: true
};
exports.GlobalContainer = void 0;
exports.bindGeneralToken = bindGeneralToken;
exports.bindLifecycle = bindLifecycle;
exports.bindMonoToken = bindMonoToken;
exports.bindNamed = bindNamed;
exports.bindSingleton = bindSingleton;
exports.bindTransient = bindTransient;
exports.namedToIdentifier = namedToIdentifier;
exports.tokenToIdentifier = tokenToIdentifier;
var _inversify = require("inversify");
var _core = require("../core");
var _inversifyProtocol = require("./inversify-protocol");
Object.keys(_inversifyProtocol).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _inversifyProtocol[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _inversifyProtocol[key];
}
});
});
function bindSingleton(toBind) {
return toBind.inSingletonScope();
}
function bindTransient(toBind) {
return toBind.inTransientScope();
}
function bindLifecycle(toBind, option) {
if (option.lifecycle === _core.Syringe.Lifecycle.singleton) {
return bindSingleton(toBind);
}
return bindTransient(toBind);
}
function bindNamed(toBind, named) {
toBind.whenTargetNamed(namedToIdentifier(named));
}
function bindGeneralToken(token, ictx) {
return ictx.container.bind(tokenToIdentifier(token));
}
function bindMonoToken(token, ictx) {
if (ictx.container.isBound(tokenToIdentifier(token))) {
try {
return ictx.container.rebind(tokenToIdentifier(token));
} catch (ex) {
// not bind in crrent container
return ictx.container.bind(tokenToIdentifier(token));
}
}
return ictx.container.bind(tokenToIdentifier(token));
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function namedToIdentifier(named) {
if (_core.Utils.isDefinedToken(named)) {
return named.symbol;
}
return named;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function tokenToIdentifier(token) {
if (_core.Utils.isDefinedToken(token)) {
return token.symbol;
}
return token;
}
var GlobalContainer = exports.GlobalContainer = new _inversify.Container();