1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = diffLogger;
|
7 |
|
8 | var _deepDiff = require('deep-diff');
|
9 |
|
10 | var _deepDiff2 = _interopRequireDefault(_deepDiff);
|
11 |
|
12 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13 |
|
14 | 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); } }
|
15 |
|
16 |
|
17 | var dictionary = {
|
18 | 'E': {
|
19 | color: '#2196F3',
|
20 | text: 'CHANGED:'
|
21 | },
|
22 | 'N': {
|
23 | color: '#4CAF50',
|
24 | text: 'ADDED:'
|
25 | },
|
26 | 'D': {
|
27 | color: '#F44336',
|
28 | text: 'DELETED:'
|
29 | },
|
30 | 'A': {
|
31 | color: '#2196F3',
|
32 | text: 'ARRAY:'
|
33 | }
|
34 | };
|
35 |
|
36 | function style(kind) {
|
37 | return 'color: ' + dictionary[kind].color + '; font-weight: bold';
|
38 | }
|
39 |
|
40 | function render(diff) {
|
41 | var kind = diff.kind,
|
42 | path = diff.path,
|
43 | lhs = diff.lhs,
|
44 | rhs = diff.rhs,
|
45 | index = diff.index,
|
46 | item = diff.item;
|
47 |
|
48 |
|
49 | switch (kind) {
|
50 | case 'E':
|
51 | return [path.join('.'), lhs, '\u2192', rhs];
|
52 | case 'N':
|
53 | return [path.join('.'), rhs];
|
54 | case 'D':
|
55 | return [path.join('.')];
|
56 | case 'A':
|
57 | return [path.join('.') + '[' + index + ']', item];
|
58 | default:
|
59 | return [];
|
60 | }
|
61 | }
|
62 |
|
63 | function diffLogger(prevState, newState, logger, isCollapsed) {
|
64 | var diff = (0, _deepDiff2.default)(prevState, newState);
|
65 |
|
66 | try {
|
67 | if (isCollapsed) {
|
68 | logger.groupCollapsed('diff');
|
69 | } else {
|
70 | logger.group('diff');
|
71 | }
|
72 | } catch (e) {
|
73 | logger.log('diff');
|
74 | }
|
75 |
|
76 | if (diff) {
|
77 | diff.forEach(function (elem) {
|
78 | var kind = elem.kind;
|
79 |
|
80 | var output = render(elem);
|
81 |
|
82 | logger.log.apply(logger, ['%c ' + dictionary[kind].text, style(kind)].concat(_toConsumableArray(output)));
|
83 | });
|
84 | } else {
|
85 | logger.log('\u2014\u2014 no diff \u2014\u2014');
|
86 | }
|
87 |
|
88 | try {
|
89 | logger.groupEnd();
|
90 | } catch (e) {
|
91 | logger.log('\u2014\u2014 diff end \u2014\u2014 ');
|
92 | }
|
93 | }
|
94 | module.exports = exports['default']; |
\ | No newline at end of file |