UNPKG

ts-ioc-container

Version:
35 lines (34 loc) 1.09 kB
import { isProviderPipe, registerPipe } from './ProviderPipe'; export const args = (...extraArgs) => registerPipe((p) => p.setArgs(() => extraArgs)); export const argsFn = (fn) => registerPipe((p) => p.setArgs(fn)); export const scopeAccess = (predicate) => registerPipe((p) => p.setAccessPredicate(predicate)); export class ProviderDecorator { decorated; constructor(decorated) { this.decorated = decorated; } setAccessPredicate(predicate) { this.decorated.setAccessPredicate(predicate); return this; } hasAccess(options) { return this.decorated.hasAccess(options); } resolve(container, options) { return this.decorated.resolve(container, options); } pipe(...mappers) { const fns = mappers.map((m) => { if (isProviderPipe(m)) { return m.mapProvider.bind(m); } return m; }); this.decorated = this.decorated.pipe(...fns); return this; } setArgs(argsFn) { this.decorated.setArgs(argsFn); return this; } }