UNPKG

hero-validate

Version:

simple validation library for Javascript & Reactjs functional

1 lines 11.4 kB
!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.HeroValidate=n():e.HeroValidate=n()}(self,(function(){return(()=>{var e={105:(e,n,t)=>{"use strict";t.r(n),t.d(n,{extend:()=>z,formatErrors:()=>I,formatMessage:()=>N,getEmpty:()=>M,languages:()=>u,setDefaultMessage:()=>d,setLocale:()=>g,setMessages:()=>p,setParamsSeparator:()=>A,setRuleParamSeparator:()=>O,setRuleSeparator:()=>S,validate:()=>E});var a=t(143),r=t.n(a),i=t(514),o=t.n(i),s=t(376),l=t.n(s);let u={en:"en",ja:"ja",vi:"vi"},m="Incorrect Value",h="en",c=[];c[`${u.en}`]=r(),c[`${u.vi}`]=o(),c[`${u.ja}`]=l();let f=c[`${u.en}`];function p(e){if("object"!=typeof e)throw"Messages must be object";f={...f,...e}}function d(e){if("string"!=typeof e)throw"Default message must be a string";m=e}function g(e="en"){if("string"!=typeof e)throw"Locale must be string";if(h=e,void 0===typeof c[e])throw`Locale - ${e} is not supported`;f={...f,...c[e]}}const b=/^(([^<>()\[\]\\.,;:\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,}))$/,y=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;let v={alpha:e=>/^[a-zA-Z]+$/.test(e)||{value:e},alpha_dash:e=>/^[A-Za-z\-]+$/.test(e)||{value:e},alpha_numeric:e=>/^[A-Za-z0-9]+$/.test(e)||{value:e},array:e=>Array.isArray(e)||{},between(e,n,t){if("string"==typeof e){if(e.length>=n&&e.length<=t)return!0}else if(e>=n&&e<=t)return!0;return{from:n,to:t,value:e}},boolean:e=>"boolean"==typeof e||{},checked:e=>1===e||"on"===e||!0===e||"true"===e||{},contains_all(e,...n){Array.isArray(e)||(e=String(e));for(let t=0,a=n.length;t<a;t++)if(-1===e.indexOf(n[t]))return{value_to_contain:n[t]};return!0},contains_one(e,...n){Array.isArray(e)||(e=String(e));for(let t=0,a=n.length;t<a;t++)if(e.indexOf(n[t])>-1)return!0;return{value_to_contain:n.join(",")}},date:e=>!isNaN(Date.parse(e))||{},email:e=>b.test(e)||{value:e},phone:e=>(e=String(e),/^\d{7,}$/.test(e.replace(/[\s()+\-\.]|ext/gi,""))||{value:e}),ends_with:(e,n)=>(n=String(n),-1!==(e=String(e)).indexOf(n,e.length-n.length)||{suffix:n}),equals:(e,n)=>String(e)===String(n)||{value:n},in_array:(e,...n)=>n.indexOf(String(e))>-1||{value:n.join(",")},ip:e=>y.test(e)||{value:e},json(e){try{return JSON.parse(String(e)),!0}catch(e){return{}}},max(e,n){if("string"==typeof e){if(e.length<=n)return!0}else if(void 0!==typeof e&&e<=n)return!0;return{max:n}},min(e,n){if("string"==typeof e){if(e.length>=n)return!0}else if(void 0!==typeof e&&e>=n)return!0;return{min:n}},max_length:(e,n)=>"string"==typeof e&&e.length<=n||{max:n},min_length:(e,n)=>"string"==typeof e&&e.length>=n||{min:n},not_equals:(e,n)=>String(e)!==String(n)||{value:n},not_in:(e,...n)=>-1===n.indexOf(String(e))||{value:e},numeric:e=>/^-?\d+$/.test(e)||{value:e},object:e=>"object"==typeof e&&!Array.isArray(e)||{value:e},starts_with:(e,n)=>(n=String(n),0===(e=String(e)).indexOf(n)||{prefix:n}),url(e){try{return new URL(e),!0}catch(n){return{value:e}}}};const _=["required","string","nullable","number"];let x="|",j=":",w=",";function S(e){if("string"!=typeof e)throw"Separator must be string";x=e}function O(e){if("string"!=typeof e)throw"Separator must be string";j=e}function A(e){if("string"!=typeof e)throw"Separator must be string";w=e}class q{constructor(e){"string"==typeof e?(this.name=e,this.isInlineFunction=!1,-1===_.indexOf(e)&&(this.validator=function(e){if(!1===v.hasOwnProperty(e))throw`The validation method "${e}" does not exist`;return v[e]}(this.name))):"function"==typeof e&&(this.name=e.name||"default",this.isInlineFunction=!0,this.validator=e),this.params=[]}validate(e,n,t){if(null==n||""===n){if(e.isRequired)return{rule:"required"};if(e.isNullable)return!0}return e.isNumber?n=parseFloat(n):e.isString&&(n=String(n)),this.isInlineFunction?this.validator(n,t):this.validator(n,...this.params)}setParams(e=[]){return this.params=e,this}}function k(e){let n={},t=100;return e.map((function(e){if(null!=e&&""!==e)if("string"==typeof e){let t=P(e);Object.assign(n,t)}else if("function"==typeof e){let a=e.name.length>0?e.name:t++;n[a]=new q(e)}})),n}function $(e){let n={},t=100;return Object.keys(e).map((function(a){let r=e[a];if("function"==typeof r){let e=r.name.length>0?r.name:t++;n[e]=new q(r)}else{let e=Array.isArray(r)?r:[r];n[a]=new q(a).setParams(e)}})),n}function P(e){let n={};return e.split(x).filter((function(e){return""!==e})).map((function(e){let t=e.split(j),a=t[0].trim(),r=new q(a),i=t[1],o=void 0!==i?i.split(w):[];r.setParams(o),n[a]=r})),n}function z(e,n,t=null){if(v.hasOwnProperty(e))throw`The validation method "${e}" already exists`;if("function"!=typeof n)throw"The validation method must be function";v[e]=n,t&&(f[e]=t)}function N(e,n,t){if("object"!=typeof n&&(n={}),n.name=e,void 0===f[t])return m;let a=f[t];return void 0!==f[e]&&"string"==typeof f[e]&&(a=f[e]),void 0!==f[e]&&void 0!==f[e][t]&&(a=f[e][t]),Object.keys(n).map((function(e){a=a.replace(":"+e,n[e])})),a}function I(e,n){return{hasError:Object.keys(e).length>0,errors:e,isError:function(t,a){return void 0===a?void 0!==e[t]:void 0!==n[t]&&-1!==n[t].indexOf(a)},getError:function(n,t=",",a=!0){return Array.isArray(e[n])&&0!==e[n].length?a?e[n].join(t):e[n][0]:""},getAllError:function(n,t=","){return Array.isArray(e[n])&&0!==e[n].length?e[n].join(t):""}}}function M(){return E({},{})}function E(e,n,t){let a={},r={};if("object"!=typeof e||"object"!=typeof n)throw"Both data and scheme must be object";let i=function(e){const n={};for(let t in e){let a=e[t],r={};if("string"==typeof a)r=P(a);else if(Array.isArray(a))r=k(a);else{if("object"!=typeof a)throw`Invalid rules for ${t}`;r=$(a)}let i=void 0!==r.required,o=void 0!==r.string,s=void 0!==r.number,l=void 0!==r.nullable;for(let e=0;e<_.length;e++)delete r[_[e]];n[t]={rules:Object.values(r),isRequired:i,isString:o,isNumber:s,isNullable:l}}return n}(n);for(let n in i){r[n]=[];for(let t=0,o=i[n].rules.length;t<o;t++){let o,s=i[n].rules[t],l=s.validate(i[n],e[n],e),u=l.rule?l.rule:s.name;!0!==l&&(o="string"==typeof l?l:N(n,l,u),void 0===a[n]?a[n]=[o]:-1===a[n].indexOf(o)&&a[n].push(o),r[n].push(u))}}const o=I(a,r);return"function"==typeof t&&t(o),o}},143:e=>{e.exports={required:":name is required",min:":name cant be less than :min",max:":name cant be greater than :max",min_length:":name cant be less than :min character.",max_length:":name cant be greater than :max character.",between:":name must be between :from and :to",checked:":name must be checked",array:":name must be array",object:":name must be object",boolean:":name must be boolean",numeric:":name can only contain digits",alpha_numeric:":name can only contain digits and letters",alpha_dash:":name can only contain letters and dashes",alpha:":name can only contain leters",email:":name must be correct mail",phone:":name must be a correct phone number",in_array:":name is invalid",not_in:":name can't be :value",json:":name must be valid json",ip:":name must be valid ip adress",url:":name must be valid url",equals:":name must equal to :value",not_equals:":name can't be :value",contains_one:':name must contain ":value_to_contain"',contains_all:':name must contain ":value_to_contain"',starts_with:":name must start with :prefix",ends_with:":name must end with :suffix",date:":name must valid date"}},376:e=>{e.exports={required:":nameは必須です。",min:":nameは:min以上で入力してください。",max:":nameは:max以下で入力してください。",min_length:":nameは:min文字以上で入力してください。",max_length:":nameは:max文字以下で入力してください。",between:":nameは:from〜:toの間で指定してください。",checked:":nameをチェックする必要があります",array:":nameは配列である必要があります",object:":nameはオブジェクトである必要があります",boolean:":nameはブール値である必要があります",numeric:":nameは数値で入力してください。",alpha_numeric:":nameは英数字のみで入力してください。",alpha_dash:":nameは英字とダッシュと下線のみで入力してください。",alpha:":nameは英字のみで入力してください。",email:":nameは正しいメールアドレスを入力してください。",phone:":nameは有効な電話番号である必要があります。",in_array:"選択された:nameは無効です。",not_in:"選択された:nameは無効です。",json:":nameはjsonである必要があります",ip:":nameはIPアドレス形式である必要があります。",url:":nameは正しいURIを入力してください。",equals:":nameと:valueは同じでなければなりません。",not_equals:":nameは:valueと等しくてはなりません",starts_with:":nameは:prefixで始まる必要があります",ends_with:":nameは:suffixで終わる必要があります",date:":nameは正しい日付形式を入力してください"}},514:e=>{e.exports={required:":name bắt buộc nhập.",min:":name phải lớn hơn hoặc bằng :min.",max:":name phải nhỏ hơn hoặc bằng :max.",min_length:":name phải lớn hơn hoặc bằng :min Ký tự.",max_length:":name phải nhỏ hơn hoặc bằng :max ký tự.",between:":name phải nằm trong khoảng :from và :to.",checked:":name phải được checked",array:":name phải là mảng",object:":name phải là object",boolean:":name phải là đúng/sai.",numeric:":name chỉ có thể chứa ký tự số.",alpha_numeric:":name chỉ có thể chứa ký tự số và ký tự alphabet(a-z).",alpha_dash:":name chỉ có thể chứa ký tự alphabet(a-z) và dấu gạch ngang (-).",alpha:":name chỉ có thể chứa ký tự alphabet(a-z).",email:":name phải là mail hợp lệ",phone:":name phải là một số điện thoại hợp lệ.",in_array:":name chưa chính xác",not_in:":name có giá trị được chọn không hợp lệ.",json:":name phải là định dạng json",ip:":name phải là định dạng địa chỉ ip.",url:":name phải là định dạng đường dẫn url",equals:":name phải bằng :value",not_equals:":name không bằng :value",contains_one:':name phải chứa ":value_to_contain"',contains_all:':name phải chứa ":value_to_contain"',starts_with:":name phải bắt đầu bằng :prefix",ends_with:":name phải kết thúc bằng :suffix",date:":name phải là định dạng ngày tháng năm"}}},n={};function t(a){var r=n[a];if(void 0!==r)return r.exports;var i=n[a]={exports:{}};return e[a](i,i.exports,t),i.exports}t.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},t.d=(e,n)=>{for(var a in n)t.o(n,a)&&!t.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:n[a]})},t.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};return(()=>{var e=t(105);const n={password:"hungff",confirm_password:"fdsfd"},a={password:"required|min_length:7|max_length:100",confirm_password:{required:!0,mycustom:function(e){return e===n.password||{}}}};let r=e.validate(n,a);console.log(JSON.stringify(r))})(),{}})()}));