94 lines
2.0 KiB
JavaScript
94 lines
2.0 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.default = diffLogger;
|
||
|
|
||
|
var _deepDiff = require('deep-diff');
|
||
|
|
||
|
var _deepDiff2 = _interopRequireDefault(_deepDiff);
|
||
|
|
||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
||
|
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); } }
|
||
|
|
||
|
// https://github.com/flitbit/diff#differences
|
||
|
var dictionary = {
|
||
|
'E': {
|
||
|
color: '#2196F3',
|
||
|
text: 'CHANGED:'
|
||
|
},
|
||
|
'N': {
|
||
|
color: '#4CAF50',
|
||
|
text: 'ADDED:'
|
||
|
},
|
||
|
'D': {
|
||
|
color: '#F44336',
|
||
|
text: 'DELETED:'
|
||
|
},
|
||
|
'A': {
|
||
|
color: '#2196F3',
|
||
|
text: 'ARRAY:'
|
||
|
}
|
||
|
};
|
||
|
|
||
|
function style(kind) {
|
||
|
return 'color: ' + dictionary[kind].color + '; font-weight: bold';
|
||
|
}
|
||
|
|
||
|
function render(diff) {
|
||
|
var kind = diff.kind,
|
||
|
path = diff.path,
|
||
|
lhs = diff.lhs,
|
||
|
rhs = diff.rhs,
|
||
|
index = diff.index,
|
||
|
item = diff.item;
|
||
|
|
||
|
|
||
|
switch (kind) {
|
||
|
case 'E':
|
||
|
return [path.join('.'), lhs, '\u2192', rhs];
|
||
|
case 'N':
|
||
|
return [path.join('.'), rhs];
|
||
|
case 'D':
|
||
|
return [path.join('.')];
|
||
|
case 'A':
|
||
|
return [path.join('.') + '[' + index + ']', item];
|
||
|
default:
|
||
|
return [];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function diffLogger(prevState, newState, logger, isCollapsed) {
|
||
|
var diff = (0, _deepDiff2.default)(prevState, newState);
|
||
|
|
||
|
try {
|
||
|
if (isCollapsed) {
|
||
|
logger.groupCollapsed('diff');
|
||
|
} else {
|
||
|
logger.group('diff');
|
||
|
}
|
||
|
} catch (e) {
|
||
|
logger.log('diff');
|
||
|
}
|
||
|
|
||
|
if (diff) {
|
||
|
diff.forEach(function (elem) {
|
||
|
var kind = elem.kind;
|
||
|
|
||
|
var output = render(elem);
|
||
|
|
||
|
logger.log.apply(logger, ['%c ' + dictionary[kind].text, style(kind)].concat(_toConsumableArray(output)));
|
||
|
});
|
||
|
} else {
|
||
|
logger.log('\u2014\u2014 no diff \u2014\u2014');
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
logger.groupEnd();
|
||
|
} catch (e) {
|
||
|
logger.log('\u2014\u2014 diff end \u2014\u2014 ');
|
||
|
}
|
||
|
}
|
||
|
module.exports = exports['default'];
|