UNPKG

3.12 kBJavaScriptView Raw
1var __commonJS = (cb, mod) => function __require() {
2 return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
3};
4
5// src/index.ts
6import stripAnsi from "strip-ansi";
7import { bold } from "colorette";
8import truncate from "cli-truncate";
9var require_src = __commonJS({
10 "src/index.ts"(exports, module) {
11 var pad = (text, length, align) => {
12 let fillBy = length - stripAnsi(text).length;
13 if (fillBy < 0) {
14 fillBy = 0;
15 }
16 const fill = " ".repeat(fillBy);
17 return align === "left" ? text + fill : fill + text;
18 };
19 var SimpleTable = class {
20 constructor({
21 columnPadding = 10,
22 headerSeparator = 1
23 } = {}) {
24 this.columnPadding = columnPadding;
25 this.headerSeparator = headerSeparator;
26 this.columnMeta = [];
27 this.data = [];
28 }
29 header(...columns) {
30 this.columnMeta.push(...columns.map((column) => {
31 var _a, _b;
32 const headerObject = typeof column === "string" ? {
33 text: column,
34 align: "left",
35 maxWidth: 70
36 } : {
37 text: column.text,
38 align: (_a = column.align) != null ? _a : "left",
39 maxWidth: (_b = column.maxWidth) != null ? _b : 70
40 };
41 headerObject.longestLen = stripAnsi(headerObject.text).length;
42 return headerObject;
43 }));
44 }
45 row(...columns) {
46 columns = columns.map((column, index) => {
47 var _a;
48 column = column.toString();
49 const stringLength = stripAnsi(column).length;
50 const columnMeta = this.columnMeta[index];
51 if (((_a = columnMeta.longestLen) != null ? _a : 0) < stringLength) {
52 columnMeta.longestLen = stringLength;
53 }
54 return column;
55 });
56 this.data.push(columns);
57 }
58 renderHeader() {
59 const columnFill = " ".repeat(this.columnPadding);
60 return this.columnMeta.map((c) => {
61 var _a, _b;
62 return pad(bold(c.text), Math.min((_a = c.longestLen) != null ? _a : 0, (_b = c.maxWidth) != null ? _b : 0), c.align);
63 }).join(columnFill);
64 }
65 renderHeaderSeparator() {
66 return Array.from({ length: this.headerSeparator }, () => "");
67 }
68 renderRows() {
69 const columnFill = " ".repeat(this.columnPadding);
70 return this.data.map((row) => row.map((_text, i) => {
71 const { longestLen, align, maxWidth } = this.columnMeta[i];
72 const length = Math.min(longestLen != null ? longestLen : 0, maxWidth != null ? maxWidth : 0);
73 let text = _text;
74 if (stripAnsi(text).length > length) {
75 text = truncate(text, length, { position: "middle" });
76 }
77 return pad(text, length, align);
78 }).join(columnFill));
79 }
80 toString() {
81 return [
82 this.renderHeader(),
83 ...this.renderHeaderSeparator(),
84 ...this.renderRows()
85 ].join("\n");
86 }
87 };
88 module.exports = SimpleTable;
89 }
90});
91export default require_src();