narrow-minded
Version:
Easy typeof validations with sophisticated TypeScript inference.
3 lines (2 loc) • 3.67 kB
JavaScript
var e=Symbol("SOME"),r=function(){var r;return Object.assign([].slice.call(arguments),((r={})[e]=!0,r))},n=function(r){return Array.isArray(r)&&!(e in r)},t=function(r){return Array.isArray(r)&&e in r},u=function(e){return i(e)},i=function(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)},o=function(e,r){return c(e,r)},c=function(r,n){if("string"==typeof r)return r===typeof n;if(Array.isArray(r))return e in r?r.some(function(e){return c(e,n)}):!!Array.isArray(n)&&(0===r.length||n.every(function(e){return r.some(function(r){return c(r,e)})}));if("object"!=typeof n||null===n)return!1;var t=n;return Object.entries(r).every(function(e){return c(e[1],t[e[0]])})},a=function(e){return function(r){return o(e,r)}},v=/*#__PURE__*/function(){function e(e){this.NF=void 0,this.NF=e}e.narrow=function(r){return new e(function(e){return o(r,e)})};var r=e.prototype;return r.satisfied=function(e){return this.NF(e)},r.build=function(e){return e},r.and=function(r){var n=this.NF,t=r instanceof e?r.NF:r instanceof Function?r:function(e){return o(r,e)};return new e(function(e){return n(e)&&t(e)})},e}(),p=new v(function(e){return!0}),l=function(e){var r=e.value,n=e.level;return"object"!=typeof r||null===r?[]:Object.entries(r).map(function(r){return{property:r[0],value:r[1],level:n+1,parent:e}})},f=function(e){return void 0===e||Boolean(e)},d={depth:{dequeue:function(e){return e.pop()},enqueue:function(e,r,n){if(f(n)){var t=l(e);t.reverse(),r.push.apply(r,t)}}},breadth:{dequeue:function(e){return e.shift()},enqueue:function(e,r,n){if(f(n)){var t=l(e);r.push.apply(r,t)}}}},s=function(e,r){for(var n=r.visit,t=r.dequeue,u=r.enqueue,i=[{property:"",value:e,level:0,parent:void 0}];i.length>0;){var o=t(i);u(o,i,n(o))}},y=function(e,r){return s(e,{visit:r,dequeue:d.depth.dequeue,enqueue:d.depth.enqueue})},h=function(e,r){return s(e,{visit:r,dequeue:d.breadth.dequeue,enqueue:d.breadth.enqueue})},q=function(e,r){var n=[];return s({expected:e,received:r},{visit:function(e){var r=e.value,t=r.expected,u=r.received;return!!g(t,u)||(b(e)||n.push({level:e.level,property:e.property,expected:t,received:u}),!1)},dequeue:function(e){return e.pop()},enqueue:function(e,r,n){if(n){var t=A(e);return t.reverse(),void r.push.apply(r,t)}var u=x(e);u&&r.push(u)}}),n},A=function(e){var o=e.value,c=o.expected,a=o.received;return u(c)&&i(a)?Object.entries(c).map(function(r){var n=r[0];return{parent:e,level:e.level+1,property:n,value:{expected:r[1],received:a[n]}}}):n(c)&&Array.isArray(a)?a.map(function(n,t){var u=r.apply(void 0,c);return{parent:e,level:e.level+1,property:t.toString(),value:{expected:u,received:n}}}):t(c)?[{parent:e,level:e.level,property:e.property,value:{expected:c[0],received:a}}]:[]},b=function(e){var r=function(e){for(var r=[e];;){var n=r[0],t=null==n?void 0:n.parent;if(!t)break;r.unshift(t)}return r.reverse(),r}(e);return r.find(function(e){var r=e.value.expected;return t(r)&&r.length>1})},x=function(e){var n,u,i=b(e),o=null!=i&&null!=(n=i.value)&&n.expected&&t(null==i||null==(u=i.value)?void 0:u.expected)?i.value.expected:void 0;if(i&&o)return{parent:i.parent,level:i.level,property:i.property,value:{expected:r.apply(void 0,o.slice(1)),received:i.value.received}}},g=function(e,r){return"string"==typeof e?e===typeof r:u(e)?i(r):n(e)?Array.isArray(r):!!t(e)&&0!==e.length&&g(e[0],r)};export{d as DEFAULT_TRAVERSALS,v as Guard,e as SOME,q as diffNarrow,n as isNarrowerArr,u as isNarrowerObj,t as isNarrowerSome,i as isRecordObj,l as makeSubnodes,o as narrow,a as satisfier,f as shouldContinue,r as some,s as traverse,h as traverseObjectBreadthFirst,y as traverseObjectDepthFirst,p as unknown};
//# sourceMappingURL=index.module.mjs.map