UNPKG

gen-diff

Version:

utility for searching differences between config files

40 lines (31 loc) 1.18 kB
'use strict'; 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);