| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = void 0; | |
| var _mapValues2 = _interopRequireDefault(require("lodash/mapValues")); | |
| var _values2 = _interopRequireDefault(require("lodash/values")); | |
| var _trimEnd2 = _interopRequireDefault(require("lodash/trimEnd")); | |
| var _makeStreamConfig = _interopRequireDefault(require("./makeStreamConfig")); | |
| var _drawRow = _interopRequireDefault(require("./drawRow")); | |
| var _drawBorder = require("./drawBorder"); | |
| var _stringifyTableData = _interopRequireDefault(require("./stringifyTableData")); | |
| var _truncateTableData = _interopRequireDefault(require("./truncateTableData")); | |
| var _mapDataUsingRowHeightIndex = _interopRequireDefault(require("./mapDataUsingRowHeightIndex")); | |
| var _alignTableData = _interopRequireDefault(require("./alignTableData")); | |
| var _padTableData = _interopRequireDefault(require("./padTableData")); | |
| var _calculateRowHeightIndex = _interopRequireDefault(require("./calculateRowHeightIndex")); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| /** | |
| * @param {Array} data | |
| * @param {Object} config | |
| * @returns {Array} | |
| */ | |
| const prepareData = (data, config) => { | |
| let rows; | |
| rows = (0, _stringifyTableData.default)(data); | |
| rows = (0, _truncateTableData.default)(data, config); | |
| const rowHeightIndex = (0, _calculateRowHeightIndex.default)(rows, config); | |
| rows = (0, _mapDataUsingRowHeightIndex.default)(rows, rowHeightIndex, config); | |
| rows = (0, _alignTableData.default)(rows, config); | |
| rows = (0, _padTableData.default)(rows, config); | |
| return rows; | |
| }; | |
| /** | |
| * @param {string[]} row | |
| * @param {number[]} columnWidthIndex | |
| * @param {Object} config | |
| * @returns {undefined} | |
| */ | |
| const create = (row, columnWidthIndex, config) => { | |
| const rows = prepareData([row], config); | |
| const body = rows.map(literalRow => { | |
| return (0, _drawRow.default)(literalRow, config.border); | |
| }).join(''); | |
| let output; | |
| output = ''; | |
| output += (0, _drawBorder.drawBorderTop)(columnWidthIndex, config.border); | |
| output += body; | |
| output += (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border); | |
| output = (0, _trimEnd2.default)(output); | |
| process.stdout.write(output); | |
| }; | |
| /** | |
| * @param {string[]} row | |
| * @param {number[]} columnWidthIndex | |
| * @param {Object} config | |
| * @returns {undefined} | |
| */ | |
| const append = (row, columnWidthIndex, config) => { | |
| const rows = prepareData([row], config); | |
| const body = rows.map(literalRow => { | |
| return (0, _drawRow.default)(literalRow, config.border); | |
| }).join(''); | |
| let output = ''; | |
| const bottom = (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border); | |
| if (bottom !== '\n') { | |
| output = '\r\u001B[K'; | |
| } | |
| output += (0, _drawBorder.drawBorderJoin)(columnWidthIndex, config.border); | |
| output += body; | |
| output += bottom; | |
| output = (0, _trimEnd2.default)(output); | |
| process.stdout.write(output); | |
| }; | |
| /** | |
| * @param {Object} userConfig | |
| * @returns {Object} | |
| */ | |
| const createStream = (userConfig = {}) => { | |
| const config = (0, _makeStreamConfig.default)(userConfig); // @todo Use 'Object.values' when Node.js v6 support is dropped. | |
| const columnWidthIndex = (0, _values2.default)((0, _mapValues2.default)(config.columns, column => { | |
| return column.width + column.paddingLeft + column.paddingRight; | |
| })); | |
| let empty; | |
| empty = true; | |
| return { | |
| /** | |
| * @param {string[]} row | |
| * @returns {undefined} | |
| */ | |
| write: row => { | |
| if (row.length !== config.columnCount) { | |
| throw new Error('Row cell count does not match the config.columnCount.'); | |
| } | |
| if (empty) { | |
| empty = false; | |
| return create(row, columnWidthIndex, config); | |
| } else { | |
| return append(row, columnWidthIndex, config); | |
| } | |
| } | |
| }; | |
| }; | |
| var _default = createStream; | |
| exports.default = _default; | |
| //# sourceMappingURL=createStream.js.map |