enigma-gendiff
Version:
52 lines (40 loc) • 6.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _lodash = require("lodash");
const rebuildValue = value => (0, _lodash.isArray)(value) ? `[${value.join(', ')}]` : value;
const skip = depth => ` ${' '.repeat(depth)}`;
const rootNodeDepth = 0;
const levelDepth = 1;
const stringify = (value, depth) => {
if (!(0, _lodash.isPlainObject)(value)) {
return rebuildValue(value);
}
return `{\n${(0, _lodash.keys)(value).map(el => `${skip(depth + levelDepth)} ${el}: ${(0, _lodash.isPlainObject)(value[el]) ? stringify(value[el], depth + levelDepth) : rebuildValue(value[el])}`).join('\n')}\n${skip(depth)} }`;
};
const getLine = ({
type,
name,
value,
valueBefore,
valueAfter,
children
}, func, depth) => {
const linesSelection = {
added: () => `+ ${name}: ${stringify(value, depth)}`,
deleted: () => `- ${name}: ${stringify(value, depth)}`,
updated: () => [`+ ${name}: ${stringify(valueAfter, depth)}`, `- ${name}: ${stringify(valueBefore, depth)}`],
node: () => ` ${name}: {\n${func(children, depth + levelDepth)}\n${skip(depth)} }`,
unchanged: () => ` ${name}: ${stringify(value, depth)}`
};
return linesSelection[type]();
};
const render = (difData, nodeDepth = rootNodeDepth) => {
var _ref, _ref2, _ref3, _difData;
return _ref = (_ref2 = (_ref3 = (_difData = difData, _difData.map(el => getLine(el, render, nodeDepth))), (0, _lodash.flattenDeep)(_ref3)), _ref2.map(el => `${skip(nodeDepth)}${el}`)), _ref.join('\n');
};
var _default = astData => `{\n${render(astData)}\n}`;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mb3JtYXR0ZXJzL2RpZmYtZm9ybWF0LmpzIl0sIm5hbWVzIjpbInJlYnVpbGRWYWx1ZSIsInZhbHVlIiwiam9pbiIsInNraXAiLCJkZXB0aCIsInJlcGVhdCIsInJvb3ROb2RlRGVwdGgiLCJsZXZlbERlcHRoIiwic3RyaW5naWZ5IiwibWFwIiwiZWwiLCJnZXRMaW5lIiwidHlwZSIsIm5hbWUiLCJ2YWx1ZUJlZm9yZSIsInZhbHVlQWZ0ZXIiLCJjaGlsZHJlbiIsImZ1bmMiLCJsaW5lc1NlbGVjdGlvbiIsImFkZGVkIiwiZGVsZXRlZCIsInVwZGF0ZWQiLCJub2RlIiwidW5jaGFuZ2VkIiwicmVuZGVyIiwiZGlmRGF0YSIsIm5vZGVEZXB0aCIsIl8iLCJmbGF0dGVuRGVlcCIsImFzdERhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFJQSxNQUFNQSxZQUFZLEdBQUdDLEtBQUssSUFBSyxxQkFBUUEsS0FBUixJQUFrQixJQUFHQSxLQUFLLENBQUNDLElBQU4sQ0FBVyxJQUFYLENBQWlCLEdBQXRDLEdBQTJDRCxLQUExRTs7QUFDQSxNQUFNRSxJQUFJLEdBQUdDLEtBQUssSUFBSyxLQUFJLE9BQU9DLE1BQVAsQ0FBY0QsS0FBZCxDQUFxQixFQUFoRDs7QUFDQSxNQUFNRSxhQUFhLEdBQUcsQ0FBdEI7QUFDQSxNQUFNQyxVQUFVLEdBQUcsQ0FBbkI7O0FBRUEsTUFBTUMsU0FBUyxHQUFHLENBQUNQLEtBQUQsRUFBUUcsS0FBUixLQUFrQjtBQUNsQyxNQUFJLENBQUMsMkJBQWNILEtBQWQsQ0FBTCxFQUEyQjtBQUN6QixXQUFPRCxZQUFZLENBQUNDLEtBQUQsQ0FBbkI7QUFDRDs7QUFDRCxTQUFRLE1BQUssa0JBQUtBLEtBQUwsRUFBWVEsR0FBWixDQUFnQkMsRUFBRSxJQUM1QixHQUFFUCxJQUFJLENBQUNDLEtBQUssR0FBR0csVUFBVCxDQUFxQixLQUFJRyxFQUFHLEtBQUksMkJBQWNULEtBQUssQ0FBQ1MsRUFBRCxDQUFuQixJQUNuQ0YsU0FBUyxDQUFDUCxLQUFLLENBQUNTLEVBQUQsQ0FBTixFQUFZTixLQUFLLEdBQUdHLFVBQXBCLENBRDBCLEdBRW5DUCxZQUFZLENBQUNDLEtBQUssQ0FBQ1MsRUFBRCxDQUFOLENBQVksRUFIakIsRUFJVlIsSUFKVSxDQUlMLElBSkssQ0FJQyxLQUFJQyxJQUFJLENBQUNDLEtBQUQsQ0FBUSxLQUo5QjtBQUtELENBVEQ7O0FBV0EsTUFBTU8sT0FBTyxHQUFHLENBQUM7QUFDZkMsRUFBQUEsSUFEZTtBQUNUQyxFQUFBQSxJQURTO0FBQ0haLEVBQUFBLEtBREc7QUFDSWEsRUFBQUEsV0FESjtBQUNpQkMsRUFBQUEsVUFEakI7QUFDNkJDLEVBQUFBO0FBRDdCLENBQUQsRUFFYkMsSUFGYSxFQUVQYixLQUZPLEtBRUc7QUFDakIsUUFBTWMsY0FBYyxHQUFJO0FBQ3RCQyxJQUFBQSxLQUFLLEVBQUUsTUFBTyxLQUFJTixJQUFLLEtBQUlMLFNBQVMsQ0FBQ1AsS0FBRCxFQUFRRyxLQUFSLENBQWUsRUFEN0I7QUFFdEJnQixJQUFBQSxPQUFPLEVBQUUsTUFBTyxLQUFJUCxJQUFLLEtBQUlMLFNBQVMsQ0FBQ1AsS0FBRCxFQUFRRyxLQUFSLENBQWUsRUFGL0I7QUFHdEJpQixJQUFBQSxPQUFPLEVBQUUsTUFBTSxDQUFFLEtBQUlSLElBQUssS0FBSUwsU0FBUyxDQUFDTyxVQUFELEVBQWFYLEtBQWIsQ0FBb0IsRUFBNUMsRUFBZ0QsS0FBSVMsSUFBSyxLQUFJTCxTQUFTLENBQUNNLFdBQUQsRUFBY1YsS0FBZCxDQUFxQixFQUEzRixDQUhPO0FBSXRCa0IsSUFBQUEsSUFBSSxFQUFFLE1BQU8sS0FBSVQsSUFBSyxRQUFPSSxJQUFJLENBQUNELFFBQUQsRUFBV1osS0FBSyxHQUFHRyxVQUFuQixDQUErQixLQUFJSixJQUFJLENBQUNDLEtBQUQsQ0FBUSxLQUoxRDtBQUt0Qm1CLElBQUFBLFNBQVMsRUFBRSxNQUFPLEtBQUlWLElBQUssS0FBSUwsU0FBUyxDQUFDUCxLQUFELEVBQVFHLEtBQVIsQ0FBZTtBQUxqQyxHQUF4QjtBQU9BLFNBQU9jLGNBQWMsQ0FBQ04sSUFBRCxDQUFkLEVBQVA7QUFDRCxDQVhEOztBQWFBLE1BQU1ZLE1BQU0sR0FBRyxDQUFDQyxPQUFELEVBQVVDLFNBQVMsR0FBR3BCLGFBQXRCO0FBQUE7O0FBQUEsOENBQXdDbUIsT0FBeEMsRUFDTkUsUUFBQyxDQUFDbEIsR0FBRixDQUFNQyxFQUFFLElBQUlDLE9BQU8sQ0FBQ0QsRUFBRCxFQUFLYyxNQUFMLEVBQWFFLFNBQWIsQ0FBbkIsQ0FETSxPQUVaRSxtQkFGWSxXQUdORCxLQUFDLENBQUNsQixHQUFGLENBQU1DLEVBQUUsSUFBSyxHQUFFUCxJQUFJLENBQUN1QixTQUFELENBQVksR0FBRWhCLEVBQUcsRUFBcEMsQ0FITSxHQUlOaUIsSUFBQyxDQUFDekIsSUFBRixDQUFPLElBQVAsQ0FKTTtBQUFBLENBQWY7O2VBTWUyQixPQUFPLElBQUssTUFBS0wsTUFBTSxDQUFDSyxPQUFELENBQVUsSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzUGxhaW5PYmplY3QsIGlzQXJyYXksIGtleXMsIGZsYXR0ZW5EZWVwLFxufSBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCByZWJ1aWxkVmFsdWUgPSB2YWx1ZSA9PiAoaXNBcnJheSh2YWx1ZSkgPyBgWyR7dmFsdWUuam9pbignLCAnKX1dYCA6IHZhbHVlKTtcbmNvbnN0IHNraXAgPSBkZXB0aCA9PiBgICAkeycgICAgJy5yZXBlYXQoZGVwdGgpfWA7XG5jb25zdCByb290Tm9kZURlcHRoID0gMDtcbmNvbnN0IGxldmVsRGVwdGggPSAxO1xuXG5jb25zdCBzdHJpbmdpZnkgPSAodmFsdWUsIGRlcHRoKSA9PiB7XG4gIGlmICghaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gcmVidWlsZFZhbHVlKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gYHtcXG4ke2tleXModmFsdWUpLm1hcChlbCA9PiAoXG4gICAgYCR7c2tpcChkZXB0aCArIGxldmVsRGVwdGgpfSAgJHtlbH06ICR7aXNQbGFpbk9iamVjdCh2YWx1ZVtlbF0pXG4gICAgICA/IHN0cmluZ2lmeSh2YWx1ZVtlbF0sIGRlcHRoICsgbGV2ZWxEZXB0aClcbiAgICAgIDogcmVidWlsZFZhbHVlKHZhbHVlW2VsXSl9YCkpXG4gICAgLmpvaW4oJ1xcbicpfVxcbiR7c2tpcChkZXB0aCl9ICB9YDtcbn07XG5cbmNvbnN0IGdldExpbmUgPSAoe1xuICB0eXBlLCBuYW1lLCB2YWx1ZSwgdmFsdWVCZWZvcmUsIHZhbHVlQWZ0ZXIsIGNoaWxkcmVuLFxufSwgZnVuYywgZGVwdGgpID0+IHtcbiAgY29uc3QgbGluZXNTZWxlY3Rpb24gPSAoe1xuICAgIGFkZGVkOiAoKSA9PiBgKyAke25hbWV9OiAke3N0cmluZ2lmeSh2YWx1ZSwgZGVwdGgpfWAsXG4gICAgZGVsZXRlZDogKCkgPT4gYC0gJHtuYW1lfTogJHtzdHJpbmdpZnkodmFsdWUsIGRlcHRoKX1gLFxuICAgIHVwZGF0ZWQ6ICgpID0+IFtgKyAke25hbWV9OiAke3N0cmluZ2lmeSh2YWx1ZUFmdGVyLCBkZXB0aCl9YCwgYC0gJHtuYW1lfTogJHtzdHJpbmdpZnkodmFsdWVCZWZvcmUsIGRlcHRoKX1gXSxcbiAgICBub2RlOiAoKSA9PiBgICAke25hbWV9OiB7XFxuJHtmdW5jKGNoaWxkcmVuLCBkZXB0aCArIGxldmVsRGVwdGgpfVxcbiR7c2tpcChkZXB0aCl9ICB9YCxcbiAgICB1bmNoYW5nZWQ6ICgpID0+IGAgICR7bmFtZX06ICR7c3RyaW5naWZ5KHZhbHVlLCBkZXB0aCl9YCxcbiAgfSk7XG4gIHJldHVybiBsaW5lc1NlbGVjdGlvblt0eXBlXSgpO1xufTtcblxuY29uc3QgcmVuZGVyID0gKGRpZkRhdGEsIG5vZGVEZXB0aCA9IHJvb3ROb2RlRGVwdGgpID0+IGRpZkRhdGFcbnw+IChfID0+IF8ubWFwKGVsID0+IGdldExpbmUoZWwsIHJlbmRlciwgbm9kZURlcHRoKSkpXG58PiBmbGF0dGVuRGVlcFxufD4gKF8gPT4gXy5tYXAoZWwgPT4gYCR7c2tpcChub2RlRGVwdGgpfSR7ZWx9YCkpXG58PiAoXyA9PiBfLmpvaW4oJ1xcbicpKTtcblxuZXhwb3J0IGRlZmF1bHQgYXN0RGF0YSA9PiBge1xcbiR7cmVuZGVyKGFzdERhdGEpfVxcbn1gO1xuIl19