UNPKG

yarfl

Version:

Yet Another Redux Forms Library

43 lines 1.94 kB
import * as Validator from 'validatorjs'; import { extract, titleCase } from './utils'; var common = function (config) { return function (state) { var errorMessages = config.errorMessages, attributeFormatter = config.attributeFormatter; var fields = state.fields; var data = extract(fields, 'value', { flatten: true }); var rules = extract(fields, 'rules', { ignoreEmptyStrings: true, flatten: true }); // TODO: make this a configurable action var validation = (errorMessages || []).length ? new Validator(data, rules, errorMessages) : new Validator(data, rules); validation.setAttributeFormatter(attributeFormatter || defaultAttributeFormatter); return validation; }; }; var defaultAttributeFormatter = function (attribute) { return titleCase(attribute.split('.').reverse()[0]).toLowerCase(); }; export var validatorFactory = function (config) { return function (state) { var validation = common(config)(state); validation.check(); // to trigger validation return validation; }; }; export var asyncValidatorFactory = function (config) { return function (state) { var validation = common(config)(state); return new Promise(function (resolve) { validation.checkAsync(function () { return resolve(validation); }, function () { return resolve(validation); }); }); }; }; export var registerCustomRules = function (customRules) { return customRules.map(function (rule) { var name = rule.name, callback = rule.callback, message = rule.message; if (callback.length > 3) { Validator.registerAsync(name, callback, message); return true; } Validator.register(name, callback, message); return false; }).some(function (isAsync) { return isAsync; }); }; export var reigsterErrorMessages = function (messages) { Validator.setMessages('', messages); }; //# sourceMappingURL=validator.js.map