@mks2508/better-logger 0.18.2-alpha.1 → 0.18.2-alpha.2

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 (185) hide show
  1. package/README.md +38 -336
  2. package/dist/Logger.d.ts +243 -154
  3. package/dist/Logger.d.ts.map +1 -1
  4. package/dist/ScopedLogger.d.ts +511 -8
  5. package/dist/ScopedLogger.d.ts.map +1 -1
  6. package/dist/chunks/HookBridge-C-AvXmPD.cjs +504 -0
  7. package/dist/chunks/HookBridge-C-AvXmPD.cjs.map +1 -0
  8. package/dist/chunks/HookBridge-CI2PH79S.js +487 -0
  9. package/dist/chunks/HookBridge-CI2PH79S.js.map +1 -0
  10. package/dist/chunks/{LogContext-L7HzynFw.cjs → LogContext-BaMXleWj.cjs} +19 -4
  11. package/dist/chunks/LogContext-BaMXleWj.cjs.map +1 -0
  12. package/dist/chunks/{LogContext-Cwn-1Zzb.js → LogContext-DjlITOzZ.js} +19 -4
  13. package/dist/chunks/LogContext-DjlITOzZ.js.map +1 -0
  14. package/dist/chunks/SerializerBridge-Ba43Mk7j.js +393 -0
  15. package/dist/chunks/SerializerBridge-Ba43Mk7j.js.map +1 -0
  16. package/dist/chunks/SerializerBridge-C4a9Z37F.cjs +410 -0
  17. package/dist/chunks/SerializerBridge-C4a9Z37F.cjs.map +1 -0
  18. package/dist/chunks/{StyleManager-CIpd6wbO.cjs → StyleManager-DQ6UNRB-.cjs} +37 -11
  19. package/dist/chunks/StyleManager-DQ6UNRB-.cjs.map +1 -0
  20. package/dist/chunks/StyleManager-DjwAYbxE.js +113 -0
  21. package/dist/chunks/StyleManager-DjwAYbxE.js.map +1 -0
  22. package/dist/chunks/{core-PoT7RrTK.js → core-Blfi2klP.js} +1 -4
  23. package/dist/chunks/core-Blfi2klP.js.map +1 -0
  24. package/dist/chunks/{core-Dzz7agGa.cjs → core-CqS_UBzJ.cjs} +1 -4
  25. package/dist/chunks/core-CqS_UBzJ.cjs.map +1 -0
  26. package/dist/chunks/{environment-detector-CI3TrWK_.js → environment-detector-7NvnYUfr.js} +11 -11
  27. package/dist/chunks/environment-detector-7NvnYUfr.js.map +1 -0
  28. package/dist/chunks/{environment-detector-Cnn6wr6O.cjs → environment-detector-D-tHkKWA.cjs} +11 -11
  29. package/dist/chunks/environment-detector-D-tHkKWA.cjs.map +1 -0
  30. package/dist/chunks/server-fallback-CaCPjWby.cjs +119 -0
  31. package/dist/chunks/server-fallback-CaCPjWby.cjs.map +1 -0
  32. package/dist/chunks/server-fallback-jj0T6XaK.js +114 -0
  33. package/dist/chunks/server-fallback-jj0T6XaK.js.map +1 -0
  34. package/dist/chunks/{spinner-DNvxbM9a.cjs → spinner-BHyYEXsM.cjs} +319 -37
  35. package/dist/chunks/spinner-BHyYEXsM.cjs.map +1 -0
  36. package/dist/chunks/{spinner-D3FsF78o.js → spinner-BtkwpzYv.js} +319 -37
  37. package/dist/chunks/spinner-BtkwpzYv.js.map +1 -0
  38. package/dist/chunks/styling-CRw3KQW4.js +1592 -0
  39. package/dist/chunks/styling-CRw3KQW4.js.map +1 -0
  40. package/dist/chunks/styling-Cel2wPRy.cjs +1645 -0
  41. package/dist/chunks/styling-Cel2wPRy.cjs.map +1 -0
  42. package/dist/chunks/transports-BGfwwakw.js +1237 -0
  43. package/dist/chunks/transports-BGfwwakw.js.map +1 -0
  44. package/dist/chunks/transports-yK6CL0Ml.cjs +1278 -0
  45. package/dist/chunks/transports-yK6CL0Ml.cjs.map +1 -0
  46. package/dist/chunks/{utils-BqlFYocD.cjs → utils-W_cxqriN.cjs} +44 -37
  47. package/dist/chunks/utils-W_cxqriN.cjs.map +1 -0
  48. package/dist/chunks/{utils-VETbVpkR.js → utils-tKfBAWUM.js} +44 -37
  49. package/dist/chunks/utils-tKfBAWUM.js.map +1 -0
  50. package/dist/cli/CommandProcessor.d.ts +166 -19
  51. package/dist/cli/CommandProcessor.d.ts.map +1 -1
  52. package/dist/cli/commands/ConfigCommand.d.ts +36 -1
  53. package/dist/cli/commands/ConfigCommand.d.ts.map +1 -1
  54. package/dist/cli/commands/ExportCommand.d.ts +49 -3
  55. package/dist/cli/commands/ExportCommand.d.ts.map +1 -1
  56. package/dist/cli/commands/ThemeCommand.d.ts +62 -3
  57. package/dist/cli/commands/ThemeCommand.d.ts.map +1 -1
  58. package/dist/cli/help.d.ts +30 -2
  59. package/dist/cli/help.d.ts.map +1 -1
  60. package/dist/cli/index.d.ts +29 -2
  61. package/dist/cli/index.d.ts.map +1 -1
  62. package/dist/cli.cjs +2 -2
  63. package/dist/cli.js +2 -2
  64. package/dist/context/LogContext.d.ts +165 -66
  65. package/dist/context/LogContext.d.ts.map +1 -1
  66. package/dist/context.cjs +1 -1
  67. package/dist/context.js +1 -1
  68. package/dist/core.cjs +52 -29
  69. package/dist/core.cjs.map +1 -1
  70. package/dist/core.d.ts +50 -27
  71. package/dist/core.d.ts.map +1 -1
  72. package/dist/core.js +52 -29
  73. package/dist/core.js.map +1 -1
  74. package/dist/hooks/HookBridge.d.ts +15 -9
  75. package/dist/hooks/HookBridge.d.ts.map +1 -1
  76. package/dist/hooks/HookManager.d.ts +295 -2
  77. package/dist/hooks/HookManager.d.ts.map +1 -1
  78. package/dist/hooks.cjs +1 -1
  79. package/dist/hooks.js +1 -1
  80. package/dist/index.cjs +1092 -212
  81. package/dist/index.cjs.map +1 -1
  82. package/dist/index.js +1092 -212
  83. package/dist/index.js.map +1 -1
  84. package/dist/playground/TerminalBridge.d.ts +23 -16
  85. package/dist/playground/TerminalBridge.d.ts.map +1 -1
  86. package/dist/playground/box.d.ts +36 -5
  87. package/dist/playground/box.d.ts.map +1 -1
  88. package/dist/playground/cli-table.d.ts +41 -5
  89. package/dist/playground/cli-table.d.ts.map +1 -1
  90. package/dist/playground/divider.d.ts +22 -3
  91. package/dist/playground/divider.d.ts.map +1 -1
  92. package/dist/playground/header.d.ts +21 -4
  93. package/dist/playground/header.d.ts.map +1 -1
  94. package/dist/playground/server-fallback.d.ts +96 -9
  95. package/dist/playground/server-fallback.d.ts.map +1 -1
  96. package/dist/playground/spinner.d.ts +159 -10
  97. package/dist/playground/spinner.d.ts.map +1 -1
  98. package/dist/playground/step.d.ts +25 -6
  99. package/dist/playground/step.d.ts.map +1 -1
  100. package/dist/playground.cjs +1 -1
  101. package/dist/playground.js +1 -1
  102. package/dist/serializers/SerializerBridge.d.ts +13 -6
  103. package/dist/serializers/SerializerBridge.d.ts.map +1 -1
  104. package/dist/serializers/SerializerRegistry.d.ts +236 -0
  105. package/dist/serializers/SerializerRegistry.d.ts.map +1 -1
  106. package/dist/serializers.cjs +1 -1
  107. package/dist/serializers.js +1 -1
  108. package/dist/styles/StyleManager.d.ts +138 -31
  109. package/dist/styles/StyleManager.d.ts.map +1 -1
  110. package/dist/styles.cjs +2 -2
  111. package/dist/styles.js +2 -2
  112. package/dist/styling/SmartPresets.d.ts +100 -6
  113. package/dist/styling/SmartPresets.d.ts.map +1 -1
  114. package/dist/styling/StyleBuilder.d.ts +453 -32
  115. package/dist/styling/StyleBuilder.d.ts.map +1 -1
  116. package/dist/styling/banners.d.ts +83 -7
  117. package/dist/styling/banners.d.ts.map +1 -1
  118. package/dist/styling/themes.d.ts +41 -2
  119. package/dist/styling/themes.d.ts.map +1 -1
  120. package/dist/transports/ConsoleTransport.d.ts +95 -0
  121. package/dist/transports/ConsoleTransport.d.ts.map +1 -1
  122. package/dist/transports/FileTransport.d.ts +99 -18
  123. package/dist/transports/FileTransport.d.ts.map +1 -1
  124. package/dist/transports/HttpTransport.d.ts +135 -22
  125. package/dist/transports/HttpTransport.d.ts.map +1 -1
  126. package/dist/transports/OtlpTransport.d.ts +53 -36
  127. package/dist/transports/OtlpTransport.d.ts.map +1 -1
  128. package/dist/transports/TransportBridge.d.ts +19 -13
  129. package/dist/transports/TransportBridge.d.ts.map +1 -1
  130. package/dist/transports/TransportManager.d.ts +223 -8
  131. package/dist/transports/TransportManager.d.ts.map +1 -1
  132. package/dist/transports.cjs +1 -1
  133. package/dist/transports.js +1 -1
  134. package/dist/types/core.d.ts +155 -59
  135. package/dist/types/core.d.ts.map +1 -1
  136. package/dist/types/hooks.d.ts +92 -14
  137. package/dist/types/hooks.d.ts.map +1 -1
  138. package/dist/types/serializers.d.ts +72 -0
  139. package/dist/types/serializers.d.ts.map +1 -1
  140. package/dist/types/transports.d.ts +42 -37
  141. package/dist/types/transports.d.ts.map +1 -1
  142. package/dist/utils/ansi-colors.d.ts +15 -15
  143. package/dist/utils/environment-detector.d.ts +11 -11
  144. package/dist/utils/formatting.d.ts +8 -8
  145. package/dist/utils/output.d.ts +9 -9
  146. package/dist/utils/output.d.ts.map +1 -1
  147. package/dist/utils/stackTrace.d.ts +2 -2
  148. package/package.json +24 -25
  149. package/dist/chunks/HookBridge-CiRfR67f.cjs +0 -190
  150. package/dist/chunks/HookBridge-CiRfR67f.cjs.map +0 -1
  151. package/dist/chunks/HookBridge-SgMmbXZB.js +0 -173
  152. package/dist/chunks/HookBridge-SgMmbXZB.js.map +0 -1
  153. package/dist/chunks/LogContext-Cwn-1Zzb.js.map +0 -1
  154. package/dist/chunks/LogContext-L7HzynFw.cjs.map +0 -1
  155. package/dist/chunks/SerializerBridge-BaOQOb8q.cjs +0 -166
  156. package/dist/chunks/SerializerBridge-BaOQOb8q.cjs.map +0 -1
  157. package/dist/chunks/SerializerBridge-BkpQu5c9.js +0 -149
  158. package/dist/chunks/SerializerBridge-BkpQu5c9.js.map +0 -1
  159. package/dist/chunks/StyleManager-CIpd6wbO.cjs.map +0 -1
  160. package/dist/chunks/StyleManager-LCvVlVdx.js +0 -87
  161. package/dist/chunks/StyleManager-LCvVlVdx.js.map +0 -1
  162. package/dist/chunks/core-Dzz7agGa.cjs.map +0 -1
  163. package/dist/chunks/core-PoT7RrTK.js.map +0 -1
  164. package/dist/chunks/environment-detector-CI3TrWK_.js.map +0 -1
  165. package/dist/chunks/environment-detector-Cnn6wr6O.cjs.map +0 -1
  166. package/dist/chunks/server-fallback-BUKjdLS7.cjs +0 -42
  167. package/dist/chunks/server-fallback-BUKjdLS7.cjs.map +0 -1
  168. package/dist/chunks/server-fallback-BsuWH1Dk.js +0 -37
  169. package/dist/chunks/server-fallback-BsuWH1Dk.js.map +0 -1
  170. package/dist/chunks/spinner-D3FsF78o.js.map +0 -1
  171. package/dist/chunks/spinner-DNvxbM9a.cjs.map +0 -1
  172. package/dist/chunks/styling-84N8T97t.js +0 -941
  173. package/dist/chunks/styling-84N8T97t.js.map +0 -1
  174. package/dist/chunks/styling-Cg5saQ46.cjs +0 -994
  175. package/dist/chunks/styling-Cg5saQ46.cjs.map +0 -1
  176. package/dist/chunks/transports-BiDk345e.js +0 -715
  177. package/dist/chunks/transports-BiDk345e.js.map +0 -1
  178. package/dist/chunks/transports-COPWmlF1.cjs +0 -756
  179. package/dist/chunks/transports-COPWmlF1.cjs.map +0 -1
  180. package/dist/chunks/utils-BqlFYocD.cjs.map +0 -1
  181. package/dist/chunks/utils-VETbVpkR.js.map +0 -1
  182. package/dist/example.d.ts +0 -18
  183. package/dist/example.d.ts.map +0 -1
  184. package/dist/main.d.ts +0 -2
  185. package/dist/main.d.ts.map +0 -1
@@ -1,37 +1,41 @@
1
1
  /**
2
- * @fileoverview TerminalBridge — CLI terminal integration.
3
- * Encapsulates TTY detection, CLI primitive rendering, and server-mode
4
- * fallback for non-TTY environments.
2
+ * @fileoverview TerminalBridge — integración de terminal CLI.
3
+ * Encapsula detección de TTY, renderizado de primitivas CLI y fallback a
4
+ * server-mode para entornos non-TTY.
5
+ *
6
+ * @internal
5
7
  */
6
8
  import type { ISpinnerHandle, IBoxOptions, ITableOptions } from '../types/index.js';
7
9
  import { ServerFallback } from '../playground/server-fallback.js';
8
10
  import type { LoggerConfig } from '../types/index.js';
9
11
  import type { Logger } from '../Logger.js';
10
12
  /**
11
- * Bridge for CLI terminal operations.
13
+ * Bridge para operaciones de terminal CLI.
14
+ *
15
+ * @internal
12
16
  */
13
17
  export interface TerminalBridge {
14
- /** Displays a step progress indicator. */
18
+ /** Muestra un indicador de progreso tipo step. */
15
19
  step(current: number, total: number, message: string): void;
16
- /** Displays a styled header. */
20
+ /** Muestra un header con estilo. */
17
21
  header(title: string, subtitle?: string): void;
18
- /** Displays a horizontal divider. */
22
+ /** Muestra un divider horizontal. */
19
23
  divider(): void;
20
- /** Outputs a blank line. */
24
+ /** Emite una línea en blanco. */
21
25
  blank(): void;
22
- /** Renders content inside a bordered box. */
26
+ /** Renderiza contenido dentro de un box con border. */
23
27
  box(content: string, options?: IBoxOptions): void;
24
- /** Renders an array of objects as an ASCII table. */
28
+ /** Renderiza un array de objetos como tabla ASCII. */
25
29
  cliTable(rows: Record<string, unknown>[], options?: ITableOptions): void;
26
- /** Creates a spinner handle. */
30
+ /** Crea un handle de spinner. */
27
31
  spinner(message: string): ISpinnerHandle;
28
- /** Whether CLI primitives should be shown. */
32
+ /** Indica si las primitivas CLI deben mostrarse. */
29
33
  getShowPrimitives(): boolean;
30
- /** Sets whether CLI primitives should be shown. */
34
+ /** Define si las primitivas CLI deben mostrarse. */
31
35
  setShowPrimitives(show: boolean): void;
32
- /** Returns the server fallback instance (lazy). */
36
+ /** Devuelve la instancia del server fallback (lazy). */
33
37
  getServerFallback(): ServerFallback;
34
- /** Returns true if running in a TTY. */
38
+ /** Devuelve `true` si se ejecuta en un TTY. */
35
39
  isInTerminal(): boolean;
36
40
  }
37
41
  interface ITerminalBridgeCtorOptions {
@@ -39,7 +43,10 @@ interface ITerminalBridgeCtorOptions {
39
43
  getLogger: () => Logger;
40
44
  }
41
45
  /**
42
- * Creates a TerminalBridge using a getter to avoid circular reference at construction.
46
+ * Crea un {@link TerminalBridge} usando un getter para evitar referencias
47
+ * circulares en la construcción.
48
+ *
49
+ * @internal
43
50
  */
44
51
  export declare function createTerminalBridge(options: ITerminalBridgeCtorOptions): TerminalBridge;
45
52
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalBridge.d.ts","sourceRoot":"","sources":["../../src/playground/TerminalBridge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAe,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOjG,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,0CAA0C;IAC1C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5D,gCAAgC;IAChC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,qCAAqC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,4BAA4B;IAC5B,KAAK,IAAI,IAAI,CAAC;IACd,6CAA6C;IAC7C,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClD,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACzE,gCAAgC;IAChC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC;IACzC,8CAA8C;IAC9C,iBAAiB,IAAI,OAAO,CAAC;IAC7B,mDAAmD;IACnD,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,mDAAmD;IACnD,iBAAiB,IAAI,cAAc,CAAC;IACpC,wCAAwC;IACxC,YAAY,IAAI,OAAO,CAAC;CAC3B;AAED,UAAU,0BAA0B;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,0BAA0B,GAAG,cAAc,CA8FxF"}
1
+ {"version":3,"file":"TerminalBridge.d.ts","sourceRoot":"","sources":["../../src/playground/TerminalBridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAe,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOjG,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,kDAAkD;IAClD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5D,oCAAoC;IACpC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,qCAAqC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,iCAAiC;IACjC,KAAK,IAAI,IAAI,CAAC;IACd,uDAAuD;IACvD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClD,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACzE,iCAAiC;IACjC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC;IACzC,oDAAoD;IACpD,iBAAiB,IAAI,OAAO,CAAC;IAC7B,oDAAoD;IACpD,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,wDAAwD;IACxD,iBAAiB,IAAI,cAAc,CAAC;IACpC,+CAA+C;IAC/C,YAAY,IAAI,OAAO,CAAC;CAC3B;AAED,UAAU,0BAA0B;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,0BAA0B,GAAG,cAAc,CA8FxF"}
@@ -4,11 +4,42 @@
4
4
  import type { IBoxOptions } from '../types/core.js';
5
5
  import type { ColorCapability } from '../terminal/color-converter.js';
6
6
  /**
7
- * Renders content inside a bordered box
8
- * @param content - Content string (may contain newlines)
9
- * @param options - Box rendering options
10
- * @param colorCap - Terminal color capability
11
- * @returns Formatted box string with border
7
+ * Renderiza `content` envuelto en un box con borde Unicode, respetando el
8
+ * ancho del terminal. El ancho interno se calcula a partir de la l\u00ednea m\u00e1s
9
+ * larga (o del {@link IBoxOptions.title} si es m\u00e1s ancho) y se acota a
10
+ * `min(terminalWidth - 4, 80)` columnas para no romper layouts estrechos.
11
+ *
12
+ * El padding se aplica como l\u00edneas vac\u00edas sim\u00e9tricas arriba/abajo del
13
+ * contenido. Si `borderColor` se omite o `colorCap` es `'none'`, el borde se
14
+ * emite sin secuencias ANSI (output plain-text seguro para logs y pipes).
15
+ *
16
+ * @param content - Texto a envolver; puede contener m\u00faltiples l\u00edneas (`\n`) y
17
+ * secuencias ANSI embebidas \u2014 el c\u00e1lculo de ancho usa el largo visible.
18
+ * @param options - Configuraci\u00f3n del box (title, borderColor, borderStyle,
19
+ * padding). Ver {@link IBoxOptions}.
20
+ * @param colorCap - Capacidad de color del terminal destino. Si es `'none'`,
21
+ * se omite cualquier secuencia ANSI.
22
+ * @returns String multilinea con el box ya construido (sin trailing newline).
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * // Box b\u00e1sico con borde redondeado (default)
27
+ * process.stdout.write(renderBox('Deploy completado') + '\n');
28
+ * ```
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * // Box con t\u00edtulo embebido en el borde superior y color custom
33
+ * process.stdout.write(renderBox('Service: auth-svc\nStatus: healthy', {
34
+ * title: 'Health Check',
35
+ * borderColor: '#00bcd4',
36
+ * borderStyle: 'double',
37
+ * padding: 1
38
+ * }) + '\n');
39
+ * ```
40
+ *
41
+ * @see {@link IBoxOptions} para el detalle de cada opci\u00f3n.
42
+ * @see {@link getTerminalWidth} para la detecci\u00f3n de ancho.
12
43
  */
13
44
  export declare function renderBox(content: string, options?: IBoxOptions, colorCap?: ColorCapability): string;
14
45
  //# sourceMappingURL=box.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../src/playground/box.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAetE;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,EAAE,QAAQ,GAAE,eAAwB,GAAG,MAAM,CAyDhH"}
1
+ {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../src/playground/box.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAwBtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,EAAE,QAAQ,GAAE,eAAwB,GAAG,MAAM,CAyDhH"}
@@ -4,11 +4,47 @@
4
4
  import type { ITableOptions } from '../types/core.js';
5
5
  import type { ColorCapability } from '../terminal/color-converter.js';
6
6
  /**
7
- * Renders an array of objects as a formatted ASCII table
8
- * @param rows - Array of row objects
9
- * @param options - Table rendering options
10
- * @param colorCap - Terminal color capability
11
- * @returns Formatted table string
7
+ * Renderiza un array de objetos como tabla ASCII alineada, con headers en
8
+ * cian bold y separador (`─`) bajo la cabecera. Las columnas se autodetectan
9
+ * a partir de las keys del primer row salvo que `options.columns` las imponga,
10
+ * y los labels se toman de `options.head` (default: nombres de columna).
11
+ *
12
+ * El ancho de cada columna se calcula como `max(header, valor más largo) + 2`
13
+ * para garantizar padding horizontal consistente. Si `colorCap` es `'none'`,
14
+ * se omiten todas las secuencias ANSI (útil para logs plain-text o CI).
15
+ *
16
+ * @param rows - Array de row objects. Un array vacío devuelve string vacío.
17
+ * @param options - Ver {@link ITableOptions} para `columns` y `head`.
18
+ * @param colorCap - Capacidad de color del terminal destino.
19
+ * @returns String multilinea con la tabla (header + separator + data rows),
20
+ * o `''` si `rows` está vacío.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * // Auto-detect columnas desde las keys del primer row
25
+ * const rows = [
26
+ * { service: 'auth', status: 'healthy', latency: 12 },
27
+ * { service: 'api', status: 'degraded', latency: 245 }
28
+ * ];
29
+ * process.stdout.write(renderTable(rows) + '\n');
30
+ * // ┌─────────┬──────────┬─────────┐
31
+ * // │ service │ status │ latency │
32
+ * // ─────────────────────────────────
33
+ * // │ auth │ healthy │ 12 │
34
+ * // │ api │ degraded │ 245 │
35
+ * ```
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * // Forzar columnas y renombrar headers
40
+ * process.stdout.write(renderTable(rows, {
41
+ * columns: ['service', 'latency'],
42
+ * head: ['Service', 'Latency (ms)']
43
+ * }, 'none') + '\n');
44
+ * ```
45
+ *
46
+ * @see {@link ITableOptions} para las opciones disponibles.
47
+ * @see {@link getVisibleLength} y {@link padToWidth} para el cálculo de ancho.
12
48
  */
13
49
  export declare function renderTable(rows: Record<string, unknown>[], options?: ITableOptions, colorCap?: ColorCapability): string;
14
50
  //# sourceMappingURL=cli-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-table.d.ts","sourceRoot":"","sources":["../../src/playground/cli-table.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAItE;;;;;;GAMG;AACH,wBAAgB,WAAW,CACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,OAAO,GAAE,aAAkB,EAC3B,QAAQ,GAAE,eAAwB,GACnC,MAAM,CAwCR"}
1
+ {"version":3,"file":"cli-table.d.ts","sourceRoot":"","sources":["../../src/playground/cli-table.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAItE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,WAAW,CACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,OAAO,GAAE,aAAkB,EAC3B,QAAQ,GAAE,eAAwB,GACnC,MAAM,CAwCR"}
@@ -2,9 +2,28 @@
2
2
  * @fileoverview Divider renderer for CLI primitives
3
3
  */
4
4
  /**
5
- * Renders a horizontal divider line
6
- * @param width - Optional explicit width (defaults to terminal width capped at 60)
7
- * @returns Formatted divider string
5
+ * Renderiza una línea divisoria horizontal dimmed (ANSI `2`) usando el
6
+ * caracter `─`. Por defecto el ancho es `min(terminalWidth - 4, 60)` para
7
+ * no ocupar todo el ancho de ventana y quedar visualmente alineado con otros
8
+ * primitives (box, header, table) que dejan 2 espacios de indentación.
9
+ *
10
+ * @param width - Ancho explícito en columnas visibles. Si se omite, se calcula
11
+ * automáticamente a partir del ancho del terminal (capped a 60).
12
+ * @returns String de una línea con `width` caracteres `─` envueltos en ANSI dim.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * // Divider automático (respeta el ancho del terminal)
17
+ * process.stdout.write(renderDivider() + '\n');
18
+ * ```
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * // Divider de ancho fijo para alinear con otra salida
23
+ * process.stdout.write(renderDivider(40) + '\n');
24
+ * ```
25
+ *
26
+ * @see {@link getTerminalWidth} para la detección de ancho cuando `width` se omite.
8
27
  */
9
28
  export declare function renderDivider(width?: number): string;
10
29
  //# sourceMappingURL=divider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"divider.d.ts","sourceRoot":"","sources":["../../src/playground/divider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAGpD"}
1
+ {"version":3,"file":"divider.d.ts","sourceRoot":"","sources":["../../src/playground/divider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAGpD"}
@@ -2,10 +2,27 @@
2
2
  * @fileoverview Header renderer for CLI primitives
3
3
  */
4
4
  /**
5
- * Renders a styled header with optional subtitle
6
- * @param title - Main title text
7
- * @param subtitle - Optional subtitle (rendered dimmed)
8
- * @returns Formatted header string
5
+ * Renderiza un header de sección: `title` en bold seguido opcionalmente de
6
+ * `subtitle` en dim (ANSI `2`), ideal para marcar bloques en output de CLI.
7
+ * No usa colores de foreground — sólo atributos de texto, así que el renderer
8
+ * es seguro para cualquier terminal sin importar la paleta del theme activo.
9
+ *
10
+ * @param title - Texto principal del header (siempre en bold).
11
+ * @param subtitle - Texto secundario a la derecha del título; se renderiza
12
+ * dimmed y separado por un espacio. Omitir si no aplica.
13
+ * @returns String de una línea con formato ` <bold>title</bold> <dim>subtitle</dim>`.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * process.stdout.write(renderHeader('Deploy', 'production · us-east-1') + '\n');
18
+ * // **Deploy** production · us-east-1 (con atributos ANSI aplicados)
19
+ * ```
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * // Header sin subtítulo
24
+ * process.stdout.write(renderHeader('Build summary') + '\n');
25
+ * ```
9
26
  */
10
27
  export declare function renderHeader(title: string, subtitle?: string): string;
11
28
  //# sourceMappingURL=header.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/playground/header.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAIrE"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/playground/header.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAIrE"}
@@ -1,27 +1,114 @@
1
1
  /**
2
- * @fileoverview Server/JSON fallback for CLI primitives in non-TTY environments
2
+ * @fileoverview Server/JSON fallback para CLI primitives en entornos non-TTY.
3
+ *
4
+ * Cuando el logger corre con `outputMode: 'json'` o fuera de una TTY real
5
+ * (CI logs, pipes, redirecciones), los primitives visuales — `step`,
6
+ * `header`, `box`, `cliTable` — no tienen sentido como arte ASCII.
7
+ * {@link ServerFallback} los degrada a llamadas `logger.info` / no-ops
8
+ * conservando el contenido semántico, para que el log siga siendo parseable
9
+ * línea por línea en aggregators centralizados.
10
+ *
11
+ * La factoría vive en `TerminalBridge.getServerFallback()` (lazy-singleton);
12
+ * los consumers no construyen esta clase directamente.
3
13
  */
4
14
  import type { IBoxOptions, ITableOptions } from '../types/core.js';
5
15
  import type { Logger } from '../Logger.js';
6
16
  /**
7
- * Server-mode fallback: outputs CLI primitives as plain logger calls
8
- * when not running in an interactive terminal.
17
+ * Degradación de CLI primitives para modo server/non-TTY.
18
+ *
19
+ * Cada método espeja uno del {@link TerminalBridge} (`step`/`header`/`box`/...)
20
+ * y decide cómo renderizarlo sin depender de caracteres de caja ni control
21
+ * ANSI: texto plano al logger, o no-op cuando no hay nada útil que emitir.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * // En CI (sin TTY), TerminalBridge enruta automáticamente aquí:
26
+ * logger.step(2, 5, 'Compilando'); // logger.info('[2/5] Compilando')
27
+ * logger.header('Build', 'v1.2.3'); // logger.info('Build v1.2.3')
28
+ * logger.divider(); // (no-op)
29
+ * ```
9
30
  *
31
+ * @see {@link TerminalBridge} para el dispatcher TTY-vs-server.
10
32
  */
11
33
  export declare class ServerFallback {
12
34
  private logger;
35
+ /**
36
+ * @param {Logger} logger - Logger sobre el que se emiten los mensajes
37
+ * degradados. Respeta el `outputMode` que tenga configurado (json,
38
+ * console, ...), por lo que funciona tanto para logs estructurados
39
+ * como para texto plano.
40
+ */
13
41
  constructor(logger: Logger);
14
- /** Render step as plain info log */
42
+ /**
43
+ * Emite un step como `logger.info` con el contador `[current/total]`
44
+ * prefijado al mensaje. Conserva el orden y el progreso sin depender
45
+ * de caracteres de caja.
46
+ *
47
+ * @param {number} current - Índice del step actual (1-based).
48
+ * @param {number} total - Total de steps del run.
49
+ * @param {string} msg - Descripción del step.
50
+ * @returns {void}
51
+ */
15
52
  step(current: number, total: number, msg: string): void;
16
- /** Render header as plain info log */
53
+ /**
54
+ * Emite el título (y subtítulo opcional) como `logger.info`. No pinta
55
+ * bordes ni separadores — en modo server solo interesa el texto.
56
+ *
57
+ * @param {string} title - Texto principal del header.
58
+ * @param {string} [subtitle] - Subtítulo optativo; se concatena con
59
+ * espacio si viene.
60
+ * @returns {void}
61
+ */
17
62
  header(title: string, subtitle?: string): void;
18
- /** Divider is a no-op in server mode */
63
+ /**
64
+ * No-op: un divisor visual (`───`) no aporta nada a un log server/JSON
65
+ * y solo ensuciaría el stream.
66
+ *
67
+ * @returns {void}
68
+ */
19
69
  divider(): void;
20
- /** Blank line is a no-op in server mode */
70
+ /**
71
+ * No-op: las líneas en blanco rompen la consistencia de un log JSON
72
+ * (cada línea debería ser un registro parseable).
73
+ *
74
+ * @returns {void}
75
+ */
21
76
  blank(): void;
22
- /** Render box content as plain info log */
77
+ /**
78
+ * Emite el contenido del box como `logger.info`, ignorando bordes y
79
+ * opciones de estilo (`title`, `borderColor`, ...). En modo server lo
80
+ * que importa es el payload, no el embalaje.
81
+ *
82
+ * @param {string} content - Texto a registrar.
83
+ * @param {IBoxOptions} [_options] - Opciones de box de la API TTY;
84
+ * ignoradas en este fallback.
85
+ * @returns {void}
86
+ */
23
87
  box(content: string, _options?: IBoxOptions): void;
24
- /** Render table rows as plain info logs */
88
+ /**
89
+ * Emite cada fila de la tabla como un `logger.info` con la fila
90
+ * serializada a JSON, en lugar de pintar una grilla ASCII.
91
+ *
92
+ * Cada fila queda como su propio registro JSON — útil para filtrar por
93
+ * columna en tools como `jq` o Loki. Las opciones de columnas/headers
94
+ * (`ITableOptions.columns` / `ITableOptions.head`) se ignoran: en modo
95
+ * server los keys del objeto son la fuente de verdad.
96
+ *
97
+ * @param {Record<string, unknown>[]} rows - Filas a emitir.
98
+ * @param {ITableOptions} [_options] - Opciones de tabla de la API TTY;
99
+ * ignoradas en este fallback.
100
+ * @returns {void}
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * serverFallback.cliTable([
105
+ * { user: 'alice', age: 30 },
106
+ * { user: 'bob', age: 25 }
107
+ * ]);
108
+ * // logger.info('{"user":"alice","age":30}')
109
+ * // logger.info('{"user":"bob","age":25}')
110
+ * ```
111
+ */
25
112
  cliTable(rows: Record<string, unknown>[], _options?: ITableOptions): void;
26
113
  }
27
114
  //# sourceMappingURL=server-fallback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-fallback.d.ts","sourceRoot":"","sources":["../../src/playground/server-fallback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;GAIG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAI1B,oCAAoC;IACpC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvD,sCAAsC;IACtC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAK9C,wCAAwC;IACxC,OAAO,IAAI,IAAI;IAIf,2CAA2C;IAC3C,KAAK,IAAI,IAAI;IAIb,2CAA2C;IAC3C,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAIlD,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI;CAK5E"}
1
+ {"version":3,"file":"server-fallback.d.ts","sourceRoot":"","sources":["../../src/playground/server-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;;OAKG;gBACS,MAAM,EAAE,MAAM;IAI1B;;;;;;;;;OASG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvD;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAK9C;;;;;OAKG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;;;;;OASG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAIlD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI;CAK5E"}
@@ -1,48 +1,197 @@
1
1
  /**
2
- * @fileoverview Built-in spinner implementation for CLI primitives
2
+ * @fileoverview Built-in spinner implementation for CLI primitives.
3
+ *
4
+ * Expone dos implementaciones de {@link ISpinnerHandle}:
5
+ * - {@link SpinnerManager}: spinner braille animado para TTY interactiva.
6
+ * - {@link NoopSpinner}: fallback sin animaci\u00f3n para non-TTY / silent mode.
7
+ *
8
+ * La factor\u00eda que decide cu\u00e1l instanciar vive en `TerminalBridge.spinner()`;
9
+ * los consumers rara vez construyen estas clases directamente.
3
10
  */
4
11
  import type { ISpinnerHandle, LoggerConfig } from '../types/core.js';
5
12
  import type { Logger } from '../Logger.js';
6
13
  /**
7
- * Interactive terminal spinner with in-place line updates.
8
- * Writes to stderr to avoid polluting piped stdout.
14
+ * Spinner interactivo para TTY: cicla frames braille reescribiendo la l\u00ednea
15
+ * actual en su sitio (no emite l\u00edneas nuevas hasta el stop).
16
+ *
17
+ * Para no poluir stdout piped ni entrelazarse con el output normal del
18
+ * {@link Logger}, hace dos cosas no obvias:
19
+ * 1. Escribe SIEMPRE a `process.stderr` (carriage return + `\x1b[K` para
20
+ * limpiar la l\u00ednea antes de cada render).
21
+ * 2. Con `start()` mutea el logger (`outputMode: 'silent'`) y lo restaura a
22
+ * `'console'` en cualquier m\u00e9todo de finalizaci\u00f3n (`stop`/`succeed`/`fail`).
23
+ * Sin esto, los logs del usuario se imprimir\u00edan encima del frame animado.
24
+ *
25
+ * No gestiona TTY detection \u2014 quien lo instancia (`TerminalBridge`) ya valid\u00f3
26
+ * que hay TTY. Para non-TTY ver {@link NoopSpinner}.
9
27
  *
10
28
  * @implements {ISpinnerHandle}
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * const spinner = new SpinnerManager('Compilando...', logger.config, logger);
33
+ * spinner.start();
34
+ * // ...trabajo as\u00edncrono...
35
+ * spinner.succeed('Build OK');
36
+ * // stderr: " \u2713 Build OK"
37
+ * ```
38
+ *
39
+ * @see {@link NoopSpinner} para el path non-TTY.
40
+ * @see {@link ISpinnerHandle} para el contrato de la API p\u00fablica.
11
41
  */
12
42
  export declare class SpinnerManager implements ISpinnerHandle {
13
43
  private message;
14
44
  private frameIndex;
15
45
  private interval;
16
46
  private _logger;
47
+ /**
48
+ * @param {string} message - Texto a mostrar al lado del frame animado.
49
+ * Mutables luego v\u00eda {@link SpinnerManager.text}.
50
+ * @param {LoggerConfig} _config - Reservado para configuraci\u00f3n futura;
51
+ * actualmente no se lee dentro de la clase (lo conserva solo el caller).
52
+ * @param {Logger} logger - Instancia del logger due\u00f1a del spinner. Se
53
+ * mutea/restaura con `updateConfig({ outputMode })` en start/stop.
54
+ */
17
55
  constructor(message: string, _config: LoggerConfig, logger: Logger);
18
- /** Start the spinner animation */
56
+ /**
57
+ * Arranca la animaci\u00f3n. Idempotente: si ya est\u00e1 corriendo, no hace nada.
58
+ *
59
+ * Como efecto lateral mutea el logger pasado al constructor cambiando su
60
+ * `outputMode` a `'silent'` \u2014 cualquier log durante la animaci\u00f3n quedar\u00eda
61
+ * bufferizado y se descarta al restaurar el modo. Llama siempre a
62
+ * {@link stop}, {@link succeed} o {@link fail} para restaurar el output.
63
+ *
64
+ * @returns {void}
65
+ */
19
66
  start(): void;
20
- /** Stop the spinner without a status message */
67
+ /**
68
+ * Detiene la animaci\u00f3n y limpia la l\u00ednea, sin emitir mensaje de estado.
69
+ * Restaura el `outputMode` del logger a `'console'`.
70
+ *
71
+ * \u00datil cuando el caller ya emiti\u00f3 su propio output final y solo necesita
72
+ * desmontar el spinner. Para terminaci\u00f3n con tick/cross usa
73
+ * {@link succeed} / {@link fail}.
74
+ *
75
+ * @returns {void}
76
+ */
21
77
  stop(): void;
22
- /** Stop with a success indicator */
78
+ /**
79
+ * Detiene la animaci\u00f3n y emite el mensaje con un check verde (`\u2713`).
80
+ * Restaura el `outputMode` del logger a `'console'`.
81
+ *
82
+ * @param {string} [msg] - Texto final a mostrar. Si se omite, reutiliza
83
+ * el `message` con el que se construy\u00f3 el spinner (o el \u00faltimo seteado
84
+ * v\u00eda {@link text}).
85
+ * @returns {void}
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * spinner.succeed(); // \u2192 " \u2713 <message inicial>"
90
+ * spinner.succeed('Hecho'); // \u2192 " \u2713 Hecho"
91
+ * ```
92
+ */
23
93
  succeed(msg?: string): void;
24
- /** Stop with a failure indicator */
94
+ /**
95
+ * Detiene la animaci\u00f3n y emite el mensaje con una cruz roja (`\u2717`).
96
+ * Restaura el `outputMode` del logger a `'console'`.
97
+ *
98
+ * @param {string} [msg] - Texto final a mostrar. Si se omite, reutiliza
99
+ * el `message` con el que se construy\u00f3 el spinner (o el \u00faltimo seteado
100
+ * v\u00eda {@link text}).
101
+ * @returns {void}
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * try {
106
+ * await build();
107
+ * spinner.succeed('Build OK');
108
+ * } catch (e) {
109
+ * spinner.fail(`Build fallido: ${e.message}`);
110
+ * }
111
+ * ```
112
+ */
25
113
  fail(msg?: string): void;
26
- /** Update the spinner text while running */
114
+ /**
115
+ * Reemplaza el texto mostrado al lado del frame sin reiniciar la animaci\u00f3n
116
+ * ni perder el frame actual. Pensado para actualizar progreso in-place
117
+ * (p.ej. contador de items procesados).
118
+ *
119
+ * @param {string} msg - Nuevo texto a mostrar.
120
+ * @returns {void}
121
+ */
27
122
  text(msg: string): void;
28
123
  private render;
29
124
  private clearLine;
30
125
  private clearInterval;
31
126
  }
32
127
  /**
33
- * No-op spinner for non-TTY environments or silent mode.
34
- * Logs start/succeed/fail as plain log messages.
128
+ * Spinner degenerate para non-TTY (CI logs, pipes, `outputMode: 'silent'`).
129
+ *
130
+ * No anima nada: traduce los eventos del ciclo de vida del spinner a llamadas
131
+ * normales del logger (`info` en start, `success`/`error` en finish). Así el
132
+ * consumidor mantiene la misma API {@link ISpinnerHandle} sin saber si está
133
+ * corriendo en terminal interactiva o en un job de CI.
134
+ *
135
+ * A diferencia de {@link SpinnerManager}, **no** toca el `outputMode` del
136
+ * logger — no hay nada que mutear porque no hay frame animado que proteger.
35
137
  *
36
138
  * @implements {ISpinnerHandle}
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * // En CI (sin TTY) el TerminalBridge entrega un NoopSpinner automáticamente:
143
+ * const s = logger.spinner('Running tests...');
144
+ * s.start(); // logger.info('Running tests...')
145
+ * s.succeed('All green'); // logger.success('All green')
146
+ * ```
147
+ *
148
+ * @see {@link SpinnerManager} para el path interactivo con animación.
37
149
  */
38
150
  export declare class NoopSpinner implements ISpinnerHandle {
39
151
  private message;
40
152
  private _logger;
153
+ /**
154
+ * @param {string} message - Texto base; se reutiliza como mensaje final
155
+ * si {@link succeed} / {@link fail} se llaman sin argumento.
156
+ * @param {Logger} logger - Logger sobre el que se emiten los eventos.
157
+ */
41
158
  constructor(message: string, logger: Logger);
159
+ /**
160
+ * Emite el mensaje inicial como `logger.info(...)`. No arranca ningún
161
+ * timer — en non-TTY no hay nada que animar.
162
+ *
163
+ * @returns {void}
164
+ */
42
165
  start(): void;
166
+ /**
167
+ * No-op — no hay animación que detener ni output que restaurar.
168
+ *
169
+ * @returns {void}
170
+ */
43
171
  stop(): void;
172
+ /**
173
+ * Emite el mensaje final como `logger.success(...)`.
174
+ *
175
+ * @param {string} [msg] - Texto final; si se omite usa el `message`
176
+ * inicial o el último seteado vía {@link text}.
177
+ * @returns {void}
178
+ */
44
179
  succeed(msg?: string): void;
180
+ /**
181
+ * Emite el mensaje final como `logger.error(...)`.
182
+ *
183
+ * @param {string} [msg] - Texto final; si se omite usa el `message`
184
+ * inicial o el último seteado vía {@link text}.
185
+ * @returns {void}
186
+ */
45
187
  fail(msg?: string): void;
188
+ /**
189
+ * Actualiza el mensaje interno (sin output). Solo afecta al texto que
190
+ * emitirán {@link succeed} / {@link fail} cuando se invoquen sin argumento.
191
+ *
192
+ * @param {string} msg - Nuevo texto base.
193
+ * @returns {void}
194
+ */
46
195
  text(msg: string): void;
47
196
  }
48
197
  //# sourceMappingURL=spinner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/playground/spinner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAS3C;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,cAAc;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAKlE,kCAAkC;IAClC,KAAK,IAAI,IAAI;IAcb,gDAAgD;IAChD,IAAI,IAAI,IAAI;IAOZ,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ3B,oCAAoC;IACpC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQxB,4CAA4C;IAC5C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;CAMxB;AAED;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,cAAc;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK3C,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAIxB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAG1B"}
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/playground/spinner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAkB3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,cAAe,YAAW,cAAc;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;;OAOG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAKlE;;;;;;;;;OASG;IACH,KAAK,IAAI,IAAI;IAcb;;;;;;;;;OASG;IACH,IAAI,IAAI,IAAI;IAOZ;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ3B;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQxB;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;CAMxB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,WAAY,YAAW,cAAc;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IAExB;;;;OAIG;gBACS,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK3C;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAIb;;;;OAIG;IACH,IAAI,IAAI,IAAI;IAIZ;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAI3B;;;;;;OAMG;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAIxB;;;;;;OAMG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAG1B"}