UNPKG

@ka1do/kit

Version:
74 lines (73 loc) 3.02 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const alignTableData_1 = __importDefault(require("./alignTableData")); const calculateRowHeightIndex_1 = __importDefault(require("./calculateRowHeightIndex")); const drawBorder_1 = require("./drawBorder"); const drawRow_1 = __importDefault(require("./drawRow")); const makeStreamConfig_1 = __importDefault(require("./makeStreamConfig")); const mapDataUsingRowHeightIndex_1 = __importDefault(require("./mapDataUsingRowHeightIndex")); const padTableData_1 = __importDefault(require("./padTableData")); const stringifyTableData_1 = __importDefault(require("./stringifyTableData")); const truncateTableData_1 = __importDefault(require("./truncateTableData")); const prepareData = (data, config) => { let rows = stringifyTableData_1.default(data); rows = truncateTableData_1.default(rows, config); const rowHeightIndex = calculateRowHeightIndex_1.default(rows, config); rows = mapDataUsingRowHeightIndex_1.default(rows, rowHeightIndex, config); rows = alignTableData_1.default(rows, config); rows = padTableData_1.default(rows, config); return rows; }; const create = (row, columnWidthIndex, config) => { const rows = prepareData([row], config); const body = rows.map((literalRow) => { return drawRow_1.default(literalRow, config); }).join(''); let output; output = ''; output += drawBorder_1.drawBorderTop(columnWidthIndex, config); output += body; output += drawBorder_1.drawBorderBottom(columnWidthIndex, config); output = output.trimEnd(); process.stdout.write(output); }; const append = (row, columnWidthIndex, config) => { const rows = prepareData([row], config); const body = rows.map((literalRow) => { return drawRow_1.default(literalRow, config); }).join(''); let output = ''; const bottom = drawBorder_1.drawBorderBottom(columnWidthIndex, config); if (bottom !== '\n') { output = '\r\u001B[K'; } output += drawBorder_1.drawBorderJoin(columnWidthIndex, config); output += body; output += bottom; output = output.trimEnd(); process.stdout.write(output); }; exports.default = (userConfig) => { const config = makeStreamConfig_1.default(userConfig); const columnWidthIndex = Object.values(config.columns).map((column) => { return column.width + column.paddingLeft + column.paddingRight; }); let empty = true; return { write: (row) => { if (row.length !== config.columnCount) { throw new Error('Row cell count does not match the config.columnCount.'); } if (empty) { empty = false; create(row, columnWidthIndex, config); } else { append(row, columnWidthIndex, config); } }, }; };