UNPKG

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
"use strict"; 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, }; };