UNPKG

ts-ioc-container

Version:

Fast, lightweight TypeScript dependency injection container with a clean API, scoped lifecycles, decorators, tokens, hooks, lazy injection, customizable providers, and no global container objects.

30 lines (29 loc) 828 B
import { InjectionToken } from './InjectionToken'; import { MethodNotImplementedError } from '../errors/MethodNotImplementedError'; export class GroupInstanceToken extends InjectionToken { predicate; isCascade = true; constructor(predicate) { super(); this.predicate = predicate; } select(fn) { return (s) => this.resolve(s).map(fn); } args(...deps) { throw new MethodNotImplementedError('not implemented'); } argsFn(getArgsFn) { throw new MethodNotImplementedError('not implemented'); } lazy() { throw new MethodNotImplementedError('not implemented'); } cascade(isTrue) { this.isCascade = isTrue; return this; } resolve(c) { return c.getInstances(this.isCascade).filter(this.predicate); } }