dcc-decoder
Version:
<img alttext="COVID Green Logo" src="https://raw.githubusercontent.com/lfph/artwork/master/projects/covidgreen/stacked/color/covidgreen-stacked-color.png" width="300" />
33 lines (32 loc) • 1.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.runRuleSet = exports.runRule = void 0;
const certlogic_js_1 = require("certlogic-js");
exports.runRule = (rule, data) => {
try {
const evalResult = certlogic_js_1.evaluate(rule.Logic, data);
if (typeof evalResult === 'boolean') {
return evalResult;
}
return new Error(`rule evaluated to a non-boolean: ${JSON.stringify(evalResult)}`);
}
catch (e) {
return new Error(`rule evaluation errored out: ${e.message}`);
}
};
exports.runRuleSet = (ruleSet, data) => {
const ruleEvaluations = {};
ruleSet.forEach(rule => {
ruleEvaluations[rule.Identifier] = exports.runRule(rule, data);
});
const hasErrors = Object.values(ruleEvaluations).some(ruleResult => typeof ruleResult !== 'boolean');
const allSatisfied = !hasErrors &&
Object.values(ruleEvaluations)
.map(ruleResult => ruleResult)
.reduce((l, r) => l && r);
return {
ruleEvaluations,
hasErrors,
allSatisfied,
};
};