@mks2508/better-logger 0.0.2-alpha.2 → 0.8.1-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/.github/workflows/ci-quality.yml +356 -0
  2. package/.github/workflows/docs-demo.yml +123 -0
  3. package/.github/workflows/releases-core.yml +448 -0
  4. package/.github/workflows/releases-full.yml +404 -0
  5. package/.github/{workflows → workflows-backup}/ci.yml +12 -110
  6. package/.github/workflows-backup/nightly.yml +196 -0
  7. package/.github/workflows-backup/release-optimized.yml +373 -0
  8. package/.release-notes-0.2.0.md +129 -0
  9. package/CHANGELOG.json +658 -0
  10. package/README.md +110 -512
  11. package/demo.html +9 -2
  12. package/dist/Logger.d.ts +176 -0
  13. package/dist/Logger.d.ts.map +1 -0
  14. package/dist/Logger.js +498 -0
  15. package/dist/chunks/{Logger-BrFKFZcD.js → Logger-CbCUS5pQ.js} +987 -5
  16. package/dist/chunks/Logger-CbCUS5pQ.js.map +1 -0
  17. package/dist/chunks/Logger-PCfgYKTP.js +2 -0
  18. package/dist/chunks/Logger-PCfgYKTP.js.map +1 -0
  19. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +33 -0
  20. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +1 -0
  21. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +2 -0
  22. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +1 -0
  23. package/dist/chunks/StyleBuilder-BoJTmskd.js +361 -0
  24. package/dist/chunks/StyleBuilder-BoJTmskd.js.map +1 -0
  25. package/dist/chunks/StyleBuilder-LPLzsoHY.js +4 -0
  26. package/dist/chunks/StyleBuilder-LPLzsoHY.js.map +1 -0
  27. package/dist/cli/CommandProcessor.d.ts +40 -0
  28. package/dist/cli/CommandProcessor.d.ts.map +1 -0
  29. package/dist/cli/CommandProcessor.js +57 -0
  30. package/dist/cli/commands/ConfigCommand.d.ts +17 -0
  31. package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
  32. package/dist/cli/commands/ConfigCommand.js +88 -0
  33. package/dist/cli/commands/ExportCommand.d.ts +51 -0
  34. package/dist/cli/commands/ExportCommand.d.ts.map +1 -0
  35. package/dist/cli/commands/ExportCommand.js +243 -0
  36. package/dist/cli/commands/StatusCommand.d.ts +33 -0
  37. package/dist/cli/commands/StatusCommand.d.ts.map +1 -0
  38. package/dist/cli/commands/StatusCommand.js +93 -0
  39. package/dist/cli/commands/ThemeCommand.d.ts +33 -0
  40. package/dist/cli/commands/ThemeCommand.d.ts.map +1 -0
  41. package/dist/cli/commands/ThemeCommand.js +79 -0
  42. package/dist/cli/help.d.ts +15 -0
  43. package/dist/cli/help.d.ts.map +1 -0
  44. package/dist/cli/help.js +118 -0
  45. package/dist/cli/index.d.ts +15 -0
  46. package/dist/cli/index.d.ts.map +1 -0
  47. package/dist/cli/index.js +40 -0
  48. package/dist/constants.d.ts +91 -0
  49. package/dist/constants.d.ts.map +1 -0
  50. package/dist/constants.js +80 -0
  51. package/dist/core.cjs +1 -1
  52. package/dist/core.cjs.map +1 -1
  53. package/dist/core.d.ts +130 -0
  54. package/dist/core.d.ts.map +1 -0
  55. package/dist/core.js +258 -242
  56. package/dist/core.js.map +1 -1
  57. package/dist/example.d.ts +18 -0
  58. package/dist/example.d.ts.map +1 -0
  59. package/dist/example.js +154 -0
  60. package/dist/exports-module.d.ts +203 -0
  61. package/dist/exports-module.d.ts.map +1 -0
  62. package/dist/exports-module.js +260 -0
  63. package/dist/exports.cjs +1 -1
  64. package/dist/exports.cjs.map +1 -1
  65. package/dist/exports.js +2 -2
  66. package/dist/handlers/AnalyticsLogHandler.d.ts +11 -0
  67. package/dist/handlers/AnalyticsLogHandler.d.ts.map +1 -0
  68. package/dist/handlers/AnalyticsLogHandler.js +19 -0
  69. package/dist/handlers/ExportLogHandler.d.ts +103 -0
  70. package/dist/handlers/ExportLogHandler.d.ts.map +1 -0
  71. package/dist/handlers/ExportLogHandler.js +516 -0
  72. package/dist/handlers/FileLogHandler.d.ts +13 -0
  73. package/dist/handlers/FileLogHandler.d.ts.map +1 -0
  74. package/dist/handlers/FileLogHandler.js +24 -0
  75. package/dist/handlers/RemoteLogHandler.d.ts +14 -0
  76. package/dist/handlers/RemoteLogHandler.d.ts.map +1 -0
  77. package/dist/handlers/RemoteLogHandler.js +37 -0
  78. package/dist/handlers/index.d.ts +8 -0
  79. package/dist/handlers/index.d.ts.map +1 -0
  80. package/dist/handlers/index.js +7 -0
  81. package/dist/index.cjs +1 -1
  82. package/dist/index.cjs.map +1 -1
  83. package/dist/index.d.ts +86 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +89 -103
  86. package/dist/main.d.ts +2 -0
  87. package/dist/main.d.ts.map +1 -0
  88. package/dist/main.js +139 -0
  89. package/dist/styling/StyleBuilder.d.ts +132 -0
  90. package/dist/styling/StyleBuilder.d.ts.map +1 -0
  91. package/dist/styling/StyleBuilder.js +268 -0
  92. package/dist/styling/banners.d.ts +45 -0
  93. package/dist/styling/banners.d.ts.map +1 -0
  94. package/dist/styling/banners.js +155 -0
  95. package/dist/styling/index.d.ts +7 -0
  96. package/dist/styling/index.d.ts.map +1 -0
  97. package/dist/styling/index.js +6 -0
  98. package/dist/styling/themes.d.ts +10 -0
  99. package/dist/styling/themes.d.ts.map +1 -0
  100. package/dist/styling/themes.js +231 -0
  101. package/dist/styling-module.d.ts +185 -0
  102. package/dist/styling-module.d.ts.map +1 -0
  103. package/dist/styling-module.js +199 -0
  104. package/dist/styling.cjs +1 -1
  105. package/dist/styling.cjs.map +1 -1
  106. package/dist/styling.js +4 -4
  107. package/dist/types/Logger.d.ts +172 -0
  108. package/dist/types/Logger.d.ts.map +1 -0
  109. package/dist/types/cli/CommandProcessor.d.ts +37 -0
  110. package/dist/types/cli/CommandProcessor.d.ts.map +1 -0
  111. package/dist/types/cli/commands/ConfigCommand.d.ts +14 -0
  112. package/dist/types/cli/commands/ConfigCommand.d.ts.map +1 -0
  113. package/dist/types/cli/commands/ExportCommand.d.ts +48 -0
  114. package/dist/types/cli/commands/ExportCommand.d.ts.map +1 -0
  115. package/dist/types/cli/commands/StatusCommand.d.ts +30 -0
  116. package/dist/types/cli/commands/StatusCommand.d.ts.map +1 -0
  117. package/dist/types/cli/commands/ThemeCommand.d.ts +30 -0
  118. package/dist/types/cli/commands/ThemeCommand.d.ts.map +1 -0
  119. package/dist/types/cli/help.d.ts +12 -0
  120. package/dist/types/cli/help.d.ts.map +1 -0
  121. package/dist/types/cli/index.d.ts +15 -0
  122. package/dist/types/cli/index.d.ts.map +1 -0
  123. package/dist/types/constants.d.ts +88 -0
  124. package/dist/types/constants.d.ts.map +1 -0
  125. package/dist/types/core.d.ts +71 -211
  126. package/dist/types/core.d.ts.map +1 -0
  127. package/dist/types/core.js +13 -0
  128. package/dist/types/example.d.ts +18 -0
  129. package/dist/types/example.d.ts.map +1 -0
  130. package/dist/types/exports-module.d.ts +196 -0
  131. package/dist/types/exports-module.d.ts.map +1 -0
  132. package/dist/types/handlers/AnalyticsLogHandler.d.ts +8 -0
  133. package/dist/types/handlers/AnalyticsLogHandler.d.ts.map +1 -0
  134. package/dist/types/handlers/ExportLogHandler.d.ts +100 -0
  135. package/dist/types/handlers/ExportLogHandler.d.ts.map +1 -0
  136. package/dist/types/handlers/FileLogHandler.d.ts +10 -0
  137. package/dist/types/handlers/FileLogHandler.d.ts.map +1 -0
  138. package/dist/types/handlers/RemoteLogHandler.d.ts +11 -0
  139. package/dist/types/handlers/RemoteLogHandler.d.ts.map +1 -0
  140. package/dist/types/handlers/index.d.ts +8 -0
  141. package/dist/types/handlers/index.d.ts.map +1 -0
  142. package/dist/types/handlers.d.ts +88 -0
  143. package/dist/types/handlers.d.ts.map +1 -0
  144. package/dist/types/handlers.js +4 -0
  145. package/dist/types/index.d.ts +7 -675
  146. package/dist/types/index.d.ts.map +1 -0
  147. package/dist/types/index.js +4 -0
  148. package/dist/types/main.d.ts +2 -0
  149. package/dist/types/main.d.ts.map +1 -0
  150. package/dist/types/styling/StyleBuilder.d.ts +132 -0
  151. package/dist/types/styling/StyleBuilder.d.ts.map +1 -0
  152. package/dist/types/styling/banners.d.ts +42 -0
  153. package/dist/types/styling/banners.d.ts.map +1 -0
  154. package/dist/types/styling/index.d.ts +7 -0
  155. package/dist/types/styling/index.d.ts.map +1 -0
  156. package/dist/types/styling/themes.d.ts +7 -0
  157. package/dist/types/styling/themes.d.ts.map +1 -0
  158. package/dist/types/styling-module.d.ts +178 -0
  159. package/dist/types/styling-module.d.ts.map +1 -0
  160. package/dist/types/types/core.d.ts +71 -0
  161. package/dist/types/types/core.d.ts.map +1 -0
  162. package/dist/types/types/handlers.d.ts +85 -0
  163. package/dist/types/types/handlers.d.ts.map +1 -0
  164. package/dist/types/types/index.d.ts +7 -0
  165. package/dist/types/types/index.d.ts.map +1 -0
  166. package/dist/types/utils/index.d.ts +7 -0
  167. package/dist/types/utils/index.d.ts.map +1 -0
  168. package/dist/types/utils/output.d.ts +29 -0
  169. package/dist/types/utils/output.d.ts.map +1 -0
  170. package/dist/types/utils/stackTrace.d.ts +6 -0
  171. package/dist/types/utils/stackTrace.d.ts.map +1 -0
  172. package/dist/types/utils/timestamps.d.ts +20 -0
  173. package/dist/types/utils/timestamps.d.ts.map +1 -0
  174. package/dist/utils/index.d.ts +7 -0
  175. package/dist/utils/index.d.ts.map +1 -0
  176. package/dist/utils/index.js +6 -0
  177. package/dist/utils/output.d.ts +32 -0
  178. package/dist/utils/output.d.ts.map +1 -0
  179. package/dist/utils/output.js +97 -0
  180. package/dist/utils/stackTrace.d.ts +9 -0
  181. package/dist/utils/stackTrace.d.ts.map +1 -0
  182. package/dist/utils/stackTrace.js +81 -0
  183. package/dist/utils/timestamps.d.ts +20 -0
  184. package/dist/utils/timestamps.d.ts.map +1 -0
  185. package/dist/utils/timestamps.js +71 -0
  186. package/docs/API.md +607 -0
  187. package/docs/DEVELOPMENT.md +731 -0
  188. package/docs/_config.yml +36 -0
  189. package/docs/index.md +179 -0
  190. package/examples/README.md +208 -0
  191. package/examples/basic-logging.js +75 -0
  192. package/examples/data-export.js +234 -0
  193. package/examples/package.json +16 -0
  194. package/examples/performance-timing.js +170 -0
  195. package/examples/styling-themes.js +207 -0
  196. package/package.json +24 -21
  197. package/packages/core/package.json +35 -0
  198. package/packages/exports/package.json +41 -0
  199. package/packages/styling/package.json +41 -0
  200. package/project-utils/README.md +172 -0
  201. package/project-utils/auto-release-gemini.ts +1193 -0
  202. package/project-utils/commit-generator.ts +1000 -0
  203. package/project-utils/commit-ui.ts +246 -0
  204. package/project-utils/git-utils.ts +199 -0
  205. package/project-utils/github-release-manager.ts +466 -0
  206. package/project-utils/prompt-templates.js +345 -0
  207. package/project-utils/prompt-templates.ts +422 -0
  208. package/project-utils/version-manager.ts +1078 -0
  209. package/src/Logger.ts +2 -1
  210. package/src/handlers/ExportLogHandler.ts +141 -0
  211. package/vite.config.ts +152 -50
  212. package/.claude/settings.local.json +0 -22
  213. package/.npmrc.bak +0 -1
  214. package/dist/chunks/Logger-BQhMKy_T.js +0 -2
  215. package/dist/chunks/Logger-BQhMKy_T.js.map +0 -1
  216. package/dist/chunks/Logger-BrFKFZcD.js.map +0 -1
  217. package/dist/chunks/core-2opW4Pi3.js +0 -194
  218. package/dist/chunks/core-2opW4Pi3.js.map +0 -1
  219. package/dist/chunks/core-DyugwSYZ.js +0 -4
  220. package/dist/chunks/core-DyugwSYZ.js.map +0 -1
  221. package/dist/chunks/exports-BNP3R7dp.js +0 -421
  222. package/dist/chunks/exports-BNP3R7dp.js.map +0 -1
  223. package/dist/chunks/exports-U1xLBXrY.js +0 -2
  224. package/dist/chunks/exports-U1xLBXrY.js.map +0 -1
  225. package/dist/chunks/styling-DhUDzwlE.js +0 -654
  226. package/dist/chunks/styling-DhUDzwlE.js.map +0 -1
  227. package/dist/chunks/styling-tmRDI28D.js +0 -2
  228. package/dist/chunks/styling-tmRDI28D.js.map +0 -1
  229. package/dist/types/exports.d.ts +0 -600
  230. package/dist/types/styling.d.ts +0 -751
  231. /package/.github/{workflows → workflows-backup}/release.yml +0 -0
@@ -0,0 +1,88 @@
1
+ /**
2
+ * @fileoverview Configuration commands for Advanced Logger CLI
3
+ */
4
+ /**
5
+ * Configuration command handler
6
+ */
7
+ export class ConfigCommand {
8
+ name = 'config';
9
+ description = 'Show or update logger configuration';
10
+ usage = '/config [json|key=value,...]';
11
+ execute(args, logger) {
12
+ if (!args) {
13
+ this.showStatus(logger);
14
+ return;
15
+ }
16
+ try {
17
+ // Try to parse as JSON first
18
+ if (args.startsWith('{')) {
19
+ const config = JSON.parse(args);
20
+ this.applyConfig(config, logger);
21
+ }
22
+ else {
23
+ // Parse key=value pairs
24
+ const pairs = args.split(',').map(pair => pair.trim().split('='));
25
+ const config = {};
26
+ pairs.forEach(([key, value]) => {
27
+ if (key && value) {
28
+ config[key.trim()] = value.trim().replace(/["']/g, '');
29
+ }
30
+ });
31
+ this.applyConfig(config, logger);
32
+ }
33
+ }
34
+ catch (error) {
35
+ logger.error('Invalid config format. Use JSON or key=value pairs:', error);
36
+ logger.info('Examples: /config {"theme":"dark"} or /config theme=neon,verbosity=debug');
37
+ }
38
+ }
39
+ showStatus(logger) {
40
+ const statusData = {
41
+ theme: logger.getConfig().theme || 'default',
42
+ verbosity: logger.getConfig().verbosity,
43
+ colors: logger.getConfig().enableColors,
44
+ timestamps: logger.getConfig().enableTimestamps,
45
+ stackTrace: logger.getConfig().enableStackTrace,
46
+ globalPrefix: logger.getConfig().globalPrefix || 'none',
47
+ bannerType: logger.getConfig().bannerType || 'simple',
48
+ handlers: logger.getHandlers().length
49
+ };
50
+ logger.group('⚙️ Logger Configuration');
51
+ logger.table(statusData);
52
+ logger.groupEnd();
53
+ }
54
+ applyConfig(config, logger) {
55
+ const validKeys = ['theme', 'verbosity', 'enableColors', 'enableTimestamps', 'enableStackTrace', 'globalPrefix', 'bannerType'];
56
+ const applied = [];
57
+ Object.entries(config).forEach(([key, value]) => {
58
+ if (validKeys.includes(key)) {
59
+ if (key === 'theme' && typeof value === 'string') {
60
+ logger.setTheme(value);
61
+ applied.push(`${key}=${value}`);
62
+ }
63
+ else if (key === 'bannerType' && typeof value === 'string') {
64
+ logger.setBannerType(value);
65
+ applied.push(`${key}=${value}`);
66
+ }
67
+ else if (key === 'verbosity') {
68
+ logger.setVerbosity(value);
69
+ applied.push(`${key}=${value}`);
70
+ }
71
+ else if (key === 'globalPrefix') {
72
+ logger.setGlobalPrefix(value);
73
+ applied.push(`${key}=${value}`);
74
+ }
75
+ else {
76
+ logger.updateConfig({ [key]: value });
77
+ applied.push(`${key}=${value}`);
78
+ }
79
+ }
80
+ else {
81
+ logger.warn(`Invalid config key: ${key}`);
82
+ }
83
+ });
84
+ if (applied.length > 0) {
85
+ logger.success(`Configuration updated: ${applied.join(', ')}`);
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @fileoverview Export and clipboard commands for Advanced Logger CLI
3
+ */
4
+ import type { ICommand } from '../CommandProcessor.js';
5
+ import type { Logger } from '../../Logger.js';
6
+ /**
7
+ * Export command - export logs in various formats
8
+ */
9
+ export declare class ExportCommand implements ICommand {
10
+ name: string;
11
+ description: string;
12
+ usage: string;
13
+ execute(args: string, logger: Logger): void;
14
+ }
15
+ /**
16
+ * Copy command - copy logs to clipboard
17
+ */
18
+ export declare class CopyCommand implements ICommand {
19
+ name: string;
20
+ description: string;
21
+ usage: string;
22
+ execute(args: string, logger: Logger): Promise<void>;
23
+ }
24
+ /**
25
+ * Buffer-size command - configure buffer size
26
+ */
27
+ export declare class BufferSizeCommand implements ICommand {
28
+ name: string;
29
+ description: string;
30
+ usage: string;
31
+ execute(args: string, logger: Logger): void;
32
+ }
33
+ /**
34
+ * Clear-buffer command - clear log buffer
35
+ */
36
+ export declare class ClearBufferCommand implements ICommand {
37
+ name: string;
38
+ description: string;
39
+ usage: string;
40
+ execute(_args: string, logger: Logger): void;
41
+ }
42
+ /**
43
+ * Buffer-info command - show buffer information
44
+ */
45
+ export declare class BufferInfoCommand implements ICommand {
46
+ name: string;
47
+ description: string;
48
+ usage: string;
49
+ execute(_args: string, logger: Logger): void;
50
+ }
51
+ //# sourceMappingURL=ExportCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ExportCommand.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAiG9C;;GAEG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC1C,IAAI,SAAY;IAChB,WAAW,SAAoC;IAC/C,KAAK,SAAkD;IAEvD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CA2C9C;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,QAAQ;IACxC,IAAI,SAAU;IACd,WAAW,SAA4B;IACvC,KAAK,SAAgD;IAE/C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA8B7D;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,QAAQ;IAC9C,IAAI,SAAiB;IACrB,WAAW,SAAyB;IACpC,KAAK,SAAyB;IAE9B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAiB9C;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,QAAQ;IAC/C,IAAI,SAAkB;IACtB,WAAW,SAA0B;IACrC,KAAK,SAAmB;IAExB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAY/C;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,QAAQ;IAC9C,IAAI,SAAiB;IACrB,WAAW,SAA4C;IACvD,KAAK,SAAkB;IAEvB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAuB/C"}
@@ -0,0 +1,243 @@
1
+ /**
2
+ * @fileoverview Export and clipboard commands for Advanced Logger CLI
3
+ */
4
+ import { EXPORT_FORMATS } from '../../constants.js';
5
+ /**
6
+ * Parse command line arguments into filters and options
7
+ */
8
+ function parseArguments(args) {
9
+ const filters = {};
10
+ const options = {};
11
+ let format;
12
+ if (!args.trim())
13
+ return { filters, options };
14
+ // Split args by spaces, but keep quoted strings together
15
+ const argParts = args.match(/(?:[^\s"]+|"[^"]*")+/g) || [];
16
+ for (let i = 0; i < argParts.length; i++) {
17
+ const arg = argParts[i];
18
+ // Skip if arg is null/undefined
19
+ if (!arg) {
20
+ continue;
21
+ }
22
+ // Format (first argument without --)
23
+ if (i === 0 && !arg.startsWith('--') && arg in EXPORT_FORMATS) {
24
+ format = arg;
25
+ continue;
26
+ }
27
+ // Parse --flags
28
+ if (arg.startsWith('--')) {
29
+ const [flag, value] = arg.slice(2).split('=');
30
+ switch (flag) {
31
+ case 'level':
32
+ case 'levels':
33
+ if (value) {
34
+ filters.levels = value.split(',').map(l => l.trim());
35
+ }
36
+ break;
37
+ case 'since':
38
+ if (value)
39
+ filters.since = value;
40
+ break;
41
+ case 'until':
42
+ if (value)
43
+ filters.until = value;
44
+ break;
45
+ case 'prefix':
46
+ case 'prefixes':
47
+ if (value) {
48
+ filters.prefixes = value.split(',').map(p => p.trim());
49
+ }
50
+ break;
51
+ case 'exclude-prefix':
52
+ case 'exclude-prefixes':
53
+ if (value) {
54
+ filters.excludePrefixes = value.split(',').map(p => p.trim());
55
+ }
56
+ break;
57
+ case 'last':
58
+ if (value)
59
+ filters.last = parseInt(value, 10);
60
+ break;
61
+ case 'first':
62
+ if (value)
63
+ filters.first = parseInt(value, 10);
64
+ break;
65
+ case 'search':
66
+ if (value)
67
+ filters.search = value.replace(/['"]/g, '');
68
+ break;
69
+ case 'with-stack':
70
+ filters.withStackTrace = true;
71
+ break;
72
+ case 'errors-only':
73
+ filters.errorsOnly = true;
74
+ break;
75
+ case 'group-by':
76
+ if (value) {
77
+ filters.groupBy = value;
78
+ options.groupBy = value;
79
+ }
80
+ break;
81
+ case 'minimal':
82
+ options.minimal = true;
83
+ break;
84
+ case 'compact':
85
+ options.compact = true;
86
+ break;
87
+ case 'styled':
88
+ options.styled = true;
89
+ break;
90
+ }
91
+ }
92
+ }
93
+ return { filters, options, format };
94
+ }
95
+ /**
96
+ * Export command - export logs in various formats
97
+ */
98
+ export class ExportCommand {
99
+ name = 'export';
100
+ description = 'Export logs to various formats';
101
+ usage = '/export <format> [--filter=value] [--option]';
102
+ execute(args, logger) {
103
+ const exportHandler = logger.getExportHandler();
104
+ if (!exportHandler) {
105
+ logger.error('Export handler not available. Make sure ExportLogHandler is registered.');
106
+ return;
107
+ }
108
+ const { filters, options, format } = parseArguments(args);
109
+ if (!format) {
110
+ logger.error('Format required. Available formats: ' + Object.keys(EXPORT_FORMATS).join(', '));
111
+ logger.info('Usage: /export <format> [--filter=value]');
112
+ logger.info('Example: /export json --level=error,warn --last=50');
113
+ return;
114
+ }
115
+ try {
116
+ const result = exportHandler.export(format, filters, options);
117
+ // Log success with metadata
118
+ logger.success(`✅ Export completed: ${result.metadata.filteredLogs} logs exported in ${format} format`);
119
+ // Show preview for small exports
120
+ if (result.data.length < 1000) {
121
+ logger.group(`📄 Preview (${format.toUpperCase()})`);
122
+ console.log(result.data);
123
+ logger.groupEnd();
124
+ }
125
+ else {
126
+ logger.info(`📄 Export size: ${(result.data.length / 1024).toFixed(2)}KB`);
127
+ }
128
+ // Show metadata
129
+ logger.table({
130
+ format: result.format,
131
+ totalLogs: result.metadata.totalLogs,
132
+ filtered: result.metadata.filteredLogs,
133
+ exported: result.metadata.exportedAt
134
+ });
135
+ }
136
+ catch (error) {
137
+ logger.error('Export failed:', error);
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * Copy command - copy logs to clipboard
143
+ */
144
+ export class CopyCommand {
145
+ name = 'copy';
146
+ description = 'Copy logs to clipboard';
147
+ usage = '/copy <format> [--filter=value] [--option]';
148
+ async execute(args, logger) {
149
+ const exportHandler = logger.getExportHandler();
150
+ if (!exportHandler) {
151
+ logger.error('Export handler not available. Make sure ExportLogHandler is registered.');
152
+ return;
153
+ }
154
+ const { filters, options, format } = parseArguments(args);
155
+ if (!format) {
156
+ logger.error('Format required. Available formats: ' + Object.keys(EXPORT_FORMATS).join(', '));
157
+ logger.info('Usage: /copy <format> [--filter=value]');
158
+ logger.info('Example: /copy plain --level=error --last=25');
159
+ return;
160
+ }
161
+ try {
162
+ const success = await exportHandler.copyToClipboard(format, filters, options);
163
+ if (success) {
164
+ const result = exportHandler.export(format, filters, options);
165
+ logger.success(`📋 Copied ${result.metadata.filteredLogs} logs to clipboard (${format} format)`);
166
+ }
167
+ else {
168
+ logger.error('Failed to copy to clipboard. Browser may not support clipboard API.');
169
+ }
170
+ }
171
+ catch (error) {
172
+ logger.error('Copy failed:', error);
173
+ }
174
+ }
175
+ }
176
+ /**
177
+ * Buffer-size command - configure buffer size
178
+ */
179
+ export class BufferSizeCommand {
180
+ name = 'buffer-size';
181
+ description = 'Set log buffer size';
182
+ usage = '/buffer-size <size>';
183
+ execute(args, logger) {
184
+ const exportHandler = logger.getExportHandler();
185
+ if (!exportHandler) {
186
+ logger.error('Export handler not available.');
187
+ return;
188
+ }
189
+ const size = parseInt(args.trim(), 10);
190
+ if (isNaN(size) || size <= 0) {
191
+ logger.error('Invalid buffer size. Must be a positive number.');
192
+ logger.info('Example: /buffer-size 2000');
193
+ return;
194
+ }
195
+ exportHandler.setBufferSize(size);
196
+ logger.success(`Buffer size set to ${size}`);
197
+ }
198
+ }
199
+ /**
200
+ * Clear-buffer command - clear log buffer
201
+ */
202
+ export class ClearBufferCommand {
203
+ name = 'clear-buffer';
204
+ description = 'Clear the log buffer';
205
+ usage = '/clear-buffer';
206
+ execute(_args, logger) {
207
+ const exportHandler = logger.getExportHandler();
208
+ if (!exportHandler) {
209
+ logger.error('Export handler not available.');
210
+ return;
211
+ }
212
+ const stats = exportHandler.getBufferStats();
213
+ exportHandler.clearBuffer();
214
+ logger.success(`✅ Buffer cleared. Removed ${stats.size} log entries.`);
215
+ }
216
+ }
217
+ /**
218
+ * Buffer-info command - show buffer information
219
+ */
220
+ export class BufferInfoCommand {
221
+ name = 'buffer-info';
222
+ description = 'Show buffer statistics and information';
223
+ usage = '/buffer-info';
224
+ execute(_args, logger) {
225
+ const exportHandler = logger.getExportHandler();
226
+ if (!exportHandler) {
227
+ logger.error('Export handler not available.');
228
+ return;
229
+ }
230
+ const stats = exportHandler.getBufferStats();
231
+ logger.group('📊 Buffer Information');
232
+ logger.table({
233
+ size: `${stats.size}/${stats.maxSize}`,
234
+ usage: `${stats.usage.toFixed(1)}%`,
235
+ oldestLog: stats.oldestLog?.toLocaleString() || 'None',
236
+ newestLog: stats.newestLog?.toLocaleString() || 'None'
237
+ });
238
+ logger.group('📈 Log Level Counts');
239
+ logger.table(stats.levelCounts);
240
+ logger.groupEnd();
241
+ logger.groupEnd();
242
+ }
243
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @fileoverview Status and demo commands for Advanced Logger CLI
3
+ */
4
+ import type { ICommand } from '../CommandProcessor.js';
5
+ import type { Logger } from '../../Logger.js';
6
+ /**
7
+ * Status command - show logger configuration and statistics
8
+ */
9
+ export declare class StatusCommand implements ICommand {
10
+ name: string;
11
+ description: string;
12
+ usage: string;
13
+ execute(_args: string, logger: Logger): void;
14
+ }
15
+ /**
16
+ * Reset command - reset logger to defaults
17
+ */
18
+ export declare class ResetCommand implements ICommand {
19
+ name: string;
20
+ description: string;
21
+ usage: string;
22
+ execute(_args: string, logger: Logger): void;
23
+ }
24
+ /**
25
+ * Demo command - show logger feature demonstration
26
+ */
27
+ export declare class DemoCommand implements ICommand {
28
+ name: string;
29
+ description: string;
30
+ usage: string;
31
+ execute(_args: string, logger: Logger): void;
32
+ }
33
+ //# sourceMappingURL=StatusCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/StatusCommand.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC1C,IAAI,SAAY;IAChB,WAAW,SAAkD;IAC7D,KAAK,SAAa;IAElB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAkC/C;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,QAAQ;IACzC,IAAI,SAAW;IACf,WAAW,SAA4C;IACvD,KAAK,SAAY;IAEjB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAG/C;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,QAAQ;IACxC,IAAI,SAAU;IACd,WAAW,SAA8C;IACzD,KAAK,SAAW;IAEhB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAuC/C"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * @fileoverview Status and demo commands for Advanced Logger CLI
3
+ */
4
+ /**
5
+ * Status command - show logger configuration and statistics
6
+ */
7
+ export class StatusCommand {
8
+ name = 'status';
9
+ description = 'Show current logger status and configuration';
10
+ usage = '/status';
11
+ execute(_args, logger) {
12
+ const config = logger.getConfig();
13
+ const statusData = {
14
+ theme: config.theme ? config.theme : 'default',
15
+ verbosity: config.verbosity,
16
+ colors: config.enableColors,
17
+ timestamps: config.enableTimestamps,
18
+ stackTrace: config.enableStackTrace,
19
+ globalPrefix: config.globalPrefix ? config.globalPrefix : 'none',
20
+ bannerType: config.bannerType ? config.bannerType : 'simple',
21
+ handlers: logger.getHandlers().length,
22
+ bufferSize: config.bufferSize ? config.bufferSize : 1000
23
+ };
24
+ logger.group('⚙️ Logger Configuration');
25
+ logger.table(statusData);
26
+ logger.groupEnd();
27
+ // Show buffer stats if ExportLogHandler is present
28
+ const exportHandler = logger.getExportHandler();
29
+ if (exportHandler) {
30
+ const bufferStats = exportHandler.getBufferStats();
31
+ logger.group('📊 Buffer Statistics');
32
+ logger.table({
33
+ size: `${bufferStats.size}/${bufferStats.maxSize}`,
34
+ usage: `${bufferStats.usage.toFixed(1)}%`,
35
+ oldestLog: bufferStats.oldestLog ? bufferStats.oldestLog.toISOString() : 'None',
36
+ newestLog: bufferStats.newestLog ? bufferStats.newestLog.toISOString() : 'None',
37
+ errorCount: bufferStats.levelCounts.error + bufferStats.levelCounts.critical,
38
+ warningCount: bufferStats.levelCounts.warn
39
+ });
40
+ logger.groupEnd();
41
+ }
42
+ }
43
+ }
44
+ /**
45
+ * Reset command - reset logger to defaults
46
+ */
47
+ export class ResetCommand {
48
+ name = 'reset';
49
+ description = 'Reset logger configuration to defaults';
50
+ usage = '/reset';
51
+ execute(_args, logger) {
52
+ logger.resetConfig();
53
+ }
54
+ }
55
+ /**
56
+ * Demo command - show logger feature demonstration
57
+ */
58
+ export class DemoCommand {
59
+ name = 'demo';
60
+ description = 'Show comprehensive feature demonstration';
61
+ usage = '/demo';
62
+ execute(_args, logger) {
63
+ logger.group('🎪 Advanced Logger Demo');
64
+ // Basic logging demo
65
+ logger.debug('Debug message with detailed information');
66
+ logger.info('Informational message about system state');
67
+ logger.warn('Warning about deprecated feature');
68
+ logger.error('Error processing user request');
69
+ logger.success('Operation completed successfully');
70
+ logger.critical('Critical system failure detected');
71
+ // Advanced features demo
72
+ logger.group('📊 Advanced Features Demo');
73
+ // Table demo
74
+ logger.table([
75
+ { feature: 'Styled Console', status: '✅ Active', performance: 'Excellent' },
76
+ { feature: 'Theme System', status: '✅ Active', performance: 'Great' },
77
+ { feature: 'CLI Interface', status: '✅ Active', performance: 'Good' },
78
+ { feature: 'Export System', status: '✅ Active', performance: 'Excellent' }
79
+ ]);
80
+ // Timer demo
81
+ logger.time('demo-operation');
82
+ setTimeout(() => {
83
+ logger.timeEnd('demo-operation');
84
+ }, 100);
85
+ // SVG demo
86
+ logger.logWithSVG('SVG Demo');
87
+ // Animated demo
88
+ logger.logAnimated('🌟 Animated Logger Demo 🌟', 2);
89
+ logger.groupEnd();
90
+ logger.groupEnd();
91
+ logger.info('Demo completed! Check the console for styled output.');
92
+ }
93
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @fileoverview Theme and banner commands for Advanced Logger CLI
3
+ */
4
+ import type { ICommand } from '../CommandProcessor.js';
5
+ import type { Logger } from '../../Logger.js';
6
+ /**
7
+ * Themes command - show available themes
8
+ */
9
+ export declare class ThemesCommand implements ICommand {
10
+ name: string;
11
+ description: string;
12
+ usage: string;
13
+ execute(_args: string, logger: Logger): void;
14
+ }
15
+ /**
16
+ * Banners command - show available banner types
17
+ */
18
+ export declare class BannersCommand implements ICommand {
19
+ name: string;
20
+ description: string;
21
+ usage: string;
22
+ execute(_args: string, logger: Logger): void;
23
+ }
24
+ /**
25
+ * Banner command - change/show banner type
26
+ */
27
+ export declare class BannerCommand implements ICommand {
28
+ name: string;
29
+ description: string;
30
+ usage: string;
31
+ execute(args: string, logger: Logger): void;
32
+ }
33
+ //# sourceMappingURL=ThemeCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ThemeCommand.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAK9C;;GAEG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC1C,IAAI,SAAY;IAChB,WAAW,SAAkC;IAC7C,KAAK,SAAa;IAElB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAgB/C;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC3C,IAAI,SAAa;IACjB,WAAW,SAAiC;IAC5C,KAAK,SAAc;IAEnB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAoB/C;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC1C,IAAI,SAAY;IAChB,WAAW,SAAwC;IACnD,KAAK,SAAoB;IAEzB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAa9C"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @fileoverview Theme and banner commands for Advanced Logger CLI
3
+ */
4
+ import { THEME_PRESETS, BANNER_VARIANTS } from '../../styling/index.js';
5
+ import { StyleBuilder } from '../../styling/index.js';
6
+ /**
7
+ * Themes command - show available themes
8
+ */
9
+ export class ThemesCommand {
10
+ name = 'themes';
11
+ description = 'Show available theme presets';
12
+ usage = '/themes';
13
+ execute(_args, logger) {
14
+ logger.group('🎨 Available Themes');
15
+ Object.keys(THEME_PRESETS).forEach(themeName => {
16
+ const preview = THEME_PRESETS[themeName];
17
+ const previewStyle = new StyleBuilder()
18
+ .bg(preview.info.background)
19
+ .color(preview.info.color)
20
+ .padding('4px 8px')
21
+ .rounded('4px')
22
+ .border(preview.info.border)
23
+ .build();
24
+ console.log(`%c${themeName}`, previewStyle, `- ${themeName} theme preview`);
25
+ });
26
+ logger.groupEnd();
27
+ }
28
+ }
29
+ /**
30
+ * Banners command - show available banner types
31
+ */
32
+ export class BannersCommand {
33
+ name = 'banners';
34
+ description = 'Show available banner types';
35
+ usage = '/banners';
36
+ execute(_args, logger) {
37
+ logger.group('🖼️ Available Banner Types');
38
+ Object.keys(BANNER_VARIANTS).forEach(bannerName => {
39
+ const banner = BANNER_VARIANTS[bannerName];
40
+ console.log(`%c${bannerName}`, 'font-weight: bold; color: #667eea;');
41
+ console.log(`%cPreview:`, 'color: #666; font-size: 12px;');
42
+ // Show a mini preview
43
+ if (bannerName === 'simple') {
44
+ console.log(`%c${banner.text}`, banner.style);
45
+ }
46
+ else if (bannerName === 'ascii') {
47
+ console.log(`%c${banner.text.split('\n').slice(1, 4).join('\n')}...`, 'font-family: monospace; color: #667eea; font-size: 10px;');
48
+ }
49
+ else if (bannerName === 'unicode') {
50
+ console.log(`%c${banner.text}`, banner.style);
51
+ }
52
+ else {
53
+ console.log(`%c${bannerName} banner`, 'color: #666; font-style: italic;');
54
+ }
55
+ });
56
+ logger.groupEnd();
57
+ }
58
+ }
59
+ /**
60
+ * Banner command - change/show banner type
61
+ */
62
+ export class BannerCommand {
63
+ name = 'banner';
64
+ description = 'Change or show current banner type';
65
+ usage = '/banner [type]';
66
+ execute(args, logger) {
67
+ if (!args) {
68
+ logger.showBanner();
69
+ return;
70
+ }
71
+ if (args in BANNER_VARIANTS) {
72
+ logger.setBannerType(args);
73
+ logger.showBanner();
74
+ }
75
+ else {
76
+ logger.error(`Invalid banner type: ${args}. Available: ${Object.keys(BANNER_VARIANTS).join(', ')}`);
77
+ }
78
+ }
79
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @fileoverview Help system for Advanced Logger CLI
3
+ */
4
+ import type { ICommand } from './CommandProcessor.js';
5
+ import type { Logger } from '../Logger.js';
6
+ /**
7
+ * Help command - show comprehensive CLI help
8
+ */
9
+ export declare class HelpCommand implements ICommand {
10
+ name: string;
11
+ description: string;
12
+ usage: string;
13
+ execute(_args: string, logger: Logger): void;
14
+ }
15
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C;;GAEG;AACH,qBAAa,WAAY,YAAW,QAAQ;IACxC,IAAI,SAAU;IACd,WAAW,SAA0C;IACrD,KAAK,SAAqB;IAE1B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CA8G/C"}