gendiff-pdronenko
Version:
Compares two configuration files and shows a difference.
45 lines (40 loc) • 4.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
const stringify = data => typeof data !== 'object' ? data : '[complex value]';
const plainActions = {
unchanged: () => null,
nested: ({
plainRender,
children,
path
}) => plainRender(children, `${path}.`),
changed: ({
path,
deletedValue,
addedValue
}) => {
const fromToStr = `From ${stringify(deletedValue)} to ${stringify(addedValue)}`;
return `Property '${path}' was updated. ${fromToStr}`;
},
added: ({
path,
value
}) => `Property '${path}' was added with value: ${stringify(value)}`,
deleted: ({
path
}) => `Property '${path}' was removed`
};
const plainRender = (ast, path = '') => {
const mappedResult = ast.map(node => plainActions[node.type]({
path: `${path}${node.key}`,
plainRender,
...node
}));
return mappedResult.filter(str => str !== null).join('\n');
};
var _default = plainRender;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMvcGxhaW5SZW5kZXIuanMiXSwibmFtZXMiOlsic3RyaW5naWZ5IiwiZGF0YSIsInBsYWluQWN0aW9ucyIsInVuY2hhbmdlZCIsIm5lc3RlZCIsInBsYWluUmVuZGVyIiwiY2hpbGRyZW4iLCJwYXRoIiwiY2hhbmdlZCIsImRlbGV0ZWRWYWx1ZSIsImFkZGVkVmFsdWUiLCJmcm9tVG9TdHIiLCJhZGRlZCIsInZhbHVlIiwiZGVsZXRlZCIsImFzdCIsIm1hcHBlZFJlc3VsdCIsIm1hcCIsIm5vZGUiLCJ0eXBlIiwia2V5IiwiZmlsdGVyIiwic3RyIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFNBQVMsR0FBR0MsSUFBSSxJQUFLLE9BQU9BLElBQVAsS0FBZ0IsUUFBaEIsR0FBMkJBLElBQTNCLEdBQWtDLGlCQUE3RDs7QUFFQSxNQUFNQyxZQUFZLEdBQUc7QUFDbkJDLEVBQUFBLFNBQVMsRUFBRSxNQUFNLElBREU7QUFFbkJDLEVBQUFBLE1BQU0sRUFBRSxDQUFDO0FBQUVDLElBQUFBLFdBQUY7QUFBZUMsSUFBQUEsUUFBZjtBQUF5QkMsSUFBQUE7QUFBekIsR0FBRCxLQUFxQ0YsV0FBVyxDQUFDQyxRQUFELEVBQVksR0FBRUMsSUFBSyxHQUFuQixDQUZyQztBQUduQkMsRUFBQUEsT0FBTyxFQUFFLENBQUM7QUFBRUQsSUFBQUEsSUFBRjtBQUFRRSxJQUFBQSxZQUFSO0FBQXNCQyxJQUFBQTtBQUF0QixHQUFELEtBQXdDO0FBQy9DLFVBQU1DLFNBQVMsR0FBSSxRQUFPWCxTQUFTLENBQUNTLFlBQUQsQ0FBZSxPQUFNVCxTQUFTLENBQUNVLFVBQUQsQ0FBYSxFQUE5RTtBQUNBLFdBQVEsYUFBWUgsSUFBSyxrQkFBaUJJLFNBQVUsRUFBcEQ7QUFDRCxHQU5rQjtBQU9uQkMsRUFBQUEsS0FBSyxFQUFFLENBQUM7QUFBRUwsSUFBQUEsSUFBRjtBQUFRTSxJQUFBQTtBQUFSLEdBQUQsS0FBc0IsYUFBWU4sSUFBSywyQkFBMEJQLFNBQVMsQ0FBQ2EsS0FBRCxDQUFRLEVBUHRFO0FBUW5CQyxFQUFBQSxPQUFPLEVBQUUsQ0FBQztBQUFFUCxJQUFBQTtBQUFGLEdBQUQsS0FBZSxhQUFZQSxJQUFLO0FBUnRCLENBQXJCOztBQVdBLE1BQU1GLFdBQVcsR0FBRyxDQUFDVSxHQUFELEVBQU1SLElBQUksR0FBRyxFQUFiLEtBQW9CO0FBQ3RDLFFBQU1TLFlBQVksR0FBR0QsR0FBRyxDQUNyQkUsR0FEa0IsQ0FDZEMsSUFBSSxJQUFJaEIsWUFBWSxDQUFDZ0IsSUFBSSxDQUFDQyxJQUFOLENBQVosQ0FBd0I7QUFBRVosSUFBQUEsSUFBSSxFQUFHLEdBQUVBLElBQUssR0FBRVcsSUFBSSxDQUFDRSxHQUFJLEVBQTNCO0FBQThCZixJQUFBQSxXQUE5QjtBQUEyQyxPQUFHYTtBQUE5QyxHQUF4QixDQURNLENBQXJCO0FBRUEsU0FBT0YsWUFBWSxDQUFDSyxNQUFiLENBQW9CQyxHQUFHLElBQUlBLEdBQUcsS0FBSyxJQUFuQyxFQUF5Q0MsSUFBekMsQ0FBOEMsSUFBOUMsQ0FBUDtBQUNELENBSkQ7O2VBTWVsQixXIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc3RyaW5naWZ5ID0gZGF0YSA9PiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnID8gZGF0YSA6ICdbY29tcGxleCB2YWx1ZV0nKTtcblxuY29uc3QgcGxhaW5BY3Rpb25zID0ge1xuICB1bmNoYW5nZWQ6ICgpID0+IG51bGwsXG4gIG5lc3RlZDogKHsgcGxhaW5SZW5kZXIsIGNoaWxkcmVuLCBwYXRoIH0pID0+IHBsYWluUmVuZGVyKGNoaWxkcmVuLCBgJHtwYXRofS5gKSxcbiAgY2hhbmdlZDogKHsgcGF0aCwgZGVsZXRlZFZhbHVlLCBhZGRlZFZhbHVlIH0pID0+IHtcbiAgICBjb25zdCBmcm9tVG9TdHIgPSBgRnJvbSAke3N0cmluZ2lmeShkZWxldGVkVmFsdWUpfSB0byAke3N0cmluZ2lmeShhZGRlZFZhbHVlKX1gO1xuICAgIHJldHVybiBgUHJvcGVydHkgJyR7cGF0aH0nIHdhcyB1cGRhdGVkLiAke2Zyb21Ub1N0cn1gO1xuICB9LFxuICBhZGRlZDogKHsgcGF0aCwgdmFsdWUgfSkgPT4gYFByb3BlcnR5ICcke3BhdGh9JyB3YXMgYWRkZWQgd2l0aCB2YWx1ZTogJHtzdHJpbmdpZnkodmFsdWUpfWAsXG4gIGRlbGV0ZWQ6ICh7IHBhdGggfSkgPT4gYFByb3BlcnR5ICcke3BhdGh9JyB3YXMgcmVtb3ZlZGAsXG59O1xuXG5jb25zdCBwbGFpblJlbmRlciA9IChhc3QsIHBhdGggPSAnJykgPT4ge1xuICBjb25zdCBtYXBwZWRSZXN1bHQgPSBhc3RcbiAgICAubWFwKG5vZGUgPT4gcGxhaW5BY3Rpb25zW25vZGUudHlwZV0oeyBwYXRoOiBgJHtwYXRofSR7bm9kZS5rZXl9YCwgcGxhaW5SZW5kZXIsIC4uLm5vZGUgfSkpO1xuICByZXR1cm4gbWFwcGVkUmVzdWx0LmZpbHRlcihzdHIgPT4gc3RyICE9PSBudWxsKS5qb2luKCdcXG4nKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHBsYWluUmVuZGVyO1xuIl19