@tanstack/db
Version:
A reactive client store for building super fast apps on sync
43 lines (42 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
function deepEquals(a, b) {
return deepEqualsInternal(a, b, /* @__PURE__ */ new Map());
}
function deepEqualsInternal(a, b, visited) {
if (a === b) return true;
if (a == null || b == null) return false;
if (typeof a !== typeof b) return false;
if (Array.isArray(a)) {
if (!Array.isArray(b) || a.length !== b.length) return false;
if (visited.has(a)) {
return visited.get(a) === b;
}
visited.set(a, b);
const result = a.every(
(item, index) => deepEqualsInternal(item, b[index], visited)
);
visited.delete(a);
return result;
}
if (typeof a === `object`) {
if (visited.has(a)) {
return visited.get(a) === b;
}
visited.set(a, b);
const keysA = Object.keys(a);
const keysB = Object.keys(b);
if (keysA.length !== keysB.length) {
visited.delete(a);
return false;
}
const result = keysA.every(
(key) => key in b && deepEqualsInternal(a[key], b[key], visited)
);
visited.delete(a);
return result;
}
return false;
}
exports.deepEquals = deepEquals;
//# sourceMappingURL=utils.cjs.map