termpainter 1.2.0 → 2.0.0

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 (113) hide show
  1. package/README.md +140 -17
  2. package/dist/cjs/badge.cjs +3 -0
  3. package/dist/cjs/badge.d.ts.map +1 -1
  4. package/dist/cjs/badge.js.map +1 -1
  5. package/dist/cjs/box.cjs +19 -3
  6. package/dist/cjs/box.d.cts +5 -1
  7. package/dist/cjs/box.d.ts +5 -1
  8. package/dist/cjs/box.d.ts.map +1 -1
  9. package/dist/cjs/box.js.map +1 -1
  10. package/dist/cjs/columns.cjs +30 -0
  11. package/dist/cjs/columns.d.cts +6 -0
  12. package/dist/cjs/columns.d.ts +6 -0
  13. package/dist/cjs/columns.d.ts.map +1 -0
  14. package/dist/cjs/columns.js.map +1 -0
  15. package/dist/cjs/env.cjs +7 -0
  16. package/dist/cjs/env.d.cts +1 -0
  17. package/dist/cjs/env.d.ts +1 -0
  18. package/dist/cjs/env.d.ts.map +1 -1
  19. package/dist/cjs/env.js.map +1 -1
  20. package/dist/cjs/icons.cjs +4 -0
  21. package/dist/cjs/icons.d.cts +1 -0
  22. package/dist/cjs/icons.d.ts +1 -0
  23. package/dist/cjs/icons.d.ts.map +1 -1
  24. package/dist/cjs/icons.js.map +1 -1
  25. package/dist/cjs/index.cjs +13 -1
  26. package/dist/cjs/index.d.cts +10 -1
  27. package/dist/cjs/index.d.ts +10 -1
  28. package/dist/cjs/index.d.ts.map +1 -1
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/paint.cjs +3 -0
  31. package/dist/cjs/paint.d.ts.map +1 -1
  32. package/dist/cjs/paint.js.map +1 -1
  33. package/dist/cjs/silent.cjs +12 -0
  34. package/dist/cjs/silent.d.cts +3 -0
  35. package/dist/cjs/silent.d.ts +3 -0
  36. package/dist/cjs/silent.d.ts.map +1 -0
  37. package/dist/cjs/silent.js.map +1 -0
  38. package/dist/cjs/spinner.cjs +31 -3
  39. package/dist/cjs/spinner.d.cts +1 -0
  40. package/dist/cjs/spinner.d.ts +1 -0
  41. package/dist/cjs/spinner.d.ts.map +1 -1
  42. package/dist/cjs/spinner.js.map +1 -1
  43. package/dist/cjs/style.cjs +57 -8
  44. package/dist/cjs/style.d.cts +7 -0
  45. package/dist/cjs/style.d.ts +7 -0
  46. package/dist/cjs/style.d.ts.map +1 -1
  47. package/dist/cjs/style.js.map +1 -1
  48. package/dist/cjs/testmode.cjs +12 -0
  49. package/dist/cjs/testmode.d.cts +3 -0
  50. package/dist/cjs/testmode.d.ts +3 -0
  51. package/dist/cjs/testmode.d.ts.map +1 -0
  52. package/dist/cjs/testmode.js.map +1 -0
  53. package/dist/cjs/theme.cjs +45 -0
  54. package/dist/cjs/theme.d.cts +27 -0
  55. package/dist/cjs/theme.d.ts +27 -0
  56. package/dist/cjs/theme.d.ts.map +1 -0
  57. package/dist/cjs/theme.js.map +1 -0
  58. package/dist/cjs/truncate.cjs +27 -0
  59. package/dist/cjs/truncate.d.cts +2 -0
  60. package/dist/cjs/truncate.d.ts +2 -0
  61. package/dist/cjs/truncate.d.ts.map +1 -0
  62. package/dist/cjs/truncate.js.map +1 -0
  63. package/dist/esm/badge.js +3 -0
  64. package/dist/esm/badge.js.map +1 -1
  65. package/dist/esm/box.js +19 -3
  66. package/dist/esm/box.js.map +1 -1
  67. package/dist/esm/columns.js +27 -0
  68. package/dist/esm/columns.js.map +1 -0
  69. package/dist/esm/env.js +6 -0
  70. package/dist/esm/env.js.map +1 -1
  71. package/dist/esm/icons.js +3 -0
  72. package/dist/esm/icons.js.map +1 -1
  73. package/dist/esm/index.js +6 -1
  74. package/dist/esm/index.js.map +1 -1
  75. package/dist/esm/paint.js +3 -0
  76. package/dist/esm/paint.js.map +1 -1
  77. package/dist/esm/silent.js +8 -0
  78. package/dist/esm/silent.js.map +1 -0
  79. package/dist/esm/spinner.js +31 -3
  80. package/dist/esm/spinner.js.map +1 -1
  81. package/dist/esm/style.js +57 -8
  82. package/dist/esm/style.js.map +1 -1
  83. package/dist/esm/testmode.js +8 -0
  84. package/dist/esm/testmode.js.map +1 -0
  85. package/dist/esm/theme.js +40 -0
  86. package/dist/esm/theme.js.map +1 -0
  87. package/dist/esm/truncate.js +24 -0
  88. package/dist/esm/truncate.js.map +1 -0
  89. package/dist/types/badge.d.ts.map +1 -1
  90. package/dist/types/box.d.ts +5 -1
  91. package/dist/types/box.d.ts.map +1 -1
  92. package/dist/types/columns.d.ts +6 -0
  93. package/dist/types/columns.d.ts.map +1 -0
  94. package/dist/types/env.d.ts +1 -0
  95. package/dist/types/env.d.ts.map +1 -1
  96. package/dist/types/icons.d.ts +1 -0
  97. package/dist/types/icons.d.ts.map +1 -1
  98. package/dist/types/index.d.ts +10 -1
  99. package/dist/types/index.d.ts.map +1 -1
  100. package/dist/types/paint.d.ts.map +1 -1
  101. package/dist/types/silent.d.ts +3 -0
  102. package/dist/types/silent.d.ts.map +1 -0
  103. package/dist/types/spinner.d.ts +1 -0
  104. package/dist/types/spinner.d.ts.map +1 -1
  105. package/dist/types/style.d.ts +7 -0
  106. package/dist/types/style.d.ts.map +1 -1
  107. package/dist/types/testmode.d.ts +3 -0
  108. package/dist/types/testmode.d.ts.map +1 -0
  109. package/dist/types/theme.d.ts +27 -0
  110. package/dist/types/theme.d.ts.map +1 -0
  111. package/dist/types/truncate.d.ts +2 -0
  112. package/dist/types/truncate.d.ts.map +1 -0
  113. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"silent.js","sourceRoot":"","sources":["../../src/silent.ts"],"names":[],"mappings":";;AAEA,8BAEC;AAED,4BAEC;AARD,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,SAAgB,SAAS,CAAC,IAAa;IACrC,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAED,SAAgB,QAAQ;IACtB,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -2,12 +2,37 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.spin = spin;
4
4
  const style_js_1 = require('./style.cjs');
5
+ const silent_js_1 = require('./silent.cjs');
6
+ const testmode_js_1 = require('./testmode.cjs');
5
7
  const FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
6
8
  function spin(msg) {
9
+ if ((0, silent_js_1.isSilent)()) {
10
+ return {
11
+ succeed(_) { },
12
+ fail(_) { },
13
+ update(_) { },
14
+ };
15
+ }
16
+ // Non-TTY and test mode: static single-line output, no animation
17
+ if (!process.stdout.isTTY || (0, testmode_js_1.isTestMode)()) {
18
+ process.stdout.write(style_js_1.style.muted(msg) + '\n');
19
+ return {
20
+ succeed(newMsg) {
21
+ process.stdout.write(style_js_1.style.success(newMsg ?? msg) + '\n');
22
+ },
23
+ fail(newMsg) {
24
+ process.stdout.write(style_js_1.style.error(newMsg ?? msg) + '\n');
25
+ },
26
+ update(newMsg) {
27
+ process.stdout.write(style_js_1.style.muted(newMsg) + '\n');
28
+ },
29
+ };
30
+ }
31
+ let currentMsg = msg;
7
32
  let i = 0;
8
33
  const timer = setInterval(() => {
9
34
  const frame = FRAMES[i % FRAMES.length];
10
- process.stdout.write(`\r${frame} ${msg}`);
35
+ process.stdout.write(`\r\x1b[K${frame} ${currentMsg}`);
11
36
  i++;
12
37
  }, 80);
13
38
  function stop(output) {
@@ -16,10 +41,13 @@ function spin(msg) {
16
41
  }
17
42
  return {
18
43
  succeed(newMsg) {
19
- stop(style_js_1.style.success(newMsg ?? msg));
44
+ stop(style_js_1.style.success(newMsg ?? currentMsg));
20
45
  },
21
46
  fail(newMsg) {
22
- stop(style_js_1.style.error(newMsg ?? msg));
47
+ stop(style_js_1.style.error(newMsg ?? currentMsg));
48
+ },
49
+ update(newMsg) {
50
+ currentMsg = newMsg;
23
51
  },
24
52
  };
25
53
  }
@@ -1,6 +1,7 @@
1
1
  export interface SpinnerHandle {
2
2
  succeed(msg?: string): void;
3
3
  fail(msg?: string): void;
4
+ update(msg: string): void;
4
5
  }
5
6
  export declare function spin(msg: string): SpinnerHandle;
6
7
  //# sourceMappingURL=spinner.d.ts.map
@@ -1,6 +1,7 @@
1
1
  export interface SpinnerHandle {
2
2
  succeed(msg?: string): void;
3
3
  fail(msg?: string): void;
4
+ update(msg: string): void;
4
5
  }
5
6
  export declare function spin(msg: string): SpinnerHandle;
6
7
  //# sourceMappingURL=spinner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/spinner.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAqB/C"}
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/spinner.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAiD/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/spinner.ts"],"names":[],"mappings":";;AASA,oBAqBC;AA9BD,yCAAmC;AAEnC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAOlE,SAAgB,IAAI,CAAC,GAAW;IAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1C,CAAC,EAAE,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,IAAI,CAAC,MAAc;QAC1B,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,MAAM,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,OAAO,CAAC,MAAe;YACrB,IAAI,CAAC,gBAAK,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,MAAe;YAClB,IAAI,CAAC,gBAAK,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/spinner.ts"],"names":[],"mappings":";;AAYA,oBAiDC;AA7DD,yCAAmC;AACnC,2CAAuC;AACvC,+CAA2C;AAE3C,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAQlE,SAAgB,IAAI,CAAC,GAAW;IAC9B,IAAI,IAAA,oBAAQ,GAAE,EAAE,CAAC;QACf,OAAO;YACL,OAAO,CAAC,CAAU,IAAS,CAAC;YAC5B,IAAI,CAAC,CAAU,IAAS,CAAC;YACzB,MAAM,CAAC,CAAS,IAAS,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,IAAA,wBAAU,GAAE,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9C,OAAO;YACL,OAAO,CAAC,MAAe;gBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAK,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,MAAe;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAK,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM,CAAC,MAAc;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YACnD,CAAC;SACF,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,GAAG,GAAG,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC,EAAE,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,IAAI,CAAC,MAAc;QAC1B,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,MAAM,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,OAAO,CAAC,MAAe;YACrB,IAAI,CAAC,gBAAK,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,MAAe;YAClB,IAAI,CAAC,gBAAK,CAAC,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,CAAC,MAAc;YACnB,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.style = void 0;
4
4
  const paint_js_1 = require('./paint.cjs');
5
5
  const icons_js_1 = require('./icons.cjs');
6
+ const theme_js_1 = require('./theme.cjs');
7
+ const silent_js_1 = require('./silent.cjs');
8
+ const testmode_js_1 = require('./testmode.cjs');
6
9
  function formatMeta(data) {
7
10
  const keys = Object.keys(data);
8
11
  if (keys.length === 0)
@@ -18,35 +21,60 @@ function formatMeta(data) {
18
21
  }
19
22
  exports.style = {
20
23
  error(msg, meta) {
21
- return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().error} ${msg}`, { color: 'red' }) + (meta ? formatMeta(meta) : '');
24
+ if ((0, silent_js_1.isSilent)())
25
+ return '';
26
+ const t = (0, theme_js_1.getTheme)().error;
27
+ return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().error} ${msg}`, { color: t.color, dim: t.dim }) + (meta ? formatMeta(meta) : '');
22
28
  },
23
29
  success(msg, meta) {
24
- return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().success} ${msg}`, { color: 'green' }) + (meta ? formatMeta(meta) : '');
30
+ if ((0, silent_js_1.isSilent)())
31
+ return '';
32
+ const t = (0, theme_js_1.getTheme)().success;
33
+ return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().success} ${msg}`, { color: t.color, dim: t.dim }) + (meta ? formatMeta(meta) : '');
25
34
  },
26
35
  warn(msg, meta) {
27
- return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().warn} ${msg}`, { color: 'yellow' }) + (meta ? formatMeta(meta) : '');
36
+ if ((0, silent_js_1.isSilent)())
37
+ return '';
38
+ const t = (0, theme_js_1.getTheme)().warn;
39
+ return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().warn} ${msg}`, { color: t.color, dim: t.dim }) + (meta ? formatMeta(meta) : '');
28
40
  },
29
41
  info(msg, meta) {
30
- return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().info} ${msg}`, { color: 'blue' }) + (meta ? formatMeta(meta) : '');
42
+ if ((0, silent_js_1.isSilent)())
43
+ return '';
44
+ const t = (0, theme_js_1.getTheme)().info;
45
+ return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().info} ${msg}`, { color: t.color, dim: t.dim }) + (meta ? formatMeta(meta) : '');
31
46
  },
32
47
  debug(msg, meta) {
33
- if (!process.env['DEBUG'])
48
+ if ((0, silent_js_1.isSilent)() || !process.env['DEBUG'])
34
49
  return '';
35
- return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().debug} ${msg}`, { color: 'gray', dim: true }) + (meta ? formatMeta(meta) : '');
50
+ const t = (0, theme_js_1.getTheme)().debug;
51
+ return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().debug} ${msg}`, { color: t.color, dim: t.dim }) + (meta ? formatMeta(meta) : '');
36
52
  },
37
53
  muted(msg) {
38
- return (0, paint_js_1.paint)(msg, { color: 'gray', dim: true });
54
+ if ((0, silent_js_1.isSilent)())
55
+ return '';
56
+ const t = (0, theme_js_1.getTheme)().muted;
57
+ return (0, paint_js_1.paint)(msg, { color: t.color, dim: t.dim });
39
58
  },
40
59
  bold(msg) {
60
+ if ((0, silent_js_1.isSilent)())
61
+ return '';
41
62
  return (0, paint_js_1.paint)(msg, { color: 'white', bold: true });
42
63
  },
43
64
  highlight(msg) {
44
- return (0, paint_js_1.paint)(msg, { color: 'cyan' });
65
+ if ((0, silent_js_1.isSilent)())
66
+ return '';
67
+ const t = (0, theme_js_1.getTheme)().highlight;
68
+ return (0, paint_js_1.paint)(msg, { color: t.color, dim: t.dim });
45
69
  },
46
70
  divider(color = 'gray') {
71
+ if ((0, silent_js_1.isSilent)())
72
+ return '';
47
73
  return (0, paint_js_1.paint)('─'.repeat(40), { color });
48
74
  },
49
75
  table(data, color = 'cyan') {
76
+ if ((0, silent_js_1.isSilent)())
77
+ return '';
50
78
  const keys = Object.keys(data);
51
79
  if (keys.length === 0)
52
80
  return '';
@@ -59,6 +87,10 @@ exports.style = {
59
87
  .join('\n');
60
88
  },
61
89
  timestamp(msg, color = 'gray') {
90
+ if ((0, silent_js_1.isSilent)())
91
+ return '';
92
+ if ((0, testmode_js_1.isTestMode)())
93
+ return msg;
62
94
  const now = new Date();
63
95
  const hh = String(now.getHours()).padStart(2, '0');
64
96
  const mm = String(now.getMinutes()).padStart(2, '0');
@@ -66,5 +98,22 @@ exports.style = {
66
98
  const prefix = (0, paint_js_1.paint)(`[${hh}:${mm}:${ss}]`, { color });
67
99
  return `${prefix} ${msg}`;
68
100
  },
101
+ group(label, lines) {
102
+ if ((0, silent_js_1.isSilent)())
103
+ return '';
104
+ const header = (0, paint_js_1.paint)(`▶ ${label}`, { color: 'cyan' });
105
+ const body = lines.map((line) => ` ${line}`).join('\n');
106
+ return body.length > 0 ? `${header}\n${body}` : header;
107
+ },
108
+ list(items, options = {}) {
109
+ if ((0, silent_js_1.isSilent)())
110
+ return '';
111
+ const bullet = options.bullet ?? '•';
112
+ const color = options.color ?? 'cyan';
113
+ const indent = options.indent ?? 0;
114
+ const indentStr = ' '.repeat(indent);
115
+ const coloredBullet = (0, paint_js_1.paint)(bullet, { color });
116
+ return items.map((item) => `${indentStr}${coloredBullet} ${item}`).join('\n');
117
+ },
69
118
  };
70
119
  //# sourceMappingURL=style.js.map
@@ -1,5 +1,10 @@
1
1
  import { type Color } from './paint.js';
2
2
  type Meta = Record<string, unknown>;
3
+ export interface ListOptions {
4
+ bullet?: string;
5
+ color?: Color;
6
+ indent?: number;
7
+ }
3
8
  export declare const style: {
4
9
  error(msg: string, meta?: Meta): string;
5
10
  success(msg: string, meta?: Meta): string;
@@ -12,6 +17,8 @@ export declare const style: {
12
17
  divider(color?: Color): string;
13
18
  table(data: Record<string, string>, color?: Color): string;
14
19
  timestamp(msg: string, color?: Color): string;
20
+ group(label: string, lines: string[]): string;
21
+ list(items: string[], options?: ListOptions): string;
15
22
  };
16
23
  export {};
17
24
  //# sourceMappingURL=style.d.ts.map
@@ -1,5 +1,10 @@
1
1
  import { type Color } from './paint.js';
2
2
  type Meta = Record<string, unknown>;
3
+ export interface ListOptions {
4
+ bullet?: string;
5
+ color?: Color;
6
+ indent?: number;
7
+ }
3
8
  export declare const style: {
4
9
  error(msg: string, meta?: Meta): string;
5
10
  success(msg: string, meta?: Meta): string;
@@ -12,6 +17,8 @@ export declare const style: {
12
17
  divider(color?: Color): string;
13
18
  table(data: Record<string, string>, color?: Color): string;
14
19
  timestamp(msg: string, color?: Color): string;
20
+ group(label: string, lines: string[]): string;
21
+ list(items: string[], options?: ListOptions): string;
15
22
  };
16
23
  export {};
17
24
  //# sourceMappingURL=style.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../src/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAG/C,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAiBpC,eAAO,MAAM,KAAK;eACL,MAAM,SAAS,IAAI,GAAG,MAAM;iBAG1B,MAAM,SAAS,IAAI,GAAG,MAAM;cAG/B,MAAM,SAAS,IAAI,GAAG,MAAM;cAG5B,MAAM,SAAS,IAAI,GAAG,MAAM;eAG3B,MAAM,SAAS,IAAI,GAAG,MAAM;eAI5B,MAAM,GAAG,MAAM;cAGhB,MAAM,GAAG,MAAM;mBAGV,MAAM,GAAG,MAAM;oBAIf,KAAK,GAAY,MAAM;gBAI1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAS,KAAK,GAAY,MAAM;mBAYnD,MAAM,UAAS,KAAK,GAAY,MAAM;CAQtD,CAAC"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../src/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAM/C,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiBD,eAAO,MAAM,KAAK;eACL,MAAM,SAAS,IAAI,GAAG,MAAM;iBAK1B,MAAM,SAAS,IAAI,GAAG,MAAM;cAK/B,MAAM,SAAS,IAAI,GAAG,MAAM;cAK5B,MAAM,SAAS,IAAI,GAAG,MAAM;eAK3B,MAAM,SAAS,IAAI,GAAG,MAAM;eAK5B,MAAM,GAAG,MAAM;cAKhB,MAAM,GAAG,MAAM;mBAIV,MAAM,GAAG,MAAM;oBAMf,KAAK,GAAY,MAAM;gBAK1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAS,KAAK,GAAY,MAAM;mBAanD,MAAM,UAAS,KAAK,GAAY,MAAM;iBAWxC,MAAM,SAAS,MAAM,EAAE,GAAG,MAAM;gBAOjC,MAAM,EAAE,YAAW,WAAW,GAAQ,MAAM;CASzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/style.ts"],"names":[],"mappings":";;;AAAA,yCAA+C;AAC/C,yCAAsC;AAItC,SAAS,UAAU,CAAC,IAAU;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,OAAO,CACL,IAAI;QACJ,IAAI;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,SAAS,GAAG,IAAA,gBAAK,EAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACjE,OAAO,KAAK,SAAS,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;AACJ,CAAC;AAEY,QAAA,KAAK,GAAG;IACnB,KAAK,CAAC,GAAW,EAAE,IAAW;QAC5B,OAAO,IAAA,gBAAK,EAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,CAAC,GAAW,EAAE,IAAW;QAC9B,OAAO,IAAA,gBAAK,EAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,OAAO,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,CAAC,GAAW,EAAE,IAAW;QAC3B,OAAO,IAAA,gBAAK,EAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,CAAC,GAAW,EAAE,IAAW;QAC3B,OAAO,IAAA,gBAAK,EAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,KAAK,CAAC,GAAW,EAAE,IAAW;QAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,OAAO,IAAA,gBAAK,EAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5G,CAAC;IACD,KAAK,CAAC,GAAW;QACf,OAAO,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,GAAW;QACd,OAAO,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,SAAS,CAAC,GAAW;QACnB,OAAO,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,QAAe,MAAM;QAC3B,OAAO,IAAA,gBAAK,EAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAA4B,EAAE,QAAe,MAAM;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,OAAO,IAAI;aACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,GAAG,IAAA,gBAAK,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,QAAe,MAAM;QAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAA,gBAAK,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,OAAO,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;IAC5B,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/style.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setTestMode = setTestMode;
4
+ exports.isTestMode = isTestMode;
5
+ let testModeEnabled = false;
6
+ function setTestMode(enabled) {
7
+ testModeEnabled = enabled;
8
+ }
9
+ function isTestMode() {
10
+ return testModeEnabled;
11
+ }
12
+ //# sourceMappingURL=testmode.js.map
@@ -0,0 +1,3 @@
1
+ export declare function setTestMode(enabled: boolean): void;
2
+ export declare function isTestMode(): boolean;
3
+ //# sourceMappingURL=testmode.d.ts.map
@@ -0,0 +1,3 @@
1
+ export declare function setTestMode(enabled: boolean): void;
2
+ export declare function isTestMode(): boolean;
3
+ //# sourceMappingURL=testmode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testmode.d.ts","sourceRoot":"","sources":["../../src/testmode.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAElD;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testmode.js","sourceRoot":"","sources":["../../src/testmode.ts"],"names":[],"mappings":";;AAEA,kCAEC;AAED,gCAEC;AARD,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,SAAgB,WAAW,CAAC,OAAgB;IAC1C,eAAe,GAAG,OAAO,CAAC;AAC5B,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setTheme = setTheme;
4
+ exports.resetTheme = resetTheme;
5
+ exports.getTheme = getTheme;
6
+ const icons_js_1 = require('./icons.cjs');
7
+ const defaults = {
8
+ success: { color: 'green', dim: false },
9
+ error: { color: 'red', dim: false },
10
+ warn: { color: 'yellow', dim: false },
11
+ info: { color: 'blue', dim: false },
12
+ debug: { color: 'gray', dim: true },
13
+ muted: { color: 'gray', dim: true },
14
+ highlight: { color: 'cyan', dim: false },
15
+ };
16
+ let current = { ...defaults };
17
+ function setTheme(theme) {
18
+ // Always start from defaults so each setTheme() call is a clean override
19
+ current = { ...defaults };
20
+ const iconPatch = {};
21
+ (0, icons_js_1.resetIcons)();
22
+ for (const _key of Object.keys(theme)) {
23
+ const entry = theme[_key];
24
+ if (!entry)
25
+ continue;
26
+ current[_key] = {
27
+ color: entry.color ?? defaults[_key].color,
28
+ dim: entry.dim ?? defaults[_key].dim,
29
+ };
30
+ if (entry.icon !== undefined && (_key === 'error' || _key === 'success' || _key === 'warn' || _key === 'info' || _key === 'debug')) {
31
+ iconPatch[_key] = entry.icon;
32
+ }
33
+ }
34
+ if (Object.keys(iconPatch).length > 0) {
35
+ (0, icons_js_1.setIcons)(iconPatch);
36
+ }
37
+ }
38
+ function resetTheme() {
39
+ current = { ...defaults };
40
+ (0, icons_js_1.resetIcons)();
41
+ }
42
+ function getTheme() {
43
+ return current;
44
+ }
45
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1,27 @@
1
+ import type { Color } from './paint.js';
2
+ export interface ThemeEntry {
3
+ color?: Color;
4
+ dim?: boolean;
5
+ icon?: string;
6
+ }
7
+ export interface Theme {
8
+ success?: ThemeEntry;
9
+ error?: ThemeEntry;
10
+ warn?: ThemeEntry;
11
+ info?: ThemeEntry;
12
+ debug?: ThemeEntry;
13
+ muted?: ThemeEntry;
14
+ highlight?: ThemeEntry;
15
+ }
16
+ interface ResolvedEntry {
17
+ color: Color;
18
+ dim: boolean;
19
+ }
20
+ type ResolvedTheme = {
21
+ [K in keyof Required<Theme>]: ResolvedEntry;
22
+ };
23
+ export declare function setTheme(theme: Partial<Theme>): void;
24
+ export declare function resetTheme(): void;
25
+ export declare function getTheme(): ResolvedTheme;
26
+ export {};
27
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1,27 @@
1
+ import type { Color } from './paint.js';
2
+ export interface ThemeEntry {
3
+ color?: Color;
4
+ dim?: boolean;
5
+ icon?: string;
6
+ }
7
+ export interface Theme {
8
+ success?: ThemeEntry;
9
+ error?: ThemeEntry;
10
+ warn?: ThemeEntry;
11
+ info?: ThemeEntry;
12
+ debug?: ThemeEntry;
13
+ muted?: ThemeEntry;
14
+ highlight?: ThemeEntry;
15
+ }
16
+ interface ResolvedEntry {
17
+ color: Color;
18
+ dim: boolean;
19
+ }
20
+ type ResolvedTheme = {
21
+ [K in keyof Required<Theme>]: ResolvedEntry;
22
+ };
23
+ export declare function setTheme(theme: Partial<Theme>): void;
24
+ export declare function resetTheme(): void;
25
+ export declare function getTheme(): ResolvedTheme;
26
+ export {};
27
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;CACd;AAED,KAAK,aAAa,GAAG;KAAG,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,aAAa;CAAE,CAAC;AAcrE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAqBpD;AAED,wBAAgB,UAAU,IAAI,IAAI,CAGjC;AAED,wBAAgB,QAAQ,IAAI,aAAa,CAExC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/theme.ts"],"names":[],"mappings":";;AAsCA,4BAqBC;AAED,gCAGC;AAED,4BAEC;AAnED,yCAAkD;AAyBlD,MAAM,QAAQ,GAAkB;IAC9B,OAAO,EAAI,EAAE,KAAK,EAAE,OAAO,EAAG,GAAG,EAAE,KAAK,EAAE;IAC1C,KAAK,EAAM,EAAE,KAAK,EAAE,KAAK,EAAK,GAAG,EAAE,KAAK,EAAE;IAC1C,IAAI,EAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE;IAC1C,IAAI,EAAO,EAAE,KAAK,EAAE,MAAM,EAAI,GAAG,EAAE,KAAK,EAAE;IAC1C,KAAK,EAAM,EAAE,KAAK,EAAE,MAAM,EAAI,GAAG,EAAE,IAAI,EAAG;IAC1C,KAAK,EAAM,EAAE,KAAK,EAAE,MAAM,EAAI,GAAG,EAAE,IAAI,EAAG;IAC1C,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAI,GAAG,EAAE,KAAK,EAAE;CAC3C,CAAC;AAEF,IAAI,OAAO,GAAkB,EAAE,GAAG,QAAQ,EAAE,CAAC;AAE7C,SAAgB,QAAQ,CAAC,KAAqB;IAC5C,yEAAyE;IACzE,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC1B,MAAM,SAAS,GAA2F,EAAE,CAAC;IAC7G,IAAA,qBAAU,GAAE,CAAC;IAEb,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAoB,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,OAAO,CAAC,IAAI,CAAC,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK;YAC1C,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG;SACrC,CAAC;QACF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;YACnI,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,IAAA,mBAAQ,EAAC,SAAS,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC1B,IAAA,qBAAU,GAAE,CAAC;AACf,CAAC;AAED,SAAgB,QAAQ;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.truncate = truncate;
4
+ const paint_js_1 = require('./paint.cjs');
5
+ function truncate(str, maxLength) {
6
+ if ((0, paint_js_1.strip)(str).length <= maxLength)
7
+ return str;
8
+ if (maxLength <= 0)
9
+ return '…';
10
+ const limit = maxLength - 1; // reserve 1 char for '…'
11
+ let visible = 0;
12
+ let i = 0;
13
+ while (i < str.length && visible < limit) {
14
+ const m = str.slice(i).match(/^\x1b\[[0-9;]*m/);
15
+ if (m) {
16
+ i += m[0].length;
17
+ }
18
+ else {
19
+ visible++;
20
+ i++;
21
+ }
22
+ }
23
+ const cut = str.slice(0, i);
24
+ const needsReset = cut !== (0, paint_js_1.strip)(cut);
25
+ return needsReset ? `${cut}\x1b[0m…` : `${cut}…`;
26
+ }
27
+ //# sourceMappingURL=truncate.js.map
@@ -0,0 +1,2 @@
1
+ export declare function truncate(str: string, maxLength: number): string;
2
+ //# sourceMappingURL=truncate.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function truncate(str: string, maxLength: number): string;
2
+ //# sourceMappingURL=truncate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../src/truncate.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAqB/D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/truncate.ts"],"names":[],"mappings":";;AAEA,4BAqBC;AAvBD,yCAAmC;AAEnC,SAAgB,QAAQ,CAAC,GAAW,EAAE,SAAiB;IACrD,IAAI,IAAA,gBAAK,EAAC,GAAG,CAAC,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC;IAC/C,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAE/B,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,yBAAyB;IACtD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,CAAC;YACN,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;YACV,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,MAAM,UAAU,GAAG,GAAG,KAAK,IAAA,gBAAK,EAAC,GAAG,CAAC,CAAC;IACtC,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AACnD,CAAC"}
package/dist/esm/badge.js CHANGED
@@ -1,7 +1,10 @@
1
1
  import { fgMap } from './paint.js';
2
2
  import { RESET } from './codes.js';
3
3
  import { isColorEnabled } from './env.js';
4
+ import { isSilent } from './silent.js';
4
5
  export function badge(text, color = 'white') {
6
+ if (isSilent())
7
+ return '';
5
8
  if (!isColorEnabled())
6
9
  return `[${text}]`;
7
10
  const code = fgMap[color];
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,QAAe,OAAO;IACxD,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,IAAI,IAAI,GAAG,CAAC;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,QAAe,OAAO;IACxD,IAAI,QAAQ,EAAE;QAAE,OAAO,EAAE,CAAC;IAC1B,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,IAAI,IAAI,GAAG,CAAC;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;AACpC,CAAC"}
package/dist/esm/box.js CHANGED
@@ -1,11 +1,27 @@
1
1
  import { fgMap, strip } from './paint.js';
2
2
  import { RESET } from './codes.js';
3
3
  import { isColorEnabled } from './env.js';
4
- export function box(text, color = 'white') {
4
+ import { isSilent } from './silent.js';
5
+ export function box(text, options) {
6
+ if (isSilent())
7
+ return '';
8
+ const color = (typeof options === 'string' ? options : options?.color) ?? 'white';
9
+ const title = typeof options === 'object' ? options.title : undefined;
5
10
  const lines = text.split('\n');
6
11
  const width = Math.max(...lines.map((l) => strip(l).length));
12
+ function buildTop(colorCode) {
13
+ const inner = width + 2; // total dashes without title
14
+ if (title) {
15
+ const titleSection = ` ${title} `;
16
+ const dashes = Math.max(0, inner - titleSection.length);
17
+ const raw = `╭${titleSection}${'─'.repeat(dashes)}╮`;
18
+ return colorCode ? `${colorCode}${raw}${RESET}` : raw;
19
+ }
20
+ const raw = `╭${'─'.repeat(inner)}╮`;
21
+ return colorCode ? `${colorCode}${raw}${RESET}` : raw;
22
+ }
7
23
  if (!isColorEnabled()) {
8
- const top = `╭${'─'.repeat(width + 2)}╮`;
24
+ const top = buildTop();
9
25
  const bottom = `╰${'─'.repeat(width + 2)}╯`;
10
26
  const middle = lines.map((line) => {
11
27
  const padding = ' '.repeat(width - strip(line).length);
@@ -14,7 +30,7 @@ export function box(text, color = 'white') {
14
30
  return [top, ...middle, bottom].join('\n');
15
31
  }
16
32
  const c = fgMap[color];
17
- const top = `${c}╭${'─'.repeat(width + 2)}╮${RESET}`;
33
+ const top = buildTop(c);
18
34
  const bottom = `${c}╰${'─'.repeat(width + 2)}╯${RESET}`;
19
35
  const middle = lines.map((line) => {
20
36
  const padding = ' '.repeat(width - strip(line).length);
@@ -1 +1 @@
1
- {"version":3,"file":"box.js","sourceRoot":"","sources":["../../src/box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,QAAe,OAAO;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7D,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;YACvD,OAAO,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"box.js","sourceRoot":"","sources":["../../src/box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOvC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,OAA4B;IAC5D,IAAI,QAAQ,EAAE;QAAE,OAAO,EAAE,CAAC;IAE1B,MAAM,KAAK,GAAU,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC;IACzF,MAAM,KAAK,GAAuB,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7D,SAAS,QAAQ,CAAC,SAAkB;QAClC,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,6BAA6B;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,IAAI,KAAK,GAAG,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,GAAG,GAAG,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YACrD,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACrC,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;YACvD,OAAO,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { strip } from './paint.js';
2
+ import { isInteractive } from './env.js';
3
+ import { isSilent } from './silent.js';
4
+ export function columns(left, right, options = {}) {
5
+ if (isSilent())
6
+ return '';
7
+ if (!isInteractive()) {
8
+ return `${left}\n${right}`;
9
+ }
10
+ const totalWidth = options.width ?? 80;
11
+ const gap = options.gap ?? 4;
12
+ const colWidth = Math.floor((totalWidth - gap) / 2);
13
+ const gapStr = ' '.repeat(gap);
14
+ const leftLines = left.split('\n');
15
+ const rightLines = right.split('\n');
16
+ const lineCount = Math.max(leftLines.length, rightLines.length);
17
+ const result = [];
18
+ for (let i = 0; i < lineCount; i++) {
19
+ const l = leftLines[i] ?? '';
20
+ const r = rightLines[i] ?? '';
21
+ const visible = strip(l).length;
22
+ const padding = visible < colWidth ? ' '.repeat(colWidth - visible) : '';
23
+ result.push(`${l}${padding}${gapStr}${r}`);
24
+ }
25
+ return result.join('\n');
26
+ }
27
+ //# sourceMappingURL=columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.js","sourceRoot":"","sources":["../../src/columns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOvC,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,UAA0B,EAAE;IAC/E,IAAI,QAAQ,EAAE;QAAE,OAAO,EAAE,CAAC;IAE1B,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACrB,OAAO,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAChC,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
package/dist/esm/env.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { isTestMode } from './testmode.js';
1
2
  /**
2
3
  * Returns true if ANSI color codes should be emitted.
3
4
  * Colors are disabled when any of the following are true:
@@ -5,6 +6,11 @@
5
6
  * - CI env var is set (raw escape codes look broken in most CI logs)
6
7
  * - process.stdout.isTTY is false/undefined (output is being piped)
7
8
  */
9
+ export function isInteractive() {
10
+ if (isTestMode())
11
+ return false;
12
+ return process.stdout.isTTY === true;
13
+ }
8
14
  export function isColorEnabled() {
9
15
  if (process.env.NO_COLOR !== undefined)
10
16
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,UAAU,EAAE;QAAE,OAAO,KAAK,CAAC;IAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/esm/icons.js CHANGED
@@ -12,4 +12,7 @@ export function setIcons(icons) {
12
12
  export function getIcons() {
13
13
  return current;
14
14
  }
15
+ export function resetIcons() {
16
+ current = { ...defaults };
17
+ }
15
18
  //# sourceMappingURL=icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/icons.ts"],"names":[],"mappings":"AAQA,MAAM,QAAQ,GAAU;IACtB,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,IAAI,OAAO,GAAU,EAAE,GAAG,QAAQ,EAAE,CAAC;AAErC,MAAM,UAAU,QAAQ,CAAC,KAAqB;IAC5C,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/icons.ts"],"names":[],"mappings":"AAQA,MAAM,QAAQ,GAAU;IACtB,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,IAAI,OAAO,GAAU,EAAE,GAAG,QAAQ,EAAE,CAAC;AAErC,MAAM,UAAU,QAAQ,CAAC,KAAqB;IAC5C,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
package/dist/esm/index.js CHANGED
@@ -3,7 +3,12 @@ export { style } from './style.js';
3
3
  export { badge } from './badge.js';
4
4
  export { box } from './box.js';
5
5
  export { spin } from './spinner.js';
6
+ export { columns } from './columns.js';
7
+ export { truncate } from './truncate.js';
6
8
  export { setIcons } from './icons.js';
7
- export { isColorEnabled } from './env.js';
9
+ export { setSilent } from './silent.js';
10
+ export { setTheme, resetTheme } from './theme.js';
11
+ export { setTestMode } from './testmode.js';
12
+ export { isColorEnabled, isInteractive } from './env.js';
8
13
  export * from './codes.js';
9
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,cAAc,YAAY,CAAC"}