UNPKG

@sergiomarques/sword-validation

Version:

Field validation tooling and defaults for SWORD Health Web Clients

112 lines (97 loc) 2.77 kB
"use strict"; 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); }; } } };