@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
package/dist/Logger.d.ts CHANGED
@@ -49,37 +49,38 @@ export declare class Logger {
49
49
  private hookBridge;
50
50
  private logContext;
51
51
  private transportBridge;
52
- /** Set during success() so log() skips its own dispatch (N2 fix). */
52
+ /** Fijado por `success()` para que `log()` salte su propio dispatch. */
53
53
  private _successTagDispatched;
54
54
  private styleManager;
55
- /** Whether CLI primitives (step, box, header, etc.) should be shown*/
55
+ /** Controla si las CLI primitives (step, box, header, ...) deben renderizarse. */
56
56
  private _showPrimitives;
57
57
  private terminalBridge;
58
58
  /**
59
- * Active smart-preset reference (set by `preset()`). Typed as `unknown`
60
- * to keep the public surface clean; consumed by `createStyledOutput`.
59
+ * Referencia activa al smart-preset (fijada por `preset()`). Tipada como
60
+ * `unknown` para mantener limpia la surface pública; la consume
61
+ * `createStyledOutput`.
61
62
  */
62
63
  private _activePreset?;
63
64
  /**
64
- * Name of the active smart-preset. Stored separately so theme-change
65
- * detection can re-render without re-running the preset body.
65
+ * Nombre del smart-preset activo. Se guarda aparte para que la detección
66
+ * de cambio de tema pueda re-renderizar sin re-ejecutar el body del preset.
66
67
  */
67
68
  private _activePresetName?;
68
69
  /**
69
- * Last-applied `customize()` overrides. Stored for later read by
70
- * `createStyledOutput`.
70
+ * Overrides aplicados por el último `customize()`. Se conservan para que
71
+ * `createStyledOutput` los lea después.
71
72
  */
72
73
  private _customization?;
73
74
  /**
74
- * This logger's own context bindings (from child() calls).
75
- * Single source of truth for this logger's contribution to the context chain.
75
+ * Bindings propios de este logger (provenientes de llamadas a `child()`).
76
+ * Source of truth única de la contribución de este logger a la cadena de contexto.
76
77
  * @private
77
78
  */
78
79
  private _bindings;
79
80
  /**
80
- * Reference to the parent's merged context record at the time this logger
81
- * was created. Together with _bindings, forms the context chain.
82
- * Undefined for the root logger.
81
+ * Referencia al record de contexto mergueado del parent en el momento en
82
+ * que se creó este logger. Junto con `_bindings`, forma la cadena de
83
+ * contexto. `undefined` para el logger raíz.
83
84
  * @private
84
85
  */
85
86
  private _parentContextRecord;
@@ -178,86 +179,87 @@ export declare class Logger {
178
179
  */
179
180
  setBannerType(bannerType: BannerType): void;
180
181
  /**
181
- * Runs `fn` within an AsyncLocalStorage scope where `bindings` are
182
- * merged into the context for all log calls inside `fn`.
182
+ * Ejecuta `fn` dentro de un scope AsyncLocalStorage donde `bindings` se
183
+ * merguean al contexto para todas las llamadas de log dentro de `fn`.
183
184
  *
184
- * Without `fn` (the old setter shape): no-op for backwards compatibility.
185
- * Prefer `child()` for persistent bindings or `withContextAsync()` for
186
- * async callbacks.
185
+ * Sin `fn` (el shape legacy de setter): no-op por backwards compatibility.
186
+ * Preferir `child()` para bindings persistentes o `withContextAsync()`
187
+ * para callbacks async.
187
188
  *
188
- * @param bindings - Key-value pairs to attach for the duration of `fn`
189
- * @param fn - Optional synchronous function to run with scoped bindings
190
- * @returns The return value of `fn`, or undefined if no fn provided
189
+ * @param bindings - Pares key-value a adjuntar durante la ejecución de `fn`
190
+ * @param fn - Función sincrónica opcional a ejecutar con los bindings en scope
191
+ * @returns El valor de retorno de `fn`, o `undefined` si no se pasa `fn`
191
192
  *
192
193
  * @example
193
- * // Scoped synchronous callback
194
+ * // Callback sincrónico scoped
194
195
  * logger.withContext({ requestId: 'r-42' }, () => {
195
- * doWork(); // logs inside see requestId in attributes
196
+ * doWork(); // los logs de aquí ven requestId en attributes
196
197
  * });
197
198
  *
198
199
  * @example
199
- * // Persistent binding: use child()
200
+ * // Binding persistente: usar child()
200
201
  * const reqLog = logger.child({ requestId: 'r-42' });
201
- * reqLog.info('handling request'); // attributes include requestId
202
+ * reqLog.info('handling request'); // attributes incluye requestId
202
203
  *
203
- * @see {@link child} for an immutable copy with the merged context
204
- * @see {@link withContextAsync} for async callback variant
204
+ * @see {@link child} para una copia inmutable con el contexto mergueado
205
+ * @see {@link withContextAsync} para la variante con callback async
205
206
  */
206
207
  withContext<R>(bindings: Record<string, unknown>, fn?: () => R): R | undefined;
207
208
  /**
208
- * Async variant of `withContext`. Runs `fn` within an AsyncLocalStorage
209
- * scope so bindings are available to all async log calls inside `fn`.
209
+ * Variante async de `withContext`. Ejecuta `fn` dentro de un scope
210
+ * AsyncLocalStorage para que los bindings estén disponibles a todas las
211
+ * llamadas de log async dentro de `fn`.
210
212
  *
211
- * @param bindings - Key-value pairs to attach for the duration of `fn`
212
- * @param fn - Async function to run with the scoped bindings
213
- * @returns The return value of `fn`
213
+ * @param bindings - Pares key-value a adjuntar durante la ejecución de `fn`
214
+ * @param fn - Función async a ejecutar con los bindings en scope
215
+ * @returns El valor de retorno de `fn`
214
216
  *
215
217
  * @example
216
218
  * await logger.withContextAsync({ requestId: 'r-42' }, async () => {
217
- * await fetchData(); // logs inside see requestId in attributes
219
+ * await fetchData(); // los logs de aquí ven requestId en attributes
218
220
  * });
219
221
  *
220
- * @see {@link child} for a persistent child logger
221
- * @see {@link withContext} for synchronous callback variant
222
+ * @see {@link child} para un child logger persistente
223
+ * @see {@link withContext} para la variante con callback sincrónico
222
224
  */
223
225
  withContextAsync<R>(bindings: Record<string, unknown>, fn: () => Promise<R>): Promise<R>;
224
226
  /**
225
- * Returns an immutable copy of this logger with the extra context bound.
226
- * Future calls on the child emit with the merged context, without
227
- * mutating the parent — the canonical MDC pattern.
227
+ * Devuelve una copia inmutable de este logger con el contexto extra bound.
228
+ * Las llamadas futuras sobre el child emiten con el contexto mergueado,
229
+ * sin mutar al parent — el patrón canónico de MDC.
228
230
  *
229
- * @param extra - Key-value pairs to attach (requestId, userId, ...)
230
- * @returns A new Logger with merged context
231
+ * @param extra - Pares key-value a adjuntar (requestId, userId, ...)
232
+ * @returns Un nuevo Logger con el contexto mergueado
231
233
  *
232
234
  * @example
233
235
  * const reqLog = logger.child({ requestId: req.id });
234
- * reqLog.info('start'); // emits attributes: { requestId }
235
- * logger.info('unrelated'); // NOT affected — parent's context untouched
236
+ * reqLog.info('start'); // emite attributes: { requestId }
237
+ * logger.info('unrelated'); // NO afectado — el contexto del parent queda intacto
236
238
  *
237
239
  */
238
240
  child(extra: Record<string, unknown>): Logger;
239
241
  /**
240
- * Drops every key from the bound context. After this call, emitted
241
- * records no longer carry `attributes` until {@link withContext} or
242
- * {@link child} re-establish one.
242
+ * Descarta todas las keys del contexto bound. Tras esta llamada, los
243
+ * records emitidos dejan de llevar `attributes` hasta que
244
+ * {@link withContext} o {@link child} restablezcan uno.
243
245
  *
244
- * @returns The same logger instance, now context-free
246
+ * @returns La misma instancia del logger, ahora sin contexto
245
247
  */
246
248
  clearContext(): this;
247
249
  /**
248
- * Snapshot of the bound context. Returned object is a shallow copy:
249
- * mutating it does NOT affect what subsequent log calls emit.
250
+ * Snapshot del contexto bound. El objeto devuelto es una shallow copy:
251
+ * mutarlo NO afecta lo que emiten las llamadas de log posteriores.
250
252
  *
251
- * @returns A read-only snapshot of the current context
253
+ * @returns Un snapshot read-only del contexto actual
252
254
  */
253
255
  getContext(): Readonly<Record<string, unknown>>;
254
256
  /**
255
- * Updates the default OTel resource (service.name, version, env).
256
- * Persisted into every emitted record's `resource` field unless the
257
- * record itself overrides it.
257
+ * Actualiza el resource OTel por defecto (service.name, version, env).
258
+ * Se persiste en el campo `resource` de cada record emitido, salvo que
259
+ * el propio record lo override.
258
260
  *
259
- * @param resource - Partial OTel resource to merge into the current one
260
- * @returns The same logger instance, for chaining
261
+ * @param resource - Resource OTel parcial a merguear con el actual
262
+ * @returns La misma instancia del logger, para chaining
261
263
  *
262
264
  * @example
263
265
  * logger.setResource({ 'service.name': 'api', 'service.version': '1.2.3' });
@@ -274,20 +276,15 @@ export declare class Logger {
274
276
  */
275
277
  resetConfig(): void;
276
278
  /**
277
- * Método de limpieza para eliminar listeners y liberar recursos
278
- *
279
- * @example
280
- * // Antes de cerrar la aplicación
281
- * logger.cleanup();
279
+ * Método de limpieza para eliminar listeners y liberar recursos.
282
280
  *
283
- */
284
- /**
285
- * Tears down every resource held by this Logger. Safe to call multiple
286
- * times. Fixed in 5.1.0 to fully drain transports + clear timers +
287
- * drop the legacy handler list + reset group depth + clear context.
281
+ * Vacía los transports (drain), limpia timers, suelta la lista de
282
+ * handlers legacy, resetea el group depth y limpia el context.
283
+ * Seguro de invocar múltiples veces.
288
284
  *
289
285
  * @example
290
- * await logger.cleanup(); // before process exit / hot reload
286
+ * // Antes de cerrar la aplicación
287
+ * await logger.cleanup();
291
288
  *
292
289
  */
293
290
  cleanup(): Promise<void>;
@@ -303,7 +300,7 @@ export declare class Logger {
303
300
  * logger.preset('glassmorphism'); // Efectos de blur modernos
304
301
  * logger.preset('minimal'); // Minimalista y elegante
305
302
  * logger.preset('debug'); // Modo desarrollo detallado
306
- * logger.preset('production'); // Optimizado para producción
303
+ * logger.preset('production'); // Enfocado en producción
307
304
  *
308
305
  */
309
306
  preset(name: string): void;
@@ -407,8 +404,59 @@ export declare class Logger {
407
404
  *
408
405
  */
409
406
  clearBadges(): this;
407
+ /**
408
+ * Crea un logger scoped para un componente o módulo del dominio.
409
+ *
410
+ * El `ComponentLogger` resultante prepends un badge `[name]` a cada
411
+ * mensaje y comparte configuración, transports y hooks con el logger
412
+ * padre. Útil para trazar el origen de los logs en apps con muchos
413
+ * módulos (Auth, DB, Cache, ...).
414
+ *
415
+ * @param {string} name - Nombre del componente que aparecerá como badge
416
+ * @returns {ComponentLogger} Logger scoped para el componente
417
+ *
418
+ * @example
419
+ * const auth = logger.component('Auth');
420
+ * auth.info('Validando token'); // [Auth] Validando token
421
+ * auth.success('Token válido');
422
+ *
423
+ * @see {@link api} para loggers de endpoints REST/GraphQL
424
+ * @see {@link scope} para un scope genérico sin badge de componente
425
+ */
410
426
  component(name: string): ComponentLogger;
427
+ /**
428
+ * Crea un logger scoped para un endpoint o surface de API.
429
+ *
430
+ * Como `component()` pero con styling orientado a APIs (badge `[API]`
431
+ * por defecto más el nombre del sub-scope). Útil para distinguir
432
+ * tráfico REST vs GraphQL vs WebSocket en los logs.
433
+ *
434
+ * @param {string} name - Nombre de la API o surface (p.ej. `'REST'`, `'GraphQL'`)
435
+ * @returns {APILogger} Logger scoped para la API
436
+ *
437
+ * @example
438
+ * const rest = logger.api('REST');
439
+ * rest.info('GET /users/42'); // [API] [REST] GET /users/42
440
+ *
441
+ * @see {@link component} para loggers de componentes de dominio
442
+ */
411
443
  api(name: string): APILogger;
444
+ /**
445
+ * Crea un logger scoped genérico con un prefijo.
446
+ *
447
+ * Variante minimal de `component()` / `api()`: solo aplica un prefijo
448
+ * de scope sin badges ni styling especial. Útil para sub-módulos que
449
+ * no encajan en las categorías de `component`/`api`.
450
+ *
451
+ * @param {string} name - Texto del prefijo de scope
452
+ * @returns {ScopedLogger} Logger con el scope aplicado
453
+ *
454
+ * @example
455
+ * const db = logger.scope('db');
456
+ * db.info('Pool conectado'); // [db] Pool conectado
457
+ *
458
+ * @see {@link component} y {@link api} para variantes con badges
459
+ */
412
460
  scope(name: string): ScopedLogger;
413
461
  /**
414
462
  * Personalización simple con configuración mínima
@@ -627,37 +675,48 @@ export declare class Logger {
627
675
  */
628
676
  private shouldLog;
629
677
  /**
630
- * Builds and dispatches a `TransportRecord` to the {@link TransportManager}
631
- * (no-op if no transports are registered). Shared by every log path —
632
- * `log()`, `success()`, and visual methods like `table()` / `group()` /
633
- * `time()` — so all emissions hit the same transport pipeline.
678
+ * Tag pendiente de inyectar en el siguiente `TransportRecord` emitido
679
+ * por `log()`. Lo fijan `success()` y `logWithBindingsAndTag()` antes
680
+ * de delegar; `log()` lo consume y lo resetea a `undefined`.
634
681
  *
635
- * @param level - The canonical log level (trace/debug/info/warn/error/critical)
636
- * @param message - Final, post-hook message text
637
- * @param prefix - Effective prefix (global + scope)
638
- * @param stackInfo - Optional caller location
639
- * @param extra - Optional fields to merge into the record (e.g. `{ tag: 'success' }`)
682
+ * @internal
640
683
  */
641
684
  protected _dispatchTag: string | undefined;
642
685
  /**
643
- * Computes the fully-merged context for this logger.
686
+ * Computa el contexto completamente mergueado para este logger.
644
687
  *
645
- * The context chain is built at child-creation time: each child stores
646
- * its parent's fully-merged context (at that moment) as _parentContextRecord.
647
- * This means _parentContextRecord already contains all ancestors' bindings
648
- * in the correct precedence order (root first, nearest child last).
688
+ * La cadena de contexto se construye en el momento de crear el child:
689
+ * cada child almacena el contexto fully-merged de su parent (en ese
690
+ * instante) como `_parentContextRecord`. Esto implica que
691
+ * `_parentContextRecord` ya contiene los bindings de todos los ancestros
692
+ * en el orden de precedencia correcto (root primero, child más cercano al final).
649
693
  *
650
- * Merge order (later wins):
651
- * 1. _parentContextRecord — parent's merged context snapshot at creation time
652
- * 2. _bindings — this logger's own bindings (child() calls)
653
- * 3. ALS store — withContext/withContextAsync scope (highest priority)
694
+ * Orden de merge (gana el último):
695
+ * 1. _parentContextRecord — snapshot del contexto mergueado del parent en la creación
696
+ * 2. _bindings — bindings propios de este logger (llamadas a `child()`)
697
+ * 3. ALS store — scope de `withContext`/`withContextAsync` (prioridad máxima)
654
698
  *
655
699
  * @internal
656
- * @returns The merged context record
700
+ * @returns El record de contexto mergueado
657
701
  */
658
702
  private _getMergedContext;
659
- /** @internal Exposes base merged context (no ALS) to LogContext child factory closure. */
703
+ /** @internal Expone el contexto base mergueado (sin ALS) a la closure de la child factory de LogContext. */
660
704
  _captureMergedContext(): Record<string, unknown>;
705
+ /**
706
+ * Construye y despacha un `TransportRecord` al {@link TransportManager}
707
+ * (no-op si no hay transports registrados). Lo comparten todos los
708
+ * caminos de log — `log()`, `success()` y los métodos visuales como
709
+ * `table()` / `group()` / `time()` — para que toda emisión atraviese
710
+ * el mismo pipeline de transports.
711
+ *
712
+ * @protected
713
+ * @param {LogLevel} level - Nivel canónico (trace/debug/info/warn/error/critical)
714
+ * @param {string} message - Mensaje final, post-hook
715
+ * @param {string | undefined} prefix - Prefijo efectivo (global + scope)
716
+ * @param {StackInfo | null} stackInfo - Ubicación del caller, opcional
717
+ * @param {Partial<TransportRecord>} [extra] - Campos extra a mergear en el record
718
+ * (p.ej. `{ tag: 'success' }` o `attributes` adicionales)
719
+ */
661
720
  protected dispatchToTransports(level: LogLevel, message: string, prefix: string | undefined, stackInfo: StackInfo | null, extra?: Partial<TransportRecord>): void;
662
721
  /**
663
722
  * Obtiene el prefijo efectivo (global + scope)
@@ -666,50 +725,78 @@ export declare class Logger {
666
725
  */
667
726
  private getEffectivePrefix;
668
727
  /**
669
- * Método central de logging. Awaits the `beforeLog` hook pipeline
670
- * synchronously (so redactions / enrichments are reflected in the
671
- * emitted message before console + transport dispatch).
728
+ * Método central de logging. Espera el hook pipeline `beforeLog`
729
+ * antes de despachar a consola y transports, para que redacciones
730
+ * o enriquecimientos (PII, correlation IDs) se reflejen en el
731
+ * mensaje emitido.
732
+ *
733
+ * Los callers fire-and-forget (p.ej. `logger.info(...)` sin `await`)
734
+ * siguen funcionando: el `Promise<void>` resultante se descarta.
735
+ * Se recomienda `await` cuando los hooks `beforeLog` mutan `message`.
672
736
  *
673
- * Fire-and-forget callers (e.g. `logger.info(...)` without `await`)
674
- * still work — the resulting `Promise<void>` is dropped on the floor.
675
- * Awaiting is recommended when `beforeLog` hooks mutate `message`
676
- * (e.g. PII redaction, correlation IDs).
737
+ * El tag opcional (`TransportRecord.tag`) NO se pasa como argumento:
738
+ * se establece vía `_dispatchTag` (ver `success()` y
739
+ * {@link logWithBindingsAndTag}) antes de invocar este método.
677
740
  *
678
741
  * @protected
679
- * @param level - Nivel del log
680
- * @param args - Argumentos a loggear
681
- * @returns Promise that resolves once the record has been dispatched
742
+ * @param {LogLevel} level - Nivel del log
743
+ * @param {unknown[]} args - Argumentos a loggear (mensaje + datos)
744
+ * @returns {Promise<void>} Promesa que resuelve al completar el dispatch
682
745
  *
683
746
  */
747
+ protected log(level: LogLevel, ...args: unknown[]): Promise<void>;
684
748
  /**
685
- * Protected logging method. Awaits the `beforeLog` hook pipeline
686
- * synchronously (so redactions / enrichments are reflected in the
687
- * emitted message before console + transport dispatch).
749
+ * Emite un log aplicando bindings (badges, scope) al prefijo del
750
+ * mensaje antes de delegar en {@link Logger.log}.
688
751
  *
689
- * Fire-and-forget callers (e.g. `logger.info(...)` without `await`)
690
- * still work — the resulting `Promise<void>` is dropped on the floor.
691
- * Awaiting is recommended when `beforeLog` hooks mutate `message`
692
- * (e.g. PII redaction, correlation IDs).
752
+ * No es API pública de consumo: existe para que `ScopedLogger`
753
+ * (`component()` / `api()` / `scope()`) pueda reutilizar el pipeline
754
+ * central de `log()` sin duplicar la lógica de styling/badges.
693
755
  *
694
- * @protected
695
- * @param level - Nivel del log
696
- * @param args - Argumentos a loggear
697
- * @param tag - Optional tag forwarded to `dispatchToTransports` as
698
- * `TransportRecord.tag` (e.g. `'success'` for success records).
699
- * @returns Promise that resolves once the record has been dispatched
756
+ * @internal
757
+ * @param {Bindings} bindings - Bindings de scope (badges, scope name, ...)
758
+ * @param {LogLevel} level - Nivel de log
759
+ * @param {unknown[]} args - Argumentos a loggear
760
+ * @returns {Promise<void>} Promesa del dispatch
700
761
  *
762
+ * @see {@link logWithBindingsAndTag} para la variante con `tag`
701
763
  */
702
- protected log(level: LogLevel, ...args: unknown[]): Promise<void>;
703
764
  logWithBindings(bindings: Bindings, level: LogLevel, ...args: unknown[]): Promise<void>;
704
765
  /**
705
- * Like `logWithBindings()` but sets _dispatchTag first so that
706
- * `log()` dispatches with the tag. Used by ScopedLogger.success()
707
- * to propagate tag:'success' through the normal log() pipeline.
766
+ * Como {@link logWithBindings} pero fija `_dispatchTag` antes de
767
+ * delegar, para que `log()` despache el `TransportRecord` con el
768
+ * tag indicado. Lo usa `ScopedLogger.success()` para propagar
769
+ * `tag: 'success'` a través del pipeline normal de `log()`.
770
+ *
771
+ * @internal
772
+ * @param {Bindings} bindings - Bindings de scope (badges, scope name, ...)
773
+ * @param {LogLevel} level - Nivel de log
774
+ * @param {LogTag} tag - Tag a inyectar en el `TransportRecord`
775
+ * @param {unknown[]} args - Argumentos a loggear
776
+ * @returns {Promise<void>} Promesa del dispatch
708
777
  */
709
778
  logWithBindingsAndTag(bindings: Bindings, level: LogLevel, tag: LogTag, ...args: unknown[]): Promise<void>;
779
+ /**
780
+ * Registra mensajes de debug (nivel más verboso junto a `trace`).
781
+ * Pensado para diagnóstico de desarrollo: valores intermedios, flags
782
+ * de control flow, estado interno. Devuelve `Promise<void>`.
783
+ *
784
+ * Filtrado por defecto cuando `verbosity > 'debug'` (ver `setVerbosity`).
785
+ *
786
+ * @param {unknown[]} args - Mensaje + datos a inspeccionar
787
+ * @returns {Promise<void>} Promesa del dispatch
788
+ *
789
+ * @example
790
+ * logger.debug('Estado interno:', { conn, queueSize });
791
+ * logger.debug('Entrando en branch X');
792
+ *
793
+ * @see {@link trace} para diagnósticos aún más granulares
794
+ * @see {@link setVerbosity} para controlar el nivel mínimo visible
795
+ */
710
796
  debug(...args: unknown[]): Promise<void>;
711
797
  /**
712
- * Registra mensajes informativos. Devuelve `Promise<void>` desde 5.1.0.
798
+ * Registra mensajes informativos. El `await` retorna cuando el hook
799
+ * `beforeLog` y el dispatch a transports han terminado.
713
800
  *
714
801
  * @param args - Mensajes y datos informativos
715
802
  *
@@ -720,14 +807,14 @@ export declare class Logger {
720
807
  */
721
808
  info(...args: unknown[]): Promise<void>;
722
809
  /**
723
- * Registra mensajes de advertencia. Devuelve `Promise<void>` desde 5.1.0.
810
+ * Registra mensajes de advertencia.
724
811
  *
725
812
  * @param args - Mensajes de advertencia
726
813
  *
727
814
  */
728
815
  warn(...args: unknown[]): Promise<void>;
729
816
  /**
730
- * Registra mensajes de error. Devuelve `Promise<void>` desde 5.1.0.
817
+ * Registra mensajes de error.
731
818
  *
732
819
  * @param args - Mensaje de error y stack traces
733
820
  *
@@ -760,7 +847,7 @@ export declare class Logger {
760
847
  */
761
848
  trace(...args: unknown[]): void;
762
849
  /**
763
- * Registra errores críticos (prioridad más alta). Devuelve `Promise<void>` desde 5.1.0.
850
+ * Registra errores críticos (prioridad más alta).
764
851
  *
765
852
  * @param args - Errores críticos del sistema
766
853
  *
@@ -824,7 +911,7 @@ export declare class Logger {
824
911
  * Finaliza un temporizador y muestra el tiempo transcurrido
825
912
  *
826
913
  * @param {string} label - Etiqueta del temporizador a finalizar
827
- * @returns {number} Elapsed milliseconds, or -1 if timer not found
914
+ * @returns {number} Milisegundos transcurridos, o `-1` si no se encuentra el timer
828
915
  *
829
916
  * @example
830
917
  * logger.time('consulta-db');
@@ -877,11 +964,11 @@ export declare class Logger {
877
964
  */
878
965
  logAnimated(message: string, duration?: number): void;
879
966
  /**
880
- * Displays a step progress indicator in the terminal
967
+ * Muestra un indicador de progreso de pasos en la terminal
881
968
  *
882
- * @param {number} current - Current step number
883
- * @param {number} total - Total number of steps
884
- * @param {string} message - Step description
969
+ * @param {number} current - Número de paso actual
970
+ * @param {number} total - Número total de pasos
971
+ * @param {string} message - Descripción del paso
885
972
  *
886
973
  * @example
887
974
  * logger.step(1, 5, 'Analyzing repository...');
@@ -890,10 +977,10 @@ export declare class Logger {
890
977
  */
891
978
  step(current: number, total: number, message: string): void;
892
979
  /**
893
- * Displays a styled header with optional subtitle
980
+ * Muestra un header con estilo y subtítulo opcional
894
981
  *
895
- * @param {string} title - Main title text
896
- * @param {string} subtitle - Optional subtitle (rendered dimmed)
982
+ * @param {string} title - Texto del título principal
983
+ * @param {string} subtitle - Subtítulo opcional (se renderiza atenuado)
897
984
  *
898
985
  * @example
899
986
  * logger.header('Commit Wizard', 'v2.0.0');
@@ -901,7 +988,7 @@ export declare class Logger {
901
988
  */
902
989
  header(title: string, subtitle?: string): void;
903
990
  /**
904
- * Displays a horizontal divider line
991
+ * Muestra una línea divisoria horizontal
905
992
  *
906
993
  * @example
907
994
  * logger.divider();
@@ -909,7 +996,7 @@ export declare class Logger {
909
996
  */
910
997
  divider(): void;
911
998
  /**
912
- * Outputs a blank line
999
+ * Emite una línea en blanco
913
1000
  *
914
1001
  * @example
915
1002
  * logger.blank();
@@ -917,10 +1004,10 @@ export declare class Logger {
917
1004
  */
918
1005
  blank(): void;
919
1006
  /**
920
- * Renders content inside a bordered box
1007
+ * Renderiza contenido dentro de un box con borde
921
1008
  *
922
- * @param {string} content - Content string (may contain newlines)
923
- * @param {IBoxOptions} options - Box rendering options
1009
+ * @param {string} content - String de contenido (puede contener newlines)
1010
+ * @param {IBoxOptions} options - Opciones de renderizado del box
924
1011
  *
925
1012
  * @example
926
1013
  * logger.box('3 commits generated\nProvider: Groq', { title: 'Done', borderColor: '#00ff00' });
@@ -928,11 +1015,11 @@ export declare class Logger {
928
1015
  */
929
1016
  box(content: string, options?: IBoxOptions): void;
930
1017
  /**
931
- * Renders an array of objects as a formatted ASCII table.
932
- * Note: This is distinct from the existing table() method which uses console.table.
1018
+ * Renderiza un array de objetos como una tabla ASCII formateada.
1019
+ * Distinto del método `table()` existente, que usa `console.table`.
933
1020
  *
934
- * @param {Record<string, unknown>[]} rows - Array of row objects
935
- * @param {ITableOptions} options - Table rendering options
1021
+ * @param {Record<string, unknown>[]} rows - Array de objetos fila
1022
+ * @param {ITableOptions} options - Opciones de renderizado de la tabla
936
1023
  *
937
1024
  * @example
938
1025
  * logger.cliTable([
@@ -943,11 +1030,11 @@ export declare class Logger {
943
1030
  */
944
1031
  cliTable(rows: Record<string, unknown>[], options?: ITableOptions): void;
945
1032
  /**
946
- * Creates a spinner handle for showing progress during async operations.
947
- * Returns a NoopSpinner in non-TTY environments.
1033
+ * Crea un handle de spinner para mostrar progreso durante operaciones async.
1034
+ * Devuelve un `NoopSpinner` en entornos non-TTY.
948
1035
  *
949
- * @param {string} message - Initial spinner text
950
- * @returns {ISpinnerHandle} Spinner controller
1036
+ * @param {string} message - Texto inicial del spinner
1037
+ * @returns {ISpinnerHandle} Controller del spinner
951
1038
  *
952
1039
  * @example
953
1040
  * const s = logger.spinner('Analyzing repository...');
@@ -958,30 +1045,31 @@ export declare class Logger {
958
1045
  */
959
1046
  spinner(message: string): ISpinnerHandle;
960
1047
  /**
961
- * Sets the CLI verbosity level, controlling both log verbosity and primitive visibility
1048
+ * Fija el nivel de verbosidad del CLI, controlando a la vez la verbosidad
1049
+ * de logs y la visibilidad de las primitives
962
1050
  *
963
- * @param {CLILogLevel} level - CLI log level
1051
+ * @param {CLILogLevel} level - Nivel de log del CLI
964
1052
  *
965
1053
  * @example
966
- * logger.setCLILevel('quiet'); // Only errors, no CLI primitives
967
- * logger.setCLILevel('verbose'); // Debug logs + all CLI primitives
1054
+ * logger.setCLILevel('quiet'); // Solo errors, sin CLI primitives
1055
+ * logger.setCLILevel('verbose'); // Debug logs + todas las CLI primitives
968
1056
  *
969
1057
  */
970
1058
  setCLILevel(level: CLILogLevel): void;
971
1059
  /**
972
- * Returns the current CLI log level
973
- * @returns {CLILogLevel} Current CLI log level
1060
+ * Devuelve el nivel de log del CLI actual
1061
+ * @returns {CLILogLevel} Nivel de log del CLI actual
974
1062
  */
975
1063
  get cliLevel(): CLILogLevel;
976
1064
  /**
977
- * Writes formatted output to the configured destination.
978
- * Respects outputMode configuration for console, silent, or custom output.
1065
+ * Escribe output formateado al destino configurado.
1066
+ * Respeta la configuración `outputMode` para output a consola, silencioso o custom.
979
1067
  *
980
1068
  * @private
981
- * @param {string} message - Formatted log message
982
- * @param {LogLevel} level - Log level
983
- * @param {string[]} styles - CSS styles for browser console
984
- * @param {unknown[]} additionalArgs - Additional arguments to log
1069
+ * @param {string} message - Mensaje de log formateado
1070
+ * @param {LogLevel} level - Nivel de log
1071
+ * @param {string[]} styles - Estilos CSS para la consola del navegador
1072
+ * @param {unknown[]} additionalArgs - Argumentos adicionales a loggear
985
1073
  */
986
1074
  private writeOutput;
987
1075
  /**
@@ -1005,15 +1093,16 @@ export declare class Logger {
1005
1093
  cli(command: string): Promise<void>;
1006
1094
  }
1007
1095
  /**
1008
- * Resets the default singleton. Clears the cached instance so the next call
1009
- * to `getDefaultLogger()` rebuilds it from defaults. Useful for tests and
1010
- * hot reload scenarios.
1096
+ * Resetea el singleton por defecto. Limpia la instancia cacheada para que la
1097
+ * próxima llamada a `getDefaultLogger()` la reconstruya desde defaults. Útil
1098
+ * para tests y escenarios de hot reload.
1011
1099
  *
1012
1100
  */
1013
1101
  export declare function resetDefaultLogger(): void;
1014
1102
  /**
1015
1103
  * Lazy default export — every property access defers to `getDefaultLogger()`.
1016
- * Side-effect-free at module import (BUG-N11).
1104
+ * Sin side-effects al importar el módulo (la primera llamada al singleton
1105
+ * se produce en el primer acceso a una propiedad, no en el `import`).
1017
1106
  *
1018
1107
  * @example
1019
1108
  * import logger from 'better-logger';