UNPKG

@splitsoftware/splitio-commons

Version:
26 lines (25 loc) 1.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.andCombinerContext = void 0; var lang_1 = require("../../utils/lang"); var thenable_1 = require("../../utils/promise/thenable"); var constants_1 = require("../../logger/constants"); function andCombinerContext(log, matchers) { function andResults(results) { // Array.prototype.every is supported by target environments var hasMatchedAll = results.every(function (value) { return value; }); log.debug(constants_1.ENGINE_COMBINER_AND, [hasMatchedAll]); return hasMatchedAll; } return function andCombiner(key, attributes, splitEvaluator) { var matcherResults = matchers.map(function (matcher) { return matcher(key, attributes, splitEvaluator); }); // If any matching result is a thenable we should use Promise.all if ((0, lang_1.findIndex)(matcherResults, thenable_1.thenable) !== -1) { return Promise.all(matcherResults).then(andResults); } else { return andResults(matcherResults); } }; } exports.andCombinerContext = andCombinerContext;