gen-diff
Version:
utility for searching differences between config files
40 lines (31 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const compare = (obj1, obj2) => {
const keys1 = Object.keys(obj1);
const keys2 = Object.keys(obj2);
const allKeys = _lodash2.default.union(keys1, keys2);
const compareData = allKeys.map(key => {
if (_lodash2.default.isUndefined(obj1[key])) {
return { type: 'added', key, newValue: obj2[key] };
}
if (_lodash2.default.isUndefined(obj2[key])) {
return { type: 'removed', key, oldValue: obj1[key] };
}
if (_lodash2.default.isEqual(obj1[key], obj2[key])) {
return { type: 'unchanged', key, oldValue: obj1[key] };
}
if (_lodash2.default.isObject(obj1[key]) && _lodash2.default.isObject(obj2[key])) {
return { type: 'unchanged', key, children: compare(obj1[key], obj2[key]) };
}
return {
type: 'updated', key, oldValue: obj1[key], newValue: obj2[key]
};
});
return compareData;
};
exports.default = (obj1, obj2) => compare(obj1, obj2);