UNPKG

decentralized-internet

Version:

An NPM library of programs to create decentralized web and distributed computing projects

1 lines 3.53 kB
"use strict";const internals={arrayType:Symbol("array"),bufferType:Symbol("buffer"),dateType:Symbol("date"),errorType:Symbol("error"),genericType:Symbol("generic"),mapType:Symbol("map"),promiseType:Symbol("promise"),regexType:Symbol("regex"),setType:Symbol("set"),weakMapType:Symbol("weak-map"),weakSetType:Symbol("weak-set"),mismatched:Symbol("mismatched")};internals.typeMap={"[object Array]":internals.arrayType,"[object Date]":internals.dateType,"[object Error]":internals.errorType,"[object Map]":internals.mapType,"[object Promise]":internals.promiseType,"[object RegExp]":internals.regexType,"[object Set]":internals.setType,"[object WeakMap]":internals.weakMapType,"[object WeakSet]":internals.weakSetType},module.exports=function(e,t,r){return r={prototype:!0,...r},!!internals.isDeepEqual(e,t,r,[])},internals.isDeepEqual=function(e,t,r,n){if(e===t)return 0!==e||1/e==1/t;const i=typeof e;if(i!==typeof t)return!1;if("object"!==i||null===e||null===t)return e!=e&&t!=t;const a=internals.getSharedType(e,t,!!r.prototype);switch(a){case internals.bufferType:return Buffer.prototype.equals.call(e,t);case internals.promiseType:return e===t;case internals.regexType:return e.toString()===t.toString();case internals.mismatched:return!1}for(let r=n.length-1;r>=0;--r)if(n[r].isSame(e,t))return!0;n.push(new internals.SeenEntry(e,t));try{return!!internals.isDeepEqualObj(a,e,t,r,n)}finally{n.pop()}},internals.getInternalType=function(e){const{typeMap:t,bufferType:r,genericType:n}=internals;return e instanceof Buffer?r:t[Object.prototype.toString.call(e)]||n},internals.getSharedType=function(e,t,r){if(r)return Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?internals.mismatched:internals.getInternalType(e);const n=internals.getInternalType(e);return n!==internals.getInternalType(t)?internals.mismatched:n},internals.valueOf=function(e){const t=e.valueOf;if(void 0===t)return e;try{return t.call(e)}catch(e){return e}},internals.hasOwnEnumerableProperty=function(e,t){return Object.prototype.propertyIsEnumerable.call(e,t)},internals.isSetSimpleEqual=function(e,t){for(const r of e)if(!t.has(r))return!1;return!0},internals.isDeepEqualObj=function(e,t,r,n,i){const{isDeepEqual:a,valueOf:s,hasOwnEnumerableProperty:l}=internals,{keys:o,getOwnPropertySymbols:p}=Object;if(e===internals.arrayType){if(!n.part){if(t.length!==r.length)return!1;for(let e=0;e<t.length;++e)if(!a(t[e],r[e],n,i))return!1;return!0}for(let e=0;e<t.length;++e){const s=t[e];for(let e=0;e<r.length;++e)if(a(s,r[e],n,i))return!0}}else if(e===internals.setType){if(t.size!==r.size)return!1;if(!internals.isSetSimpleEqual(t,r)){const e=new Set(r);for(const r of t){if(e.delete(r))continue;let t=!1;for(const s of e)if(a(r,s,n,i)){e.delete(s),t=!0;break}if(!t)return!1}}}else if(e===internals.mapType){if(t.size!==r.size)return!1;for(const[e,s]of t){if(void 0===s&&!r.has(e))return!1;if(!a(s,r.get(e),n,i))return!1}}else if(e===internals.errorType&&(t.name!==r.name||t.message!==r.message))return!1;const f=s(t),y=s(r);if((t!==f||r!==y)&&!a(f,y,n,i))return!1;const u=o(t);if(!n.part&&u.length!==o(r).length)return!1;for(let e=0;e<u.length;++e){const s=u[e];if(!l(r,s))return!1;if(!a(t[s],r[s],n,i))return!1}if(n.symbols){const e=p(t),s=new Set(p(r));for(let o=0;o<e.length;++o){const p=e[o];if(l(t,p)){if(!l(r,p))return!1;if(!a(t[p],r[p],n,i))return!1}else if(l(r,p))return!1;s.delete(p)}for(const e of s)if(l(r,e))return!1}return!0},internals.SeenEntry=class{constructor(e,t){this.obj=e,this.ref=t}isSame(e,t){return this.obj===e&&this.ref===t}};