UNPKG

@etherspot/prime-sdk

Version:

Etherspot Prime (Account Abstraction) SDK

64 lines (63 loc) 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepCompare = void 0; const is_big_number_1 = require("./is-big-number"); 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, is_big_number_1.isBigNumber)(a) && (0, is_big_number_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; } exports.deepCompare = deepCompare;