cl-diff-tool
Version:
command line diff tool
38 lines (31 loc) • 4.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _union = require('lodash/fp/union');
var _union2 = _interopRequireDefault(_union);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var createRow = function createRow(value, sort) {
return { value: '\n\t' + value, sort: sort };
};
exports.default = function (firstConfig, secondConfig) {
var combinedKeys = (0, _union2.default)(Object.keys(firstConfig), Object.keys(secondConfig));
var differences = combinedKeys.map(function (key) {
if (!Object.hasOwnProperty.call(secondConfig, key)) {
return createRow('- ' + key + ': ' + firstConfig[key], 2);
}
if (!Object.hasOwnProperty.call(firstConfig, key)) {
return createRow('+ ' + key + ': ' + secondConfig[key], 3);
}
if (secondConfig[key] === firstConfig[key]) {
return createRow(' ' + key + ': ' + secondConfig[key], 0);
}
return createRow('+ ' + key + ': ' + secondConfig[key] + '\n\t- ' + key + ': ' + firstConfig[key], 1);
}).sort(function (a, b) {
return a.sort - b.sort;
}).map(function (t) {
return t.value;
});
return '{' + differences.join('') + '\n}';
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaWZmLmpzIl0sIm5hbWVzIjpbImNyZWF0ZVJvdyIsInZhbHVlIiwic29ydCIsImZpcnN0Q29uZmlnIiwic2Vjb25kQ29uZmlnIiwiY29tYmluZWRLZXlzIiwiT2JqZWN0Iiwia2V5cyIsImRpZmZlcmVuY2VzIiwibWFwIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYSIsImIiLCJ0Iiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7OztBQUVBLElBQU1BLFlBQVksU0FBWkEsU0FBWSxDQUFDQyxLQUFELEVBQVFDLElBQVI7QUFBQSxTQUNmLEVBQUVELGdCQUFjQSxLQUFoQixFQUF5QkMsVUFBekIsRUFEZTtBQUFBLENBQWxCOztrQkFHZSxVQUFDQyxXQUFELEVBQWNDLFlBQWQsRUFBK0I7QUFDNUMsTUFBTUMsZUFBZSxxQkFBTUMsT0FBT0MsSUFBUCxDQUFZSixXQUFaLENBQU4sRUFBZ0NHLE9BQU9DLElBQVAsQ0FBWUgsWUFBWixDQUFoQyxDQUFyQjs7QUFFQSxNQUFNSSxjQUFjSCxhQUFhSSxHQUFiLENBQWlCLFVBQUNDLEdBQUQsRUFBUztBQUM1QyxRQUFJLENBQUNKLE9BQU9LLGNBQVAsQ0FBc0JDLElBQXRCLENBQTJCUixZQUEzQixFQUF5Q00sR0FBekMsQ0FBTCxFQUFvRDtBQUNsRCxhQUFPVixpQkFBZVUsR0FBZixVQUF1QlAsWUFBWU8sR0FBWixDQUF2QixFQUEyQyxDQUEzQyxDQUFQO0FBQ0Q7QUFDRCxRQUFJLENBQUNKLE9BQU9LLGNBQVAsQ0FBc0JDLElBQXRCLENBQTJCVCxXQUEzQixFQUF3Q08sR0FBeEMsQ0FBTCxFQUFtRDtBQUNqRCxhQUFPVixpQkFBZVUsR0FBZixVQUF1Qk4sYUFBYU0sR0FBYixDQUF2QixFQUE0QyxDQUE1QyxDQUFQO0FBQ0Q7QUFDRCxRQUFJTixhQUFhTSxHQUFiLE1BQXNCUCxZQUFZTyxHQUFaLENBQTFCLEVBQTRDO0FBQzFDLGFBQU9WLGlCQUFlVSxHQUFmLFVBQXVCTixhQUFhTSxHQUFiLENBQXZCLEVBQTRDLENBQTVDLENBQVA7QUFDRDtBQUNELFdBQU9WLGlCQUFlVSxHQUFmLFVBQXVCTixhQUFhTSxHQUFiLENBQXZCLGNBQWlEQSxHQUFqRCxVQUF5RFAsWUFBWU8sR0FBWixDQUF6RCxFQUE2RSxDQUE3RSxDQUFQO0FBQ0QsR0FYbUIsRUFXakJSLElBWGlCLENBV1osVUFBQ1csQ0FBRCxFQUFJQyxDQUFKO0FBQUEsV0FBVUQsRUFBRVgsSUFBRixHQUFTWSxFQUFFWixJQUFyQjtBQUFBLEdBWFksRUFXZU8sR0FYZixDQVdtQjtBQUFBLFdBQUtNLEVBQUVkLEtBQVA7QUFBQSxHQVhuQixDQUFwQjtBQVlBLGVBQVdPLFlBQVlRLElBQVosQ0FBaUIsRUFBakIsQ0FBWDtBQUNELEMiLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1bmlvbiBmcm9tICdsb2Rhc2gvZnAvdW5pb24nO1xuXG5jb25zdCBjcmVhdGVSb3cgPSAodmFsdWUsIHNvcnQpID0+XG4gICh7IHZhbHVlOiBgXFxuXFx0JHt2YWx1ZX1gLCBzb3J0IH0pO1xuXG5leHBvcnQgZGVmYXVsdCAoZmlyc3RDb25maWcsIHNlY29uZENvbmZpZykgPT4ge1xuICBjb25zdCBjb21iaW5lZEtleXMgPSB1bmlvbihPYmplY3Qua2V5cyhmaXJzdENvbmZpZyksIE9iamVjdC5rZXlzKHNlY29uZENvbmZpZykpO1xuXG4gIGNvbnN0IGRpZmZlcmVuY2VzID0gY29tYmluZWRLZXlzLm1hcCgoa2V5KSA9PiB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChzZWNvbmRDb25maWcsIGtleSkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVSb3coYC0gJHtrZXl9OiAke2ZpcnN0Q29uZmlnW2tleV19YCwgMik7XG4gICAgfVxuICAgIGlmICghT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoZmlyc3RDb25maWcsIGtleSkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVSb3coYCsgJHtrZXl9OiAke3NlY29uZENvbmZpZ1trZXldfWAsIDMpO1xuICAgIH1cbiAgICBpZiAoc2Vjb25kQ29uZmlnW2tleV0gPT09IGZpcnN0Q29uZmlnW2tleV0pIHtcbiAgICAgIHJldHVybiBjcmVhdGVSb3coYCAgJHtrZXl9OiAke3NlY29uZENvbmZpZ1trZXldfWAsIDApO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlUm93KGArICR7a2V5fTogJHtzZWNvbmRDb25maWdba2V5XX1cXG5cXHQtICR7a2V5fTogJHtmaXJzdENvbmZpZ1trZXldfWAsIDEpO1xuICB9KS5zb3J0KChhLCBiKSA9PiBhLnNvcnQgLSBiLnNvcnQpLm1hcCh0ID0+IHQudmFsdWUpO1xuICByZXR1cm4gYHske2RpZmZlcmVuY2VzLmpvaW4oJycpfVxcbn1gO1xufTtcbiJdfQ==