predicate-aware-class-factory.js 739 B

12345678910111213141516171819
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. function predicateAwareClassFactory(predicate, trueConstructor, falseConstructor, useCaching = true) {
  4. let instance;
  5. let previousPredicate;
  6. return (dependencyContainer) => {
  7. const currentPredicate = predicate(dependencyContainer);
  8. if (!useCaching || previousPredicate !== currentPredicate) {
  9. if ((previousPredicate = currentPredicate)) {
  10. instance = dependencyContainer.resolve(trueConstructor);
  11. }
  12. else {
  13. instance = dependencyContainer.resolve(falseConstructor);
  14. }
  15. }
  16. return instance;
  17. };
  18. }
  19. exports.default = predicateAwareClassFactory;