UNPKG

flipr-validation

Version:

Validation for flipr config data. Use this to catch bad configs before they go live.

25 lines (22 loc) 920 B
const isObject = require('lodash.isobject'); const validateRule = require('./validate-rule'); const validateItem = require('./validate-item'); const validateValues = require('./validate-values'); const validateValuesByRules = require('./validate-values-by-rules/validate-values-by-rules'); function validateConfig({ config, rules = [] }) { if (!isObject(config) || Object.keys(config).length === 0) { throw new Error('options.config must be an object containing flipr config'); } const errors = []; rules.forEach((rule) => { errors.push(...validateRule(rule)); }); Object.keys(config).forEach((key) => { errors.push(...validateItem(config[key], key)); errors.push(...validateValues(config[key], key)); errors.push(...validateValuesByRules(rules, config[key], key)); }); // compact, remove falsey values return errors.filter((error) => !!error); } module.exports = validateConfig;