@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.d.ts CHANGED
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * @fileoverview Logger avanzado con arquitectura modular y API simplificada
3
- * @version 0.3.0
4
- * @since 2024
5
3
  *
6
4
  * Sistema de logging profesional con estilos CSS avanzados, temas adaptativos,
7
5
  * badges automáticos, contextos temporales y exportación de datos.
8
6
  */
9
- import type { LogLevel, Verbosity, ThemeVariant, BannerType, LoggerConfig, ILogHandler, StyleOptions } from './types/index.js';
10
- import { ExportLogHandler } from './handlers/index.js';
7
+ import type { LogLevel, LogTag, Verbosity, ThemeVariant, BannerType, LoggerConfig, ILogHandler, StyleOptions, Bindings, SerializerFn, HookEvent, HookCallback, MiddlewareFn, TransportTarget, TransportRecord, ILogResourceRef, StackInfo } from './types/index.js';
8
+ import { SerializerRegistry } from './serializers/index.js';
9
+ import { HookManager } from './hooks/index.js';
10
+ import { TransportManager } from './transports/index.js';
11
+ import { ScopedLogger, APILogger, ComponentLogger } from './ScopedLogger.js';
12
+ import type { CLILogLevel, ISpinnerHandle, IBoxOptions, ITableOptions } from './types/index.js';
11
13
  /**
12
14
  * Clase principal Logger con capacidades avanzadas de logging
13
15
  *
@@ -32,7 +34,6 @@ import { ExportLogHandler } from './handlers/index.js';
32
34
  * auth.info('Usuario intentando login');
33
35
  * auth.success('Login exitoso');
34
36
  *
35
- * @since 0.3.0
36
37
  */
37
38
  export declare class Logger {
38
39
  private config;
@@ -40,10 +41,49 @@ export declare class Logger {
40
41
  private handlers;
41
42
  private timers;
42
43
  private groupDepth;
43
- private exportHandler?;
44
44
  private cliProcessor?;
45
45
  private themeChangeListener?;
46
+ private badgeList;
46
47
  private displaySettings;
48
+ private serializerBridge;
49
+ private hookBridge;
50
+ private logContext;
51
+ private transportBridge;
52
+ /** Fijado por `success()` para que `log()` salte su propio dispatch. */
53
+ private _successTagDispatched;
54
+ private styleManager;
55
+ /** Controla si las CLI primitives (step, box, header, ...) deben renderizarse. */
56
+ private _showPrimitives;
57
+ private terminalBridge;
58
+ /**
59
+ * Referencia activa al smart-preset (fijada por `preset()`). Tipada como
60
+ * `unknown` para mantener limpia la surface pública; la consume
61
+ * `createStyledOutput`.
62
+ */
63
+ private _activePreset?;
64
+ /**
65
+ * Nombre del smart-preset activo. Se guarda aparte para que la detección
66
+ * de cambio de tema pueda re-renderizar sin re-ejecutar el body del preset.
67
+ */
68
+ private _activePresetName?;
69
+ /**
70
+ * Overrides aplicados por el último `customize()`. Se conservan para que
71
+ * `createStyledOutput` los lea después.
72
+ */
73
+ private _customization?;
74
+ /**
75
+ * Bindings propios de este logger (provenientes de llamadas a `child()`).
76
+ * Source of truth única de la contribución de este logger a la cadena de contexto.
77
+ * @private
78
+ */
79
+ private _bindings;
80
+ /**
81
+ * Referencia al record de contexto mergueado del parent en el momento en
82
+ * que se creó este logger. Junto con `_bindings`, forma la cadena de
83
+ * contexto. `undefined` para el logger raíz.
84
+ * @private
85
+ */
86
+ private _parentContextRecord;
47
87
  /**
48
88
  * Crea una nueva instancia del Logger
49
89
  *
@@ -75,7 +115,6 @@ export declare class Logger {
75
115
  * console.log('Verbosidad actual:', config.verbosity);
76
116
  * console.log('Tema actual:', config.theme);
77
117
  *
78
- * @since 0.3.0
79
118
  */
80
119
  getConfig(): LoggerConfig;
81
120
  /**
@@ -90,7 +129,6 @@ export declare class Logger {
90
129
  * theme: 'cyberpunk'
91
130
  * });
92
131
  *
93
- * @since 0.3.0
94
132
  */
95
133
  updateConfig(updates: Partial<LoggerConfig>): void;
96
134
  /**
@@ -102,7 +140,6 @@ export declare class Logger {
102
140
  * logger.setGlobalPrefix('MiApp');
103
141
  * logger.info('Iniciado'); // [MiApp] Iniciado
104
142
  *
105
- * @since 0.3.0
106
143
  */
107
144
  setGlobalPrefix(prefix: string): void;
108
145
  /**
@@ -115,7 +152,6 @@ export declare class Logger {
115
152
  * logger.setVerbosity('debug'); // Muestra todos los niveles
116
153
  * logger.setVerbosity('silent'); // No muestra nada
117
154
  *
118
- * @since 0.3.0
119
155
  */
120
156
  setVerbosity(level: Verbosity): void;
121
157
  /**
@@ -128,7 +164,6 @@ export declare class Logger {
128
164
  * logger.setTheme('minimal'); // Tema minimalista
129
165
  * logger.setTheme('cyberpunk'); // Tema cyberpunk con efectos
130
166
  *
131
- * @since 0.3.0
132
167
  */
133
168
  setTheme(theme: ThemeVariant): void;
134
169
  /**
@@ -141,9 +176,96 @@ export declare class Logger {
141
176
  * logger.setBannerType('unicode'); // Banner con caracteres Unicode
142
177
  * logger.setBannerType('animated'); // Banner con animación
143
178
  *
144
- * @since 0.3.0
145
179
  */
146
180
  setBannerType(bannerType: BannerType): void;
181
+ /**
182
+ * Ejecuta `fn` dentro de un scope AsyncLocalStorage donde `bindings` se
183
+ * merguean al contexto para todas las llamadas de log dentro de `fn`.
184
+ *
185
+ * Sin `fn` (el shape legacy de setter): no-op por backwards compatibility.
186
+ * Preferir `child()` para bindings persistentes o `withContextAsync()`
187
+ * para callbacks async.
188
+ *
189
+ * @param bindings - Pares key-value a adjuntar durante la ejecución de `fn`
190
+ * @param fn - Función sincrónica opcional a ejecutar con los bindings en scope
191
+ * @returns El valor de retorno de `fn`, o `undefined` si no se pasa `fn`
192
+ *
193
+ * @example
194
+ * // Callback sincrónico scoped
195
+ * logger.withContext({ requestId: 'r-42' }, () => {
196
+ * doWork(); // los logs de aquí ven requestId en attributes
197
+ * });
198
+ *
199
+ * @example
200
+ * // Binding persistente: usar child()
201
+ * const reqLog = logger.child({ requestId: 'r-42' });
202
+ * reqLog.info('handling request'); // attributes incluye requestId
203
+ *
204
+ * @see {@link child} para una copia inmutable con el contexto mergueado
205
+ * @see {@link withContextAsync} para la variante con callback async
206
+ */
207
+ withContext<R>(bindings: Record<string, unknown>, fn?: () => R): R | undefined;
208
+ /**
209
+ * Variante async de `withContext`. Ejecuta `fn` dentro de un scope
210
+ * AsyncLocalStorage para que los bindings estén disponibles a todas las
211
+ * llamadas de log async dentro de `fn`.
212
+ *
213
+ * @param bindings - Pares key-value a adjuntar durante la ejecución de `fn`
214
+ * @param fn - Función async a ejecutar con los bindings en scope
215
+ * @returns El valor de retorno de `fn`
216
+ *
217
+ * @example
218
+ * await logger.withContextAsync({ requestId: 'r-42' }, async () => {
219
+ * await fetchData(); // los logs de aquí ven requestId en attributes
220
+ * });
221
+ *
222
+ * @see {@link child} para un child logger persistente
223
+ * @see {@link withContext} para la variante con callback sincrónico
224
+ */
225
+ withContextAsync<R>(bindings: Record<string, unknown>, fn: () => Promise<R>): Promise<R>;
226
+ /**
227
+ * Devuelve una copia inmutable de este logger con el contexto extra bound.
228
+ * Las llamadas futuras sobre el child emiten con el contexto mergueado,
229
+ * sin mutar al parent — el patrón canónico de MDC.
230
+ *
231
+ * @param extra - Pares key-value a adjuntar (requestId, userId, ...)
232
+ * @returns Un nuevo Logger con el contexto mergueado
233
+ *
234
+ * @example
235
+ * const reqLog = logger.child({ requestId: req.id });
236
+ * reqLog.info('start'); // emite attributes: { requestId }
237
+ * logger.info('unrelated'); // NO afectado — el contexto del parent queda intacto
238
+ *
239
+ */
240
+ child(extra: Record<string, unknown>): Logger;
241
+ /**
242
+ * Descarta todas las keys del contexto bound. Tras esta llamada, los
243
+ * records emitidos dejan de llevar `attributes` hasta que
244
+ * {@link withContext} o {@link child} restablezcan uno.
245
+ *
246
+ * @returns La misma instancia del logger, ahora sin contexto
247
+ */
248
+ clearContext(): this;
249
+ /**
250
+ * Snapshot del contexto bound. El objeto devuelto es una shallow copy:
251
+ * mutarlo NO afecta lo que emiten las llamadas de log posteriores.
252
+ *
253
+ * @returns Un snapshot read-only del contexto actual
254
+ */
255
+ getContext(): Readonly<Record<string, unknown>>;
256
+ /**
257
+ * Actualiza el resource OTel por defecto (service.name, version, env).
258
+ * Se persiste en el campo `resource` de cada record emitido, salvo que
259
+ * el propio record lo override.
260
+ *
261
+ * @param resource - Resource OTel parcial a merguear con el actual
262
+ * @returns La misma instancia del logger, para chaining
263
+ *
264
+ * @example
265
+ * logger.setResource({ 'service.name': 'api', 'service.version': '1.2.3' });
266
+ *
267
+ */
268
+ setResource(resource: Partial<ILogResourceRef>): this;
147
269
  /**
148
270
  * Reinicia el logger a la configuración por defecto
149
271
  *
@@ -151,19 +273,21 @@ export declare class Logger {
151
273
  * logger.resetConfig();
152
274
  * // Todo vuelve a la configuración inicial
153
275
  *
154
- * @since 0.3.0
155
276
  */
156
277
  resetConfig(): void;
157
278
  /**
158
- * Método de limpieza para eliminar listeners y liberar recursos
279
+ * Método de limpieza para eliminar listeners y liberar recursos.
280
+ *
281
+ * Vacía los transports (drain), limpia timers, suelta la lista de
282
+ * handlers legacy, resetea el group depth y limpia el context.
283
+ * Seguro de invocar múltiples veces.
159
284
  *
160
285
  * @example
161
286
  * // Antes de cerrar la aplicación
162
- * logger.cleanup();
287
+ * await logger.cleanup();
163
288
  *
164
- * @since 0.3.0
165
289
  */
166
- cleanup(): void;
290
+ cleanup(): Promise<void>;
167
291
  /**
168
292
  * Aplica un preset inteligente - funciona perfectamente sin configuración
169
293
  *
@@ -176,9 +300,8 @@ export declare class Logger {
176
300
  * logger.preset('glassmorphism'); // Efectos de blur modernos
177
301
  * logger.preset('minimal'); // Minimalista y elegante
178
302
  * logger.preset('debug'); // Modo desarrollo detallado
179
- * logger.preset('production'); // Optimizado para producción
303
+ * logger.preset('production'); // Enfocado en producción
180
304
  *
181
- * @since 0.3.0
182
305
  */
183
306
  preset(name: string): void;
184
307
  /**
@@ -190,7 +313,6 @@ export declare class Logger {
190
313
  * const disponibles = logger.presets();
191
314
  * console.log(disponibles); // ['default', 'cyberpunk', 'glassmorphism', ...]
192
315
  *
193
- * @since 0.3.0
194
316
  */
195
317
  presets(): string[];
196
318
  /**
@@ -200,9 +322,8 @@ export declare class Logger {
200
322
  * logger.hideTimestamp();
201
323
  * logger.info('Sin marca de tiempo'); // Sin timestamp visible
202
324
  *
203
- * @since 0.3.0
204
325
  */
205
- hideTimestamp(): void;
326
+ hideTimestamp(): this;
206
327
  /**
207
328
  * Muestra el timestamp en los logs
208
329
  *
@@ -210,9 +331,8 @@ export declare class Logger {
210
331
  * logger.showTimestamp();
211
332
  * logger.info('Con marca de tiempo'); // [2024-01-15 10:30:45] Con marca de tiempo
212
333
  *
213
- * @since 0.3.0
214
334
  */
215
- showTimestamp(): void;
335
+ showTimestamp(): this;
216
336
  /**
217
337
  * Oculta la información de ubicación (archivo:línea) en los logs
218
338
  *
@@ -220,9 +340,8 @@ export declare class Logger {
220
340
  * logger.hideLocation();
221
341
  * logger.debug('Sin ubicación'); // Sin mostrar archivo:línea
222
342
  *
223
- * @since 0.3.0
224
343
  */
225
- hideLocation(): void;
344
+ hideLocation(): this;
226
345
  /**
227
346
  * Muestra la información de ubicación (archivo:línea) en los logs
228
347
  *
@@ -230,9 +349,8 @@ export declare class Logger {
230
349
  * logger.showLocation();
231
350
  * logger.debug('Con ubicación'); // app.js:42 Con ubicación
232
351
  *
233
- * @since 0.3.0
234
352
  */
235
- showLocation(): void;
353
+ showLocation(): this;
236
354
  /**
237
355
  * Oculta los badges en los logs
238
356
  *
@@ -241,9 +359,8 @@ export declare class Logger {
241
359
  * const api = logger.api('REST');
242
360
  * api.info('Sin badges'); // Sin mostrar [API] [REST]
243
361
  *
244
- * @since 0.3.0
245
362
  */
246
- hideBadges(): void;
363
+ hideBadges(): this;
247
364
  /**
248
365
  * Muestra los badges en los logs
249
366
  *
@@ -252,62 +369,95 @@ export declare class Logger {
252
369
  * const api = logger.api('GraphQL');
253
370
  * api.info('Con badges'); // [API] [GraphQL] Con badges
254
371
  *
255
- * @since 0.3.0
256
372
  */
257
- showBadges(): void;
373
+ showBadges(): this;
258
374
  /**
259
- * Crea un logger para componentes con estilo automático
375
+ * Establece múltiples badges para los logs
260
376
  *
261
- * @param {string} name - Nombre del componente
262
- * @returns {ComponentLogger} Logger con scope de componente
377
+ * @param {string[]} badges - Array de badges a mostrar
378
+ * @returns {this} Logger instance para encadenamiento
263
379
  *
264
380
  * @example
265
- * const authLogger = logger.component('Autenticación');
266
- * authLogger.info('Validando credenciales');
267
- * // [COMPONENT] [Autenticación] Validando credenciales
381
+ * logger.badges(['v3', 'stable']).info('Release publicado');
382
+ * logger.badges(['API', 'v2']).warn('Endpoint deprecado');
383
+ *
384
+ */
385
+ badges(badges: string[]): this;
386
+ /**
387
+ * Añade un badge individual a la lista
388
+ *
389
+ * @param {string} badge - Badge a añadir
390
+ * @returns {this} Logger instance para encadenamiento
268
391
  *
269
- * authLogger.success('Usuario autenticado');
270
- * // [COMPONENT] [Autenticación] ✓ Usuario autenticado
392
+ * @example
393
+ * logger.badge('DEBUG').badge('AUTH').info('Token validado');
271
394
  *
272
- * @since 0.3.0
273
395
  */
274
- component(name: string): any;
396
+ badge(badge: string): this;
275
397
  /**
276
- * Crea un logger para APIs con badges automáticos
398
+ * Limpia todos los badges activos
277
399
  *
278
- * @param {string} name - Nombre de la API o endpoint
279
- * @returns {APILogger} Logger con scope de API
400
+ * @returns {this} Logger instance para encadenamiento
280
401
  *
281
402
  * @example
282
- * const api = logger.api('REST');
283
- * api.info('GET /users');
284
- * // [API] [REST] GET /users
403
+ * logger.clearBadges().info('Sin badges');
404
+ *
405
+ */
406
+ clearBadges(): this;
407
+ /**
408
+ * Crea un logger scoped para un componente o módulo del dominio.
285
409
  *
286
- * // Con badges adicionales
287
- * api.badges(['v2', 'cached']).info('Respuesta desde caché');
288
- * // [API] [v2] [cached] [REST] Respuesta desde caché
410
+ * El `ComponentLogger` resultante prepends un badge `[name]` a cada
411
+ * mensaje y comparte configuración, transports y hooks con el logger
412
+ * padre. Útil para trazar el origen de los logs en apps con muchos
413
+ * módulos (Auth, DB, Cache, ...).
414
+ *
415
+ * @param {string} name - Nombre del componente que aparecerá como badge
416
+ * @returns {ComponentLogger} Logger scoped para el componente
417
+ *
418
+ * @example
419
+ * const auth = logger.component('Auth');
420
+ * auth.info('Validando token'); // [Auth] Validando token
421
+ * auth.success('Token válido');
289
422
  *
290
- * @since 0.3.0
423
+ * @see {@link api} para loggers de endpoints REST/GraphQL
424
+ * @see {@link scope} para un scope genérico sin badge de componente
291
425
  */
292
- api(name: string): any;
426
+ component(name: string): ComponentLogger;
293
427
  /**
294
- * Crea un logger con scope general y soporte de badges
428
+ * Crea un logger scoped para un endpoint o surface de API.
295
429
  *
296
- * @param {string} name - Nombre del scope
297
- * @returns {ScopedLogger} Logger con scope personalizado
430
+ * Como `component()` pero con styling orientado a APIs (badge `[API]`
431
+ * por defecto más el nombre del sub-scope). Útil para distinguir
432
+ * tráfico REST vs GraphQL vs WebSocket en los logs.
433
+ *
434
+ * @param {string} name - Nombre de la API o surface (p.ej. `'REST'`, `'GraphQL'`)
435
+ * @returns {APILogger} Logger scoped para la API
298
436
  *
299
437
  * @example
300
- * const dbLogger = logger.scope('Database');
301
- * dbLogger.info('Conectando a MongoDB');
302
- * // [Database] Conectando a MongoDB
438
+ * const rest = logger.api('REST');
439
+ * rest.info('GET /users/42'); // [API] [REST] GET /users/42
440
+ *
441
+ * @see {@link component} para loggers de componentes de dominio
442
+ */
443
+ api(name: string): APILogger;
444
+ /**
445
+ * Crea un logger scoped genérico con un prefijo.
303
446
  *
304
- * // Con badges personalizados
305
- * dbLogger.badge('SLOW').warn('Query tardó 5s');
306
- * // [SLOW] [Database] Query tardó 5s
447
+ * Variante minimal de `component()` / `api()`: solo aplica un prefijo
448
+ * de scope sin badges ni styling especial. Útil para sub-módulos que
449
+ * no encajan en las categorías de `component`/`api`.
450
+ *
451
+ * @param {string} name - Texto del prefijo de scope
452
+ * @returns {ScopedLogger} Logger con el scope aplicado
453
+ *
454
+ * @example
455
+ * const db = logger.scope('db');
456
+ * db.info('Pool conectado'); // [db] Pool conectado
307
457
  *
308
- * @since 0.3.0
458
+ * @see {@link component} y {@link api} para variantes con badges
309
459
  */
310
- scope(name: string): any;
460
+ scope(name: string): ScopedLogger;
311
461
  /**
312
462
  * Personalización simple con configuración mínima
313
463
  *
@@ -326,7 +476,6 @@ export declare class Logger {
326
476
  * spacing: 'compact'
327
477
  * });
328
478
  *
329
- * @since 0.3.0
330
479
  */
331
480
  customize(overrides: {
332
481
  message?: {
@@ -352,10 +501,6 @@ export declare class Logger {
352
501
  };
353
502
  spacing?: 'compact' | 'normal' | 'spacious';
354
503
  }): void;
355
- /**
356
- * Access advanced styling API (for power users)
357
- */
358
- styles(): any;
359
504
  /**
360
505
  * Añade un handler personalizado para extender funcionalidad
361
506
  *
@@ -363,38 +508,216 @@ export declare class Logger {
363
508
  *
364
509
  * @example
365
510
  * // Handler personalizado para enviar logs a servidor
366
- * const remoteHandler = new RemoteLogHandler('https://api.ejemplo.com/logs');
367
- * logger.addHandler(remoteHandler);
511
+ * logger.addHandler({
512
+ * handle(level, message, args, metadata) {
513
+ * fetch('/logs', { method: 'POST', body: JSON.stringify({ level, message }) });
514
+ * }
515
+ * });
368
516
  *
369
517
  * @example
370
- * // Handler para guardar en archivo
371
- * const fileHandler = new FileLogHandler('./app.log');
372
- * logger.addHandler(fileHandler);
518
+ * // Para escribir a archivo, usa `addTransport` con un `FileTransport`
519
+ * logger.addTransport({ target: new FileTransport({ destination: 'app.log' }) });
373
520
  *
374
- * @since 0.3.0
375
521
  */
376
522
  addHandler(handler: ILogHandler): void;
377
523
  /**
378
524
  * Obtiene todos los handlers registrados
379
525
  *
380
526
  * @returns {ILogHandler[]} Array de handlers activos
381
- * @since 0.3.0
382
527
  */
383
528
  getHandlers(): ILogHandler[];
384
529
  /**
385
- * Obtiene el handler de exportación si está disponible
530
+ * Añade un serializador personalizado para un tipo específico
531
+ *
532
+ * @param type - Constructor del tipo a serializar
533
+ * @param serializer - Función de serialización
534
+ * @param priority - Prioridad (mayor = primero)
535
+ *
536
+ * @example
537
+ * logger.addSerializer(Error, (err) => ({
538
+ * name: err.name,
539
+ * message: err.message,
540
+ * stack: err.stack?.split('\n').slice(0, 5)
541
+ * }));
542
+ *
543
+ */
544
+ addSerializer<T>(type: new (...args: unknown[]) => T, serializer: SerializerFn<T>, priority?: number): void;
545
+ /**
546
+ * Elimina un serializador registrado
547
+ *
548
+ * @param type - Constructor del tipo a remover
549
+ * @returns true si se eliminó
550
+ *
551
+ */
552
+ removeSerializer<T>(type: new (...args: unknown[]) => T): boolean;
553
+ /**
554
+ * Obtiene el registry de serializadores
386
555
  *
387
- * @returns {ExportLogHandler | undefined} Handler de exportación o undefined
388
- * @since 0.3.0
556
+ * @returns SerializerRegistry
389
557
  */
390
- getExportHandler(): ExportLogHandler | undefined;
558
+ getSerializerRegistry(): SerializerRegistry;
391
559
  /**
392
- * Verifica si un nivel de log debe mostrarse según la verbosidad actual
560
+ * Registra un hook para un evento
561
+ *
562
+ * @param event - Evento: 'beforeLog' | 'afterLog' | 'onError'
563
+ * @param callback - Función a ejecutar
564
+ * @param priority - Prioridad (mayor = primero)
565
+ * @returns Función para desregistrar
566
+ *
567
+ * @example
568
+ * const unsubscribe = logger.on('beforeLog', (entry) => {
569
+ * entry.correlationId = getCorrelationId();
570
+ * return entry;
571
+ * });
572
+ *
573
+ */
574
+ on(event: HookEvent, callback: HookCallback, priority?: number): () => void;
575
+ /**
576
+ * Registra un hook que se ejecuta solo una vez
577
+ *
578
+ * @param event - Evento: 'beforeLog' | 'afterLog' | 'onError'
579
+ * @param callback - Función a ejecutar
580
+ * @param priority - Prioridad (mayor = primero)
581
+ * @returns Función para desregistrar
582
+ *
583
+ */
584
+ once(event: HookEvent, callback: HookCallback, priority?: number): () => void;
585
+ /**
586
+ * Elimina un hook registrado
587
+ *
588
+ * @param event - Evento del hook
589
+ * @param callback - Callback a remover
590
+ * @returns true si se eliminó
591
+ *
592
+ */
593
+ off(event: HookEvent, callback: HookCallback): boolean;
594
+ /**
595
+ * Añade un middleware al pipeline
596
+ *
597
+ * @param middleware - Función middleware
598
+ * @param priority - Prioridad (mayor = primero)
599
+ * @returns Función para desregistrar
600
+ *
601
+ * @example
602
+ * logger.use((entry, next) => {
603
+ * entry.requestId = asyncLocalStorage.getStore()?.requestId;
604
+ * next();
605
+ * });
606
+ *
607
+ */
608
+ use(middleware: MiddlewareFn, priority?: number): () => void;
609
+ /**
610
+ * Obtiene el HookManager
611
+ *
612
+ * @returns HookManager
613
+ */
614
+ getHookManager(): HookManager;
615
+ /**
616
+ * Añade un transport para envío de logs
617
+ *
618
+ * @param target - Configuración del transport
619
+ * @returns ID único del transport
620
+ *
621
+ * @example
622
+ * // File transport
623
+ * logger.addTransport({
624
+ * target: 'file',
625
+ * options: { destination: '/var/log/app.log' }
626
+ * });
627
+ *
628
+ * @example
629
+ * // HTTP transport con batching
630
+ * logger.addTransport({
631
+ * target: 'http',
632
+ * options: {
633
+ * url: 'https://logs.example.com',
634
+ * batchSize: 100,
635
+ * flushInterval: 5000
636
+ * },
637
+ * level: 'warn'
638
+ * });
639
+ *
640
+ */
641
+ addTransport(target: TransportTarget): string;
642
+ /**
643
+ * Elimina un transport
644
+ *
645
+ * @param id - ID del transport a remover
646
+ * @returns true si se eliminó
647
+ *
648
+ */
649
+ removeTransport(id: string): boolean;
650
+ /**
651
+ * Fuerza el flush de todos los transports
652
+ *
653
+ * @returns Promise que resuelve cuando todos los buffers están vaciados
654
+ *
655
+ */
656
+ flushTransports(): Promise<void>;
657
+ /**
658
+ * Cierra todos los transports
659
+ *
660
+ * @returns Promise que resuelve cuando todos están cerrados
661
+ *
662
+ */
663
+ closeTransports(): Promise<void>;
664
+ /**
665
+ * Obtiene el TransportManager
666
+ *
667
+ * @returns TransportManager o undefined si no hay transports
668
+ */
669
+ getTransportManager(): TransportManager | undefined;
670
+ /**
671
+ * Verifica si un nivel de log debe mostrarse según la verbosidad actual.
393
672
  * @private
394
673
  * @param {LogLevel} level - Nivel de log a verificar
395
674
  * @returns {boolean} True si debe mostrarse, false si no
396
675
  */
397
676
  private shouldLog;
677
+ /**
678
+ * Tag pendiente de inyectar en el siguiente `TransportRecord` emitido
679
+ * por `log()`. Lo fijan `success()` y `logWithBindingsAndTag()` antes
680
+ * de delegar; `log()` lo consume y lo resetea a `undefined`.
681
+ *
682
+ * @internal
683
+ */
684
+ protected _dispatchTag: string | undefined;
685
+ /**
686
+ * Computa el contexto completamente mergueado para este logger.
687
+ *
688
+ * La cadena de contexto se construye en el momento de crear el child:
689
+ * cada child almacena el contexto fully-merged de su parent (en ese
690
+ * instante) como `_parentContextRecord`. Esto implica que
691
+ * `_parentContextRecord` ya contiene los bindings de todos los ancestros
692
+ * en el orden de precedencia correcto (root primero, child más cercano al final).
693
+ *
694
+ * Orden de merge (gana el último):
695
+ * 1. _parentContextRecord — snapshot del contexto mergueado del parent en la creación
696
+ * 2. _bindings — bindings propios de este logger (llamadas a `child()`)
697
+ * 3. ALS store — scope de `withContext`/`withContextAsync` (prioridad máxima)
698
+ *
699
+ * @internal
700
+ * @returns El record de contexto mergueado
701
+ */
702
+ private _getMergedContext;
703
+ /** @internal Expone el contexto base mergueado (sin ALS) a la closure de la child factory de LogContext. */
704
+ _captureMergedContext(): Record<string, unknown>;
705
+ /**
706
+ * Construye y despacha un `TransportRecord` al {@link TransportManager}
707
+ * (no-op si no hay transports registrados). Lo comparten todos los
708
+ * caminos de log — `log()`, `success()` y los métodos visuales como
709
+ * `table()` / `group()` / `time()` — para que toda emisión atraviese
710
+ * el mismo pipeline de transports.
711
+ *
712
+ * @protected
713
+ * @param {LogLevel} level - Nivel canónico (trace/debug/info/warn/error/critical)
714
+ * @param {string} message - Mensaje final, post-hook
715
+ * @param {string | undefined} prefix - Prefijo efectivo (global + scope)
716
+ * @param {StackInfo | null} stackInfo - Ubicación del caller, opcional
717
+ * @param {Partial<TransportRecord>} [extra] - Campos extra a mergear en el record
718
+ * (p.ej. `{ tag: 'success' }` o `attributes` adicionales)
719
+ */
720
+ protected dispatchToTransports(level: LogLevel, message: string, prefix: string | undefined, stackInfo: StackInfo | null, extra?: Partial<TransportRecord>): void;
398
721
  /**
399
722
  * Obtiene el prefijo efectivo (global + scope)
400
723
  * @private
@@ -402,149 +725,174 @@ export declare class Logger {
402
725
  */
403
726
  private getEffectivePrefix;
404
727
  /**
405
- * Método central de logging que maneja estilos y formato
728
+ * Método central de logging. Espera el hook pipeline `beforeLog`
729
+ * antes de despachar a consola y transports, para que redacciones
730
+ * o enriquecimientos (PII, correlation IDs) se reflejen en el
731
+ * mensaje emitido.
732
+ *
733
+ * Los callers fire-and-forget (p.ej. `logger.info(...)` sin `await`)
734
+ * siguen funcionando: el `Promise<void>` resultante se descarta.
735
+ * Se recomienda `await` cuando los hooks `beforeLog` mutan `message`.
736
+ *
737
+ * El tag opcional (`TransportRecord.tag`) NO se pasa como argumento:
738
+ * se establece vía `_dispatchTag` (ver `success()` y
739
+ * {@link logWithBindingsAndTag}) antes de invocar este método.
740
+ *
406
741
  * @protected
407
742
  * @param {LogLevel} level - Nivel del log
408
- * @param {...any} args - Argumentos a loggear
743
+ * @param {unknown[]} args - Argumentos a loggear (mensaje + datos)
744
+ * @returns {Promise<void>} Promesa que resuelve al completar el dispatch
745
+ *
409
746
  */
410
- protected log(level: LogLevel, ...args: any[]): void;
747
+ protected log(level: LogLevel, ...args: unknown[]): Promise<void>;
411
748
  /**
412
- * Registra información de debug (prioridad más baja)
749
+ * Emite un log aplicando bindings (badges, scope) al prefijo del
750
+ * mensaje antes de delegar en {@link Logger.log}.
413
751
  *
414
- * @param {...any} args - Mensajes y datos a loggear
752
+ * No es API pública de consumo: existe para que `ScopedLogger`
753
+ * (`component()` / `api()` / `scope()`) pueda reutilizar el pipeline
754
+ * central de `log()` sin duplicar la lógica de styling/badges.
415
755
  *
416
- * @example
417
- * logger.debug('Variable estado:', { usuario: 'Juan', activo: true });
418
- * logger.debug('Iniciando proceso de validación');
756
+ * @internal
757
+ * @param {Bindings} bindings - Bindings de scope (badges, scope name, ...)
758
+ * @param {LogLevel} level - Nivel de log
759
+ * @param {unknown[]} args - Argumentos a loggear
760
+ * @returns {Promise<void>} Promesa del dispatch
419
761
  *
420
- * @since 0.3.0
762
+ * @see {@link logWithBindingsAndTag} para la variante con `tag`
763
+ */
764
+ logWithBindings(bindings: Bindings, level: LogLevel, ...args: unknown[]): Promise<void>;
765
+ /**
766
+ * Como {@link logWithBindings} pero fija `_dispatchTag` antes de
767
+ * delegar, para que `log()` despache el `TransportRecord` con el
768
+ * tag indicado. Lo usa `ScopedLogger.success()` para propagar
769
+ * `tag: 'success'` a través del pipeline normal de `log()`.
770
+ *
771
+ * @internal
772
+ * @param {Bindings} bindings - Bindings de scope (badges, scope name, ...)
773
+ * @param {LogLevel} level - Nivel de log
774
+ * @param {LogTag} tag - Tag a inyectar en el `TransportRecord`
775
+ * @param {unknown[]} args - Argumentos a loggear
776
+ * @returns {Promise<void>} Promesa del dispatch
421
777
  */
422
- debug(...args: any[]): void;
778
+ logWithBindingsAndTag(bindings: Bindings, level: LogLevel, tag: LogTag, ...args: unknown[]): Promise<void>;
423
779
  /**
424
- * Registra mensajes informativos
780
+ * Registra mensajes de debug (nivel más verboso junto a `trace`).
781
+ * Pensado para diagnóstico de desarrollo: valores intermedios, flags
782
+ * de control flow, estado interno. Devuelve `Promise<void>`.
783
+ *
784
+ * Filtrado por defecto cuando `verbosity > 'debug'` (ver `setVerbosity`).
425
785
  *
426
- * @param {...any} args - Mensajes y datos informativos
786
+ * @param {unknown[]} args - Mensaje + datos a inspeccionar
787
+ * @returns {Promise<void>} Promesa del dispatch
427
788
  *
428
789
  * @example
429
- * logger.info('Servidor iniciado en puerto 3000');
430
- * logger.info('Usuario conectado:', userId);
431
- * logger.info('Procesando', totalItems, 'elementos');
790
+ * logger.debug('Estado interno:', { conn, queueSize });
791
+ * logger.debug('Entrando en branch X');
432
792
  *
433
- * @since 0.3.0
793
+ * @see {@link trace} para diagnósticos aún más granulares
794
+ * @see {@link setVerbosity} para controlar el nivel mínimo visible
434
795
  */
435
- info(...args: any[]): void;
796
+ debug(...args: unknown[]): Promise<void>;
436
797
  /**
437
- * Registra mensajes de advertencia
798
+ * Registra mensajes informativos. El `await` retorna cuando el hook
799
+ * `beforeLog` y el dispatch a transports han terminado.
438
800
  *
439
- * @param {...any} args - Mensajes de advertencia
801
+ * @param args - Mensajes y datos informativos
440
802
  *
441
803
  * @example
442
- * logger.warn('Memoria al 85% de capacidad');
443
- * logger.warn('API deprecada, usar v2');
444
- * logger.warn('Reintentos agotados:', maxRetries);
804
+ * logger.info('Servidor iniciado en puerto 3000');
805
+ * await logger.info('Procesando', totalItems, 'elementos'); // espera hooks
445
806
  *
446
- * @since 0.3.0
447
807
  */
448
- warn(...args: any[]): void;
808
+ info(...args: unknown[]): Promise<void>;
449
809
  /**
450
- * Registra mensajes de error
810
+ * Registra mensajes de advertencia.
451
811
  *
452
- * @param {...any} args - Mensajes de error y stack traces
812
+ * @param args - Mensajes de advertencia
453
813
  *
454
- * @example
455
- * logger.error('Fallo en conexión a base de datos');
456
- * logger.error('Error al procesar:', error.message, error.stack);
457
- * logger.error('Código de error:', errorCode);
814
+ */
815
+ warn(...args: unknown[]): Promise<void>;
816
+ /**
817
+ * Registra mensajes de error.
818
+ *
819
+ * @param args - Mensaje de error y stack traces
458
820
  *
459
- * @since 0.3.0
460
821
  */
461
- error(...args: any[]): void;
822
+ error(...args: unknown[]): Promise<void>;
462
823
  /**
463
- * Registra mensajes de éxito (nivel info especial)
824
+ * Registra mensajes de éxito. Mapeado internamente a nivel `info` con
825
+ * styling de success y `record.tag = 'success'` para que los transports
826
+ * puedan distinguirlo (sin perder info semantics para filtering).
464
827
  *
465
- * @param {...any} args - Mensajes de operaciones exitosas
828
+ * @param args - Mensaje + datos adicionales
466
829
  *
467
830
  * @example
468
831
  * logger.success('Base de datos conectada');
469
832
  * logger.success('Usuario creado con ID:', userId);
470
833
  * logger.success('✓ Tests pasados: 42/42');
471
834
  *
472
- * @since 0.3.0
473
835
  */
474
- success(...args: any[]): void;
836
+ success(...args: unknown[]): Promise<void>;
475
837
  /**
476
- * Registra información de trace (debugging detallado)
838
+ * Registra información de trace (nivel más bajo, debajo de debug).
839
+ * Alineado con OpenTelemetry `TRACE` severity (1-4).
477
840
  *
478
- * @param {...any} args - Datos detallados para debugging
841
+ * @param args - Datos muy verbosos (entrada/salida de funciones, valores intermedios)
479
842
  *
480
843
  * @example
481
844
  * logger.trace('Entrando en función processData');
482
- * logger.trace('Stack completo:', new Error().stack);
845
+ * logger.trace('Variables intermedias:', { a, b, c });
483
846
  *
484
- * @since 0.3.0
485
847
  */
486
- trace(...args: any[]): void;
848
+ trace(...args: unknown[]): void;
487
849
  /**
488
- * Registra errores críticos (prioridad más alta)
850
+ * Registra errores críticos (prioridad más alta).
489
851
  *
490
- * @param {...any} args - Errores críticos del sistema
852
+ * @param args - Errores críticos del sistema
491
853
  *
492
854
  * @example
493
- * logger.critical('Sistema caído - reinicio inmediato requerido');
494
- * logger.critical('Pérdida de datos detectada');
495
- * logger.critical('Brecha de seguridad:', securityError);
855
+ * await logger.critical('Sistema caído - reinicio inmediato requerido');
496
856
  *
497
- * @since 0.3.0
498
857
  */
499
- critical(...args: any[]): void;
858
+ critical(...args: unknown[]): Promise<void>;
500
859
  /**
501
- * Muestra datos en formato de tabla
860
+ * Muestra datos en formato de tabla. Pasa por la pipeline completa
861
+ * (outputMode-respecting writeOutput + transports + hooks).
502
862
  *
503
- * @param {any} data - Datos a mostrar (array de objetos o matriz)
504
- * @param {string[]} columns - Columnas específicas a mostrar (opcional)
863
+ * @param data - Array de objetos o matriz
864
+ * @param columns - Columnas específicas a mostrar (opcional)
505
865
  *
506
866
  * @example
507
- * const usuarios = [
508
- * { id: 1, nombre: 'Juan', edad: 30 },
509
- * { id: 2, nombre: 'María', edad: 25 }
510
- * ];
511
- * logger.table(usuarios);
512
- * logger.table(usuarios, ['nombre', 'edad']); // Solo estas columnas
867
+ * logger.table([{ id: 1, nombre: 'Juan' }, { id: 2, nombre: 'María' }]);
513
868
  *
514
- * @since 0.3.0
515
869
  */
516
- table(data: any, columns?: string[]): void;
870
+ table(data: unknown, columns?: string[]): void;
517
871
  /**
518
- * Inicia un grupo colapsable en la consola
872
+ * Inicia un grupo colapsable en la consola. Emite un marker a
873
+ * transports con `attributes.logger.visual = 'groupStart'` para que
874
+ * backends puedan reconstruir la jerarquía.
519
875
  *
520
- * @param {string} label - Etiqueta del grupo
521
- * @param {boolean} collapsed - Si el grupo inicia colapsado (default: false)
876
+ * @param label - Etiqueta del grupo
877
+ * @param collapsed - Si el grupo inicia colapsado (default: false)
522
878
  *
523
879
  * @example
524
880
  * logger.group('Procesando usuarios');
525
881
  * logger.info('Usuario 1 procesado');
526
- * logger.info('Usuario 2 procesado');
527
- * logger.groupEnd();
528
- *
529
- * @example
530
- * // Grupo colapsado por defecto
531
- * logger.group('Detalles adicionales', true);
532
- * logger.debug('Información detallada aquí');
533
882
  * logger.groupEnd();
534
883
  *
535
- * @since 0.3.0
536
884
  */
537
885
  group(label: string, collapsed?: boolean): void;
538
886
  /**
539
- * Finaliza el grupo actual de la consola
887
+ * Finaliza el grupo actual de la consola. Emite un marker a transports
888
+ * simétrico al `group()` start, para que backends puedan cerrar la
889
+ * jerarquía correctamente.
540
890
  *
541
891
  * @example
542
892
  * logger.group('Operaciones');
543
893
  * logger.info('Operación 1');
544
- * logger.info('Operación 2');
545
- * logger.groupEnd(); // Cierra el grupo
894
+ * logger.groupEnd();
546
895
  *
547
- * @since 0.3.0
548
896
  */
549
897
  groupEnd(): void;
550
898
  /**
@@ -557,22 +905,21 @@ export declare class Logger {
557
905
  * // ... operación costosa ...
558
906
  * logger.timeEnd('proceso-datos'); // ⏱️ Timer ended: proceso-datos - 1523.45ms
559
907
  *
560
- * @since 0.3.0
561
908
  */
562
909
  time(label: string): void;
563
910
  /**
564
911
  * Finaliza un temporizador y muestra el tiempo transcurrido
565
912
  *
566
913
  * @param {string} label - Etiqueta del temporizador a finalizar
914
+ * @returns {number} Milisegundos transcurridos, o `-1` si no se encuentra el timer
567
915
  *
568
916
  * @example
569
917
  * logger.time('consulta-db');
570
918
  * await consultarBaseDatos();
571
- * logger.timeEnd('consulta-db'); // ⏱️ Timer ended: consulta-db - 234.56ms
919
+ * const elapsed = logger.timeEnd('consulta-db'); // ⏱️ Timer ended: consulta-db - 234.56ms
572
920
  *
573
- * @since 0.3.0
574
921
  */
575
- timeEnd(label: string): void;
922
+ timeEnd(label: string): number;
576
923
  /**
577
924
  * Muestra un banner con el tipo especificado o configurado
578
925
  *
@@ -584,7 +931,6 @@ export declare class Logger {
584
931
  * logger.showBanner('svg'); // Banner con gráfico SVG
585
932
  * logger.showBanner(); // Usa el tipo configurado
586
933
  *
587
- * @since 0.3.0
588
934
  */
589
935
  showBanner(bannerType?: BannerType): void;
590
936
  /**
@@ -603,7 +949,6 @@ export declare class Logger {
603
949
  * const customSVG = '<svg>...</svg>';
604
950
  * logger.logWithSVG('Logo', customSVG, { width: 400, height: 100 });
605
951
  *
606
- * @since 0.3.0
607
952
  */
608
953
  logWithSVG(message: string, svgContent?: string, options?: StyleOptions): void;
609
954
  /**
@@ -616,26 +961,117 @@ export declare class Logger {
616
961
  * logger.logAnimated('🌈 Animación en progreso');
617
962
  * logger.logAnimated('Cargando...', 5); // Animación de 5 segundos
618
963
  *
619
- * @since 0.3.0
620
964
  */
621
965
  logAnimated(message: string, duration?: number): void;
622
966
  /**
623
- * Agrupa logs por una propiedad específica usando Object.groupBy (cuando esté disponible)
967
+ * Muestra un indicador de progreso de pasos en la terminal
968
+ *
969
+ * @param {number} current - Número de paso actual
970
+ * @param {number} total - Número total de pasos
971
+ * @param {string} message - Descripción del paso
972
+ *
973
+ * @example
974
+ * logger.step(1, 5, 'Analyzing repository...');
975
+ * logger.step(2, 5, 'Generating commit message...');
976
+ *
977
+ */
978
+ step(current: number, total: number, message: string): void;
979
+ /**
980
+ * Muestra un header con estilo y subtítulo opcional
981
+ *
982
+ * @param {string} title - Texto del título principal
983
+ * @param {string} subtitle - Subtítulo opcional (se renderiza atenuado)
984
+ *
985
+ * @example
986
+ * logger.header('Commit Wizard', 'v2.0.0');
987
+ *
988
+ */
989
+ header(title: string, subtitle?: string): void;
990
+ /**
991
+ * Muestra una línea divisoria horizontal
992
+ *
993
+ * @example
994
+ * logger.divider();
995
+ *
996
+ */
997
+ divider(): void;
998
+ /**
999
+ * Emite una línea en blanco
1000
+ *
1001
+ * @example
1002
+ * logger.blank();
1003
+ *
1004
+ */
1005
+ blank(): void;
1006
+ /**
1007
+ * Renderiza contenido dentro de un box con borde
1008
+ *
1009
+ * @param {string} content - String de contenido (puede contener newlines)
1010
+ * @param {IBoxOptions} options - Opciones de renderizado del box
1011
+ *
1012
+ * @example
1013
+ * logger.box('3 commits generated\nProvider: Groq', { title: 'Done', borderColor: '#00ff00' });
1014
+ *
1015
+ */
1016
+ box(content: string, options?: IBoxOptions): void;
1017
+ /**
1018
+ * Renderiza un array de objetos como una tabla ASCII formateada.
1019
+ * Distinto del método `table()` existente, que usa `console.table`.
1020
+ *
1021
+ * @param {Record<string, unknown>[]} rows - Array de objetos fila
1022
+ * @param {ITableOptions} options - Opciones de renderizado de la tabla
1023
+ *
1024
+ * @example
1025
+ * logger.cliTable([
1026
+ * { provider: 'Groq', status: 'Available', model: 'llama-3.3-70b' },
1027
+ * { provider: 'Gemini', status: 'Configured', model: 'gemini-2.5-flash' },
1028
+ * ]);
1029
+ *
1030
+ */
1031
+ cliTable(rows: Record<string, unknown>[], options?: ITableOptions): void;
1032
+ /**
1033
+ * Crea un handle de spinner para mostrar progreso durante operaciones async.
1034
+ * Devuelve un `NoopSpinner` en entornos non-TTY.
1035
+ *
1036
+ * @param {string} message - Texto inicial del spinner
1037
+ * @returns {ISpinnerHandle} Controller del spinner
1038
+ *
1039
+ * @example
1040
+ * const s = logger.spinner('Analyzing repository...');
1041
+ * s.start();
1042
+ * await analyzeRepo();
1043
+ * s.succeed('Analysis complete (1.2s)');
1044
+ *
1045
+ */
1046
+ spinner(message: string): ISpinnerHandle;
1047
+ /**
1048
+ * Fija el nivel de verbosidad del CLI, controlando a la vez la verbosidad
1049
+ * de logs y la visibilidad de las primitives
624
1050
  *
625
- * @param {T[]} items - Array de elementos a agrupar
626
- * @param {Function} groupBy - Función que retorna la clave de agrupación
1051
+ * @param {CLILogLevel} level - Nivel de log del CLI
627
1052
  *
628
1053
  * @example
629
- * const ventas = [
630
- * { producto: 'Laptop', categoria: 'Electrónica', precio: 1200 },
631
- * { producto: 'Mouse', categoria: 'Electrónica', precio: 25 },
632
- * { producto: 'Libro', categoria: 'Literatura', precio: 15 }
633
- * ];
634
- * logger.logGrouped(ventas, item => item.categoria);
1054
+ * logger.setCLILevel('quiet'); // Solo errors, sin CLI primitives
1055
+ * logger.setCLILevel('verbose'); // Debug logs + todas las CLI primitives
635
1056
  *
636
- * @since 0.3.0
637
1057
  */
638
- logGrouped<T>(items: T[], groupBy: (item: T) => string): void;
1058
+ setCLILevel(level: CLILogLevel): void;
1059
+ /**
1060
+ * Devuelve el nivel de log del CLI actual
1061
+ * @returns {CLILogLevel} Nivel de log del CLI actual
1062
+ */
1063
+ get cliLevel(): CLILogLevel;
1064
+ /**
1065
+ * Escribe output formateado al destino configurado.
1066
+ * Respeta la configuración `outputMode` para output a consola, silencioso o custom.
1067
+ *
1068
+ * @private
1069
+ * @param {string} message - Mensaje de log formateado
1070
+ * @param {LogLevel} level - Nivel de log
1071
+ * @param {string[]} styles - Estilos CSS para la consola del navegador
1072
+ * @param {unknown[]} additionalArgs - Argumentos adicionales a loggear
1073
+ */
1074
+ private writeOutput;
639
1075
  /**
640
1076
  * Procesador de comandos CLI para configuración y exportación del logger
641
1077
  *
@@ -653,33 +1089,43 @@ export declare class Logger {
653
1089
  * await logger.cli('status'); // Muestra estado del logger
654
1090
  * await logger.cli('help'); // Muestra ayuda de comandos
655
1091
  *
656
- * @since 0.3.0
657
1092
  */
658
1093
  cli(command: string): Promise<void>;
659
1094
  }
660
1095
  /**
661
- * Instancia singleton del logger con configuración por defecto
662
- * @constant {Logger}
1096
+ * Resetea el singleton por defecto. Limpia la instancia cacheada para que la
1097
+ * próxima llamada a `getDefaultLogger()` la reconstruya desde defaults. Útil
1098
+ * para tests y escenarios de hot reload.
1099
+ *
1100
+ */
1101
+ export declare function resetDefaultLogger(): void;
1102
+ /**
1103
+ * Lazy default export — every property access defers to `getDefaultLogger()`.
1104
+ * Sin side-effects al importar el módulo (la primera llamada al singleton
1105
+ * se produce en el primer acceso a una propiedad, no en el `import`).
1106
+ *
1107
+ * @example
1108
+ * import logger from 'better-logger';
1109
+ * logger.info('hello'); // first call here triggers singleton init
663
1110
  */
664
- declare const defaultLogger: Logger;
665
- export default defaultLogger;
1111
+ declare const loggerProxy: Logger;
1112
+ export default loggerProxy;
666
1113
  /**
667
1114
  * Métodos individuales exportados para conveniencia
668
- * @description Todos los métodos están correctamente enlazados al singleton
669
- * @since 0.3.0
1115
+ * @description Todos los métodos están correctamente enlazados al singleton lazy
670
1116
  */
671
- export declare const debug: (...args: any[]) => void;
672
- export declare const info: (...args: any[]) => void;
673
- export declare const warn: (...args: any[]) => void;
674
- export declare const error: (...args: any[]) => void;
675
- export declare const success: (...args: any[]) => void;
676
- export declare const trace: (...args: any[]) => void;
677
- export declare const critical: (...args: any[]) => void;
678
- export declare const table: (data: any, columns?: string[]) => void;
1117
+ export declare const debug: (...args: unknown[]) => Promise<void>;
1118
+ export declare const info: (...args: unknown[]) => Promise<void>;
1119
+ export declare const warn: (...args: unknown[]) => Promise<void>;
1120
+ export declare const error: (...args: unknown[]) => Promise<void>;
1121
+ export declare const success: (...args: unknown[]) => Promise<void>;
1122
+ export declare const trace: (...args: unknown[]) => void;
1123
+ export declare const critical: (...args: unknown[]) => Promise<void>;
1124
+ export declare const table: (data: unknown, columns?: string[]) => void;
679
1125
  export declare const group: (label: string, collapsed?: boolean) => void;
680
1126
  export declare const groupEnd: () => void;
681
1127
  export declare const time: (label: string) => void;
682
- export declare const timeEnd: (label: string) => void;
1128
+ export declare const timeEnd: (label: string) => number;
683
1129
  export declare const setGlobalPrefix: (prefix: string) => void;
684
1130
  export declare const setVerbosity: (level: Verbosity) => void;
685
1131
  export declare const addHandler: (handler: ILogHandler) => void;
@@ -689,20 +1135,34 @@ export declare const showBanner: (bannerType?: BannerType) => void;
689
1135
  export declare const logWithSVG: (message: string, svgContent?: string, options?: StyleOptions) => void;
690
1136
  export declare const logAnimated: (message: string, duration?: number) => void;
691
1137
  export declare const cli: (command: string) => Promise<void>;
692
- export declare const cleanup: () => void;
1138
+ export declare const cleanup: () => Promise<void>;
693
1139
  export declare const preset: (name: string) => void;
694
1140
  export declare const presets: () => string[];
695
- export declare const hideTimestamp: () => void;
696
- export declare const showTimestamp: () => void;
697
- export declare const hideLocation: () => void;
698
- export declare const showLocation: () => void;
699
- export declare const hideBadges: () => void;
700
- export declare const showBadges: () => void;
701
- export declare const component: (name: string) => any;
702
- export declare const api: (name: string) => any;
703
- export declare const scope: (name: string) => any;
704
- export declare const customize: (overrides: any) => void;
705
- export declare const styles: () => any;
706
- export { FileLogHandler, RemoteLogHandler, AnalyticsLogHandler, ExportLogHandler } from './handlers/index.js';
1141
+ export declare const hideTimestamp: () => Logger;
1142
+ export declare const showTimestamp: () => Logger;
1143
+ export declare const hideLocation: () => Logger;
1144
+ export declare const showLocation: () => Logger;
1145
+ export declare const hideBadges: () => Logger;
1146
+ export declare const showBadges: () => Logger;
1147
+ export declare const badges: (badgeList: string[]) => Logger;
1148
+ export declare const badge: (badgeName: string) => Logger;
1149
+ export declare const clearBadges: () => Logger;
1150
+ export declare const component: (name: string) => ComponentLogger;
1151
+ export declare const api: (name: string) => APILogger;
1152
+ export declare const scope: (name: string) => ScopedLogger;
1153
+ export declare const customize: (overrides: Parameters<Logger["customize"]>[0]) => void;
1154
+ export declare const addSerializer: <T>(type: new (...args: unknown[]) => T, serializer: SerializerFn<T>, priority?: number) => void;
1155
+ export declare const removeSerializer: <T>(type: new (...args: unknown[]) => T) => boolean;
1156
+ export declare const on: (event: HookEvent, callback: HookCallback, priority?: number) => () => void;
1157
+ export declare const once: (event: HookEvent, callback: HookCallback, priority?: number) => () => void;
1158
+ export declare const off: (event: HookEvent, callback: HookCallback) => boolean;
1159
+ export declare const use: (middleware: MiddlewareFn, priority?: number) => () => void;
1160
+ export declare const addTransport: (target: TransportTarget) => string;
1161
+ export declare const removeTransport: (id: string) => boolean;
1162
+ export declare const flushTransports: () => Promise<void>;
1163
+ export declare const closeTransports: () => Promise<void>;
707
1164
  export { StyleBuilder, StylePresets as Styles } from './styling/index.js';
1165
+ export { SerializerRegistry } from './serializers/index.js';
1166
+ export { HookManager } from './hooks/index.js';
1167
+ export { TransportManager, ConsoleTransport, FileTransport, HttpTransport } from './transports/index.js';
708
1168
  //# sourceMappingURL=Logger.d.ts.map