@mks2508/better-logger 5.0.0 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/chunks/{Logger-Cbi1f10o.js → Logger-CKqzXDh3.js} +2 -2
  2. package/dist/chunks/{Logger-Cbi1f10o.js.map → Logger-CKqzXDh3.js.map} +1 -1
  3. package/dist/chunks/{Logger-BZ7B7OXE.js → Logger-D_vuKP4l.js} +2 -2
  4. package/dist/chunks/{Logger-BZ7B7OXE.js.map → Logger-D_vuKP4l.js.map} +1 -1
  5. package/dist/chunks/cli-module-B-njrTWb.js +2 -0
  6. package/dist/chunks/cli-module-B-njrTWb.js.map +1 -0
  7. package/dist/chunks/{cli-module-ClIJmaT8.js → cli-module-Cx7qotPY.js} +16 -9
  8. package/dist/chunks/cli-module-Cx7qotPY.js.map +1 -0
  9. package/dist/cli.cjs +1 -1
  10. package/dist/cli.js +1 -1
  11. package/dist/exports.cjs +1 -1
  12. package/dist/exports.js +1 -1
  13. package/dist/index.cjs +1 -1
  14. package/dist/index.js +3 -3
  15. package/dist/styling.cjs +1 -1
  16. package/dist/styling.js +2 -2
  17. package/dist/terminal/formatter.d.ts.map +1 -1
  18. package/package.json +5 -1
  19. package/.claude/settings.local.json +0 -48
  20. package/.github/workflows/ci-quality.yml +0 -357
  21. package/.github/workflows/docs-demo.yml +0 -119
  22. package/.github/workflows/releases-core.yml +0 -512
  23. package/.github/workflows/releases-full.yml +0 -582
  24. package/.github/workflows-backup/ci.yml +0 -221
  25. package/.github/workflows-backup/nightly.yml +0 -196
  26. package/.github/workflows-backup/release-optimized.yml +0 -373
  27. package/.github/workflows-backup/release.yml +0 -269
  28. package/.release-notes-0.2.0.md +0 -129
  29. package/.yamllint +0 -28
  30. package/CHANGELOG.json +0 -1076
  31. package/CHANGELOG.md +0 -209
  32. package/CLAUDE.md +0 -217
  33. package/bun.lock +0 -333
  34. package/demo.html +0 -847
  35. package/dist/chunks/cli-module-CadqgZ1Z.js +0 -2
  36. package/dist/chunks/cli-module-CadqgZ1Z.js.map +0 -1
  37. package/dist/chunks/cli-module-ClIJmaT8.js.map +0 -1
  38. package/docs/API.md +0 -918
  39. package/docs/CORE.md +0 -264
  40. package/docs/DEVELOPMENT.md +0 -731
  41. package/docs/EXPORTS.md +0 -467
  42. package/docs/PACKAGES.md +0 -244
  43. package/docs/STYLING.md +0 -405
  44. package/docs/_config.yml +0 -36
  45. package/docs/index.md +0 -179
  46. package/examples/README.md +0 -208
  47. package/examples/basic-logging.js +0 -75
  48. package/examples/data-export.js +0 -234
  49. package/examples/package.json +0 -16
  50. package/examples/performance-timing.js +0 -170
  51. package/examples/simplified-api.js +0 -124
  52. package/examples/styling-themes.js +0 -207
  53. package/index.html +0 -358
  54. package/packages/core/package.json +0 -57
  55. package/packages/exports/package.json +0 -41
  56. package/packages/nodejs-opentui/README.md +0 -232
  57. package/packages/nodejs-opentui/package.json +0 -72
  58. package/packages/nodejs-opentui/src/LogRenderer.ts +0 -171
  59. package/packages/nodejs-opentui/src/OpenTUILogHandler.ts +0 -178
  60. package/packages/nodejs-opentui/src/components/LogBadge.tsx +0 -131
  61. package/packages/nodejs-opentui/src/index.ts +0 -133
  62. package/packages/nodejs-opentui/src/types.ts +0 -158
  63. package/packages/nodejs-opentui/tsconfig.json +0 -20
  64. package/packages/styling/package.json +0 -41
  65. package/playground/demo-all.ts +0 -95
  66. package/playground/demo-box.ts +0 -85
  67. package/playground/demo-levels.ts +0 -56
  68. package/playground/demo-real-world.ts +0 -98
  69. package/playground/demo-spinner.ts +0 -77
  70. package/playground/demo-steps.ts +0 -72
  71. package/playground/demo-table.ts +0 -83
  72. package/project-utils/README.md +0 -172
  73. package/project-utils/auto-release-gemini.ts +0 -1193
  74. package/project-utils/auto-release-ui.ts +0 -1329
  75. package/project-utils/commit-generator.ts +0 -1385
  76. package/project-utils/commit-ui.ts +0 -264
  77. package/project-utils/git-utils.ts +0 -199
  78. package/project-utils/github-release-manager.ts +0 -466
  79. package/project-utils/project-config.ts +0 -260
  80. package/project-utils/prompt-templates.js +0 -345
  81. package/project-utils/prompt-templates.ts +0 -422
  82. package/project-utils/version-manager.ts +0 -1078
  83. package/public/vite.svg +0 -1
  84. package/src/Logger.ts +0 -1858
  85. package/src/ScopedLogger.ts +0 -256
  86. package/src/cli/CommandProcessor.ts +0 -248
  87. package/src/cli/commands/ConfigCommand.ts +0 -93
  88. package/src/cli/commands/ExportCommand.ts +0 -276
  89. package/src/cli/commands/HistoryCommand.ts +0 -117
  90. package/src/cli/commands/StatusCommand.ts +0 -112
  91. package/src/cli/commands/ThemeCommand.ts +0 -88
  92. package/src/cli/help.ts +0 -127
  93. package/src/cli/index.ts +0 -71
  94. package/src/cli-module.ts +0 -21
  95. package/src/cli-primitives/box.ts +0 -86
  96. package/src/cli-primitives/cli-table.ts +0 -62
  97. package/src/cli-primitives/divider.ts +0 -17
  98. package/src/cli-primitives/header.ts +0 -18
  99. package/src/cli-primitives/index.ts +0 -13
  100. package/src/cli-primitives/server-fallback.ts +0 -54
  101. package/src/cli-primitives/spinner.ts +0 -133
  102. package/src/cli-primitives/step.ts +0 -22
  103. package/src/constants.ts +0 -313
  104. package/src/core.ts +0 -397
  105. package/src/example.ts +0 -210
  106. package/src/exports-module.ts +0 -311
  107. package/src/handlers/AnalyticsLogHandler.ts +0 -22
  108. package/src/handlers/ExportLogHandler.ts +0 -610
  109. package/src/handlers/FileLogHandler.ts +0 -169
  110. package/src/handlers/RemoteLogHandler.ts +0 -42
  111. package/src/handlers/index.ts +0 -8
  112. package/src/hooks/HookManager.ts +0 -177
  113. package/src/hooks/index.ts +0 -1
  114. package/src/index.ts +0 -395
  115. package/src/main.ts +0 -196
  116. package/src/serializers/SerializerRegistry.ts +0 -173
  117. package/src/serializers/index.ts +0 -1
  118. package/src/style.css +0 -96
  119. package/src/styling/LogStyleBuilder.ts +0 -355
  120. package/src/styling/SemanticStyles.ts +0 -380
  121. package/src/styling/SmartPresets.ts +0 -288
  122. package/src/styling/StyleBuilder.ts +0 -319
  123. package/src/styling/StyleCache.ts +0 -131
  124. package/src/styling/banners.ts +0 -168
  125. package/src/styling/index.ts +0 -27
  126. package/src/styling/themes.ts +0 -235
  127. package/src/styling-module.ts +0 -244
  128. package/src/terminal/color-converter.ts +0 -315
  129. package/src/terminal/formatter.ts +0 -236
  130. package/src/terminal/terminal-renderer.ts +0 -342
  131. package/src/transports/ConsoleTransport.ts +0 -28
  132. package/src/transports/FileTransport.ts +0 -53
  133. package/src/transports/HttpTransport.ts +0 -56
  134. package/src/transports/TransportManager.ts +0 -130
  135. package/src/transports/index.ts +0 -4
  136. package/src/types/core.ts +0 -417
  137. package/src/types/handlers.ts +0 -95
  138. package/src/types/hooks.ts +0 -45
  139. package/src/types/index.ts +0 -83
  140. package/src/types/serializers.ts +0 -30
  141. package/src/types/transports.ts +0 -52
  142. package/src/typescript.svg +0 -1
  143. package/src/utils/adapter.ts +0 -291
  144. package/src/utils/ansi-colors.ts +0 -333
  145. package/src/utils/environment-detector.ts +0 -170
  146. package/src/utils/environment.ts +0 -94
  147. package/src/utils/formatting.ts +0 -332
  148. package/src/utils/index.ts +0 -33
  149. package/src/utils/opentui-detection.ts +0 -138
  150. package/src/utils/output.ts +0 -227
  151. package/src/utils/stackTrace.ts +0 -144
  152. package/src/utils/timestamps.ts +0 -80
  153. package/src/vite-env.d.ts +0 -1
  154. package/src/writers/BufferWriter.ts +0 -157
  155. package/src/writers/index.ts +0 -6
  156. package/test-core-browser.html +0 -237
  157. package/test-core-node.js +0 -63
  158. package/tests/test-conflict-resolution.ts +0 -391
  159. package/tests/validate-workflows.sh +0 -131
  160. package/tests/yaml-autofix.sh +0 -146
  161. package/tsconfig.json +0 -50
  162. package/vite.config.ts +0 -256
package/docs/API.md DELETED
@@ -1,918 +0,0 @@
1
- ---
2
- layout: default
3
- title: API Reference
4
- permalink: /API/
5
- ---
6
-
7
- # 🔧 API Reference
8
-
9
- Complete API documentation for Better Logger with detailed method signatures, parameters, and examples.
10
-
11
- ## Table of Contents
12
-
13
- - [Core Logger](#core-logger)
14
- - [Enterprise Features (v3.0.0)](#enterprise-features-v300)
15
- - [Custom Serializers](#custom-serializers)
16
- - [Hooks & Middleware](#hooks--middleware)
17
- - [Transports](#transports)
18
- - [Style Builder](#style-builder)
19
- - [CLI Interface](#cli-interface)
20
- - [Export & Remote](#export--remote)
21
- - [Types & Interfaces](#types--interfaces)
22
-
23
- ---
24
-
25
- ## 🚀 Core Logger
26
-
27
- ### Logger Class
28
-
29
- The main Logger class provides all essential logging functionality.
30
-
31
- ```typescript
32
- import { Logger } from '@mks2508/better-logger';
33
-
34
- const logger = new Logger();
35
- ```
36
-
37
- #### Constructor Options
38
-
39
- ```typescript
40
- interface LoggerOptions {
41
- prefix?: string; // Default prefix for all log messages
42
- level?: LogLevel; // Minimum log level to display
43
- enableStackTrace?: boolean; // Include stack traces in logs
44
- enablePerformance?: boolean; // Include performance timings
45
- theme?: ThemeName; // Visual theme for styling
46
- }
47
- ```
48
-
49
- #### Log Levels
50
-
51
- ```typescript
52
- type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'critical';
53
-
54
- // Log level hierarchy (higher numbers = higher priority)
55
- const LOG_LEVELS = {
56
- debug: 0,
57
- info: 1,
58
- warn: 2,
59
- error: 3,
60
- critical: 4
61
- } as const;
62
- ```
63
-
64
- ### Basic Logging Methods
65
-
66
- #### `logger.debug(message, ...args)`
67
- Low-priority debugging information.
68
- ```typescript
69
- logger.debug('Variable value:', { userId: 123 });
70
- // Output: [DEBUG] Variable value: { userId: 123 }
71
- ```
72
-
73
- #### `logger.info(message, ...args)`
74
- General informational messages.
75
- ```typescript
76
- logger.info('User logged in', { username: 'john_doe' });
77
- // Output: [INFO] User logged in { username: 'john_doe' }
78
- ```
79
-
80
- #### `logger.warn(message, ...args)`
81
- Warning messages for potential issues.
82
- ```typescript
83
- logger.warn('API rate limit approaching', { remaining: 10 });
84
- // Output: [WARN] API rate limit approaching { remaining: 10 }
85
- ```
86
-
87
- #### `logger.error(message, ...args)`
88
- Error messages for failures.
89
- ```typescript
90
- logger.error('Database connection failed', { error: 'ECONNREFUSED' });
91
- // Output: [ERROR] Database connection failed { error: 'ECONNREFUSED' }
92
- ```
93
-
94
- #### `logger.critical(message, ...args)`
95
- Critical system failures requiring immediate attention.
96
- ```typescript
97
- logger.critical('System memory exhausted', { usage: '95%' });
98
- // Output: [CRITICAL] System memory exhausted { usage: '95%' }
99
- ```
100
-
101
- ### Advanced Logging Methods
102
-
103
- #### `logger.success(message, ...args)`
104
- Success notifications with green styling.
105
- ```typescript
106
- logger.success('Payment processed successfully', { orderId: 'ORD-123' });
107
- // Output: [SUCCESS] Payment processed successfully { orderId: 'ORD-123' }
108
- ```
109
-
110
- #### `logger.table(data, options?)`
111
- Display data in formatted table.
112
- ```typescript
113
- const users = [
114
- { id: 1, name: 'John', email: 'john@example.com' },
115
- { id: 2, name: 'Jane', email: 'jane@example.com' }
116
- ];
117
-
118
- logger.table(users);
119
- // Displays formatted table in console
120
- ```
121
-
122
- #### `logger.group(label, callback?)`
123
- Group related log messages.
124
- ```typescript
125
- logger.group('User Authentication', () => {
126
- logger.info('Checking credentials...');
127
- logger.info('Validating token...');
128
- logger.success('Authentication successful');
129
- });
130
-
131
- // Or manual grouping
132
- logger.group('Database Operations');
133
- logger.info('Connecting to database...');
134
- logger.info('Running migration...');
135
- logger.groupEnd();
136
- ```
137
-
138
- ### Performance Timing
139
-
140
- #### `logger.time(label)`
141
- Start timing operation.
142
- ```typescript
143
- logger.time('api-call');
144
- await fetchUserData();
145
- logger.timeEnd('api-call');
146
- // Output: [TIMING] api-call: 245.67ms
147
- ```
148
-
149
- #### `logger.timeEnd(label)`
150
- End timing and display duration.
151
-
152
- #### `logger.timeLog(label, ...args)`
153
- Log intermediate timing without ending timer.
154
- ```typescript
155
- logger.time('long-operation');
156
- await step1();
157
- logger.timeLog('long-operation', 'Step 1 complete');
158
- await step2();
159
- logger.timeEnd('long-operation');
160
- ```
161
-
162
- ### Scoped Loggers
163
-
164
- Create loggers with persistent prefixes for different modules.
165
-
166
- ```typescript
167
- const apiLogger = logger.scope('API');
168
- const dbLogger = logger.scope('DATABASE');
169
-
170
- apiLogger.info('Making HTTP request'); // [API] [INFO] Making HTTP request
171
- dbLogger.error('Connection timeout'); // [DATABASE] [ERROR] Connection timeout
172
- ```
173
-
174
- ### Log Handlers
175
-
176
- Add custom handlers for log processing.
177
-
178
- ```typescript
179
- import { FileLogHandler, RemoteLogHandler } from '@mks2508/better-logger';
180
-
181
- // File logging
182
- logger.addHandler(new FileLogHandler('/path/to/logs.txt'));
183
-
184
- // Remote logging
185
- logger.addHandler(new RemoteLogHandler('https://api.logging-service.com'));
186
-
187
- // Custom handler
188
- logger.addHandler({
189
- handle(entry) {
190
- // Process log entry
191
- console.log('Custom handler:', entry);
192
- }
193
- });
194
- ```
195
-
196
- ---
197
-
198
- ## 🔄 Enterprise Features (v3.0.0)
199
-
200
- ### Custom Serializers
201
-
202
- Transform objects before logging with type-based serializers.
203
-
204
- #### `logger.addSerializer(type, serializer, priority?)`
205
- Register a serializer for a specific type.
206
-
207
- ```typescript
208
- // Serialize Error objects
209
- logger.addSerializer(Error, (err) => ({
210
- name: err.name,
211
- message: err.message,
212
- stack: err.stack?.split('\n').slice(0, 5)
213
- }));
214
-
215
- // Serialize User objects (omit sensitive data)
216
- logger.addSerializer(User, (user) => ({
217
- id: user.id,
218
- email: user.email
219
- // password automatically omitted
220
- }), 100); // higher priority
221
-
222
- // Now objects are serialized automatically
223
- logger.error('Failed:', new Error('Connection timeout'));
224
- logger.info('User:', currentUser);
225
- ```
226
-
227
- #### `logger.removeSerializer(type)`
228
- Remove a registered serializer.
229
-
230
- ```typescript
231
- logger.removeSerializer(Error);
232
- ```
233
-
234
- #### `logger.getSerializerRegistry()`
235
- Access the SerializerRegistry for advanced operations.
236
-
237
- ```typescript
238
- const registry = logger.getSerializerRegistry();
239
- const serialized = registry.serialize(complexObject);
240
- ```
241
-
242
- ### Hooks & Middleware
243
-
244
- Intercept and modify log entries with hooks and middleware.
245
-
246
- #### `logger.on(event, callback, priority?)`
247
- Register a hook for an event. Returns unsubscribe function.
248
-
249
- ```typescript
250
- // Add correlation ID to all logs
251
- const unsubscribe = logger.on('beforeLog', (entry) => {
252
- entry.correlationId = getCorrelationId();
253
- return entry; // Return modified entry
254
- });
255
-
256
- // Track metrics after logging
257
- logger.on('afterLog', (entry) => {
258
- metrics.increment(`logs.${entry.level}`);
259
- });
260
-
261
- // Handle errors
262
- logger.on('onError', (entry) => {
263
- alertSystem.notify(entry.message);
264
- });
265
-
266
- // Unsubscribe when done
267
- unsubscribe();
268
- ```
269
-
270
- #### `logger.once(event, callback, priority?)`
271
- Register a hook that fires only once.
272
-
273
- ```typescript
274
- logger.once('beforeLog', (entry) => {
275
- console.log('First log entry:', entry.message);
276
- });
277
- ```
278
-
279
- #### `logger.off(event, callback)`
280
- Remove a registered hook.
281
-
282
- ```typescript
283
- const myHook = (entry) => { /* ... */ };
284
- logger.on('beforeLog', myHook);
285
- // Later...
286
- logger.off('beforeLog', myHook);
287
- ```
288
-
289
- #### `logger.use(middleware, priority?)`
290
- Add middleware to the processing pipeline.
291
-
292
- ```typescript
293
- // Add request context
294
- logger.use((entry, next) => {
295
- entry.requestId = asyncLocalStorage.getStore()?.requestId;
296
- next(); // Continue to next middleware
297
- });
298
-
299
- // Redact sensitive data
300
- logger.use((entry, next) => {
301
- entry.message = entry.message.replace(/password=\S+/g, 'password=***');
302
- next();
303
- });
304
-
305
- // Middleware with priority (higher = runs first)
306
- logger.use((entry, next) => {
307
- entry.timestamp = new Date().toISOString();
308
- next();
309
- }, 100);
310
- ```
311
-
312
- #### Hook Events
313
-
314
- | Event | Description | Can Modify Entry |
315
- |-------|-------------|------------------|
316
- | `beforeLog` | Before log is processed | Yes |
317
- | `afterLog` | After log is output | No |
318
- | `onError` | When an error occurs | No |
319
-
320
- ### Transports
321
-
322
- Send logs to multiple destinations with the transport system.
323
-
324
- #### `logger.addTransport(target)`
325
- Add a transport destination. Returns transport ID.
326
-
327
- ```typescript
328
- // Built-in file transport (Node.js)
329
- const fileId = logger.addTransport({
330
- target: 'file',
331
- options: { destination: '/var/log/app.log' }
332
- });
333
-
334
- // Built-in HTTP transport with batching
335
- const httpId = logger.addTransport({
336
- target: 'http',
337
- options: {
338
- url: 'https://logs.example.com/ingest',
339
- headers: { 'Authorization': 'Bearer token' },
340
- batchSize: 100, // Send in batches of 100
341
- flushInterval: 5000 // Or every 5 seconds
342
- },
343
- level: 'warn' // Only warn and above
344
- });
345
-
346
- // Built-in console transport
347
- logger.addTransport({
348
- target: 'console'
349
- });
350
-
351
- // Custom transport
352
- logger.addTransport({
353
- target: {
354
- name: 'elasticsearch',
355
- write: async (record) => {
356
- await esClient.index({
357
- index: 'logs',
358
- body: record
359
- });
360
- },
361
- flush: async () => {
362
- await esClient.indices.refresh({ index: 'logs' });
363
- },
364
- close: async () => {
365
- await esClient.close();
366
- }
367
- }
368
- });
369
- ```
370
-
371
- #### `logger.removeTransport(id)`
372
- Remove a transport by ID.
373
-
374
- ```typescript
375
- logger.removeTransport(fileId);
376
- ```
377
-
378
- #### `logger.flushTransports()`
379
- Force flush all transport buffers.
380
-
381
- ```typescript
382
- await logger.flushTransports();
383
- ```
384
-
385
- #### `logger.closeTransports()`
386
- Close all transports (flush + cleanup).
387
-
388
- ```typescript
389
- // Before application shutdown
390
- await logger.closeTransports();
391
- ```
392
-
393
- #### Transport Record Structure
394
-
395
- ```typescript
396
- interface TransportRecord {
397
- level: LogLevel;
398
- levelValue: number; // 0-4
399
- time: number; // Unix timestamp
400
- msg: string;
401
- prefix?: string;
402
- location?: {
403
- file: string;
404
- line: number;
405
- column: number;
406
- function?: string;
407
- };
408
- }
409
- ```
410
-
411
- #### Built-in Transports
412
-
413
- | Transport | Description | Options |
414
- |-----------|-------------|---------|
415
- | `console` | Console output | - |
416
- | `file` | File logging (Node.js) | `destination`, `batchSize`, `flushInterval` |
417
- | `http` | HTTP/HTTPS endpoint | `url`, `headers`, `batchSize`, `flushInterval` |
418
-
419
- ---
420
-
421
- ## 🎨 Style Builder
422
-
423
- Create custom console styles programmatically.
424
-
425
- ```typescript
426
- import { createStyle, StyleBuilder } from '@mks2508/better-logger/styling';
427
- ```
428
-
429
- ### Creating Styles
430
-
431
- #### `createStyle()`
432
- Returns new StyleBuilder instance.
433
-
434
- ```typescript
435
- const customStyle = createStyle()
436
- .bg('linear-gradient(45deg, #ff6b6b, #feca57)')
437
- .color('white')
438
- .padding('10px 20px')
439
- .rounded('8px')
440
- .bold()
441
- .build();
442
-
443
- console.log('%cCustom Message', customStyle);
444
- ```
445
-
446
- ### StyleBuilder Methods
447
-
448
- #### Background Methods
449
- ```typescript
450
- .bg(gradient: string) // Background gradient
451
- .backgroundColor(color: string) // Solid background color
452
- ```
453
-
454
- #### Typography Methods
455
- ```typescript
456
- .color(color: string) // Text color
457
- .font(family: string) // Font family
458
- .fontSize(size: string) // Font size
459
- .bold() // Bold text
460
- .italic() // Italic text
461
- ```
462
-
463
- #### Layout Methods
464
- ```typescript
465
- .padding(padding: string) // CSS padding
466
- .margin(margin: string) // CSS margin
467
- .display(display: string) // CSS display property
468
- ```
469
-
470
- #### Visual Effects
471
- ```typescript
472
- .border(border: string) // CSS border
473
- .rounded(radius: string) // Border radius
474
- .shadow(shadow: string) // Box shadow
475
- ```
476
-
477
- #### Animations
478
- ```typescript
479
- .animation(animation: string) // CSS animation
480
- .transition(transition: string) // CSS transition
481
- ```
482
-
483
- #### Custom Properties
484
- ```typescript
485
- .css(property: string, value: string) // Custom CSS property
486
- ```
487
-
488
- ### Style Presets
489
-
490
- Pre-built styles for common use cases.
491
-
492
- ```typescript
493
- import { stylePresets } from '@mks2508/better-logger/styling';
494
-
495
- console.log('%c✅ Success!', stylePresets.success);
496
- console.log('%c❌ Error!', stylePresets.error);
497
- console.log('%c⚠️ Warning!', stylePresets.warning);
498
- console.log('%cℹ️ Info', stylePresets.info);
499
- console.log('%c🎯 Accent', stylePresets.accent);
500
- ```
501
-
502
- ---
503
-
504
- ## 💻 CLI Interface
505
-
506
- Enhanced interactive command-line interface with plugin support, command history, and intelligent suggestions.
507
-
508
- ### 🔌 Plugin System
509
-
510
- Extend CLI functionality with custom plugins:
511
-
512
- ```typescript
513
- import { logger } from '@mks2508/better-logger';
514
-
515
- // Create a custom plugin
516
- const analyticsPlugin = {
517
- name: 'analytics',
518
- version: '1.0.0',
519
- description: 'Analytics tracking commands',
520
- commands: [{
521
- name: 'track',
522
- description: 'Track user events',
523
- usage: '/track <event> <data>',
524
- category: 'analytics',
525
- aliases: ['t'],
526
- execute: (args, logger) => {
527
- const [event, ...data] = args.split(' ');
528
- logger.info(`📊 Tracking: ${event}`, data.join(' '));
529
- }
530
- }]
531
- };
532
-
533
- // Register the plugin
534
- logger.cliProcessor.registerPlugin(analyticsPlugin, logger);
535
- ```
536
-
537
- ### 🌐 Interactive Mode
538
-
539
- Enter interactive mode for streamlined browser console usage:
540
-
541
- ```typescript
542
- // Enter interactive mode
543
- logger.executeCommand('/interactive');
544
-
545
- // Now use commands directly:
546
- cli('help'); // Instead of logger.executeCommand('/help')
547
- cli('theme matrix'); // Change theme interactively
548
- cli('history 5'); // Show last 5 commands
549
- ```
550
-
551
- ### 📋 Enhanced Commands
552
-
553
- #### Core Commands
554
-
555
- ##### `/help`
556
- Display help information and available commands.
557
- ```typescript
558
- logger.executeCommand('/help');
559
- ```
560
-
561
- ##### `/config`
562
- Show current logger configuration.
563
- ```typescript
564
- logger.executeCommand('/config');
565
- // Displays: Theme: default, Level: info, Stack traces: enabled
566
- ```
567
-
568
- ##### `/history [limit]` | Aliases: `/hist`, `/h`
569
- View command execution history with success/failure status.
570
- ```typescript
571
- logger.executeCommand('/history 10'); // Show last 10 commands
572
- logger.executeCommand('/hist'); // Show default (10) recent commands
573
- // ✅ [14:32:15] /theme matrix
574
- // ❌ [14:31:45] /invalid-command
575
- // ✅ [14:30:22] /export csv
576
- ```
577
-
578
- ##### `/clearhistory` | Aliases: `/clrhist`
579
- Clear all command history.
580
- ```typescript
581
- logger.executeCommand('/clearhistory');
582
- // 🗑️ Command history cleared
583
- ```
584
-
585
- ##### `/interactive` | Aliases: `/i`, `/repl`
586
- Enter interactive CLI mode for browser console.
587
- ```typescript
588
- logger.executeCommand('/interactive');
589
- // 🔧 Interactive CLI mode activated. Type /exit to quit, /help for commands.
590
- // 💡 Use cli("command") to execute CLI commands in browser console.
591
- ```
592
-
593
- ##### `/plugins` | Aliases: `/plug`
594
- List all registered plugins and their commands.
595
- ```typescript
596
- logger.executeCommand('/plugins');
597
- // 🔌 Loaded plugins (2):
598
- // 📦 analytics v1.0.0 - Analytics tracking commands
599
- // Commands: track, event
600
- // 📦 performance v2.1.0 - Performance monitoring tools
601
- // Commands: benchmark, profile
602
- ```
603
-
604
- #### `/theme [name]`
605
- Change visual theme.
606
- ```typescript
607
- /theme cyberpunk
608
- // Switches to cyberpunk theme with purple/pink colors
609
- ```
610
-
611
- Available themes: `default`, `dark`, `neon`, `cyberpunk`, `retro`
612
-
613
- #### `/banner [type]`
614
- Set banner display type.
615
- ```typescript
616
- /banner animated
617
- // Shows animated gradient banner
618
- ```
619
-
620
- Banner types: `simple`, `ascii`, `unicode`, `svg`, `animated`
621
-
622
- #### `/clear`
623
- Clear console and reset log buffer.
624
-
625
- #### `/export [format]`
626
- Export logs in specified format.
627
- ```typescript
628
- /export json
629
- // Exports current logs as JSON
630
- ```
631
-
632
- #### `/status`
633
- Show logger status and statistics.
634
-
635
- #### `/enumerate`
636
- List all available features and capabilities.
637
-
638
- ### CLI Integration
639
-
640
- ```typescript
641
- import { initializeCLI } from '@mks2508/better-logger/cli';
642
-
643
- // Initialize CLI with logger instance
644
- initializeCLI(logger);
645
-
646
- // CLI commands are now available in console
647
- // Type /help to see available commands
648
- ```
649
-
650
- ---
651
-
652
- ## 📤 Export & Remote
653
-
654
- Data export and remote logging capabilities.
655
-
656
- ```typescript
657
- import { ExportLogger } from '@mks2508/better-logger/exports';
658
- ```
659
-
660
- ### ExportLogger Class
661
-
662
- Extended logger with export and remote capabilities.
663
-
664
- ```typescript
665
- const logger = new ExportLogger({
666
- bufferSize: 1000,
667
- remoteBatch: {
668
- size: 10,
669
- interval: 5000
670
- }
671
- });
672
- ```
673
-
674
- #### Constructor Options
675
- ```typescript
676
- interface ExportLoggerConfig {
677
- bufferSize?: number; // Log buffer size
678
- bufferMode?: 'circular' | 'grow'; // Buffer behavior
679
- persistBuffer?: boolean; // Save to localStorage
680
- remoteBatch?: { // Remote batching config
681
- size: number;
682
- interval: number;
683
- maxWait: number;
684
- };
685
- autoExport?: { // Auto-export settings
686
- format: ExportFormat;
687
- trigger: 'size' | 'time' | 'level';
688
- threshold: number;
689
- };
690
- }
691
- ```
692
-
693
- ### Export Methods
694
-
695
- #### `exportLogs(format, options?)`
696
- Export logs in specified format.
697
-
698
- ```typescript
699
- // Export as CSV
700
- const csvData = await logger.exportLogs('csv', {
701
- filter: { level: 'error' },
702
- limit: 100
703
- });
704
-
705
- // Export as JSON with grouping
706
- const jsonData = await logger.exportLogs('json', {
707
- groupBy: 'level',
708
- includeStackTrace: true
709
- });
710
-
711
- // Export as XML
712
- const xmlData = await logger.exportLogs('xml');
713
- ```
714
-
715
- #### Export Options
716
- ```typescript
717
- interface ExportOptions {
718
- filter?: {
719
- level?: LogLevel | LogLevel[];
720
- from?: Date | string;
721
- to?: Date | string;
722
- prefix?: string | string[];
723
- content?: string;
724
- };
725
- limit?: number;
726
- groupBy?: 'level' | 'prefix' | 'date';
727
- includeStackTrace?: boolean;
728
- minimal?: boolean;
729
- }
730
- ```
731
-
732
- ### Remote Logging
733
-
734
- #### `addRemoteHandler(url, options?)`
735
- Add remote logging endpoint.
736
-
737
- ```typescript
738
- // HTTP endpoint
739
- logger.addRemoteHandler('https://api.logs.com/collect', {
740
- apiKey: 'secret-key',
741
- headers: { 'Content-Type': 'application/json' },
742
- retries: 3
743
- });
744
-
745
- // WebSocket endpoint
746
- logger.addRemoteHandler('wss://realtime.logs.com', {
747
- reconnect: true,
748
- maxReconnectAttempts: 5
749
- });
750
- ```
751
-
752
- #### Remote Handler Options
753
- ```typescript
754
- interface RemoteHandlerOptions {
755
- apiKey?: string;
756
- headers?: Record<string, string>;
757
- retries?: number;
758
- timeout?: number;
759
- reconnect?: boolean;
760
- reconnectInterval?: number;
761
- maxReconnectAttempts?: number;
762
- filter?: (entry: LogEntry) => boolean;
763
- immediate?: boolean;
764
- }
765
- ```
766
-
767
- ---
768
-
769
- ## 📋 Types & Interfaces
770
-
771
- ### Core Types
772
-
773
- ```typescript
774
- // Log levels
775
- type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'critical';
776
-
777
- // Theme names
778
- type ThemeName = 'default' | 'dark' | 'neon' | 'cyberpunk' | 'retro';
779
-
780
- // Banner types
781
- type BannerType = 'simple' | 'ascii' | 'unicode' | 'svg' | 'animated';
782
-
783
- // Export formats
784
- type ExportFormat = 'csv' | 'json' | 'xml';
785
- ```
786
-
787
- ### Interfaces
788
-
789
- ```typescript
790
- // Log entry structure
791
- interface LogEntry {
792
- id: string;
793
- timestamp: string;
794
- level: LogLevel;
795
- prefix: string;
796
- message: string;
797
- args: any[];
798
- location?: {
799
- file: string;
800
- line: number;
801
- column: number;
802
- function: string;
803
- };
804
- performance?: {
805
- duration: number;
806
- memory: NodeJS.MemoryUsage;
807
- };
808
- }
809
-
810
- // Log handler interface
811
- interface ILogHandler {
812
- handle(entry: LogEntry): void | Promise<void>;
813
- }
814
-
815
- // Style configuration
816
- interface StyleConfig {
817
- emoji?: string;
818
- colors?: {
819
- primary: string;
820
- secondary: string;
821
- text: string;
822
- };
823
- effects?: {
824
- shadow: string;
825
- border: string;
826
- };
827
- }
828
- ```
829
-
830
- ---
831
-
832
- ## 🔄 Lifecycle Events
833
-
834
- ### Event Handlers
835
-
836
- ```typescript
837
- // Log events
838
- logger.on('log', (entry: LogEntry) => {
839
- // Handle each log entry
840
- });
841
-
842
- logger.on('error', (error: Error) => {
843
- // Handle logging errors
844
- });
845
-
846
- logger.on('export', (data: string, format: ExportFormat) => {
847
- // Handle export completion
848
- });
849
-
850
- // Remote events
851
- logger.on('remote:success', (endpoint: string, count: number) => {
852
- // Handle successful remote transmission
853
- });
854
-
855
- logger.on('remote:error', (endpoint: string, error: Error) => {
856
- // Handle remote logging errors
857
- });
858
- ```
859
-
860
- ### Buffer Events
861
-
862
- ```typescript
863
- logger.on('buffer:full', (size: number) => {
864
- // Handle buffer capacity reached
865
- });
866
-
867
- logger.on('buffer:cleared', () => {
868
- // Handle buffer cleared
869
- });
870
- ```
871
-
872
- ---
873
-
874
- ## 📚 Advanced Usage
875
-
876
- ### Performance Monitoring
877
-
878
- ```typescript
879
- // Automatic performance tracking
880
- logger.time('operation');
881
- await performOperation();
882
- const metrics = logger.timeEnd('operation'); // Returns timing data
883
-
884
- // Memory usage tracking
885
- logger.logMemory('checkpoint-1');
886
- await heavyOperation();
887
- logger.logMemory('checkpoint-2');
888
- ```
889
-
890
- ### Conditional Logging
891
-
892
- ```typescript
893
- // Environment-based logging
894
- logger.setLevel(process.env.NODE_ENV === 'production' ? 'warn' : 'debug');
895
-
896
- // Conditional handlers
897
- if (process.env.ENABLE_FILE_LOGGING === 'true') {
898
- logger.addHandler(new FileLogHandler('./app.log'));
899
- }
900
- ```
901
-
902
- ### Custom Formatters
903
-
904
- ```typescript
905
- // Custom message formatting
906
- logger.setFormatter((entry: LogEntry) => {
907
- return `[${entry.timestamp}] ${entry.level.toUpperCase()}: ${entry.message}`;
908
- });
909
-
910
- // Custom data serialization
911
- logger.setSerializer((data: any) => {
912
- return JSON.stringify(data, null, 2);
913
- });
914
- ```
915
-
916
- ---
917
-
918
- For more examples and use cases, see the [examples folder](../examples/) and [live demo](https://mks2508.github.io/advanced-logger/).