1 | var __commonJS = (cb, mod) => function __require() {
|
2 | return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
3 | };
|
4 |
|
5 |
|
6 | import stripAnsi from "strip-ansi";
|
7 | import { bold } from "colorette";
|
8 | import truncate from "cli-truncate";
|
9 | var 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 | });
|
91 | export default require_src();
|