@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
@@ -1,276 +0,0 @@
1
- /**
2
- * @fileoverview Export and clipboard commands for Advanced Logger CLI
3
- */
4
-
5
- import type { ICommand } from '../CommandProcessor.js';
6
- import type { Logger } from '../../Logger.js';
7
- import type { ExportFormat, ExportFilters, ExportOptions, LogLevel } from '../../types/index.js';
8
- import { EXPORT_FORMATS } from '../../constants.js';
9
-
10
- /**
11
- * Parse command line arguments into filters and options
12
- */
13
- function parseArguments(args: string): { filters: ExportFilters; options: ExportOptions; format?: ExportFormat } {
14
- const filters: ExportFilters = {};
15
- const options: ExportOptions = {};
16
- let format: ExportFormat | undefined;
17
-
18
- if (!args.trim()) return { filters, options };
19
-
20
- // Split args by spaces, but keep quoted strings together
21
- const argParts = args.match(/(?:[^\s"]+|"[^"]*")+/g) || [];
22
-
23
- for (let i = 0; i < argParts.length; i++) {
24
- const arg = argParts[i];
25
-
26
- // Skip if arg is null/undefined
27
- if (!arg) {
28
- continue;
29
- }
30
-
31
- // Format (first argument without --)
32
- if (i === 0 && !arg.startsWith('--') && arg in EXPORT_FORMATS) {
33
- format = arg as ExportFormat;
34
- continue;
35
- }
36
-
37
- // Parse --flags
38
- if (arg.startsWith('--')) {
39
- const [flag, value] = arg.slice(2).split('=');
40
-
41
- switch (flag) {
42
- case 'level':
43
- case 'levels':
44
- if (value) {
45
- filters.levels = value.split(',').map(l => l.trim()) as LogLevel[];
46
- }
47
- break;
48
- case 'since':
49
- if (value) filters.since = value;
50
- break;
51
- case 'until':
52
- if (value) filters.until = value;
53
- break;
54
- case 'prefix':
55
- case 'prefixes':
56
- if (value) {
57
- filters.prefixes = value.split(',').map(p => p.trim());
58
- }
59
- break;
60
- case 'exclude-prefix':
61
- case 'exclude-prefixes':
62
- if (value) {
63
- filters.excludePrefixes = value.split(',').map(p => p.trim());
64
- }
65
- break;
66
- case 'last':
67
- if (value) filters.last = parseInt(value, 10);
68
- break;
69
- case 'first':
70
- if (value) filters.first = parseInt(value, 10);
71
- break;
72
- case 'search':
73
- if (value) filters.search = value.replace(/['"]/g, '');
74
- break;
75
- case 'with-stack':
76
- filters.withStackTrace = true;
77
- break;
78
- case 'errors-only':
79
- filters.errorsOnly = true;
80
- break;
81
- case 'group-by':
82
- if (value) {
83
- filters.groupBy = value as ExportFilters['groupBy'];
84
- options.groupBy = value as ExportOptions['groupBy'];
85
- }
86
- break;
87
- case 'minimal':
88
- options.minimal = true;
89
- break;
90
- case 'compact':
91
- options.compact = true;
92
- break;
93
- case 'styled':
94
- options.styled = true;
95
- break;
96
- }
97
- }
98
- }
99
-
100
- return { filters, options, format };
101
- }
102
-
103
- /**
104
- * Export command - export logs in various formats
105
- */
106
- export class ExportCommand implements ICommand {
107
- name = 'export';
108
- description = 'Export logs to various formats';
109
- usage = '/export <format> [--filter=value] [--option]';
110
-
111
- execute(args: string, logger: Logger): void {
112
- const exportHandler = logger.getExportHandler();
113
- if (!exportHandler) {
114
- logger.error('Export handler not available. Make sure ExportLogHandler is registered.');
115
- return;
116
- }
117
-
118
- const { filters, options, format } = parseArguments(args);
119
-
120
- if (!format) {
121
- logger.error('Format required. Available formats: ' + Object.keys(EXPORT_FORMATS).join(', '));
122
- logger.info('Usage: /export <format> [--filter=value]');
123
- logger.info('Example: /export json --level=error,warn --last=50');
124
- return;
125
- }
126
-
127
- try {
128
- const result = exportHandler.export(format, filters, options);
129
-
130
- // Log success with metadata
131
- logger.success(`✅ Export completed: ${result.metadata.filteredLogs} logs exported in ${format} format`);
132
-
133
- // Show preview for small exports
134
- if (result.data.length < 1000) {
135
- logger.group(`📄 Preview (${format.toUpperCase()})`);
136
- console.log(result.data);
137
- logger.groupEnd();
138
- } else {
139
- logger.info(`📄 Export size: ${(result.data.length / 1024).toFixed(2)}KB`);
140
- }
141
-
142
- // Show metadata
143
- logger.table({
144
- format: result.format,
145
- totalLogs: result.metadata.totalLogs,
146
- filtered: result.metadata.filteredLogs,
147
- exported: result.metadata.exportedAt
148
- });
149
-
150
- } catch (error) {
151
- logger.error('Export failed:', error);
152
- }
153
- }
154
- }
155
-
156
- /**
157
- * Copy command - copy logs to clipboard
158
- */
159
- export class CopyCommand implements ICommand {
160
- name = 'copy';
161
- description = 'Copy logs to clipboard';
162
- usage = '/copy <format> [--filter=value] [--option]';
163
-
164
- async execute(args: string, logger: Logger): Promise<void> {
165
- const exportHandler = logger.getExportHandler();
166
- if (!exportHandler) {
167
- logger.error('Export handler not available. Make sure ExportLogHandler is registered.');
168
- return;
169
- }
170
-
171
- const { filters, options, format } = parseArguments(args);
172
-
173
- if (!format) {
174
- logger.error('Format required. Available formats: ' + Object.keys(EXPORT_FORMATS).join(', '));
175
- logger.info('Usage: /copy <format> [--filter=value]');
176
- logger.info('Example: /copy plain --level=error --last=25');
177
- return;
178
- }
179
-
180
- try {
181
- const success = await exportHandler.copyToClipboard(format, filters, options);
182
-
183
- if (success) {
184
- const result = exportHandler.export(format, filters, options);
185
- logger.success(`📋 Copied ${result.metadata.filteredLogs} logs to clipboard (${format} format)`);
186
- } else {
187
- logger.error('Failed to copy to clipboard. Browser may not support clipboard API.');
188
- }
189
-
190
- } catch (error) {
191
- logger.error('Copy failed:', error);
192
- }
193
- }
194
- }
195
-
196
- /**
197
- * Buffer-size command - configure buffer size
198
- */
199
- export class BufferSizeCommand implements ICommand {
200
- name = 'buffer-size';
201
- description = 'Set log buffer size';
202
- usage = '/buffer-size <size>';
203
-
204
- execute(args: string, logger: Logger): void {
205
- const exportHandler = logger.getExportHandler();
206
- if (!exportHandler) {
207
- logger.error('Export handler not available.');
208
- return;
209
- }
210
-
211
- const size = parseInt(args.trim(), 10);
212
- if (isNaN(size) || size <= 0) {
213
- logger.error('Invalid buffer size. Must be a positive number.');
214
- logger.info('Example: /buffer-size 2000');
215
- return;
216
- }
217
-
218
- exportHandler.setBufferSize(size);
219
- logger.success(`Buffer size set to ${size}`);
220
- }
221
- }
222
-
223
- /**
224
- * Clear-buffer command - clear log buffer
225
- */
226
- export class ClearBufferCommand implements ICommand {
227
- name = 'clear-buffer';
228
- description = 'Clear the log buffer';
229
- usage = '/clear-buffer';
230
-
231
- execute(_args: string, logger: Logger): void {
232
- const exportHandler = logger.getExportHandler();
233
- if (!exportHandler) {
234
- logger.error('Export handler not available.');
235
- return;
236
- }
237
-
238
- const stats = exportHandler.getBufferStats();
239
- exportHandler.clearBuffer();
240
-
241
- logger.success(`✅ Buffer cleared. Removed ${stats.size} log entries.`);
242
- }
243
- }
244
-
245
- /**
246
- * Buffer-info command - show buffer information
247
- */
248
- export class BufferInfoCommand implements ICommand {
249
- name = 'buffer-info';
250
- description = 'Show buffer statistics and information';
251
- usage = '/buffer-info';
252
-
253
- execute(_args: string, logger: Logger): void {
254
- const exportHandler = logger.getExportHandler();
255
- if (!exportHandler) {
256
- logger.error('Export handler not available.');
257
- return;
258
- }
259
-
260
- const stats = exportHandler.getBufferStats();
261
-
262
- logger.group('📊 Buffer Information');
263
- logger.table({
264
- size: `${stats.size}/${stats.maxSize}`,
265
- usage: `${stats.usage.toFixed(1)}%`,
266
- oldestLog: stats.oldestLog?.toLocaleString() || 'None',
267
- newestLog: stats.newestLog?.toLocaleString() || 'None'
268
- });
269
-
270
- logger.group('📈 Log Level Counts');
271
- logger.table(stats.levelCounts);
272
- logger.groupEnd();
273
-
274
- logger.groupEnd();
275
- }
276
- }
@@ -1,117 +0,0 @@
1
- /**
2
- * @fileoverview History management commands for CLI
3
- */
4
-
5
- import type { ICommand } from '../CommandProcessor.js';
6
- import type { Logger } from '../../Logger.js';
7
-
8
- /**
9
- * Show command history
10
- */
11
- export class HistoryCommand implements ICommand {
12
- name = 'history';
13
- description = 'Show command execution history';
14
- usage = '/history [limit] - Show recent commands (default: 10)';
15
- category = 'system';
16
- aliases = ['hist', 'h'];
17
-
18
- execute(args: string, logger: Logger): void {
19
- const processor = (logger as any).cliProcessor;
20
- if (!processor) {
21
- logger.error('CLI processor not available');
22
- return;
23
- }
24
-
25
- const limit = parseInt(args) || 10;
26
- const history = processor.getHistory().slice(0, limit);
27
-
28
- if (history.length === 0) {
29
- logger.info('📝 No command history available');
30
- return;
31
- }
32
-
33
- logger.info(`📋 Last ${history.length} commands:`);
34
-
35
- history.forEach((entry: any, index: number) => {
36
- const status = entry.success ? '✅' : '❌';
37
- const time = entry.timestamp.toLocaleTimeString();
38
- logger.info(`${status} [${time}] ${entry.command}`);
39
- });
40
- }
41
- }
42
-
43
- /**
44
- * Clear command history
45
- */
46
- export class ClearHistoryCommand implements ICommand {
47
- name = 'clearhistory';
48
- description = 'Clear command execution history';
49
- usage = '/clearhistory - Remove all command history';
50
- category = 'system';
51
- aliases = ['clrhist'];
52
-
53
- execute(args: string, logger: Logger): void {
54
- const processor = (logger as any).cliProcessor;
55
- if (!processor) {
56
- logger.error('CLI processor not available');
57
- return;
58
- }
59
-
60
- processor.clearHistory();
61
- logger.success('🗑️ Command history cleared');
62
- }
63
- }
64
-
65
- /**
66
- * Interactive mode command
67
- */
68
- export class InteractiveCommand implements ICommand {
69
- name = 'interactive';
70
- description = 'Enter interactive CLI mode';
71
- usage = '/interactive - Start interactive command mode';
72
- category = 'system';
73
- aliases = ['i', 'repl'];
74
-
75
- execute(args: string, logger: Logger): void {
76
- const processor = (logger as any).cliProcessor;
77
- if (!processor) {
78
- logger.error('CLI processor not available');
79
- return;
80
- }
81
-
82
- processor.enterInteractiveMode(logger);
83
- }
84
- }
85
-
86
- /**
87
- * Plugin management command
88
- */
89
- export class PluginsCommand implements ICommand {
90
- name = 'plugins';
91
- description = 'List loaded CLI plugins';
92
- usage = '/plugins - Show all registered plugins';
93
- category = 'system';
94
- aliases = ['plug'];
95
-
96
- execute(args: string, logger: Logger): void {
97
- const processor = (logger as any).cliProcessor;
98
- if (!processor) {
99
- logger.error('CLI processor not available');
100
- return;
101
- }
102
-
103
- const plugins = processor.getPlugins();
104
-
105
- if (plugins.length === 0) {
106
- logger.info('🔌 No plugins registered');
107
- return;
108
- }
109
-
110
- logger.info(`🔌 Loaded plugins (${plugins.length}):`);
111
-
112
- plugins.forEach((plugin: any) => {
113
- logger.info(` 📦 ${plugin.name} v${plugin.version} - ${plugin.description}`);
114
- logger.info(` Commands: ${plugin.commands.map((c: any) => c.name).join(', ')}`);
115
- });
116
- }
117
- }
@@ -1,112 +0,0 @@
1
- /**
2
- * @fileoverview Status and demo commands for Advanced Logger CLI
3
- */
4
-
5
- import type { ICommand } from '../CommandProcessor.js';
6
- import type { Logger } from '../../Logger.js';
7
-
8
- /**
9
- * Status command - show logger configuration and statistics
10
- */
11
- export class StatusCommand implements ICommand {
12
- name = 'status';
13
- description = 'Show current logger status and configuration';
14
- usage = '/status';
15
-
16
- execute(_args: string, logger: Logger): void {
17
- const config = logger.getConfig();
18
- const statusData = {
19
- theme: config.theme ? config.theme : 'default',
20
- verbosity: config.verbosity,
21
- colors: config.enableColors,
22
- timestamps: config.enableTimestamps,
23
- stackTrace: config.enableStackTrace,
24
- globalPrefix: config.globalPrefix ? config.globalPrefix : 'none',
25
- bannerType: config.bannerType ? config.bannerType : 'simple',
26
- handlers: logger.getHandlers().length,
27
- bufferSize: config.bufferSize ? config.bufferSize : 1000
28
- };
29
-
30
- logger.group('⚙️ Logger Configuration');
31
- logger.table(statusData);
32
- logger.groupEnd();
33
-
34
- // Show buffer stats if ExportLogHandler is present
35
- const exportHandler = logger.getExportHandler();
36
- if (exportHandler) {
37
- const bufferStats = exportHandler.getBufferStats();
38
- logger.group('📊 Buffer Statistics');
39
- logger.table({
40
- size: `${bufferStats.size}/${bufferStats.maxSize}`,
41
- usage: `${bufferStats.usage.toFixed(1)}%`,
42
- oldestLog: bufferStats.oldestLog ? bufferStats.oldestLog.toISOString() : 'None',
43
- newestLog: bufferStats.newestLog ? bufferStats.newestLog.toISOString() : 'None',
44
- errorCount: bufferStats.levelCounts.error + bufferStats.levelCounts.critical,
45
- warningCount: bufferStats.levelCounts.warn
46
- });
47
- logger.groupEnd();
48
- }
49
- }
50
- }
51
-
52
- /**
53
- * Reset command - reset logger to defaults
54
- */
55
- export class ResetCommand implements ICommand {
56
- name = 'reset';
57
- description = 'Reset logger configuration to defaults';
58
- usage = '/reset';
59
-
60
- execute(_args: string, logger: Logger): void {
61
- logger.resetConfig();
62
- }
63
- }
64
-
65
- /**
66
- * Demo command - show logger feature demonstration
67
- */
68
- export class DemoCommand implements ICommand {
69
- name = 'demo';
70
- description = 'Show comprehensive feature demonstration';
71
- usage = '/demo';
72
-
73
- execute(_args: string, logger: Logger): void {
74
- logger.group('🎪 Advanced Logger Demo');
75
-
76
- // Basic logging demo
77
- logger.debug('Debug message with detailed information');
78
- logger.info('Informational message about system state');
79
- logger.warn('Warning about deprecated feature');
80
- logger.error('Error processing user request');
81
- logger.success('Operation completed successfully');
82
- logger.critical('Critical system failure detected');
83
-
84
- // Advanced features demo
85
- logger.group('📊 Advanced Features Demo');
86
-
87
- // Table demo
88
- logger.table([
89
- { feature: 'Styled Console', status: '✅ Active', performance: 'Excellent' },
90
- { feature: 'Theme System', status: '✅ Active', performance: 'Great' },
91
- { feature: 'CLI Interface', status: '✅ Active', performance: 'Good' },
92
- { feature: 'Export System', status: '✅ Active', performance: 'Excellent' }
93
- ]);
94
-
95
- // Timer demo
96
- logger.time('demo-operation');
97
- setTimeout(() => {
98
- logger.timeEnd('demo-operation');
99
- }, 100);
100
-
101
- // SVG demo
102
- logger.logWithSVG('SVG Demo');
103
-
104
- // Animated demo
105
- logger.logAnimated('🌟 Animated Logger Demo 🌟', 2);
106
-
107
- logger.groupEnd();
108
- logger.groupEnd();
109
-
110
- logger.info('Demo completed! Check the console for styled output.');
111
- }
112
- }
@@ -1,88 +0,0 @@
1
- /**
2
- * @fileoverview Theme and banner commands for Advanced Logger CLI
3
- */
4
-
5
- import type { ICommand } from '../CommandProcessor.js';
6
- import type { Logger } from '../../Logger.js';
7
- import type { BannerType } from '../../types/index.js';
8
- import { THEME_PRESETS, BANNER_VARIANTS } from '../../styling/index.js';
9
- import { StyleBuilder } from '../../styling/index.js';
10
-
11
- /**
12
- * Themes command - show available themes
13
- */
14
- export class ThemesCommand implements ICommand {
15
- name = 'themes';
16
- description = 'Show available theme presets';
17
- usage = '/themes';
18
-
19
- execute(_args: string, logger: Logger): void {
20
- logger.group('🎨 Available Themes');
21
- Object.keys(THEME_PRESETS).forEach(themeName => {
22
- const preview = (THEME_PRESETS as any)[themeName];
23
- const previewStyle = new StyleBuilder()
24
- .bg(preview.info.background)
25
- .color(preview.info.color)
26
- .padding('4px 8px')
27
- .rounded('4px')
28
- .border(preview.info.border)
29
- .build();
30
-
31
- console.log(`%c${themeName}`, previewStyle, `- ${themeName} theme preview`);
32
- });
33
- logger.groupEnd();
34
- }
35
- }
36
-
37
- /**
38
- * Banners command - show available banner types
39
- */
40
- export class BannersCommand implements ICommand {
41
- name = 'banners';
42
- description = 'Show available banner types';
43
- usage = '/banners';
44
-
45
- execute(_args: string, logger: Logger): void {
46
- logger.group('🖼️ Available Banner Types');
47
- Object.keys(BANNER_VARIANTS).forEach(bannerName => {
48
- const banner = (BANNER_VARIANTS as any)[bannerName];
49
- console.log(`%c${bannerName}`, 'font-weight: bold; color: #667eea;');
50
- console.log(`%cPreview:`, 'color: #666; font-size: 12px;');
51
-
52
- // Show a mini preview
53
- if (bannerName === 'simple') {
54
- console.log(`%c${banner.text}`, banner.style);
55
- } else if (bannerName === 'ascii') {
56
- console.log(`%c${banner.text.split('\n').slice(1, 4).join('\n')}...`, 'font-family: monospace; color: #667eea; font-size: 10px;');
57
- } else if (bannerName === 'unicode') {
58
- console.log(`%c${banner.text}`, banner.style);
59
- } else {
60
- console.log(`%c${bannerName} banner`, 'color: #666; font-style: italic;');
61
- }
62
- });
63
- logger.groupEnd();
64
- }
65
- }
66
-
67
- /**
68
- * Banner command - change/show banner type
69
- */
70
- export class BannerCommand implements ICommand {
71
- name = 'banner';
72
- description = 'Change or show current banner type';
73
- usage = '/banner [type]';
74
-
75
- execute(args: string, logger: Logger): void {
76
- if (!args) {
77
- logger.showBanner();
78
- return;
79
- }
80
-
81
- if (args in BANNER_VARIANTS) {
82
- logger.setBannerType(args as BannerType);
83
- logger.showBanner();
84
- } else {
85
- logger.error(`Invalid banner type: ${args}. Available: ${Object.keys(BANNER_VARIANTS).join(', ')}`);
86
- }
87
- }
88
- }