@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
23 lines (22 loc) • 1.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.prerequisitesMatcherContext = void 0;
var thenable_1 = require("../../utils/promise/thenable");
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 (0, thenable_1.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 (0, thenable_1.thenable)(prerequisitesMet) ?
prerequisitesMet.then(function (prerequisitesMet) { return prerequisitesMet ? evaluatePrerequisite(prerequisite) : false; }) :
prerequisitesMet ? evaluatePrerequisite(prerequisite) : false;
}, true);
};
}
exports.prerequisitesMatcherContext = prerequisitesMatcherContext;