Files
MapLibreParticleLab/metrics/integration/lib/json-diff.js
2023-03-25 14:46:49 +01:00

38 lines
886 B
JavaScript

import diff from 'diff';
export function generateDiffLog(expected, actual) {
return diff.diffJson(expected, actual).map((hunk) => {
if (hunk.added) {
return `+ ${hunk.value}`;
} else if (hunk.removed) {
return `- ${hunk.value}`;
} else {
return ` ${hunk.value}`;
}
}).join('');
}
export function deepEqual(a, b) {
if (typeof a !== typeof b)
return false;
if (typeof a === 'number')
return Math.abs(a - b) < 1e-10;
if (a === null || typeof a !== 'object')
return a === b;
const ka = Object.keys(a);
const kb = Object.keys(b);
if (ka.length !== kb.length)
return false;
ka.sort();
kb.sort();
for (let i = 0; i < ka.length; i++)
if (ka[i] !== kb[i] || !deepEqual(a[ka[i]], b[ka[i]]))
return false;
return true;
}