n4s
Version:
Assertion library for form validations
73 lines (64 loc) • 1.76 kB
JavaScript
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