@tempots/std
Version:
Std library for TypeScript. Natural complement to the Tempo libraries.
2 lines (1 loc) • 1.23 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=(e,t)=>e===t||e!==e&&t!==t,f=(e,t)=>{if(g(e,t))return!0;if(e==null||t==null)return!1;const l=Array.isArray(e),h=Array.isArray(t);if(l!==h)return!1;if(l){const s=e,n=t,a=s.length;if(a!==n.length)return!1;for(let r=0;r<a;r++)if(!f(s[r],n[r]))return!1;return!0}const u=e instanceof Date,j=t instanceof Date;if(u!==j)return!1;if(u){const s=e,n=t;return+s==+n}const p=e instanceof Set,I=t instanceof Set;if(p!==I)return!1;if(p){const s=e,n=t;if(s.size!==n.size)return!1;const a=s.keys();for(;;){const r=a.next();if(r.done??!1)break;if(!n.has(r.value))return!1}return!0}const y=e instanceof Map,O=t instanceof Map;if(y!==O)return!1;if(y){const s=e,n=t;if(s.size!==n.size)return!1;const r=s.keys();for(;;){const o=r.next();if(o.done??!1)break;if(!f(s.get(o.value),n.get(o.value)))return!1}return!0}const b=typeof e=="object";if(b!==(typeof t=="object"))return!1;if(b){const s=e,n=t,a=Object.keys(s),r=Object.keys(n),o=a.length;if(o!==r.length)return!1;for(let c=0;c<o;c++){const i=a[c];if(!Object.prototype.hasOwnProperty.call(n,i)||!f(s[i],n[i]))return!1}return!0}return!1},d=(e,t)=>e==t;exports.deepEqual=f;exports.looseEqual=d;exports.strictEqual=g;