UNPKG

variable-value-validator

Version:

Minimal schema validation for TypeScript and JavaScript.

2 lines (1 loc) 5.07 kB
var x=Object.defineProperty;var I=(n,s)=>{for(var e in s)x(n,e,{get:s[e],enumerable:!0})};var g={};I(g,{array:()=>P,boolean:()=>v,function:()=>$,instance:()=>E,map:()=>U,null:()=>N,nullish:()=>A,number:()=>j,object:()=>M,record:()=>C,set:()=>R,string:()=>k,undefined:()=>w,union:()=>K,unknown:()=>V});function V(n={}){return c("unknown",n,e=>({value:e}))}function k(n={}){let s="string";return c(s,n,e=>{let t=typeof e;return t!=="string"?{issues:[{message:`Expected "string", got "${t}".`}]}:p(e,n.predicates,s)??{value:e}})}function j(n={}){let s="number";return c(s,n,e=>{let t=typeof e;return t!=="number"?{issues:[{message:`Expected "number", got "${t}".`}]}:p(e,n.predicates,s)??{value:e}})}function v(n={}){let s="boolean";return c(s,n,e=>{let t=typeof e;return t!=="boolean"?{issues:[{message:`Expected "boolean", got "${t}".`}]}:p(e,n.predicates,s)??{value:e}})}function w(n={}){let s="undefined";return c(s,n,e=>{let t=typeof e;return t!=="undefined"?{issues:[{message:`Expected "undefined", got "${t}".`}]}:p(e,n.predicates,s)??{value:e}})}function N(n={}){let s="null";return c(s,n,e=>{let t=typeof e;return e||t!=="object"?{issues:[{message:`Expected "null", got "${t}".`}]}:p(e,n.predicates,s)??{value:e}})}function A(n={}){let s="nullish";return c(s,n,e=>{let t=typeof e;return e||t!=="undefined"&&t!=="object"?{issues:[{message:`Expected "null" or "undefined", got "${t}".`}]}:p(e,n.predicates,s)??{value:e}})}function $(n={}){let s="function";return c(s,n,e=>{let t=typeof e;return t!=="function"?{issues:[{message:`Expected "function", got "${t}".`}]}:p(e,n.predicates,s)??{value:e}})}function E(n,s={}){let e="instance";return c(e,s,t=>{if(!(t instanceof n)){let o=typeof t;return{issues:[{message:`Expected "${n.name||"Object"}", got "${o==="object"?Object.getPrototypeOf(t)?.constructor?.name||"Object":o}".`}]}}return p(t,s.predicates,e)??{value:t}})}function M(n,s={}){let e="object";return c(e,s,t=>{let o=typeof t;if(!t||typeof t!="object"){let r=Object.keys(n).join('" and "');return{issues:[{message:r?`Expected "object" with property "${r}", got "${o}".`:`Expected non-null "object", got "${o}".`}]}}let a=[];for(let[r,i]of Object.entries(n))if(r in t){let u=h(t[r],i);for(let{message:l,path:f}of u.issues??[])a.push({message:l,path:[r,...f??[]]})}else i.options.optional||a.push({message:`Property "${r}" is required.`,path:[r]});return a.length>0?{issues:a}:p(t,s.predicates,e)??{value:t}},{shape:n})}function P(n,s={}){let e="array",t=Array.isArray(n)?n:[n];return c(e,s,o=>{if(!Array.isArray(o))return{issues:[{message:`Expected "Array", got "${typeof o}".`}]};let a=[];for(let[r,i]of o.entries()){let u=!1,l=[];for(let f of t){let S=h(i,f);if(!S.issues){u=!0;break}for(let{message:m,path:d}of S.issues)l.push({message:m,path:[r,...d??[]]})}u||a.push(...l)}return a.length>0?{issues:a}:p(o,s.predicates,e)??{value:o}},{items:t})}function K(n,s={}){let e="union",t=Array.isArray(n)?n:[n];return c(e,s,o=>{let a=[],r=!1;for(let i of t){let u=h(o,i);if(!u.issues){r=!0;break}a.push(...u.issues)}return r?p(o,s.predicates,e)??{value:o}:{issues:a}},{members:t})}function C(n,s={}){let e="record",t=Array.isArray(n)?n:[n];return c(e,s,o=>{let a=typeof o;if(!o||typeof o!="object")return{issues:[{message:`Expected non-null "object", got "${a}".`}]};let r=[];for(let[i,u]of Object.entries(o)){let l=!1,f=[];for(let S of t){let m=h(u,S);if(!m.issues){l=!0;break}for(let{message:d,path:y}of m.issues)f.push({message:d,path:[i,...y??[]]})}l||r.push(...f)}return r.length>0?{issues:r}:p(o,s.predicates,e)??{value:o}},{values:t})}function R(n,s={}){let e="set",t=Array.isArray(n)?n:[n];return c(e,s,o=>{if(!(o instanceof Set))return{issues:[{message:`Expected "Set", got "${typeof o}".`}]};let a=[];for(let r of o.values()){let i=!1,u=[];for(let l of t){let f=h(r,l);if(!f.issues){i=!0;break}u.push(...f.issues)}i||a.push(...u)}return a.length>0?{issues:a}:p(o,s.predicates,e)??{value:o}},{values:t})}function U(n,s,e={}){let t="map",o=Array.isArray(n)?n:[n],a=Array.isArray(s)?s:[s];return c(t,e,r=>{if(!(r instanceof Map))return{issues:[{message:`Expected "Map", got "${typeof r}".`}]};let i=[];for(let[u,l]of r.entries()){let f=!1,S=!1,m=[];for(let d of o){let y=h(u,d);if(!y.issues){f=!0;break}for(let{message:O,path:b}of y.issues)m.push({message:O,path:[u,...b??[]]})}for(let d of a){let y=h(l,d);if(!y.issues){S=!0;break}for(let{message:O,path:b}of y.issues)m.push({message:O,path:[u,...b??[]]})}f&&S||i.push(...m)}return i.length>0?{issues:i}:p(r,e.predicates,t)??{value:r}},{keys:o,values:a})}function c(n,s,e,t){return{...t,type:n,options:{predicates:s.predicates??[],optional:!!s.optional},errors(o){return h(o,this).issues??[]},guard(o){return this.errors(o).length===0},"~standard":{version:1,vendor:"data-double-dash",validate:e}}}function h(n,s){let e=s["~standard"].validate(n);if(e instanceof Promise)throw"Async validation is not supported.";return e}function p(n,s,e){let t=0;for(let o of Array.isArray(s)?s:[])o(n)||(t+=1);return t===0?null:{issues:[{message:`Failed ${t} predicate(s) on "${e}".`}]}}var F=g;export{F as default};