UNPKG

vue-vuelidate-jsonschema

Version:

Create validation definitions for vuelidate based on json schema

47 lines (40 loc) 1.2 kB
var isFunction = require('lodash/isFunction') var mergeWith = require('lodash/mergeWith') var forEach = require('lodash/forEach') var isPlainObject = require('lodash/isPlainObject') function noopValidator() { return true } function customizer(objValue, srcValue, key, object, source, stack) { if (srcValue === undefined) { return noopValidator } } function deleteNoopValidators(obj) { forEach(obj, function(val, key) { if (val === noopValidator) { delete obj[key] } else if (isPlainObject(val)) { deleteNoopValidators(val) } }) } module.exports = function(toVal, fromVal) { if (!toVal) return fromVal if (!fromVal) return toVal var retVal if (isFunction(toVal) || isFunction(fromVal)) { retVal = function() { var args = [].slice.call(arguments) var toResult = isFunction(toVal) ? toVal.apply(this, args) : toVal var fromResult = isFunction(fromVal) ? fromVal.apply(this, args) : fromVal var merged = mergeWith(toResult, fromResult, customizer) deleteNoopValidators(merged) return merged } } else { retVal = mergeWith(toVal, fromVal, customizer) deleteNoopValidators(retVal) } return retVal }