UNPKG

livr

Version:

Lightweight validator supporting Language Independent Validation Rules Specification

1 lines 12.4 kB
(()=>{var e={417:(e,t,r)=>{const i=r(385),s=r(502),n={required:r(568),not_empty:r(233),not_empty_list:r(956),any_object:r(41),string:r(320),eq:r(10),one_of:r(594),max_length:r(240),min_length:r(932),length_equal:r(402),length_between:r(973),like:r(0),integer:r(238),positive_integer:r(266),decimal:r(814),positive_decimal:r(105),max_number:r(903),min_number:r(118),number_between:r(531),email:r(35),equal_to_field:r(123),url:r(842),iso_date:r(168),default:r(33),trim:r(227),to_lc:r(828),to_uc:r(831),remove:r(439),leave_only:r(77),nested_object:r(656),variable_object:r(85),list_of:r(853),list_of_objects:r(924),or:r(569),list_of_different_objects:r(496)};i.registerDefaultRules(n),e.exports={AsyncValidator:i,rules:n,util:s}},385:(e,t,r)=>{"use strict";const i=r(502),s=r(866);class n extends s{static buildAliasedRule(e,t){if(!e)throw"Alias rules required";const r={value:e};return e=>{const i=new n(r).registerRules(e).prepare();return async(e,r,s)=>{try{const t=await i.validate({value:e});return void s.push(t.value)}catch(e){return t||e.value}}}}async validate(e){if(this.isPrepared||this.prepare(),!i.isObject(e))return this.errors="FORMAT_ERROR",Promise.reject("FORMAT_ERROR");this.options.autoTrim&&(e=this._autoTrim(e));const t={},r={};return await Promise.all(Object.keys(this.validators).map((i=>this.validateField(i,e,r,t)))),i.isEmptyObject(t)?(this.errors=null,r):(this.errors=t,Promise.reject(t))}async validateField(e,t,r,i){const s=this.validators[e];if(!s||!s.length)return;const n=t[e];for(const o of s){const s=[],u=await o(r.hasOwnProperty(e)?r[e]:n,t,s);if(u){i[e]=u;break}s.length?r[e]=s[0]:t.hasOwnProperty(e)&&!r.hasOwnProperty(e)&&(r[e]=n)}}}e.exports=n},866:(e,t,r)=>{"use strict";const i=r(502),s={},n={autoTrim:!1};e.exports=class{constructor(e,t){let r={};i.isObject(t)?r=t:null!=t&&(r.autoTrim=t),this.options={...n,...r},this.isPrepared=!1,this.livrRules=e,this.validators={},this.validatorBuilders={}}static getDefaultRules(){return s}static registerAliasedDefaultRule(e){if(!e.name)throw new Error("Alias name required");s[e.name]=this.buildAliasedRule(e.rules,e.error);const t=i.camelize(e.name);s[t]&&(s[t]=s[e.name])}static registerDefaultRules(e){for(const t in e){s[t]=e[t];const r=i.camelize(t);s[r]||(s[r]=s[t])}}static defaultAutoTrim(e){n.autoTrim=!!e}prepare(){const e=this.livrRules;for(const t in e){let r=e[t];Array.isArray(r)||(r=[r]);const i=[];for(const e of r){const t=this._parseRule(e);i.push(this._buildValidator(t.name,t.args))}this.validators[t]=i}return this.isPrepared=!0,this}registerRules(e){for(const t in e)this.validatorBuilders[t]=e[t];return this}registerAliasedRule(e){if(!e.name)throw new Error("Alias name required");return this.validatorBuilders[e.name]=this.constructor.buildAliasedRule(e.rules,e.error),this}getRules(){return this.validatorBuilders}_parseRule(e){let t,r;return i.isObject(e)?(t=Object.keys(e)[0],r=e[t],Array.isArray(r)||(r=[r])):(t=e,r=[]),{name:t,args:r}}_buildValidator(e,t){const r=this.validatorBuilders[e]||s[e];if(!r)throw new Error("Rule ["+e+"] not registered");const i=[];return i.push.apply(i,t),i.push(this.getRules()),r.apply(null,i)}_autoTrim(e){const t=typeof e;if("object"!==t&&e)return e.replace?e.replace(/^\s*/,"").replace(/\s*$/,""):e;if("object"==t&&Array.isArray(e)){const t=[];for(const r of e)t.push(this._autoTrim(r));return t}if("object"==t&&i.isObject(e)){const t={};for(const r in e)e.hasOwnProperty(r)&&(t[r]=this._autoTrim(e[r]));return t}return e}}},41:(e,t,r)=>{const i=r(502);e.exports=function(){return e=>{if(!i.isNoValue(e))return i.isObject(e)?void 0:"FORMAT_ERROR"}}},233:e=>{e.exports=function(){return e=>{if(null!=e&&""===e)return"CANNOT_BE_EMPTY"}}},956:e=>{e.exports=function(){return e=>void 0===e||""===e?"CANNOT_BE_EMPTY":Array.isArray(e)?e.length<1?"CANNOT_BE_EMPTY":void 0:"FORMAT_ERROR"}},568:(e,t,r)=>{const i=r(502);e.exports=function(){return e=>{if(i.isNoValue(e))return"REQUIRED"}}},853:(e,t,r)=>{const i=r(385),s=r(502);e.exports=function(e,t){Array.isArray(e)||(t=(e=Array.prototype.slice.call(arguments)).pop());const r=new i({field:e}).registerRules(t).prepare();return async(e,t,i)=>{if(s.isNoValue(e))return;if(!Array.isArray(e))return"FORMAT_ERROR";const n=[],o=[];let u=!1;for(const t of e)try{const e=await r.validate({field:t});n.push(e.field),o.push(null)}catch(e){u=!0,o.push(e.field),n.push(null)}return u?o:void i.push(n)}}},496:(e,t,r)=>{const i=r(385),s=r(502);e.exports=function(e,t,r){const n={};for(const e in t){const s=new i(t[e]).registerRules(r).prepare();n[e]=s}return async(t,r,i)=>{if(s.isNoValue(t))return;if(!Array.isArray(t))return"FORMAT_ERROR";const o=[],u=[];let a=!1;for(const r of t){if("object"!=typeof r||!r[e]||!n[r[e]]){u.push("FORMAT_ERROR");continue}const t=n[r[e]];try{const e=await t.validate(r);o.push(e),u.push(null)}catch(e){a=!0,u.push(e),o.push(null)}}return a?u:void i.push(o)}}},924:(e,t,r)=>{const i=r(385),s=r(502);e.exports=function(e,t){const r=new i(e).registerRules(t).prepare();return async(e,t,i)=>{if(s.isNoValue(e))return;if(!Array.isArray(e))return"FORMAT_ERROR";const n=[],o=[];let u=!1;for(const t of e)try{const e=await r.validate(t);n.push(e),o.push(null)}catch(e){u=!0,o.push(e),n.push(null)}return u?o:void i.push(n)}}},656:(e,t,r)=>{const i=r(385),s=r(502);e.exports=function(e,t){const r=new i(e).registerRules(t).prepare();return async(e,t,i)=>{if(!s.isNoValue(e)){if(!s.isObject(e))return"FORMAT_ERROR";try{const t=await r.validate(e);return void i.push(t)}catch(e){return e}}}}},569:(e,t,r)=>{const i=r(385);e.exports=function(){const e=Array.prototype.slice.call(arguments),t=e.pop(),r=e.map((e=>new i({field:e}).registerRules(t).prepare()));return async(e,t,i)=>{let s;for(const t of r)try{const r=await t.validate({field:e});return void i.push(r.field)}catch(e){s=e.field}return s}}},85:(e,t,r)=>{const i=r(385),s=r(502);e.exports=function(e,t,r){const n={};for(const e in t){const s=new i(t[e]).registerRules(r).prepare();n[e]=s}return async(t,r,i)=>{if(s.isNoValue(t))return;if(!s.isObject(t)||!t[e]||!n[t[e]])return"FORMAT_ERROR";const o=n[t[e]];try{const e=await o.validate(t);return void i.push(e)}catch(e){return e}}}},33:(e,t,r)=>{const i=r(502);e.exports=e=>(t,r,s)=>{i.isNoValue(t)&&s.push(e)}},77:(e,t,r)=>{const i=r(502);e.exports=function(e){e=i.escapeRegExp(e);const t=new RegExp("[^"+e+"]","g");return(e,r,s)=>{i.isNoValue(e)||"object"==typeof e||(e+="",s.push(e.replace(t,"")))}}},439:(e,t,r)=>{const i=r(502);e.exports=function(e){e=i.escapeRegExp(e);const t=new RegExp("["+e+"]","g");return(e,r,s)=>{i.isNoValue(e)||"object"==typeof e||(e+="",s.push(e.replace(t,"")))}}},828:(e,t,r)=>{const i=r(502);e.exports=function(){return(e,t,r)=>{i.isNoValue(e)||"object"==typeof e||(e+="",r.push(e.toLowerCase()))}}},831:(e,t,r)=>{const i=r(502);e.exports=function(){return(e,t,r)=>{i.isNoValue(e)||"object"==typeof e||(e+="",r.push(e.toUpperCase()))}}},227:(e,t,r)=>{const i=r(502);e.exports=function(){return(e,t,r)=>{i.isNoValue(e)||"object"==typeof e||(e+="",r.push(e.replace(/^\s*/,"").replace(/\s*$/,"")))}}},814:(e,t,r)=>{const i=r(502);e.exports=function(){return(e,t,r)=>{if(!i.isNoValue(e)){if(!i.isPrimitiveValue(e))return"FORMAT_ERROR";if(!i.looksLikeNumber(e))return"NOT_DECIMAL";if(!/^(?:\-?(?:(?:[0-9]+\.[0-9]+)|(?:[0-9]+)))$/.test(e+=""))return"NOT_DECIMAL";r.push(+e)}}}},238:(e,t,r)=>{const i=r(502);e.exports=function(){return(e,t,r)=>{if(!i.isNoValue(e))return i.isPrimitiveValue(e)?i.looksLikeNumber(e)&&Number.isInteger(+e)?void r.push(+e):"NOT_INTEGER":"FORMAT_ERROR"}}},903:(e,t,r)=>{const i=r(502);e.exports=function(e){return(t,r,s)=>{if(!i.isNoValue(t))return i.isPrimitiveValue(t)?i.looksLikeNumber(t)?+t>+e?"TOO_HIGH":void s.push(+t):"NOT_NUMBER":"FORMAT_ERROR"}}},118:(e,t,r)=>{const i=r(502);e.exports=function(e){return(t,r,s)=>{if(!i.isNoValue(t))return i.isPrimitiveValue(t)?i.looksLikeNumber(t)?+t<+e?"TOO_LOW":void s.push(+t):"NOT_NUMBER":"FORMAT_ERROR"}}},531:(e,t,r)=>{const i=r(502);e.exports=function(e,t){return(r,s,n)=>{if(!i.isNoValue(r))return i.isPrimitiveValue(r)?i.looksLikeNumber(r)?+r<+e?"TOO_LOW":+r>+t?"TOO_HIGH":void n.push(+r):"NOT_NUMBER":"FORMAT_ERROR"}}},105:(e,t,r)=>{const i=r(502);e.exports=function(){return(e,t,r)=>{if(!i.isNoValue(e))return i.isPrimitiveValue(e)?i.looksLikeNumber(e)?Number.isNaN(+e)||+e<=0?"NOT_POSITIVE_DECIMAL":void r.push(+e):"NOT_POSITIVE_DECIMAL":"FORMAT_ERROR"}}},266:(e,t,r)=>{const i=r(502);e.exports=function(){return(e,t,r)=>{if(!i.isNoValue(e))return i.isPrimitiveValue(e)?i.looksLikeNumber(e)?!Number.isInteger(+e)||+e<1?"NOT_POSITIVE_INTEGER":void r.push(+e):"NOT_POSITIVE_INTEGER":"FORMAT_ERROR"}}},35:(e,t,r)=>{const i=r(502),s=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;e.exports=function(){return e=>{if(!i.isNoValue(e))return i.isPrimitiveValue(e)?/\@.*_/.test(e+="")||/\@.*\@/.test(e)?"WRONG_EMAIL":s.test(e)?void 0:"WRONG_EMAIL":"FORMAT_ERROR"}}},123:(e,t,r)=>{const i=r(502);e.exports=function(e){return(t,r)=>{if(!i.isNoValue(t))return i.isPrimitiveValue(t)?t!=r[e]?"FIELDS_NOT_EQUAL":void 0:"FORMAT_ERROR"}}},168:(e,t,r)=>{const i=r(502);e.exports=function(){return e=>{if(i.isNoValue(e))return;if(!i.isPrimitiveValue(e))return"FORMAT_ERROR";const t=e.match(/^(\d{4})-([0-1][0-9])-([0-3][0-9])$/);if(t){const r=Date.parse(e);if(!r&&0!==r)return"WRONG_DATE";const i=new Date(r);if(i.setTime(i.getTime()+60*i.getTimezoneOffset()*1e3),i.getFullYear()==t[1]&&i.getMonth()+1==+t[2]&&i.getDate()==+t[3])return}return"WRONG_DATE"}}},842:(e,t,r)=>{const i=r(502);e.exports=function(){const e=new RegExp("^(?:(?:http|https)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[0-1]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))\\.?|localhost)(?::\\d{2,5})?(?:[/?#]\\S*)?$","i");return t=>{if(!i.isNoValue(t)){if(!i.isPrimitiveValue(t))return"FORMAT_ERROR";if(!(t.length<2083&&e.test(t)))return"WRONG_URL"}}}},10:(e,t,r)=>{const i=r(502);e.exports=function(e){return(t,r,s)=>{if(!i.isNoValue(t)){if(!i.isPrimitiveValue(t))return"FORMAT_ERROR";if(t+""!=e+"")return"NOT_ALLOWED_VALUE";s.push(e)}}}},973:(e,t,r)=>{const i=r(502);e.exports=function(e,t){return(r,s,n)=>{if(!i.isNoValue(r))return i.isPrimitiveValue(r)?(r+="").length<e?"TOO_SHORT":r.length>t?"TOO_LONG":void n.push(r):"FORMAT_ERROR"}}},402:(e,t,r)=>{const i=r(502);e.exports=function(e){return(t,r,s)=>{if(!i.isNoValue(t))return i.isPrimitiveValue(t)?(t+="").length<e?"TOO_SHORT":t.length>e?"TOO_LONG":void s.push(t):"FORMAT_ERROR"}}},0:(e,t,r)=>{const i=r(502);e.exports=function(e,t){const r=3===arguments.length&&t.match("i"),s=new RegExp(e,r?"i":"");return(e,t,r)=>{if(!i.isNoValue(e)){if(!i.isPrimitiveValue(e))return"FORMAT_ERROR";if(!(e+="").match(s))return"WRONG_FORMAT";r.push(e)}}}},240:(e,t,r)=>{const i=r(502);e.exports=function(e){return(t,r,s)=>{if(!i.isNoValue(t)){if(!i.isPrimitiveValue(t))return"FORMAT_ERROR";if((t+="").length>e)return"TOO_LONG";s.push(t)}}}},932:(e,t,r)=>{const i=r(502);e.exports=function(e){return(t,r,s)=>{if(!i.isNoValue(t)){if(!i.isPrimitiveValue(t))return"FORMAT_ERROR";if((t+="").length<e)return"TOO_SHORT";s.push(t)}}}},594:(e,t,r)=>{const i=r(502);e.exports=function(e){return Array.isArray(e)||(e=Array.prototype.slice.call(arguments)).pop(),(t,r,s)=>{if(!i.isNoValue(t)){if(!i.isPrimitiveValue(t))return"FORMAT_ERROR";for(const r of e)if(t+""==r+"")return void s.push(r);return"NOT_ALLOWED_VALUE"}}}},320:(e,t,r)=>{const i=r(502);e.exports=function(){return(e,t,r)=>{if(!i.isNoValue(e))return i.isPrimitiveValue(e)?void r.push(e+""):"FORMAT_ERROR"}}},502:e=>{e.exports={isPrimitiveValue:e=>"string"==typeof e||!("number"!=typeof e||!isFinite(e))||"boolean"==typeof e,looksLikeNumber:e=>!isNaN(+e),isObject:e=>e?.constructor===Object,isEmptyObject(e){for(const t in e)if(e.hasOwnProperty(t))return!1;return!0},escapeRegExp:e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),isNoValue:e=>null==e||""===e,camelize:e=>(e+"").replace(/[_](\w|$)/g,((e,t)=>t.toUpperCase()))}}},t={};window.LIVR=function r(i){var s=t[i];if(void 0!==s)return s.exports;var n=t[i]={exports:{}};return e[i](n,n.exports,r),n.exports}(417)})();