UNPKG

@splitsoftware/splitio-commons

Version:
19 lines (18 loc) 1.07 kB
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); }; }