UNPKG

validlyjs

Version:

A high-performance Laravel-inspired validation library for TypeScript/JavaScript

91 lines (90 loc) 3.66 kB
"use strict" async function e(e,a,t,r){try{const n=r.compile(e),i=n.length for(let e=0;i>e;e++){const r=n[e] let i if(r.async)i=await r.validator(a,t) else{const e=r.validator(a,t) i=e instanceof Promise?await e:e}if(!i.passed)return!1}return!0}catch(e){return!1}}async function a(e,a,t,n,i){try{const s=n.compile(e) let l=!0 const c=[],o=s.length for(let e=0;o>e;e++){const n=s[e] let i if(n.async)i=await n.validator(a,t) else{const e=n.validator(a,t) i=e instanceof Promise?await e:e}if(!i.passed){l=!1,c.push(r(n.name,n.parameters)) break}}if(l)return!0 if(c.length>0)i.push(c.join(" and ")) else{const e=s.map(e=>e.name).join(", ") i.push(e)}return!1}catch(e){return!1}}function t(e){e.length>0?global.lastUnionFormats=e:delete global.lastUnionFormats}function r(e,a){var t,r const n=e+JSON.stringify(a) if(l.has(n))return l.get(n) let i switch(e){case"string.email":i="a valid email address" break case"string.min":i=`at least ${(null==a?void 0:a[0])||"N"} characters` break case"string.max":i=`at most ${(null==a?void 0:a[0])||"N"} characters` break case"string.length":i=`exactly ${(null==a?void 0:a[0])||"N"} characters` break case"string.uuid":i="a valid UUID" break case"string.url":i="a valid URL" break case"string.alpha":i="only alphabetic characters" break case"string.alphanumeric":i="only alphanumeric characters" break case"string.numeric":i="only numeric characters" break case"number.min":i="at least "+((null==a?void 0:a[0])||"N") break case"number.max":i="at most "+((null==a?void 0:a[0])||"N") break case"number.between":i=`between ${(null==a?void 0:a[0])||"N"} and ${(null==a?void 0:a[1])||"N"}` break case"number.integer":i="a whole number" break case"number.positive":i="a positive number" break case"number.negative":i="a negative number" break case"date.after":i="after "+((null==a?void 0:a[0])||"specified date") break case"date.before":i="before "+((null==a?void 0:a[0])||"specified date") break case"date.format":i=`in ${(null==a?void 0:a[0])||"specified"} format` break case"array.min":i=`at least ${(null==a?void 0:a[0])||"N"} items` break case"array.max":i=`at most ${(null==a?void 0:a[0])||"N"} items` break case"array.length":i=`exactly ${(null==a?void 0:a[0])||"N"} items` break case"file.max":i=`at most ${(null==a?void 0:a[0])||"N"} bytes` break case"file.min":i=`at least ${(null==a?void 0:a[0])||"N"} bytes` break case"file.mimes":i="one of these types: "+((null===(r=null===(t=null==a?void 0:a[0])||void 0===t?void 0:t.join)||void 0===r?void 0:r.call(t,", "))||"specified types") break case"required":i="required" break case"boolean":i="true or false" break default:i=e.replace(/\./g," ")}return l.set(n,i),i}var n=require("./index-CwS8y5AW.js") let i=null,s=null const l=new Map exports.unionRule={name:"union",validate:async(r,l,c,o)=>{const u=l[0],f=l[2]||{},{optimizeUnions:d=!0,parallelValidation:b=!1}=f if(!u||!Array.isArray(u)||0===u.length)return!1 const m=(s||(s=new n.R((i||(i=new n.a),i))),s),v={field:c,data:o,path:c},k=[] return b&&u.length>1?await async function(a,t,r,n){const i=a.length,s=Array(i) for(let l=0;i>l;l++)s[l]=e(a[l],t,r,n) const l=await Promise.all(s) for(let e=0;i>e;e++)if(l[e])return!0 return!1}(u,r,v,m):d?await async function(e,r,n,i,s){const l=new Map,c=e.length for(let t=0;c>t;t++){const c=e[t],o=JSON.stringify(c)+JSON.stringify(r) if(l.has(o)){if(l.get(o))return!0 continue}const u=await a(c,r,n,i,s) if(l.set(o,u),u)return!0}return t(s),!1}(u,r,v,m,k):await async function(e,r,n,i,s){const l=e.length for(let t=0;l>t;t++)if(await a(e[t],r,n,i,s))return!0 return t(s),!1}(u,r,v,m,k)},message:"The {field} field must match one of these formats: {formats}",async:!0,priority:1}