predicate-aware-class-factory.js 631 B

12345678910111213141516
  1. export default function predicateAwareClassFactory(predicate, trueConstructor, falseConstructor, useCaching = true) {
  2. let instance;
  3. let previousPredicate;
  4. return (dependencyContainer) => {
  5. const currentPredicate = predicate(dependencyContainer);
  6. if (!useCaching || previousPredicate !== currentPredicate) {
  7. if ((previousPredicate = currentPredicate)) {
  8. instance = dependencyContainer.resolve(trueConstructor);
  9. }
  10. else {
  11. instance = dependencyContainer.resolve(falseConstructor);
  12. }
  13. }
  14. return instance;
  15. };
  16. }