UNPKG

2.13 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _chalk = require('chalk');
8
9var _chalk2 = _interopRequireDefault(_chalk);
10
11var _cli = require('../utils/cli');
12
13var _webpack = require('../utils/webpack');
14
15var _consts = require('../utils/consts');
16
17var _logUpdate = require('../utils/log-update');
18
19var _logUpdate2 = _interopRequireDefault(_logUpdate);
20
21function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
23const logUpdate = new _logUpdate2.default(); /* eslint-disable no-console */
24
25
26let lastRender = Date.now();
27
28class FancyReporter {
29 allDone() {
30 logUpdate.done();
31 }
32
33 done(context) {
34 this._renderStates(context.statesArray);
35
36 if (context.hasErrors) {
37 logUpdate.done();
38 }
39 }
40
41 progress(context) {
42 if (Date.now() - lastRender > 50) {
43 this._renderStates(context.statesArray);
44 }
45 }
46
47 _renderStates(statesArray) {
48 lastRender = Date.now();
49
50 const renderedStates = statesArray.map(c => this._renderState(c)).join('\n\n');
51
52 logUpdate.render('\n' + renderedStates + '\n');
53 }
54
55 _renderState(state) {
56 const color = (0, _cli.colorize)(state.color);
57
58 let line1;
59 let line2;
60
61 if (state.progress >= 0 && state.progress < 100) {
62 // Running
63 line1 = [color(_consts.BULLET), color(state.name), (0, _cli.renderBar)(state.progress, state.color), state.message, `(${state.progress || 0}%)`, _chalk2.default.grey(state.details[0] || ''), _chalk2.default.grey(state.details[1] || '')].join(' ');
64
65 line2 = state.request ? ' ' + _chalk2.default.grey((0, _cli.ellipsisLeft)((0, _webpack.formatRequest)(state.request), logUpdate.columns)) : '';
66 } else {
67 let icon = ' ';
68
69 if (state.hasErrors) {
70 icon = _consts.CROSS;
71 } else if (state.progress === 100) {
72 icon = _consts.TICK;
73 } else if (state.progress === -1) {
74 icon = _consts.CIRCLE_OPEN;
75 }
76
77 line1 = color(`${icon} ${state.name}`);
78 line2 = _chalk2.default.grey(' ' + state.message);
79 }
80
81 return line1 + '\n' + line2;
82 }
83}
84exports.default = FancyReporter;
\No newline at end of file