ts-ioc-container
Version:
Typescript IoC container
10 lines (9 loc) • 666 B
JavaScript
import { isDependencyKey } from '../container/IContainer';
import { getMetadata, setMetadata } from '../metadata';
import { isProviderPipe } from '../provider/ProviderPipe';
export const scope = (...predicates) => (r) => r.when(...predicates);
const METADATA_KEY = 'registration';
export const getTransformers = (Target) => getMetadata(Target, METADATA_KEY) ?? [];
export const register = (...mappers) => setMetadata(METADATA_KEY, mappers.map((m) => (isProviderPipe(m) ? (r) => m.mapRegistration(r) : m)));
export const asAlias = (target) => (r) => r.bindToAlias(isDependencyKey(target) ? target : target.key);
export const asKey = (key) => (r) => r.bindToKey(key);