@resourge/react-fetch
Version:
[](LICENSE)
40 lines (38 loc) • 1.52 kB
JavaScript
/**
* react-fetch v1.43.1
*
* Copyright (c) resourge.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/
function deepCompare(obj1, obj2, keysToCheck = {
keys: new Set()
}) {
if (obj1 === obj2) {
return true;
}
if (obj1 instanceof Date && obj2 instanceof Date) {
return obj1.getTime() === obj2.getTime();
}
if (!obj1 || !obj2 || typeof obj1 !== 'object' || typeof obj2 !== 'object') {
return false;
}
const shouldFilter = keysToCheck.keys.size && !keysToCheck.all;
if (Array.isArray(obj1) && Array.isArray(obj2)) {
if (obj1.length !== obj2.length) {
return false;
}
const filteredObj1 = shouldFilter ? obj1.filter((_, i) => keysToCheck.keys.has(String(i))) : obj1;
const filteredObj2 = shouldFilter ? obj2.filter((_, i) => keysToCheck.keys.has(String(i))) : obj2;
return filteredObj1.length === filteredObj2.length && filteredObj1.every((item, i) => deepCompare(item, filteredObj2[i], keysToCheck.state));
}
const keys1 = shouldFilter ? Object.keys(obj1).filter(key => keysToCheck.keys.has(key)) : Object.keys(obj1);
const keys2 = shouldFilter ? Object.keys(obj2).filter(key => keysToCheck.keys.has(key)) : Object.keys(obj2);
if (keys1.length !== keys2.length) return false;
return keys1.every(key => keys2.includes(key) && deepCompare(obj1[key], obj2[key], keysToCheck.state));
}
export { deepCompare };
//# sourceMappingURL=comparationUtils.js.map