fleet/frontend/utilities/deep_difference/index.js
Gabe Hernandez efb35b537a
add prettier and have it format all fleet application code (#625)
* add prettier and have it format all js code except website:
:

* trying running prettier check in CI

* fix runs on in CI

* change CI job name

* fix prettier erros and fix CI
2021-04-12 14:32:25 +01:00

31 lines
756 B
JavaScript

import { differenceWith, isArray, isEqual, isObject, map } from "lodash";
const deepDifference = (obj1, obj2) => {
const result = {};
map(obj1, (value, key) => {
const obj2Value = obj2[key];
if (isEqual(value, obj2Value)) return;
if (isArray(value) && isArray(obj2Value)) {
if (!value.length && obj2Value.length) {
result[key] = value;
} else {
const arrayDiff = differenceWith(value, obj2Value, isEqual);
if (arrayDiff.length) {
result[key] = arrayDiff;
}
}
} else if (isObject(value) && isObject(obj2Value)) {
result[key] = deepDifference(value, obj2Value);
} else {
result[key] = value;
}
});
return result;
};
export default deepDifference;