18 lines
682 B
JavaScript
18 lines
682 B
JavaScript
|
export default function predicateAwareClassFactory(predicate, trueConstructor, falseConstructor, useCaching) {
|
||
|
if (useCaching === void 0) { useCaching = true; }
|
||
|
var instance;
|
||
|
var previousPredicate;
|
||
|
return function (dependencyContainer) {
|
||
|
var currentPredicate = predicate(dependencyContainer);
|
||
|
if (!useCaching || previousPredicate !== currentPredicate) {
|
||
|
if ((previousPredicate = currentPredicate)) {
|
||
|
instance = dependencyContainer.resolve(trueConstructor);
|
||
|
}
|
||
|
else {
|
||
|
instance = dependencyContainer.resolve(falseConstructor);
|
||
|
}
|
||
|
}
|
||
|
return instance;
|
||
|
};
|
||
|
}
|