gendiff-irastypain
Version:
Compares two configuration files and shows a difference.
68 lines (57 loc) • 6.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var formatValue = function formatValue(rawValue, type) {
if (_lodash2.default.isObject(rawValue)) {
return _lodash2.default.keys(rawValue).reduce(function (acc, key) {
var newAcc = _extends({}, acc, _defineProperty({}, key, { type: type, value: rawValue[key] }));
return newAcc;
}, {});
}
return rawValue;
};
var nodeTypes = [{
type: 'nested',
format: function format(node, func) {
return _defineProperty({}, node.key, { type: node.type, value: func(node.value) });
}
}, {
type: 'updated',
format: function format(node) {
return _defineProperty({}, node.key, { type: node.type, from: node.value.old, to: node.value.new });
}
}, {
type: 'added',
format: function format(node) {
return _defineProperty({}, node.key, { type: node.type, value: formatValue(node.value, node.type) });
}
}, {
type: 'deleted',
format: function format(node) {
return _defineProperty({}, node.key, { type: node.type, value: formatValue(node.value, node.type) });
}
}, {
type: 'unchanged',
format: function format(node) {
return _defineProperty({}, node.key, { type: node.type, value: formatValue(node.value, node.type) });
}
}];
var formatAst = function formatAst(ast) {
return ast.reduce(function (acc, node) {
var _$find = _lodash2.default.find(nodeTypes, function (item) {
return item.type === node.type;
}),
format = _$find.format;
return _extends({}, acc, format(node, formatAst));
}, {});
};
exports.default = function (ast) {
return JSON.stringify(formatAst(ast));
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMvanNvbi5qcyJdLCJuYW1lcyI6WyJmb3JtYXRWYWx1ZSIsInJhd1ZhbHVlIiwidHlwZSIsImlzT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImFjYyIsImtleSIsIm5ld0FjYyIsInZhbHVlIiwibm9kZVR5cGVzIiwiZm9ybWF0Iiwibm9kZSIsImZ1bmMiLCJmcm9tIiwib2xkIiwidG8iLCJuZXciLCJmb3JtYXRBc3QiLCJhc3QiLCJmaW5kIiwiaXRlbSIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUEsSUFBTUEsY0FBYyxTQUFkQSxXQUFjLENBQUNDLFFBQUQsRUFBV0MsSUFBWCxFQUFvQjtBQUN0QyxNQUFJLGlCQUFFQyxRQUFGLENBQVdGLFFBQVgsQ0FBSixFQUEwQjtBQUN4QixXQUFPLGlCQUFFRyxJQUFGLENBQU9ILFFBQVAsRUFBaUJJLE1BQWpCLENBQXdCLFVBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFjO0FBQzNDLFVBQU1DLHNCQUFjRixHQUFkLHNCQUFvQkMsR0FBcEIsRUFBMEIsRUFBRUwsVUFBRixFQUFRTyxPQUFPUixTQUFTTSxHQUFULENBQWYsRUFBMUIsRUFBTjtBQUNBLGFBQU9DLE1BQVA7QUFDRCxLQUhNLEVBR0osRUFISSxDQUFQO0FBSUQ7QUFDRCxTQUFPUCxRQUFQO0FBQ0QsQ0FSRDs7QUFVQSxJQUFNUyxZQUFZLENBQ2hCO0FBQ0VSLFFBQU0sUUFEUjtBQUVFUyxVQUFRLGdCQUFDQyxJQUFELEVBQU9DLElBQVA7QUFBQSwrQkFBb0JELEtBQUtMLEdBQXpCLEVBQStCLEVBQUVMLE1BQU1VLEtBQUtWLElBQWIsRUFBbUJPLE9BQU9JLEtBQUtELEtBQUtILEtBQVYsQ0FBMUIsRUFBL0I7QUFBQTtBQUZWLENBRGdCLEVBS2hCO0FBQ0VQLFFBQU0sU0FEUjtBQUVFUyxVQUFRO0FBQUEsK0JBQVlDLEtBQUtMLEdBQWpCLEVBQXVCLEVBQUVMLE1BQU1VLEtBQUtWLElBQWIsRUFBbUJZLE1BQU1GLEtBQUtILEtBQUwsQ0FBV00sR0FBcEMsRUFBeUNDLElBQUlKLEtBQUtILEtBQUwsQ0FBV1EsR0FBeEQsRUFBdkI7QUFBQTtBQUZWLENBTGdCLEVBU2hCO0FBQ0VmLFFBQU0sT0FEUjtBQUVFUyxVQUFRO0FBQUEsK0JBQ0ZDLEtBQUtMLEdBREgsRUFDUyxFQUFFTCxNQUFNVSxLQUFLVixJQUFiLEVBQW1CTyxPQUFPVCxZQUFZWSxLQUFLSCxLQUFqQixFQUF3QkcsS0FBS1YsSUFBN0IsQ0FBMUIsRUFEVDtBQUFBO0FBRlYsQ0FUZ0IsRUFjaEI7QUFDRUEsUUFBTSxTQURSO0FBRUVTLFVBQVE7QUFBQSwrQkFDRkMsS0FBS0wsR0FESCxFQUNTLEVBQUVMLE1BQU1VLEtBQUtWLElBQWIsRUFBbUJPLE9BQU9ULFlBQVlZLEtBQUtILEtBQWpCLEVBQXdCRyxLQUFLVixJQUE3QixDQUExQixFQURUO0FBQUE7QUFGVixDQWRnQixFQW1CaEI7QUFDRUEsUUFBTSxXQURSO0FBRUVTLFVBQVE7QUFBQSwrQkFDRkMsS0FBS0wsR0FESCxFQUNTLEVBQUVMLE1BQU1VLEtBQUtWLElBQWIsRUFBbUJPLE9BQU9ULFlBQVlZLEtBQUtILEtBQWpCLEVBQXdCRyxLQUFLVixJQUE3QixDQUExQixFQURUO0FBQUE7QUFGVixDQW5CZ0IsQ0FBbEI7O0FBMEJBLElBQU1nQixZQUFZLFNBQVpBLFNBQVk7QUFBQSxTQUNoQkMsSUFBSWQsTUFBSixDQUFXLFVBQUNDLEdBQUQsRUFBTU0sSUFBTixFQUFlO0FBQUEsaUJBQ0wsaUJBQUVRLElBQUYsQ0FBT1YsU0FBUCxFQUFrQjtBQUFBLGFBQVFXLEtBQUtuQixJQUFMLEtBQWNVLEtBQUtWLElBQTNCO0FBQUEsS0FBbEIsQ0FESztBQUFBLFFBQ2hCUyxNQURnQixVQUNoQkEsTUFEZ0I7O0FBRXhCLHdCQUFZTCxHQUFaLEVBQW9CSyxPQUFPQyxJQUFQLEVBQWFNLFNBQWIsQ0FBcEI7QUFDRCxHQUhELEVBR0csRUFISCxDQURnQjtBQUFBLENBQWxCOztrQkFPZTtBQUFBLFNBQU9JLEtBQUtDLFNBQUwsQ0FBZUwsVUFBVUMsR0FBVixDQUFmLENBQVA7QUFBQSxDIiwiZmlsZSI6Impzb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBmb3JtYXRWYWx1ZSA9IChyYXdWYWx1ZSwgdHlwZSkgPT4ge1xuICBpZiAoXy5pc09iamVjdChyYXdWYWx1ZSkpIHtcbiAgICByZXR1cm4gXy5rZXlzKHJhd1ZhbHVlKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICBjb25zdCBuZXdBY2MgPSB7IC4uLmFjYywgW2tleV06IHsgdHlwZSwgdmFsdWU6IHJhd1ZhbHVlW2tleV0gfSB9O1xuICAgICAgcmV0dXJuIG5ld0FjYztcbiAgICB9LCB7fSk7XG4gIH1cbiAgcmV0dXJuIHJhd1ZhbHVlO1xufTtcblxuY29uc3Qgbm9kZVR5cGVzID0gW1xuICB7XG4gICAgdHlwZTogJ25lc3RlZCcsXG4gICAgZm9ybWF0OiAobm9kZSwgZnVuYykgPT4gKHsgW25vZGUua2V5XTogeyB0eXBlOiBub2RlLnR5cGUsIHZhbHVlOiBmdW5jKG5vZGUudmFsdWUpIH0gfSksXG4gIH0sXG4gIHtcbiAgICB0eXBlOiAndXBkYXRlZCcsXG4gICAgZm9ybWF0OiBub2RlID0+ICh7IFtub2RlLmtleV06IHsgdHlwZTogbm9kZS50eXBlLCBmcm9tOiBub2RlLnZhbHVlLm9sZCwgdG86IG5vZGUudmFsdWUubmV3IH0gfSksXG4gIH0sXG4gIHtcbiAgICB0eXBlOiAnYWRkZWQnLFxuICAgIGZvcm1hdDogbm9kZSA9PlxuICAgICAgKHsgW25vZGUua2V5XTogeyB0eXBlOiBub2RlLnR5cGUsIHZhbHVlOiBmb3JtYXRWYWx1ZShub2RlLnZhbHVlLCBub2RlLnR5cGUpIH0gfSksXG4gIH0sXG4gIHtcbiAgICB0eXBlOiAnZGVsZXRlZCcsXG4gICAgZm9ybWF0OiBub2RlID0+XG4gICAgICAoeyBbbm9kZS5rZXldOiB7IHR5cGU6IG5vZGUudHlwZSwgdmFsdWU6IGZvcm1hdFZhbHVlKG5vZGUudmFsdWUsIG5vZGUudHlwZSkgfSB9KSxcbiAgfSxcbiAge1xuICAgIHR5cGU6ICd1bmNoYW5nZWQnLFxuICAgIGZvcm1hdDogbm9kZSA9PlxuICAgICAgKHsgW25vZGUua2V5XTogeyB0eXBlOiBub2RlLnR5cGUsIHZhbHVlOiBmb3JtYXRWYWx1ZShub2RlLnZhbHVlLCBub2RlLnR5cGUpIH0gfSksXG4gIH0sXG5dO1xuXG5jb25zdCBmb3JtYXRBc3QgPSBhc3QgPT5cbiAgYXN0LnJlZHVjZSgoYWNjLCBub2RlKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IF8uZmluZChub2RlVHlwZXMsIGl0ZW0gPT4gaXRlbS50eXBlID09PSBub2RlLnR5cGUpO1xuICAgIHJldHVybiB7IC4uLmFjYywgLi4uZm9ybWF0KG5vZGUsIGZvcm1hdEFzdCkgfTtcbiAgfSwge30pO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGFzdCA9PiBKU09OLnN0cmluZ2lmeShmb3JtYXRBc3QoYXN0KSk7XG4iXX0=