@launchtray/tsyringe-async
Version:
Lightweight dependency injection container for JavaScript/TypeScript, with asynchronous resolution
21 lines (20 loc) • 827 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
function predicateAwareClassFactory(predicate, trueConstructor, falseConstructor, useCaching = true) {
let instance;
let previousPredicate;
return (dependencyContainer) => tslib_1.__awaiter(this, void 0, void 0, function* () {
const currentPredicate = predicate(dependencyContainer);
if (!useCaching || previousPredicate !== currentPredicate) {
if ((previousPredicate = currentPredicate)) {
instance = dependencyContainer.resolve(trueConstructor);
}
else {
instance = dependencyContainer.resolve(falseConstructor);
}
}
return instance;
});
}
exports.default = predicateAwareClassFactory;