@etherspot/modular-sdk
Version:
Etherspot Modular SDK - build with ERC-7579 smart accounts modules
63 lines • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deepCompare = deepCompare;
const bignumber_utils_js_1 = require("./bignumber-utils.js");
function deepCompare(a, b) {
let result = false;
const aType = typeof a;
if (aType === typeof b) {
switch (aType) {
case 'object':
if (a === null || b === null) {
result = a === b;
}
else if (a === b) {
result = true;
}
else if ((0, bignumber_utils_js_1.isBigNumber)(a) && (0, bignumber_utils_js_1.isBigNumber)(b)) {
result = a.eq(b);
}
else if (a instanceof Date && b instanceof Date) {
result = a.getTime() === b.getTime();
}
else {
const aIsArray = Array.isArray(a);
const bIsArray = Array.isArray(b);
if (aIsArray && bIsArray) {
const aLength = a.length;
const bLength = b.length;
if (aLength === bLength) {
result = true;
for (let index = 0; index < aLength; index += 1) {
if (!deepCompare(a[index], b[index])) {
result = false;
break;
}
}
}
}
else if (!aIsArray && !bIsArray) {
const aKeys = Object.keys(a);
const bKeys = Object.keys(b);
if (aKeys.length === bKeys.length) {
result = true;
for (const key of aKeys) {
if (!deepCompare(a[key], b[key])) {
result = false;
break;
}
}
}
}
}
break;
case 'function':
result = true;
break;
default:
result = a === b;
}
}
return result;
}
//# sourceMappingURL=deep-compare.js.map