UNPKG

@splitsoftware/splitio-commons

Version:
23 lines (22 loc) 1.29 kB
"use strict"; 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;