termpainter 1.3.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 (89) hide show
  1. package/README.md +112 -40
  2. package/dist/cjs/box.cjs +16 -3
  3. package/dist/cjs/box.d.cts +5 -1
  4. package/dist/cjs/box.d.ts +5 -1
  5. package/dist/cjs/box.d.ts.map +1 -1
  6. package/dist/cjs/box.js.map +1 -1
  7. package/dist/cjs/columns.cjs +30 -0
  8. package/dist/cjs/columns.d.cts +6 -0
  9. package/dist/cjs/columns.d.ts +6 -0
  10. package/dist/cjs/columns.d.ts.map +1 -0
  11. package/dist/cjs/columns.js.map +1 -0
  12. package/dist/cjs/env.cjs +3 -0
  13. package/dist/cjs/env.d.ts.map +1 -1
  14. package/dist/cjs/env.js.map +1 -1
  15. package/dist/cjs/icons.cjs +4 -0
  16. package/dist/cjs/icons.d.cts +1 -0
  17. package/dist/cjs/icons.d.ts +1 -0
  18. package/dist/cjs/icons.d.ts.map +1 -1
  19. package/dist/cjs/icons.js.map +1 -1
  20. package/dist/cjs/index.cjs +10 -1
  21. package/dist/cjs/index.d.cts +8 -0
  22. package/dist/cjs/index.d.ts +8 -0
  23. package/dist/cjs/index.d.ts.map +1 -1
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/cjs/spinner.cjs +14 -4
  26. package/dist/cjs/spinner.d.cts +1 -0
  27. package/dist/cjs/spinner.d.ts +1 -0
  28. package/dist/cjs/spinner.d.ts.map +1 -1
  29. package/dist/cjs/spinner.js.map +1 -1
  30. package/dist/cjs/style.cjs +28 -7
  31. package/dist/cjs/style.d.cts +6 -0
  32. package/dist/cjs/style.d.ts +6 -0
  33. package/dist/cjs/style.d.ts.map +1 -1
  34. package/dist/cjs/style.js.map +1 -1
  35. package/dist/cjs/testmode.cjs +12 -0
  36. package/dist/cjs/testmode.d.cts +3 -0
  37. package/dist/cjs/testmode.d.ts +3 -0
  38. package/dist/cjs/testmode.d.ts.map +1 -0
  39. package/dist/cjs/testmode.js.map +1 -0
  40. package/dist/cjs/theme.cjs +45 -0
  41. package/dist/cjs/theme.d.cts +27 -0
  42. package/dist/cjs/theme.d.ts +27 -0
  43. package/dist/cjs/theme.d.ts.map +1 -0
  44. package/dist/cjs/theme.js.map +1 -0
  45. package/dist/cjs/truncate.cjs +27 -0
  46. package/dist/cjs/truncate.d.cts +2 -0
  47. package/dist/cjs/truncate.d.ts +2 -0
  48. package/dist/cjs/truncate.d.ts.map +1 -0
  49. package/dist/cjs/truncate.js.map +1 -0
  50. package/dist/esm/box.js +16 -3
  51. package/dist/esm/box.js.map +1 -1
  52. package/dist/esm/columns.js +27 -0
  53. package/dist/esm/columns.js.map +1 -0
  54. package/dist/esm/env.js +3 -0
  55. package/dist/esm/env.js.map +1 -1
  56. package/dist/esm/icons.js +3 -0
  57. package/dist/esm/icons.js.map +1 -1
  58. package/dist/esm/index.js +4 -0
  59. package/dist/esm/index.js.map +1 -1
  60. package/dist/esm/spinner.js +14 -4
  61. package/dist/esm/spinner.js.map +1 -1
  62. package/dist/esm/style.js +28 -7
  63. package/dist/esm/style.js.map +1 -1
  64. package/dist/esm/testmode.js +8 -0
  65. package/dist/esm/testmode.js.map +1 -0
  66. package/dist/esm/theme.js +40 -0
  67. package/dist/esm/theme.js.map +1 -0
  68. package/dist/esm/truncate.js +24 -0
  69. package/dist/esm/truncate.js.map +1 -0
  70. package/dist/types/box.d.ts +5 -1
  71. package/dist/types/box.d.ts.map +1 -1
  72. package/dist/types/columns.d.ts +6 -0
  73. package/dist/types/columns.d.ts.map +1 -0
  74. package/dist/types/env.d.ts.map +1 -1
  75. package/dist/types/icons.d.ts +1 -0
  76. package/dist/types/icons.d.ts.map +1 -1
  77. package/dist/types/index.d.ts +8 -0
  78. package/dist/types/index.d.ts.map +1 -1
  79. package/dist/types/spinner.d.ts +1 -0
  80. package/dist/types/spinner.d.ts.map +1 -1
  81. package/dist/types/style.d.ts +6 -0
  82. package/dist/types/style.d.ts.map +1 -1
  83. package/dist/types/testmode.d.ts +3 -0
  84. package/dist/types/testmode.d.ts.map +1 -0
  85. package/dist/types/theme.d.ts +27 -0
  86. package/dist/types/theme.d.ts.map +1 -0
  87. package/dist/types/truncate.d.ts +2 -0
  88. package/dist/types/truncate.d.ts.map +1 -0
  89. package/package.json +1 -1
@@ -3,7 +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');
6
7
  const silent_js_1 = require('./silent.cjs');
8
+ const testmode_js_1 = require('./testmode.cjs');
7
9
  function formatMeta(data) {
8
10
  const keys = Object.keys(data);
9
11
  if (keys.length === 0)
@@ -21,32 +23,38 @@ exports.style = {
21
23
  error(msg, meta) {
22
24
  if ((0, silent_js_1.isSilent)())
23
25
  return '';
24
- return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().error} ${msg}`, { color: 'red' }) + (meta ? formatMeta(meta) : '');
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) : '');
25
28
  },
26
29
  success(msg, meta) {
27
30
  if ((0, silent_js_1.isSilent)())
28
31
  return '';
29
- return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().success} ${msg}`, { color: 'green' }) + (meta ? formatMeta(meta) : '');
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) : '');
30
34
  },
31
35
  warn(msg, meta) {
32
36
  if ((0, silent_js_1.isSilent)())
33
37
  return '';
34
- return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().warn} ${msg}`, { color: 'yellow' }) + (meta ? formatMeta(meta) : '');
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) : '');
35
40
  },
36
41
  info(msg, meta) {
37
42
  if ((0, silent_js_1.isSilent)())
38
43
  return '';
39
- return (0, paint_js_1.paint)(`${(0, icons_js_1.getIcons)().info} ${msg}`, { color: 'blue' }) + (meta ? formatMeta(meta) : '');
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) : '');
40
46
  },
41
47
  debug(msg, meta) {
42
48
  if ((0, silent_js_1.isSilent)() || !process.env['DEBUG'])
43
49
  return '';
44
- 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) : '');
45
52
  },
46
53
  muted(msg) {
47
54
  if ((0, silent_js_1.isSilent)())
48
55
  return '';
49
- return (0, paint_js_1.paint)(msg, { color: 'gray', dim: true });
56
+ const t = (0, theme_js_1.getTheme)().muted;
57
+ return (0, paint_js_1.paint)(msg, { color: t.color, dim: t.dim });
50
58
  },
51
59
  bold(msg) {
52
60
  if ((0, silent_js_1.isSilent)())
@@ -56,7 +64,8 @@ exports.style = {
56
64
  highlight(msg) {
57
65
  if ((0, silent_js_1.isSilent)())
58
66
  return '';
59
- return (0, paint_js_1.paint)(msg, { color: 'cyan' });
67
+ const t = (0, theme_js_1.getTheme)().highlight;
68
+ return (0, paint_js_1.paint)(msg, { color: t.color, dim: t.dim });
60
69
  },
61
70
  divider(color = 'gray') {
62
71
  if ((0, silent_js_1.isSilent)())
@@ -80,6 +89,8 @@ exports.style = {
80
89
  timestamp(msg, color = 'gray') {
81
90
  if ((0, silent_js_1.isSilent)())
82
91
  return '';
92
+ if ((0, testmode_js_1.isTestMode)())
93
+ return msg;
83
94
  const now = new Date();
84
95
  const hh = String(now.getHours()).padStart(2, '0');
85
96
  const mm = String(now.getMinutes()).padStart(2, '0');
@@ -94,5 +105,15 @@ exports.style = {
94
105
  const body = lines.map((line) => ` ${line}`).join('\n');
95
106
  return body.length > 0 ? `${header}\n${body}` : header;
96
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
+ },
97
118
  };
98
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;
@@ -13,6 +18,7 @@ export declare const style: {
13
18
  table(data: Record<string, string>, color?: Color): string;
14
19
  timestamp(msg: string, color?: Color): string;
15
20
  group(label: string, lines: string[]): string;
21
+ list(items: string[], options?: ListOptions): string;
16
22
  };
17
23
  export {};
18
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;
@@ -13,6 +18,7 @@ export declare const style: {
13
18
  table(data: Record<string, string>, color?: Color): string;
14
19
  timestamp(msg: string, color?: Color): string;
15
20
  group(label: string, lines: string[]): string;
21
+ list(items: string[], options?: ListOptions): string;
16
22
  };
17
23
  export {};
18
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;AAI/C,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAiBpC,eAAO,MAAM,KAAK;eACL,MAAM,SAAS,IAAI,GAAG,MAAM;iBAI1B,MAAM,SAAS,IAAI,GAAG,MAAM;cAI/B,MAAM,SAAS,IAAI,GAAG,MAAM;cAI5B,MAAM,SAAS,IAAI,GAAG,MAAM;eAI3B,MAAM,SAAS,IAAI,GAAG,MAAM;eAI5B,MAAM,GAAG,MAAM;cAIhB,MAAM,GAAG,MAAM;mBAIV,MAAM,GAAG,MAAM;oBAKf,KAAK,GAAY,MAAM;gBAK1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAS,KAAK,GAAY,MAAM;mBAanD,MAAM,UAAS,KAAK,GAAY,MAAM;iBAUxC,MAAM,SAAS,MAAM,EAAE,GAAG,MAAM;CAM9C,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":"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"}
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/style.ts"],"names":[],"mappings":";;;AAAA,yCAA+C;AAC/C,yCAAsC;AACtC,yCAAsC;AACtC,2CAAuC;AACvC,+CAA2C;AAU3C,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,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,KAAK,CAAC;QAC3B,OAAO,IAAA,gBAAK,EAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,CAAC,GAAW,EAAE,IAAW;QAC9B,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,OAAO,CAAC;QAC7B,OAAO,IAAA,gBAAK,EAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,OAAO,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,CAAC,GAAW,EAAE,IAAW;QAC3B,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,IAAI,CAAC;QAC1B,OAAO,IAAA,gBAAK,EAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,IAAI,CAAC,GAAW,EAAE,IAAW;QAC3B,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,IAAI,CAAC;QAC1B,OAAO,IAAA,gBAAK,EAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,KAAK,CAAC,GAAW,EAAE,IAAW;QAC5B,IAAI,IAAA,oBAAQ,GAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,KAAK,CAAC;QAC3B,OAAO,IAAA,gBAAK,EAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9G,CAAC;IACD,KAAK,CAAC,GAAW;QACf,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,KAAK,CAAC;QAC3B,OAAO,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,GAAW;QACd,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,SAAS,CAAC,GAAW;QACnB,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAA,mBAAQ,GAAE,CAAC,SAAS,CAAC;QAC/B,OAAO,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,CAAC,QAAe,MAAM;QAC3B,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,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,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,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,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,IAAI,IAAA,wBAAU,GAAE;YAAE,OAAO,GAAG,CAAC;QAC7B,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;IAED,KAAK,CAAC,KAAa,EAAE,KAAe;QAClC,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAA,gBAAK,EAAC,KAAK,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,KAAe,EAAE,UAAuB,EAAE;QAC7C,IAAI,IAAA,oBAAQ,GAAE;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;QACrC,MAAM,KAAK,GAAU,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,SAAS,GAAG,aAAa,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;CACF,CAAC"}
@@ -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/box.js CHANGED
@@ -2,13 +2,26 @@ import { fgMap, strip } from './paint.js';
2
2
  import { RESET } from './codes.js';
3
3
  import { isColorEnabled } from './env.js';
4
4
  import { isSilent } from './silent.js';
5
- export function box(text, color = 'white') {
5
+ export function box(text, options) {
6
6
  if (isSilent())
7
7
  return '';
8
+ const color = (typeof options === 'string' ? options : options?.color) ?? 'white';
9
+ const title = typeof options === 'object' ? options.title : undefined;
8
10
  const lines = text.split('\n');
9
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
+ }
10
23
  if (!isColorEnabled()) {
11
- const top = `╭${'─'.repeat(width + 2)}╮`;
24
+ const top = buildTop();
12
25
  const bottom = `╰${'─'.repeat(width + 2)}╯`;
13
26
  const middle = lines.map((line) => {
14
27
  const padding = ' '.repeat(width - strip(line).length);
@@ -17,7 +30,7 @@ export function box(text, color = 'white') {
17
30
  return [top, ...middle, bottom].join('\n');
18
31
  }
19
32
  const c = fgMap[color];
20
- const top = `${c}╭${'─'.repeat(width + 2)}╮${RESET}`;
33
+ const top = buildTop(c);
21
34
  const bottom = `${c}╰${'─'.repeat(width + 2)}╯${RESET}`;
22
35
  const middle = lines.map((line) => {
23
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;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,QAAe,OAAO;IACtD,IAAI,QAAQ,EAAE;QAAE,OAAO,EAAE,CAAC;IAC1B,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":"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"}
@@ -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:
@@ -6,6 +7,8 @@
6
7
  * - process.stdout.isTTY is false/undefined (output is being piped)
7
8
  */
8
9
  export function isInteractive() {
10
+ if (isTestMode())
11
+ return false;
9
12
  return process.stdout.isTTY === true;
10
13
  }
11
14
  export function isColorEnabled() {
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC3B,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"}
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,8 +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
9
  export { setSilent } from './silent.js';
10
+ export { setTheme, resetTheme } from './theme.js';
11
+ export { setTestMode } from './testmode.js';
8
12
  export { isColorEnabled, isInteractive } from './env.js';
9
13
  export * from './codes.js';
10
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,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,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"}
@@ -1,14 +1,17 @@
1
1
  import { style } from './style.js';
2
2
  import { isSilent } from './silent.js';
3
+ import { isTestMode } from './testmode.js';
3
4
  const FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
4
5
  export function spin(msg) {
5
6
  if (isSilent()) {
6
7
  return {
7
8
  succeed(_) { },
8
9
  fail(_) { },
10
+ update(_) { },
9
11
  };
10
12
  }
11
- if (!process.stdout.isTTY) {
13
+ // Non-TTY and test mode: static single-line output, no animation
14
+ if (!process.stdout.isTTY || isTestMode()) {
12
15
  process.stdout.write(style.muted(msg) + '\n');
13
16
  return {
14
17
  succeed(newMsg) {
@@ -17,12 +20,16 @@ export function spin(msg) {
17
20
  fail(newMsg) {
18
21
  process.stdout.write(style.error(newMsg ?? msg) + '\n');
19
22
  },
23
+ update(newMsg) {
24
+ process.stdout.write(style.muted(newMsg) + '\n');
25
+ },
20
26
  };
21
27
  }
28
+ let currentMsg = msg;
22
29
  let i = 0;
23
30
  const timer = setInterval(() => {
24
31
  const frame = FRAMES[i % FRAMES.length];
25
- process.stdout.write(`\r\x1b[K${frame} ${msg}`);
32
+ process.stdout.write(`\r\x1b[K${frame} ${currentMsg}`);
26
33
  i++;
27
34
  }, 80);
28
35
  function stop(output) {
@@ -31,10 +38,13 @@ export function spin(msg) {
31
38
  }
32
39
  return {
33
40
  succeed(newMsg) {
34
- stop(style.success(newMsg ?? msg));
41
+ stop(style.success(newMsg ?? currentMsg));
35
42
  },
36
43
  fail(newMsg) {
37
- stop(style.error(newMsg ?? msg));
44
+ stop(style.error(newMsg ?? currentMsg));
45
+ },
46
+ update(newMsg) {
47
+ currentMsg = newMsg;
38
48
  },
39
49
  };
40
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,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,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,IAAI,QAAQ,EAAE,EAAE,CAAC;QACf,OAAO;YACL,OAAO,CAAC,CAAU,IAAS,CAAC;YAC5B,IAAI,CAAC,CAAU,IAAS,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9C,OAAO;YACL,OAAO,CAAC,MAAe;gBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,MAAe;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1D,CAAC;SACF,CAAC;IACJ,CAAC;IAED,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,GAAG,EAAE,CAAC,CAAC;QAChD,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,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,MAAe;YAClB,IAAI,CAAC,KAAK,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":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;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,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,IAAI,QAAQ,EAAE,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,UAAU,EAAE,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9C,OAAO;YACL,OAAO,CAAC,MAAe;gBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,MAAe;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM,CAAC,MAAc;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,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,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,MAAe;YAClB,IAAI,CAAC,KAAK,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"}