artyoms-gendiff
Version:
my own gendiff app for study project
60 lines (48 loc) • 5.96 kB
JavaScript
;
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 stringify = value => {
if (_lodash.default.isObject(value)) {
return '[complex value]';
}
if (typeof value === 'string') {
return `'${value}'`;
}
return value;
};
const getName = properties => properties.join('.');
const methods = {
unchanged: (ancestors, {
property
}) => `Property '${getName([...ancestors, property])}' wasn't changed`,
added: (ancestors, {
property,
currentValue: value
}) => `Property '${getName([...ancestors, property])}' was added with value: ${stringify(value)}`,
deleted: (ancestors, {
property
}) => `Property '${getName([...ancestors, property])}' was removed`,
updated: (ancestors, {
property,
currentValue,
previousValue
}) => `Property '${getName([...ancestors, property])}' was updated. From ${stringify(previousValue)} to ${stringify(currentValue)}`,
nested: (ancestors, {
property,
children
}, proccess) => `${proccess(children, [...ancestors, property])}`
};
const toString = (proccess, ancestors, node) => methods[node.type](ancestors, node, proccess);
var _default = diff => {
const genOutput = (arr, ancestors) => {
const lines = arr.map(node => toString(genOutput, ancestors, node));
return `${lines.join('\n')}`;
};
return genOutput(diff, []);
};
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMvcmVuZGVyUGxhaW4uanMiXSwibmFtZXMiOlsic3RyaW5naWZ5IiwidmFsdWUiLCJfIiwiaXNPYmplY3QiLCJnZXROYW1lIiwicHJvcGVydGllcyIsImpvaW4iLCJtZXRob2RzIiwidW5jaGFuZ2VkIiwiYW5jZXN0b3JzIiwicHJvcGVydHkiLCJhZGRlZCIsImN1cnJlbnRWYWx1ZSIsImRlbGV0ZWQiLCJ1cGRhdGVkIiwicHJldmlvdXNWYWx1ZSIsIm5lc3RlZCIsImNoaWxkcmVuIiwicHJvY2Nlc3MiLCJ0b1N0cmluZyIsIm5vZGUiLCJ0eXBlIiwiZGlmZiIsImdlbk91dHB1dCIsImFyciIsImxpbmVzIiwibWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFFQSxNQUFNQSxTQUFTLEdBQUlDLEtBQUQsSUFBVztBQUMzQixNQUFJQyxnQkFBRUMsUUFBRixDQUFXRixLQUFYLENBQUosRUFBdUI7QUFDckIsV0FBTyxpQkFBUDtBQUNEOztBQUNELE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM3QixXQUFRLElBQUdBLEtBQU0sR0FBakI7QUFDRDs7QUFFRCxTQUFPQSxLQUFQO0FBQ0QsQ0FURDs7QUFXQSxNQUFNRyxPQUFPLEdBQUdDLFVBQVUsSUFBSUEsVUFBVSxDQUFDQyxJQUFYLENBQWdCLEdBQWhCLENBQTlCOztBQUVBLE1BQU1DLE9BQU8sR0FBRztBQUNkQyxFQUFBQSxTQUFTLEVBQUUsQ0FBQ0MsU0FBRCxFQUFZO0FBQUVDLElBQUFBO0FBQUYsR0FBWixLQUE4QixhQUFZTixPQUFPLENBQUMsQ0FBQyxHQUFHSyxTQUFKLEVBQWVDLFFBQWYsQ0FBRCxDQUEyQixrQkFEekU7QUFFZEMsRUFBQUEsS0FBSyxFQUFFLENBQUNGLFNBQUQsRUFBWTtBQUFFQyxJQUFBQSxRQUFGO0FBQVlFLElBQUFBLFlBQVksRUFBRVg7QUFBMUIsR0FBWixLQUFtRCxhQUFZRyxPQUFPLENBQUMsQ0FBQyxHQUFHSyxTQUFKLEVBQWVDLFFBQWYsQ0FBRCxDQUEyQiwyQkFBMEJWLFNBQVMsQ0FBQ0MsS0FBRCxDQUFRLEVBRnJJO0FBR2RZLEVBQUFBLE9BQU8sRUFBRSxDQUFDSixTQUFELEVBQVk7QUFBRUMsSUFBQUE7QUFBRixHQUFaLEtBQThCLGFBQVlOLE9BQU8sQ0FBQyxDQUFDLEdBQUdLLFNBQUosRUFBZUMsUUFBZixDQUFELENBQTJCLGVBSHZFO0FBSWRJLEVBQUFBLE9BQU8sRUFBRSxDQUFDTCxTQUFELEVBQVk7QUFBRUMsSUFBQUEsUUFBRjtBQUFZRSxJQUFBQSxZQUFaO0FBQTBCRyxJQUFBQTtBQUExQixHQUFaLEtBQTJELGFBQVlYLE9BQU8sQ0FBQyxDQUFDLEdBQUdLLFNBQUosRUFBZUMsUUFBZixDQUFELENBQTJCLHVCQUFzQlYsU0FBUyxDQUFDZSxhQUFELENBQWdCLE9BQU1mLFNBQVMsQ0FBQ1ksWUFBRCxDQUFlLEVBSmpMO0FBS2RJLEVBQUFBLE1BQU0sRUFBRSxDQUFDUCxTQUFELEVBQVk7QUFBRUMsSUFBQUEsUUFBRjtBQUFZTyxJQUFBQTtBQUFaLEdBQVosRUFBb0NDLFFBQXBDLEtBQWtELEdBQUVBLFFBQVEsQ0FBQ0QsUUFBRCxFQUFXLENBQUMsR0FBR1IsU0FBSixFQUFlQyxRQUFmLENBQVgsQ0FBcUM7QUFMM0YsQ0FBaEI7O0FBUUEsTUFBTVMsUUFBUSxHQUFHLENBQUNELFFBQUQsRUFBV1QsU0FBWCxFQUFzQlcsSUFBdEIsS0FBK0JiLE9BQU8sQ0FBQ2EsSUFBSSxDQUFDQyxJQUFOLENBQVAsQ0FBbUJaLFNBQW5CLEVBQThCVyxJQUE5QixFQUFvQ0YsUUFBcEMsQ0FBaEQ7O2VBRWdCSSxJQUFELElBQVU7QUFDdkIsUUFBTUMsU0FBUyxHQUFHLENBQUNDLEdBQUQsRUFBTWYsU0FBTixLQUFvQjtBQUNwQyxVQUFNZ0IsS0FBSyxHQUFHRCxHQUFHLENBQUNFLEdBQUosQ0FBUU4sSUFBSSxJQUFJRCxRQUFRLENBQUNJLFNBQUQsRUFBWWQsU0FBWixFQUF1QlcsSUFBdkIsQ0FBeEIsQ0FBZDtBQUVBLFdBQVEsR0FBRUssS0FBSyxDQUFDbkIsSUFBTixDQUFXLElBQVgsQ0FBaUIsRUFBM0I7QUFDRCxHQUpEOztBQU1BLFNBQU9pQixTQUFTLENBQUNELElBQUQsRUFBTyxFQUFQLENBQWhCO0FBQ0QsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IHN0cmluZ2lmeSA9ICh2YWx1ZSkgPT4ge1xuICBpZiAoXy5pc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJ1tjb21wbGV4IHZhbHVlXSc7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYCcke3ZhbHVlfSdgO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuY29uc3QgZ2V0TmFtZSA9IHByb3BlcnRpZXMgPT4gcHJvcGVydGllcy5qb2luKCcuJyk7XG5cbmNvbnN0IG1ldGhvZHMgPSB7XG4gIHVuY2hhbmdlZDogKGFuY2VzdG9ycywgeyBwcm9wZXJ0eSB9KSA9PiBgUHJvcGVydHkgJyR7Z2V0TmFtZShbLi4uYW5jZXN0b3JzLCBwcm9wZXJ0eV0pfScgd2Fzbid0IGNoYW5nZWRgLFxuICBhZGRlZDogKGFuY2VzdG9ycywgeyBwcm9wZXJ0eSwgY3VycmVudFZhbHVlOiB2YWx1ZSB9KSA9PiBgUHJvcGVydHkgJyR7Z2V0TmFtZShbLi4uYW5jZXN0b3JzLCBwcm9wZXJ0eV0pfScgd2FzIGFkZGVkIHdpdGggdmFsdWU6ICR7c3RyaW5naWZ5KHZhbHVlKX1gLFxuICBkZWxldGVkOiAoYW5jZXN0b3JzLCB7IHByb3BlcnR5IH0pID0+IGBQcm9wZXJ0eSAnJHtnZXROYW1lKFsuLi5hbmNlc3RvcnMsIHByb3BlcnR5XSl9JyB3YXMgcmVtb3ZlZGAsXG4gIHVwZGF0ZWQ6IChhbmNlc3RvcnMsIHsgcHJvcGVydHksIGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSB9KSA9PiBgUHJvcGVydHkgJyR7Z2V0TmFtZShbLi4uYW5jZXN0b3JzLCBwcm9wZXJ0eV0pfScgd2FzIHVwZGF0ZWQuIEZyb20gJHtzdHJpbmdpZnkocHJldmlvdXNWYWx1ZSl9IHRvICR7c3RyaW5naWZ5KGN1cnJlbnRWYWx1ZSl9YCxcbiAgbmVzdGVkOiAoYW5jZXN0b3JzLCB7IHByb3BlcnR5LCBjaGlsZHJlbiB9LCBwcm9jY2VzcykgPT4gYCR7cHJvY2Nlc3MoY2hpbGRyZW4sIFsuLi5hbmNlc3RvcnMsIHByb3BlcnR5XSl9YCxcbn07XG5cbmNvbnN0IHRvU3RyaW5nID0gKHByb2NjZXNzLCBhbmNlc3RvcnMsIG5vZGUpID0+IG1ldGhvZHNbbm9kZS50eXBlXShhbmNlc3RvcnMsIG5vZGUsIHByb2NjZXNzKTtcblxuZXhwb3J0IGRlZmF1bHQgKGRpZmYpID0+IHtcbiAgY29uc3QgZ2VuT3V0cHV0ID0gKGFyciwgYW5jZXN0b3JzKSA9PiB7XG4gICAgY29uc3QgbGluZXMgPSBhcnIubWFwKG5vZGUgPT4gdG9TdHJpbmcoZ2VuT3V0cHV0LCBhbmNlc3RvcnMsIG5vZGUpKTtcblxuICAgIHJldHVybiBgJHtsaW5lcy5qb2luKCdcXG4nKX1gO1xuICB9O1xuXG4gIHJldHVybiBnZW5PdXRwdXQoZGlmZiwgW10pO1xufTtcbiJdfQ==