@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
19 lines (18 loc) • 1.07 kB
JavaScript
import { thenable } from '../../utils/promise/thenable';
export function prerequisitesMatcherContext(prerequisites, storage, log) {
if (prerequisites === void 0) { prerequisites = []; }
return function prerequisitesMatcher(_a, splitEvaluator) {
var key = _a.key, attributes = _a.attributes;
function evaluatePrerequisite(prerequisite) {
var evaluation = splitEvaluator(log, key, prerequisite.n, attributes, storage);
return thenable(evaluation) ?
evaluation.then(function (evaluation) { return prerequisite.ts.indexOf(evaluation.treatment) !== -1; }) :
prerequisite.ts.indexOf(evaluation.treatment) !== -1;
}
return prerequisites.reduce(function (prerequisitesMet, prerequisite) {
return thenable(prerequisitesMet) ?
prerequisitesMet.then(function (prerequisitesMet) { return prerequisitesMet ? evaluatePrerequisite(prerequisite) : false; }) :
prerequisitesMet ? evaluatePrerequisite(prerequisite) : false;
}, true);
};
}