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
package/dist/esm/paint.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { RESET, BOLD, DIM, ITALIC, UNDERLINE, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, GRAY, BG_BLACK, BG_RED, BG_GREEN, BG_YELLOW, BG_BLUE, BG_MAGENTA, BG_CYAN, BG_WHITE, BG_GRAY, } from './codes.js';
2
2
  import { isColorEnabled } from './env.js';
3
+ import { isSilent } from './silent.js';
3
4
  const fgMap = {
4
5
  black: BLACK,
5
6
  red: RED,
@@ -23,6 +24,8 @@ const bgMap = {
23
24
  gray: BG_GRAY,
24
25
  };
25
26
  export function paint(text, options = {}) {
27
+ if (isSilent())
28
+ return '';
26
29
  if (!isColorEnabled())
27
30
  return text;
28
31
  let prefix = '';
@@ -1 +1 @@
1
- {"version":3,"file":"paint.js","sourceRoot":"","sources":["../../src/paint.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EACnC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAC3D,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GACvF,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAa1C,MAAM,KAAK,GAA0B;IACnC,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,KAAK,GAA0B;IACnC,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,OAAO;CACd,CAAC;AAEF,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,UAAwB,EAAE;IAC5D,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,IAAI,IAAI,CAAC;IACjC,IAAI,OAAO,CAAC,GAAG;QAAE,MAAM,IAAI,GAAG,CAAC;IAC/B,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,MAAM,CAAC;IACrC,IAAI,OAAO,CAAC,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC;IAC3C,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,4CAA4C;IAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"paint.js","sourceRoot":"","sources":["../../src/paint.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EACnC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAC3D,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GACvF,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAavC,MAAM,KAAK,GAA0B;IACnC,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,KAAK,GAA0B;IACnC,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,OAAO;CACd,CAAC;AAEF,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,UAAwB,EAAE;IAC5D,IAAI,QAAQ,EAAE;QAAE,OAAO,EAAE,CAAC;IAC1B,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,IAAI,IAAI,CAAC;IACjC,IAAI,OAAO,CAAC,GAAG;QAAE,MAAM,IAAI,GAAG,CAAC;IAC/B,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,MAAM,CAAC;IACrC,IAAI,OAAO,CAAC,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC;IAC3C,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,4CAA4C;IAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ let silentMode = false;
2
+ export function setSilent(mode) {
3
+ silentMode = mode;
4
+ }
5
+ export function isSilent() {
6
+ return silentMode;
7
+ }
8
+ //# sourceMappingURL=silent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"silent.js","sourceRoot":"","sources":["../../src/silent.ts"],"names":[],"mappings":"AAAA,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -1,10 +1,35 @@
1
1
  import { style } from './style.js';
2
+ import { isSilent } from './silent.js';
3
+ import { isTestMode } from './testmode.js';
2
4
  const FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
3
5
  export function spin(msg) {
6
+ if (isSilent()) {
7
+ return {
8
+ succeed(_) { },
9
+ fail(_) { },
10
+ update(_) { },
11
+ };
12
+ }
13
+ // Non-TTY and test mode: static single-line output, no animation
14
+ if (!process.stdout.isTTY || isTestMode()) {
15
+ process.stdout.write(style.muted(msg) + '\n');
16
+ return {
17
+ succeed(newMsg) {
18
+ process.stdout.write(style.success(newMsg ?? msg) + '\n');
19
+ },
20
+ fail(newMsg) {
21
+ process.stdout.write(style.error(newMsg ?? msg) + '\n');
22
+ },
23
+ update(newMsg) {
24
+ process.stdout.write(style.muted(newMsg) + '\n');
25
+ },
26
+ };
27
+ }
28
+ let currentMsg = msg;
4
29
  let i = 0;
5
30
  const timer = setInterval(() => {
6
31
  const frame = FRAMES[i % FRAMES.length];
7
- process.stdout.write(`\r${frame} ${msg}`);
32
+ process.stdout.write(`\r\x1b[K${frame} ${currentMsg}`);
8
33
  i++;
9
34
  }, 80);
10
35
  function stop(output) {
@@ -13,10 +38,13 @@ export function spin(msg) {
13
38
  }
14
39
  return {
15
40
  succeed(newMsg) {
16
- stop(style.success(newMsg ?? msg));
41
+ stop(style.success(newMsg ?? currentMsg));
17
42
  },
18
43
  fail(newMsg) {
19
- stop(style.error(newMsg ?? msg));
44
+ stop(style.error(newMsg ?? currentMsg));
45
+ },
46
+ update(newMsg) {
47
+ currentMsg = newMsg;
20
48
  },
21
49
  };
22
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;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,MAAM,UAAU,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,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"}
package/dist/esm/style.js CHANGED
@@ -1,5 +1,8 @@
1
1
  import { paint } from './paint.js';
2
2
  import { getIcons } from './icons.js';
3
+ import { getTheme } from './theme.js';
4
+ import { isSilent } from './silent.js';
5
+ import { isTestMode } from './testmode.js';
3
6
  function formatMeta(data) {
4
7
  const keys = Object.keys(data);
5
8
  if (keys.length === 0)
@@ -15,35 +18,60 @@ function formatMeta(data) {
15
18
  }
16
19
  export const style = {
17
20
  error(msg, meta) {
18
- return paint(`${getIcons().error} ${msg}`, { color: 'red' }) + (meta ? formatMeta(meta) : '');
21
+ if (isSilent())
22
+ return '';
23
+ const t = getTheme().error;
24
+ return paint(`${getIcons().error} ${msg}`, { color: t.color, dim: t.dim }) + (meta ? formatMeta(meta) : '');
19
25
  },
20
26
  success(msg, meta) {
21
- return paint(`${getIcons().success} ${msg}`, { color: 'green' }) + (meta ? formatMeta(meta) : '');
27
+ if (isSilent())
28
+ return '';
29
+ const t = getTheme().success;
30
+ return paint(`${getIcons().success} ${msg}`, { color: t.color, dim: t.dim }) + (meta ? formatMeta(meta) : '');
22
31
  },
23
32
  warn(msg, meta) {
24
- return paint(`${getIcons().warn} ${msg}`, { color: 'yellow' }) + (meta ? formatMeta(meta) : '');
33
+ if (isSilent())
34
+ return '';
35
+ const t = getTheme().warn;
36
+ return paint(`${getIcons().warn} ${msg}`, { color: t.color, dim: t.dim }) + (meta ? formatMeta(meta) : '');
25
37
  },
26
38
  info(msg, meta) {
27
- return paint(`${getIcons().info} ${msg}`, { color: 'blue' }) + (meta ? formatMeta(meta) : '');
39
+ if (isSilent())
40
+ return '';
41
+ const t = getTheme().info;
42
+ return paint(`${getIcons().info} ${msg}`, { color: t.color, dim: t.dim }) + (meta ? formatMeta(meta) : '');
28
43
  },
29
44
  debug(msg, meta) {
30
- if (!process.env['DEBUG'])
45
+ if (isSilent() || !process.env['DEBUG'])
31
46
  return '';
32
- return paint(`${getIcons().debug} ${msg}`, { color: 'gray', dim: true }) + (meta ? formatMeta(meta) : '');
47
+ const t = getTheme().debug;
48
+ return paint(`${getIcons().debug} ${msg}`, { color: t.color, dim: t.dim }) + (meta ? formatMeta(meta) : '');
33
49
  },
34
50
  muted(msg) {
35
- return paint(msg, { color: 'gray', dim: true });
51
+ if (isSilent())
52
+ return '';
53
+ const t = getTheme().muted;
54
+ return paint(msg, { color: t.color, dim: t.dim });
36
55
  },
37
56
  bold(msg) {
57
+ if (isSilent())
58
+ return '';
38
59
  return paint(msg, { color: 'white', bold: true });
39
60
  },
40
61
  highlight(msg) {
41
- return paint(msg, { color: 'cyan' });
62
+ if (isSilent())
63
+ return '';
64
+ const t = getTheme().highlight;
65
+ return paint(msg, { color: t.color, dim: t.dim });
42
66
  },
43
67
  divider(color = 'gray') {
68
+ if (isSilent())
69
+ return '';
44
70
  return paint('─'.repeat(40), { color });
45
71
  },
46
72
  table(data, color = 'cyan') {
73
+ if (isSilent())
74
+ return '';
47
75
  const keys = Object.keys(data);
48
76
  if (keys.length === 0)
49
77
  return '';
@@ -56,6 +84,10 @@ export const style = {
56
84
  .join('\n');
57
85
  },
58
86
  timestamp(msg, color = 'gray') {
87
+ if (isSilent())
88
+ return '';
89
+ if (isTestMode())
90
+ return msg;
59
91
  const now = new Date();
60
92
  const hh = String(now.getHours()).padStart(2, '0');
61
93
  const mm = String(now.getMinutes()).padStart(2, '0');
@@ -63,5 +95,22 @@ export const style = {
63
95
  const prefix = paint(`[${hh}:${mm}:${ss}]`, { color });
64
96
  return `${prefix} ${msg}`;
65
97
  },
98
+ group(label, lines) {
99
+ if (isSilent())
100
+ return '';
101
+ const header = paint(`▶ ${label}`, { color: 'cyan' });
102
+ const body = lines.map((line) => ` ${line}`).join('\n');
103
+ return body.length > 0 ? `${header}\n${body}` : header;
104
+ },
105
+ list(items, options = {}) {
106
+ if (isSilent())
107
+ return '';
108
+ const bullet = options.bullet ?? '•';
109
+ const color = options.color ?? 'cyan';
110
+ const indent = options.indent ?? 0;
111
+ const indentStr = ' '.repeat(indent);
112
+ const coloredBullet = paint(bullet, { color });
113
+ return items.map((item) => `${indentStr}${coloredBullet} ${item}`).join('\n');
114
+ },
66
115
  };
67
116
  //# sourceMappingURL=style.js.map
@@ -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":"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"}
@@ -0,0 +1,8 @@
1
+ let testModeEnabled = false;
2
+ export function setTestMode(enabled) {
3
+ testModeEnabled = enabled;
4
+ }
5
+ export function isTestMode() {
6
+ return testModeEnabled;
7
+ }
8
+ //# sourceMappingURL=testmode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testmode.js","sourceRoot":"","sources":["../../src/testmode.ts"],"names":[],"mappings":"AAAA,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,eAAe,GAAG,OAAO,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { setIcons, resetIcons } from './icons.js';
2
+ const defaults = {
3
+ success: { color: 'green', dim: false },
4
+ error: { color: 'red', dim: false },
5
+ warn: { color: 'yellow', dim: false },
6
+ info: { color: 'blue', dim: false },
7
+ debug: { color: 'gray', dim: true },
8
+ muted: { color: 'gray', dim: true },
9
+ highlight: { color: 'cyan', dim: false },
10
+ };
11
+ let current = { ...defaults };
12
+ export function setTheme(theme) {
13
+ // Always start from defaults so each setTheme() call is a clean override
14
+ current = { ...defaults };
15
+ const iconPatch = {};
16
+ resetIcons();
17
+ for (const _key of Object.keys(theme)) {
18
+ const entry = theme[_key];
19
+ if (!entry)
20
+ continue;
21
+ current[_key] = {
22
+ color: entry.color ?? defaults[_key].color,
23
+ dim: entry.dim ?? defaults[_key].dim,
24
+ };
25
+ if (entry.icon !== undefined && (_key === 'error' || _key === 'success' || _key === 'warn' || _key === 'info' || _key === 'debug')) {
26
+ iconPatch[_key] = entry.icon;
27
+ }
28
+ }
29
+ if (Object.keys(iconPatch).length > 0) {
30
+ setIcons(iconPatch);
31
+ }
32
+ }
33
+ export function resetTheme() {
34
+ current = { ...defaults };
35
+ resetIcons();
36
+ }
37
+ export function getTheme() {
38
+ return current;
39
+ }
40
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/theme.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;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,MAAM,UAAU,QAAQ,CAAC,KAAqB;IAC5C,yEAAyE;IACzE,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC1B,MAAM,SAAS,GAA2F,EAAE,CAAC;IAC7G,UAAU,EAAE,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,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC1B,UAAU,EAAE,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { strip } from './paint.js';
2
+ export function truncate(str, maxLength) {
3
+ if (strip(str).length <= maxLength)
4
+ return str;
5
+ if (maxLength <= 0)
6
+ return '…';
7
+ const limit = maxLength - 1; // reserve 1 char for '…'
8
+ let visible = 0;
9
+ let i = 0;
10
+ while (i < str.length && visible < limit) {
11
+ const m = str.slice(i).match(/^\x1b\[[0-9;]*m/);
12
+ if (m) {
13
+ i += m[0].length;
14
+ }
15
+ else {
16
+ visible++;
17
+ i++;
18
+ }
19
+ }
20
+ const cut = str.slice(0, i);
21
+ const needsReset = cut !== strip(cut);
22
+ return needsReset ? `${cut}\x1b[0m…` : `${cut}…`;
23
+ }
24
+ //# sourceMappingURL=truncate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/truncate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,SAAiB;IACrD,IAAI,KAAK,CAAC,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,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAS,MAAM,YAAY,CAAC;AAI/C,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,KAAe,GAAG,MAAM,CAIlE"}
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAS,MAAM,YAAY,CAAC;AAK/C,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,KAAe,GAAG,MAAM,CAKlE"}
@@ -1,3 +1,7 @@
1
1
  import { type Color } from './paint.js';
2
- export declare function box(text: string, color?: Color): string;
2
+ export interface BoxOptions {
3
+ color?: Color;
4
+ title?: string;
5
+ }
6
+ export declare function box(text: string, options?: Color | BoxOptions): string;
3
7
  //# sourceMappingURL=box.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../src/box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,YAAY,CAAC;AAItD,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,KAAe,GAAG,MAAM,CAuBhE"}
1
+ {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../src/box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,YAAY,CAAC;AAKtD,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,MAAM,CAwCtE"}
@@ -0,0 +1,6 @@
1
+ export interface ColumnsOptions {
2
+ width?: number;
3
+ gap?: number;
4
+ }
5
+ export declare function columns(left: string, right: string, options?: ColumnsOptions): string;
6
+ //# sourceMappingURL=columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../src/columns.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,CA0BzF"}
@@ -5,5 +5,6 @@
5
5
  * - CI env var is set (raw escape codes look broken in most CI logs)
6
6
  * - process.stdout.isTTY is false/undefined (output is being piped)
7
7
  */
8
+ export declare function isInteractive(): boolean;
8
9
  export declare function isColorEnabled(): boolean;
9
10
  //# sourceMappingURL=env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAKxC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAKxC"}
@@ -7,4 +7,5 @@ export interface Icons {
7
7
  }
8
8
  export declare function setIcons(icons: Partial<Icons>): void;
9
9
  export declare function getIcons(): Icons;
10
+ export declare function resetIcons(): void;
10
11
  //# sourceMappingURL=icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/icons.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAYD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAEpD;AAED,wBAAgB,QAAQ,IAAI,KAAK,CAEhC"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/icons.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAYD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAEpD;AAED,wBAAgB,QAAQ,IAAI,KAAK,CAEhC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
@@ -1,12 +1,21 @@
1
1
  export { paint, strip } from './paint.js';
2
2
  export type { PaintOptions, Color } from './paint.js';
3
3
  export { style } from './style.js';
4
+ export type { ListOptions } from './style.js';
4
5
  export { badge } from './badge.js';
5
6
  export { box } from './box.js';
7
+ export type { BoxOptions } from './box.js';
6
8
  export { spin } from './spinner.js';
7
9
  export type { SpinnerHandle } from './spinner.js';
10
+ export { columns } from './columns.js';
11
+ export type { ColumnsOptions } from './columns.js';
12
+ export { truncate } from './truncate.js';
8
13
  export { setIcons } from './icons.js';
9
14
  export type { Icons } from './icons.js';
10
- export { isColorEnabled } from './env.js';
15
+ export { setSilent } from './silent.js';
16
+ export { setTheme, resetTheme } from './theme.js';
17
+ export type { Theme, ThemeEntry } from './theme.js';
18
+ export { setTestMode } from './testmode.js';
19
+ export { isColorEnabled, isInteractive } from './env.js';
11
20
  export * from './codes.js';
12
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACtD,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;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,cAAc,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/paint.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1G,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAUhC,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAUhC,CAAC;AAEF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAWtE;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGzC;AAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/paint.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1G,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAUhC,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAUhC,CAAC;AAEF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAYtE;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGzC;AAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function setSilent(mode: boolean): void;
2
+ export declare function isSilent(): boolean;
3
+ //# sourceMappingURL=silent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"silent.d.ts","sourceRoot":"","sources":["../../src/silent.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE7C;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAElC"}
@@ -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,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"}
@@ -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,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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termpainter",
3
- "version": "1.2.0",
3
+ "version": "2.0.0",
4
4
  "description": "Zero-dependency terminal styling toolkit for Node.js and Bun",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",