/** Deep equality for JSON-like sync payloads (objects, arrays, primitives). */ export default function isEqual(a: unknown, b: unknown): boolean { if (a === b) return true; if (a == null || b == null) return false; if (typeof a !== typeof b) return false; if (typeof a !== "object") return false; if (Array.isArray(a)) { if (!Array.isArray(b) || a.length !== b.length) return false; return a.every((v, i) => isEqual(v, b[i])); } if (Array.isArray(b)) return false; const aObj = a as Record; const bObj = b as Record; const aKeys = Object.keys(aObj); if (aKeys.length !== Object.keys(bObj).length) return false; return aKeys.every((k) => isEqual(aObj[k], bObj[k])); }