hexlet-gendiff-util
Advanced tools
Comparing version 1.0.2 to 1.0.3
@@ -6,5 +6,9 @@ #!/usr/bin/env node | ||
var _ = _interopRequireDefault(require("..")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
_commander.default.version('1.0.0').arguments('<firstConfig> <secondConfig>').description('Compares two configuration files and shows a difference.').option('-f, --format [type]', 'Output format').parse(process.argv); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vZ2VuZGlmZi5qcyJdLCJuYW1lcyI6WyJwcm9ncmFtIiwidmVyc2lvbiIsImFyZ3VtZW50cyIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwicGFyc2UiLCJwcm9jZXNzIiwiYXJndiJdLCJtYXBwaW5ncyI6IkFBQUE7OztBQUVBOzs7O0FBRUFBLG1CQUNHQyxPQURILENBQ1csT0FEWCxFQUVHQyxTQUZILENBRWEsOEJBRmIsRUFHR0MsV0FISCxDQUdlLDBEQUhmLEVBSUdDLE1BSkgsQ0FJVSxxQkFKVixFQUlpQyxlQUpqQyxFQUtHQyxLQUxILENBS1NDLE9BQU8sQ0FBQ0MsSUFMakIiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCBwcm9ncmFtIGZyb20gJ2NvbW1hbmRlcic7XG5cbnByb2dyYW1cbiAgLnZlcnNpb24oJzEuMC4wJylcbiAgLmFyZ3VtZW50cygnPGZpcnN0Q29uZmlnPiA8c2Vjb25kQ29uZmlnPicpXG4gIC5kZXNjcmlwdGlvbignQ29tcGFyZXMgdHdvIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHNob3dzIGEgZGlmZmVyZW5jZS4nKVxuICAub3B0aW9uKCctZiwgLS1mb3JtYXQgW3R5cGVdJywgJ091dHB1dCBmb3JtYXQnKVxuICAucGFyc2UocHJvY2Vzcy5hcmd2KTtcbiJdfQ== | ||
_commander.default.version('1.0.0').arguments('<firstConfig> <secondConfig>').action((path1, path2) => { | ||
console.log((0, _.default)(path1, path2)); | ||
}).description('Compares two configuration files and shows a difference.').option('-f, --format [type]', 'Output format').parse(process.argv); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vZ2VuZGlmZi5qcyJdLCJuYW1lcyI6WyJwcm9ncmFtIiwidmVyc2lvbiIsImFyZ3VtZW50cyIsImFjdGlvbiIsInBhdGgxIiwicGF0aDIiLCJjb25zb2xlIiwibG9nIiwiZGVzY3JpcHRpb24iLCJvcHRpb24iLCJwYXJzZSIsInByb2Nlc3MiLCJhcmd2Il0sIm1hcHBpbmdzIjoiQUFBQTs7O0FBRUE7O0FBQ0E7Ozs7QUFFQUEsbUJBQ0dDLE9BREgsQ0FDVyxPQURYLEVBRUdDLFNBRkgsQ0FFYSw4QkFGYixFQUdHQyxNQUhILENBR1UsQ0FBQ0MsS0FBRCxFQUFRQyxLQUFSLEtBQWtCO0FBQ3hCQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxlQUFRSCxLQUFSLEVBQWVDLEtBQWYsQ0FBWjtBQUNELENBTEgsRUFNR0csV0FOSCxDQU1lLDBEQU5mLEVBT0dDLE1BUEgsQ0FPVSxxQkFQVixFQU9pQyxlQVBqQyxFQVFHQyxLQVJILENBUVNDLE9BQU8sQ0FBQ0MsSUFSakIiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCBwcm9ncmFtIGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgZ2VuRGlmZiBmcm9tICcuLic7XG5cbnByb2dyYW1cbiAgLnZlcnNpb24oJzEuMC4wJylcbiAgLmFyZ3VtZW50cygnPGZpcnN0Q29uZmlnPiA8c2Vjb25kQ29uZmlnPicpXG4gIC5hY3Rpb24oKHBhdGgxLCBwYXRoMikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGdlbkRpZmYocGF0aDEsIHBhdGgyKSk7XG4gIH0pXG4gIC5kZXNjcmlwdGlvbignQ29tcGFyZXMgdHdvIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHNob3dzIGEgZGlmZmVyZW5jZS4nKVxuICAub3B0aW9uKCctZiwgLS1mb3JtYXQgW3R5cGVdJywgJ091dHB1dCBmb3JtYXQnKVxuICAucGFyc2UocHJvY2Vzcy5hcmd2KTtcbiJdfQ== |
@@ -14,71 +14,171 @@ "use strict"; | ||
var _flow = _interopRequireDefault(require("lodash/flow")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const actionTypes = { | ||
ADDITION: '+', | ||
SUBTRACTION: '-', | ||
DEFAULT: ' ' | ||
}; | ||
/** | ||
* Generates diff between two files | ||
* Reads files | ||
* @param {String} pathToFile1 | ||
* @param {String} pathToFile2 | ||
* @returns {Object} | ||
*/ | ||
const genDiff = (pathToFile1, pathToFile2) => { | ||
const data1 = JSON.parse(_fs.default.readFileSync(_path.default.join(__dirname, '..', pathToFile1))); | ||
const data2 = JSON.parse(_fs.default.readFileSync(_path.default.join(__dirname, '..', pathToFile2))); | ||
const data = [...Object.keys(data1).map(key => ({ | ||
key, | ||
value: data1[key] | ||
})), ...Object.keys(data2).map(key => ({ | ||
key, | ||
value: data2[key] | ||
}))]; | ||
return `{\n${data.reduce((accumulator, item) => { | ||
const { | ||
const readFiles = (pathToFile1, pathToFile2) => { | ||
const file1 = _fs.default.readFileSync(_path.default.join(__dirname, '..', pathToFile1)); | ||
const file2 = _fs.default.readFileSync(_path.default.join(__dirname, '..', pathToFile2)); | ||
return { | ||
file1, | ||
file2 | ||
}; | ||
}; | ||
/** | ||
* Parses files | ||
* @param {Function} parseFn | ||
* @returns {Function} | ||
*/ | ||
const parseFiles = parseFn => props => { | ||
const { | ||
file1, | ||
file2 | ||
} = props; | ||
return { ...props, | ||
data1: parseFn(file1), | ||
data2: parseFn(file2) | ||
}; | ||
}; | ||
/** | ||
* Retrieves data keys | ||
* @param {Object} props | ||
* @returns {Object} | ||
*/ | ||
const getKeys = props => { | ||
const { | ||
data1, | ||
data2 | ||
} = props; | ||
const keys1 = Object.keys(data1); | ||
const keys2 = Object.keys(data2).filter(key => !keys1.includes(key)); | ||
return { ...props, | ||
keys1, | ||
keys2 | ||
}; | ||
}; | ||
/** | ||
* Retrieves difference between two objects by key | ||
* @param {Object} data1 | ||
* @param {Object} data2 | ||
* @param {String} key | ||
* @returns {Array} | ||
*/ | ||
const getDiffByKey = (data1, data2, key) => { | ||
if ((0, _has.default)(data1, key) && (0, _has.default)(data2, key) && data1[key] === data2[key]) { | ||
return [{ | ||
key, | ||
value | ||
} = item; | ||
const existingItem = accumulator.find(accItem => accItem.key === key); | ||
if (!existingItem && data1[key] === data2[key]) return [...accumulator, { | ||
key, | ||
value, | ||
action: ' ' | ||
value: data1[key], | ||
action: actionTypes.DEFAULT | ||
}]; | ||
if (!existingItem && (0, _has.default)(data1, key) && (0, _has.default)(data2, key) && data1[key] !== data2[key]) return [...accumulator, { | ||
} | ||
if ((0, _has.default)(data1, key) && (0, _has.default)(data2, key) && data1[key] !== data2[key]) { | ||
return [{ | ||
key, | ||
value, | ||
action: '+' | ||
}]; | ||
if (!existingItem && (0, _has.default)(data1, key) && !(0, _has.default)(data2, key)) return [...accumulator, { | ||
value: data2[key], | ||
action: actionTypes.ADDITION | ||
}, { | ||
key, | ||
value, | ||
action: '-' | ||
value: data1[key], | ||
action: actionTypes.SUBTRACTION | ||
}]; | ||
if (!existingItem && data1[key] && !data2[key]) return [...accumulator, { | ||
} | ||
if ((0, _has.default)(data1, key) && !(0, _has.default)(data2, key)) { | ||
return [{ | ||
key, | ||
value, | ||
action: '-' | ||
value: data1[key], | ||
action: actionTypes.SUBTRACTION | ||
}]; | ||
if (!existingItem && !data1[key] && data2[key]) return [...accumulator, { | ||
} | ||
if (!(0, _has.default)(data1, key) && (0, _has.default)(data2, key)) { | ||
return [{ | ||
key, | ||
value, | ||
action: '+' | ||
value: data2[key], | ||
action: actionTypes.ADDITION | ||
}]; | ||
const existingItemIndex = accumulator.findIndex(accItem => accItem.key === key); | ||
} | ||
if (existingItem && existingItem.value !== value) { | ||
return [...accumulator.slice(0, existingItemIndex), { | ||
key, | ||
value, | ||
action: '+' | ||
}, { | ||
key, | ||
value: existingItem.value, | ||
action: '-' | ||
}, ...accumulator.slice(existingItemIndex + 1)]; | ||
} | ||
return [{ | ||
key, | ||
value: data1[key], | ||
action: actionTypes.DEFAULT | ||
}]; | ||
}; | ||
/** | ||
* Retrieves the diff between data | ||
* @param {Object} props | ||
* @returns {Object} | ||
*/ | ||
if (existingItem && existingItem.value === value) return accumulator; | ||
return accumulator; | ||
}, []).map(item => `${item.action} ${item.key}: ${item.value}`).join('\n')}\n}\n`; | ||
const getDiff = props => { | ||
const { | ||
data1, | ||
data2, | ||
keys1, | ||
keys2 | ||
} = props; | ||
const iter = (index, accumulator) => { | ||
const key1 = keys1[index]; | ||
const key2 = keys2[index]; | ||
if (!key1 && !key2) return accumulator; | ||
const diff1 = key1 ? getDiffByKey(data1, data2, key1) : []; | ||
const diff2 = key2 ? getDiffByKey(data1, data2, key2) : []; | ||
return iter(index + 1, [...accumulator, ...diff1, ...diff2]); | ||
}; | ||
return { ...props, | ||
diff: iter(0, []) | ||
}; | ||
}; | ||
/** | ||
* Formats the result | ||
* @param {Object} props | ||
* @returns {String} | ||
*/ | ||
const format = props => { | ||
const { | ||
diff | ||
} = props; | ||
const result = diff.map(item => ` ${item.action} ${item.key}: ${item.value}`).join('\n'); | ||
return `{ | ||
${result} | ||
} | ||
`; | ||
}; | ||
/** | ||
* Generates diff between two files | ||
* @param {String} pathToFile1 | ||
* @param {String} pathToFile2 | ||
*/ | ||
const genDiff = (0, _flow.default)(readFiles, parseFiles(JSON.parse), getKeys, getDiff, format); | ||
var _default = genDiff; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJnZW5EaWZmIiwicGF0aFRvRmlsZTEiLCJwYXRoVG9GaWxlMiIsImRhdGExIiwiSlNPTiIsInBhcnNlIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImRhdGEyIiwiZGF0YSIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJrZXkiLCJ2YWx1ZSIsInJlZHVjZSIsImFjY3VtdWxhdG9yIiwiaXRlbSIsImV4aXN0aW5nSXRlbSIsImZpbmQiLCJhY2NJdGVtIiwiYWN0aW9uIiwiZXhpc3RpbmdJdGVtSW5kZXgiLCJmaW5kSW5kZXgiLCJzbGljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7O0FBRUE7Ozs7O0FBS0EsTUFBTUEsT0FBTyxHQUFHLENBQUNDLFdBQUQsRUFBY0MsV0FBZCxLQUE4QjtBQUM1QyxRQUFNQyxLQUFLLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFXQyxZQUFHQyxZQUFILENBQWdCQyxjQUFLQyxJQUFMLENBQVVDLFNBQVYsRUFBcUIsSUFBckIsRUFBMkJULFdBQTNCLENBQWhCLENBQVgsQ0FBZDtBQUNBLFFBQU1VLEtBQUssR0FBR1AsSUFBSSxDQUFDQyxLQUFMLENBQVdDLFlBQUdDLFlBQUgsQ0FBZ0JDLGNBQUtDLElBQUwsQ0FBVUMsU0FBVixFQUFxQixJQUFyQixFQUEyQlIsV0FBM0IsQ0FBaEIsQ0FBWCxDQUFkO0FBQ0EsUUFBTVUsSUFBSSxHQUFHLENBQ1gsR0FBR0MsTUFBTSxDQUFDQyxJQUFQLENBQVlYLEtBQVosRUFBbUJZLEdBQW5CLENBQXVCQyxHQUFHLEtBQUs7QUFBRUEsSUFBQUEsR0FBRjtBQUFPQyxJQUFBQSxLQUFLLEVBQUVkLEtBQUssQ0FBQ2EsR0FBRDtBQUFuQixHQUFMLENBQTFCLENBRFEsRUFFWCxHQUFHSCxNQUFNLENBQUNDLElBQVAsQ0FBWUgsS0FBWixFQUFtQkksR0FBbkIsQ0FBdUJDLEdBQUcs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LENBQUNKLEtBQWIsS0FBdUJBLEtBQTNDLEVBQWtELE9BQU9FLFdBQVA7QUFFbEQsV0FBT0EsV0FBUDtBQUNELEdBOUJILEVBOEJLLEVBOUJMLEVBK0JHSixHQS9CSCxDQStCT0ssSUFBSSxJQUFLLEdBQUVBLElBQUksQ0FBQ0ksTUFBTyxJQUFHSixJQUFJLENBQUNKLEdBQUksS0FBSUksSUFBSSxDQUFDSCxLQUFNLEVBL0J6RCxFQWdDR1IsSUFoQ0gsQ0FnQ1EsSUFoQ1IsQ0FpQ0QsT0FsQ0Q7QUFtQ0QsQ0EzQ0Q7O2VBNkNlVCxPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGhhcyBmcm9tICdsb2Rhc2gvaGFzJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgZGlmZiBiZXR3ZWVuIHR3byBmaWxlc1xuICogQHBhcmFtIHtTdHJpbmd9IHBhdGhUb0ZpbGUxXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFRvRmlsZTJcbiAqL1xuY29uc3QgZ2VuRGlmZiA9IChwYXRoVG9GaWxlMSwgcGF0aFRvRmlsZTIpID0+IHtcbiAgY29uc3QgZGF0YTEgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCBwYXRoVG9GaWxlMSkpKTtcbiAgY29uc3QgZGF0YTIgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCBwYXRoVG9GaWxlMikpKTtcbiAgY29uc3QgZGF0YSA9IFtcbiAgICAuLi5PYmplY3Qua2V5cyhkYXRhMSkubWFwKGtleSA9PiAoeyBrZXksIHZhbHVlOiBkYXRhMVtrZXldIH0pKSxcbiAgICAuLi5PYmplY3Qua2V5cyhkYXRhMikubWFwKGtleSA9PiAoeyBrZXksIHZhbHVlOiBkYXRhMltrZXldIH0pKSxcbiAgXTtcblxuICByZXR1cm4gYHtcXG4ke1xuICAgIGRhdGFcbiAgICAgIC5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gaXRlbTtcblxuICAgICAgICBjb25zdCBleGlzdGluZ0l0ZW0gPSBhY2N1bXVsYXRvci5maW5kKGFjY0l0ZW0gPT4gYWNjSXRlbS5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgaWYgKCFleGlzdGluZ0l0ZW0gJiYgKGRhdGExW2tleV0gPT09IGRhdGEyW2tleV0pKSByZXR1cm4gWy4uLmFjY3VtdWxhdG9yLCB7IGtleSwgdmFsdWUsIGFjdGlvbjogJyAnIH1dO1xuXG4gICAgICAgIGlmICghZXhpc3RpbmdJdGVtICYmIChoYXMoZGF0YTEsIGtleSkgJiYgaGFzKGRhdGEyLCBrZXkpICYmIChkYXRhMVtrZXldICE9PSBkYXRhMltrZXldKSkpIHJldHVybiBbLi4uYWNjdW11bGF0b3IsIHsga2V5LCB2YWx1ZSwgYWN0aW9uOiAnKycgfV07XG5cbiAgICAgICAgaWYgKCFleGlzdGluZ0l0ZW0gJiYgKGhhcyhkYXRhMSwga2V5KSAmJiAhaGFzKGRhdGEyLCBrZXkpKSkgcmV0dXJuIFsuLi5hY2N1bXVsYXRvciwgeyBrZXksIHZhbHVlLCBhY3Rpb246ICctJyB9XTtcblxuICAgICAgICBpZiAoIWV4aXN0aW5nSXRlbSAmJiBkYXRhMVtrZXldICYmICFkYXRhMltrZXldKSByZXR1cm4gWy4uLmFjY3VtdWxhdG9yLCB7IGtleSwgdmFsdWUsIGFjdGlvbjogJy0nIH1dO1xuXG4gICAgICAgIGlmICghZXhpc3RpbmdJdGVtICYmICFkYXRhMVtrZXldICYmIGRhdGEyW2tleV0pIHJldHVybiBbLi4uYWNjdW11bGF0b3IsIHsga2V5LCB2YWx1ZSwgYWN0aW9uOiAnKycgfV07XG5cbiAgICAgICAgY29uc3QgZXhpc3RpbmdJdGVtSW5kZXggPSBhY2N1bXVsYXRvci5maW5kSW5kZXgoYWNjSXRlbSA9PiBhY2NJdGVtLmtleSA9PT0ga2V5KTtcblxuICAgICAgICBpZiAoZXhpc3RpbmdJdGVtICYmIGV4aXN0aW5nSXRlbS52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uYWNjdW11bGF0b3Iuc2xpY2UoMCwgZXhpc3RpbmdJdGVtSW5kZXgpLFxuICAgICAgICAgICAgeyBrZXksIHZhbHVlLCBhY3Rpb246ICcrJyB9LFxuICAgICAgICAgICAgeyBrZXksIHZhbHVlOiBleGlzdGluZ0l0ZW0udmFsdWUsIGFjdGlvbjogJy0nIH0sXG4gICAgICAgICAgICAuLi5hY2N1bXVsYXRvci5zbGljZShleGlzdGluZ0l0ZW1JbmRleCArIDEpLFxuICAgICAgICAgIF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhpc3RpbmdJdGVtICYmIGV4aXN0aW5nSXRlbS52YWx1ZSA9PT0gdmFsdWUpIHJldHVybiBhY2N1bXVsYXRvcjtcblxuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgICB9LCBbXSlcbiAgICAgIC5tYXAoaXRlbSA9PiBgJHtpdGVtLmFjdGlvbn0gJHtpdGVtLmtleX06ICR7aXRlbS52YWx1ZX1gKVxuICAgICAgLmpvaW4oJ1xcbicpXG4gIH1cXG59XFxuYDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGdlbkRpZmY7XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJhY3Rpb25UeXBlcyIsIkFERElUSU9OIiwiU1VCVFJBQ1RJT04iLCJERUZBVUxUIiwicmVhZEZpbGVzIiwicGF0aFRvRmlsZTEiLCJwYXRoVG9GaWxlMiIsImZpbGUxIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImZpbGUyIiwicGFyc2VGaWxlcyIsInBhcnNlRm4iLCJwcm9wcyIsImRhdGExIiwiZGF0YTIiLCJnZXRLZXlzIiwia2V5czEiLCJPYmplY3QiLCJrZXlzIiwia2V5czIiLCJmaWx0ZXIiLCJrZXkiLCJpbmNsdWRlcyIsImdldERpZmZCeUtleSIsInZhbHVlIiwiYWN0aW9uIiwiZ2V0RGlmZiIsIml0ZXIiLCJpbmRleCIsImFjY3VtdWxhdG9yIiwia2V5MSIsImtleTIiLCJkaWZmMSIsImRpZmYyIiwiZGlmZiIsImZvcm1hdCIsInJlc3VsdCIsIm1hcCIsIml0ZW0iLCJnZW5EaWZmIiwiSlNPTiIsInBhcnNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNQSxXQUFXLEdBQUc7QUFDbEJDLEVBQUFBLFFBQVEsRUFBRSxHQURRO0FBRWxCQyxFQUFBQSxXQUFXLEVBQUUsR0FGSztBQUdsQkMsRUFBQUEsT0FBTyxFQUFFO0FBSFMsQ0FBcEI7QUFNQTs7Ozs7OztBQU1BLE1BQU1DLFNBQVMsR0FBRyxDQUFDQyxXQUFELEVBQWNDLFdBQWQsS0FBOEI7QUFDOUMsUUFBTUMsS0FBSyxHQUFHQyxZQUFHQyxZQUFILENBQWdCQyxjQUFLQyxJQUFMLENBQVVDLFNBQVYsRUFBcUIsSUFBckIsRUFBMkJQLFdBQTNCLENBQWhCLENBQWQ7O0FBQ0EsUUFBTVEsS0FBSyxHQUFHTCxZQUFHQyxZQUFILENBQWdCQyxjQUFLQyxJQUFMLENBQVVDLFNBQVYsRUFBcUIsSUFBckIsRUFBMkJOLFdBQTNCLENBQWhCLENBQWQ7O0FB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SXZCLEtBQUQsSUFBVztBQUN4QixRQUFNO0FBQUVzQixJQUFBQTtBQUFGLE1BQVd0QixLQUFqQjtBQUNBLFFBQU13QixNQUFNLEdBQUdGLElBQUksQ0FDaEJHLEdBRFksQ0FDUkMsSUFBSSxJQUFLLEtBQUlBLElBQUksQ0FBQ2IsTUFBTyxJQUFHYSxJQUFJLENBQUNqQixHQUFJLEtBQUlpQixJQUFJLENBQUNkLEtBQU0sRUFENUMsRUFFWmpCLElBRlksQ0FFUCxJQUZPLENBQWY7QUFJQSxTQUFRO0VBQ1I2QixNQUFPOztDQURQO0FBSUQsQ0FWRDtBQVlBOzs7Ozs7O0FBS0EsTUFBTUcsT0FBTyxHQUFHLG1CQUNkdkMsU0FEYyxFQUVkVSxVQUFVLENBQUM4QixJQUFJLENBQUNDLEtBQU4sQ0FGSSxFQUdkMUIsT0FIYyxFQUlkVyxPQUpjLEVBS2RTLE1BTGMsQ0FBaEI7ZUFTZUksTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBoYXMgZnJvbSAnbG9kYXNoL2hhcyc7XG5pbXBvcnQgZmxvdyBmcm9tICdsb2Rhc2gvZmxvdyc7XG5cbmNvbnN0IGFjdGlvblR5cGVzID0ge1xuICBBRERJVElPTjogJysnLFxuICBTVUJUUkFDVElPTjogJy0nLFxuICBERUZBVUxUOiAnICcsXG59O1xuXG4vKipcbiAqIFJlYWRzIGZpbGVzXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFRvRmlsZTFcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoVG9GaWxlMlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuY29uc3QgcmVhZEZpbGVzID0gKHBhdGhUb0ZpbGUxLCBwYXRoVG9GaWxlMikgPT4ge1xuICBjb25zdCBmaWxlMSA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCBwYXRoVG9GaWxlMSkpO1xuICBjb25zdCBmaWxlMiA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCBwYXRoVG9GaWxlMikpO1xuXG4gIHJldHVybiB7XG4gICAgZmlsZTEsXG4gICAgZmlsZTIsXG4gIH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyBmaWxlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyc2VGblxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5jb25zdCBwYXJzZUZpbGVzID0gcGFyc2VGbiA9PiAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBmaWxlMSwgZmlsZTIgfSA9IHByb3BzO1xuXG4gIHJldHVybiB7XG4gICAgLi4ucHJvcHMsXG4gICAgZGF0YTE6IHBhcnNlRm4oZmlsZTEpLFxuICAgIGRhdGEyOiBwYXJzZUZuKGZpbGUyKSxcbiAgfTtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIGRhdGEga2V5c1xuICogQHBhcmFtIHtPYmplY3R9IHByb3BzXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5jb25zdCBnZXRLZXlzID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgZGF0YTEsIGRhdGEyIH0gPSBwcm9wcztcbiAgY29uc3Qga2V5czEgPSBPYmplY3Qua2V5cyhkYXRhMSk7XG4gIGNvbnN0IGtleXMyID0gT2JqZWN0LmtleXMoZGF0YTIpLmZpbHRlcihrZXkgPT4gIWtleXMxLmluY2x1ZGVzKGtleSkpO1xuXG4gIHJldHVybiB7XG4gICAgLi4ucHJvcHMsXG4gICAga2V5czEsXG4gICAga2V5czIsXG4gIH07XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIG9iamVjdHMgYnkga2V5XG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YTFcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhMlxuICogQHBhcmFtIHtTdHJpbmd9IGtleVxuICogQHJldHVybnMge0FycmF5fVxuICovXG5jb25zdCBnZXREaWZmQnlLZXkgPSAoZGF0YTEsIGRhdGEyLCBrZXkpID0+IHtcbiAgaWYgKGhhcyhkYXRhMSwga2V5KSAmJiBoYXMoZGF0YTIsIGtleSkgJiYgZGF0YTFba2V5XSA9PT0gZGF0YTJba2V5XSkge1xuICAgIHJldHVybiBbeyBrZXksIHZhbHVlOiBkYXRhMVtrZXldLCBhY3Rpb246IGFjdGlvblR5cGVzLkRFRkFVTFQgfV07XG4gIH1cblxuICBpZiAoaGFzKGRhdGExLCBrZXkpICYmIGhhcyhkYXRhMiwga2V5KSAmJiBkYXRhMVtrZXldICE9PSBkYXRhMltrZXldKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsga2V5LCB2YWx1ZTogZGF0YTJba2V5XSwgYWN0aW9uOiBhY3Rpb25UeXBlcy5BRERJVElPTiB9LFxuICAgICAgeyBrZXksIHZhbHVlOiBkYXRhMVtrZXldLCBhY3Rpb246IGFjdGlvblR5cGVzLlNVQlRSQUNUSU9OIH0sXG4gICAgXTtcbiAgfVxuXG4gIGlmIChoYXMoZGF0YTEsIGtleSkgJiYgIWhhcyhkYXRhMiwga2V5KSkge1xuICAgIHJldHVybiBbeyBrZXksIHZhbHVlOiBkYXRhMVtrZXldLCBhY3Rpb246IGFjdGlvblR5cGVzLlNVQlRSQUNUSU9OIH1dO1xuICB9XG5cbiAgaWYgKCFoYXMoZGF0YTEsIGtleSkgJiYgaGFzKGRhdGEyLCBrZXkpKSB7XG4gICAgcmV0dXJuIFt7IGtleSwgdmFsdWU6IGRhdGEyW2tleV0sIGFjdGlvbjogYWN0aW9uVHlwZXMuQURESVRJT04gfV07XG4gIH1cblxuICByZXR1cm4gW3sga2V5LCB2YWx1ZTogZGF0YTFba2V5XSwgYWN0aW9uOiBhY3Rpb25UeXBlcy5ERUZBVUxUIH1dO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGRpZmYgYmV0d2VlbiBkYXRhXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHNcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbmNvbnN0IGdldERpZmYgPSAocHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGRhdGExLFxuICAgIGRhdGEyLFxuICAgIGtleXMxLFxuICAgIGtleXMyLFxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaXRlciA9IChpbmRleCwgYWNjdW11bGF0b3IpID0+IHtcbiAgICBjb25zdCBrZXkxID0ga2V5czFbaW5kZXhdO1xuICAgIGNvbnN0IGtleTIgPSBrZXlzMltpbmRleF07XG5cbiAgICBpZiAoIWtleTEgJiYgIWtleTIpIHJldHVybiBhY2N1bXVsYXRvcjtcblxuICAgIGNvbnN0IGRpZmYxID0gKGtleTEpID8gZ2V0RGlmZkJ5S2V5KGRhdGExLCBkYXRhMiwga2V5MSkgOiBbXTtcbiAgICBjb25zdCBkaWZmMiA9IChrZXkyKSA/IGdldERpZmZCeUtleShkYXRhMSwgZGF0YTIsIGtleTIpIDogW107XG5cbiAgICByZXR1cm4gaXRlcihpbmRleCArIDEsIFsuLi5hY2N1bXVsYXRvciwgLi4uZGlmZjEsIC4uLmRpZmYyXSk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5wcm9wcyxcbiAgICBkaWZmOiBpdGVyKDAsIFtdKSxcbiAgfTtcbn07XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgcmVzdWx0XG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHNcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmNvbnN0IGZvcm1hdCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGRpZmYgfSA9IHByb3BzO1xuICBjb25zdCByZXN1bHQgPSBkaWZmXG4gICAgLm1hcChpdGVtID0+IGAgICR7aXRlbS5hY3Rpb259ICR7aXRlbS5rZXl9OiAke2l0ZW0udmFsdWV9YClcbiAgICAuam9pbignXFxuJyk7XG5cbiAgcmV0dXJuIGB7XG4ke3Jlc3VsdH1cbn1cbmA7XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlcyBkaWZmIGJldHdlZW4gdHdvIGZpbGVzXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFRvRmlsZTFcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoVG9GaWxlMlxuICovXG5jb25zdCBnZW5EaWZmID0gZmxvdyhcbiAgcmVhZEZpbGVzLFxuICBwYXJzZUZpbGVzKEpTT04ucGFyc2UpLFxuICBnZXRLZXlzLFxuICBnZXREaWZmLFxuICBmb3JtYXQsXG4pO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGdlbkRpZmY7XG4iXX0= |
{ | ||
"name": "hexlet-gendiff-util", | ||
"version": "1.0.2", | ||
"version": "1.0.3", | ||
"description": "Gendiff util. Hexlet project level 2.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
16735
162
1