UNPKG

@coreui/vue-pro

Version:

UI Components Library for Vue.js

79 lines (75 loc) 2.49 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); const isEqual = (a, b) => { if (a === b) return true; // Handle cases where either a or b is null or not an object if (a === null || b === null || typeof a !== 'object' || typeof b !== 'object') { // Handle NaN case return a !== a && b !== b; } // Different constructors mean objects are not equal if (a.constructor !== b.constructor) return false; // Handle Arrays if (Array.isArray(a) && Array.isArray(b)) { if (a.length !== b.length) return false; for (const [i, element] of a.entries()) { const element2 = typeof b[i] === 'object' ? { ...b[i] } : b[i]; if (!isEqual(element, element2)) return false; } return true; } // Handle Maps if (a instanceof Map && b instanceof Map) { if (a.size !== b.size) return false; for (const [key, value] of a) { if (!b.has(key) || !isEqual(value, b.get(key))) return false; } return true; } // Handle Sets if (a instanceof Set && b instanceof Set) { if (a.size !== b.size) return false; for (const value of a) { if (!b.has(value)) return false; } return true; } // Handle RegExp if (a instanceof RegExp && b instanceof RegExp) { return a.source === b.source && a.flags === b.flags; } // Handle objects with custom valueOf or toString // eslint-disable-next-line @typescript-eslint/no-explicit-any if (a.valueOf !== Object.prototype.valueOf && a.valueOf() !== b.valueOf()) return false; // eslint-disable-next-line @typescript-eslint/no-explicit-any if (a.toString !== Object.prototype.toString && a.toString() !== b.toString()) return false; // Compare object keys const aKeys = Object.keys(a); const bKeys = Object.keys(b); if (aKeys.length !== bKeys.length) return false; // Ensure all keys in a are present in b for (const key of aKeys) { if (!Object.prototype.hasOwnProperty.call(b, key)) return false; } // Deep compare each property for (const key of aKeys) { if (!isEqual(a[key], b[key])) { return false; } } return true; }; exports.default = isEqual; //# sourceMappingURL=isEqual.js.map