export function fieldsAreEqual()

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;
  });
}