UNPKG

cl-diff-tool

Version:
72 lines (57 loc) 7.82 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _fp = require('lodash/fp'); function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /* eslint-disable no-use-before-define */ var createNode = function createNode() { var before = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var after = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return function (key, state, value, oldValue) { var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; var beforeVal = before[key]; var afterVal = after[key]; if ((0, _fp.isObject)(beforeVal) || (0, _fp.isObject)(afterVal)) { return { key: key, state: state, oldValue: [].concat(_toConsumableArray(buildAst(beforeVal, afterVal, force))), value: [].concat(_toConsumableArray(buildAst(beforeVal, afterVal, force))) }; } return { key: key, value: value, oldValue: oldValue, state: state }; }; }; var buildAst = function buildAst() { var firstConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var secondConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var combinedKeys = (0, _fp.union)(Object.keys(firstConfig), Object.keys(secondConfig)); var makeNode = createNode(firstConfig, secondConfig); return combinedKeys.map(function (key) { var beforeVal = firstConfig[key]; var afterVal = secondConfig[key]; var isAdded = !beforeVal && afterVal; var isRemoved = beforeVal && !afterVal; if (!force && (0, _fp.isObject)(beforeVal || afterVal)) { if (!(isAdded && isRemoved) && !(beforeVal && afterVal)) { return makeNode(key, isAdded ? 'added' : 'removed', beforeVal || afterVal, null, true); } return makeNode(key, false, beforeVal || afterVal, null, false); } if (force || beforeVal === afterVal) { return makeNode(key, 'notChanged', beforeVal || afterVal, null, force); } if (isRemoved) { return makeNode(key, 'removed', beforeVal); } if (isAdded) { return makeNode(key, 'added', afterVal); } return makeNode(key, 'updated', afterVal, beforeVal); }); }; exports.default = function (beforeConfig, afterConfig) { return buildAst(beforeConfig, afterConfig); }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZEFzdC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVOb2RlIiwiYmVmb3JlIiwiYWZ0ZXIiLCJrZXkiLCJzdGF0ZSIsInZhbHVlIiwib2xkVmFsdWUiLCJmb3JjZSIsImJlZm9yZVZhbCIsImFmdGVyVmFsIiwiYnVpbGRBc3QiLCJmaXJzdENvbmZpZyIsInNlY29uZENvbmZpZyIsImNvbWJpbmVkS2V5cyIsIk9iamVjdCIsImtleXMiLCJtYWtlTm9kZSIsIm1hcCIsImlzQWRkZWQiLCJpc1JlbW92ZWQiLCJiZWZvcmVDb25maWciLCJhZnRlckNvbmZpZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7O29NQUZBOztBQUlBLElBQU1BLGFBQWEsU0FBYkEsVUFBYTtBQUFBLE1BQUNDLE1BQUQsdUVBQVUsRUFBVjtBQUFBLE1BQWNDLEtBQWQsdUVBQXNCLEVBQXRCO0FBQUEsU0FDakIsVUFBQ0MsR0FBRCxFQUFNQyxLQUFOLEVBQWFDLEtBQWIsRUFBb0JDLFFBQXBCLEVBQWdEO0FBQUEsUUFBbEJDLEtBQWtCLHVFQUFWLEtBQVU7O0FBQzlDLFFBQU1DLFlBQVlQLE9BQU9FLEdBQVAsQ0FBbEI7QUFDQSxRQUFNTSxXQUFXUCxNQUFNQyxHQUFOLENBQWpCOztBQUVBLFFBQUksa0JBQVNLLFNBQVQsS0FBdUIsa0JBQVNDLFFBQVQsQ0FBM0IsRUFBK0M7QUFDN0MsYUFBTztBQUNMTixnQkFESztBQUVMQyxvQkFGSztBQUdMRSwrQ0FBY0ksU0FBU0YsU0FBVCxFQUFvQkMsUUFBcEIsRUFBOEJGLEtBQTlCLENBQWQsRUFISztBQUlMRiw0Q0FBV0ssU0FBU0YsU0FBVCxFQUFvQkMsUUFBcEIsRUFBOEJGLEtBQTlCLENBQVg7QUFKSyxPQUFQO0FBTUQ7QUFDRCxXQUFPLEVBQUVKLFFBQUYsRUFBT0UsWUFBUCxFQUFjQyxrQkFBZCxFQUF3QkYsWUFBeEIsRUFBUDtBQUNELEdBZGdCO0FBQUEsQ0FBbkI7O0FBZ0JBLElBQU1NLFdBQVcsU0FBWEEsUUFBVyxHQUF3RDtBQUFBLE1BQXZEQyxXQUF1RCx1RUFBekMsRUFBeUM7QUFBQSxNQUFyQ0MsWUFBcUMsdUVBQXRCLEVBQXNCO0FBQUEsTUFBbEJMLEtBQWtCLHVFQUFWLEtBQVU7O0FBQ3ZFLE1BQU1NLGVBQWUsZUFBTUMsT0FBT0MsSUFBUCxDQUFZSixXQUFaLENBQU4sRUFBZ0NHLE9BQU9DLElBQVAsQ0FBWUgsWUFBWixDQUFoQyxDQUFyQjtBQUNBLE1BQU1JLFdBQVdoQixXQUFXVyxXQUFYLEVBQXdCQyxZQUF4QixDQUFqQjs7QUFFQSxTQUFPQyxhQUFhSSxHQUFiLENBQWlCLFVBQUNkLEdBQUQsRUFBUztBQUMvQixRQUFNSyxZQUFZRyxZQUFZUixHQUFaLENBQWxCO0FBQ0EsUUFBTU0sV0FBV0csYUFBYVQsR0FBYixDQUFqQjtBQUNBLFFBQU1lLFVBQVUsQ0FBQ1YsU0FBRCxJQUFjQyxRQUE5QjtBQUNBLFFBQU1VLFlBQVlYLGFBQWEsQ0FBQ0MsUUFBaEM7O0FBRUEsUUFBSSxDQUFDRixLQUFELElBQVcsa0JBQVNDLGFBQWFDLFFBQXRCLENBQWYsRUFBaUQ7QUFDL0MsVUFBSSxFQUFFUyxXQUFXQyxTQUFiLEtBQTJCLEVBQUVYLGFBQWFDLFFBQWYsQ0FBL0IsRUFBeUQ7QUFDdkQsZUFBT08sU0FBU2IsR0FBVCxFQUFjZSxVQUFVLE9BQVYsR0FBb0IsU0FBbEMsRUFBNkNWLGFBQWFDLFFBQTFELEVBQW9FLElBQXBFLEVBQTBFLElBQTFFLENBQVA7QUFDRDtBQUNELGFBQU9PLFNBQVNiLEdBQVQsRUFBYyxLQUFkLEVBQXFCSyxhQUFhQyxRQUFsQyxFQUE0QyxJQUE1QyxFQUFrRCxLQUFsRCxDQUFQO0FBQ0Q7O0FBRUQsUUFBSUYsU0FBU0MsY0FBY0MsUUFBM0IsRUFBcUM7QUFDbkMsYUFBT08sU0FBU2IsR0FBVCxFQUFjLFlBQWQsRUFBNEJLLGFBQWFDLFFBQXpDLEVBQW1ELElBQW5ELEVBQXlERixLQUF6RCxDQUFQO0FBQ0Q7O0FBRUQsUUFBSVksU0FBSixFQUFlO0FBQ2IsYUFBT0gsU0FBU2IsR0FBVCxFQUFjLFNBQWQsRUFBeUJLLFNBQXpCLENBQVA7QUFDRDs7QUFFRCxRQUFJVSxPQUFKLEVBQWE7QUFDWCxhQUFPRixTQUFTYixHQUFULEVBQWMsT0FBZCxFQUF1Qk0sUUFBdkIsQ0FBUDtBQUNEOztBQUVELFdBQU9PLFNBQVNiLEdBQVQsRUFBYyxTQUFkLEVBQXlCTSxRQUF6QixFQUFtQ0QsU0FBbkMsQ0FBUDtBQUNELEdBMUJNLENBQVA7QUEyQkQsQ0EvQkQ7O2tCQWlDZSxVQUFDWSxZQUFELEVBQWVDLFdBQWY7QUFBQSxTQUNiWCxTQUFTVSxZQUFULEVBQXVCQyxXQUF2QixDQURhO0FBQUEsQyIsImZpbGUiOiJidWlsZEFzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovXG5cbmltcG9ydCB7IGlzT2JqZWN0LCB1bmlvbiB9IGZyb20gJ2xvZGFzaC9mcCc7XG5cbmNvbnN0IGNyZWF0ZU5vZGUgPSAoYmVmb3JlID0ge30sIGFmdGVyID0ge30pID0+XG4gIChrZXksIHN0YXRlLCB2YWx1ZSwgb2xkVmFsdWUsIGZvcmNlID0gZmFsc2UpID0+IHtcbiAgICBjb25zdCBiZWZvcmVWYWwgPSBiZWZvcmVba2V5XTtcbiAgICBjb25zdCBhZnRlclZhbCA9IGFmdGVyW2tleV07XG5cbiAgICBpZiAoaXNPYmplY3QoYmVmb3JlVmFsKSB8fCBpc09iamVjdChhZnRlclZhbCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleSxcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIG9sZFZhbHVlOiBbLi4uYnVpbGRBc3QoYmVmb3JlVmFsLCBhZnRlclZhbCwgZm9yY2UpXSxcbiAgICAgICAgdmFsdWU6IFsuLi5idWlsZEFzdChiZWZvcmVWYWwsIGFmdGVyVmFsLCBmb3JjZSldLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsga2V5LCB2YWx1ZSwgb2xkVmFsdWUsIHN0YXRlIH07XG4gIH07XG5cbmNvbnN0IGJ1aWxkQXN0ID0gKGZpcnN0Q29uZmlnID0ge30sIHNlY29uZENvbmZpZyA9IHt9LCBmb3JjZSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IGNvbWJpbmVkS2V5cyA9IHVuaW9uKE9iamVjdC5rZXlzKGZpcnN0Q29uZmlnKSwgT2JqZWN0LmtleXMoc2Vjb25kQ29uZmlnKSk7XG4gIGNvbnN0IG1ha2VOb2RlID0gY3JlYXRlTm9kZShmaXJzdENvbmZpZywgc2Vjb25kQ29uZmlnKTtcblxuICByZXR1cm4gY29tYmluZWRLZXlzLm1hcCgoa2V5KSA9PiB7XG4gICAgY29uc3QgYmVmb3JlVmFsID0gZmlyc3RDb25maWdba2V5XTtcbiAgICBjb25zdCBhZnRlclZhbCA9IHNlY29uZENvbmZpZ1trZXldO1xuICAgIGNvbnN0IGlzQWRkZWQgPSAhYmVmb3JlVmFsICYmIGFmdGVyVmFsO1xuICAgIGNvbnN0IGlzUmVtb3ZlZCA9IGJlZm9yZVZhbCAmJiAhYWZ0ZXJWYWw7XG5cbiAgICBpZiAoIWZvcmNlICYmIChpc09iamVjdChiZWZvcmVWYWwgfHwgYWZ0ZXJWYWwpKSkge1xuICAgICAgaWYgKCEoaXNBZGRlZCAmJiBpc1JlbW92ZWQpICYmICEoYmVmb3JlVmFsICYmIGFmdGVyVmFsKSkge1xuICAgICAgICByZXR1cm4gbWFrZU5vZGUoa2V5LCBpc0FkZGVkID8gJ2FkZGVkJyA6ICdyZW1vdmVkJywgYmVmb3JlVmFsIHx8IGFmdGVyVmFsLCBudWxsLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYWtlTm9kZShrZXksIGZhbHNlLCBiZWZvcmVWYWwgfHwgYWZ0ZXJWYWwsIG51bGwsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAoZm9yY2UgfHwgYmVmb3JlVmFsID09PSBhZnRlclZhbCkge1xuICAgICAgcmV0dXJuIG1ha2VOb2RlKGtleSwgJ25vdENoYW5nZWQnLCBiZWZvcmVWYWwgfHwgYWZ0ZXJWYWwsIG51bGwsIGZvcmNlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNSZW1vdmVkKSB7XG4gICAgICByZXR1cm4gbWFrZU5vZGUoa2V5LCAncmVtb3ZlZCcsIGJlZm9yZVZhbCk7XG4gICAgfVxuXG4gICAgaWYgKGlzQWRkZWQpIHtcbiAgICAgIHJldHVybiBtYWtlTm9kZShrZXksICdhZGRlZCcsIGFmdGVyVmFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFrZU5vZGUoa2V5LCAndXBkYXRlZCcsIGFmdGVyVmFsLCBiZWZvcmVWYWwpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IChiZWZvcmVDb25maWcsIGFmdGVyQ29uZmlnKSA9PlxuICBidWlsZEFzdChiZWZvcmVDb25maWcsIGFmdGVyQ29uZmlnKTtcbiJdfQ==