dequal-swr

Created Diff never expires
17 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
29 lines
25 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
36 lines
var has = Object.prototype.hasOwnProperty;
/**
* deep equal lite version from dequal
* https://github.com/lukeed/dequal/blob/master/license
*/


export function dequal(foo, bar) {
const has = Object.prototype.hasOwnProperty
var ctor, len;
if (foo === bar) return true;


if (foo && bar && (ctor=foo.constructor) === bar.constructor) {
export default function deepEqual(foo: any, bar: any) {
if (ctor === Date) return foo.getTime() === bar.getTime();
let ctor, len
if (ctor === RegExp) return foo.toString() === bar.toString();
if (foo === bar) return true

if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
if (ctor === Date) return foo.getTime() === bar.getTime()
if (ctor === RegExp) return foo.toString() === bar.toString()


if (ctor === Array) {
if (ctor === Array) {
if ((len=foo.length) === bar.length) {
if ((len = foo.length) === bar.length) {
while (len-- && dequal(foo[len], bar[len]));
while (len && deepEqual(foo[len], bar[len])) {
len--
}
}
}
return len === -1;
return len === -1
}
}


if (!ctor || typeof foo === 'object') {
if (!ctor || typeof foo === 'object') {
len = 0;
len = 0
for (ctor in foo) {
for (ctor in foo) {
if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false
if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor])) return false
}
}
return Object.keys(bar).length === len;
return Object.keys(bar).length === len
}
}
}
}


return foo !== foo && bar !== bar;
return foo !== foo && bar !== bar
}
}