@mks2508/better-logger 0.12.0-alpha.1 → 0.13.0-alpha.1

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 (130) hide show
  1. package/CHANGELOG.json +18 -1
  2. package/README.md +70 -6
  3. package/dist/Logger.d.ts +101 -5
  4. package/dist/Logger.d.ts.map +1 -1
  5. package/dist/Logger.js +198 -16
  6. package/dist/ScopedLogger.d.ts +126 -0
  7. package/dist/ScopedLogger.d.ts.map +1 -0
  8. package/dist/ScopedLogger.js +234 -0
  9. package/dist/chunks/{Logger-CVwk8cgA.js → Logger-C9rpLMQi.js} +1220 -22
  10. package/dist/chunks/Logger-C9rpLMQi.js.map +1 -0
  11. package/dist/chunks/Logger-ixFndDfJ.js +2 -0
  12. package/dist/chunks/Logger-ixFndDfJ.js.map +1 -0
  13. package/dist/chunks/StyleBuilder-BZbXkD4y.js +4 -0
  14. package/dist/chunks/{StyleBuilder-LPLzsoHY.js.map → StyleBuilder-BZbXkD4y.js.map} +1 -1
  15. package/dist/chunks/{StyleBuilder-BoJTmskd.js → StyleBuilder-D9UozmKq.js} +38 -2
  16. package/dist/chunks/StyleBuilder-D9UozmKq.js.map +1 -0
  17. package/dist/constants.d.ts +26 -0
  18. package/dist/constants.d.ts.map +1 -1
  19. package/dist/constants.js +26 -0
  20. package/dist/core.cjs +1 -1
  21. package/dist/core.cjs.map +1 -1
  22. package/dist/core.d.ts +2 -2
  23. package/dist/core.d.ts.map +1 -1
  24. package/dist/core.js +2 -2
  25. package/dist/core.js.map +1 -1
  26. package/dist/example.js +4 -4
  27. package/dist/exports-module.d.ts +1 -1
  28. package/dist/exports-module.d.ts.map +1 -1
  29. package/dist/exports-module.js +1 -1
  30. package/dist/exports.cjs +1 -1
  31. package/dist/exports.cjs.map +1 -1
  32. package/dist/exports.js +3 -3
  33. package/dist/exports.js.map +1 -1
  34. package/dist/index.cjs +1 -1
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.ts +1 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +1 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/main.js +3 -3
  41. package/dist/styling/LogStyleBuilder.d.ts +149 -0
  42. package/dist/styling/LogStyleBuilder.d.ts.map +1 -0
  43. package/dist/styling/LogStyleBuilder.js +289 -0
  44. package/dist/styling/SemanticStyles.d.ts +181 -0
  45. package/dist/styling/SemanticStyles.d.ts.map +1 -0
  46. package/dist/styling/SemanticStyles.js +339 -0
  47. package/dist/styling/SmartPresets.d.ts +25 -0
  48. package/dist/styling/SmartPresets.d.ts.map +1 -0
  49. package/dist/styling/SmartPresets.js +276 -0
  50. package/dist/styling/StyleBuilder.d.ts +8 -0
  51. package/dist/styling/StyleBuilder.d.ts.map +1 -1
  52. package/dist/styling/StyleBuilder.js +12 -0
  53. package/dist/styling/index.d.ts +3 -0
  54. package/dist/styling/index.d.ts.map +1 -1
  55. package/dist/styling/index.js +3 -0
  56. package/dist/styling-module.d.ts +1 -1
  57. package/dist/styling-module.d.ts.map +1 -1
  58. package/dist/styling-module.js +1 -1
  59. package/dist/styling.cjs +1 -1
  60. package/dist/styling.cjs.map +1 -1
  61. package/dist/styling.js +5 -5
  62. package/dist/styling.js.map +1 -1
  63. package/dist/types/Logger.d.ts +101 -5
  64. package/dist/types/Logger.d.ts.map +1 -1
  65. package/dist/types/ScopedLogger.d.ts +123 -0
  66. package/dist/types/ScopedLogger.d.ts.map +1 -0
  67. package/dist/types/constants.d.ts +26 -0
  68. package/dist/types/constants.d.ts.map +1 -1
  69. package/dist/types/core.d.ts +54 -0
  70. package/dist/types/core.d.ts.map +1 -1
  71. package/dist/types/exports-module.d.ts +1 -1
  72. package/dist/types/exports-module.d.ts.map +1 -1
  73. package/dist/types/index.d.ts +1 -1
  74. package/dist/types/index.d.ts.map +1 -1
  75. package/dist/types/styling/LogStyleBuilder.d.ts +146 -0
  76. package/dist/types/styling/LogStyleBuilder.d.ts.map +1 -0
  77. package/dist/types/styling/SemanticStyles.d.ts +178 -0
  78. package/dist/types/styling/SemanticStyles.d.ts.map +1 -0
  79. package/dist/types/styling/SmartPresets.d.ts +22 -0
  80. package/dist/types/styling/SmartPresets.d.ts.map +1 -0
  81. package/dist/types/styling/StyleBuilder.d.ts +8 -0
  82. package/dist/types/styling/StyleBuilder.d.ts.map +1 -1
  83. package/dist/types/styling/index.d.ts +3 -0
  84. package/dist/types/styling/index.d.ts.map +1 -1
  85. package/dist/types/styling-module.d.ts +1 -1
  86. package/dist/types/styling-module.d.ts.map +1 -1
  87. package/dist/types/types/core.d.ts +54 -0
  88. package/dist/types/types/core.d.ts.map +1 -1
  89. package/dist/types/types/index.d.ts +1 -1
  90. package/dist/types/types/index.d.ts.map +1 -1
  91. package/dist/types/utils/index.d.ts +1 -1
  92. package/dist/types/utils/index.d.ts.map +1 -1
  93. package/dist/types/utils/output.d.ts +14 -2
  94. package/dist/types/utils/output.d.ts.map +1 -1
  95. package/dist/utils/index.d.ts +1 -1
  96. package/dist/utils/index.d.ts.map +1 -1
  97. package/dist/utils/index.js +1 -1
  98. package/dist/utils/output.d.ts +14 -2
  99. package/dist/utils/output.d.ts.map +1 -1
  100. package/dist/utils/output.js +60 -7
  101. package/docs/CORE.md +10 -10
  102. package/examples/simplified-api.js +124 -0
  103. package/package.json +1 -1
  104. package/packages/core/package.json +1 -1
  105. package/packages/exports/package.json +2 -2
  106. package/packages/styling/package.json +2 -2
  107. package/src/Logger.ts +251 -17
  108. package/src/ScopedLogger.ts +262 -0
  109. package/src/constants.ts +29 -2
  110. package/src/core.ts +2 -2
  111. package/src/example.ts +4 -4
  112. package/src/exports-module.ts +1 -1
  113. package/src/index.ts +1 -1
  114. package/src/main.ts +3 -3
  115. package/src/styling/LogStyleBuilder.ts +355 -0
  116. package/src/styling/SemanticStyles.ts +380 -0
  117. package/src/styling/SmartPresets.ts +288 -0
  118. package/src/styling/StyleBuilder.ts +14 -0
  119. package/src/styling/index.ts +16 -1
  120. package/src/styling-module.ts +1 -1
  121. package/src/types/core.ts +60 -0
  122. package/src/types/index.ts +6 -0
  123. package/src/utils/index.ts +3 -0
  124. package/src/utils/output.ts +66 -8
  125. package/dist/chunks/Logger-C2-cR3No.js +0 -2
  126. package/dist/chunks/Logger-C2-cR3No.js.map +0 -1
  127. package/dist/chunks/Logger-CVwk8cgA.js.map +0 -1
  128. package/dist/chunks/StyleBuilder-BoJTmskd.js.map +0 -1
  129. package/dist/chunks/StyleBuilder-LPLzsoHY.js +0 -4
  130. package/src/Logger.ts.backup +0 -1684
package/CHANGELOG.json CHANGED
@@ -1,6 +1,23 @@
1
1
  {
2
- "current_version": "0.12.0-alpha.1",
2
+ "current_version": "0.13.0-alpha.1",
3
3
  "versions": [
4
+ {
5
+ "version": "0.13.0-alpha.1",
6
+ "date": "2025-09-02",
7
+ "type": "minor",
8
+ "title": "Versión Alpha - Mejoras y optimizaciones",
9
+ "changes": [
10
+ {
11
+ "type": "improvement",
12
+ "title": "chore: release 0.12.0-alpha.1 [skip ci]",
13
+ "description": "chore: release 0.12.0-alpha.1 [skip ci]"
14
+ }
15
+ ],
16
+ "technical_notes": "- Implementado SmartPresets system con 6 presets predefinidos\n- Creado ScopedLogger con soporte para badges múltiples\n- Añadido ContextLogger con auto-cleanup temporal\n- Migrado createStyledOutput para usar colores adaptativos\n- Eliminado código duplicado y referencias obsoletas\n- Consolidado sistemas de temas (THEME_PRESETS + SMART_PRESETS)\n- Refactorizado API exports para mejor tree-shaking",
17
+ "breaking_changes": [],
18
+ "commit_hash": "0d9da59c46f0565703c118ba96a4a59128b33982",
19
+ "prefix": "alpha"
20
+ },
4
21
  {
5
22
  "version": "0.12.0-alpha.1",
6
23
  "date": "2025-08-30",
package/README.md CHANGED
@@ -11,15 +11,15 @@ Transform your console logging experience with beautiful styling, professional t
11
11
 
12
12
  ## ✨ Features
13
13
 
14
- - 🎨 **Advanced CSS Styling** - Beautiful gradients, shadows, and animations
15
- - 🌈 **5 Professional Themes** - Default, Dark, Neon, Cyberpunk, Retro
16
- - 🖼️ **SVG Background Support** - Custom graphics in console output
17
- - **Performance Monitoring** - Built-in timing and benchmarking
14
+ - 🚀 **Simplified API** - 80% less code for basic use cases
15
+ - 🎨 **Smart Presets** - Apply beautiful themes in one line: `logger.preset('cyberpunk')`
16
+ - 🏷️ **Auto-Badges** - Component and API loggers with automatic tagging
17
+ - 🌗 **Adaptive Themes** - Automatic light/dark mode detection
18
+ - ⚡ **Context Logging** - Temporary scopes that auto-cleanup
19
+ - 🎛️ **Toggle Controls** - Show/hide elements with simple methods
18
20
  - 📊 **Data Export** - CSV, JSON, XML export with filtering
19
- - 📡 **Remote Logging** - Send logs to external services
20
21
  - 💻 **Interactive CLI** - Built-in command interface
21
22
  - 🔧 **Modular Architecture** - Import only what you need
22
- - 📱 **Universal Compatibility** - Browser & Node.js with graceful fallbacks
23
23
  - 🎯 **TypeScript First** - Complete type safety and IntelliSense
24
24
 
25
25
  ## 📦 Installation
@@ -47,6 +47,70 @@ npm install @mks2508/better-logger-exports
47
47
 
48
48
  ## 🚀 Quick Start
49
49
 
50
+ ### Basic Usage (Zero Configuration)
51
+ ```javascript
52
+ import logger from '@mks2508/better-logger';
53
+
54
+ // Works perfectly out-of-the-box with adaptive themes
55
+ logger.info('Application started');
56
+ logger.success('Database connected');
57
+ logger.warn('High memory usage');
58
+ logger.error('Connection failed');
59
+ ```
60
+
61
+ ### One-Line Styling
62
+ ```javascript
63
+ // Apply beautiful presets instantly
64
+ logger.preset('cyberpunk'); // Neon colors, glowing effects
65
+ logger.preset('glassmorphism'); // Modern blur effects
66
+ logger.preset('minimal'); // Clean and simple
67
+ logger.preset('debug'); // Detailed development mode
68
+ ```
69
+
70
+ ### Toggle Features
71
+ ```javascript
72
+ // Control visibility with simple methods
73
+ logger.hideTimestamp();
74
+ logger.showLocation();
75
+ logger.hideBadges();
76
+ ```
77
+
78
+ ### Component & API Logging
79
+ ```javascript
80
+ // Scoped loggers with auto-badges
81
+ const auth = logger.component('UserAuth');
82
+ auth.info('Login attempt'); // [COMPONENT] [UserAuth] Login attempt
83
+ auth.success('User verified'); // [COMPONENT] [UserAuth] User verified
84
+
85
+ // API loggers with multiple badges
86
+ const api = logger.api('GraphQL').badges(['SLOW', 'CACHE']);
87
+ api.warn('Query timeout'); // [API] [SLOW] [CACHE] [GraphQL] Query timeout
88
+ api.auth('Invalid token'); // [API] [AUTH] [GraphQL] Invalid token
89
+ ```
90
+
91
+ ### Smart Context System
92
+ ```javascript
93
+ const dbLogger = logger.component('Database');
94
+
95
+ // Context auto-removes after execution
96
+ dbLogger.context('Migration').run(() => {
97
+ dbLogger.info('Starting migration'); // [Database:Migration] Starting migration
98
+ dbLogger.success('Tables created'); // [Database:Migration] Tables created
99
+ });
100
+ // Context automatically cleaned up
101
+ ```
102
+
103
+ ### Simple Customization
104
+ ```javascript
105
+ // Minimal configuration for specific needs
106
+ logger.customize({
107
+ message: { color: '#007bff', size: '15px' },
108
+ timestamp: { show: false },
109
+ spacing: 'compact'
110
+ });
111
+ ```
112
+
113
+ ### Advanced Styling (Power Users)
50
114
  ```typescript
51
115
  import { Logger } from '@mks2508/better-logger';
52
116
 
package/dist/Logger.d.ts CHANGED
@@ -2,7 +2,8 @@
2
2
  * @fileoverview Refactored Advanced Logger with modular architecture
3
3
  * @version 2.0.0
4
4
  */
5
- import type { Verbosity, ThemeVariant, BannerType, LoggerConfig, ILogHandler, StyleOptions } from './types/index.js';
5
+ import type { LogLevel, Verbosity, ThemeVariant, BannerType, LoggerConfig, ILogHandler, StyleOptions } from './types/index.js';
6
+ import { ScopedLogger, APILogger, ComponentLogger } from './ScopedLogger.js';
6
7
  import { ExportLogHandler } from './handlers/index.js';
7
8
  /**
8
9
  * Main Logger class implementing state-of-the-art logging capabilities
@@ -15,10 +16,16 @@ export declare class Logger {
15
16
  private groupDepth;
16
17
  private exportHandler?;
17
18
  private cliProcessor?;
19
+ private themeChangeListener?;
20
+ private displaySettings;
18
21
  /**
19
22
  * Creates a new Logger instance
20
23
  */
21
24
  constructor(config?: Partial<LoggerConfig>);
25
+ /**
26
+ * Sets up automatic theme detection with change listener
27
+ */
28
+ private setupAutoThemeDetection;
22
29
  /**
23
30
  * Get current configuration
24
31
  */
@@ -48,9 +55,84 @@ export declare class Logger {
48
55
  */
49
56
  resetConfig(): void;
50
57
  /**
51
- * Creates a scoped logger with a specific prefix
58
+ * Cleanup method to remove event listeners and free resources
59
+ */
60
+ cleanup(): void;
61
+ /**
62
+ * Apply a smart preset - works perfectly out-of-the-box
63
+ */
64
+ preset(name: string): void;
65
+ /**
66
+ * List available presets
67
+ */
68
+ presets(): string[];
69
+ /**
70
+ * Hide timestamp in logs
71
+ */
72
+ hideTimestamp(): void;
73
+ /**
74
+ * Show timestamp in logs
75
+ */
76
+ showTimestamp(): void;
77
+ /**
78
+ * Hide location info in logs
79
+ */
80
+ hideLocation(): void;
81
+ /**
82
+ * Show location info in logs
83
+ */
84
+ showLocation(): void;
85
+ /**
86
+ * Hide badges in logs
87
+ */
88
+ hideBadges(): void;
89
+ /**
90
+ * Show badges in logs
91
+ */
92
+ showBadges(): void;
93
+ /**
94
+ * Create a component logger with automatic styling
95
+ */
96
+ component(name: string): ComponentLogger;
97
+ /**
98
+ * Create an API logger with automatic badges
99
+ */
100
+ api(name: string): APILogger;
101
+ /**
102
+ * Create a general scoped logger with badges support
103
+ */
104
+ scope(name: string): ScopedLogger;
105
+ /**
106
+ * Simple customization with minimal configuration
107
+ */
108
+ customize(overrides: {
109
+ message?: {
110
+ color?: string;
111
+ font?: string;
112
+ size?: string;
113
+ };
114
+ timestamp?: {
115
+ show?: boolean;
116
+ color?: string;
117
+ };
118
+ location?: {
119
+ show?: boolean;
120
+ color?: string;
121
+ };
122
+ level?: {
123
+ uppercase?: boolean;
124
+ style?: string;
125
+ };
126
+ prefix?: {
127
+ show?: boolean;
128
+ style?: string;
129
+ };
130
+ spacing?: 'compact' | 'normal' | 'spacious';
131
+ }): void;
132
+ /**
133
+ * Access advanced styling API (for power users)
52
134
  */
53
- createScopedLogger(prefix: string): Logger;
135
+ styles(): any;
54
136
  /**
55
137
  * Adds a custom log handler for extensibility
56
138
  */
@@ -74,7 +156,7 @@ export declare class Logger {
74
156
  /**
75
157
  * Core logging method that handles styling and formatting
76
158
  */
77
- private log;
159
+ protected log(level: LogLevel, ...args: any[]): void;
78
160
  /**
79
161
  * Logs debug information (lowest priority)
80
162
  */
@@ -162,7 +244,6 @@ export declare const groupEnd: () => void;
162
244
  export declare const time: (label: string) => void;
163
245
  export declare const timeEnd: (label: string) => void;
164
246
  export declare const setGlobalPrefix: (prefix: string) => void;
165
- export declare const createScopedLogger: (prefix: string) => Logger;
166
247
  export declare const setVerbosity: (level: Verbosity) => void;
167
248
  export declare const addHandler: (handler: ILogHandler) => void;
168
249
  export declare const setTheme: (theme: ThemeVariant) => void;
@@ -171,6 +252,21 @@ export declare const showBanner: (bannerType?: BannerType) => void;
171
252
  export declare const logWithSVG: (message: string, svgContent?: string, options?: StyleOptions) => void;
172
253
  export declare const logAnimated: (message: string, duration?: number) => void;
173
254
  export declare const cli: (command: string) => Promise<void>;
255
+ export declare const cleanup: () => void;
256
+ export declare const preset: (name: string) => void;
257
+ export declare const presets: () => string[];
258
+ export declare const hideTimestamp: () => void;
259
+ export declare const showTimestamp: () => void;
260
+ export declare const hideLocation: () => void;
261
+ export declare const showLocation: () => void;
262
+ export declare const hideBadges: () => void;
263
+ export declare const showBadges: () => void;
264
+ export declare const component: (name: string) => ComponentLogger;
265
+ export declare const api: (name: string) => APILogger;
266
+ export declare const scope: (name: string) => ScopedLogger;
267
+ export declare const customize: (overrides: any) => void;
268
+ export declare const styles: () => any;
174
269
  export { FileLogHandler, RemoteLogHandler, AnalyticsLogHandler, ExportLogHandler } from './handlers/index.js';
175
270
  export { StyleBuilder, StylePresets as Styles } from './styling/index.js';
271
+ export { ScopedLogger, APILogger, ComponentLogger } from './ScopedLogger.js';
176
272
  //# sourceMappingURL=Logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"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"}
package/dist/Logger.js CHANGED
@@ -3,9 +3,13 @@
3
3
  * @version 2.0.0
4
4
  */
5
5
  // Utility imports
6
- import { parseStackTrace, formatTimestamp, createStyledOutput } from './utils/index.js';
6
+ import { parseStackTrace, formatTimestamp, createStyledOutput, setupThemeChangeListener } from './utils/index.js';
7
7
  // Styling imports
8
8
  import { THEME_PRESETS, THEME_BANNERS, displayInitBanner, StylePresets, StyleBuilder } from './styling/index.js';
9
+ // Smart presets and scoped loggers
10
+ import { getSmartPreset, getAvailablePresets, hasPreset } from './styling/SmartPresets.js';
11
+ import { ScopedLogger, APILogger, ComponentLogger } from './ScopedLogger.js';
12
+ import { createLogStyleBuilder } from './styling/LogStyleBuilder.js';
9
13
  // Handler imports
10
14
  import { ExportLogHandler } from './handlers/index.js';
11
15
  // CLI imports
@@ -27,6 +31,12 @@ export class Logger {
27
31
  groupDepth = 0;
28
32
  exportHandler;
29
33
  cliProcessor;
34
+ themeChangeListener;
35
+ displaySettings = {
36
+ showTimestamp: true,
37
+ showLocation: true,
38
+ showBadges: true
39
+ };
30
40
  /**
31
41
  * Creates a new Logger instance
32
42
  */
@@ -42,6 +52,27 @@ export class Logger {
42
52
  }
43
53
  // Initialize CLI processor
44
54
  this.cliProcessor = createDefaultCLI();
55
+ // Set up theme change listener if auto-detection is enabled
56
+ if (this.config.autoDetectTheme) {
57
+ this.setupAutoThemeDetection();
58
+ }
59
+ }
60
+ // ===== PRIVATE HELPER METHODS =====
61
+ /**
62
+ * Sets up automatic theme detection with change listener
63
+ */
64
+ setupAutoThemeDetection() {
65
+ // Clean up existing listener if any
66
+ if (this.themeChangeListener) {
67
+ this.themeChangeListener();
68
+ this.themeChangeListener = null;
69
+ }
70
+ // Set up new listener
71
+ this.themeChangeListener = setupThemeChangeListener((theme) => {
72
+ // Theme changed - logs will automatically use new colors on next call
73
+ // No need to update anything as colors are resolved dynamically
74
+ this.debug(`DevTools theme changed to: ${theme}`);
75
+ });
45
76
  }
46
77
  // ===== CONFIGURATION METHODS =====
47
78
  /**
@@ -54,7 +85,18 @@ export class Logger {
54
85
  * Update configuration
55
86
  */
56
87
  updateConfig(updates) {
88
+ const previousAutoDetect = this.config.autoDetectTheme;
57
89
  this.config = { ...this.config, ...updates };
90
+ // Handle auto-detection changes
91
+ if (updates.autoDetectTheme !== undefined && updates.autoDetectTheme !== previousAutoDetect) {
92
+ if (updates.autoDetectTheme) {
93
+ this.setupAutoThemeDetection();
94
+ }
95
+ else if (this.themeChangeListener) {
96
+ this.themeChangeListener();
97
+ this.themeChangeListener = null;
98
+ }
99
+ }
58
100
  }
59
101
  /**
60
102
  * Sets the global prefix for all log messages
@@ -72,6 +114,12 @@ export class Logger {
72
114
  * Sets the logger theme
73
115
  */
74
116
  setTheme(theme) {
117
+ // First check if it's a smart preset
118
+ if (hasPreset(theme)) {
119
+ this.preset(theme);
120
+ return;
121
+ }
122
+ // Fallback to old theme system
75
123
  if (theme in THEME_PRESETS) {
76
124
  LEVEL_STYLES = THEME_PRESETS[theme];
77
125
  this.config.theme = theme;
@@ -83,7 +131,7 @@ export class Logger {
83
131
  this.success(`Theme changed to: ${theme}`);
84
132
  }
85
133
  else {
86
- this.error(`Invalid theme: ${theme}. Available themes:`, Object.keys(THEME_PRESETS));
134
+ this.error(`Invalid theme: ${theme}. Available:`, [...getAvailablePresets(), ...Object.keys(THEME_PRESETS)]);
87
135
  }
88
136
  }
89
137
  /**
@@ -97,20 +145,140 @@ export class Logger {
97
145
  * Reset logger to default configuration
98
146
  */
99
147
  resetConfig() {
148
+ // Clean up theme listener
149
+ if (this.themeChangeListener) {
150
+ this.themeChangeListener();
151
+ this.themeChangeListener = null;
152
+ }
100
153
  this.config = { ...DEFAULT_CONFIG };
101
154
  LEVEL_STYLES = THEME_PRESETS.default;
155
+ // Re-setup auto theme detection if enabled in default config
156
+ if (this.config.autoDetectTheme) {
157
+ this.setupAutoThemeDetection();
158
+ }
102
159
  this.success('Logger configuration reset to defaults');
103
160
  }
104
- // ===== SCOPED LOGGER =====
105
161
  /**
106
- * Creates a scoped logger with a specific prefix
162
+ * Cleanup method to remove event listeners and free resources
163
+ */
164
+ cleanup() {
165
+ if (this.themeChangeListener) {
166
+ this.themeChangeListener();
167
+ this.themeChangeListener = null;
168
+ }
169
+ }
170
+ // ===== SIMPLIFIED API =====
171
+ /**
172
+ * Apply a smart preset - works perfectly out-of-the-box
173
+ */
174
+ preset(name) {
175
+ if (!hasPreset(name)) {
176
+ this.error(`Unknown preset: ${name}. Available presets:`, getAvailablePresets());
177
+ return;
178
+ }
179
+ const presetConfig = getSmartPreset(name);
180
+ if (presetConfig) {
181
+ // Apply the smart preset configuration
182
+ this.displaySettings.showTimestamp = presetConfig.timestamp?.show ?? true;
183
+ this.displaySettings.showLocation = presetConfig.location?.show ?? true;
184
+ // Store the preset config for use in createStyledOutput
185
+ this._activePreset = presetConfig;
186
+ this._activePresetName = name;
187
+ this.success(`Applied preset: ${name}`);
188
+ }
189
+ }
190
+ /**
191
+ * List available presets
192
+ */
193
+ presets() {
194
+ return getAvailablePresets();
195
+ }
196
+ // ===== TOGGLE METHODS =====
197
+ /**
198
+ * Hide timestamp in logs
199
+ */
200
+ hideTimestamp() {
201
+ this.displaySettings.showTimestamp = false;
202
+ this.success('Timestamp hidden');
203
+ }
204
+ /**
205
+ * Show timestamp in logs
206
+ */
207
+ showTimestamp() {
208
+ this.displaySettings.showTimestamp = true;
209
+ this.success('Timestamp shown');
210
+ }
211
+ /**
212
+ * Hide location info in logs
213
+ */
214
+ hideLocation() {
215
+ this.displaySettings.showLocation = false;
216
+ this.success('Location info hidden');
217
+ }
218
+ /**
219
+ * Show location info in logs
220
+ */
221
+ showLocation() {
222
+ this.displaySettings.showLocation = true;
223
+ this.success('Location info shown');
224
+ }
225
+ /**
226
+ * Hide badges in logs
227
+ */
228
+ hideBadges() {
229
+ this.displaySettings.showBadges = false;
230
+ this.success('Badges hidden');
231
+ }
232
+ /**
233
+ * Show badges in logs
234
+ */
235
+ showBadges() {
236
+ this.displaySettings.showBadges = true;
237
+ this.success('Badges shown');
238
+ }
239
+ // ===== SCOPED LOGGERS =====
240
+ /**
241
+ * Create a component logger with automatic styling
242
+ */
243
+ component(name) {
244
+ return new ComponentLogger(this, name);
245
+ }
246
+ /**
247
+ * Create an API logger with automatic badges
248
+ */
249
+ api(name) {
250
+ return new APILogger(this, name);
251
+ }
252
+ /**
253
+ * Create a general scoped logger with badges support
254
+ */
255
+ scope(name) {
256
+ return new ScopedLogger(this, name);
257
+ }
258
+ // ===== SIMPLE CUSTOMIZATION =====
259
+ /**
260
+ * Simple customization with minimal configuration
261
+ */
262
+ customize(overrides) {
263
+ // Apply simple overrides
264
+ if (overrides.timestamp?.show !== undefined) {
265
+ this.displaySettings.showTimestamp = overrides.timestamp.show;
266
+ }
267
+ if (overrides.location?.show !== undefined) {
268
+ this.displaySettings.showLocation = overrides.location.show;
269
+ }
270
+ if (overrides.prefix?.show !== undefined) {
271
+ // Will be handled when we integrate with preset system
272
+ }
273
+ // Store customization for use in createStyledOutput
274
+ this._customization = overrides;
275
+ this.success('Customization applied');
276
+ }
277
+ /**
278
+ * Access advanced styling API (for power users)
107
279
  */
108
- createScopedLogger(prefix) {
109
- const scopedLogger = new Logger(this.config);
110
- scopedLogger.scopedPrefix = prefix;
111
- scopedLogger.handlers = [...this.handlers];
112
- scopedLogger.exportHandler = this.exportHandler;
113
- return scopedLogger;
280
+ styles() {
281
+ return createLogStyleBuilder(this);
114
282
  }
115
283
  // ===== HANDLER MANAGEMENT =====
116
284
  /**
@@ -158,8 +326,8 @@ export class Logger {
158
326
  const prefix = this.getEffectivePrefix();
159
327
  const message = args.length > 0 ? String(args[0]) : '';
160
328
  const additionalArgs = args.slice(1);
161
- // Create styled output
162
- const [format, ...styles] = createStyledOutput(level, LEVEL_STYLES, prefix, message, stackInfo);
329
+ // Create styled output with theme detection and display settings
330
+ const [format, ...styles] = createStyledOutput(level, LEVEL_STYLES, prefix, message, this.displaySettings.showLocation ? stackInfo : null, this.config.autoDetectTheme);
163
331
  // Add group indentation
164
332
  const groupIndent = ' '.repeat(this.groupDepth);
165
333
  const finalFormat = groupIndent + format;
@@ -225,7 +393,7 @@ export class Logger {
225
393
  const message = args.length > 0 ? String(args[0]) : '';
226
394
  const additionalArgs = args.slice(1);
227
395
  // Handle success as special case - use info level with success styling
228
- const [format, ...styles] = createStyledOutput('info', LEVEL_STYLES, prefix, message, stackInfo);
396
+ const [format, ...styles] = createStyledOutput('info', LEVEL_STYLES, prefix, message, this.displaySettings.showLocation ? stackInfo : null, this.config.autoDetectTheme);
229
397
  // Override with success styling
230
398
  const successStyle = LEVEL_STYLES.success;
231
399
  let emoji = '✅';
@@ -483,7 +651,6 @@ export const groupEnd = () => defaultLogger.groupEnd();
483
651
  export const time = (label) => defaultLogger.time(label);
484
652
  export const timeEnd = (label) => defaultLogger.timeEnd(label);
485
653
  export const setGlobalPrefix = (prefix) => defaultLogger.setGlobalPrefix(prefix);
486
- export const createScopedLogger = (prefix) => defaultLogger.createScopedLogger(prefix);
487
654
  export const setVerbosity = (level) => defaultLogger.setVerbosity(level);
488
655
  export const addHandler = (handler) => defaultLogger.addHandler(handler);
489
656
  export const setTheme = (theme) => defaultLogger.setTheme(theme);
@@ -492,7 +659,22 @@ export const showBanner = (bannerType) => defaultLogger.showBanner(bannerType);
492
659
  export const logWithSVG = (message, svgContent, options) => defaultLogger.logWithSVG(message, svgContent, options);
493
660
  export const logAnimated = (message, duration) => defaultLogger.logAnimated(message, duration);
494
661
  export const cli = (command) => defaultLogger.cli(command);
662
+ export const cleanup = () => defaultLogger.cleanup();
663
+ // Simplified API exports
664
+ export const preset = (name) => defaultLogger.preset(name);
665
+ export const presets = () => defaultLogger.presets();
666
+ export const hideTimestamp = () => defaultLogger.hideTimestamp();
667
+ export const showTimestamp = () => defaultLogger.showTimestamp();
668
+ export const hideLocation = () => defaultLogger.hideLocation();
669
+ export const showLocation = () => defaultLogger.showLocation();
670
+ export const hideBadges = () => defaultLogger.hideBadges();
671
+ export const showBadges = () => defaultLogger.showBadges();
672
+ export const component = (name) => defaultLogger.component(name);
673
+ export const api = (name) => defaultLogger.api(name);
674
+ export const scope = (name) => defaultLogger.scope(name);
675
+ export const customize = (overrides) => defaultLogger.customize(overrides);
676
+ export const styles = () => defaultLogger.styles();
495
677
  // Re-export handlers and utilities for backward compatibility
496
678
  export { FileLogHandler, RemoteLogHandler, AnalyticsLogHandler, ExportLogHandler } from './handlers/index.js';
497
- export { StyleBuilder, StylePresets as Styles } from './styling/index.js'; // Test change to trigger workflow
498
- // Test permissions fix
679
+ export { StyleBuilder, StylePresets as Styles } from './styling/index.js';
680
+ export { ScopedLogger, APILogger, ComponentLogger } from './ScopedLogger.js';