pure-parse
Version:
Strongly typed validation library that decouples type aliases from validation logic
2 lines (1 loc) • 628 B
JavaScript
import{optionalSymbol as d}from"../internals/optionalSymbol.js";const b=n=>t=>typeof t=="object"&&t!==null&&Object.keys(n).every(o=>{const r=n[o],e=t[o];return e===void 0&&!t.hasOwnProperty(o)?r(d):r(e)}),y=n=>{const t=Object.entries(n),o=t.map(([a,c])=>c),r=["return typeof data === 'object'","data !== null"].concat(t.map(([a,c],l)=>{const s=JSON.stringify(a),u=`data[${s}]`,i=`guards[${l}]`;return`(${u} === undefined && !data.hasOwnProperty(${s}) ? ${i}(optionalSymbol) : ${i}(${u}))`})).join(" && "),e=new Function("data","optionalSymbol","guards",r);return a=>e(a,d,o)};export{b as objectGuard,y as objectGuardCompiled};