@mks2508/better-logger 0.14.0-alpha.2 → 0.18.2-alpha.2

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 (472) hide show
  1. package/README.md +50 -244
  2. package/dist/Logger.d.ts +662 -202
  3. package/dist/Logger.d.ts.map +1 -1
  4. package/dist/ScopedLogger.d.ts +434 -175
  5. package/dist/ScopedLogger.d.ts.map +1 -1
  6. package/dist/chunks/HookBridge-C-AvXmPD.cjs +504 -0
  7. package/dist/chunks/HookBridge-C-AvXmPD.cjs.map +1 -0
  8. package/dist/chunks/HookBridge-CI2PH79S.js +487 -0
  9. package/dist/chunks/HookBridge-CI2PH79S.js.map +1 -0
  10. package/dist/chunks/LogContext-BaMXleWj.cjs +105 -0
  11. package/dist/chunks/LogContext-BaMXleWj.cjs.map +1 -0
  12. package/dist/chunks/LogContext-DjlITOzZ.js +100 -0
  13. package/dist/chunks/LogContext-DjlITOzZ.js.map +1 -0
  14. package/dist/chunks/SerializerBridge-Ba43Mk7j.js +393 -0
  15. package/dist/chunks/SerializerBridge-Ba43Mk7j.js.map +1 -0
  16. package/dist/chunks/SerializerBridge-C4a9Z37F.cjs +410 -0
  17. package/dist/chunks/SerializerBridge-C4a9Z37F.cjs.map +1 -0
  18. package/dist/chunks/StyleManager-DQ6UNRB-.cjs +118 -0
  19. package/dist/chunks/StyleManager-DQ6UNRB-.cjs.map +1 -0
  20. package/dist/chunks/StyleManager-DjwAYbxE.js +113 -0
  21. package/dist/chunks/StyleManager-DjwAYbxE.js.map +1 -0
  22. package/dist/chunks/core-Blfi2klP.js +31 -0
  23. package/dist/chunks/core-Blfi2klP.js.map +1 -0
  24. package/dist/chunks/core-CqS_UBzJ.cjs +36 -0
  25. package/dist/chunks/core-CqS_UBzJ.cjs.map +1 -0
  26. package/dist/chunks/environment-detector-7NvnYUfr.js +110 -0
  27. package/dist/chunks/environment-detector-7NvnYUfr.js.map +1 -0
  28. package/dist/chunks/environment-detector-D-tHkKWA.cjs +163 -0
  29. package/dist/chunks/environment-detector-D-tHkKWA.cjs.map +1 -0
  30. package/dist/chunks/server-fallback-CaCPjWby.cjs +119 -0
  31. package/dist/chunks/server-fallback-CaCPjWby.cjs.map +1 -0
  32. package/dist/chunks/server-fallback-jj0T6XaK.js +114 -0
  33. package/dist/chunks/server-fallback-jj0T6XaK.js.map +1 -0
  34. package/dist/chunks/spinner-BHyYEXsM.cjs +1029 -0
  35. package/dist/chunks/spinner-BHyYEXsM.cjs.map +1 -0
  36. package/dist/chunks/spinner-BtkwpzYv.js +982 -0
  37. package/dist/chunks/spinner-BtkwpzYv.js.map +1 -0
  38. package/dist/chunks/styling-CRw3KQW4.js +1592 -0
  39. package/dist/chunks/styling-CRw3KQW4.js.map +1 -0
  40. package/dist/chunks/styling-Cel2wPRy.cjs +1645 -0
  41. package/dist/chunks/styling-Cel2wPRy.cjs.map +1 -0
  42. package/dist/chunks/transports-BGfwwakw.js +1237 -0
  43. package/dist/chunks/transports-BGfwwakw.js.map +1 -0
  44. package/dist/chunks/transports-yK6CL0Ml.cjs +1278 -0
  45. package/dist/chunks/transports-yK6CL0Ml.cjs.map +1 -0
  46. package/dist/chunks/utils-W_cxqriN.cjs +705 -0
  47. package/dist/chunks/utils-W_cxqriN.cjs.map +1 -0
  48. package/dist/chunks/utils-tKfBAWUM.js +586 -0
  49. package/dist/chunks/utils-tKfBAWUM.js.map +1 -0
  50. package/dist/cli/CommandProcessor.d.ts +166 -19
  51. package/dist/cli/CommandProcessor.d.ts.map +1 -1
  52. package/dist/cli/commands/ConfigCommand.d.ts +36 -1
  53. package/dist/cli/commands/ConfigCommand.d.ts.map +1 -1
  54. package/dist/cli/commands/ExportCommand.d.ts +54 -26
  55. package/dist/cli/commands/ExportCommand.d.ts.map +1 -1
  56. package/dist/cli/commands/ThemeCommand.d.ts +62 -3
  57. package/dist/cli/commands/ThemeCommand.d.ts.map +1 -1
  58. package/dist/cli/help.d.ts +30 -2
  59. package/dist/cli/help.d.ts.map +1 -1
  60. package/dist/cli/index.d.ts +30 -4
  61. package/dist/cli/index.d.ts.map +1 -1
  62. package/dist/cli-module.d.ts +13 -0
  63. package/dist/cli-module.d.ts.map +1 -0
  64. package/dist/cli.cjs +11 -0
  65. package/dist/cli.js +3 -0
  66. package/dist/constants.d.ts +16 -47
  67. package/dist/constants.d.ts.map +1 -1
  68. package/dist/context/LogContext.d.ts +245 -0
  69. package/dist/context/LogContext.d.ts.map +1 -0
  70. package/dist/context/index.d.ts +6 -0
  71. package/dist/context/index.d.ts.map +1 -0
  72. package/dist/context-module.d.ts +6 -0
  73. package/dist/context-module.d.ts.map +1 -0
  74. package/dist/context.cjs +3 -0
  75. package/dist/context.js +2 -0
  76. package/dist/core.cjs +304 -2
  77. package/dist/core.cjs.map +1 -1
  78. package/dist/core.d.ts +56 -34
  79. package/dist/core.d.ts.map +1 -1
  80. package/dist/core.js +281 -314
  81. package/dist/core.js.map +1 -1
  82. package/dist/hooks/HookBridge.d.ts +32 -0
  83. package/dist/hooks/HookBridge.d.ts.map +1 -0
  84. package/dist/hooks/HookManager.d.ts +319 -0
  85. package/dist/hooks/HookManager.d.ts.map +1 -0
  86. package/dist/hooks/index.d.ts +7 -0
  87. package/dist/hooks/index.d.ts.map +1 -0
  88. package/dist/hooks-module.d.ts +7 -0
  89. package/dist/hooks-module.d.ts.map +1 -0
  90. package/dist/hooks.cjs +5 -0
  91. package/dist/hooks.js +2 -0
  92. package/dist/index.cjs +3402 -2
  93. package/dist/index.cjs.map +1 -1
  94. package/dist/index.d.ts +42 -130
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +3327 -158
  97. package/dist/index.js.map +1 -1
  98. package/dist/node-module.d.ts +10 -0
  99. package/dist/node-module.d.ts.map +1 -0
  100. package/dist/node.cjs +13 -0
  101. package/dist/node.cjs.map +1 -0
  102. package/dist/node.js +12 -0
  103. package/dist/node.js.map +1 -0
  104. package/dist/playground/TerminalBridge.d.ts +53 -0
  105. package/dist/playground/TerminalBridge.d.ts.map +1 -0
  106. package/dist/playground/box.d.ts +45 -0
  107. package/dist/playground/box.d.ts.map +1 -0
  108. package/dist/playground/cli-table.d.ts +50 -0
  109. package/dist/playground/cli-table.d.ts.map +1 -0
  110. package/dist/playground/divider.d.ts +29 -0
  111. package/dist/playground/divider.d.ts.map +1 -0
  112. package/dist/playground/header.d.ts +28 -0
  113. package/dist/playground/header.d.ts.map +1 -0
  114. package/dist/playground/index.d.ts +11 -0
  115. package/dist/playground/index.d.ts.map +1 -0
  116. package/dist/playground/server-fallback.d.ts +114 -0
  117. package/dist/playground/server-fallback.d.ts.map +1 -0
  118. package/dist/playground/spinner.d.ts +197 -0
  119. package/dist/playground/spinner.d.ts.map +1 -0
  120. package/dist/playground/step.d.ts +33 -0
  121. package/dist/playground/step.d.ts.map +1 -0
  122. package/dist/playground-module.d.ts +11 -0
  123. package/dist/playground-module.d.ts.map +1 -0
  124. package/dist/playground.cjs +9 -0
  125. package/dist/playground.js +2 -0
  126. package/dist/serializers/SerializerBridge.d.ts +28 -0
  127. package/dist/serializers/SerializerBridge.d.ts.map +1 -0
  128. package/dist/serializers/SerializerRegistry.d.ts +252 -0
  129. package/dist/serializers/SerializerRegistry.d.ts.map +1 -0
  130. package/dist/serializers/index.d.ts +7 -0
  131. package/dist/serializers/index.d.ts.map +1 -0
  132. package/dist/serializers-module.d.ts +7 -0
  133. package/dist/serializers-module.d.ts.map +1 -0
  134. package/dist/serializers.cjs +5 -0
  135. package/dist/serializers.js +2 -0
  136. package/dist/styles/StyleManager.d.ts +190 -0
  137. package/dist/styles/StyleManager.d.ts.map +1 -0
  138. package/dist/styles/index.d.ts +7 -0
  139. package/dist/styles/index.d.ts.map +1 -0
  140. package/dist/styles-module.d.ts +7 -0
  141. package/dist/styles-module.d.ts.map +1 -0
  142. package/dist/styles.cjs +7 -0
  143. package/dist/styles.js +3 -0
  144. package/dist/styling/SmartPresets.d.ts +100 -6
  145. package/dist/styling/SmartPresets.d.ts.map +1 -1
  146. package/dist/styling/StyleBuilder.d.ts +453 -32
  147. package/dist/styling/StyleBuilder.d.ts.map +1 -1
  148. package/dist/styling/banners.d.ts +85 -5
  149. package/dist/styling/banners.d.ts.map +1 -1
  150. package/dist/styling/index.d.ts +8 -3
  151. package/dist/styling/index.d.ts.map +1 -1
  152. package/dist/styling/themes.d.ts +41 -2
  153. package/dist/styling/themes.d.ts.map +1 -1
  154. package/dist/terminal/color-converter.d.ts +73 -0
  155. package/dist/terminal/color-converter.d.ts.map +1 -0
  156. package/dist/terminal/formatter.d.ts +23 -0
  157. package/dist/terminal/formatter.d.ts.map +1 -0
  158. package/dist/transports/ConsoleTransport.d.ts +104 -0
  159. package/dist/transports/ConsoleTransport.d.ts.map +1 -0
  160. package/dist/transports/FileTransport.d.ts +137 -0
  161. package/dist/transports/FileTransport.d.ts.map +1 -0
  162. package/dist/transports/HttpTransport.d.ts +180 -0
  163. package/dist/transports/HttpTransport.d.ts.map +1 -0
  164. package/dist/transports/OtlpTransport.d.ts +165 -0
  165. package/dist/transports/OtlpTransport.d.ts.map +1 -0
  166. package/dist/transports/TransportBridge.d.ts +43 -0
  167. package/dist/transports/TransportBridge.d.ts.map +1 -0
  168. package/dist/transports/TransportManager.d.ts +251 -0
  169. package/dist/transports/TransportManager.d.ts.map +1 -0
  170. package/dist/transports/index.d.ts +6 -0
  171. package/dist/transports/index.d.ts.map +1 -0
  172. package/dist/transports-module.d.ts +10 -0
  173. package/dist/transports-module.d.ts.map +1 -0
  174. package/dist/transports.cjs +7 -0
  175. package/dist/transports.js +2 -0
  176. package/dist/types/core.d.ts +295 -17
  177. package/dist/types/core.d.ts.map +1 -1
  178. package/dist/types/handlers.d.ts +0 -67
  179. package/dist/types/handlers.d.ts.map +1 -1
  180. package/dist/types/hooks.d.ts +138 -0
  181. package/dist/types/hooks.d.ts.map +1 -0
  182. package/dist/types/index.d.ts +7 -3
  183. package/dist/types/index.d.ts.map +1 -1
  184. package/dist/types/serializers.d.ts +97 -0
  185. package/dist/types/serializers.d.ts.map +1 -0
  186. package/dist/types/transports.d.ts +132 -0
  187. package/dist/types/transports.d.ts.map +1 -0
  188. package/dist/utils/ansi-colors.d.ts +115 -0
  189. package/dist/utils/ansi-colors.d.ts.map +1 -0
  190. package/dist/utils/environment-detector.d.ts +53 -0
  191. package/dist/utils/environment-detector.d.ts.map +1 -0
  192. package/dist/utils/formatting.d.ts +9 -8
  193. package/dist/utils/formatting.d.ts.map +1 -1
  194. package/dist/utils/index.d.ts +3 -2
  195. package/dist/utils/index.d.ts.map +1 -1
  196. package/dist/utils/output.d.ts +14 -17
  197. package/dist/utils/output.d.ts.map +1 -1
  198. package/dist/utils/stackTrace.d.ts +2 -2
  199. package/dist/utils/stackTrace.d.ts.map +1 -1
  200. package/dist/utils/timestamps.d.ts +0 -12
  201. package/dist/utils/timestamps.d.ts.map +1 -1
  202. package/package.json +95 -21
  203. package/.claude/settings.local.json +0 -39
  204. package/.github/workflows/ci-quality.yml +0 -357
  205. package/.github/workflows/docs-demo.yml +0 -119
  206. package/.github/workflows/releases-core.yml +0 -512
  207. package/.github/workflows/releases-full.yml +0 -582
  208. package/.github/workflows-backup/ci.yml +0 -221
  209. package/.github/workflows-backup/nightly.yml +0 -196
  210. package/.github/workflows-backup/release-optimized.yml +0 -373
  211. package/.github/workflows-backup/release.yml +0 -269
  212. package/.release-notes-0.2.0.md +0 -129
  213. package/.yamllint +0 -28
  214. package/CHANGELOG.json +0 -865
  215. package/CLAUDE.md +0 -204
  216. package/bun.lock +0 -323
  217. package/demo.html +0 -847
  218. package/dist/.tsbuildinfo +0 -1
  219. package/dist/Logger.js +0 -1124
  220. package/dist/ScopedLogger.js +0 -426
  221. package/dist/chunks/Logger-Crw1woqR.js +0 -3464
  222. package/dist/chunks/Logger-Crw1woqR.js.map +0 -1
  223. package/dist/chunks/Logger-D_p3xnbq.js +0 -2
  224. package/dist/chunks/Logger-D_p3xnbq.js.map +0 -1
  225. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +0 -33
  226. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +0 -1
  227. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +0 -2
  228. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +0 -1
  229. package/dist/chunks/environment-Bxbnw4pd.js +0 -544
  230. package/dist/chunks/environment-Bxbnw4pd.js.map +0 -1
  231. package/dist/chunks/environment-Dm66zOML.js +0 -4
  232. package/dist/chunks/environment-Dm66zOML.js.map +0 -1
  233. package/dist/chunks/formatting-C0riPC5_.js +0 -95
  234. package/dist/chunks/formatting-C0riPC5_.js.map +0 -1
  235. package/dist/chunks/formatting-DNCAV66-.js +0 -2
  236. package/dist/chunks/formatting-DNCAV66-.js.map +0 -1
  237. package/dist/cli/CommandProcessor.js +0 -184
  238. package/dist/cli/commands/ConfigCommand.js +0 -88
  239. package/dist/cli/commands/ExportCommand.js +0 -243
  240. package/dist/cli/commands/HistoryCommand.d.ts +0 -50
  241. package/dist/cli/commands/HistoryCommand.d.ts.map +0 -1
  242. package/dist/cli/commands/HistoryCommand.js +0 -96
  243. package/dist/cli/commands/StatusCommand.d.ts +0 -33
  244. package/dist/cli/commands/StatusCommand.d.ts.map +0 -1
  245. package/dist/cli/commands/StatusCommand.js +0 -93
  246. package/dist/cli/commands/ThemeCommand.js +0 -79
  247. package/dist/cli/help.js +0 -118
  248. package/dist/cli/index.js +0 -46
  249. package/dist/constants.js +0 -159
  250. package/dist/example.d.ts +0 -18
  251. package/dist/example.d.ts.map +0 -1
  252. package/dist/example.js +0 -154
  253. package/dist/exports-module.d.ts +0 -203
  254. package/dist/exports-module.d.ts.map +0 -1
  255. package/dist/exports-module.js +0 -260
  256. package/dist/exports.cjs +0 -2
  257. package/dist/exports.cjs.map +0 -1
  258. package/dist/exports.js +0 -238
  259. package/dist/exports.js.map +0 -1
  260. package/dist/handlers/AnalyticsLogHandler.d.ts +0 -11
  261. package/dist/handlers/AnalyticsLogHandler.d.ts.map +0 -1
  262. package/dist/handlers/AnalyticsLogHandler.js +0 -19
  263. package/dist/handlers/ExportLogHandler.d.ts +0 -103
  264. package/dist/handlers/ExportLogHandler.d.ts.map +0 -1
  265. package/dist/handlers/ExportLogHandler.js +0 -516
  266. package/dist/handlers/FileLogHandler.d.ts +0 -36
  267. package/dist/handlers/FileLogHandler.d.ts.map +0 -1
  268. package/dist/handlers/FileLogHandler.js +0 -156
  269. package/dist/handlers/RemoteLogHandler.d.ts +0 -14
  270. package/dist/handlers/RemoteLogHandler.d.ts.map +0 -1
  271. package/dist/handlers/RemoteLogHandler.js +0 -37
  272. package/dist/handlers/index.d.ts +0 -8
  273. package/dist/handlers/index.d.ts.map +0 -1
  274. package/dist/handlers/index.js +0 -7
  275. package/dist/main.d.ts +0 -2
  276. package/dist/main.d.ts.map +0 -1
  277. package/dist/main.js +0 -139
  278. package/dist/styling/LogStyleBuilder.d.ts +0 -149
  279. package/dist/styling/LogStyleBuilder.d.ts.map +0 -1
  280. package/dist/styling/LogStyleBuilder.js +0 -289
  281. package/dist/styling/SemanticStyles.d.ts +0 -181
  282. package/dist/styling/SemanticStyles.d.ts.map +0 -1
  283. package/dist/styling/SemanticStyles.js +0 -339
  284. package/dist/styling/SmartPresets.js +0 -276
  285. package/dist/styling/StyleBuilder.js +0 -280
  286. package/dist/styling/banners.js +0 -155
  287. package/dist/styling/index.js +0 -9
  288. package/dist/styling/themes.js +0 -231
  289. package/dist/styling-module.d.ts +0 -185
  290. package/dist/styling-module.d.ts.map +0 -1
  291. package/dist/styling-module.js +0 -199
  292. package/dist/styling.cjs +0 -2
  293. package/dist/styling.cjs.map +0 -1
  294. package/dist/styling.js +0 -146
  295. package/dist/styling.js.map +0 -1
  296. package/dist/types/Logger.d.ts +0 -700
  297. package/dist/types/Logger.d.ts.map +0 -1
  298. package/dist/types/ScopedLogger.d.ts +0 -310
  299. package/dist/types/ScopedLogger.d.ts.map +0 -1
  300. package/dist/types/cli/CommandProcessor.d.ts +0 -100
  301. package/dist/types/cli/CommandProcessor.d.ts.map +0 -1
  302. package/dist/types/cli/commands/ConfigCommand.d.ts +0 -14
  303. package/dist/types/cli/commands/ConfigCommand.d.ts.map +0 -1
  304. package/dist/types/cli/commands/ExportCommand.d.ts +0 -48
  305. package/dist/types/cli/commands/ExportCommand.d.ts.map +0 -1
  306. package/dist/types/cli/commands/HistoryCommand.d.ts +0 -47
  307. package/dist/types/cli/commands/HistoryCommand.d.ts.map +0 -1
  308. package/dist/types/cli/commands/StatusCommand.d.ts +0 -30
  309. package/dist/types/cli/commands/StatusCommand.d.ts.map +0 -1
  310. package/dist/types/cli/commands/ThemeCommand.d.ts +0 -30
  311. package/dist/types/cli/commands/ThemeCommand.d.ts.map +0 -1
  312. package/dist/types/cli/help.d.ts +0 -12
  313. package/dist/types/cli/help.d.ts.map +0 -1
  314. package/dist/types/cli/index.d.ts +0 -15
  315. package/dist/types/cli/index.d.ts.map +0 -1
  316. package/dist/types/constants.d.ts +0 -119
  317. package/dist/types/constants.d.ts.map +0 -1
  318. package/dist/types/core.js +0 -28
  319. package/dist/types/example.d.ts +0 -18
  320. package/dist/types/example.d.ts.map +0 -1
  321. package/dist/types/exports-module.d.ts +0 -196
  322. package/dist/types/exports-module.d.ts.map +0 -1
  323. package/dist/types/handlers/AnalyticsLogHandler.d.ts +0 -8
  324. package/dist/types/handlers/AnalyticsLogHandler.d.ts.map +0 -1
  325. package/dist/types/handlers/ExportLogHandler.d.ts +0 -100
  326. package/dist/types/handlers/ExportLogHandler.d.ts.map +0 -1
  327. package/dist/types/handlers/FileLogHandler.d.ts +0 -33
  328. package/dist/types/handlers/FileLogHandler.d.ts.map +0 -1
  329. package/dist/types/handlers/RemoteLogHandler.d.ts +0 -11
  330. package/dist/types/handlers/RemoteLogHandler.d.ts.map +0 -1
  331. package/dist/types/handlers/index.d.ts +0 -8
  332. package/dist/types/handlers/index.d.ts.map +0 -1
  333. package/dist/types/handlers.js +0 -4
  334. package/dist/types/index.js +0 -4
  335. package/dist/types/main.d.ts +0 -2
  336. package/dist/types/main.d.ts.map +0 -1
  337. package/dist/types/styling/LogStyleBuilder.d.ts +0 -146
  338. package/dist/types/styling/LogStyleBuilder.d.ts.map +0 -1
  339. package/dist/types/styling/SemanticStyles.d.ts +0 -178
  340. package/dist/types/styling/SemanticStyles.d.ts.map +0 -1
  341. package/dist/types/styling/SmartPresets.d.ts +0 -22
  342. package/dist/types/styling/SmartPresets.d.ts.map +0 -1
  343. package/dist/types/styling/StyleBuilder.d.ts +0 -140
  344. package/dist/types/styling/StyleBuilder.d.ts.map +0 -1
  345. package/dist/types/styling/banners.d.ts +0 -42
  346. package/dist/types/styling/banners.d.ts.map +0 -1
  347. package/dist/types/styling/index.d.ts +0 -10
  348. package/dist/types/styling/index.d.ts.map +0 -1
  349. package/dist/types/styling/themes.d.ts +0 -7
  350. package/dist/types/styling/themes.d.ts.map +0 -1
  351. package/dist/types/styling-module.d.ts +0 -178
  352. package/dist/types/styling-module.d.ts.map +0 -1
  353. package/dist/types/types/core.d.ts +0 -221
  354. package/dist/types/types/core.d.ts.map +0 -1
  355. package/dist/types/types/handlers.d.ts +0 -85
  356. package/dist/types/types/handlers.d.ts.map +0 -1
  357. package/dist/types/types/index.d.ts +0 -7
  358. package/dist/types/types/index.d.ts.map +0 -1
  359. package/dist/types/utils/environment.d.ts +0 -47
  360. package/dist/types/utils/environment.d.ts.map +0 -1
  361. package/dist/types/utils/formatting.d.ts +0 -37
  362. package/dist/types/utils/formatting.d.ts.map +0 -1
  363. package/dist/types/utils/index.d.ts +0 -7
  364. package/dist/types/utils/index.d.ts.map +0 -1
  365. package/dist/types/utils/opentui-detection.d.ts +0 -34
  366. package/dist/types/utils/opentui-detection.d.ts.map +0 -1
  367. package/dist/types/utils/output.d.ts +0 -41
  368. package/dist/types/utils/output.d.ts.map +0 -1
  369. package/dist/types/utils/stackTrace.d.ts +0 -6
  370. package/dist/types/utils/stackTrace.d.ts.map +0 -1
  371. package/dist/types/utils/timestamps.d.ts +0 -20
  372. package/dist/types/utils/timestamps.d.ts.map +0 -1
  373. package/dist/utils/environment.d.ts +0 -47
  374. package/dist/utils/environment.d.ts.map +0 -1
  375. package/dist/utils/environment.js +0 -85
  376. package/dist/utils/formatting.js +0 -117
  377. package/dist/utils/index.js +0 -6
  378. package/dist/utils/opentui-detection.d.ts +0 -34
  379. package/dist/utils/opentui-detection.d.ts.map +0 -1
  380. package/dist/utils/opentui-detection.js +0 -116
  381. package/dist/utils/output.js +0 -150
  382. package/dist/utils/stackTrace.js +0 -81
  383. package/dist/utils/timestamps.js +0 -71
  384. package/dist/vite.svg +0 -1
  385. package/docs/API.md +0 -691
  386. package/docs/CORE.md +0 -264
  387. package/docs/DEVELOPMENT.md +0 -731
  388. package/docs/EXPORTS.md +0 -467
  389. package/docs/PACKAGES.md +0 -244
  390. package/docs/STYLING.md +0 -405
  391. package/docs/_config.yml +0 -36
  392. package/docs/index.md +0 -179
  393. package/examples/README.md +0 -208
  394. package/examples/basic-logging.js +0 -75
  395. package/examples/data-export.js +0 -234
  396. package/examples/package.json +0 -16
  397. package/examples/performance-timing.js +0 -170
  398. package/examples/simplified-api.js +0 -124
  399. package/examples/styling-themes.js +0 -207
  400. package/index.html +0 -358
  401. package/packages/core/package.json +0 -57
  402. package/packages/exports/package.json +0 -41
  403. package/packages/nodejs-opentui/README.md +0 -232
  404. package/packages/nodejs-opentui/package.json +0 -72
  405. package/packages/nodejs-opentui/src/LogRenderer.ts +0 -171
  406. package/packages/nodejs-opentui/src/OpenTUILogHandler.ts +0 -178
  407. package/packages/nodejs-opentui/src/components/LogBadge.tsx +0 -131
  408. package/packages/nodejs-opentui/src/index.ts +0 -133
  409. package/packages/nodejs-opentui/src/types.ts +0 -158
  410. package/packages/nodejs-opentui/tsconfig.json +0 -20
  411. package/packages/styling/package.json +0 -41
  412. package/project-utils/README.md +0 -172
  413. package/project-utils/auto-release-gemini.ts +0 -1193
  414. package/project-utils/auto-release-ui.ts +0 -1329
  415. package/project-utils/commit-generator.ts +0 -1385
  416. package/project-utils/commit-ui.ts +0 -264
  417. package/project-utils/git-utils.ts +0 -199
  418. package/project-utils/github-release-manager.ts +0 -466
  419. package/project-utils/project-config.ts +0 -260
  420. package/project-utils/prompt-templates.js +0 -345
  421. package/project-utils/prompt-templates.ts +0 -422
  422. package/project-utils/version-manager.ts +0 -1078
  423. package/public/vite.svg +0 -1
  424. package/src/Logger.ts +0 -1276
  425. package/src/ScopedLogger.ts +0 -454
  426. package/src/cli/CommandProcessor.ts +0 -248
  427. package/src/cli/commands/ConfigCommand.ts +0 -93
  428. package/src/cli/commands/ExportCommand.ts +0 -276
  429. package/src/cli/commands/HistoryCommand.ts +0 -117
  430. package/src/cli/commands/StatusCommand.ts +0 -112
  431. package/src/cli/commands/ThemeCommand.ts +0 -88
  432. package/src/cli/help.ts +0 -127
  433. package/src/cli/index.ts +0 -71
  434. package/src/constants.ts +0 -171
  435. package/src/core.ts +0 -393
  436. package/src/example.ts +0 -210
  437. package/src/exports-module.ts +0 -311
  438. package/src/handlers/AnalyticsLogHandler.ts +0 -22
  439. package/src/handlers/ExportLogHandler.ts +0 -609
  440. package/src/handlers/FileLogHandler.ts +0 -169
  441. package/src/handlers/RemoteLogHandler.ts +0 -42
  442. package/src/handlers/index.ts +0 -8
  443. package/src/index.ts +0 -209
  444. package/src/main.ts +0 -196
  445. package/src/style.css +0 -96
  446. package/src/styling/LogStyleBuilder.ts +0 -355
  447. package/src/styling/SemanticStyles.ts +0 -380
  448. package/src/styling/SmartPresets.ts +0 -288
  449. package/src/styling/StyleBuilder.ts +0 -319
  450. package/src/styling/banners.ts +0 -168
  451. package/src/styling/index.ts +0 -27
  452. package/src/styling/themes.ts +0 -235
  453. package/src/styling-module.ts +0 -244
  454. package/src/types/core.ts +0 -236
  455. package/src/types/handlers.ts +0 -95
  456. package/src/types/index.ts +0 -35
  457. package/src/typescript.svg +0 -1
  458. package/src/utils/environment.ts +0 -94
  459. package/src/utils/formatting.ts +0 -142
  460. package/src/utils/index.ts +0 -21
  461. package/src/utils/opentui-detection.ts +0 -138
  462. package/src/utils/output.ts +0 -185
  463. package/src/utils/stackTrace.ts +0 -95
  464. package/src/utils/timestamps.ts +0 -80
  465. package/src/vite-env.d.ts +0 -1
  466. package/test-core-browser.html +0 -237
  467. package/test-core-node.js +0 -63
  468. package/tests/test-conflict-resolution.ts +0 -391
  469. package/tests/validate-workflows.sh +0 -131
  470. package/tests/yaml-autofix.sh +0 -146
  471. package/tsconfig.json +0 -50
  472. package/vite.config.ts +0 -223
package/dist/Logger.js DELETED
@@ -1,1124 +0,0 @@
1
- /**
2
- * @fileoverview Logger avanzado con arquitectura modular y API simplificada
3
- * @version 0.3.0
4
- * @since 2024
5
- *
6
- * Sistema de logging profesional con estilos CSS avanzados, temas adaptativos,
7
- * badges automáticos, contextos temporales y exportación de datos.
8
- */
9
- // Utility imports
10
- import { parseStackTrace, formatTimestamp, createStyledOutput, setupThemeChangeListener } from './utils/index.js';
11
- // Styling imports
12
- import { THEME_PRESETS, THEME_BANNERS, displayInitBanner, StylePresets, StyleBuilder } from './styling/index.js';
13
- // Smart presets and dynamic scoped loggers
14
- import { getSmartPreset, getAvailablePresets, hasPreset } from './styling/SmartPresets.js';
15
- import { createLogStyleBuilder } from './styling/LogStyleBuilder.js';
16
- // Handler imports
17
- import { ExportLogHandler } from './handlers/index.js';
18
- // CLI imports
19
- import { createDefaultCLI } from './cli/index.js';
20
- // Constants
21
- import { DEFAULT_CONFIG } from './constants.js';
22
- /**
23
- * Estilos del tema activo actual
24
- * @private
25
- */
26
- let LEVEL_STYLES = THEME_PRESETS.default;
27
- /**
28
- * Clase principal Logger con capacidades avanzadas de logging
29
- *
30
- * @class Logger
31
- * @description Sistema completo de logging con temas, badges, contextos y exportación.
32
- * Detecta automáticamente el tema claro/oscuro del navegador.
33
- *
34
- * @example
35
- * // Uso básico sin configuración
36
- * import logger from '@mks2508/better-logger';
37
- * logger.info('Aplicación iniciada');
38
- * logger.success('Conexión establecida');
39
- *
40
- * @example
41
- * // Aplicar un preset temático
42
- * logger.preset('cyberpunk');
43
- * logger.warn('Advertencia con estilo neón');
44
- *
45
- * @example
46
- * // Logger con scope para componentes
47
- * const auth = logger.component('Autenticación');
48
- * auth.info('Usuario intentando login');
49
- * auth.success('Login exitoso');
50
- *
51
- * @since 0.3.0
52
- */
53
- export class Logger {
54
- config;
55
- scopedPrefix;
56
- handlers = [];
57
- timers = new Map();
58
- groupDepth = 0;
59
- exportHandler;
60
- cliProcessor;
61
- themeChangeListener;
62
- displaySettings = {
63
- showTimestamp: true,
64
- showLocation: true,
65
- showBadges: true
66
- };
67
- /**
68
- * Crea una nueva instancia del Logger
69
- *
70
- * @param {Partial<LoggerConfig>} config - Configuración opcional del logger
71
- *
72
- * @example
73
- * // Logger con configuración personalizada
74
- * const logger = new Logger({
75
- * theme: 'neon',
76
- * globalPrefix: 'MiApp',
77
- * verbosity: 'debug',
78
- * bufferSize: 1000
79
- * });
80
- */
81
- constructor(config = {}) {
82
- this.config = {
83
- ...DEFAULT_CONFIG,
84
- ...config,
85
- };
86
- // Initialize export handler if buffer size is specified
87
- if (this.config.bufferSize) {
88
- this.exportHandler = new ExportLogHandler(this.config.bufferSize);
89
- this.handlers.push(this.exportHandler);
90
- }
91
- // Initialize CLI processor
92
- this.cliProcessor = createDefaultCLI();
93
- // Set up theme change listener if auto-detection is enabled
94
- if (this.config.autoDetectTheme) {
95
- this.setupAutoThemeDetection();
96
- }
97
- }
98
- // ===== PRIVATE HELPER METHODS =====
99
- /**
100
- * Configura la detección automática de tema con listener de cambios
101
- * @private
102
- * @description Detecta automáticamente si el navegador está en modo claro u oscuro
103
- */
104
- setupAutoThemeDetection() {
105
- // Clean up existing listener if any
106
- if (this.themeChangeListener) {
107
- this.themeChangeListener();
108
- this.themeChangeListener = null;
109
- }
110
- // Set up new listener
111
- this.themeChangeListener = setupThemeChangeListener((theme) => {
112
- // Theme changed - logs will automatically use new colors on next call
113
- // No need to update anything as colors are resolved dynamically
114
- this.debug(`DevTools theme changed to: ${theme}`);
115
- });
116
- }
117
- // ===== CONFIGURATION METHODS =====
118
- /**
119
- * Obtiene la configuración actual del logger
120
- *
121
- * @returns {LoggerConfig} Configuración completa actual
122
- *
123
- * @example
124
- * const config = logger.getConfig();
125
- * console.log('Verbosidad actual:', config.verbosity);
126
- * console.log('Tema actual:', config.theme);
127
- *
128
- * @since 0.3.0
129
- */
130
- getConfig() {
131
- return { ...this.config };
132
- }
133
- /**
134
- * Actualiza la configuración del logger
135
- *
136
- * @param {Partial<LoggerConfig>} updates - Propiedades a actualizar
137
- *
138
- * @example
139
- * logger.updateConfig({
140
- * verbosity: 'debug',
141
- * enableTimestamps: false,
142
- * theme: 'cyberpunk'
143
- * });
144
- *
145
- * @since 0.3.0
146
- */
147
- updateConfig(updates) {
148
- const previousAutoDetect = this.config.autoDetectTheme;
149
- this.config = { ...this.config, ...updates };
150
- // Handle auto-detection changes
151
- if (updates.autoDetectTheme !== undefined && updates.autoDetectTheme !== previousAutoDetect) {
152
- if (updates.autoDetectTheme) {
153
- this.setupAutoThemeDetection();
154
- }
155
- else if (this.themeChangeListener) {
156
- this.themeChangeListener();
157
- this.themeChangeListener = null;
158
- }
159
- }
160
- }
161
- /**
162
- * Establece el prefijo global para todos los mensajes de log
163
- *
164
- * @param {string} prefix - Prefijo a usar
165
- *
166
- * @example
167
- * logger.setGlobalPrefix('MiApp');
168
- * logger.info('Iniciado'); // [MiApp] Iniciado
169
- *
170
- * @since 0.3.0
171
- */
172
- setGlobalPrefix(prefix) {
173
- this.config.globalPrefix = prefix;
174
- }
175
- /**
176
- * Establece el nivel de verbosidad para filtrar la salida de logs
177
- *
178
- * @param {Verbosity} level - Nivel mínimo a mostrar ('debug' | 'info' | 'warn' | 'error' | 'critical' | 'silent')
179
- *
180
- * @example
181
- * logger.setVerbosity('warn'); // Solo muestra warn, error y critical
182
- * logger.setVerbosity('debug'); // Muestra todos los niveles
183
- * logger.setVerbosity('silent'); // No muestra nada
184
- *
185
- * @since 0.3.0
186
- */
187
- setVerbosity(level) {
188
- this.config.verbosity = level;
189
- }
190
- /**
191
- * Establece el tema del logger
192
- *
193
- * @param {ThemeVariant} theme - Tema a aplicar ('default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk')
194
- *
195
- * @example
196
- * logger.setTheme('neon'); // Tema con colores neón
197
- * logger.setTheme('minimal'); // Tema minimalista
198
- * logger.setTheme('cyberpunk'); // Tema cyberpunk con efectos
199
- *
200
- * @since 0.3.0
201
- */
202
- setTheme(theme) {
203
- // First check if it's a smart preset
204
- if (hasPreset(theme)) {
205
- this.preset(theme);
206
- return;
207
- }
208
- // Fallback to old theme system
209
- if (theme in THEME_PRESETS) {
210
- LEVEL_STYLES = THEME_PRESETS[theme];
211
- this.config.theme = theme;
212
- // Show theme-specific banner
213
- if (theme in THEME_BANNERS) {
214
- const themeBanner = THEME_BANNERS[theme];
215
- console.log(`%c${themeBanner.simple}`, themeBanner.style);
216
- }
217
- this.success(`Theme changed to: ${theme}`);
218
- }
219
- else {
220
- this.error(`Invalid theme: ${theme}. Available:`, [...getAvailablePresets(), ...Object.keys(THEME_PRESETS)]);
221
- }
222
- }
223
- /**
224
- * Establece el tipo de banner para mostrar en la inicialización
225
- *
226
- * @param {BannerType} bannerType - Tipo de banner ('simple' | 'ascii' | 'unicode' | 'svg' | 'animated')
227
- *
228
- * @example
229
- * logger.setBannerType('ascii'); // Banner con arte ASCII
230
- * logger.setBannerType('unicode'); // Banner con caracteres Unicode
231
- * logger.setBannerType('animated'); // Banner con animación
232
- *
233
- * @since 0.3.0
234
- */
235
- setBannerType(bannerType) {
236
- this.config.bannerType = bannerType;
237
- this.success(`Banner type changed to: ${bannerType}`);
238
- }
239
- /**
240
- * Reinicia el logger a la configuración por defecto
241
- *
242
- * @example
243
- * logger.resetConfig();
244
- * // Todo vuelve a la configuración inicial
245
- *
246
- * @since 0.3.0
247
- */
248
- resetConfig() {
249
- // Clean up theme listener
250
- if (this.themeChangeListener) {
251
- this.themeChangeListener();
252
- this.themeChangeListener = null;
253
- }
254
- this.config = { ...DEFAULT_CONFIG };
255
- LEVEL_STYLES = THEME_PRESETS.default;
256
- // Re-setup auto theme detection if enabled in default config
257
- if (this.config.autoDetectTheme) {
258
- this.setupAutoThemeDetection();
259
- }
260
- this.success('Logger configuration reset to defaults');
261
- }
262
- /**
263
- * Método de limpieza para eliminar listeners y liberar recursos
264
- *
265
- * @example
266
- * // Antes de cerrar la aplicación
267
- * logger.cleanup();
268
- *
269
- * @since 0.3.0
270
- */
271
- cleanup() {
272
- if (this.themeChangeListener) {
273
- this.themeChangeListener();
274
- this.themeChangeListener = null;
275
- }
276
- }
277
- // ===== SIMPLIFIED API =====
278
- /**
279
- * Aplica un preset inteligente - funciona perfectamente sin configuración
280
- *
281
- * @param {string} name - Nombre del preset a aplicar
282
- *
283
- * @example
284
- * // Presets disponibles
285
- * logger.preset('default'); // Limpio y adaptativo
286
- * logger.preset('cyberpunk'); // Colores neón, efectos brillantes
287
- * logger.preset('glassmorphism'); // Efectos de blur modernos
288
- * logger.preset('minimal'); // Minimalista y elegante
289
- * logger.preset('debug'); // Modo desarrollo detallado
290
- * logger.preset('production'); // Optimizado para producción
291
- *
292
- * @since 0.3.0
293
- */
294
- preset(name) {
295
- if (!hasPreset(name)) {
296
- this.error(`Unknown preset: ${name}. Available presets:`, getAvailablePresets());
297
- return;
298
- }
299
- const presetConfig = getSmartPreset(name);
300
- if (presetConfig) {
301
- // Apply the smart preset configuration
302
- this.displaySettings.showTimestamp = presetConfig.timestamp?.show ?? true;
303
- this.displaySettings.showLocation = presetConfig.location?.show ?? true;
304
- // Store the preset config for use in createStyledOutput
305
- this._activePreset = presetConfig;
306
- this._activePresetName = name;
307
- this.success(`Applied preset: ${name}`);
308
- }
309
- }
310
- /**
311
- * Lista todos los presets disponibles
312
- *
313
- * @returns {string[]} Array con nombres de presets disponibles
314
- *
315
- * @example
316
- * const disponibles = logger.presets();
317
- * console.log(disponibles); // ['default', 'cyberpunk', 'glassmorphism', ...]
318
- *
319
- * @since 0.3.0
320
- */
321
- presets() {
322
- return getAvailablePresets();
323
- }
324
- // ===== TOGGLE METHODS =====
325
- /**
326
- * Oculta el timestamp en los logs
327
- *
328
- * @example
329
- * logger.hideTimestamp();
330
- * logger.info('Sin marca de tiempo'); // Sin timestamp visible
331
- *
332
- * @since 0.3.0
333
- */
334
- hideTimestamp() {
335
- this.displaySettings.showTimestamp = false;
336
- this.success('Timestamp hidden');
337
- }
338
- /**
339
- * Muestra el timestamp en los logs
340
- *
341
- * @example
342
- * logger.showTimestamp();
343
- * logger.info('Con marca de tiempo'); // [2024-01-15 10:30:45] Con marca de tiempo
344
- *
345
- * @since 0.3.0
346
- */
347
- showTimestamp() {
348
- this.displaySettings.showTimestamp = true;
349
- this.success('Timestamp shown');
350
- }
351
- /**
352
- * Oculta la información de ubicación (archivo:línea) en los logs
353
- *
354
- * @example
355
- * logger.hideLocation();
356
- * logger.debug('Sin ubicación'); // Sin mostrar archivo:línea
357
- *
358
- * @since 0.3.0
359
- */
360
- hideLocation() {
361
- this.displaySettings.showLocation = false;
362
- this.success('Location info hidden');
363
- }
364
- /**
365
- * Muestra la información de ubicación (archivo:línea) en los logs
366
- *
367
- * @example
368
- * logger.showLocation();
369
- * logger.debug('Con ubicación'); // app.js:42 Con ubicación
370
- *
371
- * @since 0.3.0
372
- */
373
- showLocation() {
374
- this.displaySettings.showLocation = true;
375
- this.success('Location info shown');
376
- }
377
- /**
378
- * Oculta los badges en los logs
379
- *
380
- * @example
381
- * logger.hideBadges();
382
- * const api = logger.api('REST');
383
- * api.info('Sin badges'); // Sin mostrar [API] [REST]
384
- *
385
- * @since 0.3.0
386
- */
387
- hideBadges() {
388
- this.displaySettings.showBadges = false;
389
- this.success('Badges hidden');
390
- }
391
- /**
392
- * Muestra los badges en los logs
393
- *
394
- * @example
395
- * logger.showBadges();
396
- * const api = logger.api('GraphQL');
397
- * api.info('Con badges'); // [API] [GraphQL] Con badges
398
- *
399
- * @since 0.3.0
400
- */
401
- showBadges() {
402
- this.displaySettings.showBadges = true;
403
- this.success('Badges shown');
404
- }
405
- // ===== SCOPED LOGGERS =====
406
- /**
407
- * Crea un logger para componentes con estilo automático
408
- *
409
- * @param {string} name - Nombre del componente
410
- * @returns {ComponentLogger} Logger con scope de componente
411
- *
412
- * @example
413
- * const authLogger = logger.component('Autenticación');
414
- * authLogger.info('Validando credenciales');
415
- * // [COMPONENT] [Autenticación] Validando credenciales
416
- *
417
- * authLogger.success('Usuario autenticado');
418
- * // [COMPONENT] [Autenticación] ✓ Usuario autenticado
419
- *
420
- * @since 0.3.0
421
- */
422
- component(name) {
423
- // Dynamic import to avoid circular dependency
424
- const { ComponentLogger } = require('./ScopedLogger.js');
425
- return new ComponentLogger(this, name);
426
- }
427
- /**
428
- * Crea un logger para APIs con badges automáticos
429
- *
430
- * @param {string} name - Nombre de la API o endpoint
431
- * @returns {APILogger} Logger con scope de API
432
- *
433
- * @example
434
- * const api = logger.api('REST');
435
- * api.info('GET /users');
436
- * // [API] [REST] GET /users
437
- *
438
- * // Con badges adicionales
439
- * api.badges(['v2', 'cached']).info('Respuesta desde caché');
440
- * // [API] [v2] [cached] [REST] Respuesta desde caché
441
- *
442
- * @since 0.3.0
443
- */
444
- api(name) {
445
- // Dynamic import to avoid circular dependency
446
- const { APILogger } = require('./ScopedLogger.js');
447
- return new APILogger(this, name);
448
- }
449
- /**
450
- * Crea un logger con scope general y soporte de badges
451
- *
452
- * @param {string} name - Nombre del scope
453
- * @returns {ScopedLogger} Logger con scope personalizado
454
- *
455
- * @example
456
- * const dbLogger = logger.scope('Database');
457
- * dbLogger.info('Conectando a MongoDB');
458
- * // [Database] Conectando a MongoDB
459
- *
460
- * // Con badges personalizados
461
- * dbLogger.badge('SLOW').warn('Query tardó 5s');
462
- * // [SLOW] [Database] Query tardó 5s
463
- *
464
- * @since 0.3.0
465
- */
466
- scope(name) {
467
- // Dynamic import to avoid circular dependency
468
- const { ScopedLogger } = require('./ScopedLogger.js');
469
- return new ScopedLogger(this, name);
470
- }
471
- // ===== SIMPLE CUSTOMIZATION =====
472
- /**
473
- * Personalización simple con configuración mínima
474
- *
475
- * @param {Object} overrides - Opciones de personalización
476
- * @param {Object} overrides.message - Configuración del mensaje
477
- * @param {Object} overrides.timestamp - Configuración del timestamp
478
- * @param {Object} overrides.location - Configuración de ubicación
479
- * @param {Object} overrides.level - Configuración del nivel
480
- * @param {Object} overrides.prefix - Configuración del prefijo
481
- * @param {string} overrides.spacing - Espaciado: 'compact' | 'normal' | 'spacious'
482
- *
483
- * @example
484
- * logger.customize({
485
- * message: { color: '#00ff00', size: '16px' },
486
- * timestamp: { show: false },
487
- * spacing: 'compact'
488
- * });
489
- *
490
- * @since 0.3.0
491
- */
492
- customize(overrides) {
493
- // Apply simple overrides
494
- if (overrides.timestamp?.show !== undefined) {
495
- this.displaySettings.showTimestamp = overrides.timestamp.show;
496
- }
497
- if (overrides.location?.show !== undefined) {
498
- this.displaySettings.showLocation = overrides.location.show;
499
- }
500
- if (overrides.prefix?.show !== undefined) {
501
- // Will be handled when we integrate with preset system
502
- }
503
- // Store customization for use in createStyledOutput
504
- this._customization = overrides;
505
- this.success('Customization applied');
506
- }
507
- /**
508
- * Access advanced styling API (for power users)
509
- */
510
- styles() {
511
- return createLogStyleBuilder(this);
512
- }
513
- // ===== HANDLER MANAGEMENT =====
514
- /**
515
- * Añade un handler personalizado para extender funcionalidad
516
- *
517
- * @param {ILogHandler} handler - Handler que implementa ILogHandler
518
- *
519
- * @example
520
- * // Handler personalizado para enviar logs a servidor
521
- * const remoteHandler = new RemoteLogHandler('https://api.ejemplo.com/logs');
522
- * logger.addHandler(remoteHandler);
523
- *
524
- * @example
525
- * // Handler para guardar en archivo
526
- * const fileHandler = new FileLogHandler('./app.log');
527
- * logger.addHandler(fileHandler);
528
- *
529
- * @since 0.3.0
530
- */
531
- addHandler(handler) {
532
- this.handlers.push(handler);
533
- }
534
- /**
535
- * Obtiene todos los handlers registrados
536
- *
537
- * @returns {ILogHandler[]} Array de handlers activos
538
- * @since 0.3.0
539
- */
540
- getHandlers() {
541
- return [...this.handlers];
542
- }
543
- /**
544
- * Obtiene el handler de exportación si está disponible
545
- *
546
- * @returns {ExportLogHandler | undefined} Handler de exportación o undefined
547
- * @since 0.3.0
548
- */
549
- getExportHandler() {
550
- return this.exportHandler;
551
- }
552
- // ===== CORE LOGGING METHODS =====
553
- /**
554
- * Verifica si un nivel de log debe mostrarse según la verbosidad actual
555
- * @private
556
- * @param {LogLevel} level - Nivel de log a verificar
557
- * @returns {boolean} True si debe mostrarse, false si no
558
- */
559
- shouldLog(level) {
560
- if (this.config.verbosity === 'silent')
561
- return false;
562
- const levels = { debug: 0, info: 1, warn: 2, error: 3, critical: 4 };
563
- return levels[level] >= levels[this.config.verbosity];
564
- }
565
- /**
566
- * Obtiene el prefijo efectivo (global + scope)
567
- * @private
568
- * @returns {string | undefined} Prefijo combinado o undefined
569
- */
570
- getEffectivePrefix() {
571
- const parts = [this.config.globalPrefix, this.scopedPrefix].filter(Boolean);
572
- return parts.length > 0 ? parts.join(':') : undefined;
573
- }
574
- /**
575
- * Método central de logging que maneja estilos y formato
576
- * @protected
577
- * @param {LogLevel} level - Nivel del log
578
- * @param {...any} args - Argumentos a loggear
579
- */
580
- log(level, ...args) {
581
- if (!this.shouldLog(level))
582
- return;
583
- const stackInfo = this.config.enableStackTrace ? parseStackTrace() : null;
584
- const prefix = this.getEffectivePrefix();
585
- const message = args.length > 0 ? String(args[0]) : '';
586
- const additionalArgs = args.slice(1);
587
- // Create styled output with theme detection and display settings
588
- const [format, ...styles] = createStyledOutput(level, LEVEL_STYLES, prefix, message, this.displaySettings.showLocation ? stackInfo : null, this.config.autoDetectTheme);
589
- // Add group indentation
590
- const groupIndent = ' '.repeat(this.groupDepth);
591
- const finalFormat = groupIndent + format;
592
- // Output to console
593
- if (additionalArgs.length > 0) {
594
- console.log(finalFormat, ...styles, ...additionalArgs);
595
- }
596
- else {
597
- console.log(finalFormat, ...styles);
598
- }
599
- // Update export handler group info
600
- if (this.exportHandler) {
601
- this.exportHandler.setGroupInfo(this.groupDepth);
602
- }
603
- // Call custom handlers
604
- const metadata = {
605
- timestamp: formatTimestamp(),
606
- level,
607
- prefix,
608
- stackInfo: stackInfo ? stackInfo : undefined,
609
- };
610
- this.handlers.forEach(handler => {
611
- try {
612
- handler.handle(level, message, args, metadata);
613
- }
614
- catch (error) {
615
- console.error('Log handler failed:', error);
616
- }
617
- });
618
- }
619
- /**
620
- * Registra información de debug (prioridad más baja)
621
- *
622
- * @param {...any} args - Mensajes y datos a loggear
623
- *
624
- * @example
625
- * logger.debug('Variable estado:', { usuario: 'Juan', activo: true });
626
- * logger.debug('Iniciando proceso de validación');
627
- *
628
- * @since 0.3.0
629
- */
630
- debug(...args) {
631
- this.log('debug', ...args);
632
- }
633
- /**
634
- * Registra mensajes informativos
635
- *
636
- * @param {...any} args - Mensajes y datos informativos
637
- *
638
- * @example
639
- * logger.info('Servidor iniciado en puerto 3000');
640
- * logger.info('Usuario conectado:', userId);
641
- * logger.info('Procesando', totalItems, 'elementos');
642
- *
643
- * @since 0.3.0
644
- */
645
- info(...args) {
646
- this.log('info', ...args);
647
- }
648
- /**
649
- * Registra mensajes de advertencia
650
- *
651
- * @param {...any} args - Mensajes de advertencia
652
- *
653
- * @example
654
- * logger.warn('Memoria al 85% de capacidad');
655
- * logger.warn('API deprecada, usar v2');
656
- * logger.warn('Reintentos agotados:', maxRetries);
657
- *
658
- * @since 0.3.0
659
- */
660
- warn(...args) {
661
- this.log('warn', ...args);
662
- }
663
- /**
664
- * Registra mensajes de error
665
- *
666
- * @param {...any} args - Mensajes de error y stack traces
667
- *
668
- * @example
669
- * logger.error('Fallo en conexión a base de datos');
670
- * logger.error('Error al procesar:', error.message, error.stack);
671
- * logger.error('Código de error:', errorCode);
672
- *
673
- * @since 0.3.0
674
- */
675
- error(...args) {
676
- this.log('error', ...args);
677
- }
678
- /**
679
- * Registra mensajes de éxito (nivel info especial)
680
- *
681
- * @param {...any} args - Mensajes de operaciones exitosas
682
- *
683
- * @example
684
- * logger.success('Base de datos conectada');
685
- * logger.success('Usuario creado con ID:', userId);
686
- * logger.success('✓ Tests pasados: 42/42');
687
- *
688
- * @since 0.3.0
689
- */
690
- success(...args) {
691
- if (!this.shouldLog('info'))
692
- return;
693
- const stackInfo = this.config.enableStackTrace ? parseStackTrace() : null;
694
- const prefix = this.getEffectivePrefix();
695
- const message = args.length > 0 ? String(args[0]) : '';
696
- const additionalArgs = args.slice(1);
697
- // Handle success as special case - use info level with success styling
698
- const [format, ...styles] = createStyledOutput('info', LEVEL_STYLES, prefix, message, this.displaySettings.showLocation ? stackInfo : null, this.config.autoDetectTheme);
699
- // Override with success styling
700
- const successStyle = LEVEL_STYLES.success;
701
- let emoji = '✅';
702
- let label = 'SUCCESS';
703
- if (successStyle) {
704
- if (successStyle.emoji) {
705
- emoji = successStyle.emoji;
706
- }
707
- if (successStyle.label) {
708
- label = successStyle.label;
709
- }
710
- }
711
- const successFormat = format.replace(/ℹ️ INFO/, `${emoji} ${label}`);
712
- const groupIndent = ' '.repeat(this.groupDepth);
713
- const finalFormat = groupIndent + successFormat;
714
- if (additionalArgs.length > 0) {
715
- console.log(finalFormat, ...styles, ...additionalArgs);
716
- }
717
- else {
718
- console.log(finalFormat, ...styles);
719
- }
720
- // Call handlers
721
- const metadata = {
722
- timestamp: formatTimestamp(),
723
- level: 'info',
724
- prefix,
725
- stackInfo: stackInfo ? stackInfo : undefined,
726
- };
727
- this.handlers.forEach(handler => {
728
- try {
729
- handler.handle('info', message, args, metadata);
730
- }
731
- catch (error) {
732
- console.error('Log handler failed:', error);
733
- }
734
- });
735
- }
736
- /**
737
- * Registra información de trace (debugging detallado)
738
- *
739
- * @param {...any} args - Datos detallados para debugging
740
- *
741
- * @example
742
- * logger.trace('Entrando en función processData');
743
- * logger.trace('Stack completo:', new Error().stack);
744
- *
745
- * @since 0.3.0
746
- */
747
- trace(...args) {
748
- this.log('debug', ...args);
749
- if (this.shouldLog('debug')) {
750
- console.trace(...args);
751
- }
752
- }
753
- /**
754
- * Registra errores críticos (prioridad más alta)
755
- *
756
- * @param {...any} args - Errores críticos del sistema
757
- *
758
- * @example
759
- * logger.critical('Sistema caído - reinicio inmediato requerido');
760
- * logger.critical('Pérdida de datos detectada');
761
- * logger.critical('Brecha de seguridad:', securityError);
762
- *
763
- * @since 0.3.0
764
- */
765
- critical(...args) {
766
- this.log('critical', ...args);
767
- }
768
- // ===== ADVANCED LOGGING FEATURES =====
769
- /**
770
- * Muestra datos en formato de tabla
771
- *
772
- * @param {any} data - Datos a mostrar (array de objetos o matriz)
773
- * @param {string[]} columns - Columnas específicas a mostrar (opcional)
774
- *
775
- * @example
776
- * const usuarios = [
777
- * { id: 1, nombre: 'Juan', edad: 30 },
778
- * { id: 2, nombre: 'María', edad: 25 }
779
- * ];
780
- * logger.table(usuarios);
781
- * logger.table(usuarios, ['nombre', 'edad']); // Solo estas columnas
782
- *
783
- * @since 0.3.0
784
- */
785
- table(data, columns) {
786
- if (!this.shouldLog('info'))
787
- return;
788
- const prefix = this.getEffectivePrefix();
789
- const tableStyle = StylePresets.accent().build();
790
- const format = `%c📊 TABLE${prefix ? ` [${prefix}]` : ''}`;
791
- console.log(format, tableStyle);
792
- if (columns) {
793
- console.table(data, columns);
794
- }
795
- else {
796
- console.table(data);
797
- }
798
- }
799
- /**
800
- * Inicia un grupo colapsable en la consola
801
- *
802
- * @param {string} label - Etiqueta del grupo
803
- * @param {boolean} collapsed - Si el grupo inicia colapsado (default: false)
804
- *
805
- * @example
806
- * logger.group('Procesando usuarios');
807
- * logger.info('Usuario 1 procesado');
808
- * logger.info('Usuario 2 procesado');
809
- * logger.groupEnd();
810
- *
811
- * @example
812
- * // Grupo colapsado por defecto
813
- * logger.group('Detalles adicionales', true);
814
- * logger.debug('Información detallada aquí');
815
- * logger.groupEnd();
816
- *
817
- * @since 0.3.0
818
- */
819
- group(label, collapsed = false) {
820
- const groupStyle = new StyleBuilder()
821
- .bg('linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%)')
822
- .color('#1565c0')
823
- .border('1px solid #90caf9')
824
- .padding('4px 12px')
825
- .rounded('6px')
826
- .bold()
827
- .build();
828
- const format = `%c📁 ${label}`;
829
- if (collapsed) {
830
- console.groupCollapsed(format, groupStyle);
831
- }
832
- else {
833
- console.group(format, groupStyle);
834
- }
835
- this.groupDepth++;
836
- }
837
- /**
838
- * Finaliza el grupo actual de la consola
839
- *
840
- * @example
841
- * logger.group('Operaciones');
842
- * logger.info('Operación 1');
843
- * logger.info('Operación 2');
844
- * logger.groupEnd(); // Cierra el grupo
845
- *
846
- * @since 0.3.0
847
- */
848
- groupEnd() {
849
- if (this.groupDepth > 0) {
850
- console.groupEnd();
851
- this.groupDepth--;
852
- }
853
- }
854
- // ===== PERFORMANCE TIMING =====
855
- /**
856
- * Inicia un temporizador con la etiqueta dada
857
- *
858
- * @param {string} label - Etiqueta identificadora del temporizador
859
- *
860
- * @example
861
- * logger.time('proceso-datos');
862
- * // ... operación costosa ...
863
- * logger.timeEnd('proceso-datos'); // ⏱️ Timer ended: proceso-datos - 1523.45ms
864
- *
865
- * @since 0.3.0
866
- */
867
- time(label) {
868
- const timer = {
869
- label,
870
- startTime: performance.now(),
871
- };
872
- this.timers.set(label, timer);
873
- const timerStyle = StylePresets.warning().build();
874
- console.log(`%c⏱️ Timer started: ${label}`, timerStyle);
875
- }
876
- /**
877
- * Finaliza un temporizador y muestra el tiempo transcurrido
878
- *
879
- * @param {string} label - Etiqueta del temporizador a finalizar
880
- *
881
- * @example
882
- * logger.time('consulta-db');
883
- * await consultarBaseDatos();
884
- * logger.timeEnd('consulta-db'); // ⏱️ Timer ended: consulta-db - 234.56ms
885
- *
886
- * @since 0.3.0
887
- */
888
- timeEnd(label) {
889
- const timer = this.timers.get(label);
890
- if (!timer) {
891
- this.warn(`Timer '${label}' does not exist`);
892
- return;
893
- }
894
- const elapsed = performance.now() - timer.startTime;
895
- this.timers.delete(label);
896
- const timerStyle = StylePresets.success().build();
897
- console.log(`%c⏱️ Timer ended: ${label} - ${elapsed.toFixed(2)}ms`, timerStyle);
898
- }
899
- // ===== ADVANCED VISUAL FEATURES =====
900
- /**
901
- * Muestra un banner con el tipo especificado o configurado
902
- *
903
- * @param {BannerType} bannerType - Tipo de banner (opcional)
904
- *
905
- * @example
906
- * logger.showBanner('ascii'); // Banner ASCII art
907
- * logger.showBanner('unicode'); // Banner con caracteres Unicode
908
- * logger.showBanner('svg'); // Banner con gráfico SVG
909
- * logger.showBanner(); // Usa el tipo configurado
910
- *
911
- * @since 0.3.0
912
- */
913
- showBanner(bannerType) {
914
- const effectiveBannerType = bannerType ? bannerType : this.config.bannerType;
915
- displayInitBanner(effectiveBannerType);
916
- }
917
- /**
918
- * Registra mensaje con imagen SVG de fondo
919
- *
920
- * @param {string} message - Mensaje a mostrar
921
- * @param {string} svgContent - Contenido SVG personalizado (opcional)
922
- * @param {StyleOptions} options - Opciones de estilo (ancho, alto, padding)
923
- *
924
- * @example
925
- * // SVG automático con gradiente
926
- * logger.logWithSVG('🎆 Bienvenido a Better Logger');
927
- *
928
- * @example
929
- * // SVG personalizado
930
- * const customSVG = '<svg>...</svg>';
931
- * logger.logWithSVG('Logo', customSVG, { width: 400, height: 100 });
932
- *
933
- * @since 0.3.0
934
- */
935
- logWithSVG(message, svgContent, options = {}) {
936
- const { width = 300, height = 60, padding = '30px 150px' } = options;
937
- let svgDataUri = '';
938
- if (svgContent) {
939
- const encodedSVG = encodeURIComponent(svgContent);
940
- svgDataUri = `data:image/svg+xml,${encodedSVG}`;
941
- }
942
- else {
943
- const defaultSVG = `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 ${width} ${height}'><defs><linearGradient id='grad' x1='0%' y1='0%' x2='100%' y2='0%'><stop offset='0%' style='stop-color:%23667eea'/><stop offset='100%' style='stop-color:%23764ba2'/></linearGradient></defs><rect width='100%' height='100%' fill='url(%23grad)' rx='4'/><text x='${width / 2}' y='${height / 2 + 5}' text-anchor='middle' fill='white' font-family='monospace' font-size='14' font-weight='bold'>${message}</text></svg>`;
944
- svgDataUri = `data:image/svg+xml,${encodeURIComponent(defaultSVG)}`;
945
- }
946
- const svgStyle = new StyleBuilder()
947
- .bg(`url("${svgDataUri}") no-repeat center center`)
948
- .padding(padding)
949
- .color('transparent')
950
- .rounded('4px')
951
- .build();
952
- console.log(`%c${message}`, svgStyle);
953
- }
954
- /**
955
- * Registra mensaje con gradiente animado de fondo
956
- *
957
- * @param {string} message - Mensaje a animar
958
- * @param {number} duration - Duración de la animación en segundos (default: 3)
959
- *
960
- * @example
961
- * logger.logAnimated('🌈 Animación en progreso');
962
- * logger.logAnimated('Cargando...', 5); // Animación de 5 segundos
963
- *
964
- * @since 0.3.0
965
- */
966
- logAnimated(message, duration = 3) {
967
- // Inject CSS animation if not already present
968
- if (!document.getElementById('logger-animations')) {
969
- const style = document.createElement('style');
970
- style.id = 'logger-animations';
971
- style.textContent = `
972
- @keyframes loggerGradient {
973
- 0% { background-position: 0% 50%; }
974
- 50% { background-position: 100% 50%; }
975
- 100% { background-position: 0% 50%; }
976
- }
977
- `;
978
- document.head.appendChild(style);
979
- }
980
- const animatedStyle = new StyleBuilder()
981
- .bg('linear-gradient(-45deg, #667eea, #764ba2, #667eea, #764ba2)')
982
- .css('background-size', '400% 400%')
983
- .color('#ffffff')
984
- .padding('12px 20px')
985
- .rounded('8px')
986
- .bold()
987
- .font('Monaco, Consolas, monospace')
988
- .animation(`loggerGradient ${duration}s ease infinite`)
989
- .display('inline-block')
990
- .build();
991
- console.log(`%c${message}`, animatedStyle);
992
- }
993
- /**
994
- * Agrupa logs por una propiedad específica usando Object.groupBy (cuando esté disponible)
995
- *
996
- * @param {T[]} items - Array de elementos a agrupar
997
- * @param {Function} groupBy - Función que retorna la clave de agrupación
998
- *
999
- * @example
1000
- * const ventas = [
1001
- * { producto: 'Laptop', categoria: 'Electrónica', precio: 1200 },
1002
- * { producto: 'Mouse', categoria: 'Electrónica', precio: 25 },
1003
- * { producto: 'Libro', categoria: 'Literatura', precio: 15 }
1004
- * ];
1005
- * logger.logGrouped(ventas, item => item.categoria);
1006
- *
1007
- * @since 0.3.0
1008
- */
1009
- logGrouped(items, groupBy) {
1010
- try {
1011
- // Use Object.groupBy if available (ES2024), otherwise fallback to reduce
1012
- let grouped;
1013
- if (Object.groupBy) {
1014
- grouped = Object.groupBy(items, groupBy);
1015
- }
1016
- else {
1017
- grouped = items.reduce((acc, item) => {
1018
- const key = groupBy(item);
1019
- if (!acc[key]) {
1020
- acc[key] = [];
1021
- }
1022
- acc[key].push(item);
1023
- return acc;
1024
- }, {});
1025
- }
1026
- Object.entries(grouped).forEach(([group, groupItems]) => {
1027
- this.group(`Group: ${group}`);
1028
- this.table(groupItems);
1029
- this.groupEnd();
1030
- });
1031
- }
1032
- catch {
1033
- this.info('Grouped data:', items);
1034
- }
1035
- }
1036
- // ===== CLI SYSTEM =====
1037
- /**
1038
- * Procesador de comandos CLI para configuración y exportación del logger
1039
- *
1040
- * @param {string} command - Comando CLI a ejecutar
1041
- * @returns {Promise<void>}
1042
- *
1043
- * @example
1044
- * // Comandos disponibles
1045
- * await logger.cli('export json'); // Exporta logs en JSON
1046
- * await logger.cli('export csv'); // Exporta logs en CSV
1047
- * await logger.cli('theme list'); // Lista temas disponibles
1048
- * await logger.cli('theme set neon'); // Cambia al tema neon
1049
- * await logger.cli('config show'); // Muestra configuración actual
1050
- * await logger.cli('history clear'); // Limpia historial de logs
1051
- * await logger.cli('status'); // Muestra estado del logger
1052
- * await logger.cli('help'); // Muestra ayuda de comandos
1053
- *
1054
- * @since 0.3.0
1055
- */
1056
- async cli(command) {
1057
- if (!this.cliProcessor) {
1058
- this.error('CLI processor not initialized');
1059
- return;
1060
- }
1061
- await this.cliProcessor.processCommand(command, this);
1062
- }
1063
- }
1064
- /**
1065
- * Instancia singleton del logger con configuración por defecto
1066
- * @constant {Logger}
1067
- */
1068
- const defaultLogger = new Logger({
1069
- verbosity: 'info',
1070
- enableColors: true,
1071
- enableTimestamps: true,
1072
- enableStackTrace: true,
1073
- bufferSize: 1000, // Enable export functionality by default
1074
- });
1075
- // Display initialization banner
1076
- displayInitBanner();
1077
- // Export the singleton instance as default
1078
- export default defaultLogger;
1079
- /**
1080
- * Métodos individuales exportados para conveniencia
1081
- * @description Todos los métodos están correctamente enlazados al singleton
1082
- * @since 0.3.0
1083
- */
1084
- export const debug = (...args) => defaultLogger.debug(...args);
1085
- export const info = (...args) => defaultLogger.info(...args);
1086
- export const warn = (...args) => defaultLogger.warn(...args);
1087
- export const error = (...args) => defaultLogger.error(...args);
1088
- export const success = (...args) => defaultLogger.success(...args);
1089
- export const trace = (...args) => defaultLogger.trace(...args);
1090
- export const critical = (...args) => defaultLogger.critical(...args);
1091
- export const table = (data, columns) => defaultLogger.table(data, columns);
1092
- export const group = (label, collapsed) => defaultLogger.group(label, collapsed);
1093
- export const groupEnd = () => defaultLogger.groupEnd();
1094
- export const time = (label) => defaultLogger.time(label);
1095
- export const timeEnd = (label) => defaultLogger.timeEnd(label);
1096
- export const setGlobalPrefix = (prefix) => defaultLogger.setGlobalPrefix(prefix);
1097
- export const setVerbosity = (level) => defaultLogger.setVerbosity(level);
1098
- export const addHandler = (handler) => defaultLogger.addHandler(handler);
1099
- export const setTheme = (theme) => defaultLogger.setTheme(theme);
1100
- export const setBannerType = (bannerType) => defaultLogger.setBannerType(bannerType);
1101
- export const showBanner = (bannerType) => defaultLogger.showBanner(bannerType);
1102
- export const logWithSVG = (message, svgContent, options) => defaultLogger.logWithSVG(message, svgContent, options);
1103
- export const logAnimated = (message, duration) => defaultLogger.logAnimated(message, duration);
1104
- export const cli = (command) => defaultLogger.cli(command);
1105
- export const cleanup = () => defaultLogger.cleanup();
1106
- // Simplified API exports
1107
- export const preset = (name) => defaultLogger.preset(name);
1108
- export const presets = () => defaultLogger.presets();
1109
- export const hideTimestamp = () => defaultLogger.hideTimestamp();
1110
- export const showTimestamp = () => defaultLogger.showTimestamp();
1111
- export const hideLocation = () => defaultLogger.hideLocation();
1112
- export const showLocation = () => defaultLogger.showLocation();
1113
- export const hideBadges = () => defaultLogger.hideBadges();
1114
- export const showBadges = () => defaultLogger.showBadges();
1115
- export const component = (name) => defaultLogger.component(name);
1116
- export const api = (name) => defaultLogger.api(name);
1117
- export const scope = (name) => defaultLogger.scope(name);
1118
- export const customize = (overrides) => defaultLogger.customize(overrides);
1119
- export const styles = () => defaultLogger.styles();
1120
- // Re-export handlers and utilities for backward compatibility
1121
- export { FileLogHandler, RemoteLogHandler, AnalyticsLogHandler, ExportLogHandler } from './handlers/index.js';
1122
- export { StyleBuilder, StylePresets as Styles } from './styling/index.js';
1123
- // Commented out to avoid circular dependency - import these directly from ScopedLogger.js if needed
1124
- // export { ScopedLogger, APILogger, ComponentLogger } from './ScopedLogger.js';