@launchtray/tsyringe-async
Version:
Lightweight dependency injection container for JavaScript/TypeScript, with asynchronous resolution
23 lines (22 loc) • 942 B
JavaScript
import { __awaiter, __generator } from "tslib";
export default function predicateAwareClassFactory(predicate, trueConstructor, falseConstructor, useCaching) {
var _this = this;
if (useCaching === void 0) { useCaching = true; }
var instance;
var previousPredicate;
return function (dependencyContainer) { return __awaiter(_this, void 0, void 0, function () {
var currentPredicate;
return __generator(this, function (_a) {
currentPredicate = predicate(dependencyContainer);
if (!useCaching || previousPredicate !== currentPredicate) {
if ((previousPredicate = currentPredicate)) {
instance = dependencyContainer.resolve(trueConstructor);
}
else {
instance = dependencyContainer.resolve(falseConstructor);
}
}
return [2, instance];
});
}); };
}