UNPKG

@launchtray/tsyringe-async

Version:

Lightweight dependency injection container for JavaScript/TypeScript, with asynchronous resolution

18 lines (17 loc) 712 B
import { __awaiter } from "tslib"; export default function predicateAwareClassFactory(predicate, trueConstructor, falseConstructor, useCaching = true) { let instance; let previousPredicate; return (dependencyContainer) => __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; }); }