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.
34 lines (33 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GroupInstanceToken = void 0;
const InjectionToken_1 = require("./InjectionToken");
const MethodNotImplementedError_1 = require("../errors/MethodNotImplementedError");
class GroupInstanceToken extends InjectionToken_1.InjectionToken {
predicate;
isCascade = true;
constructor(predicate) {
super();
this.predicate = predicate;
}
select(fn) {
return (s) => this.resolve(s).map(fn);
}
args(...deps) {
throw new MethodNotImplementedError_1.MethodNotImplementedError('not implemented');
}
argsFn(getArgsFn) {
throw new MethodNotImplementedError_1.MethodNotImplementedError('not implemented');
}
lazy() {
throw new MethodNotImplementedError_1.MethodNotImplementedError('not implemented');
}
cascade(isTrue) {
this.isCascade = isTrue;
return this;
}
resolve(c) {
return c.getInstances(this.isCascade).filter(this.predicate);
}
}
exports.GroupInstanceToken = GroupInstanceToken;