1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = void 0;
|
7 |
|
8 | var _lodash = _interopRequireDefault(require("lodash"));
|
9 |
|
10 | var _makeStreamConfig = _interopRequireDefault(require("./makeStreamConfig"));
|
11 |
|
12 | var _drawRow = _interopRequireDefault(require("./drawRow"));
|
13 |
|
14 | var _drawBorder = require("./drawBorder");
|
15 |
|
16 | var _stringifyTableData = _interopRequireDefault(require("./stringifyTableData"));
|
17 |
|
18 | var _truncateTableData = _interopRequireDefault(require("./truncateTableData"));
|
19 |
|
20 | var _mapDataUsingRowHeightIndex = _interopRequireDefault(require("./mapDataUsingRowHeightIndex"));
|
21 |
|
22 | var _alignTableData = _interopRequireDefault(require("./alignTableData"));
|
23 |
|
24 | var _padTableData = _interopRequireDefault(require("./padTableData"));
|
25 |
|
26 | var _calculateRowHeightIndex = _interopRequireDefault(require("./calculateRowHeightIndex"));
|
27 |
|
28 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 | const prepareData = (data, config) => {
|
36 | let rows;
|
37 | rows = (0, _stringifyTableData.default)(data);
|
38 | rows = (0, _truncateTableData.default)(data, config);
|
39 | const rowHeightIndex = (0, _calculateRowHeightIndex.default)(rows, config);
|
40 | rows = (0, _mapDataUsingRowHeightIndex.default)(rows, rowHeightIndex, config);
|
41 | rows = (0, _alignTableData.default)(rows, config);
|
42 | rows = (0, _padTableData.default)(rows, config);
|
43 | return rows;
|
44 | };
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 | const create = (row, columnWidthIndex, config) => {
|
54 | const rows = prepareData([row], config);
|
55 | const body = rows.map(literalRow => {
|
56 | return (0, _drawRow.default)(literalRow, config.border);
|
57 | }).join('');
|
58 | let output;
|
59 | output = '';
|
60 | output += (0, _drawBorder.drawBorderTop)(columnWidthIndex, config.border);
|
61 | output += body;
|
62 | output += (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border);
|
63 | output = _lodash.default.trimEnd(output);
|
64 | process.stdout.write(output);
|
65 | };
|
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 |
|
72 |
|
73 |
|
74 | const append = (row, columnWidthIndex, config) => {
|
75 | const rows = prepareData([row], config);
|
76 | const body = rows.map(literalRow => {
|
77 | return (0, _drawRow.default)(literalRow, config.border);
|
78 | }).join('');
|
79 | let output;
|
80 | output = '\r\u001B[K';
|
81 | output += (0, _drawBorder.drawBorderJoin)(columnWidthIndex, config.border);
|
82 | output += body;
|
83 | output += (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border);
|
84 | output = _lodash.default.trimEnd(output);
|
85 | process.stdout.write(output);
|
86 | };
|
87 |
|
88 |
|
89 |
|
90 |
|
91 |
|
92 |
|
93 | const createStream = (userConfig = {}) => {
|
94 | const config = (0, _makeStreamConfig.default)(userConfig);
|
95 |
|
96 | const columnWidthIndex = _lodash.default.values(_lodash.default.mapValues(config.columns, column => {
|
97 | return column.width + column.paddingLeft + column.paddingRight;
|
98 | }));
|
99 |
|
100 | let empty;
|
101 | empty = true;
|
102 | return {
|
103 | |
104 |
|
105 |
|
106 |
|
107 | write: row => {
|
108 | if (row.length !== config.columnCount) {
|
109 | throw new Error('Row cell count does not match the config.columnCount.');
|
110 | }
|
111 |
|
112 | if (empty) {
|
113 | empty = false;
|
114 | return create(row, columnWidthIndex, config);
|
115 | } else {
|
116 | return append(row, columnWidthIndex, config);
|
117 | }
|
118 | }
|
119 | };
|
120 | };
|
121 |
|
122 | var _default = createStream;
|
123 | exports.default = _default;
|
124 |
|
\ | No newline at end of file |