@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
26 lines (25 loc) • 1.14 kB
JavaScript
;
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;