const _ = require("lodash"); const resolvePointer = require('./resolvePointer.cjs'); module.exports = (ajv) => ajv.addKeyword({ keyword: "sumOf", validate: function validate( { list, map }, total, _parent, { rootData, instancePath } ) { if (list.$data) { list = resolvePointer(rootData, instancePath, list.$data); } if (map) list = _.map(list, map); if (_.sum(list) === total) return true; validate.errors = [ { keyword: "sumOf", message: "should add up to sum total", params: { list, }, }, ]; return false; }, $data: true, errors: true, });