node-input-validator
Version:
validation library for nodejs, inspired by laravel.
39 lines (30 loc) • 1 kB
JavaScript
const empty = require('../lib/empty');
const { pathIndex } = require('../lib/ObjectIndex');
module.exports = async function requiredIf(field, value, args) {
if (!args || args.length < 2) {
throw new Error(`Invalid arguments supplied for field ${field} in requiredIf rule.`);
}
if (args.length % 2 !== 0) {
throw new Error(`Invalid arguments supplied for field ${field} in requiredIf rule.`);
}
let required = false;
for (let start = 0; start < args.length; start += 2) {
const requiredField = args[start];
const requiredValue = args[start + 1];
if (requiredField === field) {
return false;
}
// field is required if all values are presented
if (!empty(pathIndex(this.inputs, requiredField))
&& pathIndex(this.inputs, requiredField).toString() === requiredValue) {
required = true;
} else {
required = false;
break;
}
}
if (required && empty.reallyEmpty(value)) {
return false;
}
return true;
};