@difizen/mana-syringe
Version:
48 lines (47 loc) • 1.44 kB
JavaScript
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";