UNPKG

gendiff-irastypain

Version:

Compares two configuration files and shows a difference.

68 lines (57 loc) 6.58 kB
'use strict'; 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=