UNPKG

@launchtray/tsyringe-async

Version:

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

21 lines (20 loc) 827 B
"use strict"; 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;