createStream.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.createStream = void 0;
  4. const alignTableData_1 = require("./alignTableData");
  5. const calculateRowHeights_1 = require("./calculateRowHeights");
  6. const drawBorder_1 = require("./drawBorder");
  7. const drawRow_1 = require("./drawRow");
  8. const makeStreamConfig_1 = require("./makeStreamConfig");
  9. const mapDataUsingRowHeights_1 = require("./mapDataUsingRowHeights");
  10. const padTableData_1 = require("./padTableData");
  11. const stringifyTableData_1 = require("./stringifyTableData");
  12. const truncateTableData_1 = require("./truncateTableData");
  13. const utils_1 = require("./utils");
  14. const prepareData = (data, config) => {
  15. let rows = (0, stringifyTableData_1.stringifyTableData)(data);
  16. rows = (0, truncateTableData_1.truncateTableData)(rows, (0, utils_1.extractTruncates)(config));
  17. const rowHeights = (0, calculateRowHeights_1.calculateRowHeights)(rows, config);
  18. rows = (0, mapDataUsingRowHeights_1.mapDataUsingRowHeights)(rows, rowHeights, config);
  19. rows = (0, alignTableData_1.alignTableData)(rows, config);
  20. rows = (0, padTableData_1.padTableData)(rows, config);
  21. return rows;
  22. };
  23. const create = (row, columnWidths, config) => {
  24. const rows = prepareData([row], config);
  25. const body = rows.map((literalRow) => {
  26. return (0, drawRow_1.drawRow)(literalRow, config);
  27. }).join('');
  28. let output;
  29. output = '';
  30. output += (0, drawBorder_1.drawBorderTop)(columnWidths, config);
  31. output += body;
  32. output += (0, drawBorder_1.drawBorderBottom)(columnWidths, config);
  33. output = output.trimEnd();
  34. process.stdout.write(output);
  35. };
  36. const append = (row, columnWidths, config) => {
  37. const rows = prepareData([row], config);
  38. const body = rows.map((literalRow) => {
  39. return (0, drawRow_1.drawRow)(literalRow, config);
  40. }).join('');
  41. let output = '';
  42. const bottom = (0, drawBorder_1.drawBorderBottom)(columnWidths, config);
  43. if (bottom !== '\n') {
  44. output = '\r\u001B[K';
  45. }
  46. output += (0, drawBorder_1.drawBorderJoin)(columnWidths, config);
  47. output += body;
  48. output += bottom;
  49. output = output.trimEnd();
  50. process.stdout.write(output);
  51. };
  52. const createStream = (userConfig) => {
  53. const config = (0, makeStreamConfig_1.makeStreamConfig)(userConfig);
  54. const columnWidths = Object.values(config.columns).map((column) => {
  55. return column.width + column.paddingLeft + column.paddingRight;
  56. });
  57. let empty = true;
  58. return {
  59. write: (row) => {
  60. if (row.length !== config.columnCount) {
  61. throw new Error('Row cell count does not match the config.columnCount.');
  62. }
  63. if (empty) {
  64. empty = false;
  65. create(row, columnWidths, config);
  66. }
  67. else {
  68. append(row, columnWidths, config);
  69. }
  70. },
  71. };
  72. };
  73. exports.createStream = createStream;
  74. //# sourceMappingURL=createStream.js.map