@mks2508/better-logger 2.0.0 → 2.1.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.
- package/bun.lock +333 -0
- package/dist/Logger.d.ts +704 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/ScopedLogger.d.ts +310 -0
- package/dist/ScopedLogger.d.ts.map +1 -0
- package/dist/chunks/Logger-B7L-ujY4.js +3503 -0
- package/dist/chunks/Logger-B7L-ujY4.js.map +1 -0
- package/dist/chunks/Logger-DzU_c5sX.js +2 -0
- package/dist/chunks/Logger-DzU_c5sX.js.map +1 -0
- package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +33 -0
- package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +1 -0
- package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +2 -0
- package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +1 -0
- package/dist/chunks/ScopedLogger-BY3-E8Ov.js +2 -0
- package/dist/chunks/ScopedLogger-BY3-E8Ov.js.map +1 -0
- package/dist/chunks/ScopedLogger-D-RbiFZn.js +361 -0
- package/dist/chunks/ScopedLogger-D-RbiFZn.js.map +1 -0
- package/dist/chunks/environment-Ba5kShbx.js +4 -0
- package/dist/chunks/environment-Ba5kShbx.js.map +1 -0
- package/dist/chunks/environment-TI2ByCPT.js +1209 -0
- package/dist/chunks/environment-TI2ByCPT.js.map +1 -0
- package/dist/chunks/formatting-Blwy-f0W.js +2 -0
- package/dist/chunks/formatting-Blwy-f0W.js.map +1 -0
- package/dist/chunks/formatting-CuNUqGks.js +380 -0
- package/dist/chunks/formatting-CuNUqGks.js.map +1 -0
- package/dist/cli/CommandProcessor.d.ts +100 -0
- package/dist/cli/CommandProcessor.d.ts.map +1 -0
- package/dist/cli/commands/ConfigCommand.d.ts +14 -0
- package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
- package/dist/cli/commands/ExportCommand.d.ts +48 -0
- package/dist/cli/commands/ExportCommand.d.ts.map +1 -0
- package/dist/cli/commands/HistoryCommand.d.ts +47 -0
- package/dist/cli/commands/HistoryCommand.d.ts.map +1 -0
- package/dist/cli/commands/StatusCommand.d.ts +30 -0
- package/dist/cli/commands/StatusCommand.d.ts.map +1 -0
- package/dist/cli/commands/ThemeCommand.d.ts +30 -0
- package/dist/cli/commands/ThemeCommand.d.ts.map +1 -0
- package/dist/cli/help.d.ts +12 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/constants.d.ts +227 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/core.cjs +2 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.ts +127 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +291 -0
- package/dist/core.js.map +1 -0
- package/dist/example.d.ts +18 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/exports-module.d.ts +196 -0
- package/dist/exports-module.d.ts.map +1 -0
- package/dist/exports.cjs +2 -0
- package/dist/exports.cjs.map +1 -0
- package/dist/exports.js +238 -0
- package/dist/exports.js.map +1 -0
- package/dist/handlers/AnalyticsLogHandler.d.ts +8 -0
- package/dist/handlers/AnalyticsLogHandler.d.ts.map +1 -0
- package/dist/handlers/ExportLogHandler.d.ts +100 -0
- package/dist/handlers/ExportLogHandler.d.ts.map +1 -0
- package/dist/handlers/FileLogHandler.d.ts +33 -0
- package/dist/handlers/FileLogHandler.d.ts.map +1 -0
- package/dist/handlers/RemoteLogHandler.d.ts +11 -0
- package/dist/handlers/RemoteLogHandler.d.ts.map +1 -0
- package/dist/handlers/index.d.ts +8 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +124 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +247 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/styling/LogStyleBuilder.d.ts +146 -0
- package/dist/styling/LogStyleBuilder.d.ts.map +1 -0
- package/dist/styling/SemanticStyles.d.ts +178 -0
- package/dist/styling/SemanticStyles.d.ts.map +1 -0
- package/dist/styling/SmartPresets.d.ts +22 -0
- package/dist/styling/SmartPresets.d.ts.map +1 -0
- package/dist/styling/StyleBuilder.d.ts +140 -0
- package/dist/styling/StyleBuilder.d.ts.map +1 -0
- package/dist/styling/banners.d.ts +42 -0
- package/dist/styling/banners.d.ts.map +1 -0
- package/dist/styling/index.d.ts +10 -0
- package/dist/styling/index.d.ts.map +1 -0
- package/dist/styling/themes.d.ts +7 -0
- package/dist/styling/themes.d.ts.map +1 -0
- package/dist/styling-module.d.ts +178 -0
- package/dist/styling-module.d.ts.map +1 -0
- package/dist/styling.cjs +2 -0
- package/dist/styling.cjs.map +1 -0
- package/dist/styling.js +146 -0
- package/dist/styling.js.map +1 -0
- package/dist/terminal/terminal-renderer.d.ts +63 -0
- package/dist/terminal/terminal-renderer.d.ts.map +1 -0
- package/dist/types/core.d.ts +234 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/handlers.d.ts +85 -0
- package/dist/types/handlers.d.ts.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/adapter.d.ts +48 -0
- package/dist/utils/adapter.d.ts.map +1 -0
- package/dist/utils/ansi-colors.d.ts +156 -0
- package/dist/utils/ansi-colors.d.ts.map +1 -0
- package/dist/utils/environment-detector.d.ts +35 -0
- package/dist/utils/environment-detector.d.ts.map +1 -0
- package/dist/utils/environment.d.ts +47 -0
- package/dist/utils/environment.d.ts.map +1 -0
- package/dist/utils/formatting.d.ts +58 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/opentui-detection.d.ts +34 -0
- package/dist/utils/opentui-detection.d.ts.map +1 -0
- package/dist/utils/output.d.ts +46 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/stackTrace.d.ts +6 -0
- package/dist/utils/stackTrace.d.ts.map +1 -0
- package/dist/utils/timestamps.d.ts +20 -0
- package/dist/utils/timestamps.d.ts.map +1 -0
- package/dist/vite.svg +1 -0
- package/package.json +1 -1
package/dist/Logger.d.ts
ADDED
|
@@ -0,0 +1,704 @@
|
|
|
1
|
+
import { LogLevel, Verbosity, ThemeVariant, BannerType, LoggerConfig, ILogHandler, StyleOptions } from './types/index.js';
|
|
2
|
+
import { ExportLogHandler } from './handlers/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Clase principal Logger con capacidades avanzadas de logging
|
|
5
|
+
*
|
|
6
|
+
* @class Logger
|
|
7
|
+
* @description Sistema completo de logging con temas, badges, contextos y exportación.
|
|
8
|
+
* Detecta automáticamente el tema claro/oscuro del navegador.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // Uso básico sin configuración
|
|
12
|
+
* import logger from '@mks2508/better-logger';
|
|
13
|
+
* logger.info('Aplicación iniciada');
|
|
14
|
+
* logger.success('Conexión establecida');
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // Aplicar un preset temático
|
|
18
|
+
* logger.preset('cyberpunk');
|
|
19
|
+
* logger.warn('Advertencia con estilo neón');
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // Logger con scope para componentes
|
|
23
|
+
* const auth = logger.component('Autenticación');
|
|
24
|
+
* auth.info('Usuario intentando login');
|
|
25
|
+
* auth.success('Login exitoso');
|
|
26
|
+
*
|
|
27
|
+
* @since 0.3.0
|
|
28
|
+
*/
|
|
29
|
+
export declare class Logger {
|
|
30
|
+
private config;
|
|
31
|
+
private scopedPrefix?;
|
|
32
|
+
private handlers;
|
|
33
|
+
private timers;
|
|
34
|
+
private groupDepth;
|
|
35
|
+
private exportHandler?;
|
|
36
|
+
private cliProcessor?;
|
|
37
|
+
private themeChangeListener?;
|
|
38
|
+
private displaySettings;
|
|
39
|
+
/**
|
|
40
|
+
* Crea una nueva instancia del Logger
|
|
41
|
+
*
|
|
42
|
+
* @param {Partial<LoggerConfig>} config - Configuración opcional del logger
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* // Logger con configuración personalizada
|
|
46
|
+
* const logger = new Logger({
|
|
47
|
+
* theme: 'neon',
|
|
48
|
+
* globalPrefix: 'MiApp',
|
|
49
|
+
* verbosity: 'debug',
|
|
50
|
+
* bufferSize: 1000
|
|
51
|
+
* });
|
|
52
|
+
*/
|
|
53
|
+
constructor(config?: Partial<LoggerConfig>);
|
|
54
|
+
/**
|
|
55
|
+
* Configura la detección automática de tema con listener de cambios
|
|
56
|
+
* @private
|
|
57
|
+
* @description Detecta automáticamente si el navegador está en modo claro u oscuro
|
|
58
|
+
*/
|
|
59
|
+
private setupAutoThemeDetection;
|
|
60
|
+
/**
|
|
61
|
+
* Obtiene la configuración actual del logger
|
|
62
|
+
*
|
|
63
|
+
* @returns {LoggerConfig} Configuración completa actual
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* const config = logger.getConfig();
|
|
67
|
+
* console.log('Verbosidad actual:', config.verbosity);
|
|
68
|
+
* console.log('Tema actual:', config.theme);
|
|
69
|
+
*
|
|
70
|
+
* @since 0.3.0
|
|
71
|
+
*/
|
|
72
|
+
getConfig(): LoggerConfig;
|
|
73
|
+
/**
|
|
74
|
+
* Actualiza la configuración del logger
|
|
75
|
+
*
|
|
76
|
+
* @param {Partial<LoggerConfig>} updates - Propiedades a actualizar
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* logger.updateConfig({
|
|
80
|
+
* verbosity: 'debug',
|
|
81
|
+
* enableTimestamps: false,
|
|
82
|
+
* theme: 'cyberpunk'
|
|
83
|
+
* });
|
|
84
|
+
*
|
|
85
|
+
* @since 0.3.0
|
|
86
|
+
*/
|
|
87
|
+
updateConfig(updates: Partial<LoggerConfig>): void;
|
|
88
|
+
/**
|
|
89
|
+
* Establece el prefijo global para todos los mensajes de log
|
|
90
|
+
*
|
|
91
|
+
* @param {string} prefix - Prefijo a usar
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* logger.setGlobalPrefix('MiApp');
|
|
95
|
+
* logger.info('Iniciado'); // [MiApp] Iniciado
|
|
96
|
+
*
|
|
97
|
+
* @since 0.3.0
|
|
98
|
+
*/
|
|
99
|
+
setGlobalPrefix(prefix: string): void;
|
|
100
|
+
/**
|
|
101
|
+
* Establece el nivel de verbosidad para filtrar la salida de logs
|
|
102
|
+
*
|
|
103
|
+
* @param {Verbosity} level - Nivel mínimo a mostrar ('debug' | 'info' | 'warn' | 'error' | 'critical' | 'silent')
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* logger.setVerbosity('warn'); // Solo muestra warn, error y critical
|
|
107
|
+
* logger.setVerbosity('debug'); // Muestra todos los niveles
|
|
108
|
+
* logger.setVerbosity('silent'); // No muestra nada
|
|
109
|
+
*
|
|
110
|
+
* @since 0.3.0
|
|
111
|
+
*/
|
|
112
|
+
setVerbosity(level: Verbosity): void;
|
|
113
|
+
/**
|
|
114
|
+
* Establece el tema del logger
|
|
115
|
+
*
|
|
116
|
+
* @param {ThemeVariant} theme - Tema a aplicar ('default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk')
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* logger.setTheme('neon'); // Tema con colores neón
|
|
120
|
+
* logger.setTheme('minimal'); // Tema minimalista
|
|
121
|
+
* logger.setTheme('cyberpunk'); // Tema cyberpunk con efectos
|
|
122
|
+
*
|
|
123
|
+
* @since 0.3.0
|
|
124
|
+
*/
|
|
125
|
+
setTheme(theme: ThemeVariant): void;
|
|
126
|
+
/**
|
|
127
|
+
* Establece el tipo de banner para mostrar en la inicialización
|
|
128
|
+
*
|
|
129
|
+
* @param {BannerType} bannerType - Tipo de banner ('simple' | 'ascii' | 'unicode' | 'svg' | 'animated')
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* logger.setBannerType('ascii'); // Banner con arte ASCII
|
|
133
|
+
* logger.setBannerType('unicode'); // Banner con caracteres Unicode
|
|
134
|
+
* logger.setBannerType('animated'); // Banner con animación
|
|
135
|
+
*
|
|
136
|
+
* @since 0.3.0
|
|
137
|
+
*/
|
|
138
|
+
setBannerType(bannerType: BannerType): void;
|
|
139
|
+
/**
|
|
140
|
+
* Reinicia el logger a la configuración por defecto
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* logger.resetConfig();
|
|
144
|
+
* // Todo vuelve a la configuración inicial
|
|
145
|
+
*
|
|
146
|
+
* @since 0.3.0
|
|
147
|
+
*/
|
|
148
|
+
resetConfig(): void;
|
|
149
|
+
/**
|
|
150
|
+
* Método de limpieza para eliminar listeners y liberar recursos
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* // Antes de cerrar la aplicación
|
|
154
|
+
* logger.cleanup();
|
|
155
|
+
*
|
|
156
|
+
* @since 0.3.0
|
|
157
|
+
*/
|
|
158
|
+
cleanup(): void;
|
|
159
|
+
/**
|
|
160
|
+
* Factory method para crear loggers con scope evitando dependencias circulares
|
|
161
|
+
* @private
|
|
162
|
+
* @param {string} type - Tipo de logger ('scope' | 'api' | 'component')
|
|
163
|
+
* @param {string} name - Nombre del scope
|
|
164
|
+
* @returns {Promise<any>} Logger con scope
|
|
165
|
+
*/
|
|
166
|
+
private createScopedLogger;
|
|
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
|
+
* Crea un logger para componentes con estilo automático
|
|
260
|
+
*
|
|
261
|
+
* @param {string} name - Nombre del componente
|
|
262
|
+
* @returns {ComponentLogger} Logger con scope de componente
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* const authLogger = logger.component('Autenticación');
|
|
266
|
+
* authLogger.info('Validando credenciales');
|
|
267
|
+
* // [COMPONENT] [Autenticación] Validando credenciales
|
|
268
|
+
*
|
|
269
|
+
* authLogger.success('Usuario autenticado');
|
|
270
|
+
* // [COMPONENT] [Autenticación] ✓ Usuario autenticado
|
|
271
|
+
*
|
|
272
|
+
* @since 0.3.0
|
|
273
|
+
*/
|
|
274
|
+
component(name: string): any;
|
|
275
|
+
/**
|
|
276
|
+
* Crea un logger para APIs con badges automáticos
|
|
277
|
+
*
|
|
278
|
+
* @param {string} name - Nombre de la API o endpoint
|
|
279
|
+
* @returns {APILogger} Logger con scope de API
|
|
280
|
+
*
|
|
281
|
+
* @example
|
|
282
|
+
* const api = logger.api('REST');
|
|
283
|
+
* api.info('GET /users');
|
|
284
|
+
* // [API] [REST] GET /users
|
|
285
|
+
*
|
|
286
|
+
* // Con badges adicionales
|
|
287
|
+
* api.badges(['v2', 'cached']).info('Respuesta desde caché');
|
|
288
|
+
* // [API] [v2] [cached] [REST] Respuesta desde caché
|
|
289
|
+
*
|
|
290
|
+
* @since 0.3.0
|
|
291
|
+
*/
|
|
292
|
+
api(name: string): any;
|
|
293
|
+
/**
|
|
294
|
+
* Crea un logger con scope general y soporte de badges
|
|
295
|
+
*
|
|
296
|
+
* @param {string} name - Nombre del scope
|
|
297
|
+
* @returns {ScopedLogger} Logger con scope personalizado
|
|
298
|
+
*
|
|
299
|
+
* @example
|
|
300
|
+
* const dbLogger = logger.scope('Database');
|
|
301
|
+
* dbLogger.info('Conectando a MongoDB');
|
|
302
|
+
* // [Database] Conectando a MongoDB
|
|
303
|
+
*
|
|
304
|
+
* // Con badges personalizados
|
|
305
|
+
* dbLogger.badge('SLOW').warn('Query tardó 5s');
|
|
306
|
+
* // [SLOW] [Database] Query tardó 5s
|
|
307
|
+
*
|
|
308
|
+
* @since 0.3.0
|
|
309
|
+
*/
|
|
310
|
+
scope(name: string): any;
|
|
311
|
+
/**
|
|
312
|
+
* Personalización simple con configuración mínima
|
|
313
|
+
*
|
|
314
|
+
* @param {Object} overrides - Opciones de personalización
|
|
315
|
+
* @param {Object} overrides.message - Configuración del mensaje
|
|
316
|
+
* @param {Object} overrides.timestamp - Configuración del timestamp
|
|
317
|
+
* @param {Object} overrides.location - Configuración de ubicación
|
|
318
|
+
* @param {Object} overrides.level - Configuración del nivel
|
|
319
|
+
* @param {Object} overrides.prefix - Configuración del prefijo
|
|
320
|
+
* @param {string} overrides.spacing - Espaciado: 'compact' | 'normal' | 'spacious'
|
|
321
|
+
*
|
|
322
|
+
* @example
|
|
323
|
+
* logger.customize({
|
|
324
|
+
* message: { color: '#00ff00', size: '16px' },
|
|
325
|
+
* timestamp: { show: false },
|
|
326
|
+
* spacing: 'compact'
|
|
327
|
+
* });
|
|
328
|
+
*
|
|
329
|
+
* @since 0.3.0
|
|
330
|
+
*/
|
|
331
|
+
customize(overrides: {
|
|
332
|
+
message?: {
|
|
333
|
+
color?: string;
|
|
334
|
+
font?: string;
|
|
335
|
+
size?: string;
|
|
336
|
+
};
|
|
337
|
+
timestamp?: {
|
|
338
|
+
show?: boolean;
|
|
339
|
+
color?: string;
|
|
340
|
+
};
|
|
341
|
+
location?: {
|
|
342
|
+
show?: boolean;
|
|
343
|
+
color?: string;
|
|
344
|
+
};
|
|
345
|
+
level?: {
|
|
346
|
+
uppercase?: boolean;
|
|
347
|
+
style?: string;
|
|
348
|
+
};
|
|
349
|
+
prefix?: {
|
|
350
|
+
show?: boolean;
|
|
351
|
+
style?: string;
|
|
352
|
+
};
|
|
353
|
+
spacing?: 'compact' | 'normal' | 'spacious';
|
|
354
|
+
}): void;
|
|
355
|
+
/**
|
|
356
|
+
* Access advanced styling API (for power users)
|
|
357
|
+
*/
|
|
358
|
+
styles(): any;
|
|
359
|
+
/**
|
|
360
|
+
* Añade un handler personalizado para extender funcionalidad
|
|
361
|
+
*
|
|
362
|
+
* @param {ILogHandler} handler - Handler que implementa ILogHandler
|
|
363
|
+
*
|
|
364
|
+
* @example
|
|
365
|
+
* // Handler personalizado para enviar logs a servidor
|
|
366
|
+
* const remoteHandler = new RemoteLogHandler('https://api.ejemplo.com/logs');
|
|
367
|
+
* logger.addHandler(remoteHandler);
|
|
368
|
+
*
|
|
369
|
+
* @example
|
|
370
|
+
* // Handler para guardar en archivo
|
|
371
|
+
* const fileHandler = new FileLogHandler('./app.log');
|
|
372
|
+
* logger.addHandler(fileHandler);
|
|
373
|
+
*
|
|
374
|
+
* @since 0.3.0
|
|
375
|
+
*/
|
|
376
|
+
addHandler(handler: ILogHandler): void;
|
|
377
|
+
/**
|
|
378
|
+
* Obtiene todos los handlers registrados
|
|
379
|
+
*
|
|
380
|
+
* @returns {ILogHandler[]} Array de handlers activos
|
|
381
|
+
* @since 0.3.0
|
|
382
|
+
*/
|
|
383
|
+
getHandlers(): ILogHandler[];
|
|
384
|
+
/**
|
|
385
|
+
* Obtiene el handler de exportación si está disponible
|
|
386
|
+
*
|
|
387
|
+
* @returns {ExportLogHandler | undefined} Handler de exportación o undefined
|
|
388
|
+
* @since 0.3.0
|
|
389
|
+
*/
|
|
390
|
+
getExportHandler(): ExportLogHandler | undefined;
|
|
391
|
+
/**
|
|
392
|
+
* Verifica si un nivel de log debe mostrarse según la verbosidad actual
|
|
393
|
+
* @private
|
|
394
|
+
* @param {LogLevel} level - Nivel de log a verificar
|
|
395
|
+
* @returns {boolean} True si debe mostrarse, false si no
|
|
396
|
+
*/
|
|
397
|
+
private shouldLog;
|
|
398
|
+
/**
|
|
399
|
+
* Obtiene el prefijo efectivo (global + scope)
|
|
400
|
+
* @private
|
|
401
|
+
* @returns {string | undefined} Prefijo combinado o undefined
|
|
402
|
+
*/
|
|
403
|
+
private getEffectivePrefix;
|
|
404
|
+
/**
|
|
405
|
+
* Método central de logging que maneja estilos y formato
|
|
406
|
+
* @protected
|
|
407
|
+
* @param {LogLevel} level - Nivel del log
|
|
408
|
+
* @param {...any} args - Argumentos a loggear
|
|
409
|
+
*/
|
|
410
|
+
protected log(level: LogLevel, ...args: any[]): void;
|
|
411
|
+
/**
|
|
412
|
+
* Registra información de debug (prioridad más baja)
|
|
413
|
+
*
|
|
414
|
+
* @param {...any} args - Mensajes y datos a loggear
|
|
415
|
+
*
|
|
416
|
+
* @example
|
|
417
|
+
* logger.debug('Variable estado:', { usuario: 'Juan', activo: true });
|
|
418
|
+
* logger.debug('Iniciando proceso de validación');
|
|
419
|
+
*
|
|
420
|
+
* @since 0.3.0
|
|
421
|
+
*/
|
|
422
|
+
debug(...args: any[]): void;
|
|
423
|
+
/**
|
|
424
|
+
* Registra mensajes informativos
|
|
425
|
+
*
|
|
426
|
+
* @param {...any} args - Mensajes y datos informativos
|
|
427
|
+
*
|
|
428
|
+
* @example
|
|
429
|
+
* logger.info('Servidor iniciado en puerto 3000');
|
|
430
|
+
* logger.info('Usuario conectado:', userId);
|
|
431
|
+
* logger.info('Procesando', totalItems, 'elementos');
|
|
432
|
+
*
|
|
433
|
+
* @since 0.3.0
|
|
434
|
+
*/
|
|
435
|
+
info(...args: any[]): void;
|
|
436
|
+
/**
|
|
437
|
+
* Registra mensajes de advertencia
|
|
438
|
+
*
|
|
439
|
+
* @param {...any} args - Mensajes de advertencia
|
|
440
|
+
*
|
|
441
|
+
* @example
|
|
442
|
+
* logger.warn('Memoria al 85% de capacidad');
|
|
443
|
+
* logger.warn('API deprecada, usar v2');
|
|
444
|
+
* logger.warn('Reintentos agotados:', maxRetries);
|
|
445
|
+
*
|
|
446
|
+
* @since 0.3.0
|
|
447
|
+
*/
|
|
448
|
+
warn(...args: any[]): void;
|
|
449
|
+
/**
|
|
450
|
+
* Registra mensajes de error
|
|
451
|
+
*
|
|
452
|
+
* @param {...any} args - Mensajes de error y stack traces
|
|
453
|
+
*
|
|
454
|
+
* @example
|
|
455
|
+
* logger.error('Fallo en conexión a base de datos');
|
|
456
|
+
* logger.error('Error al procesar:', error.message, error.stack);
|
|
457
|
+
* logger.error('Código de error:', errorCode);
|
|
458
|
+
*
|
|
459
|
+
* @since 0.3.0
|
|
460
|
+
*/
|
|
461
|
+
error(...args: any[]): void;
|
|
462
|
+
/**
|
|
463
|
+
* Registra mensajes de éxito (nivel info especial)
|
|
464
|
+
*
|
|
465
|
+
* @param {...any} args - Mensajes de operaciones exitosas
|
|
466
|
+
*
|
|
467
|
+
* @example
|
|
468
|
+
* logger.success('Base de datos conectada');
|
|
469
|
+
* logger.success('Usuario creado con ID:', userId);
|
|
470
|
+
* logger.success('✓ Tests pasados: 42/42');
|
|
471
|
+
*
|
|
472
|
+
* @since 0.3.0
|
|
473
|
+
*/
|
|
474
|
+
success(...args: any[]): void;
|
|
475
|
+
/**
|
|
476
|
+
* Registra información de trace (debugging detallado)
|
|
477
|
+
*
|
|
478
|
+
* @param {...any} args - Datos detallados para debugging
|
|
479
|
+
*
|
|
480
|
+
* @example
|
|
481
|
+
* logger.trace('Entrando en función processData');
|
|
482
|
+
* logger.trace('Stack completo:', new Error().stack);
|
|
483
|
+
*
|
|
484
|
+
* @since 0.3.0
|
|
485
|
+
*/
|
|
486
|
+
trace(...args: any[]): void;
|
|
487
|
+
/**
|
|
488
|
+
* Registra errores críticos (prioridad más alta)
|
|
489
|
+
*
|
|
490
|
+
* @param {...any} args - Errores críticos del sistema
|
|
491
|
+
*
|
|
492
|
+
* @example
|
|
493
|
+
* logger.critical('Sistema caído - reinicio inmediato requerido');
|
|
494
|
+
* logger.critical('Pérdida de datos detectada');
|
|
495
|
+
* logger.critical('Brecha de seguridad:', securityError);
|
|
496
|
+
*
|
|
497
|
+
* @since 0.3.0
|
|
498
|
+
*/
|
|
499
|
+
critical(...args: any[]): void;
|
|
500
|
+
/**
|
|
501
|
+
* Muestra datos en formato de tabla
|
|
502
|
+
*
|
|
503
|
+
* @param {any} data - Datos a mostrar (array de objetos o matriz)
|
|
504
|
+
* @param {string[]} columns - Columnas específicas a mostrar (opcional)
|
|
505
|
+
*
|
|
506
|
+
* @example
|
|
507
|
+
* const usuarios = [
|
|
508
|
+
* { id: 1, nombre: 'Juan', edad: 30 },
|
|
509
|
+
* { id: 2, nombre: 'María', edad: 25 }
|
|
510
|
+
* ];
|
|
511
|
+
* logger.table(usuarios);
|
|
512
|
+
* logger.table(usuarios, ['nombre', 'edad']); // Solo estas columnas
|
|
513
|
+
*
|
|
514
|
+
* @since 0.3.0
|
|
515
|
+
*/
|
|
516
|
+
table(data: any, columns?: string[]): void;
|
|
517
|
+
/**
|
|
518
|
+
* Inicia un grupo colapsable en la consola
|
|
519
|
+
*
|
|
520
|
+
* @param {string} label - Etiqueta del grupo
|
|
521
|
+
* @param {boolean} collapsed - Si el grupo inicia colapsado (default: false)
|
|
522
|
+
*
|
|
523
|
+
* @example
|
|
524
|
+
* logger.group('Procesando usuarios');
|
|
525
|
+
* logger.info('Usuario 1 procesado');
|
|
526
|
+
* logger.info('Usuario 2 procesado');
|
|
527
|
+
* logger.groupEnd();
|
|
528
|
+
*
|
|
529
|
+
* @example
|
|
530
|
+
* // Grupo colapsado por defecto
|
|
531
|
+
* logger.group('Detalles adicionales', true);
|
|
532
|
+
* logger.debug('Información detallada aquí');
|
|
533
|
+
* logger.groupEnd();
|
|
534
|
+
*
|
|
535
|
+
* @since 0.3.0
|
|
536
|
+
*/
|
|
537
|
+
group(label: string, collapsed?: boolean): void;
|
|
538
|
+
/**
|
|
539
|
+
* Finaliza el grupo actual de la consola
|
|
540
|
+
*
|
|
541
|
+
* @example
|
|
542
|
+
* logger.group('Operaciones');
|
|
543
|
+
* logger.info('Operación 1');
|
|
544
|
+
* logger.info('Operación 2');
|
|
545
|
+
* logger.groupEnd(); // Cierra el grupo
|
|
546
|
+
*
|
|
547
|
+
* @since 0.3.0
|
|
548
|
+
*/
|
|
549
|
+
groupEnd(): void;
|
|
550
|
+
/**
|
|
551
|
+
* Inicia un temporizador con la etiqueta dada
|
|
552
|
+
*
|
|
553
|
+
* @param {string} label - Etiqueta identificadora del temporizador
|
|
554
|
+
*
|
|
555
|
+
* @example
|
|
556
|
+
* logger.time('proceso-datos');
|
|
557
|
+
* // ... operación costosa ...
|
|
558
|
+
* logger.timeEnd('proceso-datos'); // ⏱️ Timer ended: proceso-datos - 1523.45ms
|
|
559
|
+
*
|
|
560
|
+
* @since 0.3.0
|
|
561
|
+
*/
|
|
562
|
+
time(label: string): void;
|
|
563
|
+
/**
|
|
564
|
+
* Finaliza un temporizador y muestra el tiempo transcurrido
|
|
565
|
+
*
|
|
566
|
+
* @param {string} label - Etiqueta del temporizador a finalizar
|
|
567
|
+
*
|
|
568
|
+
* @example
|
|
569
|
+
* logger.time('consulta-db');
|
|
570
|
+
* await consultarBaseDatos();
|
|
571
|
+
* logger.timeEnd('consulta-db'); // ⏱️ Timer ended: consulta-db - 234.56ms
|
|
572
|
+
*
|
|
573
|
+
* @since 0.3.0
|
|
574
|
+
*/
|
|
575
|
+
timeEnd(label: string): void;
|
|
576
|
+
/**
|
|
577
|
+
* Muestra un banner con el tipo especificado o configurado
|
|
578
|
+
*
|
|
579
|
+
* @param {BannerType} bannerType - Tipo de banner (opcional)
|
|
580
|
+
*
|
|
581
|
+
* @example
|
|
582
|
+
* logger.showBanner('ascii'); // Banner ASCII art
|
|
583
|
+
* logger.showBanner('unicode'); // Banner con caracteres Unicode
|
|
584
|
+
* logger.showBanner('svg'); // Banner con gráfico SVG
|
|
585
|
+
* logger.showBanner(); // Usa el tipo configurado
|
|
586
|
+
*
|
|
587
|
+
* @since 0.3.0
|
|
588
|
+
*/
|
|
589
|
+
showBanner(bannerType?: BannerType): void;
|
|
590
|
+
/**
|
|
591
|
+
* Registra mensaje con imagen SVG de fondo
|
|
592
|
+
*
|
|
593
|
+
* @param {string} message - Mensaje a mostrar
|
|
594
|
+
* @param {string} svgContent - Contenido SVG personalizado (opcional)
|
|
595
|
+
* @param {StyleOptions} options - Opciones de estilo (ancho, alto, padding)
|
|
596
|
+
*
|
|
597
|
+
* @example
|
|
598
|
+
* // SVG automático con gradiente
|
|
599
|
+
* logger.logWithSVG('🎆 Bienvenido a Better Logger');
|
|
600
|
+
*
|
|
601
|
+
* @example
|
|
602
|
+
* // SVG personalizado
|
|
603
|
+
* const customSVG = '<svg>...</svg>';
|
|
604
|
+
* logger.logWithSVG('Logo', customSVG, { width: 400, height: 100 });
|
|
605
|
+
*
|
|
606
|
+
* @since 0.3.0
|
|
607
|
+
*/
|
|
608
|
+
logWithSVG(message: string, svgContent?: string, options?: StyleOptions): void;
|
|
609
|
+
/**
|
|
610
|
+
* Registra mensaje con gradiente animado de fondo
|
|
611
|
+
*
|
|
612
|
+
* @param {string} message - Mensaje a animar
|
|
613
|
+
* @param {number} duration - Duración de la animación en segundos (default: 3)
|
|
614
|
+
*
|
|
615
|
+
* @example
|
|
616
|
+
* logger.logAnimated('🌈 Animación en progreso');
|
|
617
|
+
* logger.logAnimated('Cargando...', 5); // Animación de 5 segundos
|
|
618
|
+
*
|
|
619
|
+
* @since 0.3.0
|
|
620
|
+
*/
|
|
621
|
+
logAnimated(message: string, duration?: number): void;
|
|
622
|
+
/**
|
|
623
|
+
* Agrupa logs por una propiedad específica usando Object.groupBy (cuando esté disponible)
|
|
624
|
+
*
|
|
625
|
+
* @param {T[]} items - Array de elementos a agrupar
|
|
626
|
+
* @param {Function} groupBy - Función que retorna la clave de agrupación
|
|
627
|
+
*
|
|
628
|
+
* @example
|
|
629
|
+
* const ventas = [
|
|
630
|
+
* { producto: 'Laptop', categoria: 'Electrónica', precio: 1200 },
|
|
631
|
+
* { producto: 'Mouse', categoria: 'Electrónica', precio: 25 },
|
|
632
|
+
* { producto: 'Libro', categoria: 'Literatura', precio: 15 }
|
|
633
|
+
* ];
|
|
634
|
+
* logger.logGrouped(ventas, item => item.categoria);
|
|
635
|
+
*
|
|
636
|
+
* @since 0.3.0
|
|
637
|
+
*/
|
|
638
|
+
logGrouped<T>(items: T[], groupBy: (item: T) => string): void;
|
|
639
|
+
/**
|
|
640
|
+
* Procesador de comandos CLI para configuración y exportación del logger
|
|
641
|
+
*
|
|
642
|
+
* @param {string} command - Comando CLI a ejecutar
|
|
643
|
+
* @returns {Promise<void>}
|
|
644
|
+
*
|
|
645
|
+
* @example
|
|
646
|
+
* // Comandos disponibles
|
|
647
|
+
* await logger.cli('export json'); // Exporta logs en JSON
|
|
648
|
+
* await logger.cli('export csv'); // Exporta logs en CSV
|
|
649
|
+
* await logger.cli('theme list'); // Lista temas disponibles
|
|
650
|
+
* await logger.cli('theme set neon'); // Cambia al tema neon
|
|
651
|
+
* await logger.cli('config show'); // Muestra configuración actual
|
|
652
|
+
* await logger.cli('history clear'); // Limpia historial de logs
|
|
653
|
+
* await logger.cli('status'); // Muestra estado del logger
|
|
654
|
+
* await logger.cli('help'); // Muestra ayuda de comandos
|
|
655
|
+
*
|
|
656
|
+
* @since 0.3.0
|
|
657
|
+
*/
|
|
658
|
+
cli(command: string): Promise<void>;
|
|
659
|
+
}
|
|
660
|
+
declare const _default: Logger;
|
|
661
|
+
export default _default;
|
|
662
|
+
/**
|
|
663
|
+
* Métodos individuales exportados para conveniencia
|
|
664
|
+
* @description Todos los métodos están correctamente enlazados al singleton lazy
|
|
665
|
+
* @since 0.3.0
|
|
666
|
+
*/
|
|
667
|
+
export declare const debug: (...args: any[]) => void;
|
|
668
|
+
export declare const info: (...args: any[]) => void;
|
|
669
|
+
export declare const warn: (...args: any[]) => void;
|
|
670
|
+
export declare const error: (...args: any[]) => void;
|
|
671
|
+
export declare const success: (...args: any[]) => void;
|
|
672
|
+
export declare const trace: (...args: any[]) => void;
|
|
673
|
+
export declare const critical: (...args: any[]) => void;
|
|
674
|
+
export declare const table: (data: any, columns?: string[]) => void;
|
|
675
|
+
export declare const group: (label: string, collapsed?: boolean) => void;
|
|
676
|
+
export declare const groupEnd: () => void;
|
|
677
|
+
export declare const time: (label: string) => void;
|
|
678
|
+
export declare const timeEnd: (label: string) => void;
|
|
679
|
+
export declare const setGlobalPrefix: (prefix: string) => void;
|
|
680
|
+
export declare const setVerbosity: (level: Verbosity) => void;
|
|
681
|
+
export declare const addHandler: (handler: ILogHandler) => void;
|
|
682
|
+
export declare const setTheme: (theme: ThemeVariant) => void;
|
|
683
|
+
export declare const setBannerType: (bannerType: BannerType) => void;
|
|
684
|
+
export declare const showBanner: (bannerType?: BannerType) => void;
|
|
685
|
+
export declare const logWithSVG: (message: string, svgContent?: string, options?: StyleOptions) => void;
|
|
686
|
+
export declare const logAnimated: (message: string, duration?: number) => void;
|
|
687
|
+
export declare const cli: (command: string) => Promise<void>;
|
|
688
|
+
export declare const cleanup: () => void;
|
|
689
|
+
export declare const preset: (name: string) => void;
|
|
690
|
+
export declare const presets: () => string[];
|
|
691
|
+
export declare const hideTimestamp: () => void;
|
|
692
|
+
export declare const showTimestamp: () => void;
|
|
693
|
+
export declare const hideLocation: () => void;
|
|
694
|
+
export declare const showLocation: () => void;
|
|
695
|
+
export declare const hideBadges: () => void;
|
|
696
|
+
export declare const showBadges: () => void;
|
|
697
|
+
export declare const component: (name: string) => any;
|
|
698
|
+
export declare const api: (name: string) => any;
|
|
699
|
+
export declare const scope: (name: string) => any;
|
|
700
|
+
export declare const customize: (overrides: any) => void;
|
|
701
|
+
export declare const styles: () => any;
|
|
702
|
+
export { FileLogHandler, RemoteLogHandler, AnalyticsLogHandler, ExportLogHandler } from './handlers/index.js';
|
|
703
|
+
export { StyleBuilder, StylePresets as Styles } from './styling/index.js';
|
|
704
|
+
//# sourceMappingURL=Logger.d.ts.map
|