UNPKG

@difizen/mana-syringe

Version:

48 lines (47 loc) 1.44 kB
import { Container } from 'inversify'; import { Syringe, Utils } from "../core"; export function bindSingleton(toBind) { return toBind.inSingletonScope(); } export function bindTransient(toBind) { return toBind.inTransientScope(); } export function bindLifecycle(toBind, option) { if (option.lifecycle === Syringe.Lifecycle.singleton) { return bindSingleton(toBind); } return bindTransient(toBind); } export function bindNamed(toBind, named) { toBind.whenTargetNamed(namedToIdentifier(named)); } export function bindGeneralToken(token, ictx) { return ictx.container.bind(tokenToIdentifier(token)); } export 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 export function namedToIdentifier(named) { if (Utils.isDefinedToken(named)) { return named.symbol; } return named; } // eslint-disable-next-line @typescript-eslint/no-explicit-any export function tokenToIdentifier(token) { if (Utils.isDefinedToken(token)) { return token.symbol; } return token; } export var GlobalContainer = new Container(); export * from "./inversify-protocol";