@mks2508/better-logger 2.0.0 → 2.1.0
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/bun.lock +333 -0
- package/dist/Logger.d.ts +704 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/ScopedLogger.d.ts +310 -0
- package/dist/ScopedLogger.d.ts.map +1 -0
- package/dist/chunks/Logger-B7L-ujY4.js +3503 -0
- package/dist/chunks/Logger-B7L-ujY4.js.map +1 -0
- package/dist/chunks/Logger-DzU_c5sX.js +2 -0
- package/dist/chunks/Logger-DzU_c5sX.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/ScopedLogger-BY3-E8Ov.js +2 -0
- package/dist/chunks/ScopedLogger-BY3-E8Ov.js.map +1 -0
- package/dist/chunks/ScopedLogger-D-RbiFZn.js +361 -0
- package/dist/chunks/ScopedLogger-D-RbiFZn.js.map +1 -0
- package/dist/chunks/environment-Ba5kShbx.js +4 -0
- package/dist/chunks/environment-Ba5kShbx.js.map +1 -0
- package/dist/chunks/environment-TI2ByCPT.js +1209 -0
- package/dist/chunks/environment-TI2ByCPT.js.map +1 -0
- package/dist/chunks/formatting-Blwy-f0W.js +2 -0
- package/dist/chunks/formatting-Blwy-f0W.js.map +1 -0
- package/dist/chunks/formatting-CuNUqGks.js +380 -0
- package/dist/chunks/formatting-CuNUqGks.js.map +1 -0
- package/dist/cli/CommandProcessor.d.ts +100 -0
- package/dist/cli/CommandProcessor.d.ts.map +1 -0
- package/dist/cli/commands/ConfigCommand.d.ts +14 -0
- package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
- package/dist/cli/commands/ExportCommand.d.ts +48 -0
- package/dist/cli/commands/ExportCommand.d.ts.map +1 -0
- package/dist/cli/commands/HistoryCommand.d.ts +47 -0
- package/dist/cli/commands/HistoryCommand.d.ts.map +1 -0
- package/dist/cli/commands/StatusCommand.d.ts +30 -0
- package/dist/cli/commands/StatusCommand.d.ts.map +1 -0
- package/dist/cli/commands/ThemeCommand.d.ts +30 -0
- package/dist/cli/commands/ThemeCommand.d.ts.map +1 -0
- package/dist/cli/help.d.ts +12 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/constants.d.ts +227 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/core.cjs +2 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.ts +127 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +291 -0
- package/dist/core.js.map +1 -0
- package/dist/example.d.ts +18 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/exports-module.d.ts +196 -0
- package/dist/exports-module.d.ts.map +1 -0
- package/dist/exports.cjs +2 -0
- package/dist/exports.cjs.map +1 -0
- package/dist/exports.js +238 -0
- package/dist/exports.js.map +1 -0
- package/dist/handlers/AnalyticsLogHandler.d.ts +8 -0
- package/dist/handlers/AnalyticsLogHandler.d.ts.map +1 -0
- package/dist/handlers/ExportLogHandler.d.ts +100 -0
- package/dist/handlers/ExportLogHandler.d.ts.map +1 -0
- package/dist/handlers/FileLogHandler.d.ts +33 -0
- package/dist/handlers/FileLogHandler.d.ts.map +1 -0
- package/dist/handlers/RemoteLogHandler.d.ts +11 -0
- package/dist/handlers/RemoteLogHandler.d.ts.map +1 -0
- package/dist/handlers/index.d.ts +8 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +124 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +247 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/styling/LogStyleBuilder.d.ts +146 -0
- package/dist/styling/LogStyleBuilder.d.ts.map +1 -0
- package/dist/styling/SemanticStyles.d.ts +178 -0
- package/dist/styling/SemanticStyles.d.ts.map +1 -0
- package/dist/styling/SmartPresets.d.ts +22 -0
- package/dist/styling/SmartPresets.d.ts.map +1 -0
- package/dist/styling/StyleBuilder.d.ts +140 -0
- package/dist/styling/StyleBuilder.d.ts.map +1 -0
- package/dist/styling/banners.d.ts +42 -0
- package/dist/styling/banners.d.ts.map +1 -0
- package/dist/styling/index.d.ts +10 -0
- package/dist/styling/index.d.ts.map +1 -0
- package/dist/styling/themes.d.ts +7 -0
- package/dist/styling/themes.d.ts.map +1 -0
- package/dist/styling-module.d.ts +178 -0
- package/dist/styling-module.d.ts.map +1 -0
- package/dist/styling.cjs +2 -0
- package/dist/styling.cjs.map +1 -0
- package/dist/styling.js +146 -0
- package/dist/styling.js.map +1 -0
- package/dist/terminal/terminal-renderer.d.ts +63 -0
- package/dist/terminal/terminal-renderer.d.ts.map +1 -0
- package/dist/types/core.d.ts +234 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/handlers.d.ts +85 -0
- package/dist/types/handlers.d.ts.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/adapter.d.ts +48 -0
- package/dist/utils/adapter.d.ts.map +1 -0
- package/dist/utils/ansi-colors.d.ts +156 -0
- package/dist/utils/ansi-colors.d.ts.map +1 -0
- package/dist/utils/environment-detector.d.ts +35 -0
- package/dist/utils/environment-detector.d.ts.map +1 -0
- package/dist/utils/environment.d.ts +47 -0
- package/dist/utils/environment.d.ts.map +1 -0
- package/dist/utils/formatting.d.ts +58 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/opentui-detection.d.ts +34 -0
- package/dist/utils/opentui-detection.d.ts.map +1 -0
- package/dist/utils/output.d.ts +46 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/stackTrace.d.ts +6 -0
- package/dist/utils/stackTrace.d.ts.map +1 -0
- package/dist/utils/timestamps.d.ts +20 -0
- package/dist/utils/timestamps.d.ts.map +1 -0
- package/dist/vite.svg +1 -0
- package/package.json +1 -1
package/dist/index.js
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { L as Logger } from "./chunks/Logger-B7L-ujY4.js";
|
|
2
|
+
import { B, a, T } from "./chunks/Logger-B7L-ujY4.js";
|
|
3
|
+
import { i as isNode, a as isBrowser, S as StylePresets, b as StyleBuilder } from "./chunks/environment-TI2ByCPT.js";
|
|
4
|
+
import { B as B2, D, E, d, f, g, p } from "./chunks/environment-TI2ByCPT.js";
|
|
5
|
+
import { s as safeSerialize } from "./chunks/formatting-CuNUqGks.js";
|
|
6
|
+
import { B as B3, h, i, g as g2, j, f as f2, k, a as a2, b, e, c, d as d2, l, m, n } from "./chunks/formatting-CuNUqGks.js";
|
|
7
|
+
import { R } from "./chunks/RemoteLogHandler-CjWpWZGl.js";
|
|
8
|
+
class FileLogHandler {
|
|
9
|
+
filename;
|
|
10
|
+
maxSize;
|
|
11
|
+
fs;
|
|
12
|
+
// Node.js fs module
|
|
13
|
+
constructor(filename = "app.log", maxSize) {
|
|
14
|
+
this.filename = filename;
|
|
15
|
+
this.maxSize = maxSize;
|
|
16
|
+
if (isNode) {
|
|
17
|
+
try {
|
|
18
|
+
this.fs = require("fs");
|
|
19
|
+
} catch (error2) {
|
|
20
|
+
console.warn("FileLogHandler: Unable to load fs module:", error2);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
handle(level, message, args, metadata) {
|
|
25
|
+
const logEntry = {
|
|
26
|
+
timestamp: metadata.timestamp,
|
|
27
|
+
level: level.toUpperCase(),
|
|
28
|
+
prefix: metadata.prefix,
|
|
29
|
+
message,
|
|
30
|
+
args: args.slice(1).map((arg) => safeSerialize(arg)),
|
|
31
|
+
location: metadata.stackInfo
|
|
32
|
+
};
|
|
33
|
+
const logLine = this.formatLogLine(logEntry);
|
|
34
|
+
if (isNode && this.fs) {
|
|
35
|
+
this.writeToFileNode(logLine);
|
|
36
|
+
} else if (isBrowser) {
|
|
37
|
+
this.writeToFileLocal(logLine);
|
|
38
|
+
} else {
|
|
39
|
+
console.log(`[FILE-LOG] ${logLine}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Format log entry as a single line for file storage
|
|
44
|
+
*/
|
|
45
|
+
formatLogLine(entry) {
|
|
46
|
+
const parts = [
|
|
47
|
+
entry.timestamp,
|
|
48
|
+
`[${entry.level}]`,
|
|
49
|
+
entry.prefix ? `[${entry.prefix}]` : "",
|
|
50
|
+
entry.message
|
|
51
|
+
].filter(Boolean);
|
|
52
|
+
let line = parts.join(" ");
|
|
53
|
+
if (entry.args && entry.args.length > 0) {
|
|
54
|
+
line += " " + entry.args.map(
|
|
55
|
+
(arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
|
|
56
|
+
).join(" ");
|
|
57
|
+
}
|
|
58
|
+
if (entry.location) {
|
|
59
|
+
line += ` (${entry.location.file}:${entry.location.line}:${entry.location.column})`;
|
|
60
|
+
}
|
|
61
|
+
return line;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Write to actual file in Node.js environment
|
|
65
|
+
*/
|
|
66
|
+
writeToFileNode(logLine) {
|
|
67
|
+
if (!this.fs) return;
|
|
68
|
+
try {
|
|
69
|
+
if (this.maxSize) {
|
|
70
|
+
try {
|
|
71
|
+
const stats = this.fs.statSync(this.filename);
|
|
72
|
+
if (stats.size > this.maxSize) {
|
|
73
|
+
const backupName = `${this.filename}.bak`;
|
|
74
|
+
this.fs.renameSync(this.filename, backupName);
|
|
75
|
+
}
|
|
76
|
+
} catch (error2) {
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
this.fs.appendFileSync(this.filename, logLine + "\n", "utf8");
|
|
80
|
+
} catch (error2) {
|
|
81
|
+
console.error("FileLogHandler: Failed to write to file:", error2);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Write to localStorage in browser environment
|
|
86
|
+
*/
|
|
87
|
+
writeToFileLocal(logLine) {
|
|
88
|
+
try {
|
|
89
|
+
const storageKey = `logger_${this.filename}`;
|
|
90
|
+
const existingLogs = localStorage.getItem(storageKey) || "";
|
|
91
|
+
let newLogs = existingLogs;
|
|
92
|
+
if (existingLogs.length > 0) {
|
|
93
|
+
newLogs += "\n";
|
|
94
|
+
}
|
|
95
|
+
newLogs += logLine;
|
|
96
|
+
if (this.maxSize || newLogs.split("\n").length > 1e3) {
|
|
97
|
+
const lines = newLogs.split("\n");
|
|
98
|
+
const maxLines = this.maxSize ? Math.floor(this.maxSize / 100) : 1e3;
|
|
99
|
+
if (lines.length > maxLines) {
|
|
100
|
+
newLogs = lines.slice(-maxLines).join("\n");
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
localStorage.setItem(storageKey, newLogs);
|
|
104
|
+
} catch (error2) {
|
|
105
|
+
console.error("FileLogHandler: Failed to write to localStorage:", error2);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get stored logs (useful for debugging)
|
|
110
|
+
*/
|
|
111
|
+
getLogs() {
|
|
112
|
+
if (isNode && this.fs) {
|
|
113
|
+
try {
|
|
114
|
+
return this.fs.readFileSync(this.filename, "utf8");
|
|
115
|
+
} catch (error2) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
} else if (isBrowser) {
|
|
119
|
+
const storageKey = `logger_${this.filename}`;
|
|
120
|
+
return localStorage.getItem(storageKey);
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Clear stored logs
|
|
126
|
+
*/
|
|
127
|
+
clearLogs() {
|
|
128
|
+
if (isNode && this.fs) {
|
|
129
|
+
try {
|
|
130
|
+
this.fs.writeFileSync(this.filename, "", "utf8");
|
|
131
|
+
} catch (error2) {
|
|
132
|
+
console.error("FileLogHandler: Failed to clear file:", error2);
|
|
133
|
+
}
|
|
134
|
+
} else if (isBrowser) {
|
|
135
|
+
const storageKey = `logger_${this.filename}`;
|
|
136
|
+
localStorage.removeItem(storageKey);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
class AnalyticsLogHandler {
|
|
141
|
+
handle(level, message, _args, metadata) {
|
|
142
|
+
if (level === "error" || level === "critical") {
|
|
143
|
+
console.debug("Analytics: Error tracked", {
|
|
144
|
+
level,
|
|
145
|
+
message,
|
|
146
|
+
timestamp: metadata.timestamp
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
let _logger = null;
|
|
152
|
+
function getLogger() {
|
|
153
|
+
if (!_logger) {
|
|
154
|
+
_logger = new Logger();
|
|
155
|
+
}
|
|
156
|
+
return _logger;
|
|
157
|
+
}
|
|
158
|
+
const index = getLogger();
|
|
159
|
+
const debug = (...args) => getLogger().debug(...args);
|
|
160
|
+
const info = (...args) => getLogger().info(...args);
|
|
161
|
+
const warn = (...args) => getLogger().warn(...args);
|
|
162
|
+
const error = (...args) => getLogger().error(...args);
|
|
163
|
+
const success = (...args) => getLogger().success(...args);
|
|
164
|
+
const critical = (...args) => getLogger().critical(...args);
|
|
165
|
+
const trace = (...args) => getLogger().trace(...args);
|
|
166
|
+
const table = (data, columns) => getLogger().table(data, columns);
|
|
167
|
+
const group = (label, collapsed) => getLogger().group(label, collapsed);
|
|
168
|
+
const groupEnd = () => getLogger().groupEnd();
|
|
169
|
+
const time = (label) => getLogger().time(label);
|
|
170
|
+
const timeEnd = (label) => getLogger().timeEnd(label);
|
|
171
|
+
const setGlobalPrefix = (prefix) => getLogger().setGlobalPrefix(prefix);
|
|
172
|
+
const scope = (prefix) => getLogger().scope(prefix);
|
|
173
|
+
const setVerbosity = (level) => getLogger().setVerbosity(level);
|
|
174
|
+
const addHandler = (handler) => getLogger().addHandler(handler);
|
|
175
|
+
const setTheme = (theme) => getLogger().setTheme(theme);
|
|
176
|
+
const setBannerType = (bannerType) => getLogger().setBannerType(bannerType);
|
|
177
|
+
const showBanner = (bannerType) => getLogger().showBanner(bannerType);
|
|
178
|
+
const logWithSVG = (message, svgContent, options) => getLogger().logWithSVG(message, svgContent, options);
|
|
179
|
+
const logAnimated = (message, duration) => getLogger().logAnimated(message, duration);
|
|
180
|
+
const cli = (command) => getLogger().cli(command);
|
|
181
|
+
const createStyle = () => new StyleBuilder();
|
|
182
|
+
const stylePresets = {
|
|
183
|
+
success: StylePresets.success().build(),
|
|
184
|
+
error: StylePresets.error().build(),
|
|
185
|
+
warning: StylePresets.warning().build(),
|
|
186
|
+
info: StylePresets.info().build(),
|
|
187
|
+
accent: StylePresets.accent().build()
|
|
188
|
+
};
|
|
189
|
+
export {
|
|
190
|
+
AnalyticsLogHandler,
|
|
191
|
+
B as BANNER_VARIANTS,
|
|
192
|
+
B3 as BUILD_FORMATTERS,
|
|
193
|
+
B2 as BUILD_PRESETS,
|
|
194
|
+
D as DEFAULT_CONFIG,
|
|
195
|
+
E as ENVIRONMENT_DETECTION,
|
|
196
|
+
FileLogHandler,
|
|
197
|
+
Logger,
|
|
198
|
+
R as RemoteLogHandler,
|
|
199
|
+
StyleBuilder,
|
|
200
|
+
StylePresets,
|
|
201
|
+
a as THEME_BANNERS,
|
|
202
|
+
T as THEME_PRESETS,
|
|
203
|
+
addHandler,
|
|
204
|
+
h as ansiBackground,
|
|
205
|
+
i as ansiBold,
|
|
206
|
+
g2 as ansiColor,
|
|
207
|
+
j as ansiDim,
|
|
208
|
+
f2 as ansiStyle,
|
|
209
|
+
k as ansiUnderline,
|
|
210
|
+
cli,
|
|
211
|
+
a2 as createANSIOutput,
|
|
212
|
+
b as createBuildOutput,
|
|
213
|
+
e as createCIOutput,
|
|
214
|
+
c as createOutput,
|
|
215
|
+
createStyle,
|
|
216
|
+
critical,
|
|
217
|
+
debug,
|
|
218
|
+
index as default,
|
|
219
|
+
d as detectEnvironmentPreset,
|
|
220
|
+
d2 as detectOptimalFormat,
|
|
221
|
+
error,
|
|
222
|
+
l as formatLogLevelANSI,
|
|
223
|
+
m as formatSuccessANSI,
|
|
224
|
+
f as formatTimestamp,
|
|
225
|
+
g as getOptimalConfig,
|
|
226
|
+
group,
|
|
227
|
+
groupEnd,
|
|
228
|
+
info,
|
|
229
|
+
logAnimated,
|
|
230
|
+
logWithSVG,
|
|
231
|
+
p as parseStackTrace,
|
|
232
|
+
n as sanitizeEmojis,
|
|
233
|
+
scope,
|
|
234
|
+
setBannerType,
|
|
235
|
+
setGlobalPrefix,
|
|
236
|
+
setTheme,
|
|
237
|
+
setVerbosity,
|
|
238
|
+
showBanner,
|
|
239
|
+
stylePresets,
|
|
240
|
+
success,
|
|
241
|
+
table,
|
|
242
|
+
time,
|
|
243
|
+
timeEnd,
|
|
244
|
+
trace,
|
|
245
|
+
warn
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/handlers/FileLogHandler.ts","../src/handlers/AnalyticsLogHandler.ts","../src/index.ts"],"sourcesContent":["/**\n * @fileoverview File-based log handler for Advanced Logger\n */\n\nimport type { ILogHandler, LogLevel, LogMetadata } from '../types/index.js';\nimport { isNode, isBrowser } from '../utils/environment.js';\nimport { safeSerialize } from '../utils/formatting.js';\n\n/**\n * Universal file-based log handler for persistent logging\n * Works in both Node.js (real files) and browser (localStorage)\n */\nexport class FileLogHandler implements ILogHandler {\n private filename: string;\n private maxSize?: number;\n private fs?: any; // Node.js fs module\n\n constructor(filename: string = 'app.log', maxSize?: number) {\n this.filename = filename;\n this.maxSize = maxSize;\n \n // Load Node.js fs module if in Node environment\n if (isNode) {\n try {\n this.fs = require('fs');\n } catch (error) {\n console.warn('FileLogHandler: Unable to load fs module:', error);\n }\n }\n }\n\n handle(level: LogLevel, message: string, args: any[], metadata: LogMetadata): void {\n const logEntry = {\n timestamp: metadata.timestamp,\n level: level.toUpperCase(),\n prefix: metadata.prefix,\n message,\n args: args.slice(1).map(arg => safeSerialize(arg)),\n location: metadata.stackInfo,\n };\n\n const logLine = this.formatLogLine(logEntry);\n\n if (isNode && this.fs) {\n this.writeToFileNode(logLine);\n } else if (isBrowser) {\n this.writeToFileLocal(logLine);\n } else {\n // Fallback - just console output\n console.log(`[FILE-LOG] ${logLine}`);\n }\n }\n\n /**\n * Format log entry as a single line for file storage\n */\n private formatLogLine(entry: any): string {\n const parts = [\n entry.timestamp,\n `[${entry.level}]`,\n entry.prefix ? `[${entry.prefix}]` : '',\n entry.message\n ].filter(Boolean);\n\n let line = parts.join(' ');\n \n if (entry.args && entry.args.length > 0) {\n line += ' ' + entry.args.map((arg: any) => \n typeof arg === 'object' ? JSON.stringify(arg) : String(arg)\n ).join(' ');\n }\n \n if (entry.location) {\n line += ` (${entry.location.file}:${entry.location.line}:${entry.location.column})`;\n }\n \n return line;\n }\n\n /**\n * Write to actual file in Node.js environment\n */\n private writeToFileNode(logLine: string): void {\n if (!this.fs) return;\n\n try {\n // Check file size if maxSize is set\n if (this.maxSize) {\n try {\n const stats = this.fs.statSync(this.filename);\n if (stats.size > this.maxSize) {\n // Simple rotation: backup current file and start fresh\n const backupName = `${this.filename}.bak`;\n this.fs.renameSync(this.filename, backupName);\n }\n } catch (error) {\n // File doesn't exist yet, that's fine\n }\n }\n\n // Append to file\n this.fs.appendFileSync(this.filename, logLine + '\\n', 'utf8');\n } catch (error) {\n console.error('FileLogHandler: Failed to write to file:', error);\n }\n }\n\n /**\n * Write to localStorage in browser environment\n */\n private writeToFileLocal(logLine: string): void {\n try {\n const storageKey = `logger_${this.filename}`;\n const existingLogs = localStorage.getItem(storageKey) || '';\n \n let newLogs = existingLogs;\n if (existingLogs.length > 0) {\n newLogs += '\\n';\n }\n newLogs += logLine;\n \n // Simple size management - keep last 1000 lines max\n if (this.maxSize || newLogs.split('\\n').length > 1000) {\n const lines = newLogs.split('\\n');\n const maxLines = this.maxSize ? Math.floor(this.maxSize / 100) : 1000;\n if (lines.length > maxLines) {\n newLogs = lines.slice(-maxLines).join('\\n');\n }\n }\n \n localStorage.setItem(storageKey, newLogs);\n } catch (error) {\n console.error('FileLogHandler: Failed to write to localStorage:', error);\n }\n }\n\n /**\n * Get stored logs (useful for debugging)\n */\n getLogs(): string | null {\n if (isNode && this.fs) {\n try {\n return this.fs.readFileSync(this.filename, 'utf8');\n } catch (error) {\n return null;\n }\n } else if (isBrowser) {\n const storageKey = `logger_${this.filename}`;\n return localStorage.getItem(storageKey);\n }\n return null;\n }\n\n /**\n * Clear stored logs\n */\n clearLogs(): void {\n if (isNode && this.fs) {\n try {\n this.fs.writeFileSync(this.filename, '', 'utf8');\n } catch (error) {\n console.error('FileLogHandler: Failed to clear file:', error);\n }\n } else if (isBrowser) {\n const storageKey = `logger_${this.filename}`;\n localStorage.removeItem(storageKey);\n }\n }\n}","/**\n * @fileoverview Analytics log handler for Advanced Logger\n */\n\nimport type { ILogHandler, LogLevel, LogMetadata } from '../types/index.js';\n\n/**\n * Example custom handler for analytics demonstration\n */\nexport class AnalyticsLogHandler implements ILogHandler {\n handle(level: LogLevel, message: string, _args: any[], metadata: LogMetadata): void {\n // In a real implementation, this could send analytics data\n if (level === 'error' || level === 'critical') {\n // Track errors for analytics\n console.debug('Analytics: Error tracked', { \n level, \n message, \n timestamp: metadata.timestamp \n });\n }\n }\n}","/**\n * @fileoverview Better Logger - Librería completa con todas las características\n * @version 0.3.0\n * @since 2024\n * \n * Punto de entrada principal que proporciona la experiencia completa de Better Logger\n * con características avanzadas incluyendo estilos CSS, soporte SVG, animaciones,\n * capacidades de exportación y logging remoto.\n * \n * @module @mks2508/better-logger\n */\n\n// Main Logger class with all features\nimport { Logger } from './Logger.js';\nimport type {\n LogLevel,\n Verbosity,\n ThemeVariant,\n BannerType,\n StyleOptions,\n ILogHandler\n} from './types/index.js';\n\n// Lazy singleton - se inicializa solo cuando se necesita\nlet _logger: Logger | null = null;\n\nfunction getLogger(): Logger {\n if (!_logger) {\n _logger = new Logger();\n }\n return _logger;\n}\n\n/**\n * Clase principal Logger con conjunto completo de características\n * \n * @example\n * // Importación y uso básico\n * import { Logger } from '@mks2508/better-logger';\n * \n * const logger = new Logger();\n * logger.preset('cyberpunk'); // Aplicar preset completo\n * logger.info('¡Hola mundo!');\n * \n * @example\n * // Logger con scope para componentes\n * const auth = logger.component('Auth');\n * auth.info('Usuario autenticando...');\n * auth.success('Login exitoso');\n * \n * @example\n * // Logger para APIs con badges\n * const api = logger.api('GraphQL');\n * api.badges(['v2', 'cached']).info('Query ejecutada');\n * \n * @since 0.3.0\n */\nexport { Logger };\n\n/**\n * Instancia singleton del logger lista para usar\n * @default\n * \n * @example\n * // Uso directo sin crear instancia\n * import logger from '@mks2508/better-logger';\n * \n * logger.info('Aplicación iniciada');\n * logger.success('Conexión establecida');\n * logger.warn('Memoria al 80%');\n * logger.error('Fallo en conexión');\n */\nexport default getLogger();\n\n/**\n * Métodos de logging individuales (enlazados al singleton)\n * \n * @example\n * // Importar solo los métodos necesarios\n * import { info, error, success } from '@mks2508/better-logger';\n * \n * info('Proceso iniciado');\n * success('✓ Completado exitosamente');\n * error('Error:', errorDetails);\n * \n * @since 0.3.0\n */\nexport const debug = (...args: any[]) => getLogger().debug(...args);\nexport const info = (...args: any[]) => getLogger().info(...args);\nexport const warn = (...args: any[]) => getLogger().warn(...args);\nexport const error = (...args: any[]) => getLogger().error(...args);\nexport const success = (...args: any[]) => getLogger().success(...args);\nexport const critical = (...args: any[]) => getLogger().critical(...args);\nexport const trace = (...args: any[]) => getLogger().trace(...args);\nexport const table = (data: any, columns?: string[]) => getLogger().table(data, columns);\nexport const group = (label: string, collapsed?: boolean) => getLogger().group(label, collapsed);\nexport const groupEnd = () => getLogger().groupEnd();\nexport const time = (label: string) => getLogger().time(label);\nexport const timeEnd = (label: string) => getLogger().timeEnd(label);\nexport const setGlobalPrefix = (prefix: string) => getLogger().setGlobalPrefix(prefix);\nexport const scope = (prefix: string) => getLogger().scope(prefix);\nexport const setVerbosity = (level: Verbosity) => getLogger().setVerbosity(level);\nexport const addHandler = (handler: ILogHandler) => getLogger().addHandler(handler);\nexport const setTheme = (theme: ThemeVariant) => getLogger().setTheme(theme);\nexport const setBannerType = (bannerType: BannerType) => getLogger().setBannerType(bannerType);\nexport const showBanner = (bannerType?: BannerType) => getLogger().showBanner(bannerType);\nexport const logWithSVG = (message: string, svgContent?: string, options?: StyleOptions) => \n getLogger().logWithSVG(message, svgContent, options);\nexport const logAnimated = (message: string, duration?: number) => \n getLogger().logAnimated(message, duration);\nexport const cli = (command: string) => getLogger().cli(command);\n\n// Type exports\nexport type {\n LogLevel,\n Verbosity,\n ThemeVariant,\n BannerType,\n StyleOptions,\n ILogHandler,\n LoggerConfig,\n LogMetadata,\n StackInfo,\n TimerEntry,\n OutputFormat\n} from './types/index.js';\n\n// Styling utilities\nexport { \n StyleBuilder,\n StylePresets,\n THEME_PRESETS,\n THEME_BANNERS,\n BANNER_VARIANTS\n} from './styling/index.js';\n\n// Handler exports\nexport {\n FileLogHandler,\n RemoteLogHandler,\n AnalyticsLogHandler\n} from './handlers/index.js';\n\n// Constants\nexport { DEFAULT_CONFIG } from './constants.js';\n\n// Utility exports\nexport {\n parseStackTrace,\n formatTimestamp,\n detectOptimalFormat,\n createOutput,\n createANSIOutput,\n createBuildOutput,\n createCIOutput\n} from './utils/index.js';\n\n// ANSI color utilities\nexport {\n ansiStyle,\n ansiColor,\n ansiBackground,\n ansiBold,\n ansiDim,\n ansiUnderline,\n formatLogLevelANSI,\n formatSuccessANSI,\n BUILD_FORMATTERS,\n sanitizeEmojis\n} from './utils/ansi-colors.js';\n\n// Environment detection and presets\nexport {\n BUILD_PRESETS,\n ENVIRONMENT_DETECTION,\n detectEnvironmentPreset,\n getOptimalConfig\n} from './constants.js';\n\n/**\n * Utilidades de estilo para crear estilos personalizados de consola\n * \n * @example\n * // Crear estilo personalizado\n * import { createStyle, stylePresets } from '@mks2508/better-logger';\n * \n * const miEstilo = createStyle()\n * .bg('linear-gradient(45deg, #ff6b6b, #feca57)')\n * .color('white')\n * .padding('10px')\n * .rounded('8px')\n * .bold()\n * .build();\n * \n * console.log('%cMensaje estilizado', miEstilo);\n * \n * @example\n * // Usar presets predefinidos\n * console.log('%cÉxito!', stylePresets.success);\n * console.log('%cError!', stylePresets.error);\n * \n * @since 0.3.0\n */\nimport { StyleBuilder, StylePresets } from './styling/index.js';\n\n/**\n * Crea una nueva instancia de StyleBuilder para estilos personalizados de consola\n * \n * @returns {StyleBuilder} Constructor de estilos encadenable\n * \n * @example\n * const estilo = createStyle()\n * .gradient('#667eea', '#764ba2')\n * .color('white')\n * .padding('8px 16px')\n * .rounded('4px')\n * .shadow('0 2px 4px rgba(0,0,0,0.2)')\n * .build();\n * \n * @since 0.3.0\n */\nexport const createStyle = () => new StyleBuilder();\n\n/**\n * Presets de estilo predefinidos para casos de uso comunes\n * \n * @constant {Object} stylePresets\n * \n * @example\n * console.log('%cOperación exitosa', stylePresets.success);\n * console.log('%cAdvertencia', stylePresets.warning);\n * console.log('%cError crítico', stylePresets.error);\n * console.log('%cInformación', stylePresets.info);\n * console.log('%cDestacado', stylePresets.accent);\n * \n * @since 0.3.0\n */\nexport const stylePresets = {\n success: StylePresets.success().build(),\n error: StylePresets.error().build(),\n warning: StylePresets.warning().build(),\n info: StylePresets.info().build(),\n accent: StylePresets.accent().build(),\n};"],"names":["error","StyleBuilder","StylePresets"],"mappings":"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"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { Logger } from '../Logger.js';
|
|
2
|
+
import { LogStyles, SpacingType } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Fluent API builder for log styling with semantic methods
|
|
5
|
+
*/
|
|
6
|
+
export declare class LogStyleBuilder {
|
|
7
|
+
private logStyles;
|
|
8
|
+
private logger;
|
|
9
|
+
constructor(logger: Logger);
|
|
10
|
+
/**
|
|
11
|
+
* Configure timestamp styling
|
|
12
|
+
*/
|
|
13
|
+
timestamp(): TimestampStyleBuilderProxy;
|
|
14
|
+
/**
|
|
15
|
+
* Configure level badge styling
|
|
16
|
+
*/
|
|
17
|
+
level(): LevelStyleBuilderProxy;
|
|
18
|
+
/**
|
|
19
|
+
* Configure prefix styling
|
|
20
|
+
*/
|
|
21
|
+
prefix(): PrefixStyleBuilderProxy;
|
|
22
|
+
/**
|
|
23
|
+
* Configure message text styling
|
|
24
|
+
*/
|
|
25
|
+
message(): MessageStyleBuilderProxy;
|
|
26
|
+
/**
|
|
27
|
+
* Configure location info styling
|
|
28
|
+
*/
|
|
29
|
+
location(): LocationStyleBuilderProxy;
|
|
30
|
+
/**
|
|
31
|
+
* Use a predefined preset
|
|
32
|
+
*/
|
|
33
|
+
usePreset(presetName: string): LogStyleBuilder;
|
|
34
|
+
/**
|
|
35
|
+
* Customize with partial configuration
|
|
36
|
+
*/
|
|
37
|
+
customize(overrides: Partial<LogStyles>): LogStyleBuilder;
|
|
38
|
+
/**
|
|
39
|
+
* Set layout spacing
|
|
40
|
+
*/
|
|
41
|
+
spacing(type: SpacingType): LogStyleBuilder;
|
|
42
|
+
/**
|
|
43
|
+
* Set backdrop filter for glassmorphism effects
|
|
44
|
+
*/
|
|
45
|
+
backdrop(filter: string): LogStyleBuilder;
|
|
46
|
+
/**
|
|
47
|
+
* Set overall transparency
|
|
48
|
+
*/
|
|
49
|
+
transparency(value: number): LogStyleBuilder;
|
|
50
|
+
/**
|
|
51
|
+
* Apply the configured styles to the logger
|
|
52
|
+
*/
|
|
53
|
+
apply(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Get current configuration (for debugging)
|
|
56
|
+
*/
|
|
57
|
+
getConfig(): LogStyles;
|
|
58
|
+
/**
|
|
59
|
+
* Internal method to update part configuration
|
|
60
|
+
*/
|
|
61
|
+
_updatePartConfig(part: keyof LogStyles, styles: string): void;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Base proxy class for part-specific styling
|
|
65
|
+
*/
|
|
66
|
+
declare abstract class PartStyleBuilderProxy {
|
|
67
|
+
protected parentBuilder: LogStyleBuilder;
|
|
68
|
+
protected partName: keyof LogStyles;
|
|
69
|
+
constructor(parentBuilder: LogStyleBuilder, partName: keyof LogStyles);
|
|
70
|
+
/**
|
|
71
|
+
* Return to the main builder for chaining other parts
|
|
72
|
+
*/
|
|
73
|
+
and(): LogStyleBuilder;
|
|
74
|
+
/**
|
|
75
|
+
* Apply styles and finish configuration
|
|
76
|
+
*/
|
|
77
|
+
apply(): void;
|
|
78
|
+
/**
|
|
79
|
+
* Helper to apply styles to the parent builder
|
|
80
|
+
*/
|
|
81
|
+
protected applyStyles(styler: any): this;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Timestamp styling proxy with fluent API
|
|
85
|
+
*/
|
|
86
|
+
declare class TimestampStyleBuilderProxy extends PartStyleBuilderProxy {
|
|
87
|
+
constructor(parentBuilder: LogStyleBuilder);
|
|
88
|
+
default(): TimestampStyleBuilderProxy;
|
|
89
|
+
hidden(): TimestampStyleBuilderProxy;
|
|
90
|
+
minimal(): TimestampStyleBuilderProxy;
|
|
91
|
+
muted(): TimestampStyleBuilderProxy;
|
|
92
|
+
mono(): TimestampStyleBuilderProxy;
|
|
93
|
+
compact(): TimestampStyleBuilderProxy;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Level badge styling proxy with fluent API
|
|
97
|
+
*/
|
|
98
|
+
declare class LevelStyleBuilderProxy extends PartStyleBuilderProxy {
|
|
99
|
+
constructor(parentBuilder: LogStyleBuilder);
|
|
100
|
+
badge(): LevelStyleBuilderProxy;
|
|
101
|
+
gradient(from?: string, to?: string): LevelStyleBuilderProxy;
|
|
102
|
+
glowing(): LevelStyleBuilderProxy;
|
|
103
|
+
flat(): LevelStyleBuilderProxy;
|
|
104
|
+
bold(): LevelStyleBuilderProxy;
|
|
105
|
+
uppercase(): LevelStyleBuilderProxy;
|
|
106
|
+
neon(): LevelStyleBuilderProxy;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Prefix styling proxy with fluent API
|
|
110
|
+
*/
|
|
111
|
+
declare class PrefixStyleBuilderProxy extends PartStyleBuilderProxy {
|
|
112
|
+
constructor(parentBuilder: LogStyleBuilder);
|
|
113
|
+
dark(): PrefixStyleBuilderProxy;
|
|
114
|
+
light(): PrefixStyleBuilderProxy;
|
|
115
|
+
compact(): PrefixStyleBuilderProxy;
|
|
116
|
+
muted(): PrefixStyleBuilderProxy;
|
|
117
|
+
mono(): PrefixStyleBuilderProxy;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Message styling proxy with fluent API
|
|
121
|
+
*/
|
|
122
|
+
declare class MessageStyleBuilderProxy extends PartStyleBuilderProxy {
|
|
123
|
+
constructor(parentBuilder: LogStyleBuilder);
|
|
124
|
+
readable(): MessageStyleBuilderProxy;
|
|
125
|
+
code(): MessageStyleBuilderProxy;
|
|
126
|
+
large(): MessageStyleBuilderProxy;
|
|
127
|
+
system(): MessageStyleBuilderProxy;
|
|
128
|
+
mono(): MessageStyleBuilderProxy;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Location styling proxy with fluent API
|
|
132
|
+
*/
|
|
133
|
+
declare class LocationStyleBuilderProxy extends PartStyleBuilderProxy {
|
|
134
|
+
constructor(parentBuilder: LogStyleBuilder);
|
|
135
|
+
subtle(): LocationStyleBuilderProxy;
|
|
136
|
+
hidden(): LocationStyleBuilderProxy;
|
|
137
|
+
clickable(): LocationStyleBuilderProxy;
|
|
138
|
+
muted(): LocationStyleBuilderProxy;
|
|
139
|
+
mono(): LocationStyleBuilderProxy;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Create a new LogStyleBuilder instance
|
|
143
|
+
*/
|
|
144
|
+
export declare function createLogStyleBuilder(logger: Logger): LogStyleBuilder;
|
|
145
|
+
export {};
|
|
146
|
+
//# sourceMappingURL=LogStyleBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogStyleBuilder.d.ts","sourceRoot":"","sources":["../../src/styling/LogStyleBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { StyleBuilder } from './StyleBuilder.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base semantic styler with common style methods
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class BaseStyler {
|
|
6
|
+
protected builder: StyleBuilder;
|
|
7
|
+
constructor(builder?: StyleBuilder);
|
|
8
|
+
/**
|
|
9
|
+
* Primary brand color (typically blue)
|
|
10
|
+
*/
|
|
11
|
+
primary(): this;
|
|
12
|
+
/**
|
|
13
|
+
* Secondary color (typically gray)
|
|
14
|
+
*/
|
|
15
|
+
secondary(): this;
|
|
16
|
+
/**
|
|
17
|
+
* Accent color for highlights
|
|
18
|
+
*/
|
|
19
|
+
accent(): this;
|
|
20
|
+
/**
|
|
21
|
+
* Muted/subtle color - automatically adaptive
|
|
22
|
+
*/
|
|
23
|
+
muted(): this;
|
|
24
|
+
/**
|
|
25
|
+
* Success color (green)
|
|
26
|
+
*/
|
|
27
|
+
success(): this;
|
|
28
|
+
/**
|
|
29
|
+
* Warning color (yellow/orange)
|
|
30
|
+
*/
|
|
31
|
+
warning(): this;
|
|
32
|
+
/**
|
|
33
|
+
* Danger/error color (red)
|
|
34
|
+
*/
|
|
35
|
+
danger(): this;
|
|
36
|
+
/**
|
|
37
|
+
* Monospace font family
|
|
38
|
+
*/
|
|
39
|
+
mono(): this;
|
|
40
|
+
/**
|
|
41
|
+
* System font family
|
|
42
|
+
*/
|
|
43
|
+
system(): this;
|
|
44
|
+
/**
|
|
45
|
+
* Readable font optimized for text
|
|
46
|
+
*/
|
|
47
|
+
readable(): this;
|
|
48
|
+
/**
|
|
49
|
+
* Compact spacing
|
|
50
|
+
*/
|
|
51
|
+
compact(): this;
|
|
52
|
+
/**
|
|
53
|
+
* Spacious layout
|
|
54
|
+
*/
|
|
55
|
+
spacious(): this;
|
|
56
|
+
/**
|
|
57
|
+
* Inline display
|
|
58
|
+
*/
|
|
59
|
+
inline(): this;
|
|
60
|
+
/**
|
|
61
|
+
* Glass morphism effect
|
|
62
|
+
*/
|
|
63
|
+
glassmorphic(): this;
|
|
64
|
+
/**
|
|
65
|
+
* Neon glow effect
|
|
66
|
+
*/
|
|
67
|
+
neon(): this;
|
|
68
|
+
/**
|
|
69
|
+
* Gradient background
|
|
70
|
+
*/
|
|
71
|
+
gradient(from?: string, to?: string): this;
|
|
72
|
+
/**
|
|
73
|
+
* Bold text
|
|
74
|
+
*/
|
|
75
|
+
bold(): this;
|
|
76
|
+
/**
|
|
77
|
+
* Set color with automatic adaptation
|
|
78
|
+
*/
|
|
79
|
+
protected color(color: string): this;
|
|
80
|
+
/**
|
|
81
|
+
* Build the final CSS string
|
|
82
|
+
*/
|
|
83
|
+
build(): string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Timestamp-specific styling
|
|
87
|
+
*/
|
|
88
|
+
export declare class TimestampStyler extends BaseStyler {
|
|
89
|
+
/**
|
|
90
|
+
* Default timestamp style - subtle and informative
|
|
91
|
+
*/
|
|
92
|
+
default(): this;
|
|
93
|
+
/**
|
|
94
|
+
* Hide timestamp
|
|
95
|
+
*/
|
|
96
|
+
hidden(): this;
|
|
97
|
+
/**
|
|
98
|
+
* Minimal timestamp (just time, no date)
|
|
99
|
+
*/
|
|
100
|
+
minimal(): this;
|
|
101
|
+
/**
|
|
102
|
+
* Set font size
|
|
103
|
+
*/
|
|
104
|
+
size(size: string): this;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Level badge styling
|
|
108
|
+
*/
|
|
109
|
+
export declare class LevelStyler extends BaseStyler {
|
|
110
|
+
/**
|
|
111
|
+
* Colorful gradient badge
|
|
112
|
+
*/
|
|
113
|
+
badge(): this;
|
|
114
|
+
/**
|
|
115
|
+
* Glowing effect for dark themes
|
|
116
|
+
*/
|
|
117
|
+
glowing(): this;
|
|
118
|
+
/**
|
|
119
|
+
* Minimal flat style
|
|
120
|
+
*/
|
|
121
|
+
flat(): this;
|
|
122
|
+
/**
|
|
123
|
+
* Uppercase text
|
|
124
|
+
*/
|
|
125
|
+
uppercase(): this;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Prefix styling
|
|
129
|
+
*/
|
|
130
|
+
export declare class PrefixStyler extends BaseStyler {
|
|
131
|
+
/**
|
|
132
|
+
* Dark theme prefix
|
|
133
|
+
*/
|
|
134
|
+
dark(): this;
|
|
135
|
+
/**
|
|
136
|
+
* Light theme prefix
|
|
137
|
+
*/
|
|
138
|
+
light(): this;
|
|
139
|
+
/**
|
|
140
|
+
* Compact prefix
|
|
141
|
+
*/
|
|
142
|
+
compact(): this;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Message text styling
|
|
146
|
+
*/
|
|
147
|
+
export declare class MessageStyler extends BaseStyler {
|
|
148
|
+
/**
|
|
149
|
+
* Readable message text - automatically adaptive
|
|
150
|
+
*/
|
|
151
|
+
readable(): this;
|
|
152
|
+
/**
|
|
153
|
+
* Code-style monospace text
|
|
154
|
+
*/
|
|
155
|
+
code(): this;
|
|
156
|
+
/**
|
|
157
|
+
* Large, prominent text
|
|
158
|
+
*/
|
|
159
|
+
large(): this;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Location info styling
|
|
163
|
+
*/
|
|
164
|
+
export declare class LocationStyler extends BaseStyler {
|
|
165
|
+
/**
|
|
166
|
+
* Subtle location info - automatically adaptive
|
|
167
|
+
*/
|
|
168
|
+
subtle(): this;
|
|
169
|
+
/**
|
|
170
|
+
* Hide location info
|
|
171
|
+
*/
|
|
172
|
+
hidden(): this;
|
|
173
|
+
/**
|
|
174
|
+
* Clickable style (for IDE integration)
|
|
175
|
+
*/
|
|
176
|
+
clickable(): this;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=SemanticStyles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SemanticStyles.d.ts","sourceRoot":"","sources":["../../src/styling/SemanticStyles.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD;;GAEG;AACH,8BAAsB,UAAU;IAC5B,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;gBAEpB,OAAO,GAAE,YAAiC;IAItD;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,MAAM,IAAI,IAAI;IAKd;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACH,MAAM,IAAI,IAAI;IAKd;;OAEG;IACH,YAAY,IAAI,IAAI;IASpB;;OAEG;IACH,IAAI,IAAI,IAAI;IAUZ;;OAEG;IACH,QAAQ,CAAC,IAAI,GAAE,MAAkB,EAAE,EAAE,GAAE,MAAkB,GAAG,IAAI;IAKhE;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKpC;;OAEG;IACH,KAAK,IAAI,MAAM;CAGlB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC3C;;OAEG;IACH,OAAO,IAAI,IAAI;IAMf;;OAEG;IACH,MAAM,IAAI,IAAI;IAKd;;OAEG;IACH,OAAO,IAAI,IAAI;IAMf;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAI3B;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACvC;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,SAAS,IAAI,IAAI;CAIpB;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IACxC;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ;;OAEG;IACH,KAAK,IAAI,IAAI;IAab;;OAEG;IACH,OAAO,IAAI,IAAI;CAOlB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;IACzC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAQhB;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;IACH,KAAK,IAAI,IAAI;CAMhB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC1C;;OAEG;IACH,MAAM,IAAI,IAAI;IASd;;OAEG;IACH,MAAM,IAAI,IAAI;IAKd;;OAEG;IACH,SAAS,IAAI,IAAI;CAKpB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LogStyles } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Smart presets that configure the entire log appearance
|
|
4
|
+
*/
|
|
5
|
+
export declare const SMART_PRESETS: Record<string, LogStyles>;
|
|
6
|
+
/**
|
|
7
|
+
* Get a smart preset by name
|
|
8
|
+
*/
|
|
9
|
+
export declare function getSmartPreset(name: string): LogStyles | null;
|
|
10
|
+
/**
|
|
11
|
+
* List all available smart presets
|
|
12
|
+
*/
|
|
13
|
+
export declare function getAvailablePresets(): string[];
|
|
14
|
+
/**
|
|
15
|
+
* Check if a preset exists
|
|
16
|
+
*/
|
|
17
|
+
export declare function hasPreset(name: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Preset descriptions for help/documentation
|
|
20
|
+
*/
|
|
21
|
+
export declare const PRESET_DESCRIPTIONS: Record<string, string>;
|
|
22
|
+
//# sourceMappingURL=SmartPresets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SmartPresets.d.ts","sourceRoot":"","sources":["../../src/styling/SmartPresets.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAqPnD,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAE7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOtD,CAAC"}
|