yarfl
Version:
Yet Another Redux Forms Library
45 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var Validator = require("validatorjs");
var utils_1 = require("./utils");
var common = function (config) { return function (state) {
var errorMessages = config.errorMessages, attributeFormatter = config.attributeFormatter;
var fields = state.fields;
var data = utils_1.extract(fields, 'value', { flatten: true });
var rules = utils_1.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 utils_1.titleCase(attribute.split('.').reverse()[0]).toLowerCase();
};
exports.validatorFactory = function (config) { return function (state) {
var validation = common(config)(state);
validation.check(); // to trigger validation
return validation;
}; };
exports.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); });
});
}; };
exports.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; });
};
exports.reigsterErrorMessages = function (messages) {
Validator.setMessages('', messages);
};
//# sourceMappingURL=validator.js.map