@mks2508/better-logger 0.0.2-alpha.2 → 0.11.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci-quality.yml +357 -0
- package/.github/workflows/docs-demo.yml +119 -0
- package/.github/workflows/releases-core.yml +512 -0
- package/.github/workflows/releases-full.yml +582 -0
- package/.github/{workflows → workflows-backup}/ci.yml +12 -110
- package/.github/workflows-backup/nightly.yml +196 -0
- package/.github/workflows-backup/release-optimized.yml +373 -0
- package/.release-notes-0.2.0.md +129 -0
- package/.yamllint +28 -0
- package/CHANGELOG.json +749 -0
- package/CLAUDE.md +92 -1
- package/README.md +142 -498
- package/bun.lock +323 -0
- package/demo.html +9 -2
- package/dist/Logger.d.ts +176 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +498 -0
- package/dist/chunks/Logger-C2-cR3No.js +2 -0
- package/dist/chunks/Logger-C2-cR3No.js.map +1 -0
- package/dist/chunks/Logger-CVwk8cgA.js +2159 -0
- package/dist/chunks/Logger-CVwk8cgA.js.map +1 -0
- package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +33 -0
- package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +1 -0
- package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +2 -0
- package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +1 -0
- package/dist/chunks/StyleBuilder-BoJTmskd.js +361 -0
- package/dist/chunks/StyleBuilder-BoJTmskd.js.map +1 -0
- package/dist/chunks/StyleBuilder-LPLzsoHY.js +4 -0
- package/dist/chunks/StyleBuilder-LPLzsoHY.js.map +1 -0
- package/dist/cli/CommandProcessor.d.ts +103 -0
- package/dist/cli/CommandProcessor.d.ts.map +1 -0
- package/dist/cli/CommandProcessor.js +184 -0
- package/dist/cli/commands/ConfigCommand.d.ts +17 -0
- package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
- package/dist/cli/commands/ConfigCommand.js +88 -0
- package/dist/cli/commands/ExportCommand.d.ts +51 -0
- package/dist/cli/commands/ExportCommand.d.ts.map +1 -0
- package/dist/cli/commands/ExportCommand.js +243 -0
- package/dist/cli/commands/HistoryCommand.d.ts +50 -0
- package/dist/cli/commands/HistoryCommand.d.ts.map +1 -0
- package/dist/cli/commands/HistoryCommand.js +96 -0
- package/dist/cli/commands/StatusCommand.d.ts +33 -0
- package/dist/cli/commands/StatusCommand.d.ts.map +1 -0
- package/dist/cli/commands/StatusCommand.js +93 -0
- package/dist/cli/commands/ThemeCommand.d.ts +33 -0
- package/dist/cli/commands/ThemeCommand.d.ts.map +1 -0
- package/dist/cli/commands/ThemeCommand.js +79 -0
- package/dist/cli/help.d.ts +15 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +118 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +46 -0
- package/dist/constants.d.ts +91 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +80 -0
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.ts +130 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +258 -242
- package/dist/core.js.map +1 -1
- package/dist/example.d.ts +18 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/example.js +154 -0
- package/dist/exports-module.d.ts +203 -0
- package/dist/exports-module.d.ts.map +1 -0
- package/dist/exports-module.js +260 -0
- package/dist/exports.cjs +1 -1
- package/dist/exports.cjs.map +1 -1
- package/dist/exports.js +2 -2
- package/dist/handlers/AnalyticsLogHandler.d.ts +11 -0
- package/dist/handlers/AnalyticsLogHandler.d.ts.map +1 -0
- package/dist/handlers/AnalyticsLogHandler.js +19 -0
- package/dist/handlers/ExportLogHandler.d.ts +103 -0
- package/dist/handlers/ExportLogHandler.d.ts.map +1 -0
- package/dist/handlers/ExportLogHandler.js +516 -0
- package/dist/handlers/FileLogHandler.d.ts +13 -0
- package/dist/handlers/FileLogHandler.d.ts.map +1 -0
- package/dist/handlers/FileLogHandler.js +24 -0
- package/dist/handlers/RemoteLogHandler.d.ts +14 -0
- package/dist/handlers/RemoteLogHandler.d.ts.map +1 -0
- package/dist/handlers/RemoteLogHandler.js +37 -0
- package/dist/handlers/index.d.ts +8 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +7 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +86 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +89 -103
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +139 -0
- package/dist/styling/StyleBuilder.d.ts +132 -0
- package/dist/styling/StyleBuilder.d.ts.map +1 -0
- package/dist/styling/StyleBuilder.js +268 -0
- package/dist/styling/banners.d.ts +45 -0
- package/dist/styling/banners.d.ts.map +1 -0
- package/dist/styling/banners.js +155 -0
- package/dist/styling/index.d.ts +7 -0
- package/dist/styling/index.d.ts.map +1 -0
- package/dist/styling/index.js +6 -0
- package/dist/styling/themes.d.ts +10 -0
- package/dist/styling/themes.d.ts.map +1 -0
- package/dist/styling/themes.js +231 -0
- package/dist/styling-module.d.ts +185 -0
- package/dist/styling-module.d.ts.map +1 -0
- package/dist/styling-module.js +199 -0
- package/dist/styling.cjs +1 -1
- package/dist/styling.cjs.map +1 -1
- package/dist/styling.js +4 -4
- package/dist/types/Logger.d.ts +172 -0
- package/dist/types/Logger.d.ts.map +1 -0
- package/dist/types/cli/CommandProcessor.d.ts +100 -0
- package/dist/types/cli/CommandProcessor.d.ts.map +1 -0
- package/dist/types/cli/commands/ConfigCommand.d.ts +14 -0
- package/dist/types/cli/commands/ConfigCommand.d.ts.map +1 -0
- package/dist/types/cli/commands/ExportCommand.d.ts +48 -0
- package/dist/types/cli/commands/ExportCommand.d.ts.map +1 -0
- package/dist/types/cli/commands/HistoryCommand.d.ts +47 -0
- package/dist/types/cli/commands/HistoryCommand.d.ts.map +1 -0
- package/dist/types/cli/commands/StatusCommand.d.ts +30 -0
- package/dist/types/cli/commands/StatusCommand.d.ts.map +1 -0
- package/dist/types/cli/commands/ThemeCommand.d.ts +30 -0
- package/dist/types/cli/commands/ThemeCommand.d.ts.map +1 -0
- package/dist/types/cli/help.d.ts +12 -0
- package/dist/types/cli/help.d.ts.map +1 -0
- package/dist/types/cli/index.d.ts +15 -0
- package/dist/types/cli/index.d.ts.map +1 -0
- package/dist/types/constants.d.ts +88 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/core.d.ts +71 -211
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +13 -0
- package/dist/types/example.d.ts +18 -0
- package/dist/types/example.d.ts.map +1 -0
- package/dist/types/exports-module.d.ts +196 -0
- package/dist/types/exports-module.d.ts.map +1 -0
- package/dist/types/handlers/AnalyticsLogHandler.d.ts +8 -0
- package/dist/types/handlers/AnalyticsLogHandler.d.ts.map +1 -0
- package/dist/types/handlers/ExportLogHandler.d.ts +100 -0
- package/dist/types/handlers/ExportLogHandler.d.ts.map +1 -0
- package/dist/types/handlers/FileLogHandler.d.ts +10 -0
- package/dist/types/handlers/FileLogHandler.d.ts.map +1 -0
- package/dist/types/handlers/RemoteLogHandler.d.ts +11 -0
- package/dist/types/handlers/RemoteLogHandler.d.ts.map +1 -0
- package/dist/types/handlers/index.d.ts +8 -0
- package/dist/types/handlers/index.d.ts.map +1 -0
- package/dist/types/handlers.d.ts +88 -0
- package/dist/types/handlers.d.ts.map +1 -0
- package/dist/types/handlers.js +4 -0
- package/dist/types/index.d.ts +7 -675
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/main.d.ts +2 -0
- package/dist/types/main.d.ts.map +1 -0
- package/dist/types/styling/StyleBuilder.d.ts +132 -0
- package/dist/types/styling/StyleBuilder.d.ts.map +1 -0
- package/dist/types/styling/banners.d.ts +42 -0
- package/dist/types/styling/banners.d.ts.map +1 -0
- package/dist/types/styling/index.d.ts +7 -0
- package/dist/types/styling/index.d.ts.map +1 -0
- package/dist/types/styling/themes.d.ts +7 -0
- package/dist/types/styling/themes.d.ts.map +1 -0
- package/dist/types/styling-module.d.ts +178 -0
- package/dist/types/styling-module.d.ts.map +1 -0
- package/dist/types/types/core.d.ts +71 -0
- package/dist/types/types/core.d.ts.map +1 -0
- package/dist/types/types/handlers.d.ts +85 -0
- package/dist/types/types/handlers.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +7 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +7 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/output.d.ts +29 -0
- package/dist/types/utils/output.d.ts.map +1 -0
- package/dist/types/utils/stackTrace.d.ts +6 -0
- package/dist/types/utils/stackTrace.d.ts.map +1 -0
- package/dist/types/utils/timestamps.d.ts +20 -0
- package/dist/types/utils/timestamps.d.ts.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/output.d.ts +32 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +97 -0
- package/dist/utils/stackTrace.d.ts +9 -0
- package/dist/utils/stackTrace.d.ts.map +1 -0
- package/dist/utils/stackTrace.js +81 -0
- package/dist/utils/timestamps.d.ts +20 -0
- package/dist/utils/timestamps.d.ts.map +1 -0
- package/dist/utils/timestamps.js +71 -0
- package/docs/API.md +691 -0
- package/docs/DEVELOPMENT.md +731 -0
- package/docs/PACKAGES.md +244 -0
- package/docs/_config.yml +36 -0
- package/docs/index.md +179 -0
- package/examples/README.md +208 -0
- package/examples/basic-logging.js +75 -0
- package/examples/data-export.js +234 -0
- package/examples/package.json +16 -0
- package/examples/performance-timing.js +170 -0
- package/examples/styling-themes.js +207 -0
- package/package.json +32 -21
- package/packages/core/package.json +35 -0
- package/packages/exports/package.json +41 -0
- package/packages/styling/package.json +41 -0
- package/project-utils/README.md +172 -0
- package/project-utils/auto-release-gemini.ts +1193 -0
- package/project-utils/commit-generator.ts +1385 -0
- package/project-utils/commit-ui.ts +264 -0
- package/project-utils/git-utils.ts +199 -0
- package/project-utils/github-release-manager.ts +466 -0
- package/project-utils/prompt-templates.js +345 -0
- package/project-utils/prompt-templates.ts +422 -0
- package/project-utils/version-manager.ts +1078 -0
- package/src/Logger.ts +2 -1
- package/src/cli/CommandProcessor.ts +173 -2
- package/src/cli/commands/HistoryCommand.ts +117 -0
- package/src/cli/index.ts +12 -0
- package/src/handlers/ExportLogHandler.ts +141 -0
- package/tests/test-conflict-resolution.ts +391 -0
- package/tests/validate-workflows.sh +131 -0
- package/tests/yaml-autofix.sh +146 -0
- package/vite.config.ts +152 -50
- package/.claude/settings.local.json +0 -22
- package/.npmrc.bak +0 -1
- package/dist/chunks/Logger-BQhMKy_T.js +0 -2
- package/dist/chunks/Logger-BQhMKy_T.js.map +0 -1
- package/dist/chunks/Logger-BrFKFZcD.js +0 -978
- package/dist/chunks/Logger-BrFKFZcD.js.map +0 -1
- package/dist/chunks/core-2opW4Pi3.js +0 -194
- package/dist/chunks/core-2opW4Pi3.js.map +0 -1
- package/dist/chunks/core-DyugwSYZ.js +0 -4
- package/dist/chunks/core-DyugwSYZ.js.map +0 -1
- package/dist/chunks/exports-BNP3R7dp.js +0 -421
- package/dist/chunks/exports-BNP3R7dp.js.map +0 -1
- package/dist/chunks/exports-U1xLBXrY.js +0 -2
- package/dist/chunks/exports-U1xLBXrY.js.map +0 -1
- package/dist/chunks/styling-DhUDzwlE.js +0 -654
- package/dist/chunks/styling-DhUDzwlE.js.map +0 -1
- package/dist/chunks/styling-tmRDI28D.js +0 -2
- package/dist/chunks/styling-tmRDI28D.js.map +0 -1
- package/dist/types/exports.d.ts +0 -600
- package/dist/types/styling.d.ts +0 -751
- /package/.github/{workflows → workflows-backup}/release.yml +0 -0
package/dist/core.js
CHANGED
|
@@ -1,244 +1,260 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Core Logger Module - Minimal logging without advanced features
|
|
3
|
+
* @version 0.0.1
|
|
4
|
+
*
|
|
5
|
+
* This module provides the essential logging functionality without visual enhancements,
|
|
6
|
+
* SVG support, or advanced styling. Perfect for lightweight applications or server-side usage.
|
|
7
|
+
*/
|
|
8
|
+
// Core utilities only
|
|
9
|
+
import { parseStackTrace, formatTimestamp } from './utils/index.js';
|
|
10
|
+
// Minimal constants
|
|
11
|
+
import { DEFAULT_CONFIG } from './constants.js';
|
|
12
|
+
/**
|
|
13
|
+
* Minimal Logger class with core functionality only
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { CoreLogger } from '@mks2508/better-logger/core';
|
|
18
|
+
*
|
|
19
|
+
* const logger = new CoreLogger();
|
|
20
|
+
* logger.info('Hello world');
|
|
21
|
+
* logger.error('Something went wrong', error);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class CoreLogger {
|
|
25
|
+
config;
|
|
26
|
+
scopedPrefix;
|
|
27
|
+
handlers = [];
|
|
28
|
+
timers = new Map();
|
|
29
|
+
groupDepth = 0;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new CoreLogger instance
|
|
32
|
+
* @param config - Optional configuration
|
|
33
|
+
*/
|
|
34
|
+
constructor(config = {}) {
|
|
35
|
+
this.config = {
|
|
36
|
+
...DEFAULT_CONFIG,
|
|
37
|
+
...config,
|
|
38
|
+
// Force disable advanced features for core module
|
|
39
|
+
enableColors: false,
|
|
40
|
+
enableTimestamps: config.enableTimestamps ?? true,
|
|
41
|
+
enableStackTrace: config.enableStackTrace ?? false,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// ===== CONFIGURATION METHODS =====
|
|
45
|
+
/**
|
|
46
|
+
* Get current configuration
|
|
47
|
+
*/
|
|
48
|
+
getConfig() {
|
|
49
|
+
return { ...this.config };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Sets the global prefix for all log messages
|
|
53
|
+
*/
|
|
54
|
+
setGlobalPrefix(prefix) {
|
|
55
|
+
this.config.globalPrefix = prefix;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Sets the verbosity level for filtering log output
|
|
59
|
+
*/
|
|
60
|
+
setVerbosity(level) {
|
|
61
|
+
this.config.verbosity = level;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Creates a scoped logger with a specific prefix
|
|
65
|
+
*/
|
|
66
|
+
createScopedLogger(prefix) {
|
|
67
|
+
const scopedLogger = new CoreLogger(this.config);
|
|
68
|
+
scopedLogger.scopedPrefix = prefix;
|
|
69
|
+
scopedLogger.handlers = [...this.handlers];
|
|
70
|
+
return scopedLogger;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Adds a custom log handler for extensibility
|
|
74
|
+
*/
|
|
75
|
+
addHandler(handler) {
|
|
76
|
+
this.handlers.push(handler);
|
|
77
|
+
}
|
|
78
|
+
// ===== CORE LOGGING METHODS =====
|
|
79
|
+
/**
|
|
80
|
+
* Checks if a log level should be output based on current verbosity
|
|
81
|
+
*/
|
|
82
|
+
shouldLog(level) {
|
|
83
|
+
if (this.config.verbosity === 'silent')
|
|
84
|
+
return false;
|
|
85
|
+
const levels = { debug: 0, info: 1, warn: 2, error: 3, critical: 4 };
|
|
86
|
+
return levels[level] >= levels[this.config.verbosity];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Gets the effective prefix (global + scoped)
|
|
90
|
+
*/
|
|
91
|
+
getEffectivePrefix() {
|
|
92
|
+
const parts = [this.config.globalPrefix, this.scopedPrefix].filter(Boolean);
|
|
93
|
+
return parts.length > 0 ? parts.join(':') : undefined;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Core logging method with minimal formatting
|
|
97
|
+
*/
|
|
98
|
+
log(level, ...args) {
|
|
99
|
+
if (!this.shouldLog(level))
|
|
100
|
+
return;
|
|
101
|
+
const prefix = this.getEffectivePrefix();
|
|
102
|
+
const timestamp = this.config.enableTimestamps ? formatTimestamp() : null;
|
|
103
|
+
const stackInfo = this.config.enableStackTrace ? parseStackTrace() : null;
|
|
104
|
+
// Simple formatting without CSS styling
|
|
105
|
+
const parts = [];
|
|
106
|
+
if (timestamp) {
|
|
107
|
+
parts.push(`[${timestamp.slice(11, 23)}]`);
|
|
108
|
+
}
|
|
109
|
+
parts.push(`[${level.toUpperCase()}]`);
|
|
110
|
+
if (prefix) {
|
|
111
|
+
parts.push(`[${prefix}]`);
|
|
112
|
+
}
|
|
113
|
+
const groupIndent = ' '.repeat(this.groupDepth);
|
|
114
|
+
const logPrefix = groupIndent + parts.join(' ');
|
|
115
|
+
// Output to console with simple formatting
|
|
116
|
+
console.log(logPrefix, ...args);
|
|
117
|
+
if (stackInfo && this.config.enableStackTrace) {
|
|
118
|
+
console.log(` at ${stackInfo.file}:${stackInfo.line}:${stackInfo.column}`);
|
|
119
|
+
}
|
|
120
|
+
// Call custom handlers
|
|
121
|
+
const metadata = {
|
|
122
|
+
timestamp: timestamp || formatTimestamp(),
|
|
123
|
+
level,
|
|
124
|
+
prefix,
|
|
125
|
+
stackInfo: stackInfo || undefined,
|
|
126
|
+
};
|
|
127
|
+
this.handlers.forEach(handler => {
|
|
128
|
+
try {
|
|
129
|
+
handler.handle(level, String(args[0] || ''), args, metadata);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
console.error('Log handler failed:', error);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Logs debug information (lowest priority)
|
|
138
|
+
*/
|
|
139
|
+
debug(...args) {
|
|
140
|
+
this.log('debug', ...args);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Logs informational messages
|
|
144
|
+
*/
|
|
145
|
+
info(...args) {
|
|
146
|
+
this.log('info', ...args);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Logs warning messages
|
|
150
|
+
*/
|
|
151
|
+
warn(...args) {
|
|
152
|
+
this.log('warn', ...args);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Logs error messages
|
|
156
|
+
*/
|
|
157
|
+
error(...args) {
|
|
158
|
+
this.log('error', ...args);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Logs critical errors (highest priority)
|
|
162
|
+
*/
|
|
163
|
+
critical(...args) {
|
|
164
|
+
this.log('critical', ...args);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Logs trace information (detailed debugging)
|
|
168
|
+
*/
|
|
169
|
+
trace(...args) {
|
|
170
|
+
this.log('debug', ...args);
|
|
171
|
+
if (this.shouldLog('debug')) {
|
|
172
|
+
console.trace(...args);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// ===== BASIC ADVANCED FEATURES =====
|
|
176
|
+
/**
|
|
177
|
+
* Displays data in a table format
|
|
178
|
+
*/
|
|
179
|
+
table(data, columns) {
|
|
180
|
+
if (!this.shouldLog('info'))
|
|
181
|
+
return;
|
|
182
|
+
const prefix = this.getEffectivePrefix();
|
|
183
|
+
console.log(`[TABLE]${prefix ? ` [${prefix}]` : ''}:`);
|
|
184
|
+
if (columns) {
|
|
185
|
+
console.table(data, columns);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
console.table(data);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Starts a collapsible group in the console
|
|
193
|
+
*/
|
|
194
|
+
group(label, collapsed = false) {
|
|
195
|
+
const prefix = this.getEffectivePrefix();
|
|
196
|
+
const fullLabel = `${prefix ? `[${prefix}] ` : ''}${label}`;
|
|
197
|
+
if (collapsed) {
|
|
198
|
+
console.groupCollapsed(fullLabel);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
console.group(fullLabel);
|
|
202
|
+
}
|
|
203
|
+
this.groupDepth++;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Ends the current console group
|
|
207
|
+
*/
|
|
208
|
+
groupEnd() {
|
|
209
|
+
if (this.groupDepth > 0) {
|
|
210
|
+
console.groupEnd();
|
|
211
|
+
this.groupDepth--;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Starts a timer with the given label
|
|
216
|
+
*/
|
|
217
|
+
time(label) {
|
|
218
|
+
const timer = {
|
|
219
|
+
label,
|
|
220
|
+
startTime: performance.now(),
|
|
221
|
+
};
|
|
222
|
+
this.timers.set(label, timer);
|
|
223
|
+
console.log(`[TIMER] Started: ${label}`);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Ends a timer and logs the elapsed time
|
|
227
|
+
*/
|
|
228
|
+
timeEnd(label) {
|
|
229
|
+
const timer = this.timers.get(label);
|
|
230
|
+
if (!timer) {
|
|
231
|
+
this.warn(`Timer '${label}' does not exist`);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
const elapsed = performance.now() - timer.startTime;
|
|
235
|
+
this.timers.delete(label);
|
|
236
|
+
console.log(`[TIMER] ${label}: ${elapsed.toFixed(2)}ms`);
|
|
237
|
+
}
|
|
208
238
|
}
|
|
239
|
+
// Create and export singleton instance for convenience
|
|
209
240
|
const coreLogger = new CoreLogger();
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
const
|
|
217
|
-
const
|
|
218
|
-
const
|
|
219
|
-
const
|
|
220
|
-
const
|
|
221
|
-
const
|
|
222
|
-
const
|
|
223
|
-
const
|
|
224
|
-
const
|
|
225
|
-
export
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
debug,
|
|
231
|
-
coreLogger as default,
|
|
232
|
-
error,
|
|
233
|
-
group,
|
|
234
|
-
groupEnd,
|
|
235
|
-
info,
|
|
236
|
-
setGlobalPrefix,
|
|
237
|
-
setVerbosity,
|
|
238
|
-
table,
|
|
239
|
-
time,
|
|
240
|
-
timeEnd,
|
|
241
|
-
trace,
|
|
242
|
-
warn
|
|
243
|
-
};
|
|
244
|
-
//# sourceMappingURL=core.js.map
|
|
241
|
+
/**
|
|
242
|
+
* Export individual methods for convenience (with proper binding)
|
|
243
|
+
*/
|
|
244
|
+
export const debug = (...args) => coreLogger.debug(...args);
|
|
245
|
+
export const info = (...args) => coreLogger.info(...args);
|
|
246
|
+
export const warn = (...args) => coreLogger.warn(...args);
|
|
247
|
+
export const error = (...args) => coreLogger.error(...args);
|
|
248
|
+
export const critical = (...args) => coreLogger.critical(...args);
|
|
249
|
+
export const trace = (...args) => coreLogger.trace(...args);
|
|
250
|
+
export const table = (data, columns) => coreLogger.table(data, columns);
|
|
251
|
+
export const group = (label, collapsed) => coreLogger.group(label, collapsed);
|
|
252
|
+
export const groupEnd = () => coreLogger.groupEnd();
|
|
253
|
+
export const time = (label) => coreLogger.time(label);
|
|
254
|
+
export const timeEnd = (label) => coreLogger.timeEnd(label);
|
|
255
|
+
export const setGlobalPrefix = (prefix) => coreLogger.setGlobalPrefix(prefix);
|
|
256
|
+
export const createScopedLogger = (prefix) => coreLogger.createScopedLogger(prefix);
|
|
257
|
+
export const setVerbosity = (level) => coreLogger.setVerbosity(level);
|
|
258
|
+
export const addHandler = (handler) => coreLogger.addHandler(handler);
|
|
259
|
+
// Export the singleton as default
|
|
260
|
+
export default coreLogger;
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":["../src/core.ts"],"sourcesContent":["/**\n * @fileoverview Core Logger Module - Minimal logging without advanced features\n * @version 0.0.1\n * \n * This module provides the essential logging functionality without visual enhancements,\n * SVG support, or advanced styling. Perfect for lightweight applications or server-side usage.\n */\n\n// Core types\nimport type {\n LogLevel,\n Verbosity,\n LoggerConfig,\n ILogHandler,\n LogMetadata,\n TimerEntry\n} from './types/index.js';\n\n// Core utilities only\nimport {\n parseStackTrace,\n formatTimestamp\n} from './utils/index.js';\n\n// Minimal constants\nimport { DEFAULT_CONFIG } from './constants.js';\n\n/**\n * Minimal Logger class with core functionality only\n * \n * @example\n * ```typescript\n * import { CoreLogger } from '@mks2508/better-logger/core';\n * \n * const logger = new CoreLogger();\n * logger.info('Hello world');\n * logger.error('Something went wrong', error);\n * ```\n */\nexport class CoreLogger {\n private config: LoggerConfig;\n private scopedPrefix?: string;\n private handlers: ILogHandler[] = [];\n private timers: Map<string, TimerEntry> = new Map();\n private groupDepth: number = 0;\n\n /**\n * Creates a new CoreLogger instance\n * @param config - Optional configuration\n */\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = {\n ...DEFAULT_CONFIG,\n ...config,\n // Force disable advanced features for core module\n enableColors: false,\n enableTimestamps: config.enableTimestamps ?? true,\n enableStackTrace: config.enableStackTrace ?? false,\n };\n }\n\n // ===== CONFIGURATION METHODS =====\n\n /**\n * Get current configuration\n */\n getConfig(): LoggerConfig {\n return { ...this.config };\n }\n\n /**\n * Sets the global prefix for all log messages\n */\n setGlobalPrefix(prefix: string): void {\n this.config.globalPrefix = prefix;\n }\n\n /**\n * Sets the verbosity level for filtering log output\n */\n setVerbosity(level: Verbosity): void {\n this.config.verbosity = level;\n }\n\n /**\n * Creates a scoped logger with a specific prefix\n */\n createScopedLogger(prefix: string): CoreLogger {\n const scopedLogger = new CoreLogger(this.config);\n scopedLogger.scopedPrefix = prefix;\n scopedLogger.handlers = [...this.handlers];\n return scopedLogger;\n }\n\n /**\n * Adds a custom log handler for extensibility\n */\n addHandler(handler: ILogHandler): void {\n this.handlers.push(handler);\n }\n\n // ===== CORE LOGGING METHODS =====\n\n /**\n * Checks if a log level should be output based on current verbosity\n */\n private shouldLog(level: LogLevel): boolean {\n if (this.config.verbosity === 'silent') return false;\n const levels = { debug: 0, info: 1, warn: 2, error: 3, critical: 4 };\n return levels[level] >= levels[this.config.verbosity];\n }\n\n /**\n * Gets the effective prefix (global + scoped)\n */\n private getEffectivePrefix(): string | undefined {\n const parts = [this.config.globalPrefix, this.scopedPrefix].filter(Boolean);\n return parts.length > 0 ? parts.join(':') : undefined;\n }\n\n /**\n * Core logging method with minimal formatting\n */\n private log(level: LogLevel, ...args: any[]): void {\n if (!this.shouldLog(level)) return;\n\n const prefix = this.getEffectivePrefix();\n const timestamp = this.config.enableTimestamps ? formatTimestamp() : null;\n const stackInfo = this.config.enableStackTrace ? parseStackTrace() : null;\n \n // Simple formatting without CSS styling\n const parts: string[] = [];\n \n if (timestamp) {\n parts.push(`[${timestamp.slice(11, 23)}]`);\n }\n \n parts.push(`[${level.toUpperCase()}]`);\n \n if (prefix) {\n parts.push(`[${prefix}]`);\n }\n\n const groupIndent = ' '.repeat(this.groupDepth);\n const logPrefix = groupIndent + parts.join(' ');\n \n // Output to console with simple formatting\n console.log(logPrefix, ...args);\n \n if (stackInfo && this.config.enableStackTrace) {\n console.log(` at ${stackInfo.file}:${stackInfo.line}:${stackInfo.column}`);\n }\n\n // Call custom handlers\n const metadata: LogMetadata = {\n timestamp: timestamp || formatTimestamp(),\n level,\n prefix,\n stackInfo: stackInfo || undefined,\n };\n\n this.handlers.forEach(handler => {\n try {\n handler.handle(level, String(args[0] || ''), args, metadata);\n } catch (error) {\n console.error('Log handler failed:', error);\n }\n });\n }\n\n /**\n * Logs debug information (lowest priority)\n */\n debug(...args: any[]): void {\n this.log('debug', ...args);\n }\n\n /**\n * Logs informational messages\n */\n info(...args: any[]): void {\n this.log('info', ...args);\n }\n\n /**\n * Logs warning messages\n */\n warn(...args: any[]): void {\n this.log('warn', ...args);\n }\n\n /**\n * Logs error messages\n */\n error(...args: any[]): void {\n this.log('error', ...args);\n }\n\n /**\n * Logs critical errors (highest priority)\n */\n critical(...args: any[]): void {\n this.log('critical', ...args);\n }\n\n /**\n * Logs trace information (detailed debugging)\n */\n trace(...args: any[]): void {\n this.log('debug', ...args);\n if (this.shouldLog('debug')) {\n console.trace(...args);\n }\n }\n\n // ===== BASIC ADVANCED FEATURES =====\n\n /**\n * Displays data in a table format\n */\n table(data: any, columns?: string[]): void {\n if (!this.shouldLog('info')) return;\n\n const prefix = this.getEffectivePrefix();\n console.log(`[TABLE]${prefix ? ` [${prefix}]` : ''}:`);\n \n if (columns) {\n console.table(data, columns);\n } else {\n console.table(data);\n }\n }\n\n /**\n * Starts a collapsible group in the console\n */\n group(label: string, collapsed: boolean = false): void {\n const prefix = this.getEffectivePrefix();\n const fullLabel = `${prefix ? `[${prefix}] ` : ''}${label}`;\n \n if (collapsed) {\n console.groupCollapsed(fullLabel);\n } else {\n console.group(fullLabel);\n }\n \n this.groupDepth++;\n }\n\n /**\n * Ends the current console group\n */\n groupEnd(): void {\n if (this.groupDepth > 0) {\n console.groupEnd();\n this.groupDepth--;\n }\n }\n\n /**\n * Starts a timer with the given label\n */\n time(label: string): void {\n const timer: TimerEntry = {\n label,\n startTime: performance.now(),\n };\n this.timers.set(label, timer);\n console.log(`[TIMER] Started: ${label}`);\n }\n\n /**\n * Ends a timer and logs the elapsed time\n */\n timeEnd(label: string): void {\n const timer = this.timers.get(label);\n if (!timer) {\n this.warn(`Timer '${label}' does not exist`);\n return;\n }\n\n const elapsed = performance.now() - timer.startTime;\n this.timers.delete(label);\n console.log(`[TIMER] ${label}: ${elapsed.toFixed(2)}ms`);\n }\n}\n\n// Create and export singleton instance for convenience\nconst coreLogger = new CoreLogger();\n\n/**\n * Export individual methods for convenience (with proper binding)\n */\nexport const debug = (...args: any[]) => coreLogger.debug(...args);\nexport const info = (...args: any[]) => coreLogger.info(...args);\nexport const warn = (...args: any[]) => coreLogger.warn(...args);\nexport const error = (...args: any[]) => coreLogger.error(...args);\nexport const critical = (...args: any[]) => coreLogger.critical(...args);\nexport const trace = (...args: any[]) => coreLogger.trace(...args);\nexport const table = (data: any, columns?: string[]) => coreLogger.table(data, columns);\nexport const group = (label: string, collapsed?: boolean) => coreLogger.group(label, collapsed);\nexport const groupEnd = () => coreLogger.groupEnd();\nexport const time = (label: string) => coreLogger.time(label);\nexport const timeEnd = (label: string) => coreLogger.timeEnd(label);\nexport const setGlobalPrefix = (prefix: string) => coreLogger.setGlobalPrefix(prefix);\nexport const createScopedLogger = (prefix: string) => coreLogger.createScopedLogger(prefix);\nexport const setVerbosity = (level: Verbosity) => coreLogger.setVerbosity(level);\nexport const addHandler = (handler: ILogHandler) => coreLogger.addHandler(handler);\n\n// Export the singleton as default\nexport default coreLogger;\n\n// Re-export core types\nexport type {\n LogLevel,\n Verbosity,\n LoggerConfig,\n ILogHandler,\n LogMetadata\n} from './types/index.js';"],"names":["error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sources":["../src/core.ts"],"sourcesContent":["/**\n * @fileoverview Core Logger Module - Minimal logging without advanced features\n * @version 0.0.1\n * \n * This module provides the essential logging functionality without visual enhancements,\n * SVG support, or advanced styling. Perfect for lightweight applications or server-side usage.\n */\n\n// Core types\nimport type {\n LogLevel,\n Verbosity,\n LoggerConfig,\n ILogHandler,\n LogMetadata,\n TimerEntry\n} from './types/index.js';\n\n// Core utilities only\nimport {\n parseStackTrace,\n formatTimestamp\n} from './utils/index.js';\n\n// Minimal constants\nimport { DEFAULT_CONFIG } from './constants.js';\n\n/**\n * Minimal Logger class with core functionality only\n * \n * @example\n * ```typescript\n * import { CoreLogger } from '@mks2508/better-logger/core';\n * \n * const logger = new CoreLogger();\n * logger.info('Hello world');\n * logger.error('Something went wrong', error);\n * ```\n */\nexport class CoreLogger {\n private config: LoggerConfig;\n private scopedPrefix?: string;\n private handlers: ILogHandler[] = [];\n private timers: Map<string, TimerEntry> = new Map();\n private groupDepth: number = 0;\n\n /**\n * Creates a new CoreLogger instance\n * @param config - Optional configuration\n */\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = {\n ...DEFAULT_CONFIG,\n ...config,\n // Force disable advanced features for core module\n enableColors: false,\n enableTimestamps: config.enableTimestamps ?? true,\n enableStackTrace: config.enableStackTrace ?? false,\n };\n }\n\n // ===== CONFIGURATION METHODS =====\n\n /**\n * Get current configuration\n */\n getConfig(): LoggerConfig {\n return { ...this.config };\n }\n\n /**\n * Sets the global prefix for all log messages\n */\n setGlobalPrefix(prefix: string): void {\n this.config.globalPrefix = prefix;\n }\n\n /**\n * Sets the verbosity level for filtering log output\n */\n setVerbosity(level: Verbosity): void {\n this.config.verbosity = level;\n }\n\n /**\n * Creates a scoped logger with a specific prefix\n */\n createScopedLogger(prefix: string): CoreLogger {\n const scopedLogger = new CoreLogger(this.config);\n scopedLogger.scopedPrefix = prefix;\n scopedLogger.handlers = [...this.handlers];\n return scopedLogger;\n }\n\n /**\n * Adds a custom log handler for extensibility\n */\n addHandler(handler: ILogHandler): void {\n this.handlers.push(handler);\n }\n\n // ===== CORE LOGGING METHODS =====\n\n /**\n * Checks if a log level should be output based on current verbosity\n */\n private shouldLog(level: LogLevel): boolean {\n if (this.config.verbosity === 'silent') return false;\n const levels = { debug: 0, info: 1, warn: 2, error: 3, critical: 4 };\n return levels[level] >= levels[this.config.verbosity];\n }\n\n /**\n * Gets the effective prefix (global + scoped)\n */\n private getEffectivePrefix(): string | undefined {\n const parts = [this.config.globalPrefix, this.scopedPrefix].filter(Boolean);\n return parts.length > 0 ? parts.join(':') : undefined;\n }\n\n /**\n * Core logging method with minimal formatting\n */\n private log(level: LogLevel, ...args: any[]): void {\n if (!this.shouldLog(level)) return;\n\n const prefix = this.getEffectivePrefix();\n const timestamp = this.config.enableTimestamps ? formatTimestamp() : null;\n const stackInfo = this.config.enableStackTrace ? parseStackTrace() : null;\n \n // Simple formatting without CSS styling\n const parts: string[] = [];\n \n if (timestamp) {\n parts.push(`[${timestamp.slice(11, 23)}]`);\n }\n \n parts.push(`[${level.toUpperCase()}]`);\n \n if (prefix) {\n parts.push(`[${prefix}]`);\n }\n\n const groupIndent = ' '.repeat(this.groupDepth);\n const logPrefix = groupIndent + parts.join(' ');\n \n // Output to console with simple formatting\n console.log(logPrefix, ...args);\n \n if (stackInfo && this.config.enableStackTrace) {\n console.log(` at ${stackInfo.file}:${stackInfo.line}:${stackInfo.column}`);\n }\n\n // Call custom handlers\n const metadata: LogMetadata = {\n timestamp: timestamp || formatTimestamp(),\n level,\n prefix,\n stackInfo: stackInfo || undefined,\n };\n\n this.handlers.forEach(handler => {\n try {\n handler.handle(level, String(args[0] || ''), args, metadata);\n } catch (error) {\n console.error('Log handler failed:', error);\n }\n });\n }\n\n /**\n * Logs debug information (lowest priority)\n */\n debug(...args: any[]): void {\n this.log('debug', ...args);\n }\n\n /**\n * Logs informational messages\n */\n info(...args: any[]): void {\n this.log('info', ...args);\n }\n\n /**\n * Logs warning messages\n */\n warn(...args: any[]): void {\n this.log('warn', ...args);\n }\n\n /**\n * Logs error messages\n */\n error(...args: any[]): void {\n this.log('error', ...args);\n }\n\n /**\n * Logs critical errors (highest priority)\n */\n critical(...args: any[]): void {\n this.log('critical', ...args);\n }\n\n /**\n * Logs trace information (detailed debugging)\n */\n trace(...args: any[]): void {\n this.log('debug', ...args);\n if (this.shouldLog('debug')) {\n console.trace(...args);\n }\n }\n\n // ===== BASIC ADVANCED FEATURES =====\n\n /**\n * Displays data in a table format\n */\n table(data: any, columns?: string[]): void {\n if (!this.shouldLog('info')) return;\n\n const prefix = this.getEffectivePrefix();\n console.log(`[TABLE]${prefix ? ` [${prefix}]` : ''}:`);\n \n if (columns) {\n console.table(data, columns);\n } else {\n console.table(data);\n }\n }\n\n /**\n * Starts a collapsible group in the console\n */\n group(label: string, collapsed: boolean = false): void {\n const prefix = this.getEffectivePrefix();\n const fullLabel = `${prefix ? `[${prefix}] ` : ''}${label}`;\n \n if (collapsed) {\n console.groupCollapsed(fullLabel);\n } else {\n console.group(fullLabel);\n }\n \n this.groupDepth++;\n }\n\n /**\n * Ends the current console group\n */\n groupEnd(): void {\n if (this.groupDepth > 0) {\n console.groupEnd();\n this.groupDepth--;\n }\n }\n\n /**\n * Starts a timer with the given label\n */\n time(label: string): void {\n const timer: TimerEntry = {\n label,\n startTime: performance.now(),\n };\n this.timers.set(label, timer);\n console.log(`[TIMER] Started: ${label}`);\n }\n\n /**\n * Ends a timer and logs the elapsed time\n */\n timeEnd(label: string): void {\n const timer = this.timers.get(label);\n if (!timer) {\n this.warn(`Timer '${label}' does not exist`);\n return;\n }\n\n const elapsed = performance.now() - timer.startTime;\n this.timers.delete(label);\n console.log(`[TIMER] ${label}: ${elapsed.toFixed(2)}ms`);\n }\n}\n\n// Create and export singleton instance for convenience\nconst coreLogger = new CoreLogger();\n\n/**\n * Export individual methods for convenience (with proper binding)\n */\nexport const debug = (...args: any[]) => coreLogger.debug(...args);\nexport const info = (...args: any[]) => coreLogger.info(...args);\nexport const warn = (...args: any[]) => coreLogger.warn(...args);\nexport const error = (...args: any[]) => coreLogger.error(...args);\nexport const critical = (...args: any[]) => coreLogger.critical(...args);\nexport const trace = (...args: any[]) => coreLogger.trace(...args);\nexport const table = (data: any, columns?: string[]) => coreLogger.table(data, columns);\nexport const group = (label: string, collapsed?: boolean) => coreLogger.group(label, collapsed);\nexport const groupEnd = () => coreLogger.groupEnd();\nexport const time = (label: string) => coreLogger.time(label);\nexport const timeEnd = (label: string) => coreLogger.timeEnd(label);\nexport const setGlobalPrefix = (prefix: string) => coreLogger.setGlobalPrefix(prefix);\nexport const createScopedLogger = (prefix: string) => coreLogger.createScopedLogger(prefix);\nexport const setVerbosity = (level: Verbosity) => coreLogger.setVerbosity(level);\nexport const addHandler = (handler: ILogHandler) => coreLogger.addHandler(handler);\n\n// Export the singleton as default\nexport default coreLogger;\n\n// Re-export core types\nexport type {\n LogLevel,\n Verbosity,\n LoggerConfig,\n ILogHandler,\n LogMetadata\n} from './types/index.js';"],"names":["error"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Comprehensive examples and demonstrations of Better Logger
|
|
3
|
+
*/
|
|
4
|
+
export declare function demonstrateBanners(): void;
|
|
5
|
+
export declare function demonstrateThemes(): void;
|
|
6
|
+
export declare function demonstrateSVG(): void;
|
|
7
|
+
export declare function demonstrateAnimations(): void;
|
|
8
|
+
export declare function demonstrateCLI(): void;
|
|
9
|
+
export declare function demonstrateExports(): void;
|
|
10
|
+
export declare function demonstrateBasicLogging(): void;
|
|
11
|
+
export declare function demonstrateTable(): void;
|
|
12
|
+
export declare function demonstrateGrouping(): void;
|
|
13
|
+
export declare function demonstrateTiming(): void;
|
|
14
|
+
export declare function demonstrateScopedLogger(): void;
|
|
15
|
+
export declare function demonstrateTrace(): void;
|
|
16
|
+
export declare function demonstrateCustomStyles(): void;
|
|
17
|
+
export declare function demonstrateAllFeatures(): void;
|
|
18
|
+
//# sourceMappingURL=example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0BH,wBAAgB,kBAAkB,SAQjC;AAED,wBAAgB,iBAAiB,SAUhC;AAED,wBAAgB,cAAc,SAW7B;AAED,wBAAgB,qBAAqB,SAGpC;AAED,wBAAgB,cAAc,SAgB7B;AAED,wBAAgB,kBAAkB,SAWjC;AAGD,wBAAgB,uBAAuB,SAUtC;AAED,wBAAgB,gBAAgB,SAS/B;AAED,wBAAgB,mBAAmB,SAgBlC;AAED,wBAAgB,iBAAiB,SAShC;AAED,wBAAgB,uBAAuB,SAWtC;AAED,wBAAgB,gBAAgB,SAQ/B;AAED,wBAAgB,uBAAuB,SActC;AAGD,wBAAgB,sBAAsB,SAcrC"}
|