UNPKG

n4s

Version:

Assertion library for form validations

73 lines (64 loc) 1.76 kB
import { enforce } from 'n4s'; import { defaultTo, mapFirst, bindNot, greaterThan } from 'vest-utils'; function ruleReturn(pass, message) { const output = { pass }; return output; } function failing() { return ruleReturn(false); } function passing() { return ruleReturn(true); } function defaultToFailing(callback) { return defaultTo(callback, failing()); } function defaultToPassing(callback) { return defaultTo(callback, passing()); } function runLazyRule(lazyRule, currentValue) { try { return lazyRule.run(currentValue); } catch (_a) { return failing(); } } function allOf(value, ...rules) { return defaultToPassing(mapFirst(rules, (rule, breakout) => { const res = runLazyRule(rule, value); breakout(!res.pass, res); })); } function anyOf(value, ...rules) { return defaultToFailing(mapFirst(rules, (rule, breakout) => { const res = runLazyRule(rule, value); breakout(res.pass, res); })); } function noneOf(value, ...rules) { return defaultToPassing(mapFirst(rules, (rule, breakout) => { const res = runLazyRule(rule, value); breakout(res.pass, failing()); })); } function equals(value, arg1) { return value === arg1; } bindNot(equals); const REQUIRED_COUNT = 1; function oneOf(value, ...rules) { let passingCount = 0; rules.some(rule => { const res = runLazyRule(rule, value); if (res.pass) { passingCount++; } if (greaterThan(passingCount, REQUIRED_COUNT)) { return false; } }); return ruleReturn(equals(passingCount, REQUIRED_COUNT)); } enforce.extend({ allOf, anyOf, noneOf, oneOf }); //# sourceMappingURL=compounds.development.js.map