enigma-gendiff
Version:
67 lines (61 loc) • 7.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _lodash = require("lodash");
const propertyActions = [{
check: (firstContent, secondContent, key) => !(0, _lodash.has)(firstContent, key),
form: (firstValue, secondValue, name) => ({
type: 'added',
name,
value: secondValue
})
}, {
check: (firstContent, secondContent, key) => !(0, _lodash.has)(secondContent, key),
form: (firstValue, secondValue, name) => ({
type: 'deleted',
name,
value: firstValue
})
}, {
check: (firstContent, secondContent, key) => firstContent[key] === secondContent[key],
form: (firstValue, secondValue, name) => ({
type: 'unchanged',
name,
value: secondValue
})
}, {
check: (firstContent, secondContent, key) => (0, _lodash.isObject)(firstContent[key]) && (0, _lodash.isObject)(secondContent[key]),
form: (firstValue, secondValue, name, func) => ({
type: 'node',
name,
children: func(firstValue, secondValue)
})
}, {
check: (firstContent, secondContent, key) => firstContent[key] !== secondContent[key],
form: (firstValue, secondValue, name) => ({
type: 'updated',
name,
valueBefore: firstValue,
valueAfter: secondValue
})
}];
const getPropertyActions = (arg1, arg2, value) => propertyActions.find(({
check
}) => check(arg1, arg2, value));
const genDifAst = (firstContent, secondContent) => {
const firstKeys = (0, _lodash.keys)(firstContent);
const secondKeys = (0, _lodash.keys)(secondContent);
const commonKeys = (0, _lodash.union)(firstKeys, secondKeys);
const iterAst = commonKeys.map(key => {
const {
form
} = getPropertyActions(firstContent, secondContent, key);
return form(firstContent[key], secondContent[key], key, genDifAst);
});
return iterAst;
};
var _default = genDifAst;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZC1hc3QuanMiXSwibmFtZXMiOlsicHJvcGVydHlBY3Rpb25zIiwiY2hlY2siLCJmaXJzdENvbnRlbnQiLCJzZWNvbmRDb250ZW50Iiwia2V5IiwiZm9ybSIsImZpcnN0VmFsdWUiLCJzZWNvbmRWYWx1ZSIsIm5hbWUiLCJ0eXBlIiwidmFsdWUiLCJmdW5jIiwiY2hpbGRyZW4iLCJ2YWx1ZUJlZm9yZSIsInZhbHVlQWZ0ZXIiLCJnZXRQcm9wZXJ0eUFjdGlvbnMiLCJhcmcxIiwiYXJnMiIsImZpbmQiLCJnZW5EaWZBc3QiLCJmaXJzdEtleXMiLCJzZWNvbmRLZXlzIiwiY29tbW9uS2V5cyIsIml0ZXJBc3QiLCJtYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFJQSxNQUFNQSxlQUFlLEdBQUcsQ0FDdEI7QUFDRUMsRUFBQUEsS0FBSyxFQUFFLENBQUNDLFlBQUQsRUFBZUMsYUFBZixFQUE4QkMsR0FBOUIsS0FBc0MsQ0FBQyxpQkFBSUYsWUFBSixFQUFrQkUsR0FBbEIsQ0FEaEQ7QUFFRUMsRUFBQUEsSUFBSSxFQUFFLENBQUNDLFVBQUQsRUFBYUMsV0FBYixFQUEwQkMsSUFBMUIsTUFBb0M7QUFDeENDLElBQUFBLElBQUksRUFBRSxPQURrQztBQUV4Q0QsSUFBQUEsSUFGd0M7QUFHeENFLElBQUFBLEtBQUssRUFBRUg7QUFIaUMsR0FBcEM7QUFGUixDQURzQixFQVN0QjtBQUNFTixFQUFBQSxLQUFLLEVBQUUsQ0FBQ0MsWUFBRCxFQUFlQyxhQUFmLEVBQThCQyxHQUE5QixLQUFzQyxDQUFDLGlCQUFJRCxhQUFKLEVBQW1CQyxHQUFuQixDQURoRDtBQUVFQyxFQUFBQSxJQUFJLEVBQUUsQ0FBQ0MsVUFBRCxFQUFhQyxXQUFiLEVBQTBCQyxJQUExQixNQUFvQztBQUN4Q0MsSUFBQUEsSUFBSSxFQUFFLFNBRGtDO0FBRXhDRCxJQUFBQSxJQUZ3QztBQUd4Q0UsSUFBQUEsS0FBSyxFQUFFSjtBQUhpQyxHQUFwQztBQUZSLENBVHNCLEVBaUJ0QjtBQUNFTCxFQUFBQSxLQUFLLEVBQUUsQ0FBQ0MsWUFBRCxFQUFlQyxhQUFmLEVBQThCQyxHQUE5QixLQUFzQ0YsWUFBWSxDQUFDRSxHQUFELENBQVosS0FBc0JELGFBQWEsQ0FBQ0MsR0FBRCxDQURsRjtBQUVFQyxFQUFBQSxJQUFJLEVBQUUsQ0FBQ0MsVUFBRCxFQUFhQyxXQUFiLEVBQTBCQyxJQUExQixNQUFvQztBQUN4Q0MsSUFBQUEsSUFBSSxFQUFFLFdBRGtDO0FBRXhDRCxJQUFBQSxJQUZ3QztBQUd4Q0UsSUFBQUEsS0FBSyxFQUFFSDtBQUhpQyxHQUFwQztBQUZSLENBakJzQixFQXlCdEI7QUFDRU4sRUFBQUEsS0FBSyxFQUFFLENBQUNDLFlBQUQsRUFBZUMsYUFBZixFQUE4QkMsR0FBOUIsS0FDTCxzQkFBU0YsWUFBWSxDQUFDRSxHQUFELENBQXJCLEtBQStCLHNCQUFTRCxhQUFhLENBQUNDLEdBQUQsQ0FBdEIsQ0FGbkM7QUFHRUMsRUFBQUEsSUFBSSxFQUFFLENBQUNDLFVBQUQsRUFBYUMsV0FBYixFQUEwQkMsSUFBMUIsRUFBZ0NHLElBQWhDLE1BQTBDO0FBQzlDRixJQUFBQSxJQUFJLEVBQUUsTUFEd0M7QUFFOUNELElBQUFBLElBRjhDO0FBRzlDSSxJQUFBQSxRQUFRLEVBQUVELElBQUksQ0FBQ0wsVUFBRCxFQUFhQyxXQUFiO0FBSGdDLEdBQTFDO0FBSFIsQ0F6QnNCLEVBa0N0QjtBQUNFTixFQUFBQSxLQUFLLEVBQUUsQ0FBQ0MsWUFBRCxFQUFlQyxhQUFmLEVBQThCQyxHQUE5QixLQUFzQ0YsWUFBWSxDQUFDRSxHQUFELENBQVosS0FBc0JELGFBQWEsQ0FBQ0MsR0FBRCxDQURsRjtBQUVFQyxFQUFBQSxJQUFJLEVBQUUsQ0FBQ0MsVUFBRCxFQUFhQyxXQUFiLEVBQTBCQyxJQUExQixNQUFvQztBQUN4Q0MsSUFBQUEsSUFBSSxFQUFFLFNBRGtDO0FBRXhDRCxJQUFBQSxJQUZ3QztBQUd4Q0ssSUFBQUEsV0FBVyxFQUFFUCxVQUgyQjtBQUl4Q1EsSUFBQUEsVUFBVSxFQUFFUDtBQUo0QixHQUFwQztBQUZSLENBbENzQixDQUF4Qjs7QUE4Q0EsTUFBTVEsa0JBQWtCLEdBQUcsQ0FBQ0MsSUFBRCxFQUFPQyxJQUFQLEVBQWFQLEtBQWIsS0FDekJWLGVBQWUsQ0FBQ2tCLElBQWhCLENBQXFCLENBQUM7QUFBRWpCLEVBQUFBO0FBQUYsQ0FBRCxLQUFlQSxLQUFLLENBQUNlLElBQUQsRUFBT0MsSUFBUCxFQUFhUCxLQUFiLENBQXpDLENBREY7O0FBSUEsTUFBTVMsU0FBUyxHQUFHLENBQUNqQixZQUFELEVBQWVDLGFBQWYsS0FBaUM7QUFDakQsUUFBTWlCLFNBQVMsR0FBRyxrQkFBS2xCLFlBQUwsQ0FBbEI7QUFDQSxRQUFNbUIsVUFBVSxHQUFHLGtCQUFLbEIsYUFBTCxDQUFuQjtBQUVBLFFBQU1tQixVQUFVLEdBQUcsbUJBQU1GLFNBQU4sRUFBaUJDLFVBQWpCLENBQW5CO0FBRUEsUUFBTUUsT0FBTyxHQUFHRCxVQUFVLENBQUNFLEdBQVgsQ0FBZ0JwQixHQUFELElBQVM7QUFDdEMsVUFBTTtBQUFFQyxNQUFBQTtBQUFGLFFBQVdVLGtCQUFrQixDQUFDYixZQUFELEVBQWVDLGFBQWYsRUFBOEJDLEdBQTlCLENBQW5DO0FBQ0EsV0FBT0MsSUFBSSxDQUFDSCxZQUFZLENBQUNFLEdBQUQsQ0FBYixFQUFvQkQsYUFBYSxDQUFDQyxHQUFELENBQWpDLEVBQXdDQSxHQUF4QyxFQUE2Q2UsU0FBN0MsQ0FBWDtBQUNELEdBSGUsQ0FBaEI7QUFJQSxTQUFPSSxPQUFQO0FBQ0QsQ0FYRDs7ZUFZZUosUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGhhcywga2V5cywgdW5pb24sIGlzT2JqZWN0LFxufSBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBwcm9wZXJ0eUFjdGlvbnMgPSBbXG4gIHtcbiAgICBjaGVjazogKGZpcnN0Q29udGVudCwgc2Vjb25kQ29udGVudCwga2V5KSA9PiAhaGFzKGZpcnN0Q29udGVudCwga2V5KSxcbiAgICBmb3JtOiAoZmlyc3RWYWx1ZSwgc2Vjb25kVmFsdWUsIG5hbWUpID0+ICh7XG4gICAgICB0eXBlOiAnYWRkZWQnLFxuICAgICAgbmFtZSxcbiAgICAgIHZhbHVlOiBzZWNvbmRWYWx1ZSxcbiAgICB9KSxcbiAgfSxcbiAge1xuICAgIGNoZWNrOiAoZmlyc3RDb250ZW50LCBzZWNvbmRDb250ZW50LCBrZXkpID0+ICFoYXMoc2Vjb25kQ29udGVudCwga2V5KSxcbiAgICBmb3JtOiAoZmlyc3RWYWx1ZSwgc2Vjb25kVmFsdWUsIG5hbWUpID0+ICh7XG4gICAgICB0eXBlOiAnZGVsZXRlZCcsXG4gICAgICBuYW1lLFxuICAgICAgdmFsdWU6IGZpcnN0VmFsdWUsXG4gICAgfSksXG4gIH0sXG4gIHtcbiAgICBjaGVjazogKGZpcnN0Q29udGVudCwgc2Vjb25kQ29udGVudCwga2V5KSA9PiBmaXJzdENvbnRlbnRba2V5XSA9PT0gc2Vjb25kQ29udGVudFtrZXldLFxuICAgIGZvcm06IChmaXJzdFZhbHVlLCBzZWNvbmRWYWx1ZSwgbmFtZSkgPT4gKHtcbiAgICAgIHR5cGU6ICd1bmNoYW5nZWQnLFxuICAgICAgbmFtZSxcbiAgICAgIHZhbHVlOiBzZWNvbmRWYWx1ZSxcbiAgICB9KSxcbiAgfSxcbiAge1xuICAgIGNoZWNrOiAoZmlyc3RDb250ZW50LCBzZWNvbmRDb250ZW50LCBrZXkpID0+IChcbiAgICAgIGlzT2JqZWN0KGZpcnN0Q29udGVudFtrZXldKSAmJiBpc09iamVjdChzZWNvbmRDb250ZW50W2tleV0pKSxcbiAgICBmb3JtOiAoZmlyc3RWYWx1ZSwgc2Vjb25kVmFsdWUsIG5hbWUsIGZ1bmMpID0+ICh7XG4gICAgICB0eXBlOiAnbm9kZScsXG4gICAgICBuYW1lLFxuICAgICAgY2hpbGRyZW46IGZ1bmMoZmlyc3RWYWx1ZSwgc2Vjb25kVmFsdWUpLFxuICAgIH0pLFxuICB9LFxuICB7XG4gICAgY2hlY2s6IChmaXJzdENvbnRlbnQsIHNlY29uZENvbnRlbnQsIGtleSkgPT4gZmlyc3RDb250ZW50W2tleV0gIT09IHNlY29uZENvbnRlbnRba2V5XSxcbiAgICBmb3JtOiAoZmlyc3RWYWx1ZSwgc2Vjb25kVmFsdWUsIG5hbWUpID0+ICh7XG4gICAgICB0eXBlOiAndXBkYXRlZCcsXG4gICAgICBuYW1lLFxuICAgICAgdmFsdWVCZWZvcmU6IGZpcnN0VmFsdWUsXG4gICAgICB2YWx1ZUFmdGVyOiBzZWNvbmRWYWx1ZSxcbiAgICB9KSxcbiAgfSxcblxuXTtcblxuY29uc3QgZ2V0UHJvcGVydHlBY3Rpb25zID0gKGFyZzEsIGFyZzIsIHZhbHVlKSA9PiAoXG4gIHByb3BlcnR5QWN0aW9ucy5maW5kKCh7IGNoZWNrIH0pID0+IGNoZWNrKGFyZzEsIGFyZzIsIHZhbHVlKSlcbik7XG5cbmNvbnN0IGdlbkRpZkFzdCA9IChmaXJzdENvbnRlbnQsIHNlY29uZENvbnRlbnQpID0+IHtcbiAgY29uc3QgZmlyc3RLZXlzID0ga2V5cyhmaXJzdENvbnRlbnQpO1xuICBjb25zdCBzZWNvbmRLZXlzID0ga2V5cyhzZWNvbmRDb250ZW50KTtcblxuICBjb25zdCBjb21tb25LZXlzID0gdW5pb24oZmlyc3RLZXlzLCBzZWNvbmRLZXlzKTtcblxuICBjb25zdCBpdGVyQXN0ID0gY29tbW9uS2V5cy5tYXAoKGtleSkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybSB9ID0gZ2V0UHJvcGVydHlBY3Rpb25zKGZpcnN0Q29udGVudCwgc2Vjb25kQ29udGVudCwga2V5KTtcbiAgICByZXR1cm4gZm9ybShmaXJzdENvbnRlbnRba2V5XSwgc2Vjb25kQ29udGVudFtrZXldLCBrZXksIGdlbkRpZkFzdCk7XG4gIH0pO1xuICByZXR1cm4gaXRlckFzdDtcbn07XG5leHBvcnQgZGVmYXVsdCBnZW5EaWZBc3Q7XG4iXX0=