UNPKG

artyoms-gendiff

Version:
60 lines (48 loc) 6.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lodash = _interopRequireDefault(require("lodash")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const makeTab = times => ' '.repeat(times); const stringify = (value, depth) => { if (!_lodash.default.isObject(value)) { return value; } const lines = _lodash.default.keys(value).map(key => `${makeTab(depth + 2)} ${key}: ${value[key]}`); return `{\n${lines.join('\n')}\n${makeTab(depth + 1)}}`; }; const methods = { unchanged: (depth, { property, currentValue: value }) => `${makeTab(depth)} ${property}: ${stringify(value, depth)}`, added: (depth, { property, currentValue: value }) => `${makeTab(depth)}+ ${property}: ${stringify(value, depth)}`, deleted: (depth, { property, currentValue: value }) => `${makeTab(depth)}- ${property}: ${stringify(value, depth)}`, updated: (depth, { property, currentValue, previousValue }) => [`${makeTab(depth)}- ${property}: ${stringify(previousValue, depth)}`, `${makeTab(depth)}+ ${property}: ${stringify(currentValue, depth)}`], nested: (depth, { property, children }, process) => `${makeTab(depth)} ${property}: {\n${process(children, depth + 2)}\n${makeTab(depth + 1)}}` }; const toString = (process, depth, node) => methods[node.type](depth, node, process); var _default = ast => { const genOutput = (arr, depth) => { const lines = arr.map(node => toString(genOutput, depth, node)); return `${_lodash.default.flattenDeep(lines).join('\n')}`; }; return `{\n${genOutput(ast, 1)}\n}`; }; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMvcmVuZGVyQ2FzY2FkZS5qcyJdLCJuYW1lcyI6WyJtYWtlVGFiIiwidGltZXMiLCJyZXBlYXQiLCJzdHJpbmdpZnkiLCJ2YWx1ZSIsImRlcHRoIiwiXyIsImlzT2JqZWN0IiwibGluZXMiLCJrZXlzIiwibWFwIiwia2V5Iiwiam9pbiIsIm1ldGhvZHMiLCJ1bmNoYW5nZWQiLCJwcm9wZXJ0eSIsImN1cnJlbnRWYWx1ZSIsImFkZGVkIiwiZGVsZXRlZCIsInVwZGF0ZWQiLCJwcmV2aW91c1ZhbHVlIiwibmVzdGVkIiwiY2hpbGRyZW4iLCJwcm9jZXNzIiwidG9TdHJpbmciLCJub2RlIiwidHlwZSIsImFzdCIsImdlbk91dHB1dCIsImFyciIsImZsYXR0ZW5EZWVwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFFQSxNQUFNQSxPQUFPLEdBQUdDLEtBQUssSUFBSSxLQUFLQyxNQUFMLENBQVlELEtBQVosQ0FBekI7O0FBRUEsTUFBTUUsU0FBUyxHQUFHLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNsQyxNQUFJLENBQUNDLGdCQUFFQyxRQUFGLENBQVdILEtBQVgsQ0FBTCxFQUF3QjtBQUN0QixXQUFPQSxLQUFQO0FBQ0Q7O0FBRUQsUUFBTUksS0FBSyxHQUFHRixnQkFBRUcsSUFBRixDQUFPTCxLQUFQLEVBQWNNLEdBQWQsQ0FBa0JDLEdBQUcsSUFBSyxHQUFFWCxPQUFPLENBQUNLLEtBQUssR0FBRyxDQUFULENBQVksS0FBSU0sR0FBSSxLQUFJUCxLQUFLLENBQUNPLEdBQUQsQ0FBTSxFQUF0RSxDQUFkOztBQUNBLFNBQVEsTUFBS0gsS0FBSyxDQUFDSSxJQUFOLENBQVcsSUFBWCxDQUFpQixLQUFJWixPQUFPLENBQUNLLEtBQUssR0FBRyxDQUFULENBQVksR0FBckQ7QUFDRCxDQVBEOztBQVNBLE1BQU1RLE9BQU8sR0FBRztBQUNkQyxFQUFBQSxTQUFTLEVBQUUsQ0FBQ1QsS0FBRCxFQUFRO0FBQUVVLElBQUFBLFFBQUY7QUFBWUMsSUFBQUEsWUFBWSxFQUFFWjtBQUExQixHQUFSLEtBQStDLEdBQUVKLE9BQU8sQ0FBQ0ssS0FBRCxDQUFRLEtBQUlVLFFBQVMsS0FBSVosU0FBUyxDQUFDQyxLQUFELEVBQVFDLEtBQVIsQ0FBZSxFQUR0RztBQUVkWSxFQUFBQSxLQUFLLEVBQUUsQ0FBQ1osS0FBRCxFQUFRO0FBQUVVLElBQUFBLFFBQUY7QUFBWUMsSUFBQUEsWUFBWSxFQUFFWjtBQUExQixHQUFSLEtBQStDLEdBQUVKLE9BQU8sQ0FBQ0ssS0FBRCxDQUFRLEtBQUlVLFFBQVMsS0FBSVosU0FBUyxDQUFDQyxLQUFELEVBQVFDLEtBQVIsQ0FBZSxFQUZsRztBQUdkYSxFQUFBQSxPQUFPLEVBQUUsQ0FBQ2IsS0FBRCxFQUFRO0FBQUVVLElBQUFBLFFBQUY7QUFBWUMsSUFBQUEsWUFBWSxFQUFFWjtBQUExQixHQUFSLEtBQStDLEdBQUVKLE9BQU8sQ0FBQ0ssS0FBRCxDQUFRLEtBQUlVLFFBQVMsS0FBSVosU0FBUyxDQUFDQyxLQUFELEVBQVFDLEtBQVIsQ0FBZSxFQUhwRztBQUlkYyxFQUFBQSxPQUFPLEVBQUUsQ0FBQ2QsS0FBRCxFQUFRO0FBQUVVLElBQUFBLFFBQUY7QUFBWUMsSUFBQUEsWUFBWjtBQUEwQkksSUFBQUE7QUFBMUIsR0FBUixLQUFzRCxDQUFFLEdBQUVwQixPQUFPLENBQUNLLEtBQUQsQ0FBUSxLQUFJVSxRQUFTLEtBQUlaLFNBQVMsQ0FBQ2lCLGFBQUQsRUFBZ0JmLEtBQWhCLENBQXVCLEVBQXBFLEVBQXdFLEdBQUVMLE9BQU8sQ0FBQ0ssS0FBRCxDQUFRLEtBQUlVLFFBQVMsS0FBSVosU0FBUyxDQUFDYSxZQUFELEVBQWVYLEtBQWYsQ0FBc0IsRUFBekksQ0FKakQ7QUFLZGdCLEVBQUFBLE1BQU0sRUFBRSxDQUFDaEIsS0FBRCxFQUFRO0FBQUVVLElBQUFBLFFBQUY7QUFBWU8sSUFBQUE7QUFBWixHQUFSLEVBQWdDQyxPQUFoQyxLQUE2QyxHQUFFdkIsT0FBTyxDQUFDSyxLQUFELENBQVEsS0FBSVUsUUFBUyxRQUFPUSxPQUFPLENBQUNELFFBQUQsRUFBV2pCLEtBQUssR0FBRyxDQUFuQixDQUFzQixLQUFJTCxPQUFPLENBQUNLLEtBQUssR0FBRyxDQUFULENBQVk7QUFMaEksQ0FBaEI7O0FBUUEsTUFBTW1CLFFBQVEsR0FBRyxDQUFDRCxPQUFELEVBQVVsQixLQUFWLEVBQWlCb0IsSUFBakIsS0FBMEJaLE9BQU8sQ0FBQ1ksSUFBSSxDQUFDQyxJQUFOLENBQVAsQ0FBbUJyQixLQUFuQixFQUEwQm9CLElBQTFCLEVBQWdDRixPQUFoQyxDQUEzQzs7ZUFFZ0JJLEdBQUQsSUFBUztBQUN0QixRQUFNQyxTQUFTLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNeEIsS0FBTixLQUFnQjtBQUNoQyxVQUFNRyxLQUFLLEdBQUdxQixHQUFHLENBQUNuQixHQUFKLENBQVFlLElBQUksSUFBSUQsUUFBUSxDQUFDSSxTQUFELEVBQVl2QixLQUFaLEVBQW1Cb0IsSUFBbkIsQ0FBeEIsQ0FBZDtBQUVBLFdBQVEsR0FBRW5CLGdCQUFFd0IsV0FBRixDQUFjdEIsS0FBZCxFQUFxQkksSUFBckIsQ0FBMEIsSUFBMUIsQ0FBZ0MsRUFBMUM7QUFDRCxHQUpEOztBQU1BLFNBQVEsTUFBS2dCLFNBQVMsQ0FBQ0QsR0FBRCxFQUFNLENBQU4sQ0FBUyxLQUEvQjtBQUNELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBtYWtlVGFiID0gdGltZXMgPT4gJyAgJy5yZXBlYXQodGltZXMpO1xuXG5jb25zdCBzdHJpbmdpZnkgPSAodmFsdWUsIGRlcHRoKSA9PiB7XG4gIGlmICghXy5pc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBjb25zdCBsaW5lcyA9IF8ua2V5cyh2YWx1ZSkubWFwKGtleSA9PiBgJHttYWtlVGFiKGRlcHRoICsgMil9ICAke2tleX06ICR7dmFsdWVba2V5XX1gKTtcbiAgcmV0dXJuIGB7XFxuJHtsaW5lcy5qb2luKCdcXG4nKX1cXG4ke21ha2VUYWIoZGVwdGggKyAxKX19YDtcbn07XG5cbmNvbnN0IG1ldGhvZHMgPSB7XG4gIHVuY2hhbmdlZDogKGRlcHRoLCB7IHByb3BlcnR5LCBjdXJyZW50VmFsdWU6IHZhbHVlIH0pID0+IGAke21ha2VUYWIoZGVwdGgpfSAgJHtwcm9wZXJ0eX06ICR7c3RyaW5naWZ5KHZhbHVlLCBkZXB0aCl9YCxcbiAgYWRkZWQ6IChkZXB0aCwgeyBwcm9wZXJ0eSwgY3VycmVudFZhbHVlOiB2YWx1ZSB9KSA9PiBgJHttYWtlVGFiKGRlcHRoKX0rICR7cHJvcGVydHl9OiAke3N0cmluZ2lmeSh2YWx1ZSwgZGVwdGgpfWAsXG4gIGRlbGV0ZWQ6IChkZXB0aCwgeyBwcm9wZXJ0eSwgY3VycmVudFZhbHVlOiB2YWx1ZSB9KSA9PiBgJHttYWtlVGFiKGRlcHRoKX0tICR7cHJvcGVydHl9OiAke3N0cmluZ2lmeSh2YWx1ZSwgZGVwdGgpfWAsXG4gIHVwZGF0ZWQ6IChkZXB0aCwgeyBwcm9wZXJ0eSwgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlIH0pID0+IFtgJHttYWtlVGFiKGRlcHRoKX0tICR7cHJvcGVydHl9OiAke3N0cmluZ2lmeShwcmV2aW91c1ZhbHVlLCBkZXB0aCl9YCwgYCR7bWFrZVRhYihkZXB0aCl9KyAke3Byb3BlcnR5fTogJHtzdHJpbmdpZnkoY3VycmVudFZhbHVlLCBkZXB0aCl9YF0sXG4gIG5lc3RlZDogKGRlcHRoLCB7IHByb3BlcnR5LCBjaGlsZHJlbiB9LCBwcm9jZXNzKSA9PiBgJHttYWtlVGFiKGRlcHRoKX0gICR7cHJvcGVydHl9OiB7XFxuJHtwcm9jZXNzKGNoaWxkcmVuLCBkZXB0aCArIDIpfVxcbiR7bWFrZVRhYihkZXB0aCArIDEpfX1gLFxufTtcblxuY29uc3QgdG9TdHJpbmcgPSAocHJvY2VzcywgZGVwdGgsIG5vZGUpID0+IG1ldGhvZHNbbm9kZS50eXBlXShkZXB0aCwgbm9kZSwgcHJvY2Vzcyk7XG5cbmV4cG9ydCBkZWZhdWx0IChhc3QpID0+IHtcbiAgY29uc3QgZ2VuT3V0cHV0ID0gKGFyciwgZGVwdGgpID0+IHtcbiAgICBjb25zdCBsaW5lcyA9IGFyci5tYXAobm9kZSA9PiB0b1N0cmluZyhnZW5PdXRwdXQsIGRlcHRoLCBub2RlKSk7XG5cbiAgICByZXR1cm4gYCR7Xy5mbGF0dGVuRGVlcChsaW5lcykuam9pbignXFxuJyl9YDtcbiAgfTtcblxuICByZXR1cm4gYHtcXG4ke2dlbk91dHB1dChhc3QsIDEpfVxcbn1gO1xufTtcbiJdfQ==