@mks2508/better-logger 5.0.1 → 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 (310) hide show
  1. package/dist/Logger.d.ts +976 -0
  2. package/dist/Logger.d.ts.map +1 -0
  3. package/dist/ScopedLogger.d.ts +74 -0
  4. package/dist/ScopedLogger.d.ts.map +1 -0
  5. package/dist/chunks/Logger-CKqzXDh3.js +2 -0
  6. package/dist/chunks/Logger-CKqzXDh3.js.map +1 -0
  7. package/dist/chunks/Logger-D_vuKP4l.js +4511 -0
  8. package/dist/chunks/Logger-D_vuKP4l.js.map +1 -0
  9. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +33 -0
  10. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +1 -0
  11. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +2 -0
  12. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +1 -0
  13. package/dist/chunks/cli-module-B-njrTWb.js +2 -0
  14. package/dist/chunks/cli-module-B-njrTWb.js.map +1 -0
  15. package/dist/chunks/cli-module-Cx7qotPY.js +390 -0
  16. package/dist/chunks/cli-module-Cx7qotPY.js.map +1 -0
  17. package/dist/chunks/color-converter-CCSQRztd.js +2 -0
  18. package/dist/chunks/color-converter-CCSQRztd.js.map +1 -0
  19. package/dist/chunks/color-converter-_Xdmsy7E.js +462 -0
  20. package/dist/chunks/color-converter-_Xdmsy7E.js.map +1 -0
  21. package/dist/chunks/environment-C1xxvc8l.js +1127 -0
  22. package/dist/chunks/environment-C1xxvc8l.js.map +1 -0
  23. package/dist/chunks/environment-Cprkw3g9.js +4 -0
  24. package/dist/chunks/environment-Cprkw3g9.js.map +1 -0
  25. package/dist/chunks/formatting-DMJxYq9o.js +380 -0
  26. package/dist/chunks/formatting-DMJxYq9o.js.map +1 -0
  27. package/dist/chunks/formatting-DpKxCsXq.js +2 -0
  28. package/dist/chunks/formatting-DpKxCsXq.js.map +1 -0
  29. package/dist/cli/CommandProcessor.d.ts +100 -0
  30. package/dist/cli/CommandProcessor.d.ts.map +1 -0
  31. package/dist/cli/commands/ConfigCommand.d.ts +14 -0
  32. package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
  33. package/dist/cli/commands/ExportCommand.d.ts +48 -0
  34. package/dist/cli/commands/ExportCommand.d.ts.map +1 -0
  35. package/dist/cli/commands/HistoryCommand.d.ts +47 -0
  36. package/dist/cli/commands/HistoryCommand.d.ts.map +1 -0
  37. package/dist/cli/commands/StatusCommand.d.ts +30 -0
  38. package/dist/cli/commands/StatusCommand.d.ts.map +1 -0
  39. package/dist/cli/commands/ThemeCommand.d.ts +30 -0
  40. package/dist/cli/commands/ThemeCommand.d.ts.map +1 -0
  41. package/dist/cli/help.d.ts +12 -0
  42. package/dist/cli/help.d.ts.map +1 -0
  43. package/dist/cli/index.d.ts +15 -0
  44. package/dist/cli/index.d.ts.map +1 -0
  45. package/{src/cli-module.ts → dist/cli-module.d.ts} +2 -8
  46. package/dist/cli-module.d.ts.map +1 -0
  47. package/dist/cli-primitives/box.d.ts +11 -0
  48. package/dist/cli-primitives/box.d.ts.map +1 -0
  49. package/dist/cli-primitives/cli-table.d.ts +11 -0
  50. package/dist/cli-primitives/cli-table.d.ts.map +1 -0
  51. package/dist/cli-primitives/divider.d.ts +11 -0
  52. package/dist/cli-primitives/divider.d.ts.map +1 -0
  53. package/dist/cli-primitives/header.d.ts +12 -0
  54. package/dist/cli-primitives/header.d.ts.map +1 -0
  55. package/{src/cli-primitives/index.ts → dist/cli-primitives/index.d.ts} +1 -1
  56. package/dist/cli-primitives/index.d.ts.map +1 -0
  57. package/dist/cli-primitives/server-fallback.d.ts +25 -0
  58. package/dist/cli-primitives/server-fallback.d.ts.map +1 -0
  59. package/dist/cli-primitives/spinner.d.ts +47 -0
  60. package/dist/cli-primitives/spinner.d.ts.map +1 -0
  61. package/dist/cli-primitives/step.d.ts +11 -0
  62. package/dist/cli-primitives/step.d.ts.map +1 -0
  63. package/dist/cli.cjs +2 -0
  64. package/dist/cli.cjs.map +1 -0
  65. package/dist/cli.js +12 -0
  66. package/dist/cli.js.map +1 -0
  67. package/dist/constants.d.ts +235 -0
  68. package/dist/constants.d.ts.map +1 -0
  69. package/dist/core.cjs +2 -0
  70. package/dist/core.cjs.map +1 -0
  71. package/dist/core.d.ts +127 -0
  72. package/dist/core.d.ts.map +1 -0
  73. package/dist/core.js +291 -0
  74. package/dist/core.js.map +1 -0
  75. package/dist/example.d.ts +18 -0
  76. package/dist/example.d.ts.map +1 -0
  77. package/dist/exports-module.d.ts +196 -0
  78. package/dist/exports-module.d.ts.map +1 -0
  79. package/dist/exports.cjs +2 -0
  80. package/dist/exports.cjs.map +1 -0
  81. package/dist/exports.js +238 -0
  82. package/dist/exports.js.map +1 -0
  83. package/dist/handlers/AnalyticsLogHandler.d.ts +8 -0
  84. package/dist/handlers/AnalyticsLogHandler.d.ts.map +1 -0
  85. package/dist/handlers/ExportLogHandler.d.ts +100 -0
  86. package/dist/handlers/ExportLogHandler.d.ts.map +1 -0
  87. package/dist/handlers/FileLogHandler.d.ts +33 -0
  88. package/dist/handlers/FileLogHandler.d.ts.map +1 -0
  89. package/dist/handlers/RemoteLogHandler.d.ts +11 -0
  90. package/dist/handlers/RemoteLogHandler.d.ts.map +1 -0
  91. package/{src/handlers/index.ts → dist/handlers/index.d.ts} +2 -2
  92. package/dist/handlers/index.d.ts.map +1 -0
  93. package/dist/hooks/HookManager.d.ts +21 -0
  94. package/dist/hooks/HookManager.d.ts.map +1 -0
  95. package/{src/hooks/index.ts → dist/hooks/index.d.ts} +1 -0
  96. package/dist/hooks/index.d.ts.map +1 -0
  97. package/dist/index.cjs +2 -0
  98. package/dist/index.cjs.map +1 -0
  99. package/dist/index.d.ts +161 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +627 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/main.d.ts +2 -0
  104. package/dist/main.d.ts.map +1 -0
  105. package/dist/serializers/SerializerRegistry.d.ts +16 -0
  106. package/dist/serializers/SerializerRegistry.d.ts.map +1 -0
  107. package/{src/serializers/index.ts → dist/serializers/index.d.ts} +1 -0
  108. package/dist/serializers/index.d.ts.map +1 -0
  109. package/dist/styling/LogStyleBuilder.d.ts +146 -0
  110. package/dist/styling/LogStyleBuilder.d.ts.map +1 -0
  111. package/dist/styling/SemanticStyles.d.ts +178 -0
  112. package/dist/styling/SemanticStyles.d.ts.map +1 -0
  113. package/dist/styling/SmartPresets.d.ts +22 -0
  114. package/dist/styling/SmartPresets.d.ts.map +1 -0
  115. package/dist/styling/StyleBuilder.d.ts +140 -0
  116. package/dist/styling/StyleBuilder.d.ts.map +1 -0
  117. package/dist/styling/StyleCache.d.ts +42 -0
  118. package/dist/styling/StyleCache.d.ts.map +1 -0
  119. package/dist/styling/banners.d.ts +42 -0
  120. package/dist/styling/banners.d.ts.map +1 -0
  121. package/dist/styling/index.d.ts +10 -0
  122. package/dist/styling/index.d.ts.map +1 -0
  123. package/dist/styling/themes.d.ts +7 -0
  124. package/dist/styling/themes.d.ts.map +1 -0
  125. package/dist/styling-module.d.ts +178 -0
  126. package/dist/styling-module.d.ts.map +1 -0
  127. package/dist/styling.cjs +2 -0
  128. package/dist/styling.cjs.map +1 -0
  129. package/dist/styling.js +146 -0
  130. package/dist/styling.js.map +1 -0
  131. package/dist/terminal/color-converter.d.ts +73 -0
  132. package/dist/terminal/color-converter.d.ts.map +1 -0
  133. package/dist/terminal/formatter.d.ts +20 -0
  134. package/dist/terminal/formatter.d.ts.map +1 -0
  135. package/dist/terminal/terminal-renderer.d.ts +77 -0
  136. package/dist/terminal/terminal-renderer.d.ts.map +1 -0
  137. package/dist/transports/ConsoleTransport.d.ts +9 -0
  138. package/dist/transports/ConsoleTransport.d.ts.map +1 -0
  139. package/dist/transports/FileTransport.d.ts +15 -0
  140. package/dist/transports/FileTransport.d.ts.map +1 -0
  141. package/dist/transports/HttpTransport.d.ts +16 -0
  142. package/dist/transports/HttpTransport.d.ts.map +1 -0
  143. package/dist/transports/TransportManager.d.ts +14 -0
  144. package/dist/transports/TransportManager.d.ts.map +1 -0
  145. package/{src/transports/index.ts → dist/transports/index.d.ts} +1 -0
  146. package/dist/transports/index.d.ts.map +1 -0
  147. package/{src/types/core.ts → dist/types/core.d.ts} +25 -62
  148. package/dist/types/core.d.ts.map +1 -0
  149. package/{src/types/handlers.ts → dist/types/handlers.d.ts} +5 -15
  150. package/dist/types/handlers.d.ts.map +1 -0
  151. package/{src/types/hooks.ts → dist/types/hooks.d.ts} +3 -12
  152. package/dist/types/hooks.d.ts.map +1 -0
  153. package/dist/types/index.d.ts +11 -0
  154. package/dist/types/index.d.ts.map +1 -0
  155. package/{src/types/serializers.ts → dist/types/serializers.d.ts} +1 -6
  156. package/dist/types/serializers.d.ts.map +1 -0
  157. package/{src/types/transports.ts → dist/types/transports.d.ts} +2 -7
  158. package/dist/types/transports.d.ts.map +1 -0
  159. package/dist/utils/adapter.d.ts +48 -0
  160. package/dist/utils/adapter.d.ts.map +1 -0
  161. package/dist/utils/ansi-colors.d.ts +156 -0
  162. package/dist/utils/ansi-colors.d.ts.map +1 -0
  163. package/dist/utils/environment-detector.d.ts +45 -0
  164. package/dist/utils/environment-detector.d.ts.map +1 -0
  165. package/dist/utils/environment.d.ts +47 -0
  166. package/dist/utils/environment.d.ts.map +1 -0
  167. package/dist/utils/formatting.d.ts +58 -0
  168. package/dist/utils/formatting.d.ts.map +1 -0
  169. package/dist/utils/index.d.ts +8 -0
  170. package/dist/utils/index.d.ts.map +1 -0
  171. package/dist/utils/opentui-detection.d.ts +34 -0
  172. package/dist/utils/opentui-detection.d.ts.map +1 -0
  173. package/dist/utils/output.d.ts +46 -0
  174. package/dist/utils/output.d.ts.map +1 -0
  175. package/dist/utils/stackTrace.d.ts +6 -0
  176. package/dist/utils/stackTrace.d.ts.map +1 -0
  177. package/dist/utils/timestamps.d.ts +20 -0
  178. package/dist/utils/timestamps.d.ts.map +1 -0
  179. package/{src/writers/BufferWriter.ts → dist/writers/BufferWriter.d.ts} +16 -77
  180. package/dist/writers/BufferWriter.d.ts.map +1 -0
  181. package/{src/writers/index.ts → dist/writers/index.d.ts} +1 -1
  182. package/dist/writers/index.d.ts.map +1 -0
  183. package/package.json +5 -1
  184. package/.claude/settings.local.json +0 -48
  185. package/.github/workflows/ci-quality.yml +0 -357
  186. package/.github/workflows/docs-demo.yml +0 -119
  187. package/.github/workflows/releases-core.yml +0 -512
  188. package/.github/workflows/releases-full.yml +0 -582
  189. package/.github/workflows-backup/ci.yml +0 -221
  190. package/.github/workflows-backup/nightly.yml +0 -196
  191. package/.github/workflows-backup/release-optimized.yml +0 -373
  192. package/.github/workflows-backup/release.yml +0 -269
  193. package/.release-notes-0.2.0.md +0 -129
  194. package/.yamllint +0 -28
  195. package/CHANGELOG.json +0 -1120
  196. package/CHANGELOG.md +0 -209
  197. package/CLAUDE.md +0 -217
  198. package/demo.html +0 -847
  199. package/docs/API.md +0 -918
  200. package/docs/CORE.md +0 -264
  201. package/docs/DEVELOPMENT.md +0 -731
  202. package/docs/EXPORTS.md +0 -467
  203. package/docs/PACKAGES.md +0 -244
  204. package/docs/STYLING.md +0 -405
  205. package/docs/_config.yml +0 -36
  206. package/docs/index.md +0 -179
  207. package/examples/README.md +0 -208
  208. package/examples/basic-logging.js +0 -75
  209. package/examples/data-export.js +0 -234
  210. package/examples/package.json +0 -16
  211. package/examples/performance-timing.js +0 -170
  212. package/examples/simplified-api.js +0 -124
  213. package/examples/styling-themes.js +0 -207
  214. package/index.html +0 -358
  215. package/packages/core/package.json +0 -57
  216. package/packages/exports/package.json +0 -41
  217. package/packages/nodejs-opentui/README.md +0 -232
  218. package/packages/nodejs-opentui/package.json +0 -72
  219. package/packages/nodejs-opentui/src/LogRenderer.ts +0 -171
  220. package/packages/nodejs-opentui/src/OpenTUILogHandler.ts +0 -178
  221. package/packages/nodejs-opentui/src/components/LogBadge.tsx +0 -131
  222. package/packages/nodejs-opentui/src/index.ts +0 -133
  223. package/packages/nodejs-opentui/src/types.ts +0 -158
  224. package/packages/nodejs-opentui/tsconfig.json +0 -20
  225. package/packages/styling/package.json +0 -41
  226. package/playground/demo-all.ts +0 -95
  227. package/playground/demo-box.ts +0 -85
  228. package/playground/demo-levels.ts +0 -56
  229. package/playground/demo-real-world.ts +0 -98
  230. package/playground/demo-spinner.ts +0 -77
  231. package/playground/demo-steps.ts +0 -72
  232. package/playground/demo-table.ts +0 -83
  233. package/project-utils/README.md +0 -172
  234. package/project-utils/auto-release-gemini.ts +0 -1193
  235. package/project-utils/auto-release-ui.ts +0 -1329
  236. package/project-utils/commit-generator.ts +0 -1385
  237. package/project-utils/commit-ui.ts +0 -264
  238. package/project-utils/git-utils.ts +0 -199
  239. package/project-utils/github-release-manager.ts +0 -466
  240. package/project-utils/project-config.ts +0 -260
  241. package/project-utils/prompt-templates.js +0 -345
  242. package/project-utils/prompt-templates.ts +0 -422
  243. package/project-utils/version-manager.ts +0 -1078
  244. package/src/Logger.ts +0 -1858
  245. package/src/ScopedLogger.ts +0 -256
  246. package/src/cli/CommandProcessor.ts +0 -248
  247. package/src/cli/commands/ConfigCommand.ts +0 -93
  248. package/src/cli/commands/ExportCommand.ts +0 -276
  249. package/src/cli/commands/HistoryCommand.ts +0 -117
  250. package/src/cli/commands/StatusCommand.ts +0 -112
  251. package/src/cli/commands/ThemeCommand.ts +0 -88
  252. package/src/cli/help.ts +0 -127
  253. package/src/cli/index.ts +0 -71
  254. package/src/cli-primitives/box.ts +0 -86
  255. package/src/cli-primitives/cli-table.ts +0 -62
  256. package/src/cli-primitives/divider.ts +0 -17
  257. package/src/cli-primitives/header.ts +0 -18
  258. package/src/cli-primitives/server-fallback.ts +0 -54
  259. package/src/cli-primitives/spinner.ts +0 -133
  260. package/src/cli-primitives/step.ts +0 -22
  261. package/src/constants.ts +0 -313
  262. package/src/core.ts +0 -397
  263. package/src/example.ts +0 -210
  264. package/src/exports-module.ts +0 -311
  265. package/src/handlers/AnalyticsLogHandler.ts +0 -22
  266. package/src/handlers/ExportLogHandler.ts +0 -610
  267. package/src/handlers/FileLogHandler.ts +0 -169
  268. package/src/handlers/RemoteLogHandler.ts +0 -42
  269. package/src/hooks/HookManager.ts +0 -177
  270. package/src/index.ts +0 -395
  271. package/src/main.ts +0 -196
  272. package/src/serializers/SerializerRegistry.ts +0 -173
  273. package/src/style.css +0 -96
  274. package/src/styling/LogStyleBuilder.ts +0 -355
  275. package/src/styling/SemanticStyles.ts +0 -380
  276. package/src/styling/SmartPresets.ts +0 -288
  277. package/src/styling/StyleBuilder.ts +0 -319
  278. package/src/styling/StyleCache.ts +0 -131
  279. package/src/styling/banners.ts +0 -168
  280. package/src/styling/index.ts +0 -27
  281. package/src/styling/themes.ts +0 -235
  282. package/src/styling-module.ts +0 -244
  283. package/src/terminal/color-converter.ts +0 -315
  284. package/src/terminal/formatter.ts +0 -242
  285. package/src/terminal/terminal-renderer.ts +0 -342
  286. package/src/transports/ConsoleTransport.ts +0 -28
  287. package/src/transports/FileTransport.ts +0 -53
  288. package/src/transports/HttpTransport.ts +0 -56
  289. package/src/transports/TransportManager.ts +0 -130
  290. package/src/types/index.ts +0 -83
  291. package/src/typescript.svg +0 -1
  292. package/src/utils/adapter.ts +0 -291
  293. package/src/utils/ansi-colors.ts +0 -333
  294. package/src/utils/environment-detector.ts +0 -170
  295. package/src/utils/environment.ts +0 -94
  296. package/src/utils/formatting.ts +0 -332
  297. package/src/utils/index.ts +0 -33
  298. package/src/utils/opentui-detection.ts +0 -138
  299. package/src/utils/output.ts +0 -227
  300. package/src/utils/stackTrace.ts +0 -144
  301. package/src/utils/timestamps.ts +0 -80
  302. package/src/vite-env.d.ts +0 -1
  303. package/test-core-browser.html +0 -237
  304. package/test-core-node.js +0 -63
  305. package/tests/test-conflict-resolution.ts +0 -391
  306. package/tests/validate-workflows.sh +0 -131
  307. package/tests/yaml-autofix.sh +0 -146
  308. package/tsconfig.json +0 -50
  309. package/vite.config.ts +0 -256
  310. /package/{public → dist}/vite.svg +0 -0
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/).