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