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

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