UNPKG

gendiff-ver2

Version:
76 lines (65 loc) 6.45 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 }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var getDifferenceObjects = function getDifferenceObjects(firstObject, secondObject) { var firstKeys = Object.keys(firstObject); var secondKeys = Object.keys(secondObject); var uniqKeys = _lodash2.default.union(firstKeys, secondKeys); var arrayDiff = uniqKeys.reduce(function (acc, key) { if (key in firstObject && key in secondObject) { if (firstObject[key] instanceof Object || secondObject[key] instanceof Object) { var _result2 = { type: 'children', body: { key: key, oldValue: getDifferenceObjects(firstObject[key], secondObject[key]) } }; return [].concat(_toConsumableArray(acc), [_result2]); } if (firstObject[key] === secondObject[key]) { var _result3 = { type: 'same', body: { key: key, oldValue: firstObject[key] } }; return [].concat(_toConsumableArray(acc), [_result3]); } var _result = { type: 'changed', body: { key: key, newValue: secondObject[key], oldValue: firstObject[key] } }; return [].concat(_toConsumableArray(acc), [_result]); } if (!(key in secondObject)) { var _result4 = { type: 'deleted', body: { key: key, oldValue: firstObject[key] } }; return [].concat(_toConsumableArray(acc), [_result4]); } var result = { type: 'add', body: { key: key, oldValue: secondObject[key] } }; return [].concat(_toConsumableArray(acc), [result]); }, []); return arrayDiff; }; exports.default = getDifferenceObjects; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaWZmZXIuanMiXSwibmFtZXMiOlsiZ2V0RGlmZmVyZW5jZU9iamVjdHMiLCJmaXJzdE9iamVjdCIsInNlY29uZE9iamVjdCIsImZpcnN0S2V5cyIsIk9iamVjdCIsImtleXMiLCJzZWNvbmRLZXlzIiwidW5pcUtleXMiLCJ1bmlvbiIsImFycmF5RGlmZiIsInJlZHVjZSIsImFjYyIsImtleSIsInJlc3VsdCIsInR5cGUiLCJib2R5Iiwib2xkVmFsdWUiLCJuZXdWYWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUEsSUFBTUEsdUJBQXVCLFNBQXZCQSxvQkFBdUIsQ0FBQ0MsV0FBRCxFQUFjQyxZQUFkLEVBQStCO0FBQzFELE1BQU1DLFlBQVlDLE9BQU9DLElBQVAsQ0FBWUosV0FBWixDQUFsQjtBQUNBLE1BQU1LLGFBQWFGLE9BQU9DLElBQVAsQ0FBWUgsWUFBWixDQUFuQjtBQUNBLE1BQU1LLFdBQVcsaUJBQUVDLEtBQUYsQ0FBUUwsU0FBUixFQUFtQkcsVUFBbkIsQ0FBakI7O0FBRUEsTUFBTUcsWUFBWUYsU0FBU0csTUFBVCxDQUFnQixVQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBYztBQUM5QyxRQUFJQSxPQUFPWCxXQUFQLElBQXNCVyxPQUFPVixZQUFqQyxFQUErQztBQUM3QyxVQUFJRCxZQUFZVyxHQUFaLGFBQTRCUixNQUE1QixJQUFzQ0YsYUFBYVUsR0FBYixhQUE2QlIsTUFBdkUsRUFBK0U7QUFDN0UsWUFBTVMsV0FBUyxFQUFFQyxNQUFNLFVBQVI7QUFDYkMsZ0JBQU07QUFDSkgsb0JBREk7QUFFSkksc0JBQVVoQixxQkFBcUJDLFlBQVlXLEdBQVosQ0FBckIsRUFBdUNWLGFBQWFVLEdBQWIsQ0FBdkM7QUFGTjtBQURPLFNBQWY7QUFNQSw0Q0FBV0QsR0FBWCxJQUFnQkUsUUFBaEI7QUFDRDs7QUFFRCxVQUFJWixZQUFZVyxHQUFaLE1BQXFCVixhQUFhVSxHQUFiLENBQXpCLEVBQTRDO0FBQzFDLFlBQU1DLFdBQVMsRUFBRUMsTUFBTSxNQUFSO0FBQ2JDLGdCQUFNO0FBQ0pILG9CQURJO0FBRUpJLHNCQUFVZixZQUFZVyxHQUFaO0FBRk47QUFETyxTQUFmO0FBTUEsNENBQVdELEdBQVgsSUFBZ0JFLFFBQWhCO0FBQ0Q7O0FBRUQsVUFBTUEsVUFBUztBQUNiQyxjQUFNLFNBRE87QUFFYkMsY0FBTTtBQUNKSCxrQkFESTtBQUVKSyxvQkFBVWYsYUFBYVUsR0FBYixDQUZOO0FBR0pJLG9CQUFVZixZQUFZVyxHQUFaO0FBSE47QUFGTyxPQUFmO0FBUUEsMENBQVdELEdBQVgsSUFBZ0JFLE9BQWhCO0FBQ0Q7O0FBRUQsUUFBSSxFQUFFRCxPQUFPVixZQUFULENBQUosRUFBNEI7QUFDMUIsVUFBTVcsV0FBUztBQUNiQyxjQUFNLFNBRE87QUFFYkMsY0FBTTtBQUNKSCxrQkFESTtBQUVKSSxvQkFBVWYsWUFBWVcsR0FBWjtBQUZOO0FBRk8sT0FBZjtBQU9BLDBDQUFXRCxHQUFYLElBQWdCRSxRQUFoQjtBQUNEO0FBQ0QsUUFBTUEsU0FBUztBQUNiQyxZQUFNLEtBRE87QUFFYkMsWUFBTTtBQUNKSCxnQkFESTtBQUVKSSxrQkFBVWQsYUFBYVUsR0FBYjtBQUZOO0FBRk8sS0FBZjtBQU9BLHdDQUFXRCxHQUFYLElBQWdCRSxNQUFoQjtBQUNELEdBbkRpQixFQW1EZixFQW5EZSxDQUFsQjtBQW9EQSxTQUFPSixTQUFQO0FBQ0QsQ0ExREQ7O2tCQTREZVQsb0IiLCJmaWxlIjoiZGlmZmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgZ2V0RGlmZmVyZW5jZU9iamVjdHMgPSAoZmlyc3RPYmplY3QsIHNlY29uZE9iamVjdCkgPT4ge1xuICBjb25zdCBmaXJzdEtleXMgPSBPYmplY3Qua2V5cyhmaXJzdE9iamVjdCk7XG4gIGNvbnN0IHNlY29uZEtleXMgPSBPYmplY3Qua2V5cyhzZWNvbmRPYmplY3QpO1xuICBjb25zdCB1bmlxS2V5cyA9IF8udW5pb24oZmlyc3RLZXlzLCBzZWNvbmRLZXlzKTtcblxuICBjb25zdCBhcnJheURpZmYgPSB1bmlxS2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgaWYgKGtleSBpbiBmaXJzdE9iamVjdCAmJiBrZXkgaW4gc2Vjb25kT2JqZWN0KSB7XG4gICAgICBpZiAoZmlyc3RPYmplY3Rba2V5XSBpbnN0YW5jZW9mIE9iamVjdCB8fCBzZWNvbmRPYmplY3Rba2V5XSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7IHR5cGU6ICdjaGlsZHJlbicsXG4gICAgICAgICAgYm9keToge1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgb2xkVmFsdWU6IGdldERpZmZlcmVuY2VPYmplY3RzKGZpcnN0T2JqZWN0W2tleV0sIHNlY29uZE9iamVjdFtrZXldKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gWy4uLmFjYywgcmVzdWx0XTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0T2JqZWN0W2tleV0gPT09IHNlY29uZE9iamVjdFtrZXldKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHsgdHlwZTogJ3NhbWUnLFxuICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIG9sZFZhbHVlOiBmaXJzdE9iamVjdFtrZXldLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBbLi4uYWNjLCByZXN1bHRdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIHR5cGU6ICdjaGFuZ2VkJyxcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBuZXdWYWx1ZTogc2Vjb25kT2JqZWN0W2tleV0sXG4gICAgICAgICAgb2xkVmFsdWU6IGZpcnN0T2JqZWN0W2tleV0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIFsuLi5hY2MsIHJlc3VsdF07XG4gICAgfVxuXG4gICAgaWYgKCEoa2V5IGluIHNlY29uZE9iamVjdCkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgdHlwZTogJ2RlbGV0ZWQnLFxuICAgICAgICBib2R5OiB7XG4gICAgICAgICAga2V5LFxuICAgICAgICAgIG9sZFZhbHVlOiBmaXJzdE9iamVjdFtrZXldLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBbLi4uYWNjLCByZXN1bHRdO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICB0eXBlOiAnYWRkJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAga2V5LFxuICAgICAgICBvbGRWYWx1ZTogc2Vjb25kT2JqZWN0W2tleV0sXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIFsuLi5hY2MsIHJlc3VsdF07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIGFycmF5RGlmZjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGdldERpZmZlcmVuY2VPYmplY3RzO1xuIl19