GT2/GT2-Android/node_modules/redux-logger/lib/diff.js

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'];