UNPKG

@difizen/mana-syringe

Version:

84 lines (82 loc) 2.52 kB
"use strict"; 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();