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 | var path = diff.path;
|
43 | var lhs = diff.lhs;
|
44 | var rhs = diff.rhs;
|
45 | var index = diff.index;
|
46 | var item = diff.item;
|
47 |
|
48 | switch (kind) {
|
49 | case 'E':
|
50 | return [path.join('.'), lhs, '→', rhs];
|
51 | case 'N':
|
52 | return [path.join('.'), rhs];
|
53 | case 'D':
|
54 | return [path.join('.')];
|
55 | case 'A':
|
56 | return [path.join('.') + '[' + index + ']', item];
|
57 | default:
|
58 | return [];
|
59 | }
|
60 | }
|
61 |
|
62 | function diffLogger(prevState, newState, logger, isCollapsed) {
|
63 | var diff = (0, _deepDiff2.default)(prevState, newState);
|
64 |
|
65 | try {
|
66 | if (isCollapsed) {
|
67 | logger.groupCollapsed('diff');
|
68 | } else {
|
69 | logger.group('diff');
|
70 | }
|
71 | } catch (e) {
|
72 | logger.log('diff');
|
73 | }
|
74 |
|
75 | if (diff) {
|
76 | diff.forEach(function (elem) {
|
77 | var kind = elem.kind;
|
78 |
|
79 | var output = render(elem);
|
80 |
|
81 | logger.log.apply(logger, ['%c ' + dictionary[kind].text, style(kind)].concat(_toConsumableArray(output)));
|
82 | });
|
83 | } else {
|
84 | logger.log('—— no diff ——');
|
85 | }
|
86 |
|
87 | try {
|
88 | logger.groupEnd();
|
89 | } catch (e) {
|
90 | logger.log('—— diff end —— ');
|
91 | }
|
92 | }
|
93 | module.exports = exports['default']; |
\ | No newline at end of file |