@olton/guardian
Version:
Data validation library
10 lines (7 loc) • 13 kB
JavaScript
/*!
* Guardian v0.7.3. Data guard and validation library.
* Copyright 2025 Serhii Pimenov
* Licensed under MIT
* Build time: 18.05.2025 14:43:24
*/
var x=Object.defineProperty;var l=Object.getOwnPropertySymbols;var w=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable;var E=(t,r,e)=>r in t?x(t,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[r]=e,d=(t,r)=>{for(var e in r||(r={}))w.call(r,e)&&E(t,e,r[e]);if(l)for(var e of l(r))U.call(r,e)&&E(t,e,r[e]);return t};var o=class extends Error{constructor(r="",e=null,c){super(r),this.message=r,this.name=e,this.value=c}};var A=(t,r)=>{let e;if(!t)throw new Error("Schema object required for parse data!");if(typeof t=="function"){if(e=t.apply(null,[r]),e instanceof o)throw e}else for(let c in t){let s=r[c],a=t[c];if(!a)throw new o(`Guard not defined for field ${c} in input data!`,"general",r);if(!r.hasOwnProperty(c))throw new o(`Field ${c} doesn't exists in input data!`,"general",r);if(typeof a=="function"){if(console.log(a.name),e=a.apply(null,[s]),e instanceof o)throw e}else A(a,s)}return r},D=(t,r)=>{let e;if(!t)throw new Error("Schema object required for parse data!");if(typeof t=="function"){if(e=t.apply(null,[r]),e instanceof o)return{ok:!1,error:e}}else for(let c in t){let s=r[c],a=t[c];if(a)if(typeof a=="function"){if(e=a.apply(null,[r]),e instanceof o)return{ok:!1,error:e}}else A(a,s)}return{ok:!0,output:r}};var M=(...t)=>r=>t.reduce((e,c)=>c(e),r),y=M;var N=(...t)=>r=>t.reduceRight((e,c)=>c(e),r),I=N;var v="VAL must be a string",i=(t=v)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"?r:new o(e,"string",r)};var f=t=>typeof t!="undefined"&&t!==null;var T="VAL must starts with START_VAL",C=(t,r=T)=>{if(!f(t))throw new Error("START_VALUE not defined!");return function(e){let c=r.replace(/VAL/g,e).replace(/START_VAL/g,t);return typeof e=="string"&&e.startsWith(t)?e:new o(c,"startsWith",e)}};var $="VAL must end with END_VAL",O=(t,r=$)=>{if(!f(t))throw new Error("END_VALUE not defined!");return function(e){let c=r.replace(/VAL/g,e).replace(/END_VAL/g,t);return typeof e=="string"&&e.endsWith(t)?e:new o(c,"endsWith",e)}};var B=()=>function(t){return t};var F="A symbol is required",q=(t=F)=>function(r){return typeof r=="symbol"?r:new o(t,"symbol",r)};var P="VAL must be a bigint",j=(t=P)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="bigint"?r:new o(e,"bigint",r)};var z="VAL must be valid date object or date string",H=(t=z)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="object"&&r.getTime||typeof r=="string"&&!isNaN(Date.parse(r))?r:new o(e,"date",r)};var X="The value must be a function",W=(t=X)=>function(r){return typeof r=="function"?r:new o(t,"function",r)};var Y="VAL must be an integer",J=(t=Y)=>function(r){let e=t.replace(/VAL/g,r);return Number.isInteger(r)?r:new o(e,"integer",r)};var Z="VAL must be an safe integer",Q=(t=Z)=>function(r){let e=t.replace(/VAL/g,r);return Number.isSafeInteger(r)?r:new o(e,"safeInteger",r)};var K="VAL must be a great then MIN_VALUE",rr=(t,r=K)=>{if(!f(t))throw new Error("MIN_VALUE not defined!");return function(e){let c=r.replace(/VAL/g,e).replace(/MIN_VALUE/g,t),s=+e;return!isNaN(s)&&s>=+t?e:new o(c,"minValue",e)}};var er="VAL must be a less then MAX_VALUE",tr=(t,r=er)=>{if(!f(t))throw new Error("MAX_VALUE not defined!");return function(e){let c=r.replace(/VAL/g,e).replace(/MAX_VALUE/g,t),s=+e;return!isNaN(s)&&s<=+t?e:new o(c,"maxValue",e)}};var or="VAL must be a string in valid email format",nr=(t=or)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r)?r:new o(e,"email",r)};var cr="Any value required",sr=(t=cr)=>function(r){let e=t.replace(/VAL/g,r);return typeof r!="undefined"&&r!==null&&r!==""?r:new o(e,"required",r)};var ar="VAL must be a number",fr=(t=ar)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="number"&&!isNaN(+r)?r:new o(e,"number",r)};var mr="VAL must be an object",ir=(t,r=mr)=>{if(!(typeof t=="object"))throw new o(r.replace(/VAL/g,t),"object",t);return d({},t)};var Ar="VAL must be between MIN_VAL and MAX_VAL",ur=(t,r,e=Ar)=>{if(!f(t))throw new Error("MIN_VALUE not defined!");if(!f(r))throw new Error("MAX_VALUE not defined!");return function(c){let s=e.replace(/VAL/g,c).replace(/MIN_VAL/g,t).replace(/MAX_VAL/g,r),a=+c;return!isNaN(a)&&c>=+t&&c<=+r?c:new o(s,"between",c)}};var lr="VAL must be a finite number",Er=(t=lr)=>function(r){let e=t.replace(/VAL/g,r);return Number.isFinite(r)?r:new o(e,"finite",r)};var dr="VAL must be a string in valid base 64 format",gr=(t=dr)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/.test(r)?r:new o(e,"base64",r)};var Gr="VAL can`t be a number",hr=(t=Gr)=>function(r){let e=t.replace(/VAL/g,r);return isNaN(r)?r:new o(e,"notNumber",r)};var Lr="VAL must be a boolean",_r=(t=Lr)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="boolean"?r:new o(e,"boolean",r)};var g="VAL must be an array of TYPE",pr=(t,r=g)=>(!t&&!r&&(t=i(),r=g),typeof t=="string"&&(r=t,t=i()),function(e){let c=r.replace(/VAL/g,e).replace(/TYPE/g,t.name);if(!Array.isArray(e))return new o(c,"array",e);for(let s of e)if(t(s)instanceof o)return new o(c,"array",e);return e});var Sr="VAL must be a valid EMEI",Vr=t=>{let r=s=>{let a=0;for(;s>0;)a=a+s%10,s=parseInt(""+s/10,10);return a},e=(""+t).length;if(e!==15)return!1;let c=0;for(let s=e;s>=1;s--){let a=t%10;s%2===0&&(a=2*a),c+=r(a),t=parseInt(""+t/10,10)}return c%10===0},br=(t=Sr)=>function(r){let e=t.replace(/VAL/g,r);return Vr(r)?r:new o(e,"emei",r)};var u="VAL must be a string or array with length N",Rr=(t,r=u)=>function(e){let c=r.replace(/VAL/g,e).replace(/N/g,t);return(typeof e=="string"||Array.isArray(e))&&e.length===+t?e:new o(c,"length",e)},kr=(t,r=u)=>function(e){let c=r.replace(/VAL/g,e).replace(/N/g,t);return(typeof e=="string"||Array.isArray(e))&&e.length>=+t?e:new o(c,"minLength",e)},xr=(t,r=u)=>function(e){let c=r.replace(/VAL/g,e).replace(/N/g,t);return(typeof e=="string"||Array.isArray(e))&&e.length<=+t?e:new o(c,"maxLength",e)};var wr="VAL must be a valid ip address ipv4 or ipv6",Ur="VAL must be a valid ipv4 address",Dr="VAL must be a valid ipv6 address",G=/^(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]?)$/,h=/^[a-fA-F0-9]{1, 4}:[a-fA-F0-9]{1, 4}:[a-fA-F0-9]{1, 4}:[a-fA-F0-9]{1, 4}:[a-fA-F0-9]{1, 4}:[a-fA-F0-9]{1, 4}:[a-fA-F0-9]{1, 4}:[a-fA-F0-9]{1, 4}$/,Mr=(t=wr)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&(G.test(r)||h.test(r))?r:new o(e,"ip",r)},yr=(t=Ur)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&G.test(r)?r:new o(e,"ipv4",r)},Nr=(t=Dr)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&h.test(r)?r:new o(e,"ipv6",r)};var Ir="VAL must be a valid domain name, xn--* for internationalized names",vr=/^((xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/,Tr=(t=Ir)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&vr.test(r)?r:new o(e,"domain",r)};var Cr="VAL must be a valid url",$r=/^(?:(?:(?:https?|ftp|wss?):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i,Or=(t=Cr)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&$r.test(r)?r:new o(e,"url",r)};var Br="VAL must be a valid color in HEX, RGB(A), or HSL(A) format",Fr="VAL must be a valid HEX color",qr="VAL must be a valid RGB(a) color",Pr="VAL must be a valid HSL(A) color",jr=/^#(?:[\da-f]{3}){1,2}$|^#(?:[\da-f]{4}){1,2}$|^(rgb|hsl)a?\((\s*-?\d+%?\s*,){2}(\s*-?\d+%?\s*)\)$|^(rgb|hsl)a?\((\s*-?\d+%?\s*,){3}\s*(0|(0?\.\d+)|1)\)$/gmi,zr=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i,Hr=/^rgba?\((\s*-?\d+%?\s*,){2}(\s*-?\d+%?\s*)\)$|^rgba?\((\s*-?\d+%?\s*,){3}\s*(0|(0?\.\d+)|1)\)$/gmi,Xr=/^hsla?\((\s*-?\d+%?\s*,){2}(\s*-?\d+%?\s*)\)$|^hsla?\((\s*-?\d+%?\s*,){3}\s*(0|(0?\.\d+)|1)\)$/gmi,Wr=(t=Br)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&jr.test(r)?r:new o(e,"color",r)},Yr=(t=Fr)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&zr.test(r)?r:new o(e,"hexColor",r)},Jr=(t=qr)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&Hr.test(r)?r:new o(e,"rgbColor",r)},Zr=(t=Pr)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&Xr.test(r)?r:new o(e,"hslColor",r)};var L=/^4\d{12}(?:\d{3,6})?$/u,_=/^5[1-5]\d{2}|(?:222\d|22[3-9]\d|2[3-6]\d{2}|27[01]\d|2720)\d{12}$/u,p=/^3[47]\d{13}$/u,S=/^6(?:011|5\d{2})\d{12,15}$/u,V=/^3(?:0[0-5]|[68]\d)\d{11,13}$/u,b=/^(?:2131|1800|35\d{3})\d{11}$/u,R=/^(?:6[27]\d{14,17}|81\d{14,17})$/u,k="VAL must be a valid CC number (visa, mastercard, american express, discover, diners club, jcb, or union pay)",Qr="VAL must be a valid Visa card number",Kr="VAL must be a valid Mastercard card number",re="VAL must be a valid American Express card number",ee="VAL must be a valid DISCOVER card number",te="VAL must be a valid DINERS CLUB card number",oe="VAL must be a valid JCB card number",ne="VAL must be a valid Union Pay card number",ce=(t=k)=>function(r){let e=t.replace(/VAL/g,r);return typeof r=="string"&&(L.test(r)||_.test(r)||p.test(r)||S.test(r)||V.test(r)||b.test(r)||R.test(r))?r:new o(e,"creditCard",r)},m=(t,r,e=k)=>function(c){let s=e.replace(/VAL/g,c);return typeof c=="string"&&r.test(c)?c:new o(s,t,c)},se=(t=Qr)=>m("visa",L,t),ae=(t=Kr)=>m("mastercard",_,t),fe=(t=re)=>m("american express",p,t),me=(t=ee)=>m("discover",S,t),ie=(t=te)=>m("diners club",V,t),Ae=(t=oe)=>m("jcb card",b,t),ue=(t=ne)=>m("union pay",R,t);var le="The length of string must be VAL bytes",Ee=(t,r=le)=>function(e){let c=r.replace(/VAL/g,e);return typeof e=="string"&&new TextEncoder().encode(e).length===t?e:new o(c,"bytes",e)};var de="VAL can`t be null or undefined.",ge=(t=de)=>function(r){let e=t.replace(/VAL/g,r);return f(r)?r:new o(e,"notNull",r)};var Ge="The value must match the pattern",he=(t,r=Ge)=>function(e){let c=r.replace(/VAL/g,e);return(typeof t=="string"?new RegExp(t,"g"):t).test(""+e)?e:new o(c,"pattern",e)};var Le="VAL must contains only digits",_e=(t=Le)=>function(r){let e=t.replace(/VAL/g,r);return/^\d+$/g.test(""+r)?r:new o(e,"digits",r)};var pe="VAL must be a float",Se=(t=pe)=>function(r){let e=t.replace(/VAL/g,r);return!isNaN(r)&&+n%1!==0||/^\d*\.\d+$/.test(r)?r:new o(e,"float",r)};var Ve="VAL must must contains OBJ",be=(t,r=Ve)=>function(e){let c=r.replace(/VAL/g,e).replace(/OBJ/g,t);return e.includes(t)?e:new o(c,"contains",e)};var Re="A VAL must have type TYPE";function ke(t){return Object.prototype.toString.call(t).replace(/^\[object (.+)]$/,"$1").toLowerCase()}var xe=(t="string",r=Re)=>function(e){let c=r.replace(/VAL/g,e).replace(/TYPE/g,t);return t===ke(e)?e:new o(c,"type",e)};var we="VAL must be an equal to VALUE",Ue=(t,r=we)=>function(e){let c=r.replace(/VAL/g,e).replace(/VALUE/g,t);return e===t?e:new o(c,"equal",e)};var De="VAL must be a similar to VALUE",Me=(t,r=De)=>function(e){let c=r.replace(/VAL/g,e).replace(/VALUE/g,t);return e==t?e:new o(c,"similar",e)};var ye="VAL must be a great then VALUE",Ne=(t,r=ye)=>function(e){let c=r.replace(/VAL/g,e).replace(/VALUE/g,t);return e>t?e:new o(c,"great",e)};var Ie="VAL must be a less then VALUE",ve=(t,r=Ie)=>function(e){let c=r.replace(/VAL/g,e).replace(/VALUE/g,t);return e<t?e:new o(c,"less",e)};var Te="VAL must be a great or equal to VALUE",Ce=(t,r=Te)=>function(e){let c=r.replace(/VAL/g,e).replace(/VALUE/g,t);return e>=t?e:new o(c,"greatOrEqual",e)};var $e="VAL must be a less or equal to VALUE",Oe=(t,r=$e)=>function(e){let c=r.replace(/VAL/g,e).replace(/VALUE/g,t);return e<=t?e:new o(c,"lessOrEqual",e)};var Be="0.7.3",Fe="18.05.2025, 14:43:24",qe=()=>{console.info(`%c Guardian %c v${Be} %c ${Fe} `,"color: pink; font-weight: bold; background: #2b1700","color: white; background: darkgreen","color: white; background: #0080fe;")};export{fe as americanExpress,pr as array,gr as base64,ur as between,j as bigint,_r as boolean,Ee as bytes,Wr as color,I as compose,be as contains,ce as creditCard,H as date,_e as digits,ie as diners,me as discover,Tr as domain,nr as email,O as endsWith,Ue as equal,Er as finite,Se as float,W as func,Ne as great,Ce as greatOrEqual,Yr as hexColor,Zr as hslColor,br as imei,qe as info,J as integer,Mr as ip,yr as ipv4,Nr as ipv6,Ae as jcb,Rr as length,ve as less,Oe as lessOrEqual,ae as mastercard,tr as max,xr as maxLength,rr as min,kr as minLength,ge as notNull,hr as notNumber,fr as number,ir as object,A as parse,he as pattern,y as pipe,sr as required,Jr as rgbColor,Q as safeInteger,D as safeParse,Me as similar,C as startsWith,i as string,q as symbol,xe as type,ue as unionPay,B as unknown,Or as url,se as visa};