UNPKG

immutable-class

Version:

A template for creating immutable classes

83 lines (82 loc) 2.24 kB
export function generalEqual(a, b) { if (a === b) return true; if (a && b) { if (typeof a.toISOString === 'function' && typeof b.toISOString === 'function') { return a.valueOf() === b.valueOf(); } if (Array.isArray(a) && Array.isArray(b)) { return generalArraysEqual(a, b); } if (typeof a.equals === 'function') { return a.equals(b); } } return false; } export function immutableEqual(a, b) { if (a === b) return true; if (!a) return false; return a.equals(b); } export function generalArraysEqual(arrayA, arrayB) { if (arrayA === arrayB) return true; if (!arrayA || !arrayB) return false; const length = arrayA.length; if (length !== arrayB.length) return false; for (let i = 0; i < length; i++) { if (!generalEqual(arrayA[i], arrayB[i])) return false; } return true; } export function immutableArraysEqual(arrayA, arrayB) { if (arrayA === arrayB) return true; if (!arrayA || !arrayB) return false; const length = arrayA.length; if (length !== arrayB.length) return false; for (let i = 0; i < length; i++) { if (!immutableEqual(arrayA[i], arrayB[i])) return false; } return true; } export function generalLookupsEqual(lookupA, lookupB) { if (lookupA === lookupB) return true; if (!lookupA || !lookupB) return false; const keysA = Object.keys(lookupA); const keysB = Object.keys(lookupB); if (keysA.length !== keysB.length) return false; for (const k of keysA) { if (!generalEqual(lookupA[k], lookupB[k])) return false; } return true; } export function immutableLookupsEqual(lookupA, lookupB) { if (lookupA === lookupB) return true; if (!lookupA || !lookupB) return false; const keysA = Object.keys(lookupA); const keysB = Object.keys(lookupB); if (keysA.length !== keysB.length) return false; for (const k of keysA) { if (!immutableEqual(lookupA[k], lookupB[k])) return false; } return true; }