langsmith 0.5.16 → 0.5.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/client.cjs +112 -143
  2. package/dist/client.d.ts +19 -40
  3. package/dist/client.js +112 -143
  4. package/dist/experimental/anthropic/index.cjs +4 -1
  5. package/dist/experimental/anthropic/index.js +4 -1
  6. package/dist/experimental/vercel/index.cjs +1 -0
  7. package/dist/experimental/vercel/index.js +1 -0
  8. package/dist/experimental/vercel/middleware.cjs +2 -0
  9. package/dist/experimental/vercel/middleware.js +2 -0
  10. package/dist/index.cjs +1 -1
  11. package/dist/index.d.ts +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/schemas.d.ts +1 -3
  14. package/dist/utils/chalk/source/index.cjs +187 -0
  15. package/dist/utils/chalk/source/index.d.ts +19 -0
  16. package/dist/utils/chalk/source/index.js +173 -0
  17. package/dist/utils/chalk/source/utilities.cjs +35 -0
  18. package/dist/utils/chalk/source/utilities.d.ts +2 -0
  19. package/dist/utils/chalk/source/utilities.js +31 -0
  20. package/dist/utils/chalk/source/vendor/ansi-styles/index.cjs +193 -0
  21. package/dist/utils/chalk/source/vendor/ansi-styles/index.d.ts +58 -0
  22. package/dist/utils/chalk/source/vendor/ansi-styles/index.js +190 -0
  23. package/dist/utils/chalk/source/vendor/supports-color/browser.cjs +31 -0
  24. package/dist/utils/chalk/source/vendor/supports-color/browser.d.ts +15 -0
  25. package/dist/utils/chalk/source/vendor/supports-color/browser.js +29 -0
  26. package/dist/utils/chalk/source/vendor/supports-color/index.cjs +155 -0
  27. package/dist/utils/chalk/source/vendor/supports-color/index.d.ts +21 -0
  28. package/dist/utils/chalk/source/vendor/supports-color/index.js +149 -0
  29. package/dist/utils/console-table-printer/index.cjs +11 -0
  30. package/dist/utils/console-table-printer/index.d.ts +4 -0
  31. package/dist/utils/console-table-printer/index.js +3 -0
  32. package/dist/utils/console-table-printer/src/console-table-printer.cjs +42 -0
  33. package/dist/utils/console-table-printer/src/console-table-printer.d.ts +14 -0
  34. package/dist/utils/console-table-printer/src/console-table-printer.js +36 -0
  35. package/dist/utils/console-table-printer/src/internalTable/input-converter.cjs +25 -0
  36. package/dist/utils/console-table-printer/src/internalTable/input-converter.d.ts +6 -0
  37. package/dist/utils/console-table-printer/src/internalTable/input-converter.js +20 -0
  38. package/dist/utils/console-table-printer/src/internalTable/internal-table-printer.cjs +142 -0
  39. package/dist/utils/console-table-printer/src/internalTable/internal-table-printer.d.ts +6 -0
  40. package/dist/utils/console-table-printer/src/internalTable/internal-table-printer.js +133 -0
  41. package/dist/utils/console-table-printer/src/internalTable/internal-table.cjs +186 -0
  42. package/dist/utils/console-table-printer/src/internalTable/internal-table.d.ts +31 -0
  43. package/dist/utils/console-table-printer/src/internalTable/internal-table.js +184 -0
  44. package/dist/utils/console-table-printer/src/internalTable/table-pre-processors.cjs +53 -0
  45. package/dist/utils/console-table-printer/src/internalTable/table-pre-processors.d.ts +3 -0
  46. package/dist/utils/console-table-printer/src/internalTable/table-pre-processors.js +48 -0
  47. package/dist/utils/console-table-printer/src/models/common.cjs +2 -0
  48. package/dist/utils/console-table-printer/src/models/common.d.ts +14 -0
  49. package/dist/utils/console-table-printer/src/models/common.js +1 -0
  50. package/dist/utils/console-table-printer/src/models/external-table.cjs +2 -0
  51. package/dist/utils/console-table-printer/src/models/external-table.d.ts +99 -0
  52. package/dist/utils/console-table-printer/src/models/external-table.js +1 -0
  53. package/dist/utils/console-table-printer/src/models/internal-table.cjs +2 -0
  54. package/dist/utils/console-table-printer/src/models/internal-table.d.ts +24 -0
  55. package/dist/utils/console-table-printer/src/models/internal-table.js +1 -0
  56. package/dist/utils/console-table-printer/src/utils/colored-console-line.cjs +43 -0
  57. package/dist/utils/console-table-printer/src/utils/colored-console-line.d.ts +12 -0
  58. package/dist/utils/console-table-printer/src/utils/colored-console-line.js +39 -0
  59. package/dist/utils/console-table-printer/src/utils/console-utils.cjs +23 -0
  60. package/dist/utils/console-table-printer/src/utils/console-utils.d.ts +3 -0
  61. package/dist/utils/console-table-printer/src/utils/console-utils.js +18 -0
  62. package/dist/utils/console-table-printer/src/utils/string-utils.cjs +68 -0
  63. package/dist/utils/console-table-printer/src/utils/string-utils.d.ts +4 -0
  64. package/dist/utils/console-table-printer/src/utils/string-utils.js +62 -0
  65. package/dist/utils/console-table-printer/src/utils/table-constants.cjs +55 -0
  66. package/dist/utils/console-table-printer/src/utils/table-constants.d.ts +11 -0
  67. package/dist/utils/console-table-printer/src/utils/table-constants.js +52 -0
  68. package/dist/utils/console-table-printer/src/utils/table-helpers.cjs +101 -0
  69. package/dist/utils/console-table-printer/src/utils/table-helpers.d.ts +29 -0
  70. package/dist/utils/console-table-printer/src/utils/table-helpers.js +88 -0
  71. package/dist/utils/jestlike/reporter.cjs +23 -23
  72. package/dist/utils/jestlike/reporter.js +2 -2
  73. package/dist/utils/prompts.cjs +0 -10
  74. package/dist/utils/prompts.d.ts +0 -1
  75. package/dist/utils/prompts.js +0 -9
  76. package/dist/utils/simple-wcswidth/index.cjs +10 -0
  77. package/dist/utils/simple-wcswidth/index.d.ts +3 -0
  78. package/dist/utils/simple-wcswidth/index.js +3 -0
  79. package/dist/utils/simple-wcswidth/src/binary-search.cjs +24 -0
  80. package/dist/utils/simple-wcswidth/src/binary-search.d.ts +3 -0
  81. package/dist/utils/simple-wcswidth/src/binary-search.js +22 -0
  82. package/dist/utils/simple-wcswidth/src/models.cjs +2 -0
  83. package/dist/utils/simple-wcswidth/src/models.d.ts +4 -0
  84. package/dist/utils/simple-wcswidth/src/models.js +1 -0
  85. package/dist/utils/simple-wcswidth/src/non-spacing-chars.cjs +149 -0
  86. package/dist/utils/simple-wcswidth/src/non-spacing-chars.d.ts +3 -0
  87. package/dist/utils/simple-wcswidth/src/non-spacing-chars.js +147 -0
  88. package/dist/utils/simple-wcswidth/src/wcswidth.cjs +20 -0
  89. package/dist/utils/simple-wcswidth/src/wcswidth.d.ts +2 -0
  90. package/dist/utils/simple-wcswidth/src/wcswidth.js +15 -0
  91. package/dist/utils/simple-wcswidth/src/wcwidth.cjs +67 -0
  92. package/dist/utils/simple-wcswidth/src/wcwidth.d.ts +2 -0
  93. package/dist/utils/simple-wcswidth/src/wcwidth.js +62 -0
  94. package/package.json +5 -7
@@ -0,0 +1,149 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ import process from 'node:process';
4
+ import os from 'node:os';
5
+ import tty from 'node:tty';
6
+ // From: https://github.com/sindresorhus/has-flag/blob/main/index.js
7
+ /// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {
8
+ function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {
9
+ const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');
10
+ const position = argv.indexOf(prefix + flag);
11
+ const terminatorPosition = argv.indexOf('--');
12
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
13
+ }
14
+ const { env } = process;
15
+ let flagForceColor;
16
+ if (hasFlag('no-color')
17
+ || hasFlag('no-colors')
18
+ || hasFlag('color=false')
19
+ || hasFlag('color=never')) {
20
+ flagForceColor = 0;
21
+ }
22
+ else if (hasFlag('color')
23
+ || hasFlag('colors')
24
+ || hasFlag('color=true')
25
+ || hasFlag('color=always')) {
26
+ flagForceColor = 1;
27
+ }
28
+ function envForceColor() {
29
+ if ('FORCE_COLOR' in env) {
30
+ if (env.FORCE_COLOR === 'true') {
31
+ return 1;
32
+ }
33
+ if (env.FORCE_COLOR === 'false') {
34
+ return 0;
35
+ }
36
+ return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
37
+ }
38
+ }
39
+ function translateLevel(level) {
40
+ if (level === 0) {
41
+ return false;
42
+ }
43
+ return {
44
+ level,
45
+ hasBasic: true,
46
+ has256: level >= 2,
47
+ has16m: level >= 3,
48
+ };
49
+ }
50
+ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
51
+ const noFlagForceColor = envForceColor();
52
+ if (noFlagForceColor !== undefined) {
53
+ flagForceColor = noFlagForceColor;
54
+ }
55
+ const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
56
+ if (forceColor === 0) {
57
+ return 0;
58
+ }
59
+ if (sniffFlags) {
60
+ if (hasFlag('color=16m')
61
+ || hasFlag('color=full')
62
+ || hasFlag('color=truecolor')) {
63
+ return 3;
64
+ }
65
+ if (hasFlag('color=256')) {
66
+ return 2;
67
+ }
68
+ }
69
+ // Check for Azure DevOps pipelines.
70
+ // Has to be above the `!streamIsTTY` check.
71
+ if ('TF_BUILD' in env && 'AGENT_NAME' in env) {
72
+ return 1;
73
+ }
74
+ if (haveStream && !streamIsTTY && forceColor === undefined) {
75
+ return 0;
76
+ }
77
+ const min = forceColor || 0;
78
+ if (env.TERM === 'dumb') {
79
+ return min;
80
+ }
81
+ if (process.platform === 'win32') {
82
+ // Windows 10 build 10586 is the first Windows release that supports 256 colors.
83
+ // Windows 10 build 14931 is the first release that supports 16m/TrueColor.
84
+ const osRelease = os.release().split('.');
85
+ if (Number(osRelease[0]) >= 10
86
+ && Number(osRelease[2]) >= 10_586) {
87
+ return Number(osRelease[2]) >= 14_931 ? 3 : 2;
88
+ }
89
+ return 1;
90
+ }
91
+ if ('CI' in env) {
92
+ if (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {
93
+ return 3;
94
+ }
95
+ if (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
96
+ return 1;
97
+ }
98
+ return min;
99
+ }
100
+ if ('TEAMCITY_VERSION' in env) {
101
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
102
+ }
103
+ if (env.COLORTERM === 'truecolor') {
104
+ return 3;
105
+ }
106
+ if (env.TERM === 'xterm-kitty') {
107
+ return 3;
108
+ }
109
+ if (env.TERM === 'xterm-ghostty') {
110
+ return 3;
111
+ }
112
+ if (env.TERM === 'wezterm') {
113
+ return 3;
114
+ }
115
+ if ('TERM_PROGRAM' in env) {
116
+ const version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
117
+ switch (env.TERM_PROGRAM) {
118
+ case 'iTerm.app': {
119
+ return version >= 3 ? 3 : 2;
120
+ }
121
+ case 'Apple_Terminal': {
122
+ return 2;
123
+ }
124
+ // No default
125
+ }
126
+ }
127
+ if (/-256(color)?$/i.test(env.TERM)) {
128
+ return 2;
129
+ }
130
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
131
+ return 1;
132
+ }
133
+ if ('COLORTERM' in env) {
134
+ return 1;
135
+ }
136
+ return min;
137
+ }
138
+ export function createSupportsColor(stream, options = {}) {
139
+ const level = _supportsColor(stream, {
140
+ streamIsTTY: stream && stream.isTTY,
141
+ ...options,
142
+ });
143
+ return translateLevel(level);
144
+ }
145
+ const supportsColor = {
146
+ stdout: createSupportsColor({ isTTY: tty.isatty(1) }),
147
+ stderr: createSupportsColor({ isTTY: tty.isatty(2) }),
148
+ };
149
+ export default supportsColor;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.renderTable = exports.printTable = exports.Table = void 0;
7
+ const console_table_printer_js_1 = __importDefault(require("./src/console-table-printer.cjs"));
8
+ exports.Table = console_table_printer_js_1.default;
9
+ const internal_table_printer_js_1 = require("./src/internalTable/internal-table-printer.cjs");
10
+ Object.defineProperty(exports, "printTable", { enumerable: true, get: function () { return internal_table_printer_js_1.printSimpleTable; } });
11
+ Object.defineProperty(exports, "renderTable", { enumerable: true, get: function () { return internal_table_printer_js_1.renderSimpleTable; } });
@@ -0,0 +1,4 @@
1
+ import Table from './src/console-table-printer.js';
2
+ import { printSimpleTable as printTable, renderSimpleTable as renderTable } from './src/internalTable/internal-table-printer.js';
3
+ import { COLOR, ALIGNMENT } from './src/models/external-table.js';
4
+ export { Table, printTable, renderTable, COLOR, ALIGNMENT };
@@ -0,0 +1,3 @@
1
+ import Table from './src/console-table-printer.js';
2
+ import { printSimpleTable as printTable, renderSimpleTable as renderTable, } from './src/internalTable/internal-table-printer.js';
3
+ export { Table, printTable, renderTable };
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const internal_table_js_1 = __importDefault(require("./internalTable/internal-table.cjs"));
7
+ const table_helpers_js_1 = require("./utils/table-helpers.cjs");
8
+ class Table {
9
+ constructor(options) {
10
+ Object.defineProperty(this, "table", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: void 0
15
+ });
16
+ this.table = new internal_table_js_1.default(options);
17
+ }
18
+ addColumn(column) {
19
+ this.table.addColumn(column);
20
+ return this;
21
+ }
22
+ addColumns(columns) {
23
+ this.table.addColumns(columns);
24
+ return this;
25
+ }
26
+ addRow(text, rowOptions) {
27
+ this.table.addRow(text, (0, table_helpers_js_1.convertRawRowOptionsToStandard)(rowOptions));
28
+ return this;
29
+ }
30
+ addRows(toBeInsertedRows, rowOptions) {
31
+ this.table.addRows(toBeInsertedRows, (0, table_helpers_js_1.convertRawRowOptionsToStandard)(rowOptions));
32
+ return this;
33
+ }
34
+ printTable() {
35
+ const tableRendered = this.table.renderTable();
36
+ console.log(tableRendered);
37
+ }
38
+ render() {
39
+ return this.table.renderTable();
40
+ }
41
+ }
42
+ exports.default = Table;
@@ -0,0 +1,14 @@
1
+ import TableInternal from './internalTable/internal-table.js';
2
+ import { Dictionary } from './models/common.js';
3
+ import { ColumnOptionsRaw, ComplexOptions } from './models/external-table.js';
4
+ import { RowOptionsRaw } from './utils/table-helpers.js';
5
+ export default class Table {
6
+ table: TableInternal;
7
+ constructor(options?: ComplexOptions | string[]);
8
+ addColumn(column: string | ColumnOptionsRaw): this;
9
+ addColumns(columns: string[] | ColumnOptionsRaw[]): this;
10
+ addRow(text: Dictionary, rowOptions?: RowOptionsRaw): this;
11
+ addRows(toBeInsertedRows: Dictionary[], rowOptions?: RowOptionsRaw): this;
12
+ printTable(): void;
13
+ render(): string;
14
+ }
@@ -0,0 +1,36 @@
1
+ import TableInternal from './internalTable/internal-table.js';
2
+ import { convertRawRowOptionsToStandard, } from './utils/table-helpers.js';
3
+ export default class Table {
4
+ constructor(options) {
5
+ Object.defineProperty(this, "table", {
6
+ enumerable: true,
7
+ configurable: true,
8
+ writable: true,
9
+ value: void 0
10
+ });
11
+ this.table = new TableInternal(options);
12
+ }
13
+ addColumn(column) {
14
+ this.table.addColumn(column);
15
+ return this;
16
+ }
17
+ addColumns(columns) {
18
+ this.table.addColumns(columns);
19
+ return this;
20
+ }
21
+ addRow(text, rowOptions) {
22
+ this.table.addRow(text, convertRawRowOptionsToStandard(rowOptions));
23
+ return this;
24
+ }
25
+ addRows(toBeInsertedRows, rowOptions) {
26
+ this.table.addRows(toBeInsertedRows, convertRawRowOptionsToStandard(rowOptions));
27
+ return this;
28
+ }
29
+ printTable() {
30
+ const tableRendered = this.table.renderTable();
31
+ console.log(tableRendered);
32
+ }
33
+ render() {
34
+ return this.table.renderTable();
35
+ }
36
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rawColumnToInternalColumn = exports.objIfExists = void 0;
4
+ const table_constants_js_1 = require("../utils/table-constants.cjs");
5
+ const objIfExists = (key, val) => {
6
+ if (!val) {
7
+ return {};
8
+ }
9
+ return {
10
+ [key]: val,
11
+ };
12
+ };
13
+ exports.objIfExists = objIfExists;
14
+ const rawColumnToInternalColumn = (column, defaultColumnStyles) => ({
15
+ name: column.name,
16
+ title: column.title ?? column.name,
17
+ ...(0, exports.objIfExists)('color', (column.color || defaultColumnStyles?.color)),
18
+ ...(0, exports.objIfExists)('maxLen', (column.maxLen || defaultColumnStyles?.maxLen)),
19
+ ...(0, exports.objIfExists)('minLen', (column.minLen || defaultColumnStyles?.minLen)),
20
+ alignment: (column.alignment ||
21
+ defaultColumnStyles?.alignment ||
22
+ table_constants_js_1.DEFAULT_ROW_ALIGNMENT),
23
+ transform: column.transform,
24
+ });
25
+ exports.rawColumnToInternalColumn = rawColumnToInternalColumn;
@@ -0,0 +1,6 @@
1
+ import { ColumnOptionsRaw, ComputedColumn, DefaultColumnOptions } from '../models/external-table.js';
2
+ import { Column } from '../models/internal-table.js';
3
+ export declare const objIfExists: (key: string, val: any) => {
4
+ [x: string]: any;
5
+ };
6
+ export declare const rawColumnToInternalColumn: (column: ColumnOptionsRaw | ComputedColumn, defaultColumnStyles?: DefaultColumnOptions) => Column;
@@ -0,0 +1,20 @@
1
+ import { DEFAULT_ROW_ALIGNMENT } from '../utils/table-constants.js';
2
+ export const objIfExists = (key, val) => {
3
+ if (!val) {
4
+ return {};
5
+ }
6
+ return {
7
+ [key]: val,
8
+ };
9
+ };
10
+ export const rawColumnToInternalColumn = (column, defaultColumnStyles) => ({
11
+ name: column.name,
12
+ title: column.title ?? column.name,
13
+ ...objIfExists('color', (column.color || defaultColumnStyles?.color)),
14
+ ...objIfExists('maxLen', (column.maxLen || defaultColumnStyles?.maxLen)),
15
+ ...objIfExists('minLen', (column.minLen || defaultColumnStyles?.minLen)),
16
+ alignment: (column.alignment ||
17
+ defaultColumnStyles?.alignment ||
18
+ DEFAULT_ROW_ALIGNMENT),
19
+ transform: column.transform,
20
+ });
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.printSimpleTable = exports.renderSimpleTable = exports.renderTable = void 0;
7
+ const colored_console_line_js_1 = __importDefault(require("../utils/colored-console-line.cjs"));
8
+ const string_utils_js_1 = require("../utils/string-utils.cjs");
9
+ const table_constants_js_1 = require("../utils/table-constants.cjs");
10
+ const table_helpers_js_1 = require("../utils/table-helpers.cjs");
11
+ const internal_table_js_1 = __importDefault(require("./internal-table.cjs"));
12
+ const table_pre_processors_js_1 = require("./table-pre-processors.cjs");
13
+ // ║ Index ║ ║ ║
14
+ const renderOneLine = (tableStyle, columns, currentLineIndex, widthLimitedColumnsArray, isHeader, row, colorMap, charLength) => {
15
+ const line = new colored_console_line_js_1.default(colorMap);
16
+ line.addCharsWithColor('', tableStyle.vertical); // dont Color the Column borders
17
+ columns.forEach((column) => {
18
+ const thisLineHasText = currentLineIndex < widthLimitedColumnsArray[column.name].length;
19
+ const textForThisLine = thisLineHasText
20
+ ? (0, table_helpers_js_1.cellText)(widthLimitedColumnsArray[column.name][currentLineIndex])
21
+ : '';
22
+ line.addCharsWithColor(table_constants_js_1.DEFAULT_ROW_FONT_COLOR, ' ');
23
+ line.addCharsWithColor((isHeader && table_constants_js_1.DEFAULT_HEADER_FONT_COLOR) || column.color || row.color, (0, string_utils_js_1.textWithPadding)(textForThisLine, column.alignment || table_constants_js_1.DEFAULT_ROW_ALIGNMENT, column.length || table_constants_js_1.DEFAULT_COLUMN_LEN, charLength));
24
+ line.addCharsWithColor('', ` ${tableStyle.vertical}`); // dont Color the Column borders
25
+ });
26
+ return line.renderConsole();
27
+ };
28
+ // ║ Bold ║ text ║ value ║
29
+ // ║ Index ║ ║ ║
30
+ const renderWidthLimitedLines = (tableStyle, columns, row, colorMap, isHeader, charLength) => {
31
+ // { col1: ['How', 'Is', 'Going'], col2: ['I am', 'Tom'], }
32
+ const widthLimitedColumnsArray = (0, table_helpers_js_1.getWidthLimitedColumnsArray)(columns, row, charLength);
33
+ const totalLines = Object.values(widthLimitedColumnsArray).reduce((a, b) => Math.max(a, b.length), 0);
34
+ const ret = [];
35
+ for (let currentLineIndex = 0; currentLineIndex < totalLines; currentLineIndex += 1) {
36
+ const singleLine = renderOneLine(tableStyle, columns, currentLineIndex, widthLimitedColumnsArray, isHeader, row, colorMap, charLength);
37
+ ret.push(singleLine);
38
+ }
39
+ return ret;
40
+ };
41
+ const transformRow = (row, columns) => {
42
+ const transformedRow = JSON.parse(JSON.stringify(row));
43
+ const transforms = {};
44
+ columns
45
+ .filter((c) => {
46
+ return !!c.transform;
47
+ })
48
+ .forEach((c) => {
49
+ transforms[c.name] = c.transform;
50
+ });
51
+ Object.keys(transforms).forEach((t) => {
52
+ transformedRow.text[t] = transforms[t](transformedRow.text[t]);
53
+ });
54
+ return transformedRow;
55
+ };
56
+ // ║ 1 ║ I would like some red wine please ║ 10.212 ║
57
+ const renderRow = (table, row) => {
58
+ let ret = [];
59
+ const transformedRow = transformRow(row, table.columns);
60
+ ret = ret.concat(renderWidthLimitedLines(table.tableStyle, table.columns, transformedRow, table.colorMap, undefined, table.charLength));
61
+ return ret;
62
+ };
63
+ /*
64
+ The analysis Result
65
+ ╔═══════╦═══════════════════════════════════════╦════════╗
66
+ */
67
+ const renderTableTitle = (table) => {
68
+ const ret = [];
69
+ if (table.title === undefined) {
70
+ return ret;
71
+ }
72
+ const getTableWidth = () => {
73
+ const reducer = (accumulator, currentValue) =>
74
+ // ║ cell ║, 2 spaces + cellTextSize + one border on the left
75
+ accumulator + currentValue + 2 + 1;
76
+ return table.columns
77
+ .map((m) => m.length || table_constants_js_1.DEFAULT_COLUMN_LEN)
78
+ .reduce(reducer, 1);
79
+ };
80
+ const titleWithPadding = (0, string_utils_js_1.textWithPadding)(table.title, table_constants_js_1.DEFAULT_HEADER_ALIGNMENT, getTableWidth());
81
+ const styledText = new colored_console_line_js_1.default(table.colorMap);
82
+ styledText.addCharsWithColor(table_constants_js_1.DEFAULT_HEADER_FONT_COLOR, titleWithPadding);
83
+ // The analysis Result
84
+ ret.push(styledText.renderConsole());
85
+ return ret;
86
+ };
87
+ /*
88
+ ╔═══════╦═══════════════════════════════════════╦════════╗
89
+ ║ index ║ text ║ value ║
90
+ ╟═══════╬═══════════════════════════════════════╬════════╢
91
+ */
92
+ const renderTableHeaders = (table) => {
93
+ let ret = [];
94
+ // ╔═══════╦═══════════════════════════════════════╦════════╗
95
+ ret.push((0, table_helpers_js_1.renderTableHorizontalBorders)(table.tableStyle.headerTop, table.columns.map((m) => m.length || table_constants_js_1.DEFAULT_COLUMN_LEN)));
96
+ // ║ index ║ text ║ value ║
97
+ const row = (0, table_helpers_js_1.createHeaderAsRow)(table_helpers_js_1.createRow, table.columns);
98
+ ret = ret.concat(renderWidthLimitedLines(table.tableStyle, table.columns, row, table.colorMap, true));
99
+ // ╟═══════╬═══════════════════════════════════════╬════════╢
100
+ ret.push((0, table_helpers_js_1.renderTableHorizontalBorders)(table.tableStyle.headerBottom, table.columns.map((m) => m.length || table_constants_js_1.DEFAULT_COLUMN_LEN)));
101
+ return ret;
102
+ };
103
+ const renderTableEnding = (table) => {
104
+ const ret = [];
105
+ // ╚═══════╩═══════════════════════════════════════╩════════╝
106
+ ret.push((0, table_helpers_js_1.renderTableHorizontalBorders)(table.tableStyle.tableBottom, table.columns.map((m) => m.length || table_constants_js_1.DEFAULT_COLUMN_LEN)));
107
+ return ret;
108
+ };
109
+ const renderRowSeparator = (table, row) => {
110
+ const ret = [];
111
+ const lastRowIndex = table.rows.length - 1;
112
+ const currentRowIndex = table.rows.indexOf(row);
113
+ if (currentRowIndex !== lastRowIndex && row.separator) {
114
+ // ╟═══════╬═══════════════════════════════════════╬════════╢
115
+ ret.push((0, table_helpers_js_1.renderTableHorizontalBorders)(table.tableStyle.rowSeparator, table.columns.map((m) => m.length || table_constants_js_1.DEFAULT_COLUMN_LEN)));
116
+ }
117
+ return ret;
118
+ };
119
+ const renderTable = (table) => {
120
+ (0, table_pre_processors_js_1.preProcessColumns)(table); // enable / disable cols, find maxLn of each col/ computed Columns
121
+ (0, table_pre_processors_js_1.preProcessRows)(table); // sort and filter
122
+ const ret = [];
123
+ renderTableTitle(table).forEach((row) => ret.push(row));
124
+ renderTableHeaders(table).forEach((row) => ret.push(row));
125
+ table.rows.forEach((row) => {
126
+ renderRow(table, row).forEach((row_) => ret.push(row_));
127
+ renderRowSeparator(table, row).forEach((row_) => ret.push(row_));
128
+ });
129
+ renderTableEnding(table).forEach((row) => ret.push(row));
130
+ return ret.join('\n');
131
+ };
132
+ exports.renderTable = renderTable;
133
+ const renderSimpleTable = (rows, tableOptions) => {
134
+ const table = new internal_table_js_1.default(tableOptions);
135
+ table.addRows(rows);
136
+ return (0, exports.renderTable)(table);
137
+ };
138
+ exports.renderSimpleTable = renderSimpleTable;
139
+ const printSimpleTable = (rows, tableOptions) => {
140
+ console.log((0, exports.renderSimpleTable)(rows, tableOptions));
141
+ };
142
+ exports.printSimpleTable = printSimpleTable;
@@ -0,0 +1,6 @@
1
+ import { Dictionary } from '../models/common.js';
2
+ import { ComplexOptions } from '../models/external-table.js';
3
+ import TableInternal from './internal-table.js';
4
+ export declare const renderTable: (table: TableInternal) => string;
5
+ export declare const renderSimpleTable: (rows: Dictionary[], tableOptions?: ComplexOptions) => string;
6
+ export declare const printSimpleTable: (rows: Dictionary[], tableOptions?: ComplexOptions) => void;
@@ -0,0 +1,133 @@
1
+ import ColoredConsoleLine from '../utils/colored-console-line.js';
2
+ import { textWithPadding } from '../utils/string-utils.js';
3
+ import { DEFAULT_COLUMN_LEN, DEFAULT_HEADER_ALIGNMENT, DEFAULT_HEADER_FONT_COLOR, DEFAULT_ROW_ALIGNMENT, DEFAULT_ROW_FONT_COLOR, } from '../utils/table-constants.js';
4
+ import { cellText, createHeaderAsRow, createRow, getWidthLimitedColumnsArray, renderTableHorizontalBorders, } from '../utils/table-helpers.js';
5
+ import TableInternal from './internal-table.js';
6
+ import { preProcessColumns, preProcessRows } from './table-pre-processors.js';
7
+ // ║ Index ║ ║ ║
8
+ const renderOneLine = (tableStyle, columns, currentLineIndex, widthLimitedColumnsArray, isHeader, row, colorMap, charLength) => {
9
+ const line = new ColoredConsoleLine(colorMap);
10
+ line.addCharsWithColor('', tableStyle.vertical); // dont Color the Column borders
11
+ columns.forEach((column) => {
12
+ const thisLineHasText = currentLineIndex < widthLimitedColumnsArray[column.name].length;
13
+ const textForThisLine = thisLineHasText
14
+ ? cellText(widthLimitedColumnsArray[column.name][currentLineIndex])
15
+ : '';
16
+ line.addCharsWithColor(DEFAULT_ROW_FONT_COLOR, ' ');
17
+ line.addCharsWithColor((isHeader && DEFAULT_HEADER_FONT_COLOR) || column.color || row.color, textWithPadding(textForThisLine, column.alignment || DEFAULT_ROW_ALIGNMENT, column.length || DEFAULT_COLUMN_LEN, charLength));
18
+ line.addCharsWithColor('', ` ${tableStyle.vertical}`); // dont Color the Column borders
19
+ });
20
+ return line.renderConsole();
21
+ };
22
+ // ║ Bold ║ text ║ value ║
23
+ // ║ Index ║ ║ ║
24
+ const renderWidthLimitedLines = (tableStyle, columns, row, colorMap, isHeader, charLength) => {
25
+ // { col1: ['How', 'Is', 'Going'], col2: ['I am', 'Tom'], }
26
+ const widthLimitedColumnsArray = getWidthLimitedColumnsArray(columns, row, charLength);
27
+ const totalLines = Object.values(widthLimitedColumnsArray).reduce((a, b) => Math.max(a, b.length), 0);
28
+ const ret = [];
29
+ for (let currentLineIndex = 0; currentLineIndex < totalLines; currentLineIndex += 1) {
30
+ const singleLine = renderOneLine(tableStyle, columns, currentLineIndex, widthLimitedColumnsArray, isHeader, row, colorMap, charLength);
31
+ ret.push(singleLine);
32
+ }
33
+ return ret;
34
+ };
35
+ const transformRow = (row, columns) => {
36
+ const transformedRow = JSON.parse(JSON.stringify(row));
37
+ const transforms = {};
38
+ columns
39
+ .filter((c) => {
40
+ return !!c.transform;
41
+ })
42
+ .forEach((c) => {
43
+ transforms[c.name] = c.transform;
44
+ });
45
+ Object.keys(transforms).forEach((t) => {
46
+ transformedRow.text[t] = transforms[t](transformedRow.text[t]);
47
+ });
48
+ return transformedRow;
49
+ };
50
+ // ║ 1 ║ I would like some red wine please ║ 10.212 ║
51
+ const renderRow = (table, row) => {
52
+ let ret = [];
53
+ const transformedRow = transformRow(row, table.columns);
54
+ ret = ret.concat(renderWidthLimitedLines(table.tableStyle, table.columns, transformedRow, table.colorMap, undefined, table.charLength));
55
+ return ret;
56
+ };
57
+ /*
58
+ The analysis Result
59
+ ╔═══════╦═══════════════════════════════════════╦════════╗
60
+ */
61
+ const renderTableTitle = (table) => {
62
+ const ret = [];
63
+ if (table.title === undefined) {
64
+ return ret;
65
+ }
66
+ const getTableWidth = () => {
67
+ const reducer = (accumulator, currentValue) =>
68
+ // ║ cell ║, 2 spaces + cellTextSize + one border on the left
69
+ accumulator + currentValue + 2 + 1;
70
+ return table.columns
71
+ .map((m) => m.length || DEFAULT_COLUMN_LEN)
72
+ .reduce(reducer, 1);
73
+ };
74
+ const titleWithPadding = textWithPadding(table.title, DEFAULT_HEADER_ALIGNMENT, getTableWidth());
75
+ const styledText = new ColoredConsoleLine(table.colorMap);
76
+ styledText.addCharsWithColor(DEFAULT_HEADER_FONT_COLOR, titleWithPadding);
77
+ // The analysis Result
78
+ ret.push(styledText.renderConsole());
79
+ return ret;
80
+ };
81
+ /*
82
+ ╔═══════╦═══════════════════════════════════════╦════════╗
83
+ ║ index ║ text ║ value ║
84
+ ╟═══════╬═══════════════════════════════════════╬════════╢
85
+ */
86
+ const renderTableHeaders = (table) => {
87
+ let ret = [];
88
+ // ╔═══════╦═══════════════════════════════════════╦════════╗
89
+ ret.push(renderTableHorizontalBorders(table.tableStyle.headerTop, table.columns.map((m) => m.length || DEFAULT_COLUMN_LEN)));
90
+ // ║ index ║ text ║ value ║
91
+ const row = createHeaderAsRow(createRow, table.columns);
92
+ ret = ret.concat(renderWidthLimitedLines(table.tableStyle, table.columns, row, table.colorMap, true));
93
+ // ╟═══════╬═══════════════════════════════════════╬════════╢
94
+ ret.push(renderTableHorizontalBorders(table.tableStyle.headerBottom, table.columns.map((m) => m.length || DEFAULT_COLUMN_LEN)));
95
+ return ret;
96
+ };
97
+ const renderTableEnding = (table) => {
98
+ const ret = [];
99
+ // ╚═══════╩═══════════════════════════════════════╩════════╝
100
+ ret.push(renderTableHorizontalBorders(table.tableStyle.tableBottom, table.columns.map((m) => m.length || DEFAULT_COLUMN_LEN)));
101
+ return ret;
102
+ };
103
+ const renderRowSeparator = (table, row) => {
104
+ const ret = [];
105
+ const lastRowIndex = table.rows.length - 1;
106
+ const currentRowIndex = table.rows.indexOf(row);
107
+ if (currentRowIndex !== lastRowIndex && row.separator) {
108
+ // ╟═══════╬═══════════════════════════════════════╬════════╢
109
+ ret.push(renderTableHorizontalBorders(table.tableStyle.rowSeparator, table.columns.map((m) => m.length || DEFAULT_COLUMN_LEN)));
110
+ }
111
+ return ret;
112
+ };
113
+ export const renderTable = (table) => {
114
+ preProcessColumns(table); // enable / disable cols, find maxLn of each col/ computed Columns
115
+ preProcessRows(table); // sort and filter
116
+ const ret = [];
117
+ renderTableTitle(table).forEach((row) => ret.push(row));
118
+ renderTableHeaders(table).forEach((row) => ret.push(row));
119
+ table.rows.forEach((row) => {
120
+ renderRow(table, row).forEach((row_) => ret.push(row_));
121
+ renderRowSeparator(table, row).forEach((row_) => ret.push(row_));
122
+ });
123
+ renderTableEnding(table).forEach((row) => ret.push(row));
124
+ return ret.join('\n');
125
+ };
126
+ export const renderSimpleTable = (rows, tableOptions) => {
127
+ const table = new TableInternal(tableOptions);
128
+ table.addRows(rows);
129
+ return renderTable(table);
130
+ };
131
+ export const printSimpleTable = (rows, tableOptions) => {
132
+ console.log(renderSimpleTable(rows, tableOptions));
133
+ };