gendiff-pdronenko
Version:
Compares two configuration files and shows a difference.
64 lines (58 loc) • 6.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _lodash = require("lodash");
const typeActionsList = [{
type: 'unchanged',
process: value => ({
value
}),
check: (key, obj1, obj2) => (0, _lodash.has)(obj1, key) && obj1[key] === obj2[key]
}, {
type: 'deleted',
process: value => ({
value
}),
check: (key, obj1, obj2) => (0, _lodash.has)(obj1, key) && !(0, _lodash.has)(obj2, key)
}, {
type: 'added',
process: (value1, value2) => ({
value: value2
}),
check: (key, obj1, obj2) => !(0, _lodash.has)(obj1, key) && (0, _lodash.has)(obj2, key)
}, {
type: 'nested',
process: (value1, value2, f) => ({
children: f(value1, value2)
}),
check: (key, obj1, obj2) => (0, _lodash.isObject)(obj1[key]) && (0, _lodash.isObject)(obj2[key])
}, {
type: 'changed',
process: (value1, value2) => ({
addedValue: value2,
deletedValue: value1
}),
check: (key, obj1, obj2) => (0, _lodash.has)(obj1, key) && obj1[key] !== obj2[key]
}];
const getTypeActions = (key, obj1, obj2) => typeActionsList.find(({
check
}) => check(key, obj1, obj2));
const buildASTdiff = (obj1, obj2) => {
const keys = (0, _lodash.union)(Object.keys(obj1), Object.keys(obj2));
return keys.map(key => {
const {
type,
process
} = getTypeActions(key, obj1, obj2);
return {
type,
key,
...process(obj1[key], obj2[key], buildASTdiff)
};
});
};
var _default = buildASTdiff;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZEFTVGRpZmYuanMiXSwibmFtZXMiOlsidHlwZUFjdGlvbnNMaXN0IiwidHlwZSIsInByb2Nlc3MiLCJ2YWx1ZSIsImNoZWNrIiwia2V5Iiwib2JqMSIsIm9iajIiLCJ2YWx1ZTEiLCJ2YWx1ZTIiLCJmIiwiY2hpbGRyZW4iLCJhZGRlZFZhbHVlIiwiZGVsZXRlZFZhbHVlIiwiZ2V0VHlwZUFjdGlvbnMiLCJmaW5kIiwiYnVpbGRBU1RkaWZmIiwia2V5cyIsIk9iamVjdCIsIm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLGVBQWUsR0FBRyxDQUN0QjtBQUNFQyxFQUFBQSxJQUFJLEVBQUUsV0FEUjtBQUVFQyxFQUFBQSxPQUFPLEVBQUVDLEtBQUssS0FBSztBQUFFQSxJQUFBQTtBQUFGLEdBQUwsQ0FGaEI7QUFHRUMsRUFBQUEsS0FBSyxFQUFFLENBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFZQyxJQUFaLEtBQXFCLGlCQUFJRCxJQUFKLEVBQVVELEdBQVYsS0FBa0JDLElBQUksQ0FBQ0QsR0FBRCxDQUFKLEtBQWNFLElBQUksQ0FBQ0YsR0FBRDtBQUhsRSxDQURzQixFQU10QjtBQUNFSixFQUFBQSxJQUFJLEVBQUUsU0FEUjtBQUVFQyxFQUFBQSxPQUFPLEVBQUVDLEtBQUssS0FBSztBQUFFQSxJQUFBQTtBQUFGLEdBQUwsQ0FGaEI7QUFHRUMsRUFBQUEsS0FBSyxFQUFFLENBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFZQyxJQUFaLEtBQXFCLGlCQUFJRCxJQUFKLEVBQVVELEdBQVYsS0FBa0IsQ0FBQyxpQkFBSUUsSUFBSixFQUFVRixHQUFWO0FBSGpELENBTnNCLEVBV3RCO0FBQ0VKLEVBQUFBLElBQUksRUFBRSxPQURSO0FBRUVDLEVBQUFBLE9BQU8sRUFBRSxDQUFDTSxNQUFELEVBQVNDLE1BQVQsTUFBcUI7QUFBRU4sSUFBQUEsS0FBSyxFQUFFTTtBQUFULEdBQXJCLENBRlg7QUFHRUwsRUFBQUEsS0FBSyxFQUFFLENBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFZQyxJQUFaLEtBQXFCLENBQUMsaUJBQUlELElBQUosRUFBVUQsR0FBVixDQUFELElBQW1CLGlCQUFJRSxJQUFKLEVBQVVGLEdBQVY7QUFIakQsQ0FYc0IsRUFnQnRCO0FBQ0VKLEVBQUFBLElBQUksRUFBRSxRQURSO0FBRUVDLEVBQUFBLE9BQU8sRUFBRSxDQUFDTSxNQUFELEVBQVNDLE1BQVQsRUFBaUJDLENBQWpCLE1BQXdCO0FBQUVDLElBQUFBLFFBQVEsRUFBRUQsQ0FBQyxDQUFDRixNQUFELEVBQVNDLE1BQVQ7QUFBYixHQUF4QixDQUZYO0FBR0VMLEVBQUFBLEtBQUssRUFBRSxDQUFDQyxHQUFELEVBQU1DLElBQU4sRUFBWUMsSUFBWixLQUFxQixzQkFBU0QsSUFBSSxDQUFDRCxHQUFELENBQWIsS0FBdUIsc0JBQVNFLElBQUksQ0FBQ0YsR0FBRCxDQUFiO0FBSHJELENBaEJzQixFQXFCdEI7QUFDRUosRUFBQUEsSUFBSSxFQUFFLFNBRFI7QUFFRUMsRUFBQUEsT0FBTyxFQUFFLENBQUNNLE1BQUQsRUFBU0MsTUFBVCxNQUFxQjtBQUFFRyxJQUFBQSxVQUFVLEVBQUVILE1BQWQ7QUFBc0JJLElBQUFBLFlBQVksRUFBRUw7QUFBcEMsR0FBckIsQ0FGWDtBQUdFSixFQUFBQSxLQUFLLEVBQUUsQ0FBQ0MsR0FBRCxFQUFNQyxJQUFOLEVBQVlDLElBQVosS0FBcUIsaUJBQUlELElBQUosRUFBVUQsR0FBVixLQUFrQkMsSUFBSSxDQUFDRCxHQUFELENBQUosS0FBY0UsSUFBSSxDQUFDRixHQUFEO0FBSGxFLENBckJzQixDQUF4Qjs7QUE0QkEsTUFBTVMsY0FBYyxHQUFHLENBQUNULEdBQUQsRUFBTUMsSUFBTixFQUFZQyxJQUFaLEtBQXFCUCxlQUFlLENBQ3hEZSxJQUR5QyxDQUNwQyxDQUFDO0FBQUVYLEVBQUFBO0FBQUYsQ0FBRCxLQUFlQSxLQUFLLENBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFZQyxJQUFaLENBRGdCLENBQTVDOztBQUdBLE1BQU1TLFlBQVksR0FBRyxDQUFDVixJQUFELEVBQU9DLElBQVAsS0FBZ0I7QUFDbkMsUUFBTVUsSUFBSSxHQUFHLG1CQUFNQyxNQUFNLENBQUNELElBQVAsQ0FBWVgsSUFBWixDQUFOLEVBQXlCWSxNQUFNLENBQUNELElBQVAsQ0FBWVYsSUFBWixDQUF6QixDQUFiO0FBQ0EsU0FBT1UsSUFBSSxDQUFDRSxHQUFMLENBQVVkLEdBQUQsSUFBUztBQUN2QixVQUFNO0FBQUVKLE1BQUFBLElBQUY7QUFBUUMsTUFBQUE7QUFBUixRQUFvQlksY0FBYyxDQUFDVCxHQUFELEVBQU1DLElBQU4sRUFBWUMsSUFBWixDQUF4QztBQUNBLFdBQU87QUFBRU4sTUFBQUEsSUFBRjtBQUFRSSxNQUFBQSxHQUFSO0FBQWEsU0FBR0gsT0FBTyxDQUFDSSxJQUFJLENBQUNELEdBQUQsQ0FBTCxFQUFZRSxJQUFJLENBQUNGLEdBQUQsQ0FBaEIsRUFBdUJXLFlBQXZCO0FBQXZCLEtBQVA7QUFDRCxHQUhNLENBQVA7QUFJRCxDQU5EOztlQVFlQSxZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGFzLCB1bmlvbiwgaXNPYmplY3QgfSBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCB0eXBlQWN0aW9uc0xpc3QgPSBbXG4gIHtcbiAgICB0eXBlOiAndW5jaGFuZ2VkJyxcbiAgICBwcm9jZXNzOiB2YWx1ZSA9PiAoeyB2YWx1ZSB9KSxcbiAgICBjaGVjazogKGtleSwgb2JqMSwgb2JqMikgPT4gaGFzKG9iajEsIGtleSkgJiYgb2JqMVtrZXldID09PSBvYmoyW2tleV0sXG4gIH0sXG4gIHtcbiAgICB0eXBlOiAnZGVsZXRlZCcsXG4gICAgcHJvY2VzczogdmFsdWUgPT4gKHsgdmFsdWUgfSksXG4gICAgY2hlY2s6IChrZXksIG9iajEsIG9iajIpID0+IGhhcyhvYmoxLCBrZXkpICYmICFoYXMob2JqMiwga2V5KSxcbiAgfSxcbiAge1xuICAgIHR5cGU6ICdhZGRlZCcsXG4gICAgcHJvY2VzczogKHZhbHVlMSwgdmFsdWUyKSA9PiAoeyB2YWx1ZTogdmFsdWUyIH0pLFxuICAgIGNoZWNrOiAoa2V5LCBvYmoxLCBvYmoyKSA9PiAhaGFzKG9iajEsIGtleSkgJiYgaGFzKG9iajIsIGtleSksXG4gIH0sXG4gIHtcbiAgICB0eXBlOiAnbmVzdGVkJyxcbiAgICBwcm9jZXNzOiAodmFsdWUxLCB2YWx1ZTIsIGYpID0+ICh7IGNoaWxkcmVuOiBmKHZhbHVlMSwgdmFsdWUyKSB9KSxcbiAgICBjaGVjazogKGtleSwgb2JqMSwgb2JqMikgPT4gaXNPYmplY3Qob2JqMVtrZXldKSAmJiBpc09iamVjdChvYmoyW2tleV0pLFxuICB9LFxuICB7XG4gICAgdHlwZTogJ2NoYW5nZWQnLFxuICAgIHByb2Nlc3M6ICh2YWx1ZTEsIHZhbHVlMikgPT4gKHsgYWRkZWRWYWx1ZTogdmFsdWUyLCBkZWxldGVkVmFsdWU6IHZhbHVlMSB9KSxcbiAgICBjaGVjazogKGtleSwgb2JqMSwgb2JqMikgPT4gaGFzKG9iajEsIGtleSkgJiYgb2JqMVtrZXldICE9PSBvYmoyW2tleV0sXG4gIH0sXG5dO1xuXG5jb25zdCBnZXRUeXBlQWN0aW9ucyA9IChrZXksIG9iajEsIG9iajIpID0+IHR5cGVBY3Rpb25zTGlzdFxuICAuZmluZCgoeyBjaGVjayB9KSA9PiBjaGVjayhrZXksIG9iajEsIG9iajIpKTtcblxuY29uc3QgYnVpbGRBU1RkaWZmID0gKG9iajEsIG9iajIpID0+IHtcbiAgY29uc3Qga2V5cyA9IHVuaW9uKE9iamVjdC5rZXlzKG9iajEpLCBPYmplY3Qua2V5cyhvYmoyKSk7XG4gIHJldHVybiBrZXlzLm1hcCgoa2V5KSA9PiB7XG4gICAgY29uc3QgeyB0eXBlLCBwcm9jZXNzIH0gPSBnZXRUeXBlQWN0aW9ucyhrZXksIG9iajEsIG9iajIpO1xuICAgIHJldHVybiB7IHR5cGUsIGtleSwgLi4ucHJvY2VzcyhvYmoxW2tleV0sIG9iajJba2V5XSwgYnVpbGRBU1RkaWZmKSB9O1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJ1aWxkQVNUZGlmZjtcbiJdfQ==