@mks2508/better-logger 0.14.0-alpha.1 → 1.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 (145) hide show
  1. package/dist/chunks/{Logger-BW-kn5_7.js → Logger-CTAaDeZi.js} +49 -366
  2. package/dist/chunks/Logger-CTAaDeZi.js.map +1 -0
  3. package/dist/chunks/Logger-D8pK7XXt.js +2 -0
  4. package/dist/chunks/Logger-D8pK7XXt.js.map +1 -0
  5. package/dist/chunks/ScopedLogger-D-7q8uVP.js +2 -0
  6. package/dist/chunks/ScopedLogger-D-7q8uVP.js.map +1 -0
  7. package/dist/chunks/ScopedLogger-hS0qSkZD.js +361 -0
  8. package/dist/chunks/ScopedLogger-hS0qSkZD.js.map +1 -0
  9. package/dist/core.js +280 -307
  10. package/dist/exports.cjs +1 -1
  11. package/dist/exports.js +1 -1
  12. package/dist/index.cjs +1 -1
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.js +226 -159
  15. package/dist/index.js.map +1 -1
  16. package/dist/styling.cjs +1 -1
  17. package/dist/styling.js +2 -2
  18. package/dist/types/Logger.d.ts +17 -15
  19. package/dist/types/Logger.d.ts.map +1 -1
  20. package/dist/types/core.d.ts +122 -216
  21. package/dist/types/core.d.ts.map +1 -1
  22. package/dist/types/exports-module.d.ts +1 -1
  23. package/dist/types/exports-module.d.ts.map +1 -1
  24. package/dist/types/index.d.ts +119 -4
  25. package/dist/types/index.d.ts.map +1 -1
  26. package/dist/types/styling-module.d.ts +1 -1
  27. package/dist/types/styling-module.d.ts.map +1 -1
  28. package/package.json +2 -1
  29. package/src/Logger.ts +105 -58
  30. package/src/index.ts +32 -25
  31. package/dist/.tsbuildinfo +0 -1
  32. package/dist/Logger.d.ts +0 -710
  33. package/dist/Logger.d.ts.map +0 -1
  34. package/dist/Logger.js +0 -1118
  35. package/dist/ScopedLogger.d.ts +0 -318
  36. package/dist/ScopedLogger.d.ts.map +0 -1
  37. package/dist/ScopedLogger.js +0 -426
  38. package/dist/chunks/Logger-BW-kn5_7.js.map +0 -1
  39. package/dist/chunks/Logger-BpeuYIxR.js +0 -2
  40. package/dist/chunks/Logger-BpeuYIxR.js.map +0 -1
  41. package/dist/cli/CommandProcessor.d.ts +0 -103
  42. package/dist/cli/CommandProcessor.d.ts.map +0 -1
  43. package/dist/cli/CommandProcessor.js +0 -184
  44. package/dist/cli/commands/ConfigCommand.d.ts +0 -17
  45. package/dist/cli/commands/ConfigCommand.d.ts.map +0 -1
  46. package/dist/cli/commands/ConfigCommand.js +0 -88
  47. package/dist/cli/commands/ExportCommand.d.ts +0 -51
  48. package/dist/cli/commands/ExportCommand.d.ts.map +0 -1
  49. package/dist/cli/commands/ExportCommand.js +0 -243
  50. package/dist/cli/commands/HistoryCommand.d.ts +0 -50
  51. package/dist/cli/commands/HistoryCommand.d.ts.map +0 -1
  52. package/dist/cli/commands/HistoryCommand.js +0 -96
  53. package/dist/cli/commands/StatusCommand.d.ts +0 -33
  54. package/dist/cli/commands/StatusCommand.d.ts.map +0 -1
  55. package/dist/cli/commands/StatusCommand.js +0 -93
  56. package/dist/cli/commands/ThemeCommand.d.ts +0 -33
  57. package/dist/cli/commands/ThemeCommand.d.ts.map +0 -1
  58. package/dist/cli/commands/ThemeCommand.js +0 -79
  59. package/dist/cli/help.d.ts +0 -15
  60. package/dist/cli/help.d.ts.map +0 -1
  61. package/dist/cli/help.js +0 -118
  62. package/dist/cli/index.d.ts +0 -15
  63. package/dist/cli/index.d.ts.map +0 -1
  64. package/dist/cli/index.js +0 -46
  65. package/dist/constants.d.ts +0 -122
  66. package/dist/constants.d.ts.map +0 -1
  67. package/dist/constants.js +0 -159
  68. package/dist/core.d.ts +0 -134
  69. package/dist/core.d.ts.map +0 -1
  70. package/dist/example.d.ts +0 -18
  71. package/dist/example.d.ts.map +0 -1
  72. package/dist/example.js +0 -154
  73. package/dist/exports-module.d.ts +0 -203
  74. package/dist/exports-module.d.ts.map +0 -1
  75. package/dist/exports-module.js +0 -260
  76. package/dist/handlers/AnalyticsLogHandler.d.ts +0 -11
  77. package/dist/handlers/AnalyticsLogHandler.d.ts.map +0 -1
  78. package/dist/handlers/AnalyticsLogHandler.js +0 -19
  79. package/dist/handlers/ExportLogHandler.d.ts +0 -103
  80. package/dist/handlers/ExportLogHandler.d.ts.map +0 -1
  81. package/dist/handlers/ExportLogHandler.js +0 -516
  82. package/dist/handlers/FileLogHandler.d.ts +0 -36
  83. package/dist/handlers/FileLogHandler.d.ts.map +0 -1
  84. package/dist/handlers/FileLogHandler.js +0 -156
  85. package/dist/handlers/RemoteLogHandler.d.ts +0 -14
  86. package/dist/handlers/RemoteLogHandler.d.ts.map +0 -1
  87. package/dist/handlers/RemoteLogHandler.js +0 -37
  88. package/dist/handlers/index.d.ts +0 -8
  89. package/dist/handlers/index.d.ts.map +0 -1
  90. package/dist/handlers/index.js +0 -7
  91. package/dist/index.d.ts +0 -157
  92. package/dist/index.d.ts.map +0 -1
  93. package/dist/main.d.ts +0 -2
  94. package/dist/main.d.ts.map +0 -1
  95. package/dist/main.js +0 -139
  96. package/dist/styling/LogStyleBuilder.d.ts +0 -149
  97. package/dist/styling/LogStyleBuilder.d.ts.map +0 -1
  98. package/dist/styling/LogStyleBuilder.js +0 -289
  99. package/dist/styling/SemanticStyles.d.ts +0 -181
  100. package/dist/styling/SemanticStyles.d.ts.map +0 -1
  101. package/dist/styling/SemanticStyles.js +0 -339
  102. package/dist/styling/SmartPresets.d.ts +0 -25
  103. package/dist/styling/SmartPresets.d.ts.map +0 -1
  104. package/dist/styling/SmartPresets.js +0 -276
  105. package/dist/styling/StyleBuilder.d.ts +0 -140
  106. package/dist/styling/StyleBuilder.d.ts.map +0 -1
  107. package/dist/styling/StyleBuilder.js +0 -280
  108. package/dist/styling/banners.d.ts +0 -45
  109. package/dist/styling/banners.d.ts.map +0 -1
  110. package/dist/styling/banners.js +0 -155
  111. package/dist/styling/index.d.ts +0 -10
  112. package/dist/styling/index.d.ts.map +0 -1
  113. package/dist/styling/index.js +0 -9
  114. package/dist/styling/themes.d.ts +0 -10
  115. package/dist/styling/themes.d.ts.map +0 -1
  116. package/dist/styling/themes.js +0 -231
  117. package/dist/styling-module.d.ts +0 -185
  118. package/dist/styling-module.d.ts.map +0 -1
  119. package/dist/styling-module.js +0 -199
  120. package/dist/types/core.js +0 -28
  121. package/dist/types/handlers.d.ts +0 -88
  122. package/dist/types/handlers.d.ts.map +0 -1
  123. package/dist/types/handlers.js +0 -4
  124. package/dist/types/index.js +0 -4
  125. package/dist/utils/environment.d.ts +0 -47
  126. package/dist/utils/environment.d.ts.map +0 -1
  127. package/dist/utils/environment.js +0 -85
  128. package/dist/utils/formatting.d.ts +0 -40
  129. package/dist/utils/formatting.d.ts.map +0 -1
  130. package/dist/utils/formatting.js +0 -117
  131. package/dist/utils/index.d.ts +0 -7
  132. package/dist/utils/index.d.ts.map +0 -1
  133. package/dist/utils/index.js +0 -6
  134. package/dist/utils/opentui-detection.d.ts +0 -34
  135. package/dist/utils/opentui-detection.d.ts.map +0 -1
  136. package/dist/utils/opentui-detection.js +0 -116
  137. package/dist/utils/output.d.ts +0 -44
  138. package/dist/utils/output.d.ts.map +0 -1
  139. package/dist/utils/output.js +0 -150
  140. package/dist/utils/stackTrace.d.ts +0 -9
  141. package/dist/utils/stackTrace.d.ts.map +0 -1
  142. package/dist/utils/stackTrace.js +0 -81
  143. package/dist/utils/timestamps.d.ts +0 -20
  144. package/dist/utils/timestamps.d.ts.map +0 -1
  145. package/dist/utils/timestamps.js +0 -71
@@ -1,318 +0,0 @@
1
- /**
2
- * @fileoverview ScopedLogger con badges y logging contextual
3
- * @version 0.3.0
4
- * @since 2024
5
- *
6
- * Proporciona loggers especializados con contexto, badges automáticos
7
- * y características avanzadas para componentes y APIs.
8
- */
9
- import { Logger } from './Logger.js';
10
- import type { LoggerConfig, LogLevel } from './types/index.js';
11
- /**
12
- * Logger con scope mejorado con badges y API simplificada
13
- *
14
- * @class ScopedLogger
15
- * @extends Logger
16
- * @description Logger contextual que añade prefijos y badges automáticamente
17
- *
18
- * @example
19
- * const dbLogger = logger.scope('Database');
20
- * dbLogger.info('Conectando...'); // [Database] Conectando...
21
- *
22
- * // Con badges personalizados
23
- * dbLogger.badge('SLOW').warn('Query lenta detectada');
24
- * // [SLOW] [Database] Query lenta detectada
25
- *
26
- * @since 0.3.0
27
- */
28
- export declare class ScopedLogger extends Logger {
29
- private parentLogger;
30
- private scopeName;
31
- private badgeList;
32
- private contextStack;
33
- constructor(parentLogger: Logger, scopeName: string, config?: Partial<LoggerConfig>);
34
- /**
35
- * Añade múltiples badges a este logger con scope
36
- *
37
- * @param {string[]} badges - Array de badges a añadir
38
- * @returns {ScopedLogger} Esta instancia para encadenamiento
39
- *
40
- * @example
41
- * const api = logger.scope('API');
42
- * api.badges(['v2', 'beta', 'cached'])
43
- * .info('Respuesta desde caché');
44
- * // [v2] [beta] [cached] [API] Respuesta desde caché
45
- *
46
- * @since 0.3.0
47
- */
48
- badges(badges: string[]): ScopedLogger;
49
- /**
50
- * Añade un badge individual
51
- *
52
- * @param {string} badge - Badge a añadir
53
- * @returns {ScopedLogger} Esta instancia para encadenamiento
54
- *
55
- * @example
56
- * dbLogger.badge('SLOW').warn('Query tardó 3s');
57
- * // [SLOW] [Database] Query tardó 3s
58
- *
59
- * @since 0.3.0
60
- */
61
- badge(badge: string): ScopedLogger;
62
- /**
63
- * Elimina todos los badges
64
- *
65
- * @returns {ScopedLogger} Esta instancia para encadenamiento
66
- *
67
- * @example
68
- * api.clearBadges().info('Sin badges');
69
- * // [API] Sin badges
70
- *
71
- * @since 0.3.0
72
- */
73
- clearBadges(): ScopedLogger;
74
- /**
75
- * Establece un preset de estilo para este logger con scope
76
- *
77
- * @param {string} presetName - Nombre del preset a aplicar
78
- * @returns {ScopedLogger} Esta instancia para encadenamiento
79
- *
80
- * @example
81
- * const errorLogger = logger.scope('ErrorHandler')
82
- * .style('cyberpunk');
83
- *
84
- * @since 0.3.0
85
- */
86
- style(presetName: string): ScopedLogger;
87
- /**
88
- * Crea un contexto temporal que se limpia automáticamente
89
- *
90
- * @param {string} contextName - Nombre del contexto
91
- * @returns {ContextLogger} Logger con contexto temporal
92
- *
93
- * @example
94
- * const db = logger.scope('Database');
95
- *
96
- * // Contexto temporal para una operación
97
- * db.context('Migration').run(() => {
98
- * db.info('Iniciando migración');
99
- * db.success('Tablas creadas');
100
- * });
101
- * // Contexto automáticamente limpiado
102
- *
103
- * @since 0.3.0
104
- */
105
- context(contextName: string): ContextLogger;
106
- /**
107
- * Sobrescribe el logging principal para incluir badges
108
- * @protected
109
- * @param {LogLevel} level - Nivel del log
110
- * @param {...any} args - Argumentos del log
111
- */
112
- protected log(level: LogLevel, ...args: any[]): void;
113
- /**
114
- * Obtiene la cadena de badges formateada
115
- * @private
116
- * @returns {string} Badges formateados como [BADGE1][BADGE2]
117
- */
118
- private getBadgeString;
119
- /**
120
- * Obtiene el prefijo del scope (incluye stack de contexto)
121
- * @private
122
- * @returns {string} Prefijo completo con contextos
123
- */
124
- private getScopePrefix;
125
- /**
126
- * Método interno para añadir contexto
127
- * @internal
128
- */
129
- _pushContext(context: string): void;
130
- /**
131
- * Método interno para eliminar contexto
132
- * @internal
133
- */
134
- _popContext(): void;
135
- }
136
- /**
137
- * Logger específico para APIs con badges comunes de API
138
- *
139
- * @class APILogger
140
- * @extends ScopedLogger
141
- * @description Logger especializado para endpoints y servicios API
142
- *
143
- * @example
144
- * const api = logger.api('REST');
145
- * api.info('GET /users');
146
- * // [API] [REST] GET /users
147
- *
148
- * api.slow('Query lenta', 3500);
149
- * // [API] [SLOW] [REST] Query lenta (3500ms)
150
- *
151
- * @since 0.3.0
152
- */
153
- export declare class APILogger extends ScopedLogger {
154
- constructor(parentLogger: Logger, apiName: string, config?: Partial<LoggerConfig>);
155
- /**
156
- * Registra operaciones lentas
157
- *
158
- * @param {string} message - Mensaje sobre la operación lenta
159
- * @param {number} duration - Duración en milisegundos (opcional)
160
- *
161
- * @example
162
- * api.slow('Query compleja', 5000);
163
- * api.slow('Procesamiento pesado');
164
- *
165
- * @since 0.3.0
166
- */
167
- slow(message: string, duration?: number): void;
168
- /**
169
- * Registra límites de tasa alcanzados
170
- *
171
- * @param {string} message - Mensaje sobre el límite
172
- *
173
- * @example
174
- * api.rateLimit('Límite excedido: 100 req/min');
175
- *
176
- * @since 0.3.0
177
- */
178
- rateLimit(message: string): void;
179
- /**
180
- * Registra problemas de autenticación
181
- *
182
- * @param {string} message - Mensaje de autenticación
183
- *
184
- * @example
185
- * api.auth('Token inválido o expirado');
186
- * api.auth('Credenciales incorrectas');
187
- *
188
- * @since 0.3.0
189
- */
190
- auth(message: string): void;
191
- /**
192
- * Registra advertencias de deprecación
193
- *
194
- * @param {string} message - Mensaje de deprecación
195
- *
196
- * @example
197
- * api.deprecated('Este endpoint será eliminado en v2.0');
198
- * api.deprecated('Usar /v2/users en lugar de /users');
199
- *
200
- * @since 0.3.0
201
- */
202
- deprecated(message: string): void;
203
- }
204
- /**
205
- * Logger específico para componentes de UI
206
- *
207
- * @class ComponentLogger
208
- * @extends ScopedLogger
209
- * @description Logger especializado para componentes con eventos de ciclo de vida
210
- *
211
- * @example
212
- * const authForm = logger.component('AuthForm');
213
- * authForm.lifecycle('mounted');
214
- * authForm.stateChange('idle', 'loading');
215
- *
216
- * @since 0.3.0
217
- */
218
- export declare class ComponentLogger extends ScopedLogger {
219
- constructor(parentLogger: Logger, componentName: string, config?: Partial<LoggerConfig>);
220
- /**
221
- * Registra eventos del ciclo de vida del componente
222
- *
223
- * @param {string} event - Nombre del evento (mounted, unmounted, updated, etc)
224
- * @param {string} message - Mensaje adicional (opcional)
225
- *
226
- * @example
227
- * component.lifecycle('mounted', 'Componente listo');
228
- * component.lifecycle('beforeDestroy');
229
- *
230
- * @since 0.3.0
231
- */
232
- lifecycle(event: string, message?: string): void;
233
- /**
234
- * Registra cambios de estado
235
- *
236
- * @param {string} from - Estado anterior
237
- * @param {string} to - Estado nuevo
238
- * @param {any} data - Datos adicionales (opcional)
239
- *
240
- * @example
241
- * component.stateChange('idle', 'loading');
242
- * component.stateChange('loading', 'error', { code: 404 });
243
- *
244
- * @since 0.3.0
245
- */
246
- stateChange(from: string, to: string, data?: any): void;
247
- /**
248
- * Registra cambios en las propiedades
249
- *
250
- * @param {Record<string, any>} changes - Objeto con los cambios
251
- *
252
- * @example
253
- * component.propsChange({
254
- * user: newUser,
255
- * isActive: true
256
- * });
257
- *
258
- * @since 0.3.0
259
- */
260
- propsChange(changes: Record<string, any>): void;
261
- }
262
- /**
263
- * Logger de contexto temporal que se limpia automáticamente
264
- *
265
- * @class ContextLogger
266
- * @description Proporciona un contexto temporal para operaciones agrupadas
267
- *
268
- * @example
269
- * const db = logger.scope('Database');
270
- *
271
- * // El contexto se limpia automáticamente al finalizar
272
- * db.context('Transaction').run(() => {
273
- * db.info('Iniciando transacción');
274
- * db.success('Transacción completada');
275
- * });
276
- *
277
- * @since 0.3.0
278
- */
279
- export declare class ContextLogger {
280
- private parentLogger;
281
- private contextName;
282
- constructor(parentLogger: ScopedLogger, contextName: string);
283
- /**
284
- * Ejecuta una función con este contexto activo
285
- *
286
- * @template T - Tipo de retorno de la función
287
- * @param {Function} fn - Función a ejecutar
288
- * @returns {T} Resultado de la función
289
- *
290
- * @example
291
- * const result = logger.context('Process').run(() => {
292
- * logger.info('Procesando...');
293
- * return processData();
294
- * });
295
- *
296
- * @since 0.3.0
297
- */
298
- run<T>(fn: () => T): T;
299
- /**
300
- * Run an async function with this context active
301
- */
302
- runAsync<T>(fn: () => Promise<T>): Promise<T>;
303
- /**
304
- * Start the context (manual mode)
305
- */
306
- start(): void;
307
- /**
308
- * End the context (manual mode)
309
- */
310
- end(): void;
311
- debug(...args: any[]): void;
312
- info(...args: any[]): void;
313
- warn(...args: any[]): void;
314
- error(...args: any[]): void;
315
- success(...args: any[]): void;
316
- critical(...args: any[]): void;
317
- }
318
- //# sourceMappingURL=ScopedLogger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ScopedLogger.d.ts","sourceRoot":"","sources":["../src/ScopedLogger.ts"],"names":[],"mappings":"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"}