UNPKG

lara-validator

Version:

Validating data based on Laravel validation style

704 lines (681 loc) 32.8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _index = require('./index'); var _index2 = _interopRequireDefault(_index); var _RuleMeta = require('./RuleMeta'); var _RuleMeta2 = _interopRequireDefault(_RuleMeta); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } exports.default = { dateValidPass: false, optsNotExistMessage: 'opts should include paths(array), rule(string) and data(object) three properties.', validationWrapper: function validationWrapper(ruleMeta, ruleFunction) { var result = { result: true, fail: [] }; if (ruleMeta.isInit()) { ruleMeta.parentValues.every(function (parent) { var fieldName = ruleMeta.fieldName; var parentValue = parent.value; if (_index2.default.present(fieldName, parentValue)) { var validatedVal = parentValue[fieldName]; if (ruleMeta.needToValidate(validatedVal)) { if (!ruleFunction(ruleMeta, validatedVal)) { result.result = false; result.fail.push([].concat(_toConsumableArray(parent.path), [ruleMeta.fieldName])); return false; } } } else { result.result = false; result.fail.push([].concat(_toConsumableArray(parent.path), [ruleMeta.fieldName])); return false; } return true; }); } return result; }, validationWrapperForRuleField: function validationWrapperForRuleField(ruleMeta, ruleFunction) { if (ruleMeta.isInit()) { var result = { result: true, fail: [] }; var fieldPath = ruleMeta.fieldPath; var ruleOptionPath = undefined; try { ruleOptionPath = ruleMeta.ruleOptions.split('.'); } catch (error) { result.result = false; result.fail.push([].concat(_toConsumableArray(ruleMeta.fieldPath))); return result; } var fieldStringPath = ruleMeta.fieldPath.join('.'); var ruleOptionStringPath = ruleMeta.ruleOptions; // path type var pathType = _RuleMeta2.default.pathType(fieldStringPath, ruleOptionStringPath); var oneValueCompareWithOneValue = pathType === 'ONE_COMPARE_WITH_ONE'; // 1:1 // a.b.c x.y.z var oneValueCompareWithMultiValues = pathType === 'ONE_COMPARE_WITH_MULTI'; // 1:[] // a.b.c x.*.z var multiValuesCompareWithOneValue = pathType === 'MULTI_COMPARE_WITH_ONE'; // []:1 // a.*.c x.y.z var multiValuesCompareWithMultiValues = pathType === 'MULTI_COMPARE_WITH_MULTI'; // []:[] // a.*.b x.*.z // compared: if (multiValuesCompareWithMultiValues) { // get the information (last '*' index) of field path: var lastStarRegex = new RegExp(/\.\*\.+(?!.*\.\*\.)/, 'g'); var lastStarIndexOfFieldPath = fieldStringPath.replace(lastStarRegex, '.LAST_STAR.').split('.').indexOf('LAST_STAR'); var fieldValues = _RuleMeta2.default.getValuesByPaths(fieldPath, ruleMeta.data, false); fieldValues.every(function (fieldValue) { // set the compared file path with correct index /** * field_0.*.field_1.*.field_2 * replace to: * field_0.*.field_1.{CORRECT_INDEX}.field_2 */ var trueIndex = fieldValue['path'][lastStarIndexOfFieldPath]; var ruleOptionIndexPath = ruleOptionStringPath.replace(lastStarRegex, '.' + trueIndex + '.').split('.'); var ruleOptionValues = _RuleMeta2.default.getValuesByPaths(ruleOptionIndexPath, ruleMeta.data, false); if (ruleOptionValues.length === 0) { if (!ruleFunction(ruleMeta, fieldValue['value'], undefined)) { result.result = false; result.fail.push([].concat(_toConsumableArray(fieldValue['path']))); } } else { ruleOptionValues.every(function (ruleOptionValue) { if (!ruleFunction(ruleMeta, fieldValue['value'], ruleOptionValue['value'])) { result.result = false; result.fail.push([].concat(_toConsumableArray(fieldValue['path']))); return false; } return true; }); return result.result; } }); } else { var _fieldValues = _RuleMeta2.default.getValuesByPaths(fieldPath, ruleMeta.data, false); var ruleOptionValues = _RuleMeta2.default.getValuesByPaths(ruleOptionPath, ruleMeta.data, false); _fieldValues.every(function (fieldValue) { if (ruleOptionValues.length === 0) { if (!ruleFunction(ruleMeta, fieldValue['value'], undefined)) { result.result = false; result.fail.push([].concat(_toConsumableArray(fieldValue['path']))); } } else { ruleOptionValues.every(function (ruleOptionValue) { if (!ruleFunction(ruleMeta, fieldValue['value'], ruleOptionValue['value'])) { result.result = false; result.fail.push([].concat(_toConsumableArray(fieldValue['path']))); return false; } return true; }); } return result.result; }); } return result; } }, accepted: function accepted(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.accepted(validatedVal); }); }, alpha: function alpha(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.alpha(validatedVal); }); }, alpha_dash: function alpha_dash(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.alphaDash(validatedVal); }); }, alpha_num: function alpha_num(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.alphaNum(validatedVal); }); }, array: function array(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isArray(validatedVal); }); }, in_array: function in_array(ruleMeta) { // pre-process get array data var arrayFieldPath = ruleMeta.ruleOptions.split('.'); var arrayData = []; var originArrayData = []; _RuleMeta2.default.getValuesByPaths(arrayFieldPath, ruleMeta.data).forEach(function (valueElement) { originArrayData.push(valueElement['value']); }); originArrayData.forEach(function (element) { if (Array.isArray(element)) { // element: [] element.forEach(function (value) { arrayData.push(value); }); } else if (element.constructor.toString() === 'function Object() { [native code] }') { // element: {} Object.keys(element).forEach(function (key) { arrayData.push(element[key]); }); } else { // element: a value arrayData.push(element); } }); // validation return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.inArray(validatedVal, arrayData); }); }, in: function _in(ruleMeta) { var arrayData = ruleMeta.ruleOptions.split(','); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { var stringValidatedVal = typeof validatedVal === 'number' ? validatedVal.toString() : validatedVal; return _index2.default.includeIn(stringValidatedVal, arrayData); }); }, not_in: function not_in(ruleMeta) { var arrayData = ruleMeta.ruleOptions.split(','); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.notIncludeIn(validatedVal, arrayData); }); }, distinct: function distinct(ruleMeta) { var allData = []; return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { allData.push(validatedVal); return _index2.default.isDistinct(allData); }); }, same: function same(ruleMeta) { return this.validationWrapperForRuleField(ruleMeta, function (ruleMeta, validatedVal, ruleOptionVal) { if (ruleMeta.needToValidate(validatedVal)) { var validatedValIsExist = validatedVal !== null && validatedVal !== undefined; var ruleOptionValIsExist = ruleOptionVal !== null && ruleOptionVal !== undefined; var isSame = _index2.default.same(validatedVal, ruleOptionVal); return validatedValIsExist && ruleOptionValIsExist && isSame; } return true; }); }, different: function different(ruleMeta) { return this.validationWrapperForRuleField(ruleMeta, function (ruleMeta, validatedVal, ruleOptionVal) { if (ruleMeta.needToValidate(validatedVal)) { var validatedValIsExist = validatedVal !== null && validatedVal !== undefined; var ruleOptionValIsExist = ruleOptionVal !== null && ruleOptionVal !== undefined; var isDifferent = _index2.default.different(validatedVal, ruleOptionVal); return validatedValIsExist && ruleOptionValIsExist && isDifferent; } return true; }); }, date: function date(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isDate(validatedVal); }); }, after: function after(ruleMeta) { var compareDate = new Date(ruleMeta.ruleOptions); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.afterDate(new Date(validatedVal), compareDate); }); }, after_or_equal: function after_or_equal(ruleMeta) { var compareDate = new Date(ruleMeta.ruleOptions); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.afterOrEqualDate(new Date(validatedVal), compareDate); }); }, date_equals: function date_equals(ruleMeta) { var compareDate = new Date(ruleMeta.ruleOptions); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.equalDate(new Date(validatedVal), compareDate); }); }, before_or_equal: function before_or_equal(ruleMeta) { var compareDate = new Date(ruleMeta.ruleOptions); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.beforeOrEqualDate(new Date(validatedVal), compareDate); }); }, before: function before(ruleMeta) { var compareDate = new Date(ruleMeta.ruleOptions); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.beforeDate(new Date(validatedVal), compareDate); }); }, regex: function regex(ruleMeta) { var regexInfo = ruleMeta.ruleOptions.split('/'); var regex = new RegExp(regexInfo[1], regexInfo[2]); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.regex(validatedVal, regex); }); }, not_regex: function not_regex(ruleMeta) { var regexInfo = ruleMeta.ruleOptions.split('/'); var regex = new RegExp(regexInfo[1], regexInfo[2]); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.notRegex(validatedVal, regex); }); }, starts_with: function starts_with(ruleMeta) { var startOpts = ruleMeta.ruleOptions.split(','); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.startWith(validatedVal, startOpts); }); }, present: function present(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return true; }); }, required: function required(ruleMeta) { var result = { result: true, fail: [] }; if (ruleMeta.isInit()) { try { ruleMeta.parentValues.every(function (parent) { var fieldName = ruleMeta.fieldName; var parentValue = parent.value; var validatedVal = parentValue[fieldName]; if (!_index2.default.required(validatedVal)) { result.result = false; result.fail.push([].concat(_toConsumableArray(parent['path']), [ruleMeta.fieldName])); return false; } return true; }); } catch (error) { result.result = false; result.fail.push([].concat(_toConsumableArray(ruleMeta.fieldParentPath), [ruleMeta.fieldName])); } } return result; }, required_if: function required_if(ruleMeta) { // pre-process (check if the anotherfield field is equal to any value) var optionsInfo = ruleMeta.ruleOptions.split(','); var optionPath = optionsInfo.splice(0, 1)[0]; var optionMatchingValues = optionsInfo; ruleMeta.ruleOptions = optionPath; // main process: try { return this.validationWrapperForRuleField(ruleMeta, function (ruleMeta, validatedVal, ruleOptionVal) { var needToValidate = optionMatchingValues.includes(ruleOptionVal); if (needToValidate) { try { return _index2.default.required(validatedVal); } catch (error) { return false; } } return true; }); } catch (error) { return { result: false, fail: [[].concat(_toConsumableArray(ruleMeta.fieldPath))] }; } }, required_unless: function required_unless(ruleMeta) { // pre-process (check if unless the anotherfield field is equal to any value) var optionsInfo = ruleMeta.ruleOptions.split(','); var optionPath = optionsInfo.splice(0, 1)[0]; var optionMatchingValues = optionsInfo; ruleMeta.ruleOptions = optionPath; // main process: try { return this.validationWrapperForRuleField(ruleMeta, function (ruleMeta, validatedVal, ruleOptionVal) { var needToValidate = !optionMatchingValues.includes(ruleOptionVal); if (needToValidate) { try { return _index2.default.required(validatedVal); } catch (error) { return false; } } return true; }); } catch (error) { return { result: false, fail: [[].concat(_toConsumableArray(ruleMeta.fieldPath))] }; } }, required_with: function required_with(ruleMeta) { // pre-process (check if any of the other specified fields are present) var needToValidate = false; var allOptionPaths = undefined; try { allOptionPaths = ruleMeta.ruleOptions.split(','); } catch (error) { allOptionPaths = []; } allOptionPaths.every(function (optionStringPath) { var optionParentPath = optionStringPath.split('.'); var optionField = optionParentPath.splice(optionParentPath.length - 1, 1)[0]; var optionParentValues = _RuleMeta2.default.getValuesByPaths(optionParentPath, ruleMeta.data); optionParentValues.every(function (optionParentValue) { var isPresent = _index2.default.present(optionField, optionParentValue['value']); if (isPresent) { needToValidate = true; return false; } return true; }); return !needToValidate; }); // main process if (needToValidate) { return this.required(ruleMeta); } return { result: true, fail: [] }; }, required_with_all: function required_with_all(ruleMeta) { // pre-process (check if all of the other specified fields are present) var needToValidate = true; var allOptionPaths = undefined; try { allOptionPaths = ruleMeta.ruleOptions.split(','); } catch (error) { allOptionPaths = []; needToValidate = false; } allOptionPaths.every(function (optionStringPath) { var optionParentPath = optionStringPath.split('.'); var optionField = optionParentPath.splice(optionParentPath.length - 1, 1)[0]; var optionParentValues = _RuleMeta2.default.getValuesByPaths(optionParentPath, ruleMeta.data); optionParentValues.every(function (optionParentValue) { var isPresent = _index2.default.present(optionField, optionParentValue['value']); if (!isPresent) { needToValidate = false; return false; } return true; }); return needToValidate; }); // main process if (needToValidate) { return this.required(ruleMeta); } return { result: true, fail: [] }; }, required_without: function required_without(ruleMeta) { // pre-process (check if any of the other specified fields are not present) var needToValidate = false; var allOptionPaths = undefined; try { allOptionPaths = ruleMeta.ruleOptions.split(','); } catch (error) { allOptionPaths = []; needToValidate = true; } allOptionPaths.every(function (optionStringPath) { var optionParentPath = optionStringPath.split('.'); var optionField = optionParentPath.splice(optionParentPath.length - 1, 1)[0]; var optionParentValues = undefined; try { optionParentValues = _RuleMeta2.default.getValuesByPaths(optionParentPath, ruleMeta.data); } catch (error) { optionParentValues = []; needToValidate = true; } optionParentValues.every(function (optionParentValue) { var isPresent = _index2.default.present(optionField, optionParentValue['value']); if (!isPresent) { needToValidate = true; return false; } return true; }); return !needToValidate; }); // main process if (needToValidate) { return this.required(ruleMeta); } return { result: true, fail: [] }; }, required_without_all: function required_without_all(ruleMeta) { // pre-process (check if all of the other specified fields are not present) var needToValidate = true; var allOptionPaths = undefined; try { allOptionPaths = ruleMeta.ruleOptions.split(','); } catch (error) { allOptionPaths = []; } allOptionPaths.every(function (optionStringPath) { var optionParentPath = optionStringPath.split('.'); var optionField = optionParentPath.splice(optionParentPath.length - 1, 1)[0]; var optionParentValues = undefined; try { optionParentValues = _RuleMeta2.default.getValuesByPaths(optionParentPath, ruleMeta.data); } catch (error) { optionParentValues = []; needToValidate = true; } optionParentValues.every(function (optionParentValue) { var isPresent = _index2.default.present(optionField, optionParentValue['value']); if (isPresent) { needToValidate = false; return false; } return true; }); return needToValidate; }); // main process if (needToValidate) { return this.required(ruleMeta); } return { result: true, fail: [] }; }, gt: function gt(ruleMeta) { return this.validationWrapperForRuleField(ruleMeta, function (ruleMeta, validatedVal, ruleOptionVal) { if (ruleMeta.needToValidate(validatedVal)) { var validatedValIsExist = validatedVal !== null && validatedVal !== undefined; var ruleOptionValIsExist = ruleOptionVal !== null && ruleOptionVal !== undefined; var isSameType = (typeof validatedVal === 'undefined' ? 'undefined' : _typeof(validatedVal)) === (typeof ruleOptionVal === 'undefined' ? 'undefined' : _typeof(ruleOptionVal)); if (validatedValIsExist && ruleOptionValIsExist && isSameType) { var validatedValSize = _index2.default.getSize(validatedVal); var ruleOptionValSize = _index2.default.getSize(ruleOptionVal); return _index2.default.greaterThan(validatedValSize, ruleOptionValSize); } else { return false; } } return true; }); }, gte: function gte(ruleMeta) { return this.validationWrapperForRuleField(ruleMeta, function (ruleMeta, validatedVal, ruleOptionVal) { if (ruleMeta.needToValidate(validatedVal)) { var validatedValIsExist = validatedVal !== null && validatedVal !== undefined; var ruleOptionValIsExist = ruleOptionVal !== null && ruleOptionVal !== undefined; var isSameType = (typeof validatedVal === 'undefined' ? 'undefined' : _typeof(validatedVal)) === (typeof ruleOptionVal === 'undefined' ? 'undefined' : _typeof(ruleOptionVal)); if (validatedValIsExist && ruleOptionValIsExist && isSameType) { var validatedValSize = _index2.default.getSize(validatedVal); var ruleOptionValSize = _index2.default.getSize(ruleOptionVal); return _index2.default.greaterThanOrEqual(validatedValSize, ruleOptionValSize); } else { return false; } } return true; }); }, lt: function lt(ruleMeta) { return this.validationWrapperForRuleField(ruleMeta, function (ruleMeta, validatedVal, ruleOptionVal) { if (ruleMeta.needToValidate(validatedVal)) { var validatedValIsExist = validatedVal !== null && validatedVal !== undefined; var ruleOptionValIsExist = ruleOptionVal !== null && ruleOptionVal !== undefined; var isSameType = (typeof validatedVal === 'undefined' ? 'undefined' : _typeof(validatedVal)) === (typeof ruleOptionVal === 'undefined' ? 'undefined' : _typeof(ruleOptionVal)); if (validatedValIsExist && ruleOptionValIsExist && isSameType) { var validatedValSize = _index2.default.getSize(validatedVal); var ruleOptionValSize = _index2.default.getSize(ruleOptionVal); return _index2.default.lessThan(validatedValSize, ruleOptionValSize); } else { return false; } } return true; }); }, lte: function lte(ruleMeta) { return this.validationWrapperForRuleField(ruleMeta, function (ruleMeta, validatedVal, ruleOptionVal) { if (ruleMeta.needToValidate(validatedVal)) { var validatedValIsExist = validatedVal !== null && validatedVal !== undefined; var ruleOptionValIsExist = ruleOptionVal !== null && ruleOptionVal !== undefined; var isSameType = (typeof validatedVal === 'undefined' ? 'undefined' : _typeof(validatedVal)) === (typeof ruleOptionVal === 'undefined' ? 'undefined' : _typeof(ruleOptionVal)); if (validatedValIsExist && ruleOptionValIsExist && isSameType) { var validatedValSize = _index2.default.getSize(validatedVal); var ruleOptionValSize = _index2.default.getSize(ruleOptionVal); return _index2.default.lessThanOrEqual(validatedValSize, ruleOptionValSize); } else { return false; } } return true; }); }, max: function max(ruleMeta) { var maxValue = Number(ruleMeta.ruleOptions); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { var sizeOfValidatedVal = _index2.default.getSize(validatedVal); return _index2.default.lessThanOrEqual(sizeOfValidatedVal, maxValue); }); }, between: function between(ruleMeta) { var compareValues = ruleMeta.ruleOptions.split(','); var minValue = Number(compareValues[0]); var maxValue = Number(compareValues[1]); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { var sizeOfValidatedVal = _index2.default.getSize(validatedVal); return _index2.default.between(minValue, sizeOfValidatedVal, maxValue); }); }, min: function min(ruleMeta) { var minValue = Number(ruleMeta.ruleOptions); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { var sizeOfValidatedVal = _index2.default.getSize(validatedVal); return _index2.default.greaterThanOrEqual(sizeOfValidatedVal, minValue); }); }, boolean: function boolean(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isBoolean(validatedVal); }); }, numeric: function numeric(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isNumeric(validatedVal); }); }, digits: function digits(ruleMeta) { var lengthOfNum = Number(ruleMeta.ruleOptions); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.digits(validatedVal, lengthOfNum); }); }, digits_between: function digits_between(ruleMeta) { var compareValues = ruleMeta.ruleOptions.split(','); var minValue = Number(compareValues[0]); var maxValue = Number(compareValues[1]); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.digitsBetween(validatedVal, minValue, maxValue); }); }, integer: function integer(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isInteger(validatedVal); }); }, string: function string(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isString(validatedVal); }); }, url: function url(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isURL(validatedVal); }); }, uuid: function uuid(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isUUID(validatedVal); }); }, email: function email(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isEmail(validatedVal); }); }, size: function size(ruleMeta) { var expectSize = Number(ruleMeta.ruleOptions); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { var sizeOfValidatedVal = _index2.default.getSize(validatedVal); return sizeOfValidatedVal === expectSize; }); }, ip: function ip(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isIP(validatedVal); }); }, confirmed: function confirmed(ruleMeta) { var confirmedFieldPaths = [].concat(_toConsumableArray(ruleMeta.fieldParentPath), [ruleMeta.fieldName + '_confirmation']); var confirmedFieldValues = _RuleMeta2.default.getValuesByPaths(confirmedFieldPaths, ruleMeta.data); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { var isConfirmed = true; confirmedFieldValues.every(function (confirmedValue) { if (!_index2.default.same(validatedVal, confirmedValue['value'])) { isConfirmed = false; return false; } return true; }); return isConfirmed; }); }, filled: function filled(ruleMeta) { var result = { result: true, fail: [] }; if (ruleMeta.isInit()) { ruleMeta.parentValues.every(function (parent) { var fieldName = ruleMeta.fieldName; var parentValue = parent.value; if (_index2.default.present(fieldName, parentValue)) { var validatedVal = parentValue[fieldName]; if (!_index2.default.required(validatedVal)) { result.result = false; result.fail.push([].concat(_toConsumableArray(ruleMeta.fieldPath))); return false; } } return true; }); } return result; }, // file wrappers have no test case file: function file(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isFile(validatedVal); }); }, image: function image(ruleMeta) { return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isImage(validatedVal); }); }, mimetypes: function mimetypes(ruleMeta) { var candidateTypes = ruleMeta.ruleOptions.split(','); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isMimeTypes(validatedVal, candidateTypes); }); }, mimes: function mimes(ruleMeta) { var candidateExtensions = ruleMeta.ruleOptions.split(','); return this.validationWrapper(ruleMeta, function (ruleMeta, validatedVal) { return _index2.default.isMime(validatedVal, candidateExtensions); }); } };