UNPKG

gendiff-ewwwgeny

Version:

gendiff for Hexlet

68 lines (60 loc) 6.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lodash = _interopRequireDefault(require("lodash")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const buildDiffTree = (obj1, obj2) => { const keys = _lodash.default.union(_lodash.default.keys(obj1), _lodash.default.keys(obj2)); const buildNodeMethods = [{ check: key => !_lodash.default.has(obj1, key), process: key => ({ type: 'added', key, currentValue: obj2[key] }) }, { check: key => !_lodash.default.has(obj2, key), process: key => ({ type: 'deleted', key, currentValue: obj1[key] }) }, { check: key => _lodash.default.isObject(obj1[key]) && _lodash.default.isObject(obj2[key]), process: key => ({ type: 'nested', key, children: buildDiffTree(obj1[key], obj2[key]) }) }, { check: key => obj1[key] === obj2[key], process: key => ({ type: 'unchanged', key, currentValue: obj1[key] }) }, { state: 'changed', check: key => obj1[key] !== obj2[key], process: key => ({ type: 'changed', key, oldValue: obj1[key], currentValue: obj2[key] }) }]; const getMethod = key => buildNodeMethods.find(({ check }) => check(key)); const diff = keys.map(key => { const currentMethod = getMethod(key); const node = currentMethod.process(key); return node; }); return diff; }; var _default = buildDiffTree; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hc3QuanMiXSwibmFtZXMiOlsiYnVpbGREaWZmVHJlZSIsIm9iajEiLCJvYmoyIiwia2V5cyIsIl8iLCJ1bmlvbiIsImJ1aWxkTm9kZU1ldGhvZHMiLCJjaGVjayIsImtleSIsImhhcyIsInByb2Nlc3MiLCJ0eXBlIiwiY3VycmVudFZhbHVlIiwiaXNPYmplY3QiLCJjaGlsZHJlbiIsInN0YXRlIiwib2xkVmFsdWUiLCJnZXRNZXRob2QiLCJmaW5kIiwiZGlmZiIsIm1hcCIsImN1cnJlbnRNZXRob2QiLCJub2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFFQSxNQUFNQSxhQUFhLEdBQUcsQ0FBQ0MsSUFBRCxFQUFPQyxJQUFQLEtBQWdCO0FBQ3BDLFFBQU1DLElBQUksR0FBR0MsZ0JBQUVDLEtBQUYsQ0FBUUQsZ0JBQUVELElBQUYsQ0FBT0YsSUFBUCxDQUFSLEVBQXNCRyxnQkFBRUQsSUFBRixDQUFPRCxJQUFQLENBQXRCLENBQWI7O0FBRUEsUUFBTUksZ0JBQWdCLEdBQUcsQ0FDdkI7QUFDRUMsSUFBQUEsS0FBSyxFQUFFQyxHQUFHLElBQUksQ0FBQ0osZ0JBQUVLLEdBQUYsQ0FBTVIsSUFBTixFQUFZTyxHQUFaLENBRGpCO0FBRUVFLElBQUFBLE9BQU8sRUFBRUYsR0FBRyxLQUFLO0FBQ2ZHLE1BQUFBLElBQUksRUFBRSxPQURTO0FBRWZILE1BQUFBLEdBRmU7QUFHZkksTUFBQUEsWUFBWSxFQUFFVixJQUFJLENBQUNNLEdBQUQ7QUFISCxLQUFMO0FBRmQsR0FEdUIsRUFTdkI7QUFDRUQsSUFBQUEsS0FBSyxFQUFFQyxHQUFHLElBQUksQ0FBQ0osZ0JBQUVLLEdBQUYsQ0FBTVAsSUFBTixFQUFZTSxHQUFaLENBRGpCO0FBRUVFLElBQUFBLE9BQU8sRUFBRUYsR0FBRyxLQUFLO0FBQ2ZHLE1BQUFBLElBQUksRUFBRSxTQURTO0FBRWZILE1BQUFBLEdBRmU7QUFHZkksTUFBQUEsWUFBWSxFQUFFWCxJQUFJLENBQUNPLEdBQUQ7QUFISCxLQUFMO0FBRmQsR0FUdUIsRUFpQnZCO0FBQ0VELElBQUFBLEtBQUssRUFBRUMsR0FBRyxJQUFJSixnQkFBRVMsUUFBRixDQUFXWixJQUFJLENBQUNPLEdBQUQsQ0FBZixLQUF5QkosZ0JBQUVTLFFBQUYsQ0FBV1gsSUFBSSxDQUFDTSxHQUFELENBQWYsQ0FEekM7QUFFRUUsSUFBQUEsT0FBTyxFQUFFRixHQUFHLEtBQUs7QUFDZkcsTUFBQUEsSUFBSSxFQUFFLFFBRFM7QUFFZkgsTUFBQUEsR0FGZTtBQUdmTSxNQUFBQSxRQUFRLEVBQUVkLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDTyxHQUFELENBQUwsRUFBWU4sSUFBSSxDQUFDTSxHQUFELENBQWhCO0FBSFIsS0FBTDtBQUZkLEdBakJ1QixFQXlCdkI7QUFDRUQsSUFBQUEsS0FBSyxFQUFFQyxHQUFHLElBQUlQLElBQUksQ0FBQ08sR0FBRCxDQUFKLEtBQWNOLElBQUksQ0FBQ00sR0FBRCxDQURsQztBQUVFRSxJQUFBQSxPQUFPLEVBQUVGLEdBQUcsS0FBSztBQUNmRyxNQUFBQSxJQUFJLEVBQUUsV0FEUztBQUVmSCxNQUFBQSxHQUZlO0FBR2ZJLE1BQUFBLFlBQVksRUFBRVgsSUFBSSxDQUFDTyxHQUFEO0FBSEgsS0FBTDtBQUZkLEdBekJ1QixFQWlDdkI7QUFDRU8sSUFBQUEsS0FBSyxFQUFFLFNBRFQ7QUFFRVIsSUFBQUEsS0FBSyxFQUFFQyxHQUFHLElBQUlQLElBQUksQ0FBQ08sR0FBRCxDQUFKLEtBQWNOLElBQUksQ0FBQ00sR0FBRCxDQUZsQztBQUdFRSxJQUFBQSxPQUFPLEVBQUVGLEdBQUcsS0FBSztBQUNmRyxNQUFBQSxJQUFJLEVBQUUsU0FEUztBQUVmSCxNQUFBQSxHQUZlO0FBR2ZRLE1BQUFBLFFBQVEsRUFBRWYsSUFBSSxDQUFDTyxHQUFELENBSEM7QUFJZkksTUFBQUEsWUFBWSxFQUFFVixJQUFJLENBQUNNLEdBQUQ7QUFKSCxLQUFMO0FBSGQsR0FqQ3VCLENBQXpCOztBQTRDQSxRQUFNUyxTQUFTLEdBQUdULEdBQUcsSUFBSUYsZ0JBQWdCLENBQUNZLElBQWpCLENBQXNCLENBQUM7QUFBRVgsSUFBQUE7QUFBRixHQUFELEtBQWVBLEtBQUssQ0FBQ0MsR0FBRCxDQUExQyxDQUF6Qjs7QUFFQSxRQUFNVyxJQUFJLEdBQUdoQixJQUFJLENBQUNpQixHQUFMLENBQVVaLEdBQUQsSUFBUztBQUM3QixVQUFNYSxhQUFhLEdBQUdKLFNBQVMsQ0FBQ1QsR0FBRCxDQUEvQjtBQUNBLFVBQU1jLElBQUksR0FBR0QsYUFBYSxDQUFDWCxPQUFkLENBQXNCRixHQUF0QixDQUFiO0FBQ0EsV0FBT2MsSUFBUDtBQUNELEdBSlksQ0FBYjtBQUtBLFNBQU9ILElBQVA7QUFDRCxDQXZERDs7ZUF5RGVuQixhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgYnVpbGREaWZmVHJlZSA9IChvYmoxLCBvYmoyKSA9PiB7XG4gIGNvbnN0IGtleXMgPSBfLnVuaW9uKF8ua2V5cyhvYmoxKSwgXy5rZXlzKG9iajIpKTtcblxuICBjb25zdCBidWlsZE5vZGVNZXRob2RzID0gW1xuICAgIHtcbiAgICAgIGNoZWNrOiBrZXkgPT4gIV8uaGFzKG9iajEsIGtleSksXG4gICAgICBwcm9jZXNzOiBrZXkgPT4gKHtcbiAgICAgICAgdHlwZTogJ2FkZGVkJyxcbiAgICAgICAga2V5LFxuICAgICAgICBjdXJyZW50VmFsdWU6IG9iajJba2V5XSxcbiAgICAgIH0pLFxuICAgIH0sXG4gICAge1xuICAgICAgY2hlY2s6IGtleSA9PiAhXy5oYXMob2JqMiwga2V5KSxcbiAgICAgIHByb2Nlc3M6IGtleSA9PiAoe1xuICAgICAgICB0eXBlOiAnZGVsZXRlZCcsXG4gICAgICAgIGtleSxcbiAgICAgICAgY3VycmVudFZhbHVlOiBvYmoxW2tleV0sXG4gICAgICB9KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoZWNrOiBrZXkgPT4gXy5pc09iamVjdChvYmoxW2tleV0pICYmIF8uaXNPYmplY3Qob2JqMltrZXldKSxcbiAgICAgIHByb2Nlc3M6IGtleSA9PiAoe1xuICAgICAgICB0eXBlOiAnbmVzdGVkJyxcbiAgICAgICAga2V5LFxuICAgICAgICBjaGlsZHJlbjogYnVpbGREaWZmVHJlZShvYmoxW2tleV0sIG9iajJba2V5XSksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoZWNrOiBrZXkgPT4gb2JqMVtrZXldID09PSBvYmoyW2tleV0sXG4gICAgICBwcm9jZXNzOiBrZXkgPT4gKHtcbiAgICAgICAgdHlwZTogJ3VuY2hhbmdlZCcsXG4gICAgICAgIGtleSxcbiAgICAgICAgY3VycmVudFZhbHVlOiBvYmoxW2tleV0sXG4gICAgICB9KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHN0YXRlOiAnY2hhbmdlZCcsXG4gICAgICBjaGVjazoga2V5ID0+IG9iajFba2V5XSAhPT0gb2JqMltrZXldLFxuICAgICAgcHJvY2Vzczoga2V5ID0+ICh7XG4gICAgICAgIHR5cGU6ICdjaGFuZ2VkJyxcbiAgICAgICAga2V5LFxuICAgICAgICBvbGRWYWx1ZTogb2JqMVtrZXldLFxuICAgICAgICBjdXJyZW50VmFsdWU6IG9iajJba2V5XSxcbiAgICAgIH0pLFxuICAgIH0sXG4gIF07XG4gIGNvbnN0IGdldE1ldGhvZCA9IGtleSA9PiBidWlsZE5vZGVNZXRob2RzLmZpbmQoKHsgY2hlY2sgfSkgPT4gY2hlY2soa2V5KSk7XG5cbiAgY29uc3QgZGlmZiA9IGtleXMubWFwKChrZXkpID0+IHtcbiAgICBjb25zdCBjdXJyZW50TWV0aG9kID0gZ2V0TWV0aG9kKGtleSk7XG4gICAgY29uc3Qgbm9kZSA9IGN1cnJlbnRNZXRob2QucHJvY2VzcyhrZXkpO1xuICAgIHJldHVybiBub2RlO1xuICB9KTtcbiAgcmV0dXJuIGRpZmY7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBidWlsZERpZmZUcmVlO1xuIl19