mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-08-28 17:21:05 +00:00
feat: optimisations
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
/** 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<string, unknown>;
|
||||
const bObj = b as Record<string, unknown>;
|
||||
const aKeys = Object.keys(aObj);
|
||||
if (aKeys.length !== Object.keys(bObj).length) return false;
|
||||
return aKeys.every((k) => isEqual(aObj[k], bObj[k]));
|
||||
}
|
||||
Reference in New Issue
Block a user