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
JavaScript
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);
}
}