in packages/shared/src/utils.ts [160:176]
export function fieldsAreEqual<T>(A: T, B: T, fields: (keyof T)[]): boolean {
if (A === B || (isEmptyObject(A) && isEmptyObject(B))) return true;
if (!fields.length || !A || !B) return false;
return fields.every((field) => {
const aField = A[field];
const bField = B[field];
if (typeof aField !== typeof bField) return false;
if (isNonNullObj(aField) && isNonNullObj(bField)) {
if (Object.keys(aField).length !== Object.keys(bField).length) {
return false;
}
return fieldsAreEqual(aField, bField, Object.keys(aField) as never[]);
}
return aField === bField;
});
}