lara-validator
Version:
Validating data based on Laravel validation style
704 lines (681 loc) • 32.8 kB
JavaScript
'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);
});
}
};