@mks2508/better-logger 2.0.1 → 3.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 (172) hide show
  1. package/.claude/settings.local.json +6 -1
  2. package/CHANGELOG.json +93 -1
  3. package/CHANGELOG.md +127 -0
  4. package/CLAUDE.md +14 -1
  5. package/README.md +111 -20
  6. package/bun.lock +333 -0
  7. package/dist/Logger.d.ts +851 -0
  8. package/dist/Logger.d.ts.map +1 -0
  9. package/dist/ScopedLogger.d.ts +57 -0
  10. package/dist/ScopedLogger.d.ts.map +1 -0
  11. package/dist/chunks/Logger-BCfx_yCK.js +2 -0
  12. package/dist/chunks/Logger-BCfx_yCK.js.map +1 -0
  13. package/dist/chunks/Logger-C126NTrD.js +4269 -0
  14. package/dist/chunks/Logger-C126NTrD.js.map +1 -0
  15. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +33 -0
  16. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +1 -0
  17. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +2 -0
  18. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +1 -0
  19. package/dist/chunks/environment-Ba5kShbx.js +4 -0
  20. package/dist/chunks/environment-Ba5kShbx.js.map +1 -0
  21. package/dist/chunks/environment-TI2ByCPT.js +1209 -0
  22. package/dist/chunks/environment-TI2ByCPT.js.map +1 -0
  23. package/dist/chunks/formatting-Blwy-f0W.js +2 -0
  24. package/dist/chunks/formatting-Blwy-f0W.js.map +1 -0
  25. package/dist/chunks/formatting-CuNUqGks.js +380 -0
  26. package/dist/chunks/formatting-CuNUqGks.js.map +1 -0
  27. package/dist/cli/CommandProcessor.d.ts +100 -0
  28. package/dist/cli/CommandProcessor.d.ts.map +1 -0
  29. package/dist/cli/commands/ConfigCommand.d.ts +14 -0
  30. package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
  31. package/dist/cli/commands/ExportCommand.d.ts +48 -0
  32. package/dist/cli/commands/ExportCommand.d.ts.map +1 -0
  33. package/dist/cli/commands/HistoryCommand.d.ts +47 -0
  34. package/dist/cli/commands/HistoryCommand.d.ts.map +1 -0
  35. package/dist/cli/commands/StatusCommand.d.ts +30 -0
  36. package/dist/cli/commands/StatusCommand.d.ts.map +1 -0
  37. package/dist/cli/commands/ThemeCommand.d.ts +30 -0
  38. package/dist/cli/commands/ThemeCommand.d.ts.map +1 -0
  39. package/dist/cli/help.d.ts +12 -0
  40. package/dist/cli/help.d.ts.map +1 -0
  41. package/dist/cli/index.d.ts +15 -0
  42. package/dist/cli/index.d.ts.map +1 -0
  43. package/dist/constants.d.ts +227 -0
  44. package/dist/constants.d.ts.map +1 -0
  45. package/dist/core.cjs +2 -0
  46. package/dist/core.cjs.map +1 -0
  47. package/dist/core.d.ts +127 -0
  48. package/dist/core.d.ts.map +1 -0
  49. package/dist/core.js +291 -0
  50. package/dist/core.js.map +1 -0
  51. package/dist/example.d.ts +18 -0
  52. package/dist/example.d.ts.map +1 -0
  53. package/dist/exports-module.d.ts +196 -0
  54. package/dist/exports-module.d.ts.map +1 -0
  55. package/dist/exports.cjs +2 -0
  56. package/dist/exports.cjs.map +1 -0
  57. package/dist/exports.js +238 -0
  58. package/dist/exports.js.map +1 -0
  59. package/dist/handlers/AnalyticsLogHandler.d.ts +8 -0
  60. package/dist/handlers/AnalyticsLogHandler.d.ts.map +1 -0
  61. package/dist/handlers/ExportLogHandler.d.ts +100 -0
  62. package/dist/handlers/ExportLogHandler.d.ts.map +1 -0
  63. package/dist/handlers/FileLogHandler.d.ts +33 -0
  64. package/dist/handlers/FileLogHandler.d.ts.map +1 -0
  65. package/dist/handlers/RemoteLogHandler.d.ts +11 -0
  66. package/dist/handlers/RemoteLogHandler.d.ts.map +1 -0
  67. package/dist/handlers/index.d.ts +8 -0
  68. package/dist/handlers/index.d.ts.map +1 -0
  69. package/dist/hooks/HookManager.d.ts +21 -0
  70. package/dist/hooks/HookManager.d.ts.map +1 -0
  71. package/dist/hooks/index.d.ts +2 -0
  72. package/dist/hooks/index.d.ts.map +1 -0
  73. package/dist/index.cjs +2 -0
  74. package/dist/index.cjs.map +1 -0
  75. package/dist/index.d.ts +144 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +478 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/main.d.ts +2 -0
  80. package/dist/main.d.ts.map +1 -0
  81. package/dist/serializers/SerializerRegistry.d.ts +16 -0
  82. package/dist/serializers/SerializerRegistry.d.ts.map +1 -0
  83. package/dist/serializers/index.d.ts +2 -0
  84. package/dist/serializers/index.d.ts.map +1 -0
  85. package/dist/styling/LogStyleBuilder.d.ts +146 -0
  86. package/dist/styling/LogStyleBuilder.d.ts.map +1 -0
  87. package/dist/styling/SemanticStyles.d.ts +178 -0
  88. package/dist/styling/SemanticStyles.d.ts.map +1 -0
  89. package/dist/styling/SmartPresets.d.ts +22 -0
  90. package/dist/styling/SmartPresets.d.ts.map +1 -0
  91. package/dist/styling/StyleBuilder.d.ts +140 -0
  92. package/dist/styling/StyleBuilder.d.ts.map +1 -0
  93. package/dist/styling/StyleCache.d.ts +42 -0
  94. package/dist/styling/StyleCache.d.ts.map +1 -0
  95. package/dist/styling/banners.d.ts +42 -0
  96. package/dist/styling/banners.d.ts.map +1 -0
  97. package/dist/styling/index.d.ts +10 -0
  98. package/dist/styling/index.d.ts.map +1 -0
  99. package/dist/styling/themes.d.ts +7 -0
  100. package/dist/styling/themes.d.ts.map +1 -0
  101. package/dist/styling-module.d.ts +178 -0
  102. package/dist/styling-module.d.ts.map +1 -0
  103. package/dist/styling.cjs +2 -0
  104. package/dist/styling.cjs.map +1 -0
  105. package/dist/styling.js +146 -0
  106. package/dist/styling.js.map +1 -0
  107. package/dist/terminal/terminal-renderer.d.ts +63 -0
  108. package/dist/terminal/terminal-renderer.d.ts.map +1 -0
  109. package/dist/transports/ConsoleTransport.d.ts +9 -0
  110. package/dist/transports/ConsoleTransport.d.ts.map +1 -0
  111. package/dist/transports/FileTransport.d.ts +15 -0
  112. package/dist/transports/FileTransport.d.ts.map +1 -0
  113. package/dist/transports/HttpTransport.d.ts +16 -0
  114. package/dist/transports/HttpTransport.d.ts.map +1 -0
  115. package/dist/transports/TransportManager.d.ts +14 -0
  116. package/dist/transports/TransportManager.d.ts.map +1 -0
  117. package/dist/transports/index.d.ts +5 -0
  118. package/dist/transports/index.d.ts.map +1 -0
  119. package/dist/types/core.d.ts +272 -0
  120. package/dist/types/core.d.ts.map +1 -0
  121. package/dist/types/handlers.d.ts +85 -0
  122. package/dist/types/handlers.d.ts.map +1 -0
  123. package/dist/types/hooks.d.ts +36 -0
  124. package/dist/types/hooks.d.ts.map +1 -0
  125. package/dist/types/index.d.ts +11 -0
  126. package/dist/types/index.d.ts.map +1 -0
  127. package/dist/types/serializers.d.ts +25 -0
  128. package/dist/types/serializers.d.ts.map +1 -0
  129. package/dist/types/transports.d.ts +47 -0
  130. package/dist/types/transports.d.ts.map +1 -0
  131. package/dist/utils/adapter.d.ts +48 -0
  132. package/dist/utils/adapter.d.ts.map +1 -0
  133. package/dist/utils/ansi-colors.d.ts +156 -0
  134. package/dist/utils/ansi-colors.d.ts.map +1 -0
  135. package/dist/utils/environment-detector.d.ts +35 -0
  136. package/dist/utils/environment-detector.d.ts.map +1 -0
  137. package/dist/utils/environment.d.ts +47 -0
  138. package/dist/utils/environment.d.ts.map +1 -0
  139. package/dist/utils/formatting.d.ts +58 -0
  140. package/dist/utils/formatting.d.ts.map +1 -0
  141. package/dist/utils/index.d.ts +8 -0
  142. package/dist/utils/index.d.ts.map +1 -0
  143. package/dist/utils/opentui-detection.d.ts +34 -0
  144. package/dist/utils/opentui-detection.d.ts.map +1 -0
  145. package/dist/utils/output.d.ts +46 -0
  146. package/dist/utils/output.d.ts.map +1 -0
  147. package/dist/utils/stackTrace.d.ts +6 -0
  148. package/dist/utils/stackTrace.d.ts.map +1 -0
  149. package/dist/utils/timestamps.d.ts +20 -0
  150. package/dist/utils/timestamps.d.ts.map +1 -0
  151. package/dist/vite.svg +1 -0
  152. package/docs/API.md +227 -0
  153. package/package.json +1 -1
  154. package/packages/core/package.json +1 -1
  155. package/src/Logger.ts +391 -102
  156. package/src/ScopedLogger.ts +78 -318
  157. package/src/hooks/HookManager.ts +177 -0
  158. package/src/hooks/index.ts +1 -0
  159. package/src/index.ts +77 -2
  160. package/src/serializers/SerializerRegistry.ts +173 -0
  161. package/src/serializers/index.ts +1 -0
  162. package/src/styling/StyleCache.ts +131 -0
  163. package/src/transports/ConsoleTransport.ts +28 -0
  164. package/src/transports/FileTransport.ts +53 -0
  165. package/src/transports/HttpTransport.ts +56 -0
  166. package/src/transports/TransportManager.ts +130 -0
  167. package/src/transports/index.ts +4 -0
  168. package/src/types/core.ts +46 -0
  169. package/src/types/hooks.ts +45 -0
  170. package/src/types/index.ts +39 -1
  171. package/src/types/serializers.ts +30 -0
  172. package/src/types/transports.ts +52 -0
@@ -0,0 +1,851 @@
1
+ import { LogLevel, Verbosity, ThemeVariant, BannerType, LoggerConfig, ILogHandler, StyleOptions, Bindings, SerializerFn, HookEvent, HookCallback, MiddlewareFn, TransportTarget } from './types/index.js';
2
+ import { SerializerRegistry } from './serializers/index.js';
3
+ import { HookManager } from './hooks/index.js';
4
+ import { TransportManager } from './transports/index.js';
5
+ import { ScopedLogger, APILogger, ComponentLogger } from './ScopedLogger.js';
6
+ import { ExportLogHandler } from './handlers/index.js';
7
+ /**
8
+ * Clase principal Logger con capacidades avanzadas de logging
9
+ *
10
+ * @class Logger
11
+ * @description Sistema completo de logging con temas, badges, contextos y exportación.
12
+ * Detecta automáticamente el tema claro/oscuro del navegador.
13
+ *
14
+ * @example
15
+ * // Uso básico sin configuración
16
+ * import logger from '@mks2508/better-logger';
17
+ * logger.info('Aplicación iniciada');
18
+ * logger.success('Conexión establecida');
19
+ *
20
+ * @example
21
+ * // Aplicar un preset temático
22
+ * logger.preset('cyberpunk');
23
+ * logger.warn('Advertencia con estilo neón');
24
+ *
25
+ * @example
26
+ * // Logger con scope para componentes
27
+ * const auth = logger.component('Autenticación');
28
+ * auth.info('Usuario intentando login');
29
+ * auth.success('Login exitoso');
30
+ *
31
+ * @since 0.3.0
32
+ */
33
+ export declare class Logger {
34
+ private config;
35
+ private scopedPrefix?;
36
+ private handlers;
37
+ private timers;
38
+ private groupDepth;
39
+ private exportHandler?;
40
+ private cliProcessor?;
41
+ private themeChangeListener?;
42
+ private badgeList;
43
+ private displaySettings;
44
+ private serializerRegistry;
45
+ private hookManager;
46
+ private transportManager?;
47
+ /**
48
+ * Crea una nueva instancia del Logger
49
+ *
50
+ * @param {Partial<LoggerConfig>} config - Configuración opcional del logger
51
+ *
52
+ * @example
53
+ * // Logger con configuración personalizada
54
+ * const logger = new Logger({
55
+ * theme: 'neon',
56
+ * globalPrefix: 'MiApp',
57
+ * verbosity: 'debug',
58
+ * bufferSize: 1000
59
+ * });
60
+ */
61
+ constructor(config?: Partial<LoggerConfig>);
62
+ /**
63
+ * Configura la detección automática de tema con listener de cambios
64
+ * @private
65
+ * @description Detecta automáticamente si el navegador está en modo claro u oscuro
66
+ */
67
+ private setupAutoThemeDetection;
68
+ /**
69
+ * Obtiene la configuración actual del logger
70
+ *
71
+ * @returns {LoggerConfig} Configuración completa actual
72
+ *
73
+ * @example
74
+ * const config = logger.getConfig();
75
+ * console.log('Verbosidad actual:', config.verbosity);
76
+ * console.log('Tema actual:', config.theme);
77
+ *
78
+ * @since 0.3.0
79
+ */
80
+ getConfig(): LoggerConfig;
81
+ /**
82
+ * Actualiza la configuración del logger
83
+ *
84
+ * @param {Partial<LoggerConfig>} updates - Propiedades a actualizar
85
+ *
86
+ * @example
87
+ * logger.updateConfig({
88
+ * verbosity: 'debug',
89
+ * enableTimestamps: false,
90
+ * theme: 'cyberpunk'
91
+ * });
92
+ *
93
+ * @since 0.3.0
94
+ */
95
+ updateConfig(updates: Partial<LoggerConfig>): void;
96
+ /**
97
+ * Establece el prefijo global para todos los mensajes de log
98
+ *
99
+ * @param {string} prefix - Prefijo a usar
100
+ *
101
+ * @example
102
+ * logger.setGlobalPrefix('MiApp');
103
+ * logger.info('Iniciado'); // [MiApp] Iniciado
104
+ *
105
+ * @since 0.3.0
106
+ */
107
+ setGlobalPrefix(prefix: string): void;
108
+ /**
109
+ * Establece el nivel de verbosidad para filtrar la salida de logs
110
+ *
111
+ * @param {Verbosity} level - Nivel mínimo a mostrar ('debug' | 'info' | 'warn' | 'error' | 'critical' | 'silent')
112
+ *
113
+ * @example
114
+ * logger.setVerbosity('warn'); // Solo muestra warn, error y critical
115
+ * logger.setVerbosity('debug'); // Muestra todos los niveles
116
+ * logger.setVerbosity('silent'); // No muestra nada
117
+ *
118
+ * @since 0.3.0
119
+ */
120
+ setVerbosity(level: Verbosity): void;
121
+ /**
122
+ * Establece el tema del logger
123
+ *
124
+ * @param {ThemeVariant} theme - Tema a aplicar ('default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk')
125
+ *
126
+ * @example
127
+ * logger.setTheme('neon'); // Tema con colores neón
128
+ * logger.setTheme('minimal'); // Tema minimalista
129
+ * logger.setTheme('cyberpunk'); // Tema cyberpunk con efectos
130
+ *
131
+ * @since 0.3.0
132
+ */
133
+ setTheme(theme: ThemeVariant): void;
134
+ /**
135
+ * Establece el tipo de banner para mostrar en la inicialización
136
+ *
137
+ * @param {BannerType} bannerType - Tipo de banner ('simple' | 'ascii' | 'unicode' | 'svg' | 'animated')
138
+ *
139
+ * @example
140
+ * logger.setBannerType('ascii'); // Banner con arte ASCII
141
+ * logger.setBannerType('unicode'); // Banner con caracteres Unicode
142
+ * logger.setBannerType('animated'); // Banner con animación
143
+ *
144
+ * @since 0.3.0
145
+ */
146
+ setBannerType(bannerType: BannerType): void;
147
+ /**
148
+ * Reinicia el logger a la configuración por defecto
149
+ *
150
+ * @example
151
+ * logger.resetConfig();
152
+ * // Todo vuelve a la configuración inicial
153
+ *
154
+ * @since 0.3.0
155
+ */
156
+ resetConfig(): void;
157
+ /**
158
+ * Método de limpieza para eliminar listeners y liberar recursos
159
+ *
160
+ * @example
161
+ * // Antes de cerrar la aplicación
162
+ * logger.cleanup();
163
+ *
164
+ * @since 0.3.0
165
+ */
166
+ cleanup(): void;
167
+ /**
168
+ * Aplica un preset inteligente - funciona perfectamente sin configuración
169
+ *
170
+ * @param {string} name - Nombre del preset a aplicar
171
+ *
172
+ * @example
173
+ * // Presets disponibles
174
+ * logger.preset('default'); // Limpio y adaptativo
175
+ * logger.preset('cyberpunk'); // Colores neón, efectos brillantes
176
+ * logger.preset('glassmorphism'); // Efectos de blur modernos
177
+ * logger.preset('minimal'); // Minimalista y elegante
178
+ * logger.preset('debug'); // Modo desarrollo detallado
179
+ * logger.preset('production'); // Optimizado para producción
180
+ *
181
+ * @since 0.3.0
182
+ */
183
+ preset(name: string): void;
184
+ /**
185
+ * Lista todos los presets disponibles
186
+ *
187
+ * @returns {string[]} Array con nombres de presets disponibles
188
+ *
189
+ * @example
190
+ * const disponibles = logger.presets();
191
+ * console.log(disponibles); // ['default', 'cyberpunk', 'glassmorphism', ...]
192
+ *
193
+ * @since 0.3.0
194
+ */
195
+ presets(): string[];
196
+ /**
197
+ * Oculta el timestamp en los logs
198
+ *
199
+ * @example
200
+ * logger.hideTimestamp();
201
+ * logger.info('Sin marca de tiempo'); // Sin timestamp visible
202
+ *
203
+ * @since 0.3.0
204
+ */
205
+ hideTimestamp(): void;
206
+ /**
207
+ * Muestra el timestamp en los logs
208
+ *
209
+ * @example
210
+ * logger.showTimestamp();
211
+ * logger.info('Con marca de tiempo'); // [2024-01-15 10:30:45] Con marca de tiempo
212
+ *
213
+ * @since 0.3.0
214
+ */
215
+ showTimestamp(): void;
216
+ /**
217
+ * Oculta la información de ubicación (archivo:línea) en los logs
218
+ *
219
+ * @example
220
+ * logger.hideLocation();
221
+ * logger.debug('Sin ubicación'); // Sin mostrar archivo:línea
222
+ *
223
+ * @since 0.3.0
224
+ */
225
+ hideLocation(): void;
226
+ /**
227
+ * Muestra la información de ubicación (archivo:línea) en los logs
228
+ *
229
+ * @example
230
+ * logger.showLocation();
231
+ * logger.debug('Con ubicación'); // app.js:42 Con ubicación
232
+ *
233
+ * @since 0.3.0
234
+ */
235
+ showLocation(): void;
236
+ /**
237
+ * Oculta los badges en los logs
238
+ *
239
+ * @example
240
+ * logger.hideBadges();
241
+ * const api = logger.api('REST');
242
+ * api.info('Sin badges'); // Sin mostrar [API] [REST]
243
+ *
244
+ * @since 0.3.0
245
+ */
246
+ hideBadges(): void;
247
+ /**
248
+ * Muestra los badges en los logs
249
+ *
250
+ * @example
251
+ * logger.showBadges();
252
+ * const api = logger.api('GraphQL');
253
+ * api.info('Con badges'); // [API] [GraphQL] Con badges
254
+ *
255
+ * @since 0.3.0
256
+ */
257
+ showBadges(): void;
258
+ /**
259
+ * Establece múltiples badges para los logs
260
+ *
261
+ * @param {string[]} badges - Array de badges a mostrar
262
+ * @returns {this} Logger instance para encadenamiento
263
+ *
264
+ * @example
265
+ * logger.badges(['v3', 'stable']).info('Release publicado');
266
+ * logger.badges(['API', 'v2']).warn('Endpoint deprecado');
267
+ *
268
+ * @since 3.0.0
269
+ */
270
+ badges(badges: string[]): this;
271
+ /**
272
+ * Añade un badge individual a la lista
273
+ *
274
+ * @param {string} badge - Badge a añadir
275
+ * @returns {this} Logger instance para encadenamiento
276
+ *
277
+ * @example
278
+ * logger.badge('DEBUG').badge('AUTH').info('Token validado');
279
+ *
280
+ * @since 3.0.0
281
+ */
282
+ badge(badge: string): this;
283
+ /**
284
+ * Limpia todos los badges activos
285
+ *
286
+ * @returns {this} Logger instance para encadenamiento
287
+ *
288
+ * @example
289
+ * logger.clearBadges().info('Sin badges');
290
+ *
291
+ * @since 3.0.0
292
+ */
293
+ clearBadges(): this;
294
+ component(name: string): ComponentLogger;
295
+ api(name: string): APILogger;
296
+ scope(name: string): ScopedLogger;
297
+ /**
298
+ * Personalización simple con configuración mínima
299
+ *
300
+ * @param {Object} overrides - Opciones de personalización
301
+ * @param {Object} overrides.message - Configuración del mensaje
302
+ * @param {Object} overrides.timestamp - Configuración del timestamp
303
+ * @param {Object} overrides.location - Configuración de ubicación
304
+ * @param {Object} overrides.level - Configuración del nivel
305
+ * @param {Object} overrides.prefix - Configuración del prefijo
306
+ * @param {string} overrides.spacing - Espaciado: 'compact' | 'normal' | 'spacious'
307
+ *
308
+ * @example
309
+ * logger.customize({
310
+ * message: { color: '#00ff00', size: '16px' },
311
+ * timestamp: { show: false },
312
+ * spacing: 'compact'
313
+ * });
314
+ *
315
+ * @since 0.3.0
316
+ */
317
+ customize(overrides: {
318
+ message?: {
319
+ color?: string;
320
+ font?: string;
321
+ size?: string;
322
+ };
323
+ timestamp?: {
324
+ show?: boolean;
325
+ color?: string;
326
+ };
327
+ location?: {
328
+ show?: boolean;
329
+ color?: string;
330
+ };
331
+ level?: {
332
+ uppercase?: boolean;
333
+ style?: string;
334
+ };
335
+ prefix?: {
336
+ show?: boolean;
337
+ style?: string;
338
+ };
339
+ spacing?: 'compact' | 'normal' | 'spacious';
340
+ }): void;
341
+ /**
342
+ * Access advanced styling API (for power users)
343
+ */
344
+ styles(): any;
345
+ /**
346
+ * Añade un handler personalizado para extender funcionalidad
347
+ *
348
+ * @param {ILogHandler} handler - Handler que implementa ILogHandler
349
+ *
350
+ * @example
351
+ * // Handler personalizado para enviar logs a servidor
352
+ * const remoteHandler = new RemoteLogHandler('https://api.ejemplo.com/logs');
353
+ * logger.addHandler(remoteHandler);
354
+ *
355
+ * @example
356
+ * // Handler para guardar en archivo
357
+ * const fileHandler = new FileLogHandler('./app.log');
358
+ * logger.addHandler(fileHandler);
359
+ *
360
+ * @since 0.3.0
361
+ */
362
+ addHandler(handler: ILogHandler): void;
363
+ /**
364
+ * Obtiene todos los handlers registrados
365
+ *
366
+ * @returns {ILogHandler[]} Array de handlers activos
367
+ * @since 0.3.0
368
+ */
369
+ getHandlers(): ILogHandler[];
370
+ /**
371
+ * Obtiene el handler de exportación si está disponible
372
+ *
373
+ * @returns {ExportLogHandler | undefined} Handler de exportación o undefined
374
+ * @since 0.3.0
375
+ */
376
+ getExportHandler(): ExportLogHandler | undefined;
377
+ /**
378
+ * Añade un serializador personalizado para un tipo específico
379
+ *
380
+ * @param type - Constructor del tipo a serializar
381
+ * @param serializer - Función de serialización
382
+ * @param priority - Prioridad (mayor = primero)
383
+ *
384
+ * @example
385
+ * logger.addSerializer(Error, (err) => ({
386
+ * name: err.name,
387
+ * message: err.message,
388
+ * stack: err.stack?.split('\n').slice(0, 5)
389
+ * }));
390
+ *
391
+ * @since 3.0.0
392
+ */
393
+ addSerializer<T>(type: new (...args: any[]) => T, serializer: SerializerFn<T>, priority?: number): void;
394
+ /**
395
+ * Elimina un serializador registrado
396
+ *
397
+ * @param type - Constructor del tipo a remover
398
+ * @returns true si se eliminó
399
+ *
400
+ * @since 3.0.0
401
+ */
402
+ removeSerializer<T>(type: new (...args: any[]) => T): boolean;
403
+ /**
404
+ * Obtiene el registry de serializadores
405
+ *
406
+ * @returns SerializerRegistry
407
+ * @since 3.0.0
408
+ */
409
+ getSerializerRegistry(): SerializerRegistry;
410
+ /**
411
+ * Registra un hook para un evento
412
+ *
413
+ * @param event - Evento: 'beforeLog' | 'afterLog' | 'onError'
414
+ * @param callback - Función a ejecutar
415
+ * @param priority - Prioridad (mayor = primero)
416
+ * @returns Función para desregistrar
417
+ *
418
+ * @example
419
+ * const unsubscribe = logger.on('beforeLog', (entry) => {
420
+ * entry.correlationId = getCorrelationId();
421
+ * return entry;
422
+ * });
423
+ *
424
+ * @since 3.0.0
425
+ */
426
+ on(event: HookEvent, callback: HookCallback, priority?: number): () => void;
427
+ /**
428
+ * Registra un hook que se ejecuta solo una vez
429
+ *
430
+ * @param event - Evento: 'beforeLog' | 'afterLog' | 'onError'
431
+ * @param callback - Función a ejecutar
432
+ * @param priority - Prioridad (mayor = primero)
433
+ * @returns Función para desregistrar
434
+ *
435
+ * @since 3.0.0
436
+ */
437
+ once(event: HookEvent, callback: HookCallback, priority?: number): () => void;
438
+ /**
439
+ * Elimina un hook registrado
440
+ *
441
+ * @param event - Evento del hook
442
+ * @param callback - Callback a remover
443
+ * @returns true si se eliminó
444
+ *
445
+ * @since 3.0.0
446
+ */
447
+ off(event: HookEvent, callback: HookCallback): boolean;
448
+ /**
449
+ * Añade un middleware al pipeline
450
+ *
451
+ * @param middleware - Función middleware
452
+ * @param priority - Prioridad (mayor = primero)
453
+ * @returns Función para desregistrar
454
+ *
455
+ * @example
456
+ * logger.use((entry, next) => {
457
+ * entry.requestId = asyncLocalStorage.getStore()?.requestId;
458
+ * next();
459
+ * });
460
+ *
461
+ * @since 3.0.0
462
+ */
463
+ use(middleware: MiddlewareFn, priority?: number): () => void;
464
+ /**
465
+ * Obtiene el HookManager
466
+ *
467
+ * @returns HookManager
468
+ * @since 3.0.0
469
+ */
470
+ getHookManager(): HookManager;
471
+ /**
472
+ * Añade un transport para envío de logs
473
+ *
474
+ * @param target - Configuración del transport
475
+ * @returns ID único del transport
476
+ *
477
+ * @example
478
+ * // File transport
479
+ * logger.addTransport({
480
+ * target: 'file',
481
+ * options: { destination: '/var/log/app.log' }
482
+ * });
483
+ *
484
+ * @example
485
+ * // HTTP transport con batching
486
+ * logger.addTransport({
487
+ * target: 'http',
488
+ * options: {
489
+ * url: 'https://logs.example.com',
490
+ * batchSize: 100,
491
+ * flushInterval: 5000
492
+ * },
493
+ * level: 'warn'
494
+ * });
495
+ *
496
+ * @since 3.0.0
497
+ */
498
+ addTransport(target: TransportTarget): string;
499
+ /**
500
+ * Elimina un transport
501
+ *
502
+ * @param id - ID del transport a remover
503
+ * @returns true si se eliminó
504
+ *
505
+ * @since 3.0.0
506
+ */
507
+ removeTransport(id: string): boolean;
508
+ /**
509
+ * Fuerza el flush de todos los transports
510
+ *
511
+ * @returns Promise que resuelve cuando todos los buffers están vaciados
512
+ *
513
+ * @since 3.0.0
514
+ */
515
+ flushTransports(): Promise<void>;
516
+ /**
517
+ * Cierra todos los transports
518
+ *
519
+ * @returns Promise que resuelve cuando todos están cerrados
520
+ *
521
+ * @since 3.0.0
522
+ */
523
+ closeTransports(): Promise<void>;
524
+ /**
525
+ * Obtiene el TransportManager
526
+ *
527
+ * @returns TransportManager o undefined si no hay transports
528
+ * @since 3.0.0
529
+ */
530
+ getTransportManager(): TransportManager | undefined;
531
+ /**
532
+ * Verifica si un nivel de log debe mostrarse según la verbosidad actual
533
+ * @private
534
+ * @param {LogLevel} level - Nivel de log a verificar
535
+ * @returns {boolean} True si debe mostrarse, false si no
536
+ */
537
+ private shouldLog;
538
+ /**
539
+ * Obtiene el prefijo efectivo (global + scope)
540
+ * @private
541
+ * @returns {string | undefined} Prefijo combinado o undefined
542
+ */
543
+ private getEffectivePrefix;
544
+ /**
545
+ * Método central de logging que maneja estilos y formato
546
+ * @protected
547
+ * @param {LogLevel} level - Nivel del log
548
+ * @param {...any} args - Argumentos a loggear
549
+ */
550
+ protected log(level: LogLevel, ...args: any[]): void;
551
+ logWithBindings(bindings: Bindings, level: LogLevel, ...args: any[]): void;
552
+ debug(...args: any[]): void;
553
+ /**
554
+ * Registra mensajes informativos
555
+ *
556
+ * @param {...any} args - Mensajes y datos informativos
557
+ *
558
+ * @example
559
+ * logger.info('Servidor iniciado en puerto 3000');
560
+ * logger.info('Usuario conectado:', userId);
561
+ * logger.info('Procesando', totalItems, 'elementos');
562
+ *
563
+ * @since 0.3.0
564
+ */
565
+ info(...args: any[]): void;
566
+ /**
567
+ * Registra mensajes de advertencia
568
+ *
569
+ * @param {...any} args - Mensajes de advertencia
570
+ *
571
+ * @example
572
+ * logger.warn('Memoria al 85% de capacidad');
573
+ * logger.warn('API deprecada, usar v2');
574
+ * logger.warn('Reintentos agotados:', maxRetries);
575
+ *
576
+ * @since 0.3.0
577
+ */
578
+ warn(...args: any[]): void;
579
+ /**
580
+ * Registra mensajes de error
581
+ *
582
+ * @param {...any} args - Mensajes de error y stack traces
583
+ *
584
+ * @example
585
+ * logger.error('Fallo en conexión a base de datos');
586
+ * logger.error('Error al procesar:', error.message, error.stack);
587
+ * logger.error('Código de error:', errorCode);
588
+ *
589
+ * @since 0.3.0
590
+ */
591
+ error(...args: any[]): void;
592
+ /**
593
+ * Registra mensajes de éxito (nivel info especial)
594
+ *
595
+ * @param {...any} args - Mensajes de operaciones exitosas
596
+ *
597
+ * @example
598
+ * logger.success('Base de datos conectada');
599
+ * logger.success('Usuario creado con ID:', userId);
600
+ * logger.success('✓ Tests pasados: 42/42');
601
+ *
602
+ * @since 0.3.0
603
+ */
604
+ success(...args: any[]): void;
605
+ /**
606
+ * Registra información de trace (debugging detallado)
607
+ *
608
+ * @param {...any} args - Datos detallados para debugging
609
+ *
610
+ * @example
611
+ * logger.trace('Entrando en función processData');
612
+ * logger.trace('Stack completo:', new Error().stack);
613
+ *
614
+ * @since 0.3.0
615
+ */
616
+ trace(...args: any[]): void;
617
+ /**
618
+ * Registra errores críticos (prioridad más alta)
619
+ *
620
+ * @param {...any} args - Errores críticos del sistema
621
+ *
622
+ * @example
623
+ * logger.critical('Sistema caído - reinicio inmediato requerido');
624
+ * logger.critical('Pérdida de datos detectada');
625
+ * logger.critical('Brecha de seguridad:', securityError);
626
+ *
627
+ * @since 0.3.0
628
+ */
629
+ critical(...args: any[]): void;
630
+ /**
631
+ * Muestra datos en formato de tabla
632
+ *
633
+ * @param {any} data - Datos a mostrar (array de objetos o matriz)
634
+ * @param {string[]} columns - Columnas específicas a mostrar (opcional)
635
+ *
636
+ * @example
637
+ * const usuarios = [
638
+ * { id: 1, nombre: 'Juan', edad: 30 },
639
+ * { id: 2, nombre: 'María', edad: 25 }
640
+ * ];
641
+ * logger.table(usuarios);
642
+ * logger.table(usuarios, ['nombre', 'edad']); // Solo estas columnas
643
+ *
644
+ * @since 0.3.0
645
+ */
646
+ table(data: any, columns?: string[]): void;
647
+ /**
648
+ * Inicia un grupo colapsable en la consola
649
+ *
650
+ * @param {string} label - Etiqueta del grupo
651
+ * @param {boolean} collapsed - Si el grupo inicia colapsado (default: false)
652
+ *
653
+ * @example
654
+ * logger.group('Procesando usuarios');
655
+ * logger.info('Usuario 1 procesado');
656
+ * logger.info('Usuario 2 procesado');
657
+ * logger.groupEnd();
658
+ *
659
+ * @example
660
+ * // Grupo colapsado por defecto
661
+ * logger.group('Detalles adicionales', true);
662
+ * logger.debug('Información detallada aquí');
663
+ * logger.groupEnd();
664
+ *
665
+ * @since 0.3.0
666
+ */
667
+ group(label: string, collapsed?: boolean): void;
668
+ /**
669
+ * Finaliza el grupo actual de la consola
670
+ *
671
+ * @example
672
+ * logger.group('Operaciones');
673
+ * logger.info('Operación 1');
674
+ * logger.info('Operación 2');
675
+ * logger.groupEnd(); // Cierra el grupo
676
+ *
677
+ * @since 0.3.0
678
+ */
679
+ groupEnd(): void;
680
+ /**
681
+ * Inicia un temporizador con la etiqueta dada
682
+ *
683
+ * @param {string} label - Etiqueta identificadora del temporizador
684
+ *
685
+ * @example
686
+ * logger.time('proceso-datos');
687
+ * // ... operación costosa ...
688
+ * logger.timeEnd('proceso-datos'); // ⏱️ Timer ended: proceso-datos - 1523.45ms
689
+ *
690
+ * @since 0.3.0
691
+ */
692
+ time(label: string): void;
693
+ /**
694
+ * Finaliza un temporizador y muestra el tiempo transcurrido
695
+ *
696
+ * @param {string} label - Etiqueta del temporizador a finalizar
697
+ *
698
+ * @example
699
+ * logger.time('consulta-db');
700
+ * await consultarBaseDatos();
701
+ * logger.timeEnd('consulta-db'); // ⏱️ Timer ended: consulta-db - 234.56ms
702
+ *
703
+ * @since 0.3.0
704
+ */
705
+ timeEnd(label: string): void;
706
+ /**
707
+ * Muestra un banner con el tipo especificado o configurado
708
+ *
709
+ * @param {BannerType} bannerType - Tipo de banner (opcional)
710
+ *
711
+ * @example
712
+ * logger.showBanner('ascii'); // Banner ASCII art
713
+ * logger.showBanner('unicode'); // Banner con caracteres Unicode
714
+ * logger.showBanner('svg'); // Banner con gráfico SVG
715
+ * logger.showBanner(); // Usa el tipo configurado
716
+ *
717
+ * @since 0.3.0
718
+ */
719
+ showBanner(bannerType?: BannerType): void;
720
+ /**
721
+ * Registra mensaje con imagen SVG de fondo
722
+ *
723
+ * @param {string} message - Mensaje a mostrar
724
+ * @param {string} svgContent - Contenido SVG personalizado (opcional)
725
+ * @param {StyleOptions} options - Opciones de estilo (ancho, alto, padding)
726
+ *
727
+ * @example
728
+ * // SVG automático con gradiente
729
+ * logger.logWithSVG('🎆 Bienvenido a Better Logger');
730
+ *
731
+ * @example
732
+ * // SVG personalizado
733
+ * const customSVG = '<svg>...</svg>';
734
+ * logger.logWithSVG('Logo', customSVG, { width: 400, height: 100 });
735
+ *
736
+ * @since 0.3.0
737
+ */
738
+ logWithSVG(message: string, svgContent?: string, options?: StyleOptions): void;
739
+ /**
740
+ * Registra mensaje con gradiente animado de fondo
741
+ *
742
+ * @param {string} message - Mensaje a animar
743
+ * @param {number} duration - Duración de la animación en segundos (default: 3)
744
+ *
745
+ * @example
746
+ * logger.logAnimated('🌈 Animación en progreso');
747
+ * logger.logAnimated('Cargando...', 5); // Animación de 5 segundos
748
+ *
749
+ * @since 0.3.0
750
+ */
751
+ logAnimated(message: string, duration?: number): void;
752
+ /**
753
+ * Agrupa logs por una propiedad específica usando Object.groupBy (cuando esté disponible)
754
+ *
755
+ * @param {T[]} items - Array de elementos a agrupar
756
+ * @param {Function} groupBy - Función que retorna la clave de agrupación
757
+ *
758
+ * @example
759
+ * const ventas = [
760
+ * { producto: 'Laptop', categoria: 'Electrónica', precio: 1200 },
761
+ * { producto: 'Mouse', categoria: 'Electrónica', precio: 25 },
762
+ * { producto: 'Libro', categoria: 'Literatura', precio: 15 }
763
+ * ];
764
+ * logger.logGrouped(ventas, item => item.categoria);
765
+ *
766
+ * @since 0.3.0
767
+ */
768
+ logGrouped<T>(items: T[], groupBy: (item: T) => string): void;
769
+ /**
770
+ * Procesador de comandos CLI para configuración y exportación del logger
771
+ *
772
+ * @param {string} command - Comando CLI a ejecutar
773
+ * @returns {Promise<void>}
774
+ *
775
+ * @example
776
+ * // Comandos disponibles
777
+ * await logger.cli('export json'); // Exporta logs en JSON
778
+ * await logger.cli('export csv'); // Exporta logs en CSV
779
+ * await logger.cli('theme list'); // Lista temas disponibles
780
+ * await logger.cli('theme set neon'); // Cambia al tema neon
781
+ * await logger.cli('config show'); // Muestra configuración actual
782
+ * await logger.cli('history clear'); // Limpia historial de logs
783
+ * await logger.cli('status'); // Muestra estado del logger
784
+ * await logger.cli('help'); // Muestra ayuda de comandos
785
+ *
786
+ * @since 0.3.0
787
+ */
788
+ cli(command: string): Promise<void>;
789
+ }
790
+ declare const _default: Logger;
791
+ export default _default;
792
+ /**
793
+ * Métodos individuales exportados para conveniencia
794
+ * @description Todos los métodos están correctamente enlazados al singleton lazy
795
+ * @since 0.3.0
796
+ */
797
+ export declare const debug: (...args: any[]) => void;
798
+ export declare const info: (...args: any[]) => void;
799
+ export declare const warn: (...args: any[]) => void;
800
+ export declare const error: (...args: any[]) => void;
801
+ export declare const success: (...args: any[]) => void;
802
+ export declare const trace: (...args: any[]) => void;
803
+ export declare const critical: (...args: any[]) => void;
804
+ export declare const table: (data: any, columns?: string[]) => void;
805
+ export declare const group: (label: string, collapsed?: boolean) => void;
806
+ export declare const groupEnd: () => void;
807
+ export declare const time: (label: string) => void;
808
+ export declare const timeEnd: (label: string) => void;
809
+ export declare const setGlobalPrefix: (prefix: string) => void;
810
+ export declare const setVerbosity: (level: Verbosity) => void;
811
+ export declare const addHandler: (handler: ILogHandler) => void;
812
+ export declare const setTheme: (theme: ThemeVariant) => void;
813
+ export declare const setBannerType: (bannerType: BannerType) => void;
814
+ export declare const showBanner: (bannerType?: BannerType) => void;
815
+ export declare const logWithSVG: (message: string, svgContent?: string, options?: StyleOptions) => void;
816
+ export declare const logAnimated: (message: string, duration?: number) => void;
817
+ export declare const cli: (command: string) => Promise<void>;
818
+ export declare const cleanup: () => void;
819
+ export declare const preset: (name: string) => void;
820
+ export declare const presets: () => string[];
821
+ export declare const hideTimestamp: () => void;
822
+ export declare const showTimestamp: () => void;
823
+ export declare const hideLocation: () => void;
824
+ export declare const showLocation: () => void;
825
+ export declare const hideBadges: () => void;
826
+ export declare const showBadges: () => void;
827
+ export declare const badges: (badgeList: string[]) => Logger;
828
+ export declare const badge: (badgeName: string) => Logger;
829
+ export declare const clearBadges: () => Logger;
830
+ export declare const component: (name: string) => ComponentLogger;
831
+ export declare const api: (name: string) => APILogger;
832
+ export declare const scope: (name: string) => ScopedLogger;
833
+ export declare const customize: (overrides: any) => void;
834
+ export declare const styles: () => any;
835
+ export declare const addSerializer: <T>(type: new (...args: any[]) => T, serializer: SerializerFn<T>, priority?: number) => void;
836
+ export declare const removeSerializer: <T>(type: new (...args: any[]) => T) => boolean;
837
+ export declare const on: (event: HookEvent, callback: HookCallback, priority?: number) => () => void;
838
+ export declare const once: (event: HookEvent, callback: HookCallback, priority?: number) => () => void;
839
+ export declare const off: (event: HookEvent, callback: HookCallback) => boolean;
840
+ export declare const use: (middleware: MiddlewareFn, priority?: number) => () => void;
841
+ export declare const addTransport: (target: TransportTarget) => string;
842
+ export declare const removeTransport: (id: string) => boolean;
843
+ export declare const flushTransports: () => Promise<void>;
844
+ export declare const closeTransports: () => Promise<void>;
845
+ export { FileLogHandler, RemoteLogHandler, AnalyticsLogHandler, ExportLogHandler } from './handlers/index.js';
846
+ export { StyleBuilder, StylePresets as Styles } from './styling/index.js';
847
+ export { SerializerRegistry } from './serializers/index.js';
848
+ export { HookManager } from './hooks/index.js';
849
+ export { TransportManager, ConsoleTransport, FileTransport, HttpTransport } from './transports/index.js';
850
+ export { StyleCache, getStyleCache } from './styling/StyleCache.js';
851
+ //# sourceMappingURL=Logger.d.ts.map