@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,361 @@
1
+ function parseStackTrace() {
2
+ try {
3
+ const stack = new Error().stack;
4
+ if (!stack) {
5
+ return null;
6
+ }
7
+ const lines = stack.split("\n").filter((line) => line.trim());
8
+ for (let i = 1; i < lines.length; i++) {
9
+ const line = lines[i];
10
+ if (!line) {
11
+ continue;
12
+ }
13
+ if (line.includes("parseStackTrace") || line.includes("Logger.") || line.includes(".log(") || line.includes("createStyledOutput")) {
14
+ continue;
15
+ }
16
+ let match;
17
+ const chromeMatch = line.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);
18
+ if (chromeMatch) {
19
+ match = chromeMatch;
20
+ } else {
21
+ const firefoxMatch = line.match(/(.+?)@(.+?):(\d+):(\d+)$/);
22
+ if (firefoxMatch) {
23
+ match = firefoxMatch;
24
+ } else {
25
+ const safariMatch = line.match(/(\S+)?@(.+?):(\d+):(\d+)$/);
26
+ if (safariMatch) {
27
+ match = safariMatch;
28
+ }
29
+ }
30
+ }
31
+ if (!match) {
32
+ continue;
33
+ }
34
+ const [, functionName, file, lineStr, columnStr] = match;
35
+ if (!file) {
36
+ continue;
37
+ }
38
+ const fileParts = file.split("/");
39
+ const fileName = fileParts[fileParts.length - 1];
40
+ if (!fileName) {
41
+ continue;
42
+ }
43
+ const cleanFileName = fileName.split("?")[0];
44
+ const lineNum = lineStr ? parseInt(lineStr, 10) : 0;
45
+ const columnNum = columnStr ? parseInt(columnStr, 10) : 0;
46
+ const cleanFunction = functionName && functionName.trim() ? functionName.trim() : void 0;
47
+ return {
48
+ file: cleanFileName ? cleanFileName : "unknown",
49
+ line: lineNum,
50
+ column: columnNum,
51
+ function: cleanFunction
52
+ };
53
+ }
54
+ return null;
55
+ } catch {
56
+ return null;
57
+ }
58
+ }
59
+ const DEFAULT_CONFIG = {
60
+ verbosity: "info",
61
+ enableColors: true,
62
+ enableTimestamps: true,
63
+ enableStackTrace: true,
64
+ theme: "default",
65
+ bannerType: "simple",
66
+ bufferSize: 1e3
67
+ };
68
+ const BUFFER_LIMITS = {
69
+ MIN_SIZE: 50,
70
+ DEFAULT_SIZE: 1e3,
71
+ MAX_SIZE: 1e4
72
+ };
73
+ const EXPORT_FORMATS = {
74
+ json: { extension: ".json", mimeType: "application/json" },
75
+ csv: { extension: ".csv", mimeType: "text/csv" },
76
+ markdown: { extension: ".md", mimeType: "text/markdown" },
77
+ plain: { extension: ".txt", mimeType: "text/plain" },
78
+ html: { extension: ".html", mimeType: "text/html" }
79
+ };
80
+ const TIME_UNITS = {
81
+ ms: 1,
82
+ s: 1e3,
83
+ m: 60 * 1e3,
84
+ h: 60 * 60 * 1e3,
85
+ d: 24 * 60 * 60 * 1e3
86
+ };
87
+ function formatTimestamp() {
88
+ try {
89
+ const now = /* @__PURE__ */ new Date();
90
+ return now.toISOString();
91
+ } catch {
92
+ return (/* @__PURE__ */ new Date()).toISOString();
93
+ }
94
+ }
95
+ function parseRelativeTime(timeStr) {
96
+ const match = timeStr.match(/^(\d+)(ms|s|m|h|d)$/);
97
+ if (!match) {
98
+ throw new Error(`Invalid time format: ${timeStr}. Use format like "2h", "30m", "1d"`);
99
+ }
100
+ const [, amount, unit] = match;
101
+ const multiplier = TIME_UNITS[unit];
102
+ return parseInt(amount || "0", 10) * multiplier;
103
+ }
104
+ function parseTimeInput(input) {
105
+ if (input instanceof Date) {
106
+ return input;
107
+ }
108
+ if (typeof input === "number") {
109
+ return new Date(Date.now() - input * TIME_UNITS.h);
110
+ }
111
+ if (typeof input === "string") {
112
+ const isoDate = new Date(input);
113
+ if (!isNaN(isoDate.getTime())) {
114
+ return isoDate;
115
+ }
116
+ try {
117
+ const ms = parseRelativeTime(input);
118
+ return new Date(Date.now() - ms);
119
+ } catch {
120
+ throw new Error(`Invalid time format: ${input}`);
121
+ }
122
+ }
123
+ throw new Error(`Unsupported time input type: ${typeof input}`);
124
+ }
125
+ function formatDisplayTime(date, format = "short") {
126
+ switch (format) {
127
+ case "time-only":
128
+ return date.toTimeString().slice(0, 8);
129
+ // HH:MM:SS
130
+ case "full":
131
+ return date.toISOString();
132
+ case "short":
133
+ default:
134
+ return date.toISOString().slice(11, 23);
135
+ }
136
+ }
137
+ class StyleBuilder {
138
+ styles = [];
139
+ constructor(baseStyle = "") {
140
+ if (baseStyle) this.styles.push(baseStyle);
141
+ }
142
+ /**
143
+ * Add background color or gradient
144
+ */
145
+ bg(background) {
146
+ this.styles.push(`background: ${background}`);
147
+ return this;
148
+ }
149
+ /**
150
+ * Add text color
151
+ */
152
+ color(color) {
153
+ this.styles.push(`color: ${color}`);
154
+ return this;
155
+ }
156
+ /**
157
+ * Add border styling
158
+ */
159
+ border(border) {
160
+ this.styles.push(`border: ${border}`);
161
+ return this;
162
+ }
163
+ /**
164
+ * Add box shadow
165
+ */
166
+ shadow(shadow) {
167
+ this.styles.push(`box-shadow: ${shadow}`);
168
+ return this;
169
+ }
170
+ /**
171
+ * Add padding
172
+ */
173
+ padding(padding) {
174
+ this.styles.push(`padding: ${padding}`);
175
+ return this;
176
+ }
177
+ /**
178
+ * Add margin
179
+ */
180
+ margin(margin) {
181
+ this.styles.push(`margin: ${margin}`);
182
+ return this;
183
+ }
184
+ /**
185
+ * Add border radius
186
+ */
187
+ rounded(radius = "4px") {
188
+ this.styles.push(`border-radius: ${radius}`);
189
+ return this;
190
+ }
191
+ /**
192
+ * Add font weight
193
+ */
194
+ bold() {
195
+ this.styles.push("font-weight: bold");
196
+ return this;
197
+ }
198
+ /**
199
+ * Add font styling
200
+ */
201
+ font(font) {
202
+ this.styles.push(`font-family: ${font}`);
203
+ return this;
204
+ }
205
+ /**
206
+ * Add font size
207
+ */
208
+ size(size) {
209
+ this.styles.push(`font-size: ${size}`);
210
+ return this;
211
+ }
212
+ /**
213
+ * Add line height
214
+ */
215
+ lineHeight(height) {
216
+ this.styles.push(`line-height: ${height}`);
217
+ return this;
218
+ }
219
+ /**
220
+ * Add text decoration
221
+ */
222
+ underline() {
223
+ this.styles.push("text-decoration: underline");
224
+ return this;
225
+ }
226
+ /**
227
+ * Add text transform
228
+ */
229
+ uppercase() {
230
+ this.styles.push("text-transform: uppercase");
231
+ return this;
232
+ }
233
+ /**
234
+ * Add opacity
235
+ */
236
+ opacity(value) {
237
+ this.styles.push(`opacity: ${value}`);
238
+ return this;
239
+ }
240
+ /**
241
+ * Add display property
242
+ */
243
+ display(value) {
244
+ this.styles.push(`display: ${value}`);
245
+ return this;
246
+ }
247
+ /**
248
+ * Add position property
249
+ */
250
+ position(value) {
251
+ this.styles.push(`position: ${value}`);
252
+ return this;
253
+ }
254
+ /**
255
+ * Add transform property
256
+ */
257
+ transform(value) {
258
+ this.styles.push(`transform: ${value}`);
259
+ return this;
260
+ }
261
+ /**
262
+ * Add animation property
263
+ */
264
+ animation(value) {
265
+ this.styles.push(`animation: ${value}`);
266
+ return this;
267
+ }
268
+ /**
269
+ * Add transition property
270
+ */
271
+ transition(value) {
272
+ this.styles.push(`transition: ${value}`);
273
+ return this;
274
+ }
275
+ /**
276
+ * Add cursor property
277
+ */
278
+ cursor(value) {
279
+ this.styles.push(`cursor: ${value}`);
280
+ return this;
281
+ }
282
+ /**
283
+ * Add any custom CSS property
284
+ */
285
+ custom(property, value) {
286
+ this.styles.push(`${property}: ${value}`);
287
+ return this;
288
+ }
289
+ /**
290
+ * Add any CSS property (alias for custom)
291
+ */
292
+ css(property, value) {
293
+ return this.custom(property, value);
294
+ }
295
+ /**
296
+ * Build the final CSS string
297
+ */
298
+ build() {
299
+ return this.styles.join("; ");
300
+ }
301
+ /**
302
+ * Clear all styles and start fresh
303
+ */
304
+ clear() {
305
+ this.styles = [];
306
+ return this;
307
+ }
308
+ /**
309
+ * Clone this StyleBuilder with the same styles
310
+ */
311
+ clone() {
312
+ const cloned = new StyleBuilder();
313
+ cloned.styles = [...this.styles];
314
+ return cloned;
315
+ }
316
+ /**
317
+ * Merge another StyleBuilder's styles into this one
318
+ */
319
+ merge(other) {
320
+ this.styles.push(...other.styles);
321
+ return this;
322
+ }
323
+ }
324
+ function createStyler() {
325
+ const builder = new StyleBuilder();
326
+ return new Proxy(builder, {
327
+ get(target, prop) {
328
+ if (prop in target) {
329
+ const method = target[prop];
330
+ if (typeof method === "function") {
331
+ return method.bind(target);
332
+ }
333
+ return method;
334
+ }
335
+ return void 0;
336
+ }
337
+ });
338
+ }
339
+ createStyler();
340
+ const StylePresets = {
341
+ success: () => new StyleBuilder().bg("linear-gradient(135deg, #00b894 0%, #00a085 100%)").color("#ffffff").padding("4px 8px").rounded("4px").bold(),
342
+ error: () => new StyleBuilder().bg("linear-gradient(135deg, #e84393 0%, #d63031 100%)").color("#ffffff").padding("4px 8px").rounded("4px").bold(),
343
+ warning: () => new StyleBuilder().bg("linear-gradient(135deg, #fdcb6e 0%, #e17055 100%)").color("#2d3436").padding("4px 8px").rounded("4px").bold(),
344
+ info: () => new StyleBuilder().bg("linear-gradient(135deg, #74b9ff 0%, #0984e3 100%)").color("#ffffff").padding("4px 8px").rounded("4px").bold(),
345
+ debug: () => new StyleBuilder().bg("linear-gradient(135deg, #667eea 0%, #764ba2 100%)").color("#ffffff").padding("4px 8px").rounded("4px").bold(),
346
+ muted: () => new StyleBuilder().color("#6c757d").font("Monaco, Consolas, monospace").size("12px"),
347
+ accent: () => new StyleBuilder().bg("#f8f9fa").color("#495057").padding("2px 6px").rounded("3px").border("1px solid #dee2e6"),
348
+ neon: () => new StyleBuilder().bg("linear-gradient(135deg, #0f3460 0%, #e94560 100%)").color("#00ffff").padding("4px 8px").rounded("4px").bold().shadow("0 0 10px rgba(0, 255, 255, 0.5)")
349
+ };
350
+ export {
351
+ BUFFER_LIMITS as B,
352
+ DEFAULT_CONFIG as D,
353
+ EXPORT_FORMATS as E,
354
+ StylePresets as S,
355
+ StyleBuilder as a,
356
+ parseTimeInput as b,
357
+ formatDisplayTime as c,
358
+ formatTimestamp as f,
359
+ parseStackTrace as p
360
+ };
361
+ //# sourceMappingURL=StyleBuilder-BoJTmskd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyleBuilder-BoJTmskd.js","sources":["../../src/utils/stackTrace.ts","../../src/constants.ts","../../src/utils/timestamps.ts","../../src/styling/StyleBuilder.ts"],"sourcesContent":["/**\n * @fileoverview Stack trace parsing utilities for Advanced Logger\n */\n\nimport type { StackInfo } from '../types/index.js';\n\n/**\n * Parses the current stack trace to extract caller information\n */\nexport function parseStackTrace(): StackInfo | null {\n try {\n const stack = new Error().stack;\n if (!stack) {\n return null;\n }\n\n const lines = stack.split('\\n').filter(line => line.trim());\n \n // Find the first caller that's not from Logger methods\n for (let i = 1; i < lines.length; i++) {\n const line = lines[i];\n \n if (!line) {\n continue;\n }\n \n // Skip if line contains Logger methods or parseStackTrace\n if (line.includes('parseStackTrace') || \n line.includes('Logger.') || \n line.includes('.log(') ||\n line.includes('createStyledOutput')) {\n continue;\n }\n\n // Parse different stack trace formats\n let match;\n \n // Chrome format: \"at functionName (file:line:column)\" or \"at file:line:column\"\n const chromeMatch = line.match(/at\\s+(?:(.+?)\\s+\\()?(.+?):(\\d+):(\\d+)\\)?$/);\n if (chromeMatch) {\n match = chromeMatch;\n } else {\n // Firefox format: \"functionName@file:line:column\"\n const firefoxMatch = line.match(/(.+?)@(.+?):(\\d+):(\\d+)$/);\n if (firefoxMatch) {\n match = firefoxMatch;\n } else {\n // Safari/other formats\n const safariMatch = line.match(/(\\S+)?@(.+?):(\\d+):(\\d+)$/);\n if (safariMatch) {\n match = safariMatch;\n }\n }\n }\n\n if (!match) {\n continue;\n }\n\n const [, functionName, file, lineStr, columnStr] = match;\n \n if (!file) {\n continue;\n }\n \n // Process file path - remove query params and get filename\n const fileParts = file.split('/');\n const fileName = fileParts[fileParts.length - 1];\n if (!fileName) {\n continue;\n }\n const cleanFileName = fileName.split('?')[0];\n \n // Parse line and column numbers\n const lineNum = lineStr ? parseInt(lineStr, 10) : 0;\n const columnNum = columnStr ? parseInt(columnStr, 10) : 0;\n \n // Clean function name\n const cleanFunction = functionName && functionName.trim() \n ? functionName.trim() \n : undefined;\n \n return {\n file: cleanFileName ? cleanFileName : 'unknown',\n line: lineNum,\n column: columnNum,\n function: cleanFunction\n };\n }\n \n return null;\n } catch {\n return null;\n }\n}","/**\n * @fileoverview Global constants for Advanced Logger\n */\n\nimport type { LogLevel } from './types/index.js';\n\n/**\n * Default configuration values\n */\nexport const DEFAULT_CONFIG = {\n verbosity: 'info' as const,\n enableColors: true,\n enableTimestamps: true,\n enableStackTrace: true,\n theme: 'default' as const,\n bannerType: 'simple' as const,\n bufferSize: 1000,\n} as const;\n\n/**\n * Maximum allowed buffer sizes for performance\n */\nexport const BUFFER_LIMITS = {\n MIN_SIZE: 50,\n DEFAULT_SIZE: 1000,\n MAX_SIZE: 10000,\n} as const;\n\n/**\n * Export format definitions with extensions\n */\nexport const EXPORT_FORMATS = {\n json: { extension: '.json', mimeType: 'application/json' },\n csv: { extension: '.csv', mimeType: 'text/csv' },\n markdown: { extension: '.md', mimeType: 'text/markdown' },\n plain: { extension: '.txt', mimeType: 'text/plain' },\n html: { extension: '.html', mimeType: 'text/html' },\n} as const;\n\n/**\n * CLI command definitions\n */\nexport const CLI_COMMANDS = {\n config: 'config',\n help: 'help',\n themes: 'themes',\n banners: 'banners',\n banner: 'banner',\n status: 'status',\n reset: 'reset',\n demo: 'demo',\n export: 'export',\n copy: 'copy',\n 'buffer-size': 'buffer-size',\n 'clear-buffer': 'clear-buffer',\n 'buffer-info': 'buffer-info',\n} as const;\n\n/**\n * Time parsing constants for relative time filters\n */\nexport const TIME_UNITS = {\n ms: 1,\n s: 1000,\n m: 60 * 1000,\n h: 60 * 60 * 1000,\n d: 24 * 60 * 60 * 1000,\n} as const;\n\n/**\n * Default styling values\n */\nexport const STYLE_DEFAULTS = {\n FONT_FAMILY: 'Monaco, Consolas, monospace',\n FONT_SIZE: '12px',\n BORDER_RADIUS: '4px',\n PADDING: '4px 8px',\n} as const;\n\n/**\n * Level priority mapping for filtering\n */\nexport const LEVEL_PRIORITIES: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n critical: 4,\n} as const;","/**\n * @fileoverview Timestamp utilities for Advanced Logger\n */\n\nimport { TIME_UNITS } from '../constants.js';\n\n/**\n * Formats the timestamp using modern Date API\n */\nexport function formatTimestamp(): string {\n try {\n // Use modern Temporal API if available, fallback to Date\n const now = new Date();\n return now.toISOString();\n } catch {\n return new Date().toISOString();\n }\n}\n\n/**\n * Parse relative time strings like \"2h\", \"30m\", \"1d\" into milliseconds\n */\nexport function parseRelativeTime(timeStr: string): number {\n const match = timeStr.match(/^(\\d+)(ms|s|m|h|d)$/);\n if (!match) {\n throw new Error(`Invalid time format: ${timeStr}. Use format like \"2h\", \"30m\", \"1d\"`);\n }\n\n const [, amount, unit] = match;\n const multiplier = TIME_UNITS[unit as keyof typeof TIME_UNITS];\n \n return parseInt(amount || '0', 10) * multiplier;\n}\n\n/**\n * Parse time input which can be Date, ISO string, or relative time\n */\nexport function parseTimeInput(input: Date | string | number): Date {\n if (input instanceof Date) {\n return input;\n }\n\n if (typeof input === 'number') {\n // Assume hours ago\n return new Date(Date.now() - input * TIME_UNITS.h);\n }\n\n if (typeof input === 'string') {\n // Try parsing as ISO date first\n const isoDate = new Date(input);\n if (!isNaN(isoDate.getTime())) {\n return isoDate;\n }\n\n // Try parsing as relative time\n try {\n const ms = parseRelativeTime(input);\n return new Date(Date.now() - ms);\n } catch {\n throw new Error(`Invalid time format: ${input}`);\n }\n }\n\n throw new Error(`Unsupported time input type: ${typeof input}`);\n}\n\n/**\n * Format timestamp for display in different contexts\n */\nexport function formatDisplayTime(date: Date, format: 'short' | 'full' | 'time-only' = 'short'): string {\n switch (format) {\n case 'time-only':\n return date.toTimeString().slice(0, 8); // HH:MM:SS\n case 'full':\n return date.toISOString();\n case 'short':\n default:\n return date.toISOString().slice(11, 23); // HH:MM:SS.mmm\n }\n}","/**\n * @fileoverview StyleBuilder class for Advanced Logger\n */\n\n/**\n * Utility class for creating dynamic console styles with method chaining\n */\nexport class StyleBuilder {\n private styles: string[] = [];\n\n constructor(baseStyle = '') {\n if (baseStyle) this.styles.push(baseStyle);\n }\n\n /**\n * Add background color or gradient\n */\n bg(background: string): StyleBuilder {\n this.styles.push(`background: ${background}`);\n return this;\n }\n\n /**\n * Add text color\n */\n color(color: string): StyleBuilder {\n this.styles.push(`color: ${color}`);\n return this;\n }\n\n /**\n * Add border styling\n */\n border(border: string): StyleBuilder {\n this.styles.push(`border: ${border}`);\n return this;\n }\n\n /**\n * Add box shadow\n */\n shadow(shadow: string): StyleBuilder {\n this.styles.push(`box-shadow: ${shadow}`);\n return this;\n }\n\n /**\n * Add padding\n */\n padding(padding: string): StyleBuilder {\n this.styles.push(`padding: ${padding}`);\n return this;\n }\n\n /**\n * Add margin\n */\n margin(margin: string): StyleBuilder {\n this.styles.push(`margin: ${margin}`);\n return this;\n }\n\n /**\n * Add border radius\n */\n rounded(radius: string = '4px'): StyleBuilder {\n this.styles.push(`border-radius: ${radius}`);\n return this;\n }\n\n /**\n * Add font weight\n */\n bold(): StyleBuilder {\n this.styles.push('font-weight: bold');\n return this;\n }\n\n /**\n * Add font styling\n */\n font(font: string): StyleBuilder {\n this.styles.push(`font-family: ${font}`);\n return this;\n }\n\n /**\n * Add font size\n */\n size(size: string): StyleBuilder {\n this.styles.push(`font-size: ${size}`);\n return this;\n }\n\n /**\n * Add line height\n */\n lineHeight(height: string): StyleBuilder {\n this.styles.push(`line-height: ${height}`);\n return this;\n }\n\n /**\n * Add text decoration\n */\n underline(): StyleBuilder {\n this.styles.push('text-decoration: underline');\n return this;\n }\n\n /**\n * Add text transform\n */\n uppercase(): StyleBuilder {\n this.styles.push('text-transform: uppercase');\n return this;\n }\n\n /**\n * Add opacity\n */\n opacity(value: number): StyleBuilder {\n this.styles.push(`opacity: ${value}`);\n return this;\n }\n\n /**\n * Add display property\n */\n display(value: string): StyleBuilder {\n this.styles.push(`display: ${value}`);\n return this;\n }\n\n /**\n * Add position property\n */\n position(value: string): StyleBuilder {\n this.styles.push(`position: ${value}`);\n return this;\n }\n\n /**\n * Add transform property\n */\n transform(value: string): StyleBuilder {\n this.styles.push(`transform: ${value}`);\n return this;\n }\n\n /**\n * Add animation property\n */\n animation(value: string): StyleBuilder {\n this.styles.push(`animation: ${value}`);\n return this;\n }\n\n /**\n * Add transition property\n */\n transition(value: string): StyleBuilder {\n this.styles.push(`transition: ${value}`);\n return this;\n }\n\n /**\n * Add cursor property\n */\n cursor(value: string): StyleBuilder {\n this.styles.push(`cursor: ${value}`);\n return this;\n }\n\n /**\n * Add any custom CSS property\n */\n custom(property: string, value: string): StyleBuilder {\n this.styles.push(`${property}: ${value}`);\n return this;\n }\n\n /**\n * Add any CSS property (alias for custom)\n */\n css(property: string, value: string): StyleBuilder {\n return this.custom(property, value);\n }\n\n /**\n * Build the final CSS string\n */\n build(): string {\n return this.styles.join('; ');\n }\n\n /**\n * Clear all styles and start fresh\n */\n clear(): StyleBuilder {\n this.styles = [];\n return this;\n }\n\n /**\n * Clone this StyleBuilder with the same styles\n */\n clone(): StyleBuilder {\n const cloned = new StyleBuilder();\n cloned.styles = [...this.styles];\n return cloned;\n }\n\n /**\n * Merge another StyleBuilder's styles into this one\n */\n merge(other: StyleBuilder): StyleBuilder {\n this.styles.push(...other.styles);\n return this;\n }\n}\n\n/**\n * Proxy-based dynamic styler for chainable console styling\n */\nfunction createStyler(): any {\n const builder = new StyleBuilder();\n return new Proxy(builder, {\n get(target: StyleBuilder, prop: string) {\n if (prop in target) {\n const method = (target as any)[prop];\n if (typeof method === 'function') {\n return method.bind(target);\n }\n return method;\n }\n return undefined;\n }\n });\n}\n\n/**\n * Dynamic styler instance for external use\n */\nexport const $ = createStyler();\n\n/**\n * Pre-defined style presets for common use cases\n */\nexport const StylePresets = {\n success: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #00b894 0%, #00a085 100%)')\n .color('#ffffff')\n .padding('4px 8px')\n .rounded('4px')\n .bold(),\n\n error: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #e84393 0%, #d63031 100%)')\n .color('#ffffff')\n .padding('4px 8px')\n .rounded('4px')\n .bold(),\n\n warning: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #fdcb6e 0%, #e17055 100%)')\n .color('#2d3436')\n .padding('4px 8px')\n .rounded('4px')\n .bold(),\n\n info: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #74b9ff 0%, #0984e3 100%)')\n .color('#ffffff')\n .padding('4px 8px')\n .rounded('4px')\n .bold(),\n\n debug: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #667eea 0%, #764ba2 100%)')\n .color('#ffffff')\n .padding('4px 8px')\n .rounded('4px')\n .bold(),\n\n muted: () => new StyleBuilder()\n .color('#6c757d')\n .font('Monaco, Consolas, monospace')\n .size('12px'),\n\n accent: () => new StyleBuilder()\n .bg('#f8f9fa')\n .color('#495057')\n .padding('2px 6px')\n .rounded('3px')\n .border('1px solid #dee2e6'),\n\n neon: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #0f3460 0%, #e94560 100%)')\n .color('#00ffff')\n .padding('4px 8px')\n .rounded('4px')\n .bold()\n .shadow('0 0 10px rgba(0, 255, 255, 0.5)'),\n};"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ "use strict";const t={ms:1,s:1e3,m:6e4,h:36e5,d:864e5};class StyleBuilder{styles=[];constructor(t=""){t&&this.styles.push(t)}bg(t){return this.styles.push(`background: ${t}`),this}color(t){return this.styles.push(`color: ${t}`),this}border(t){return this.styles.push(`border: ${t}`),this}shadow(t){return this.styles.push(`box-shadow: ${t}`),this}padding(t){return this.styles.push(`padding: ${t}`),this}margin(t){return this.styles.push(`margin: ${t}`),this}rounded(t="4px"){return this.styles.push(`border-radius: ${t}`),this}bold(){return this.styles.push("font-weight: bold"),this}font(t){return this.styles.push(`font-family: ${t}`),this}size(t){return this.styles.push(`font-size: ${t}`),this}lineHeight(t){return this.styles.push(`line-height: ${t}`),this}underline(){return this.styles.push("text-decoration: underline"),this}uppercase(){return this.styles.push("text-transform: uppercase"),this}opacity(t){return this.styles.push(`opacity: ${t}`),this}display(t){return this.styles.push(`display: ${t}`),this}position(t){return this.styles.push(`position: ${t}`),this}transform(t){return this.styles.push(`transform: ${t}`),this}animation(t){return this.styles.push(`animation: ${t}`),this}transition(t){return this.styles.push(`transition: ${t}`),this}cursor(t){return this.styles.push(`cursor: ${t}`),this}custom(t,e){return this.styles.push(`${t}: ${e}`),this}css(t,e){return this.custom(t,e)}build(){return this.styles.join("; ")}clear(){return this.styles=[],this}clone(){const t=new StyleBuilder;return t.styles=[...this.styles],t}merge(t){return this.styles.push(...t.styles),this}}!function(){const t=new StyleBuilder;new Proxy(t,{get(t,e){if(e in t){const s=t[e];return"function"==typeof s?s.bind(t):s}}})}();const e={success:()=>(new StyleBuilder).bg("linear-gradient(135deg, #00b894 0%, #00a085 100%)").color("#ffffff").padding("4px 8px").rounded("4px").bold(),error:()=>(new StyleBuilder).bg("linear-gradient(135deg, #e84393 0%, #d63031 100%)").color("#ffffff").padding("4px 8px").rounded("4px").bold(),warning:()=>(new StyleBuilder).bg("linear-gradient(135deg, #fdcb6e 0%, #e17055 100%)").color("#2d3436").padding("4px 8px").rounded("4px").bold(),info:()=>(new StyleBuilder).bg("linear-gradient(135deg, #74b9ff 0%, #0984e3 100%)").color("#ffffff").padding("4px 8px").rounded("4px").bold(),debug:()=>(new StyleBuilder).bg("linear-gradient(135deg, #667eea 0%, #764ba2 100%)").color("#ffffff").padding("4px 8px").rounded("4px").bold(),muted:()=>(new StyleBuilder).color("#6c757d").font("Monaco, Consolas, monospace").size("12px"),accent:()=>(new StyleBuilder).bg("#f8f9fa").color("#495057").padding("2px 6px").rounded("3px").border("1px solid #dee2e6"),neon:()=>(new StyleBuilder).bg("linear-gradient(135deg, #0f3460 0%, #e94560 100%)").color("#00ffff").padding("4px 8px").rounded("4px").bold().shadow("0 0 10px rgba(0, 255, 255, 0.5)")};exports.BUFFER_LIMITS={MIN_SIZE:50,DEFAULT_SIZE:1e3,MAX_SIZE:1e4},exports.DEFAULT_CONFIG={verbosity:"info",enableColors:!0,enableTimestamps:!0,enableStackTrace:!0,theme:"default",bannerType:"simple",bufferSize:1e3},exports.EXPORT_FORMATS={json:{extension:".json",mimeType:"application/json"},csv:{extension:".csv",mimeType:"text/csv"},markdown:{extension:".md",mimeType:"text/markdown"},plain:{extension:".txt",mimeType:"text/plain"},html:{extension:".html",mimeType:"text/html"}},exports.StyleBuilder=StyleBuilder,exports.StylePresets=e,exports.formatDisplayTime=function(t,e="short"){switch(e){case"time-only":return t.toTimeString().slice(0,8);case"full":return t.toISOString();default:return t.toISOString().slice(11,23)}},exports.formatTimestamp=function(){try{/* @__PURE__ */
2
+ return(new Date).toISOString()}catch{/* @__PURE__ */
3
+ return(new Date).toISOString()}},exports.parseStackTrace=function(){try{const t=(new Error).stack;if(!t)return null;const e=t.split("\n").filter(t=>t.trim());for(let s=1;s<e.length;s++){const t=e[s];if(!t)continue;if(t.includes("parseStackTrace")||t.includes("Logger.")||t.includes(".log(")||t.includes("createStyledOutput"))continue;let n;const r=t.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);if(r)n=r;else{const e=t.match(/(.+?)@(.+?):(\d+):(\d+)$/);if(e)n=e;else{const e=t.match(/(\S+)?@(.+?):(\d+):(\d+)$/);e&&(n=e)}}if(!n)continue;const[,i,o,l,u]=n;if(!o)continue;const d=o.split("/"),a=d[d.length-1];if(!a)continue;const p=a.split("?")[0],h=l?parseInt(l,10):0;return{file:p||"unknown",line:h,column:u?parseInt(u,10):0,function:i&&i.trim()?i.trim():void 0}}return null}catch{return null}},exports.parseTimeInput=function(e){if(e instanceof Date)return e;if("number"==typeof e)return new Date(Date.now()-e*t.h);if("string"==typeof e){const s=new Date(e);if(!isNaN(s.getTime()))return s;try{const s=function(e){const s=e.match(/^(\d+)(ms|s|m|h|d)$/);if(!s)throw new Error(`Invalid time format: ${e}. Use format like "2h", "30m", "1d"`);const[,n,r]=s,i=t[r];return parseInt(n||"0",10)*i}(e);return new Date(Date.now()-s)}catch{throw new Error(`Invalid time format: ${e}`)}}throw new Error("Unsupported time input type: "+typeof e)};
4
+ //# sourceMappingURL=StyleBuilder-LPLzsoHY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyleBuilder-LPLzsoHY.js","sources":["../../src/constants.ts","../../src/styling/StyleBuilder.ts","../../src/utils/timestamps.ts","../../src/utils/stackTrace.ts"],"sourcesContent":["/**\n * @fileoverview Global constants for Advanced Logger\n */\n\nimport type { LogLevel } from './types/index.js';\n\n/**\n * Default configuration values\n */\nexport const DEFAULT_CONFIG = {\n verbosity: 'info' as const,\n enableColors: true,\n enableTimestamps: true,\n enableStackTrace: true,\n theme: 'default' as const,\n bannerType: 'simple' as const,\n bufferSize: 1000,\n} as const;\n\n/**\n * Maximum allowed buffer sizes for performance\n */\nexport const BUFFER_LIMITS = {\n MIN_SIZE: 50,\n DEFAULT_SIZE: 1000,\n MAX_SIZE: 10000,\n} as const;\n\n/**\n * Export format definitions with extensions\n */\nexport const EXPORT_FORMATS = {\n json: { extension: '.json', mimeType: 'application/json' },\n csv: { extension: '.csv', mimeType: 'text/csv' },\n markdown: { extension: '.md', mimeType: 'text/markdown' },\n plain: { extension: '.txt', mimeType: 'text/plain' },\n html: { extension: '.html', mimeType: 'text/html' },\n} as const;\n\n/**\n * CLI command definitions\n */\nexport const CLI_COMMANDS = {\n config: 'config',\n help: 'help',\n themes: 'themes',\n banners: 'banners',\n banner: 'banner',\n status: 'status',\n reset: 'reset',\n demo: 'demo',\n export: 'export',\n copy: 'copy',\n 'buffer-size': 'buffer-size',\n 'clear-buffer': 'clear-buffer',\n 'buffer-info': 'buffer-info',\n} as const;\n\n/**\n * Time parsing constants for relative time filters\n */\nexport const TIME_UNITS = {\n ms: 1,\n s: 1000,\n m: 60 * 1000,\n h: 60 * 60 * 1000,\n d: 24 * 60 * 60 * 1000,\n} as const;\n\n/**\n * Default styling values\n */\nexport const STYLE_DEFAULTS = {\n FONT_FAMILY: 'Monaco, Consolas, monospace',\n FONT_SIZE: '12px',\n BORDER_RADIUS: '4px',\n PADDING: '4px 8px',\n} as const;\n\n/**\n * Level priority mapping for filtering\n */\nexport const LEVEL_PRIORITIES: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n critical: 4,\n} as const;","/**\n * @fileoverview StyleBuilder class for Advanced Logger\n */\n\n/**\n * Utility class for creating dynamic console styles with method chaining\n */\nexport class StyleBuilder {\n private styles: string[] = [];\n\n constructor(baseStyle = '') {\n if (baseStyle) this.styles.push(baseStyle);\n }\n\n /**\n * Add background color or gradient\n */\n bg(background: string): StyleBuilder {\n this.styles.push(`background: ${background}`);\n return this;\n }\n\n /**\n * Add text color\n */\n color(color: string): StyleBuilder {\n this.styles.push(`color: ${color}`);\n return this;\n }\n\n /**\n * Add border styling\n */\n border(border: string): StyleBuilder {\n this.styles.push(`border: ${border}`);\n return this;\n }\n\n /**\n * Add box shadow\n */\n shadow(shadow: string): StyleBuilder {\n this.styles.push(`box-shadow: ${shadow}`);\n return this;\n }\n\n /**\n * Add padding\n */\n padding(padding: string): StyleBuilder {\n this.styles.push(`padding: ${padding}`);\n return this;\n }\n\n /**\n * Add margin\n */\n margin(margin: string): StyleBuilder {\n this.styles.push(`margin: ${margin}`);\n return this;\n }\n\n /**\n * Add border radius\n */\n rounded(radius: string = '4px'): StyleBuilder {\n this.styles.push(`border-radius: ${radius}`);\n return this;\n }\n\n /**\n * Add font weight\n */\n bold(): StyleBuilder {\n this.styles.push('font-weight: bold');\n return this;\n }\n\n /**\n * Add font styling\n */\n font(font: string): StyleBuilder {\n this.styles.push(`font-family: ${font}`);\n return this;\n }\n\n /**\n * Add font size\n */\n size(size: string): StyleBuilder {\n this.styles.push(`font-size: ${size}`);\n return this;\n }\n\n /**\n * Add line height\n */\n lineHeight(height: string): StyleBuilder {\n this.styles.push(`line-height: ${height}`);\n return this;\n }\n\n /**\n * Add text decoration\n */\n underline(): StyleBuilder {\n this.styles.push('text-decoration: underline');\n return this;\n }\n\n /**\n * Add text transform\n */\n uppercase(): StyleBuilder {\n this.styles.push('text-transform: uppercase');\n return this;\n }\n\n /**\n * Add opacity\n */\n opacity(value: number): StyleBuilder {\n this.styles.push(`opacity: ${value}`);\n return this;\n }\n\n /**\n * Add display property\n */\n display(value: string): StyleBuilder {\n this.styles.push(`display: ${value}`);\n return this;\n }\n\n /**\n * Add position property\n */\n position(value: string): StyleBuilder {\n this.styles.push(`position: ${value}`);\n return this;\n }\n\n /**\n * Add transform property\n */\n transform(value: string): StyleBuilder {\n this.styles.push(`transform: ${value}`);\n return this;\n }\n\n /**\n * Add animation property\n */\n animation(value: string): StyleBuilder {\n this.styles.push(`animation: ${value}`);\n return this;\n }\n\n /**\n * Add transition property\n */\n transition(value: string): StyleBuilder {\n this.styles.push(`transition: ${value}`);\n return this;\n }\n\n /**\n * Add cursor property\n */\n cursor(value: string): StyleBuilder {\n this.styles.push(`cursor: ${value}`);\n return this;\n }\n\n /**\n * Add any custom CSS property\n */\n custom(property: string, value: string): StyleBuilder {\n this.styles.push(`${property}: ${value}`);\n return this;\n }\n\n /**\n * Add any CSS property (alias for custom)\n */\n css(property: string, value: string): StyleBuilder {\n return this.custom(property, value);\n }\n\n /**\n * Build the final CSS string\n */\n build(): string {\n return this.styles.join('; ');\n }\n\n /**\n * Clear all styles and start fresh\n */\n clear(): StyleBuilder {\n this.styles = [];\n return this;\n }\n\n /**\n * Clone this StyleBuilder with the same styles\n */\n clone(): StyleBuilder {\n const cloned = new StyleBuilder();\n cloned.styles = [...this.styles];\n return cloned;\n }\n\n /**\n * Merge another StyleBuilder's styles into this one\n */\n merge(other: StyleBuilder): StyleBuilder {\n this.styles.push(...other.styles);\n return this;\n }\n}\n\n/**\n * Proxy-based dynamic styler for chainable console styling\n */\nfunction createStyler(): any {\n const builder = new StyleBuilder();\n return new Proxy(builder, {\n get(target: StyleBuilder, prop: string) {\n if (prop in target) {\n const method = (target as any)[prop];\n if (typeof method === 'function') {\n return method.bind(target);\n }\n return method;\n }\n return undefined;\n }\n });\n}\n\n/**\n * Dynamic styler instance for external use\n */\nexport const $ = createStyler();\n\n/**\n * Pre-defined style presets for common use cases\n */\nexport const StylePresets = {\n success: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #00b894 0%, #00a085 100%)')\n .color('#ffffff')\n .padding('4px 8px')\n .rounded('4px')\n .bold(),\n\n error: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #e84393 0%, #d63031 100%)')\n .color('#ffffff')\n .padding('4px 8px')\n .rounded('4px')\n .bold(),\n\n warning: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #fdcb6e 0%, #e17055 100%)')\n .color('#2d3436')\n .padding('4px 8px')\n .rounded('4px')\n .bold(),\n\n info: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #74b9ff 0%, #0984e3 100%)')\n .color('#ffffff')\n .padding('4px 8px')\n .rounded('4px')\n .bold(),\n\n debug: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #667eea 0%, #764ba2 100%)')\n .color('#ffffff')\n .padding('4px 8px')\n .rounded('4px')\n .bold(),\n\n muted: () => new StyleBuilder()\n .color('#6c757d')\n .font('Monaco, Consolas, monospace')\n .size('12px'),\n\n accent: () => new StyleBuilder()\n .bg('#f8f9fa')\n .color('#495057')\n .padding('2px 6px')\n .rounded('3px')\n .border('1px solid #dee2e6'),\n\n neon: () => new StyleBuilder()\n .bg('linear-gradient(135deg, #0f3460 0%, #e94560 100%)')\n .color('#00ffff')\n .padding('4px 8px')\n .rounded('4px')\n .bold()\n .shadow('0 0 10px rgba(0, 255, 255, 0.5)'),\n};","/**\n * @fileoverview Timestamp utilities for Advanced Logger\n */\n\nimport { TIME_UNITS } from '../constants.js';\n\n/**\n * Formats the timestamp using modern Date API\n */\nexport function formatTimestamp(): string {\n try {\n // Use modern Temporal API if available, fallback to Date\n const now = new Date();\n return now.toISOString();\n } catch {\n return new Date().toISOString();\n }\n}\n\n/**\n * Parse relative time strings like \"2h\", \"30m\", \"1d\" into milliseconds\n */\nexport function parseRelativeTime(timeStr: string): number {\n const match = timeStr.match(/^(\\d+)(ms|s|m|h|d)$/);\n if (!match) {\n throw new Error(`Invalid time format: ${timeStr}. Use format like \"2h\", \"30m\", \"1d\"`);\n }\n\n const [, amount, unit] = match;\n const multiplier = TIME_UNITS[unit as keyof typeof TIME_UNITS];\n \n return parseInt(amount || '0', 10) * multiplier;\n}\n\n/**\n * Parse time input which can be Date, ISO string, or relative time\n */\nexport function parseTimeInput(input: Date | string | number): Date {\n if (input instanceof Date) {\n return input;\n }\n\n if (typeof input === 'number') {\n // Assume hours ago\n return new Date(Date.now() - input * TIME_UNITS.h);\n }\n\n if (typeof input === 'string') {\n // Try parsing as ISO date first\n const isoDate = new Date(input);\n if (!isNaN(isoDate.getTime())) {\n return isoDate;\n }\n\n // Try parsing as relative time\n try {\n const ms = parseRelativeTime(input);\n return new Date(Date.now() - ms);\n } catch {\n throw new Error(`Invalid time format: ${input}`);\n }\n }\n\n throw new Error(`Unsupported time input type: ${typeof input}`);\n}\n\n/**\n * Format timestamp for display in different contexts\n */\nexport function formatDisplayTime(date: Date, format: 'short' | 'full' | 'time-only' = 'short'): string {\n switch (format) {\n case 'time-only':\n return date.toTimeString().slice(0, 8); // HH:MM:SS\n case 'full':\n return date.toISOString();\n case 'short':\n default:\n return date.toISOString().slice(11, 23); // HH:MM:SS.mmm\n }\n}","/**\n * @fileoverview Stack trace parsing utilities for Advanced Logger\n */\n\nimport type { StackInfo } from '../types/index.js';\n\n/**\n * Parses the current stack trace to extract caller information\n */\nexport function parseStackTrace(): StackInfo | null {\n try {\n const stack = new Error().stack;\n if (!stack) {\n return null;\n }\n\n const lines = stack.split('\\n').filter(line => line.trim());\n \n // Find the first caller that's not from Logger methods\n for (let i = 1; i < lines.length; i++) {\n const line = lines[i];\n \n if (!line) {\n continue;\n }\n \n // Skip if line contains Logger methods or parseStackTrace\n if (line.includes('parseStackTrace') || \n line.includes('Logger.') || \n line.includes('.log(') ||\n line.includes('createStyledOutput')) {\n continue;\n }\n\n // Parse different stack trace formats\n let match;\n \n // Chrome format: \"at functionName (file:line:column)\" or \"at file:line:column\"\n const chromeMatch = line.match(/at\\s+(?:(.+?)\\s+\\()?(.+?):(\\d+):(\\d+)\\)?$/);\n if (chromeMatch) {\n match = chromeMatch;\n } else {\n // Firefox format: \"functionName@file:line:column\"\n const firefoxMatch = line.match(/(.+?)@(.+?):(\\d+):(\\d+)$/);\n if (firefoxMatch) {\n match = firefoxMatch;\n } else {\n // Safari/other formats\n const safariMatch = line.match(/(\\S+)?@(.+?):(\\d+):(\\d+)$/);\n if (safariMatch) {\n match = safariMatch;\n }\n }\n }\n\n if (!match) {\n continue;\n }\n\n const [, functionName, file, lineStr, columnStr] = match;\n \n if (!file) {\n continue;\n }\n \n // Process file path - remove query params and get filename\n const fileParts = file.split('/');\n const fileName = fileParts[fileParts.length - 1];\n if (!fileName) {\n continue;\n }\n const cleanFileName = fileName.split('?')[0];\n \n // Parse line and column numbers\n const lineNum = lineStr ? parseInt(lineStr, 10) : 0;\n const columnNum = columnStr ? parseInt(columnStr, 10) : 0;\n \n // Clean function name\n const cleanFunction = functionName && functionName.trim() \n ? functionName.trim() \n : undefined;\n \n return {\n file: cleanFileName ? cleanFileName : 'unknown',\n line: lineNum,\n column: columnNum,\n function: cleanFunction\n };\n }\n \n return null;\n } catch {\n return null;\n }\n}"],"names":["TIME_UNITS","ms","s","m","h","d","StyleBuilder","styles","constructor","baseStyle","this","push","bg","background","color","border","shadow","padding","margin","rounded","radius","bold","font","size","lineHeight","height","underline","uppercase","opacity","value","display","position","transform","animation","transition","cursor","custom","property","css","build","join","clear","clone","cloned","merge","other","builder","Proxy","get","target","prop","method","bind","createStyler","StylePresets","success","error","warning","info","debug","muted","accent","neon","MIN_SIZE","DEFAULT_SIZE","MAX_SIZE","verbosity","enableColors","enableTimestamps","enableStackTrace","theme","bannerType","bufferSize","json","extension","mimeType","csv","markdown","plain","html","date","format","toTimeString","slice","toISOString","Date","stack","Error","lines","split","filter","line","trim","i","length","includes","match","chromeMatch","firefoxMatch","safariMatch","functionName","file","lineStr","columnStr","fileParts","fileName","cleanFileName","lineNum","parseInt","column","function","input","now","isoDate","isNaN","getTime","timeStr","amount","unit","multiplier","parseRelativeTime"],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @fileoverview CLI Command processor for Advanced Logger
3
+ */
4
+ import type { Logger } from '../Logger.js';
5
+ /**
6
+ * Base interface for CLI commands
7
+ */
8
+ export interface ICommand {
9
+ name: string;
10
+ description: string;
11
+ usage: string;
12
+ execute(args: string, logger: Logger): void | Promise<void>;
13
+ }
14
+ /**
15
+ * CLI command processor
16
+ */
17
+ export declare class CommandProcessor {
18
+ private commands;
19
+ /**
20
+ * Register a command
21
+ */
22
+ registerCommand(command: ICommand): void;
23
+ /**
24
+ * Get all registered commands
25
+ */
26
+ getCommands(): ICommand[];
27
+ /**
28
+ * Get a specific command
29
+ */
30
+ getCommand(name: string): ICommand | undefined;
31
+ /**
32
+ * Process a CLI command
33
+ */
34
+ processCommand(commandString: string, logger: Logger): Promise<void>;
35
+ /**
36
+ * Get command suggestions for partial matches
37
+ */
38
+ getSuggestions(partial: string): string[];
39
+ }
40
+ //# sourceMappingURL=CommandProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandProcessor.d.ts","sourceRoot":"","sources":["../../src/cli/CommandProcessor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED;;GAEG;AACH,qBAAa,gBAAgB;IACzB,OAAO,CAAC,QAAQ,CAAoC;IAEpD;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAIxC;;OAEG;IACH,WAAW,IAAI,QAAQ,EAAE;IAIzB;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI9C;;OAEG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB1E;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;CAI5C"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @fileoverview CLI Command processor for Advanced Logger
3
+ */
4
+ /**
5
+ * CLI command processor
6
+ */
7
+ export class CommandProcessor {
8
+ commands = new Map();
9
+ /**
10
+ * Register a command
11
+ */
12
+ registerCommand(command) {
13
+ this.commands.set(command.name, command);
14
+ }
15
+ /**
16
+ * Get all registered commands
17
+ */
18
+ getCommands() {
19
+ return Array.from(this.commands.values());
20
+ }
21
+ /**
22
+ * Get a specific command
23
+ */
24
+ getCommand(name) {
25
+ return this.commands.get(name);
26
+ }
27
+ /**
28
+ * Process a CLI command
29
+ */
30
+ async processCommand(commandString, logger) {
31
+ if (!commandString.startsWith('/')) {
32
+ logger.error('Invalid command. Commands must start with /');
33
+ return;
34
+ }
35
+ const parts = commandString.slice(1).split(' ');
36
+ const commandName = parts[0] || '';
37
+ const args = parts.slice(1).join(' ');
38
+ const command = this.commands.get(commandName);
39
+ if (!command) {
40
+ logger.error(`Unknown command: ${commandName}. Type /help for available commands.`);
41
+ return;
42
+ }
43
+ try {
44
+ await command.execute(args || '', logger);
45
+ }
46
+ catch (error) {
47
+ logger.error(`Command '${commandName}' failed:`, error);
48
+ }
49
+ }
50
+ /**
51
+ * Get command suggestions for partial matches
52
+ */
53
+ getSuggestions(partial) {
54
+ const commandNames = Array.from(this.commands.keys());
55
+ return commandNames.filter(name => name.startsWith(partial));
56
+ }
57
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @fileoverview Configuration commands for Advanced Logger CLI
3
+ */
4
+ import type { ICommand } from '../CommandProcessor.js';
5
+ import type { Logger } from '../../Logger.js';
6
+ /**
7
+ * Configuration command handler
8
+ */
9
+ export declare class ConfigCommand implements ICommand {
10
+ name: string;
11
+ description: string;
12
+ usage: string;
13
+ execute(args: string, logger: Logger): void;
14
+ private showStatus;
15
+ private applyConfig;
16
+ }
17
+ //# sourceMappingURL=ConfigCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ConfigCommand.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG9C;;GAEG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC1C,IAAI,SAAY;IAChB,WAAW,SAAyC;IACpD,KAAK,SAAkC;IAEvC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA4B3C,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,WAAW;CA+BtB"}