mana-syringe
Version:
IoC library for mana, easily to use.
51 lines (45 loc) • 1.43 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, register) {
return register.bind(tokenToIdentifier(token));
}
export function bindMonoToken(token, register) {
if (register.isBound(tokenToIdentifier(token))) {
try {
return register.rebind(tokenToIdentifier(token));
} catch (ex) {
// not bind in crrent container
return register.bind(tokenToIdentifier(token));
}
}
return register.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';