tty-table 6.1.0 → 7.0.1

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.
package/dist/mcp.js CHANGED
@@ -31,351 +31,181 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
31
31
  ));
32
32
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
33
 
34
- // node_modules/clone/clone.js
35
- var require_clone = __commonJS({
36
- "node_modules/clone/clone.js"(exports2, module2) {
34
+ // node_modules/breakword/src/main.js
35
+ var require_main = __commonJS({
36
+ "node_modules/breakword/src/main.js"(exports2, module2) {
37
37
  "use strict";
38
- var clone = (function() {
39
- "use strict";
40
- function clone2(parent, circular, depth, prototype) {
41
- var filter;
42
- if (typeof circular === "object") {
43
- depth = circular.depth;
44
- prototype = circular.prototype;
45
- filter = circular.filter;
46
- circular = circular.circular;
47
- }
48
- var allParents = [];
49
- var allChildren = [];
50
- var useBuffer = typeof Buffer != "undefined";
51
- if (typeof circular == "undefined")
52
- circular = true;
53
- if (typeof depth == "undefined")
54
- depth = Infinity;
55
- function _clone(parent2, depth2) {
56
- if (parent2 === null)
57
- return null;
58
- if (depth2 == 0)
59
- return parent2;
60
- var child;
61
- var proto;
62
- if (typeof parent2 != "object") {
63
- return parent2;
64
- }
65
- if (clone2.__isArray(parent2)) {
66
- child = [];
67
- } else if (clone2.__isRegExp(parent2)) {
68
- child = new RegExp(parent2.source, __getRegExpFlags(parent2));
69
- if (parent2.lastIndex) child.lastIndex = parent2.lastIndex;
70
- } else if (clone2.__isDate(parent2)) {
71
- child = new Date(parent2.getTime());
72
- } else if (useBuffer && Buffer.isBuffer(parent2)) {
73
- if (Buffer.allocUnsafe) {
74
- child = Buffer.allocUnsafe(parent2.length);
75
- } else {
76
- child = new Buffer(parent2.length);
77
- }
78
- parent2.copy(child);
79
- return child;
80
- } else {
81
- if (typeof prototype == "undefined") {
82
- proto = Object.getPrototypeOf(parent2);
83
- child = Object.create(proto);
84
- } else {
85
- child = Object.create(prototype);
86
- proto = prototype;
87
- }
88
- }
89
- if (circular) {
90
- var index = allParents.indexOf(parent2);
91
- if (index != -1) {
92
- return allChildren[index];
93
- }
94
- allParents.push(parent2);
95
- allChildren.push(child);
96
- }
97
- for (var i in parent2) {
98
- var attrs;
99
- if (proto) {
100
- attrs = Object.getOwnPropertyDescriptor(proto, i);
101
- }
102
- if (attrs && attrs.set == null) {
103
- continue;
104
- }
105
- child[i] = _clone(parent2[i], depth2 - 1);
106
- }
107
- return child;
108
- }
109
- return _clone(parent, depth);
110
- }
111
- clone2.clonePrototype = function clonePrototype(parent) {
112
- if (parent === null)
113
- return null;
114
- var c = function() {
115
- };
116
- c.prototype = parent;
117
- return new c();
118
- };
119
- function __objToStr(o) {
120
- return Object.prototype.toString.call(o);
121
- }
122
- ;
123
- clone2.__objToStr = __objToStr;
124
- function __isDate(o) {
125
- return typeof o === "object" && __objToStr(o) === "[object Date]";
126
- }
127
- ;
128
- clone2.__isDate = __isDate;
129
- function __isArray(o) {
130
- return typeof o === "object" && __objToStr(o) === "[object Array]";
38
+ var UNICODE_VERSION = "18.0.0";
39
+ var WIDE_RANGES = [
40
+ [4352, 4447],
41
+ [8986, 8987],
42
+ [9001, 9002],
43
+ [9193, 9196],
44
+ [9200, 9200],
45
+ [9203, 9203],
46
+ [9725, 9726],
47
+ [9748, 9749],
48
+ [9776, 9783],
49
+ [9800, 9811],
50
+ [9855, 9855],
51
+ [9866, 9871],
52
+ [9875, 9875],
53
+ [9889, 9889],
54
+ [9898, 9899],
55
+ [9917, 9918],
56
+ [9924, 9925],
57
+ [9934, 9934],
58
+ [9940, 9940],
59
+ [9962, 9962],
60
+ [9970, 9971],
61
+ [9973, 9973],
62
+ [9978, 9978],
63
+ [9981, 9981],
64
+ [9989, 9989],
65
+ [9994, 9995],
66
+ [10024, 10024],
67
+ [10060, 10060],
68
+ [10062, 10062],
69
+ [10067, 10069],
70
+ [10071, 10071],
71
+ [10133, 10135],
72
+ [10160, 10160],
73
+ [10175, 10175],
74
+ [11035, 11036],
75
+ [11088, 11088],
76
+ [11093, 11093],
77
+ [11904, 11929],
78
+ [11931, 12019],
79
+ [12032, 12245],
80
+ [12272, 12350],
81
+ [12353, 12438],
82
+ [12441, 12543],
83
+ [12549, 12591],
84
+ [12593, 12686],
85
+ [12688, 12773],
86
+ [12783, 12830],
87
+ [12832, 12871],
88
+ [12880, 42124],
89
+ [42128, 42182],
90
+ [43360, 43388],
91
+ [44032, 55203],
92
+ [63744, 64255],
93
+ [65040, 65049],
94
+ [65072, 65106],
95
+ [65108, 65126],
96
+ [65128, 65131],
97
+ [65281, 65376],
98
+ [65504, 65510],
99
+ [94176, 94180],
100
+ [94192, 94198],
101
+ [94208, 101594],
102
+ [101631, 101664],
103
+ [101760, 101874],
104
+ [101888, 102801],
105
+ [102816, 102866],
106
+ [110576, 110579],
107
+ [110581, 110587],
108
+ [110589, 110590],
109
+ [110592, 110888],
110
+ [110898, 110898],
111
+ [110928, 110930],
112
+ [110933, 110933],
113
+ [110948, 110952],
114
+ [110960, 111355],
115
+ [119552, 119638],
116
+ [119648, 119670],
117
+ [126980, 126980],
118
+ [127183, 127183],
119
+ [127374, 127374],
120
+ [127377, 127386],
121
+ [127406, 127406],
122
+ [127488, 127490],
123
+ [127504, 127547],
124
+ [127552, 127560],
125
+ [127568, 127569],
126
+ [127584, 127589],
127
+ [127744, 127776],
128
+ [127789, 127797],
129
+ [127799, 127868],
130
+ [127870, 127891],
131
+ [127904, 127946],
132
+ [127951, 127955],
133
+ [127968, 127984],
134
+ [127988, 127988],
135
+ [127992, 128062],
136
+ [128064, 128064],
137
+ [128066, 128252],
138
+ [128255, 128317],
139
+ [128331, 128334],
140
+ [128336, 128359],
141
+ [128378, 128378],
142
+ [128405, 128406],
143
+ [128420, 128420],
144
+ [128507, 128591],
145
+ [128640, 128709],
146
+ [128716, 128716],
147
+ [128720, 128722],
148
+ [128725, 128729],
149
+ [128732, 128735],
150
+ [128747, 128748],
151
+ [128756, 128764],
152
+ [128986, 128986],
153
+ [128992, 129003],
154
+ [129008, 129008],
155
+ [129292, 129338],
156
+ [129340, 129349],
157
+ [129351, 129535],
158
+ [129648, 129660],
159
+ [129664, 129734],
160
+ [129736, 129736],
161
+ [129740, 129757],
162
+ [129759, 129771],
163
+ [129775, 129786],
164
+ [131072, 196605],
165
+ [196608, 262141]
166
+ ];
167
+ var cell = (cp) => cp <= 65535 ? `\\u${cp.toString(16).toUpperCase().padStart(4, "0")}` : `\\u{${cp.toString(16).toUpperCase()}}`;
168
+ var WIDE = new RegExp(
169
+ "[" + WIDE_RANGES.map(([lo, hi]) => cell(lo) + (hi > lo ? `-${cell(hi)}` : "")).join("") + "]",
170
+ "u"
171
+ );
172
+ var ZERO = /[\u200B\p{Mn}\p{Me}\p{Cf}\u1160-\u11FF]/u;
173
+ var EMOJI = /\p{Emoji_Presentation}/u;
174
+ function width(char) {
175
+ if (typeof char !== "string") {
176
+ throw new TypeError("width() expects a string");
131
177
  }
132
- ;
133
- clone2.__isArray = __isArray;
134
- function __isRegExp(o) {
135
- return typeof o === "object" && __objToStr(o) === "[object RegExp]";
178
+ if (char.length === 0) {
179
+ return 0;
136
180
  }
137
- ;
138
- clone2.__isRegExp = __isRegExp;
139
- function __getRegExpFlags(re) {
140
- var flags = "";
141
- if (re.global) flags += "g";
142
- if (re.ignoreCase) flags += "i";
143
- if (re.multiline) flags += "m";
144
- return flags;
181
+ if (char.length > 1 && [...char].length > 1) {
182
+ throw new TypeError("width() expects exactly one Unicode code point");
145
183
  }
146
- ;
147
- clone2.__getRegExpFlags = __getRegExpFlags;
148
- return clone2;
149
- })();
150
- if (typeof module2 === "object" && module2.exports) {
151
- module2.exports = clone;
184
+ const cp = char.codePointAt(0);
185
+ if (cp < 32 || cp >= 127 && cp < 160) return 0;
186
+ if (cp === 173) return 1;
187
+ if (ZERO.test(char)) return 0;
188
+ if (EMOJI.test(char) && !(cp >= 127462 && cp <= 127487)) return 2;
189
+ return WIDE.test(char) ? 2 : 1;
152
190
  }
153
- }
154
- });
155
-
156
- // node_modules/defaults/index.js
157
- var require_defaults = __commonJS({
158
- "node_modules/defaults/index.js"(exports2, module2) {
159
- "use strict";
160
- var clone = require_clone();
161
- module2.exports = function(options, defaults2) {
162
- options = options || {};
163
- Object.keys(defaults2).forEach(function(key) {
164
- if (typeof options[key] === "undefined") {
165
- options[key] = clone(defaults2[key]);
191
+ module2.exports = function breakword2(input, breakAtLength) {
192
+ const str = String(input);
193
+ let indexOfLastFitChar = 0;
194
+ let fittableLength = 0;
195
+ let index = 0;
196
+ for (const char of str) {
197
+ const currentLength = fittableLength + width(char);
198
+ if (currentLength > breakAtLength) {
199
+ break;
166
200
  }
167
- });
168
- return options;
169
- };
170
- }
171
- });
172
-
173
- // node_modules/wcwidth/combining.js
174
- var require_combining = __commonJS({
175
- "node_modules/wcwidth/combining.js"(exports2, module2) {
176
- "use strict";
177
- module2.exports = [
178
- [768, 879],
179
- [1155, 1158],
180
- [1160, 1161],
181
- [1425, 1469],
182
- [1471, 1471],
183
- [1473, 1474],
184
- [1476, 1477],
185
- [1479, 1479],
186
- [1536, 1539],
187
- [1552, 1557],
188
- [1611, 1630],
189
- [1648, 1648],
190
- [1750, 1764],
191
- [1767, 1768],
192
- [1770, 1773],
193
- [1807, 1807],
194
- [1809, 1809],
195
- [1840, 1866],
196
- [1958, 1968],
197
- [2027, 2035],
198
- [2305, 2306],
199
- [2364, 2364],
200
- [2369, 2376],
201
- [2381, 2381],
202
- [2385, 2388],
203
- [2402, 2403],
204
- [2433, 2433],
205
- [2492, 2492],
206
- [2497, 2500],
207
- [2509, 2509],
208
- [2530, 2531],
209
- [2561, 2562],
210
- [2620, 2620],
211
- [2625, 2626],
212
- [2631, 2632],
213
- [2635, 2637],
214
- [2672, 2673],
215
- [2689, 2690],
216
- [2748, 2748],
217
- [2753, 2757],
218
- [2759, 2760],
219
- [2765, 2765],
220
- [2786, 2787],
221
- [2817, 2817],
222
- [2876, 2876],
223
- [2879, 2879],
224
- [2881, 2883],
225
- [2893, 2893],
226
- [2902, 2902],
227
- [2946, 2946],
228
- [3008, 3008],
229
- [3021, 3021],
230
- [3134, 3136],
231
- [3142, 3144],
232
- [3146, 3149],
233
- [3157, 3158],
234
- [3260, 3260],
235
- [3263, 3263],
236
- [3270, 3270],
237
- [3276, 3277],
238
- [3298, 3299],
239
- [3393, 3395],
240
- [3405, 3405],
241
- [3530, 3530],
242
- [3538, 3540],
243
- [3542, 3542],
244
- [3633, 3633],
245
- [3636, 3642],
246
- [3655, 3662],
247
- [3761, 3761],
248
- [3764, 3769],
249
- [3771, 3772],
250
- [3784, 3789],
251
- [3864, 3865],
252
- [3893, 3893],
253
- [3895, 3895],
254
- [3897, 3897],
255
- [3953, 3966],
256
- [3968, 3972],
257
- [3974, 3975],
258
- [3984, 3991],
259
- [3993, 4028],
260
- [4038, 4038],
261
- [4141, 4144],
262
- [4146, 4146],
263
- [4150, 4151],
264
- [4153, 4153],
265
- [4184, 4185],
266
- [4448, 4607],
267
- [4959, 4959],
268
- [5906, 5908],
269
- [5938, 5940],
270
- [5970, 5971],
271
- [6002, 6003],
272
- [6068, 6069],
273
- [6071, 6077],
274
- [6086, 6086],
275
- [6089, 6099],
276
- [6109, 6109],
277
- [6155, 6157],
278
- [6313, 6313],
279
- [6432, 6434],
280
- [6439, 6440],
281
- [6450, 6450],
282
- [6457, 6459],
283
- [6679, 6680],
284
- [6912, 6915],
285
- [6964, 6964],
286
- [6966, 6970],
287
- [6972, 6972],
288
- [6978, 6978],
289
- [7019, 7027],
290
- [7616, 7626],
291
- [7678, 7679],
292
- [8203, 8207],
293
- [8234, 8238],
294
- [8288, 8291],
295
- [8298, 8303],
296
- [8400, 8431],
297
- [12330, 12335],
298
- [12441, 12442],
299
- [43014, 43014],
300
- [43019, 43019],
301
- [43045, 43046],
302
- [64286, 64286],
303
- [65024, 65039],
304
- [65056, 65059],
305
- [65279, 65279],
306
- [65529, 65531],
307
- [68097, 68099],
308
- [68101, 68102],
309
- [68108, 68111],
310
- [68152, 68154],
311
- [68159, 68159],
312
- [119143, 119145],
313
- [119155, 119170],
314
- [119173, 119179],
315
- [119210, 119213],
316
- [119362, 119364],
317
- [917505, 917505],
318
- [917536, 917631],
319
- [917760, 917999]
320
- ];
321
- }
322
- });
323
-
324
- // node_modules/wcwidth/index.js
325
- var require_wcwidth = __commonJS({
326
- "node_modules/wcwidth/index.js"(exports2, module2) {
327
- "use strict";
328
- var defaults2 = require_defaults();
329
- var combining = require_combining();
330
- var DEFAULTS = {
331
- nul: 0,
332
- control: 0
333
- };
334
- module2.exports = function wcwidth3(str) {
335
- return wcswidth(str, DEFAULTS);
336
- };
337
- module2.exports.config = function(opts) {
338
- opts = defaults2(opts || {}, DEFAULTS);
339
- return function wcwidth3(str) {
340
- return wcswidth(str, opts);
341
- };
342
- };
343
- function wcswidth(str, opts) {
344
- if (typeof str !== "string") return wcwidth2(str, opts);
345
- var s = 0;
346
- for (var i = 0; i < str.length; i++) {
347
- var n = wcwidth2(str.charCodeAt(i), opts);
348
- if (n < 0) return -1;
349
- s += n;
201
+ indexOfLastFitChar = index;
202
+ fittableLength = currentLength;
203
+ index += 1;
350
204
  }
351
- return s;
352
- }
353
- function wcwidth2(ucs, opts) {
354
- if (ucs === 0) return opts.nul;
355
- if (ucs < 32 || ucs >= 127 && ucs < 160) return opts.control;
356
- if (bisearch(ucs)) return 0;
357
- return 1 + (ucs >= 4352 && (ucs <= 4447 || // Hangul Jamo init. consonants
358
- ucs == 9001 || ucs == 9002 || ucs >= 11904 && ucs <= 42191 && ucs != 12351 || // CJK ... Yi
359
- ucs >= 44032 && ucs <= 55203 || // Hangul Syllables
360
- ucs >= 63744 && ucs <= 64255 || // CJK Compatibility Ideographs
361
- ucs >= 65040 && ucs <= 65049 || // Vertical forms
362
- ucs >= 65072 && ucs <= 65135 || // CJK Compatibility Forms
363
- ucs >= 65280 && ucs <= 65376 || // Fullwidth Forms
364
- ucs >= 65504 && ucs <= 65510 || ucs >= 131072 && ucs <= 196605 || ucs >= 196608 && ucs <= 262141));
365
- }
366
- function bisearch(ucs) {
367
- var min = 0;
368
- var max = combining.length - 1;
369
- var mid;
370
- if (ucs < combining[0][0] || ucs > combining[max][1]) return false;
371
- while (max >= min) {
372
- mid = Math.floor((min + max) / 2);
373
- if (ucs > combining[mid][1]) min = mid + 1;
374
- else if (ucs < combining[mid][0]) max = mid - 1;
375
- else return true;
376
- }
377
- return false;
378
- }
205
+ return indexOfLastFitChar;
206
+ };
207
+ module2.exports.width = width;
208
+ module2.exports.internals = { UNICODE_VERSION, WIDE_RANGES, WIDE, ZERO, EMOJI, width };
379
209
  }
380
210
  });
381
211
 
@@ -467,24 +297,18 @@ var defaults_default = defaults;
467
297
 
468
298
  // src/style.ts
469
299
  var import_chalk = __toESM(require("chalk"));
470
- var import_kleur = __toESM(require("kleur"));
471
300
  var import_strip_ansi = __toESM(require("strip-ansi"));
472
- var colorLib = process && process.stdout ? import_chalk.default : import_kleur.default;
473
- var style = (str, ...colors) => {
474
- const out = colors.reduce(function(input, color) {
475
- return colorLib[color](input);
476
- }, str);
477
- return out;
301
+ var colorLib = typeof process !== "undefined" && process.stdout ? import_chalk.default : new import_chalk.default.Instance({ level: 1 });
302
+ var colorize = (value, color) => {
303
+ const fn = colorLib[color];
304
+ return typeof fn === "function" ? fn(value) : value;
478
305
  };
306
+ var style = (str, ...colors) => colors.reduce(colorize, str);
479
307
  var styleEachChar = (str, ...colors) => {
480
308
  const chars = [...(0, import_strip_ansi.default)(str)];
481
- const out = chars.reduce((prev, current) => {
482
- const coded = colors.reduce((input, color) => {
483
- return colorLib[color](input);
484
- }, current);
485
- return prev + coded;
309
+ return chars.reduce((result, char) => {
310
+ return result + colors.reduce(colorize, char);
486
311
  }, "");
487
- return out;
488
312
  };
489
313
  var resetStyle = function(str) {
490
314
  this.configure({ reset: true });
@@ -507,25 +331,24 @@ var colorizeCell = (str, cellOptions, rowType) => {
507
331
  }
508
332
  return str;
509
333
  };
510
- var isColorEnabled = () => {
511
- return process && process.stdout ? colorLib.level > 0 : colorLib.enabled;
512
- };
334
+ var isColorEnabled = () => colorLib.level > 0;
513
335
 
514
336
  // src/format.ts
515
- var import_strip_ansi2 = __toESM(require("strip-ansi"));
516
337
  var import_smartwrap = __toESM(require("smartwrap"));
517
- var import_wcwidth = __toESM(require_wcwidth());
338
+
339
+ // src/ansi.ts
340
+ var import_breakword = __toESM(require_main());
341
+ var ANSI = /\u001B\[[0-?]*[ -\/]*[@-~]/g;
342
+ var stripAnsi2 = (value) => value.replace(ANSI, "");
343
+ var codePointWidth = (value) => [...value].reduce((total, char) => total + import_breakword.default.width(char), 0);
344
+ var displayWidth = (value) => Math.max(0, ...stripAnsi2(value).split(/\r?\n/).map(codePointWidth));
345
+
346
+ // src/format.ts
518
347
  var addPadding = (config, width) => {
519
348
  return width + config.paddingLeft + config.paddingRight;
520
349
  };
521
350
  var getDisplayWidth = (value) => {
522
- const lines = (0, import_strip_ansi2.default)(value.toString()).split(/[\n\r]/);
523
- let widest = 0;
524
- for (const line of lines) {
525
- const width = (0, import_wcwidth.default)(line);
526
- if (width > widest) widest = width;
527
- }
528
- return widest;
351
+ return displayWidth(value.toString());
529
352
  };
530
353
  var getMaxLength = (columnOptions, rows, columnIndex) => {
531
354
  let widest = 0;
@@ -559,7 +382,7 @@ var getAvailableWidth = (config) => {
559
382
  return config.COLUMNS - config.marginLeft;
560
383
  };
561
384
  var getStringLength = (str) => {
562
- return (0, import_wcwidth.default)((0, import_strip_ansi2.default)(str));
385
+ return displayWidth(str);
563
386
  };
564
387
  var wrapCellText = (config, cellValue, columnIndex, cellOptions, rowType) => {
565
388
  const startAnsiRegexp = /^(\x1b\[[0-9;]*m)+/;
@@ -618,10 +441,10 @@ var wrapCellText = (config, cellValue, columnIndex, cellOptions, rowType) => {
618
441
  return { cell, innerWidth };
619
442
  };
620
443
  var truncate = (str, cellOptions, maxWidth) => {
621
- const stringWidth = (0, import_wcwidth.default)(str);
444
+ const stringWidth = displayWidth(str);
622
445
  if (maxWidth < stringWidth) {
623
446
  str = (0, import_smartwrap.default)(str, {
624
- width: maxWidth - cellOptions.truncate.length,
447
+ width: maxWidth - displayWidth(cellOptions.truncate),
625
448
  breakword: true
626
449
  }).split("\n")[0];
627
450
  str = str + cellOptions.truncate;
@@ -679,7 +502,7 @@ var getColumnWidths = (config, rows) => {
679
502
  };
680
503
 
681
504
  // src/render.ts
682
- var import_strip_ansi3 = __toESM(require("strip-ansi"));
505
+ var import_strip_ansi2 = __toESM(require("strip-ansi"));
683
506
  var stringifyData = (config, inputData) => {
684
507
  const sections = { header: [], body: [], footer: [] };
685
508
  const marginLeft = " ".repeat(config.marginLeft);
@@ -788,7 +611,7 @@ var buildCell = (config, elem, columnIndex, rowType, rowIndex, rowData, inputDat
788
611
  switch (true) {
789
612
  case (typeof elem === "undefined" || elem === null):
790
613
  cellValue = config.errorOnNull ? config.defaultErrorValue : config.defaultValue;
791
- if (!isColorEnabled()) cellValue = (0, import_strip_ansi3.default)(cellValue);
614
+ if (!isColorEnabled()) cellValue = (0, import_strip_ansi2.default)(cellValue);
792
615
  cellOptions.isNull = true;
793
616
  break;
794
617
  case (typeof elem === "object" && elem !== null && typeof elem.value !== "undefined"):
@@ -965,7 +788,7 @@ var src_default = factory_default;
965
788
  // package.json
966
789
  var package_default = {
967
790
  name: "tty-table",
968
- version: "6.1.0",
791
+ version: "7.0.1",
969
792
  description: "Typed terminal table renderer for Node.js and browsers",
970
793
  main: "dist/index.js",
971
794
  module: "dist/index.mjs",
@@ -979,7 +802,7 @@ var package_default = {
979
802
  }
980
803
  },
981
804
  engines: {
982
- node: ">=20"
805
+ node: ">=22"
983
806
  },
984
807
  bin: {
985
808
  "tty-table": "adapters/terminal-adapter.js",
@@ -1022,19 +845,17 @@ var package_default = {
1022
845
  homepage: "https://github.com/tecfu/tty-table",
1023
846
  dependencies: {
1024
847
  "@modelcontextprotocol/sdk": "^1.30.0",
848
+ breakword: "^2.1.0",
1025
849
  chalk: "^4.1.2",
1026
850
  csv: "^6.3.11",
1027
- kleur: "^4.1.5",
1028
- smartwrap: "^2.0.2",
851
+ smartwrap: "^4.0.0",
1029
852
  "strip-ansi": "^6.0.1",
1030
- wcwidth: "^1.0.1",
1031
853
  yargs: "^17.7.2",
1032
854
  zod: "^4.6.5"
1033
855
  },
1034
856
  devDependencies: {
1035
857
  "@eslint/js": "^9.30.0",
1036
858
  "@types/node": "^22.15.0",
1037
- "@types/wcwidth": "^1.0.2",
1038
859
  "@types/yargs": "^17.0.33",
1039
860
  chai: "^4.5.0",
1040
861
  commander: "^4.1.1",