1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
8 |
|
9 | exports.printBuffer = printBuffer;
|
10 |
|
11 | var _helpers = require('./helpers');
|
12 |
|
13 | var _diff = require('./diff');
|
14 |
|
15 | var _diff2 = _interopRequireDefault(_diff);
|
16 |
|
17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18 |
|
19 | 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); } }
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 | function getLogLevel(level, action, payload, type) {
|
32 | switch (typeof level === 'undefined' ? 'undefined' : _typeof(level)) {
|
33 | case 'object':
|
34 | return typeof level[type] === 'function' ? level[type].apply(level, _toConsumableArray(payload)) : level[type];
|
35 | case 'function':
|
36 | return level(action);
|
37 | default:
|
38 | return level;
|
39 | }
|
40 | }
|
41 |
|
42 | function defaultTitleFormatter(options) {
|
43 | var timestamp = options.timestamp,
|
44 | duration = options.duration;
|
45 |
|
46 |
|
47 | return function (action, time, took) {
|
48 | var parts = ['action'];
|
49 |
|
50 | if (timestamp) parts.push('@ ' + time);
|
51 | parts.push(String(action.type));
|
52 | if (duration) parts.push('(in ' + took.toFixed(2) + ' ms)');
|
53 |
|
54 | return parts.join(' ');
|
55 | };
|
56 | }
|
57 |
|
58 | function printBuffer(buffer, options) {
|
59 | var logger = options.logger,
|
60 | actionTransformer = options.actionTransformer,
|
61 | _options$titleFormatt = options.titleFormatter,
|
62 | titleFormatter = _options$titleFormatt === undefined ? defaultTitleFormatter(options) : _options$titleFormatt,
|
63 | collapsed = options.collapsed,
|
64 | colors = options.colors,
|
65 | level = options.level,
|
66 | diff = options.diff;
|
67 |
|
68 |
|
69 | buffer.forEach(function (logEntry, key) {
|
70 | var started = logEntry.started,
|
71 | startedTime = logEntry.startedTime,
|
72 | action = logEntry.action,
|
73 | prevState = logEntry.prevState,
|
74 | error = logEntry.error;
|
75 | var took = logEntry.took,
|
76 | nextState = logEntry.nextState;
|
77 |
|
78 | var nextEntry = buffer[key + 1];
|
79 |
|
80 | if (nextEntry) {
|
81 | nextState = nextEntry.prevState;
|
82 | took = nextEntry.started - started;
|
83 | }
|
84 |
|
85 |
|
86 | var formattedAction = actionTransformer(action);
|
87 | var isCollapsed = typeof collapsed === 'function' ? collapsed(function () {
|
88 | return nextState;
|
89 | }, action, logEntry) : collapsed;
|
90 |
|
91 | var formattedTime = (0, _helpers.formatTime)(startedTime);
|
92 | var titleCSS = colors.title ? 'color: ' + colors.title(formattedAction) + ';' : null;
|
93 | var title = titleFormatter(formattedAction, formattedTime, took);
|
94 |
|
95 |
|
96 | try {
|
97 | if (isCollapsed) {
|
98 | if (colors.title) logger.groupCollapsed('%c ' + title, titleCSS);else logger.groupCollapsed(title);
|
99 | } else {
|
100 | if (colors.title) logger.group('%c ' + title, titleCSS);else logger.group(title);
|
101 | }
|
102 | } catch (e) {
|
103 | logger.log(title);
|
104 | }
|
105 |
|
106 | var prevStateLevel = getLogLevel(level, formattedAction, [prevState], 'prevState');
|
107 | var actionLevel = getLogLevel(level, formattedAction, [formattedAction], 'action');
|
108 | var errorLevel = getLogLevel(level, formattedAction, [error, prevState], 'error');
|
109 | var nextStateLevel = getLogLevel(level, formattedAction, [nextState], 'nextState');
|
110 |
|
111 | if (prevStateLevel) {
|
112 | if (colors.prevState) logger[prevStateLevel]('%c prev state', 'color: ' + colors.prevState(prevState) + '; font-weight: bold', prevState);else logger[prevStateLevel]('prev state', prevState);
|
113 | }
|
114 |
|
115 | if (actionLevel) {
|
116 | if (colors.action) logger[actionLevel]('%c action', 'color: ' + colors.action(formattedAction) + '; font-weight: bold', formattedAction);else logger[actionLevel]('action', formattedAction);
|
117 | }
|
118 |
|
119 | if (error && errorLevel) {
|
120 | if (colors.error) logger[errorLevel]('%c error', 'color: ' + colors.error(error, prevState) + '; font-weight: bold', error);else logger[errorLevel]('error', error);
|
121 | }
|
122 |
|
123 | if (nextStateLevel) {
|
124 | if (colors.nextState) logger[nextStateLevel]('%c next state', 'color: ' + colors.nextState(nextState) + '; font-weight: bold', nextState);else logger[nextStateLevel]('next state', nextState);
|
125 | }
|
126 |
|
127 | if (diff) {
|
128 | (0, _diff2.default)(prevState, nextState, logger, isCollapsed);
|
129 | }
|
130 |
|
131 | try {
|
132 | logger.groupEnd();
|
133 | } catch (e) {
|
134 | logger.log('\u2014\u2014 log end \u2014\u2014');
|
135 | }
|
136 | });
|
137 | } |
\ | No newline at end of file |