@maplibre/maplibre-gl-style-spec
Version:
a specification for maplibre styles
25 lines (24 loc) • 737 B
text/typescript
/**
* Deeply compares two object literals.
*
* @private
*/
export function deepEqual(a?: unknown | null, b?: unknown | null): boolean {
if (Array.isArray(a)) {
if (!Array.isArray(b) || a.length !== b.length) return false;
for (let i = 0; i < a.length; i++) {
if (!deepEqual(a[i], b[i])) return false;
}
return true;
}
if (typeof a === 'object' && a !== null && b !== null) {
if (!(typeof b === 'object')) return false;
const keys = Object.keys(a);
if (keys.length !== Object.keys(b).length) return false;
for (const key in a) {
if (!deepEqual(a[key], b[key])) return false;
}
return true;
}
return a === b;
}