livr
Version:
Lightweight validator supporting Language Independent Validation Rules Specification
1 lines • 12.2 kB
JavaScript
(()=>{var e={866:(e,r,t)=>{"use strict";const i=t(502),s={},o={autoTrim:!1};e.exports=class{constructor(e,r){let t={};i.isObject(r)?t=r:null!=r&&(t.autoTrim=r),this.options={...o,...t},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 r=i.camelize(e.name);s[r]&&(s[r]=s[e.name])}static registerDefaultRules(e){for(const r in e){s[r]=e[r];const t=i.camelize(r);s[t]||(s[t]=s[r])}}static defaultAutoTrim(e){o.autoTrim=!!e}prepare(){const e=this.livrRules;for(const r in e){let t=e[r];Array.isArray(t)||(t=[t]);const i=[];for(const e of t){const r=this._parseRule(e);i.push(this._buildValidator(r.name,r.args))}this.validators[r]=i}return this.isPrepared=!0,this}registerRules(e){for(const r in e)this.validatorBuilders[r]=e[r];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 r,t;return i.isObject(e)?(r=Object.keys(e)[0],t=e[r],Array.isArray(t)||(t=[t])):(r=e,t=[]),{name:r,args:t}}_buildValidator(e,r){const t=this.validatorBuilders[e]||s[e];if(!t)throw new Error("Rule ["+e+"] not registered");const i=[];return i.push.apply(i,r),i.push(this.getRules()),t.apply(null,i)}_autoTrim(e){const r=typeof e;if("object"!==r&&e)return e.replace?e.replace(/^\s*/,"").replace(/\s*$/,""):e;if("object"==r&&Array.isArray(e)){const r=[];for(const t of e)r.push(this._autoTrim(t));return r}if("object"==r&&i.isObject(e)){const r={};for(const t in e)e.hasOwnProperty(t)&&(r[t]=this._autoTrim(e[t]));return r}return e}}},601:(e,r,t)=>{const i=t(388),s=t(502),o={required:t(568),not_empty:t(233),not_empty_list:t(956),any_object:t(41),string:t(320),eq:t(10),one_of:t(594),max_length:t(240),min_length:t(932),length_equal:t(402),length_between:t(973),like:t(0),integer:t(238),positive_integer:t(266),decimal:t(814),positive_decimal:t(105),max_number:t(903),min_number:t(118),number_between:t(531),email:t(35),equal_to_field:t(123),url:t(842),iso_date:t(168),default:t(33),trim:t(227),to_lc:t(828),to_uc:t(831),remove:t(439),leave_only:t(77),nested_object:t(421),variable_object:t(770),list_of:t(794),list_of_objects:t(637),or:t(532),list_of_different_objects:t(93)};i.registerDefaultRules(o),e.exports={Validator:i,rules:o,util:s}},388:(e,r,t)=>{"use strict";const i=t(866),s=t(502);class o extends i{constructor(...e){super(...e),this.errors=null}static buildAliasedRule(e,r){if(!e)throw"Alias rules required";const t={value:e};return e=>{const i=new o(t).registerRules(e).prepare();return(e,t,s)=>{const o=i.validate({value:e});return o?void s.push(o.value):r||i.getErrors().value}}}validate(e){if(this.isPrepared||this.prepare(),!s.isObject(e))return void(this.errors="FORMAT_ERROR");this.options.autoTrim&&(e=this._autoTrim(e));const r={},t={};for(const i in this.validators){const s=this.validators[i];if(!s||!s.length)continue;const o=e[i];let n,u=!1;for(const t of s){const s=[],a=t(u?n:o,e,s);if(a){r[i]=a;break}s.length?(n=s[0],u=!0):!u&&e.hasOwnProperty(i)&&(n=o,u=!0)}u&&(t[i]=n)}return s.isEmptyObject(r)?(this.errors=null,t):(this.errors=r,!1)}getErrors(){return this.errors}}e.exports=o},41:(e,r,t)=>{const i=t(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,r,t)=>{const i=t(502);e.exports=function(){return e=>{if(i.isNoValue(e))return"REQUIRED"}}},794:(e,r,t)=>{const i=t(388),s=t(502);e.exports=function(e,r){Array.isArray(e)||(r=(e=Array.prototype.slice.call(arguments)).pop());const t=new i({field:e}).registerRules(r).prepare();return(e,r,i)=>{if(s.isNoValue(e))return;if(!Array.isArray(e))return"FORMAT_ERROR";const o=[],n=[];let u=!1;for(const r of e){const e=t.validate({field:r});e?(o.push(e.field),n.push(null)):(u=!0,n.push(t.getErrors().field),o.push(null))}return u?n:void i.push(o)}}},93:(e,r,t)=>{const i=t(388),s=t(502);e.exports=function(e,r,t){const o={};for(const e in r){const s=new i(r[e]).registerRules(t).prepare();o[e]=s}return(r,t,i)=>{if(s.isNoValue(r))return;if(!Array.isArray(r))return"FORMAT_ERROR";const n=[],u=[];let a=!1;for(const t of r){if("object"!=typeof t||!t[e]||!o[t[e]]){u.push("FORMAT_ERROR");continue}const r=o[t[e]],i=r.validate(t);i?(n.push(i),u.push(null)):(a=!0,u.push(r.getErrors()),n.push(null))}return a?u:void i.push(n)}}},637:(e,r,t)=>{const i=t(388),s=t(502);e.exports=function(e,r){const t=new i(e).registerRules(r).prepare();return(e,r,i)=>{if(s.isNoValue(e))return;if(!Array.isArray(e))return"FORMAT_ERROR";const o=[],n=[];let u=!1;for(const r of e){const e=t.validate(r);e?(o.push(e),n.push(null)):(u=!0,n.push(t.getErrors()),o.push(null))}return u?n:void i.push(o)}}},421:(e,r,t)=>{const i=t(388),s=t(502);e.exports=function(e,r){const t=new i(e).registerRules(r).prepare();return(e,r,i)=>{if(s.isNoValue(e))return;if(!s.isObject(e))return"FORMAT_ERROR";const o=t.validate(e);return o?void i.push(o):t.getErrors()}}},532:(e,r,t)=>{const i=t(388);e.exports=function(){const e=Array.prototype.slice.call(arguments),r=e.pop(),t=e.map((e=>new i({field:e}).registerRules(r).prepare()));return(e,r,i)=>{let s;for(const r of t){const t=r.validate({field:e});if(t)return void i.push(t.field);s=r.getErrors().field}return s}}},770:(e,r,t)=>{const i=t(388),s=t(502);e.exports=function(e,r,t){const o={};for(const e in r){const s=new i(r[e]).registerRules(t).prepare();o[e]=s}return(r,t,i)=>{if(s.isNoValue(r))return;if(!s.isObject(r)||!r[e]||!o[r[e]])return"FORMAT_ERROR";const n=o[r[e]],u=n.validate(r);return u?void i.push(u):n.getErrors()}}},33:(e,r,t)=>{const i=t(502);e.exports=e=>(r,t,s)=>{i.isNoValue(r)&&s.push(e)}},77:(e,r,t)=>{const i=t(502);e.exports=function(e){e=i.escapeRegExp(e);const r=new RegExp("[^"+e+"]","g");return(e,t,s)=>{i.isNoValue(e)||"object"==typeof e||(e+="",s.push(e.replace(r,"")))}}},439:(e,r,t)=>{const i=t(502);e.exports=function(e){e=i.escapeRegExp(e);const r=new RegExp("["+e+"]","g");return(e,t,s)=>{i.isNoValue(e)||"object"==typeof e||(e+="",s.push(e.replace(r,"")))}}},828:(e,r,t)=>{const i=t(502);e.exports=function(){return(e,r,t)=>{i.isNoValue(e)||"object"==typeof e||(e+="",t.push(e.toLowerCase()))}}},831:(e,r,t)=>{const i=t(502);e.exports=function(){return(e,r,t)=>{i.isNoValue(e)||"object"==typeof e||(e+="",t.push(e.toUpperCase()))}}},227:(e,r,t)=>{const i=t(502);e.exports=function(){return(e,r,t)=>{i.isNoValue(e)||"object"==typeof e||(e+="",t.push(e.replace(/^\s*/,"").replace(/\s*$/,"")))}}},814:(e,r,t)=>{const i=t(502);e.exports=function(){return(e,r,t)=>{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";t.push(+e)}}}},238:(e,r,t)=>{const i=t(502);e.exports=function(){return(e,r,t)=>{if(!i.isNoValue(e))return i.isPrimitiveValue(e)?i.looksLikeNumber(e)&&Number.isInteger(+e)?void t.push(+e):"NOT_INTEGER":"FORMAT_ERROR"}}},903:(e,r,t)=>{const i=t(502);e.exports=function(e){return(r,t,s)=>{if(!i.isNoValue(r))return i.isPrimitiveValue(r)?i.looksLikeNumber(r)?+r>+e?"TOO_HIGH":void s.push(+r):"NOT_NUMBER":"FORMAT_ERROR"}}},118:(e,r,t)=>{const i=t(502);e.exports=function(e){return(r,t,s)=>{if(!i.isNoValue(r))return i.isPrimitiveValue(r)?i.looksLikeNumber(r)?+r<+e?"TOO_LOW":void s.push(+r):"NOT_NUMBER":"FORMAT_ERROR"}}},531:(e,r,t)=>{const i=t(502);e.exports=function(e,r){return(t,s,o)=>{if(!i.isNoValue(t))return i.isPrimitiveValue(t)?i.looksLikeNumber(t)?+t<+e?"TOO_LOW":+t>+r?"TOO_HIGH":void o.push(+t):"NOT_NUMBER":"FORMAT_ERROR"}}},105:(e,r,t)=>{const i=t(502);e.exports=function(){return(e,r,t)=>{if(!i.isNoValue(e))return i.isPrimitiveValue(e)?i.looksLikeNumber(e)?Number.isNaN(+e)||+e<=0?"NOT_POSITIVE_DECIMAL":void t.push(+e):"NOT_POSITIVE_DECIMAL":"FORMAT_ERROR"}}},266:(e,r,t)=>{const i=t(502);e.exports=function(){return(e,r,t)=>{if(!i.isNoValue(e))return i.isPrimitiveValue(e)?i.looksLikeNumber(e)?!Number.isInteger(+e)||+e<1?"NOT_POSITIVE_INTEGER":void t.push(+e):"NOT_POSITIVE_INTEGER":"FORMAT_ERROR"}}},35:(e,r,t)=>{const i=t(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,r,t)=>{const i=t(502);e.exports=function(e){return(r,t)=>{if(!i.isNoValue(r))return i.isPrimitiveValue(r)?r!=t[e]?"FIELDS_NOT_EQUAL":void 0:"FORMAT_ERROR"}}},168:(e,r,t)=>{const i=t(502);e.exports=function(){return e=>{if(i.isNoValue(e))return;if(!i.isPrimitiveValue(e))return"FORMAT_ERROR";const r=e.match(/^(\d{4})-([0-1][0-9])-([0-3][0-9])$/);if(r){const t=Date.parse(e);if(!t&&0!==t)return"WRONG_DATE";const i=new Date(t);if(i.setTime(i.getTime()+60*i.getTimezoneOffset()*1e3),i.getFullYear()==r[1]&&i.getMonth()+1==+r[2]&&i.getDate()==+r[3])return}return"WRONG_DATE"}}},842:(e,r,t)=>{const i=t(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 r=>{if(!i.isNoValue(r)){if(!i.isPrimitiveValue(r))return"FORMAT_ERROR";if(!(r.length<2083&&e.test(r)))return"WRONG_URL"}}}},10:(e,r,t)=>{const i=t(502);e.exports=function(e){return(r,t,s)=>{if(!i.isNoValue(r)){if(!i.isPrimitiveValue(r))return"FORMAT_ERROR";if(r+""!=e+"")return"NOT_ALLOWED_VALUE";s.push(e)}}}},973:(e,r,t)=>{const i=t(502);e.exports=function(e,r){return(t,s,o)=>{if(!i.isNoValue(t))return i.isPrimitiveValue(t)?(t+="").length<e?"TOO_SHORT":t.length>r?"TOO_LONG":void o.push(t):"FORMAT_ERROR"}}},402:(e,r,t)=>{const i=t(502);e.exports=function(e){return(r,t,s)=>{if(!i.isNoValue(r))return i.isPrimitiveValue(r)?(r+="").length<e?"TOO_SHORT":r.length>e?"TOO_LONG":void s.push(r):"FORMAT_ERROR"}}},0:(e,r,t)=>{const i=t(502);e.exports=function(e,r){const t=3===arguments.length&&r.match("i"),s=new RegExp(e,t?"i":"");return(e,r,t)=>{if(!i.isNoValue(e)){if(!i.isPrimitiveValue(e))return"FORMAT_ERROR";if(!(e+="").match(s))return"WRONG_FORMAT";t.push(e)}}}},240:(e,r,t)=>{const i=t(502);e.exports=function(e){return(r,t,s)=>{if(!i.isNoValue(r)){if(!i.isPrimitiveValue(r))return"FORMAT_ERROR";if((r+="").length>e)return"TOO_LONG";s.push(r)}}}},932:(e,r,t)=>{const i=t(502);e.exports=function(e){return(r,t,s)=>{if(!i.isNoValue(r)){if(!i.isPrimitiveValue(r))return"FORMAT_ERROR";if((r+="").length<e)return"TOO_SHORT";s.push(r)}}}},594:(e,r,t)=>{const i=t(502);e.exports=function(e){return Array.isArray(e)||(e=Array.prototype.slice.call(arguments)).pop(),(r,t,s)=>{if(!i.isNoValue(r)){if(!i.isPrimitiveValue(r))return"FORMAT_ERROR";for(const t of e)if(r+""==t+"")return void s.push(t);return"NOT_ALLOWED_VALUE"}}}},320:(e,r,t)=>{const i=t(502);e.exports=function(){return(e,r,t)=>{if(!i.isNoValue(e))return i.isPrimitiveValue(e)?void t.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 r in e)if(e.hasOwnProperty(r))return!1;return!0},escapeRegExp:e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),isNoValue:e=>null==e||""===e,camelize:e=>(e+"").replace(/[_](\w|$)/g,((e,r)=>r.toUpperCase()))}}},r={};window.LIVR=function t(i){var s=r[i];if(void 0!==s)return s.exports;var o=r[i]={exports:{}};return e[i](o,o.exports,t),o.exports}(601)})();