@sergiomarques/sword-validation
Version:
Field validation tooling and defaults for SWORD Health Web Clients
112 lines (97 loc) • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.parseValidationsStr = void 0;
var _validators = require("vuelidate/lib/validators");
var _regex = _interopRequireDefault(require("./scripts/regex.js"));
var _defaults = require("./scripts/defaults.js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/*
* Validations map for string based validations
*/
var parseValidationsStr = function parseValidationsStr(vObj) {
if (!Object.keys(vObj).length) {
return {};
}
if (vObj.hasOwnProperty('pack')) {
var packName = vObj.pack;
Object.assign(vObj, _defaults.vDefaultPacks[packName]);
delete vObj.pack;
}
var validationObj = {};
Object.keys(vObj).forEach(function (vKey) {
var params = vObj[vKey];
var key = vKey;
var validatorsToApply = validationsMap[key];
var readyValidators = {};
Object.keys(validatorsToApply).forEach(function (valKey) {
readyValidators[valKey] = validatorsToApply[valKey](params);
});
Object.assign(validationObj, readyValidators);
});
return validationObj;
};
exports.parseValidationsStr = parseValidationsStr;
var validationsMap = {
required: {
required: function required() {
return _validators.required;
}
},
minL: {
minLength: function minLength(min) {
return (0, _validators.minLength)(min);
}
},
maxL: {
maxLength: function maxLength(max) {
return (0, _validators.maxLength)(max);
}
},
email: {
emailFormat: function emailFormat() {
return function (email) {
return _regex["default"].email.global.test(email);
};
}
},
prefixAndPhoneReq: {
prefixAndPhoneRequired: function prefixAndPhoneRequired() {
return function (phone) {
return _regex["default"].phone.complete.test(phone);
};
}
},
prefixFormat: {
prefix: function prefix() {
return function (phone) {
if (!phone) {
return true;
}
var phoneParts = phone.match(_regex["default"].phone.complete);
if (!phoneParts) {
return false;
}
var prefix = phoneParts[1];
return _regex["default"].phone.general.test(prefix);
};
}
},
phoneFormat: {
phoneFormat: function phoneFormat() {
return function (phone) {
if (!phone) {
return true;
}
var phoneParts = phone.match(_regex["default"].phone.complete);
if (!phoneParts) {
return false;
}
var prefix = phoneParts[1];
var number = phoneParts[3];
return _regex["default"].phone.general.test(prefix) && _regex["default"].phone.general.test(number);
};
}
}
};