UNPKG

nmvikings_gendiff

Version:

Compares two configuration files and shows a difference.

75 lines (65 loc) 7.16 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 nodeTypes = [{ check: function check(key, first, second) { return first[key] instanceof Object && second[key] instanceof Object; }, process: function process(key, first, second, f) { return { name: key, type: 'nested', children: f(first[key], second[key]) }; } }, { check: function check(key, first, second) { return first[key] === second[key]; }, process: function process(key, first) { return { name: key, type: 'not updated', value: first[key] }; } }, { check: function check(key, first, second) { return _lodash2.default.has(second, key) && _lodash2.default.has(first, key); }, process: function process(key, first, second) { return { name: key, type: 'updated', value: { old: first[key], new: second[key] } }; } }, { check: function check(key, first, second) { return _lodash2.default.has(second, key) && !_lodash2.default.has(first, key); }, process: function process(key, first, second) { return { name: key, type: 'added', value: second[key] }; } }, { check: function check(key, first, second) { return _lodash2.default.has(first, key) && !_lodash2.default.has(second, key); }, process: function process(key, first) { return { name: key, type: 'removed', value: first[key] }; } }]; var genAst = function genAst(first, second) { var mergedKeys = _lodash2.default.union.apply(_lodash2.default, _toConsumableArray([first, second].map(Object.keys))); return mergedKeys.map(function (key) { var _nodeTypes$find = nodeTypes.find(function (_ref) { var check = _ref.check; return check(key, first, second); }), process = _nodeTypes$find.process; return process(key, first, second, genAst); }); }; exports.default = genAst; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hc3QuanMiXSwibmFtZXMiOlsibm9kZVR5cGVzIiwiY2hlY2siLCJrZXkiLCJmaXJzdCIsInNlY29uZCIsIk9iamVjdCIsInByb2Nlc3MiLCJmIiwibmFtZSIsInR5cGUiLCJjaGlsZHJlbiIsInZhbHVlIiwiXyIsImhhcyIsIm9sZCIsIm5ldyIsImdlbkFzdCIsIm1lcmdlZEtleXMiLCJ1bmlvbiIsIm1hcCIsImtleXMiLCJmaW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7Ozs7Ozs7QUFFQSxJQUFNQSxZQUFZLENBQ2hCO0FBQ0VDLFNBQU8sZUFBQ0MsR0FBRCxFQUFNQyxLQUFOLEVBQWFDLE1BQWI7QUFBQSxXQUF3QkQsTUFBTUQsR0FBTixhQUFzQkcsTUFBdEIsSUFBZ0NELE9BQU9GLEdBQVAsYUFBdUJHLE1BQS9FO0FBQUEsR0FEVDtBQUVFQyxXQUFTLGlCQUFDSixHQUFELEVBQU1DLEtBQU4sRUFBYUMsTUFBYixFQUFxQkcsQ0FBckI7QUFBQSxXQUE0QjtBQUNuQ0MsWUFBTU4sR0FENkI7QUFFbkNPLFlBQU0sUUFGNkI7QUFHbkNDLGdCQUFVSCxFQUFFSixNQUFNRCxHQUFOLENBQUYsRUFBY0UsT0FBT0YsR0FBUCxDQUFkO0FBSHlCLEtBQTVCO0FBQUE7QUFGWCxDQURnQixFQVNoQjtBQUNFRCxTQUFPLGVBQUNDLEdBQUQsRUFBTUMsS0FBTixFQUFhQyxNQUFiO0FBQUEsV0FBd0JELE1BQU1ELEdBQU4sTUFBZUUsT0FBT0YsR0FBUCxDQUF2QztBQUFBLEdBRFQ7QUFFRUksV0FBUyxpQkFBQ0osR0FBRCxFQUFNQyxLQUFOO0FBQUEsV0FBaUIsRUFBRUssTUFBTU4sR0FBUixFQUFhTyxNQUFNLGFBQW5CLEVBQWtDRSxPQUFPUixNQUFNRCxHQUFOLENBQXpDLEVBQWpCO0FBQUE7QUFGWCxDQVRnQixFQWFoQjtBQUNFRCxTQUFPLGVBQUNDLEdBQUQsRUFBTUMsS0FBTixFQUFhQyxNQUFiO0FBQUEsV0FBd0JRLGlCQUFFQyxHQUFGLENBQU1ULE1BQU4sRUFBY0YsR0FBZCxLQUFzQlUsaUJBQUVDLEdBQUYsQ0FBTVYsS0FBTixFQUFhRCxHQUFiLENBQTlDO0FBQUEsR0FEVDtBQUVFSSxXQUFTLGlCQUFDSixHQUFELEVBQU1DLEtBQU4sRUFBYUMsTUFBYjtBQUFBLFdBQXlCO0FBQ2hDSSxZQUFNTixHQUQwQjtBQUVoQ08sWUFBTSxTQUYwQjtBQUdoQ0UsYUFBTyxFQUFFRyxLQUFLWCxNQUFNRCxHQUFOLENBQVAsRUFBbUJhLEtBQUtYLE9BQU9GLEdBQVAsQ0FBeEI7QUFIeUIsS0FBekI7QUFBQTtBQUZYLENBYmdCLEVBcUJoQjtBQUNFRCxTQUFPLGVBQUNDLEdBQUQsRUFBTUMsS0FBTixFQUFhQyxNQUFiO0FBQUEsV0FBd0JRLGlCQUFFQyxHQUFGLENBQU1ULE1BQU4sRUFBY0YsR0FBZCxLQUFzQixDQUFDVSxpQkFBRUMsR0FBRixDQUFNVixLQUFOLEVBQWFELEdBQWIsQ0FBL0M7QUFBQSxHQURUO0FBRUVJLFdBQVMsaUJBQUNKLEdBQUQsRUFBTUMsS0FBTixFQUFhQyxNQUFiO0FBQUEsV0FBeUIsRUFBRUksTUFBTU4sR0FBUixFQUFhTyxNQUFNLE9BQW5CLEVBQTRCRSxPQUFPUCxPQUFPRixHQUFQLENBQW5DLEVBQXpCO0FBQUE7QUFGWCxDQXJCZ0IsRUF5QmhCO0FBQ0VELFNBQU8sZUFBQ0MsR0FBRCxFQUFNQyxLQUFOLEVBQWFDLE1BQWI7QUFBQSxXQUF3QlEsaUJBQUVDLEdBQUYsQ0FBTVYsS0FBTixFQUFhRCxHQUFiLEtBQXFCLENBQUNVLGlCQUFFQyxHQUFGLENBQU1ULE1BQU4sRUFBY0YsR0FBZCxDQUE5QztBQUFBLEdBRFQ7QUFFRUksV0FBUyxpQkFBQ0osR0FBRCxFQUFNQyxLQUFOO0FBQUEsV0FBaUIsRUFBRUssTUFBTU4sR0FBUixFQUFhTyxNQUFNLFNBQW5CLEVBQThCRSxPQUFPUixNQUFNRCxHQUFOLENBQXJDLEVBQWpCO0FBQUE7QUFGWCxDQXpCZ0IsQ0FBbEI7O0FBK0JBLElBQU1jLFNBQVMsU0FBVEEsTUFBUyxDQUFDYixLQUFELEVBQVFDLE1BQVIsRUFBbUI7QUFDaEMsTUFBTWEsYUFBYUwsaUJBQUVNLEtBQUYsNENBQVcsQ0FBQ2YsS0FBRCxFQUFRQyxNQUFSLEVBQWdCZSxHQUFoQixDQUFvQmQsT0FBT2UsSUFBM0IsQ0FBWCxFQUFuQjs7QUFFQSxTQUFPSCxXQUFXRSxHQUFYLENBQWUsVUFBQ2pCLEdBQUQsRUFBUztBQUFBLDBCQUNURixVQUFVcUIsSUFBVixDQUFlO0FBQUEsVUFBR3BCLEtBQUgsUUFBR0EsS0FBSDtBQUFBLGFBQWVBLE1BQU1DLEdBQU4sRUFBV0MsS0FBWCxFQUFrQkMsTUFBbEIsQ0FBZjtBQUFBLEtBQWYsQ0FEUztBQUFBLFFBQ3JCRSxPQURxQixtQkFDckJBLE9BRHFCOztBQUc3QixXQUFPQSxRQUFRSixHQUFSLEVBQWFDLEtBQWIsRUFBb0JDLE1BQXBCLEVBQTRCWSxNQUE1QixDQUFQO0FBQ0QsR0FKTSxDQUFQO0FBS0QsQ0FSRDs7a0JBVWVBLE0iLCJmaWxlIjoiYXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3Qgbm9kZVR5cGVzID0gW1xuICB7XG4gICAgY2hlY2s6IChrZXksIGZpcnN0LCBzZWNvbmQpID0+IGZpcnN0W2tleV0gaW5zdGFuY2VvZiBPYmplY3QgJiYgc2Vjb25kW2tleV0gaW5zdGFuY2VvZiBPYmplY3QsXG4gICAgcHJvY2VzczogKGtleSwgZmlyc3QsIHNlY29uZCwgZikgPT4gKHtcbiAgICAgIG5hbWU6IGtleSxcbiAgICAgIHR5cGU6ICduZXN0ZWQnLFxuICAgICAgY2hpbGRyZW46IGYoZmlyc3Rba2V5XSwgc2Vjb25kW2tleV0pLFxuICAgIH0pLFxuICB9LFxuICB7XG4gICAgY2hlY2s6IChrZXksIGZpcnN0LCBzZWNvbmQpID0+IGZpcnN0W2tleV0gPT09IHNlY29uZFtrZXldLFxuICAgIHByb2Nlc3M6IChrZXksIGZpcnN0KSA9PiAoeyBuYW1lOiBrZXksIHR5cGU6ICdub3QgdXBkYXRlZCcsIHZhbHVlOiBmaXJzdFtrZXldIH0pLFxuICB9LFxuICB7XG4gICAgY2hlY2s6IChrZXksIGZpcnN0LCBzZWNvbmQpID0+IF8uaGFzKHNlY29uZCwga2V5KSAmJiBfLmhhcyhmaXJzdCwga2V5KSxcbiAgICBwcm9jZXNzOiAoa2V5LCBmaXJzdCwgc2Vjb25kKSA9PiAoe1xuICAgICAgbmFtZToga2V5LFxuICAgICAgdHlwZTogJ3VwZGF0ZWQnLFxuICAgICAgdmFsdWU6IHsgb2xkOiBmaXJzdFtrZXldLCBuZXc6IHNlY29uZFtrZXldIH0sXG4gICAgfSksXG4gIH0sXG4gIHtcbiAgICBjaGVjazogKGtleSwgZmlyc3QsIHNlY29uZCkgPT4gXy5oYXMoc2Vjb25kLCBrZXkpICYmICFfLmhhcyhmaXJzdCwga2V5KSxcbiAgICBwcm9jZXNzOiAoa2V5LCBmaXJzdCwgc2Vjb25kKSA9PiAoeyBuYW1lOiBrZXksIHR5cGU6ICdhZGRlZCcsIHZhbHVlOiBzZWNvbmRba2V5XSB9KSxcbiAgfSxcbiAge1xuICAgIGNoZWNrOiAoa2V5LCBmaXJzdCwgc2Vjb25kKSA9PiBfLmhhcyhmaXJzdCwga2V5KSAmJiAhXy5oYXMoc2Vjb25kLCBrZXkpLFxuICAgIHByb2Nlc3M6IChrZXksIGZpcnN0KSA9PiAoeyBuYW1lOiBrZXksIHR5cGU6ICdyZW1vdmVkJywgdmFsdWU6IGZpcnN0W2tleV0gfSksXG4gIH0sXG5dO1xuXG5jb25zdCBnZW5Bc3QgPSAoZmlyc3QsIHNlY29uZCkgPT4ge1xuICBjb25zdCBtZXJnZWRLZXlzID0gXy51bmlvbiguLi5bZmlyc3QsIHNlY29uZF0ubWFwKE9iamVjdC5rZXlzKSk7XG5cbiAgcmV0dXJuIG1lcmdlZEtleXMubWFwKChrZXkpID0+IHtcbiAgICBjb25zdCB7IHByb2Nlc3MgfSA9IG5vZGVUeXBlcy5maW5kKCh7IGNoZWNrIH0pID0+IGNoZWNrKGtleSwgZmlyc3QsIHNlY29uZCkpO1xuXG4gICAgcmV0dXJuIHByb2Nlc3Moa2V5LCBmaXJzdCwgc2Vjb25kLCBnZW5Bc3QpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGdlbkFzdDtcbiJdfQ==