UNPKG

gendiff-irastypain

Version:

Compares two configuration files and shows a difference.

74 lines (61 loc) 6.53 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var getFullName = function getFullName(parents, node) { return [].concat(_toConsumableArray(parents), [node]).map(function (item) { return item.key; }).join('.'); }; var nodeTypes = [{ type: 'nested', format: function format(node, parents, func) { return func(node.value, [].concat(_toConsumableArray(parents), [node])); } }, { type: 'updated', format: function format(node, parents) { var fullName = getFullName(parents, node); return 'Property \'' + fullName + '\' was updated. From \'' + node.value.old + '\' to \'' + node.value.new + '\''; } }, { type: 'added', format: function format(node, parents) { var fullName = getFullName(parents, node); var value = _lodash2.default.isObject(node.value) ? 'complex value' : 'value: ' + node.value; return 'Property \'' + fullName + '\' was added with ' + value; } }, { type: 'deleted', format: function format(node, parents) { var fullName = getFullName(parents, node); return 'Property \'' + fullName + '\' was removed'; } }, { type: 'unchanged', format: function format() { return ''; } }]; var formatLines = function formatLines(lines) { return lines.filter(function (line) { return !_lodash2.default.isEmpty(line); }).join('\n'); }; var formatAst = function formatAst(ast) { var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var lines = ast.map(function (node) { var _$find = _lodash2.default.find(nodeTypes, function (item) { return item.type === node.type; }), format = _$find.format; return format(node, parents, formatAst); }); return formatLines(lines); }; exports.default = formatAst; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMvcGxhaW4uanMiXSwibmFtZXMiOlsiZ2V0RnVsbE5hbWUiLCJwYXJlbnRzIiwibm9kZSIsIm1hcCIsIml0ZW0iLCJrZXkiLCJqb2luIiwibm9kZVR5cGVzIiwidHlwZSIsImZvcm1hdCIsImZ1bmMiLCJ2YWx1ZSIsImZ1bGxOYW1lIiwib2xkIiwibmV3IiwiaXNPYmplY3QiLCJmb3JtYXRMaW5lcyIsImxpbmVzIiwiZmlsdGVyIiwiaXNFbXB0eSIsImxpbmUiLCJmb3JtYXRBc3QiLCJhc3QiLCJmaW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7Ozs7Ozs7QUFFQSxJQUFNQSxjQUFjLFNBQWRBLFdBQWMsQ0FBQ0MsT0FBRCxFQUFVQyxJQUFWO0FBQUEsU0FBbUIsNkJBQUlELE9BQUosSUFBYUMsSUFBYixHQUFtQkMsR0FBbkIsQ0FBdUI7QUFBQSxXQUFRQyxLQUFLQyxHQUFiO0FBQUEsR0FBdkIsRUFBeUNDLElBQXpDLENBQThDLEdBQTlDLENBQW5CO0FBQUEsQ0FBcEI7O0FBRUEsSUFBTUMsWUFBWSxDQUNoQjtBQUNFQyxRQUFNLFFBRFI7QUFFRUMsVUFBUSxnQkFBQ1AsSUFBRCxFQUFPRCxPQUFQLEVBQWdCUyxJQUFoQjtBQUFBLFdBQXlCQSxLQUFLUixLQUFLUyxLQUFWLCtCQUFxQlYsT0FBckIsSUFBOEJDLElBQTlCLEdBQXpCO0FBQUE7QUFGVixDQURnQixFQUtoQjtBQUNFTSxRQUFNLFNBRFI7QUFFRUMsVUFBUSxnQkFBQ1AsSUFBRCxFQUFPRCxPQUFQLEVBQW1CO0FBQ3pCLFFBQU1XLFdBQVdaLFlBQVlDLE9BQVosRUFBcUJDLElBQXJCLENBQWpCO0FBQ0EsMkJBQW9CVSxRQUFwQiwrQkFBb0RWLEtBQUtTLEtBQUwsQ0FBV0UsR0FBL0QsZ0JBQTJFWCxLQUFLUyxLQUFMLENBQVdHLEdBQXRGO0FBQ0Q7QUFMSCxDQUxnQixFQVloQjtBQUNFTixRQUFNLE9BRFI7QUFFRUMsVUFBUSxnQkFBQ1AsSUFBRCxFQUFPRCxPQUFQLEVBQW1CO0FBQ3pCLFFBQU1XLFdBQVdaLFlBQVlDLE9BQVosRUFBcUJDLElBQXJCLENBQWpCO0FBQ0EsUUFBTVMsUUFBUSxpQkFBRUksUUFBRixDQUFXYixLQUFLUyxLQUFoQixJQUF5QixlQUF6QixlQUFxRFQsS0FBS1MsS0FBeEU7QUFDQSwyQkFBb0JDLFFBQXBCLDBCQUFnREQsS0FBaEQ7QUFDRDtBQU5ILENBWmdCLEVBb0JoQjtBQUNFSCxRQUFNLFNBRFI7QUFFRUMsVUFBUSxnQkFBQ1AsSUFBRCxFQUFPRCxPQUFQLEVBQW1CO0FBQ3pCLFFBQU1XLFdBQVdaLFlBQVlDLE9BQVosRUFBcUJDLElBQXJCLENBQWpCO0FBQ0EsMkJBQW9CVSxRQUFwQjtBQUNEO0FBTEgsQ0FwQmdCLEVBMkJoQjtBQUNFSixRQUFNLFdBRFI7QUFFRUMsVUFBUTtBQUFBLFdBQU0sRUFBTjtBQUFBO0FBRlYsQ0EzQmdCLENBQWxCOztBQWlDQSxJQUFNTyxjQUFjLFNBQWRBLFdBQWM7QUFBQSxTQUFTQyxNQUFNQyxNQUFOLENBQWE7QUFBQSxXQUFRLENBQUMsaUJBQUVDLE9BQUYsQ0FBVUMsSUFBVixDQUFUO0FBQUEsR0FBYixFQUF1Q2QsSUFBdkMsQ0FBNEMsSUFBNUMsQ0FBVDtBQUFBLENBQXBCOztBQUVBLElBQU1lLFlBQVksU0FBWkEsU0FBWSxDQUFDQyxHQUFELEVBQXVCO0FBQUEsTUFBakJyQixPQUFpQix1RUFBUCxFQUFPOztBQUN2QyxNQUFNZ0IsUUFBUUssSUFBSW5CLEdBQUosQ0FBUSxVQUFDRCxJQUFELEVBQVU7QUFBQSxpQkFDWCxpQkFBRXFCLElBQUYsQ0FBT2hCLFNBQVAsRUFBa0I7QUFBQSxhQUFRSCxLQUFLSSxJQUFMLEtBQWNOLEtBQUtNLElBQTNCO0FBQUEsS0FBbEIsQ0FEVztBQUFBLFFBQ3RCQyxNQURzQixVQUN0QkEsTUFEc0I7O0FBRTlCLFdBQU9BLE9BQU9QLElBQVAsRUFBYUQsT0FBYixFQUFzQm9CLFNBQXRCLENBQVA7QUFDRCxHQUhhLENBQWQ7O0FBS0EsU0FBT0wsWUFBWUMsS0FBWixDQUFQO0FBQ0QsQ0FQRDs7a0JBU2VJLFMiLCJmaWxlIjoicGxhaW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBnZXRGdWxsTmFtZSA9IChwYXJlbnRzLCBub2RlKSA9PiBbLi4ucGFyZW50cywgbm9kZV0ubWFwKGl0ZW0gPT4gaXRlbS5rZXkpLmpvaW4oJy4nKTtcblxuY29uc3Qgbm9kZVR5cGVzID0gW1xuICB7XG4gICAgdHlwZTogJ25lc3RlZCcsXG4gICAgZm9ybWF0OiAobm9kZSwgcGFyZW50cywgZnVuYykgPT4gZnVuYyhub2RlLnZhbHVlLCBbLi4ucGFyZW50cywgbm9kZV0pLFxuICB9LFxuICB7XG4gICAgdHlwZTogJ3VwZGF0ZWQnLFxuICAgIGZvcm1hdDogKG5vZGUsIHBhcmVudHMpID0+IHtcbiAgICAgIGNvbnN0IGZ1bGxOYW1lID0gZ2V0RnVsbE5hbWUocGFyZW50cywgbm9kZSk7XG4gICAgICByZXR1cm4gYFByb3BlcnR5ICcke2Z1bGxOYW1lfScgd2FzIHVwZGF0ZWQuIEZyb20gJyR7bm9kZS52YWx1ZS5vbGR9JyB0byAnJHtub2RlLnZhbHVlLm5ld30nYDtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdHlwZTogJ2FkZGVkJyxcbiAgICBmb3JtYXQ6IChub2RlLCBwYXJlbnRzKSA9PiB7XG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGdldEZ1bGxOYW1lKHBhcmVudHMsIG5vZGUpO1xuICAgICAgY29uc3QgdmFsdWUgPSBfLmlzT2JqZWN0KG5vZGUudmFsdWUpID8gJ2NvbXBsZXggdmFsdWUnIDogYHZhbHVlOiAke25vZGUudmFsdWV9YDtcbiAgICAgIHJldHVybiBgUHJvcGVydHkgJyR7ZnVsbE5hbWV9JyB3YXMgYWRkZWQgd2l0aCAke3ZhbHVlfWA7XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHR5cGU6ICdkZWxldGVkJyxcbiAgICBmb3JtYXQ6IChub2RlLCBwYXJlbnRzKSA9PiB7XG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGdldEZ1bGxOYW1lKHBhcmVudHMsIG5vZGUpO1xuICAgICAgcmV0dXJuIGBQcm9wZXJ0eSAnJHtmdWxsTmFtZX0nIHdhcyByZW1vdmVkYDtcbiAgICB9LFxuICB9LFxuICB7XG4gICAgdHlwZTogJ3VuY2hhbmdlZCcsXG4gICAgZm9ybWF0OiAoKSA9PiAnJyxcbiAgfSxcbl07XG5cbmNvbnN0IGZvcm1hdExpbmVzID0gbGluZXMgPT4gbGluZXMuZmlsdGVyKGxpbmUgPT4gIV8uaXNFbXB0eShsaW5lKSkuam9pbignXFxuJyk7XG5cbmNvbnN0IGZvcm1hdEFzdCA9IChhc3QsIHBhcmVudHMgPSBbXSkgPT4ge1xuICBjb25zdCBsaW5lcyA9IGFzdC5tYXAoKG5vZGUpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gXy5maW5kKG5vZGVUeXBlcywgaXRlbSA9PiBpdGVtLnR5cGUgPT09IG5vZGUudHlwZSk7XG4gICAgcmV0dXJuIGZvcm1hdChub2RlLCBwYXJlbnRzLCBmb3JtYXRBc3QpO1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0TGluZXMobGluZXMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0QXN0O1xuIl19