Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
37 lines
753 B
Plaintext
37 lines
753 B
Plaintext
function is(x: unknown, y: unknown) {
|
|
if (x === y) {
|
|
return x !== 0 || y !== 0 || 1 / x === 1 / y
|
|
} else {
|
|
return x !== x && y !== y
|
|
}
|
|
}
|
|
|
|
export default function shallowEqual(objA: any, objB: any) {
|
|
if (is(objA, objB)) return true
|
|
|
|
if (
|
|
typeof objA !== 'object' ||
|
|
objA === null ||
|
|
typeof objB !== 'object' ||
|
|
objB === null
|
|
) {
|
|
return false
|
|
}
|
|
|
|
const keysA = Object.keys(objA)
|
|
const keysB = Object.keys(objB)
|
|
|
|
if (keysA.length !== keysB.length) return false
|
|
|
|
for (let i = 0; i < keysA.length; i++) {
|
|
if (
|
|
!Object.prototype.hasOwnProperty.call(objB, keysA[i]) ||
|
|
!is(objA[keysA[i]], objB[keysA[i]])
|
|
) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
return true
|
|
}
|