@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
29 lines (28 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.dependencyMatcherContext = void 0;
var thenable_1 = require("../../utils/promise/thenable");
var constants_1 = require("../../logger/constants");
function dependencyMatcherContext(_a, storage, log) {
var split = _a.split, treatments = _a.treatments;
function checkTreatment(evaluation, acceptableTreatments, parentName) {
var matches = false;
if (Array.isArray(acceptableTreatments)) {
matches = acceptableTreatments.indexOf(evaluation.treatment) !== -1;
}
log.debug(constants_1.ENGINE_MATCHER_DEPENDENCY, [parentName, evaluation.treatment, evaluation.label, parentName, acceptableTreatments, matches]);
return matches;
}
return function dependencyMatcher(_a, splitEvaluator) {
var key = _a.key, attributes = _a.attributes;
log.debug(constants_1.ENGINE_MATCHER_DEPENDENCY_PRE, [split, JSON.stringify(key), attributes ? '\n attributes: ' + JSON.stringify(attributes) : '']);
var evaluation = splitEvaluator(log, key, split, attributes, storage);
if ((0, thenable_1.thenable)(evaluation)) {
return evaluation.then(function (ev) { return checkTreatment(ev, treatments, split); });
}
else {
return checkTreatment(evaluation, treatments, split);
}
};
}
exports.dependencyMatcherContext = dependencyMatcherContext;