UNPKG

@etherspot/modular-sdk

Version:

Etherspot Modular SDK - build with ERC-7579 smart accounts modules

63 lines 2.28 kB
import { isBigNumber } from './bignumber-utils.js'; /** * @ignore */ export 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 (isBigNumber(a) && 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