@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
@@ -0,0 +1,113 @@
1
+ import { n as getSmartPreset, r as hasPreset, s as THEME_PRESETS, t as getAvailablePresets } from "./styling-CRw3KQW4.js";
2
+ //#region src/styles/StyleManager.ts
3
+ /**
4
+ * @fileoverview StyleManager — gestión de presets de estilo y display settings.
5
+ *
6
+ * Encapsula el tracking del preset activo, los toggles de visibilidad del
7
+ * output (timestamp, location, badges) y la variable de módulo
8
+ * {@link LEVEL_STYLES}. El Logger delega en este bridge la resolución de
9
+ * estilos y los cambios de theme para mantener sincronizado el estado
10
+ * compartido a nivel módulo.
11
+ */
12
+ function createDefaultDisplaySettings() {
13
+ return {
14
+ showTimestamp: true,
15
+ showLocation: true,
16
+ showBadges: true
17
+ };
18
+ }
19
+ /**
20
+ * Crea una instancia de {@link StyleManager} con display settings por defecto
21
+ * (o los overrides que se pasen en `options`).
22
+ *
23
+ * Cada instancia mantiene su propio estado de preset/customization/display,
24
+ * pero la backing store de estilos activos ({@link LEVEL_STYLES}) es
25
+ * module-scoped: dos StyleManagers comparten la misma vista de LEVEL_STYLES.
26
+ *
27
+ * @param options - Overrides opcionales para los display settings iniciales.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const sm = createStyleManager({
32
+ * initialDisplaySettings: { showTimestamp: false, showBadges: true }
33
+ * });
34
+ *
35
+ * sm.applyPreset('cyberpunk'); // aplica preset + ajusta toggles
36
+ * sm.setTheme('dark'); // muta LEVEL_STYLES (global al módulo)
37
+ * console.log(sm.getStyles()); // lee el LEVEL_STYLES vigente
38
+ * ```
39
+ *
40
+ * @see {@link StyleManager} para el contrato completo del bridge.
41
+ */
42
+ function createStyleManager(options = {}) {
43
+ const displaySettings = createDefaultDisplaySettings();
44
+ let activePreset;
45
+ let activePresetName;
46
+ let customization;
47
+ return {
48
+ getDisplaySettings() {
49
+ return { ...displaySettings };
50
+ },
51
+ applyPreset(name) {
52
+ if (!hasPreset(name)) return false;
53
+ const presetConfig = getSmartPreset(name);
54
+ if (presetConfig) {
55
+ displaySettings.showTimestamp = presetConfig.timestamp?.show ?? true;
56
+ displaySettings.showLocation = presetConfig.location?.show ?? true;
57
+ activePreset = presetConfig;
58
+ activePresetName = name;
59
+ }
60
+ return true;
61
+ },
62
+ getAvailablePresets() {
63
+ return getAvailablePresets();
64
+ },
65
+ getStyles() {
66
+ return LEVEL_STYLES;
67
+ },
68
+ getActivePreset() {
69
+ return activePreset;
70
+ },
71
+ getActivePresetName() {
72
+ return activePresetName;
73
+ },
74
+ getCustomization() {
75
+ return customization;
76
+ },
77
+ setCustomization(overrides) {
78
+ customization = overrides;
79
+ },
80
+ resolveThemeStyle(theme) {
81
+ if (theme in THEME_PRESETS) return THEME_PRESETS[theme] ?? THEME_PRESETS.default;
82
+ return THEME_PRESETS.default;
83
+ },
84
+ setTheme(theme) {
85
+ if (theme in THEME_PRESETS) {
86
+ const newStyles = THEME_PRESETS[theme];
87
+ if (newStyles) {
88
+ LEVEL_STYLES = newStyles;
89
+ return true;
90
+ }
91
+ }
92
+ return false;
93
+ },
94
+ resetStyles() {
95
+ LEVEL_STYLES = THEME_PRESETS.default;
96
+ }
97
+ };
98
+ }
99
+ /**
100
+ * Variable de módulo con el set de estilos activo, compartida por todas las
101
+ * instancias de Logger/StyleManager que importan este módulo. Se exporta
102
+ * `let` para que el Logger la pueda leer directamente sin pasar por el bridge.
103
+ *
104
+ * **Mutadores**: {@link StyleManager.setTheme} y {@link StyleManager.resetStyles}
105
+ * (o el {@link resetStyles} exportado de este módulo) reasignan esta variable.
106
+ * Cualquier referencia capturada con anterioridad queda stale — siempre leer
107
+ * vía `LEVEL_STYLES` en punto de uso, no cacheandola.
108
+ */
109
+ let LEVEL_STYLES = THEME_PRESETS.default;
110
+ //#endregion
111
+ export { createStyleManager as t };
112
+
113
+ //# sourceMappingURL=StyleManager-DjwAYbxE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyleManager-DjwAYbxE.js","names":["themeRecord"],"sources":["../../src/styles/StyleManager.ts"],"sourcesContent":["/**\n * @fileoverview StyleManager — gestión de presets de estilo y display settings.\n *\n * Encapsula el tracking del preset activo, los toggles de visibilidad del\n * output (timestamp, location, badges) y la variable de módulo\n * {@link LEVEL_STYLES}. El Logger delega en este bridge la resolución de\n * estilos y los cambios de theme para mantener sincronizado el estado\n * compartido a nivel módulo.\n */\n\nimport {\n THEME_PRESETS,\n type StylePresets,\n type StyleBuilder\n} from '../styling/index.js';\nimport { getSmartPreset, getAvailablePresets, hasPreset } from '../styling/SmartPresets.js';\nimport type { ThemeVariant, LogStyles } from '../types/index.js';\n\n/**\n * Re-export de `StyleBuilder` para consumo interno del Logger dentro de este\n * paquete. La API pública de styling vive en `../styling/index.ts`; este\n * re-export existe únicamente para evitar un segundo import cruzado desde\n * Logger.ts. No considerar parte del surface público de este módulo.\n *\n * @internal\n */\nexport { StyleBuilder } from '../styling/index.js';\n\n/**\n * Toggles de visibilidad que controlan qué metadatos acompañan a cada línea\n * de log en la salida formateada. Cada preset inteligente\n * (via {@link StyleManager.applyPreset}) puede imponer sus propios defaults\n * sobreescribiendo estos valores.\n */\nexport interface DisplaySettings {\n /** Muestra (o no) el timestamp ISO al inicio de cada línea. */\n showTimestamp: boolean;\n /** Muestra (o no) la ubicación del caller (file:line) parseada del stack. */\n showLocation: boolean;\n /** Muestra (o no) los badges de scope/nivel junto al mensaje. */\n showBadges: boolean;\n}\n\n/**\n * Snapshot del estado interno que el StyleManager trackea en closure:\n * preset activo, overrides de `customize()` y display settings vigentes.\n * Útil para serializar/inspeccionar el estado de styling sin exponer la\n * implementación del bridge.\n */\nexport interface PresetState {\n /** Config de estilos resuelta (referencia a {@link LEVEL_STYLES}). */\n styles: typeof THEME_PRESETS.default;\n /** Config del smart-preset activo (si lo hay). */\n activePreset: unknown;\n /** Nombre del smart-preset activo (si lo hay). */\n activePresetName: string | undefined;\n /** Últimos overrides aplicados via `customize()`. */\n customization: unknown;\n /** Toggles de visibilidad del output. */\n displaySettings: DisplaySettings;\n}\n\n/**\n * Opciones de construcción para {@link createStyleManager}.\n */\nexport interface IStyleManagerOptions {\n /** Display settings iniciales (parciales: se merguean sobre los defaults). */\n initialDisplaySettings?: Partial<DisplaySettings>;\n}\n\n/**\n * Bridge que gestiona presets de estilo, display settings y el ciclo de\n * theme switching para un Logger.\n *\n * Encapsula el estado de styling en una closure para que el Logger no\n * tenga que mantener boilerplate propio. La implementación por defecto\n * (ver {@link createStyleManager}) opera sobre la variable de módulo\n * compartida {@link LEVEL_STYLES}: esto significa que `setTheme()` y\n * `resetStyles()` mutan estado global visible para TODAS las instancias\n * de Logger que comparten el módulo. Cada Logger construye su propio\n * StyleManager, pero la backing store de estilos activos es module-scoped\n * — está pensado así para que cambiar de theme una vez afecte a toda la\n * app, pero conviene saberlo al instanciar múltiples loggers con intents\n * distintos.\n */\nexport interface StyleManager {\n /**\n * Devuelve un shallow clone de los display settings vigentes, de modo\n * que el caller pueda leerlos sin riesgo de mutar el estado interno.\n */\n getDisplaySettings(): DisplaySettings;\n /**\n * Aplica un smart-preset por nombre. Si el preset existe, actualiza los\n * toggles de display (`showTimestamp`/`showLocation`) según la config\n * del preset y memoriza su nombre/config para que el renderer pueda\n * regenerar el output si cambia el theme.\n *\n * @param name - Identificador del preset (ver {@link getAvailablePresets}).\n * @returns `true` si el preset existe y se aplicó, `false` si no se encontró.\n */\n applyPreset(name: string): boolean;\n /**\n * Lista los identificadores de todos los smart-presets registrados.\n * Útil para alimentar un selector de UI o validar input de usuario.\n */\n getAvailablePresets(): string[];\n /**\n * Devuelve la referencia actual a {@link LEVEL_STYLES}. Como es\n * module-scoped, refleja el último `setTheme()`/`resetStyles()` aunque\n * provenga de otra instancia.\n */\n getStyles(): typeof THEME_PRESETS.default;\n /** Devuelve la config cruda del smart-preset activo (o `undefined`). */\n getActivePreset(): unknown;\n /** Nombre del smart-preset activo — útil para logging diagnóstico. */\n getActivePresetName(): string | undefined;\n /** Último override aplicado via `Logger.customize()` (si lo hubo). */\n getCustomization(): unknown;\n /**\n * Persiste overrides de customización para que el renderer los consuma\n * en el próximo render. No muta {@link LEVEL_STYLES}.\n */\n setCustomization(overrides: unknown): void;\n /**\n * Resuelve (sin mutar nada) el set de estilos que correspondería a un\n * theme dado. Si el theme no existe en {@link THEME_PRESETS}, cae al\n * preset `default`. Útil para previsualizar un theme sin aplicarlo.\n *\n * @param theme - Variante de theme soportada por {@link THEME_PRESETS}.\n */\n resolveThemeStyle(theme: ThemeVariant): typeof THEME_PRESETS.default;\n /**\n * Aplica el theme mutando la variable de módulo {@link LEVEL_STYLES}.\n *\n * **Side-effect global**: como `LEVEL_STYLES` se comparte entre todas\n * las instancias de Logger del módulo, este cambio es visible para\n * cualquier Logger que haya en el proceso. No hay undo a nivel\n * instancia — llamar a {@link resetStyles} para volver al default.\n *\n * @param theme - Variante de theme soportada por {@link THEME_PRESETS}.\n * @returns `true` si el theme existe y se aplicó, `false` si no se encontró.\n */\n setTheme(theme: ThemeVariant): boolean;\n /**\n * Restablece {@link LEVEL_STYLES} al preset `default` de\n * {@link THEME_PRESETS}. Al igual que {@link setTheme}, afecta a todas\n * las instancias de Logger del módulo.\n */\n resetStyles(): void;\n}\n\nfunction createDefaultDisplaySettings(): DisplaySettings {\n return {\n showTimestamp: true,\n showLocation: true,\n showBadges: true\n };\n}\n\n/**\n * Crea una instancia de {@link StyleManager} con display settings por defecto\n * (o los overrides que se pasen en `options`).\n *\n * Cada instancia mantiene su propio estado de preset/customization/display,\n * pero la backing store de estilos activos ({@link LEVEL_STYLES}) es\n * module-scoped: dos StyleManagers comparten la misma vista de LEVEL_STYLES.\n *\n * @param options - Overrides opcionales para los display settings iniciales.\n *\n * @example\n * ```ts\n * const sm = createStyleManager({\n * initialDisplaySettings: { showTimestamp: false, showBadges: true }\n * });\n *\n * sm.applyPreset('cyberpunk'); // aplica preset + ajusta toggles\n * sm.setTheme('dark'); // muta LEVEL_STYLES (global al módulo)\n * console.log(sm.getStyles()); // lee el LEVEL_STYLES vigente\n * ```\n *\n * @see {@link StyleManager} para el contrato completo del bridge.\n */\nexport function createStyleManager(options: IStyleManagerOptions = {}): StyleManager {\n const displaySettings = createDefaultDisplaySettings();\n let activePreset: unknown;\n let activePresetName: string | undefined;\n let customization: unknown;\n\n return {\n getDisplaySettings(): DisplaySettings {\n return { ...displaySettings };\n },\n\n applyPreset(name: string): boolean {\n if (!hasPreset(name)) {\n return false;\n }\n\n const presetConfig = getSmartPreset(name);\n if (presetConfig) {\n displaySettings.showTimestamp = presetConfig.timestamp?.show ?? true;\n displaySettings.showLocation = presetConfig.location?.show ?? true;\n activePreset = presetConfig;\n activePresetName = name;\n }\n return true;\n },\n\n getAvailablePresets(): string[] {\n return getAvailablePresets();\n },\n\n getStyles(): typeof THEME_PRESETS.default {\n return LEVEL_STYLES;\n },\n\n getActivePreset(): unknown {\n return activePreset;\n },\n\n getActivePresetName(): string | undefined {\n return activePresetName;\n },\n\n getCustomization(): unknown {\n return customization;\n },\n\n setCustomization(overrides: unknown): void {\n customization = overrides;\n },\n\n resolveThemeStyle(theme: ThemeVariant): typeof THEME_PRESETS.default {\n if (theme in THEME_PRESETS) {\n const themeRecord = THEME_PRESETS as unknown as Record<string, typeof LEVEL_STYLES>;\n return themeRecord[theme] ?? THEME_PRESETS.default;\n }\n return THEME_PRESETS.default;\n },\n\n setTheme(theme: ThemeVariant): boolean {\n if (theme in THEME_PRESETS) {\n const themeRecord = THEME_PRESETS as unknown as Record<string, typeof LEVEL_STYLES>;\n const newStyles = themeRecord[theme];\n if (newStyles) {\n LEVEL_STYLES = newStyles;\n return true;\n }\n }\n return false;\n },\n\n resetStyles(): void {\n LEVEL_STYLES = THEME_PRESETS.default;\n }\n };\n}\n\n/**\n * Variable de módulo con el set de estilos activo, compartida por todas las\n * instancias de Logger/StyleManager que importan este módulo. Se exporta\n * `let` para que el Logger la pueda leer directamente sin pasar por el bridge.\n *\n * **Mutadores**: {@link StyleManager.setTheme} y {@link StyleManager.resetStyles}\n * (o el {@link resetStyles} exportado de este módulo) reasignan esta variable.\n * Cualquier referencia capturada con anterioridad queda stale — siempre leer\n * vía `LEVEL_STYLES` en punto de uso, no cacheandola.\n */\nexport let LEVEL_STYLES: typeof THEME_PRESETS.default = THEME_PRESETS.default;\n\n/**\n * Restablece {@link LEVEL_STYLES} al preset `default` de {@link THEME_PRESETS}.\n *\n * Equivalente a invocar {@link StyleManager.resetStyles} sobre cualquier\n * instancia, expuesto como función libre para que código externo al Logger\n * (CLIs, tooling, tests) pueda resetear el módulo sin tener que sostener una\n * referencia al StyleManager. Mismo side-effect global que `setTheme`.\n *\n * @example\n * ```ts\n * import { resetStyles } from '@mks2508/better-logger/styles';\n * resetStyles(); // vuelve al theme default para todos los loggers del módulo\n * ```\n */\nexport function resetStyles(): void {\n LEVEL_STYLES = THEME_PRESETS.default;\n}\n"],"mappings":";;;;;;;;;;;AAuJA,SAAS,+BAAgD;CACrD,OAAO;EACH,eAAe;EACf,cAAc;EACd,YAAY;CAChB;AACJ;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,mBAAmB,UAAgC,CAAC,GAAiB;CACjF,MAAM,kBAAkB,6BAA6B;CACrD,IAAI;CACJ,IAAI;CACJ,IAAI;CAEJ,OAAO;EACH,qBAAsC;GAClC,OAAO,EAAE,GAAG,gBAAgB;EAChC;EAEA,YAAY,MAAuB;GAC/B,IAAI,CAAC,UAAU,IAAI,GACf,OAAO;GAGX,MAAM,eAAe,eAAe,IAAI;GACxC,IAAI,cAAc;IACd,gBAAgB,gBAAgB,aAAa,WAAW,QAAQ;IAChE,gBAAgB,eAAe,aAAa,UAAU,QAAQ;IAC9D,eAAe;IACf,mBAAmB;GACvB;GACA,OAAO;EACX;EAEA,sBAAgC;GAC5B,OAAO,oBAAoB;EAC/B;EAEA,YAA0C;GACtC,OAAO;EACX;EAEA,kBAA2B;GACvB,OAAO;EACX;EAEA,sBAA0C;GACtC,OAAO;EACX;EAEA,mBAA4B;GACxB,OAAO;EACX;EAEA,iBAAiB,WAA0B;GACvC,gBAAgB;EACpB;EAEA,kBAAkB,OAAmD;GACjE,IAAI,SAAS,eAET,OAAOA,cAAY,UAAU,cAAc;GAE/C,OAAO,cAAc;EACzB;EAEA,SAAS,OAA8B;GACnC,IAAI,SAAS,eAAe;IAExB,MAAM,YAAYA,cAAY;IAC9B,IAAI,WAAW;KACX,eAAe;KACf,OAAO;IACX;GACJ;GACA,OAAO;EACX;EAEA,cAAoB;GAChB,eAAe,cAAc;EACjC;CACJ;AACJ;;;;;;;;;;;AAYA,IAAW,eAA6C,cAAc"}
@@ -0,0 +1,31 @@
1
+ //#region src/types/core.ts
2
+ /**
3
+ * Niveles de log soportados en orden jerárquico
4
+ * (trace < debug < info < warn < error < critical)
5
+ *
6
+ * @constant {Object} LOG_LEVELS
7
+ * @property {number} trace - Nivel -1: Trazas muy verbosas (alineado con OTel TRACE severity 1-4)
8
+ * @property {number} debug - Nivel 0: Información de depuración detallada
9
+ * @property {number} info - Nivel 1: Mensajes informativos generales
10
+ * @property {number} warn - Nivel 2: Advertencias que no detienen la ejecución
11
+ * @property {number} error - Nivel 3: Errores que pueden afectar funcionalidad
12
+ * @property {number} critical - Nivel 4: Errores críticos que requieren atención inmediata
13
+ *
14
+ * @example
15
+ * // Verificar si un nivel debe mostrarse
16
+ * if (LOG_LEVELS[currentLevel] >= LOG_LEVELS.warn) {
17
+ * // Mostrar solo warn, error y critical
18
+ * }
19
+ */
20
+ const LOG_LEVELS = {
21
+ trace: -1,
22
+ debug: 0,
23
+ info: 1,
24
+ warn: 2,
25
+ error: 3,
26
+ critical: 4
27
+ };
28
+ //#endregion
29
+ export { LOG_LEVELS as t };
30
+
31
+ //# sourceMappingURL=core-Blfi2klP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-Blfi2klP.js","names":[],"sources":["../../src/types/core.ts"],"sourcesContent":["/**\n * Niveles de log soportados en orden jerárquico\n * (trace < debug < info < warn < error < critical)\n *\n * @constant {Object} LOG_LEVELS\n * @property {number} trace - Nivel -1: Trazas muy verbosas (alineado con OTel TRACE severity 1-4)\n * @property {number} debug - Nivel 0: Información de depuración detallada\n * @property {number} info - Nivel 1: Mensajes informativos generales\n * @property {number} warn - Nivel 2: Advertencias que no detienen la ejecución\n * @property {number} error - Nivel 3: Errores que pueden afectar funcionalidad\n * @property {number} critical - Nivel 4: Errores críticos que requieren atención inmediata\n *\n * @example\n * // Verificar si un nivel debe mostrarse\n * if (LOG_LEVELS[currentLevel] >= LOG_LEVELS.warn) {\n * // Mostrar solo warn, error y critical\n * }\n */\nexport const LOG_LEVELS = {\n trace: -1,\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n critical: 4,\n} as const;\n\n/**\n * Tipo de nivel de log derivado de las claves de LOG_LEVELS\n * @typedef {'trace' | 'debug' | 'info' | 'warn' | 'error' | 'critical'} LogLevel\n */\nexport type LogLevel = keyof typeof LOG_LEVELS;\n\n/**\n * Tag especial de \"nivel\" usado por `success()` — mapea a severidad INFO de OTel.\n * Vive fuera del union `LogLevel` estándar para que las comparaciones internas\n * de nivel (trace < debug < info < warn < error < critical) no se vean alteradas.\n */\nexport const SUCCESS_LEVEL = 'success' as const;\n\n/**\n * Tags aceptados por la familia `log()` y los métodos visuales (`success()`\n * emite a severidad INFO pero usa styling de success). Útil para transports\n * que necesitan distinguir \"success\" de logs info genéricos.\n */\nexport type LogTag = LogLevel | typeof SUCCESS_LEVEL;\n\n/**\n * Tipo de nivel de verbosidad para filtrar logs\n * @typedef {LogLevel | 'silent'} Verbosity\n * @description 'silent' desactiva completamente todos los logs\n */\nexport type Verbosity = LogLevel | 'silent';\n\n/**\n * Variantes de tema para diferentes estilos visuales\n * @typedef {'default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk'} ThemeVariant\n * \n * @description\n * - default: Tema adaptativo automático (claro/oscuro)\n * - dark: Tema oscuro con colores vibrantes\n * - light: Tema claro con colores suaves\n * - neon: Colores neón brillantes con efectos de resplandor\n * - minimal: Diseño minimalista y limpio\n * - cyberpunk: Estilo futurista con neón y efectos\n */\nexport type ThemeVariant = 'default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk';\n\n/**\n * Detección de tema de DevTools del navegador\n * @typedef {'light' | 'dark'} DevToolsTheme\n */\nexport type DevToolsTheme = 'light' | 'dark';\n\n/**\n * Tipos de banner para diferentes enfoques visuales\n * @typedef {'simple' | 'ascii' | 'unicode' | 'svg' | 'animated'} BannerType\n * \n * @description\n * - simple: Texto simple sin decoración\n * - ascii: Arte ASCII tradicional\n * - unicode: Caracteres Unicode decorativos\n * - svg: Gráfico SVG embebido\n * - animated: Banner con animación CSS\n */\nexport type BannerType = 'simple' | 'ascii' | 'unicode' | 'svg' | 'animated';\n\n/**\n * Formatos de exportación para datos de log\n * @typedef {'json' | 'csv' | 'markdown' | 'plain' | 'html'} ExportFormat\n *\n * @description\n * - json: Formato JSON estructurado\n * - csv: Valores separados por comas para Excel/Sheets\n * - markdown: Formato Markdown para documentación\n * - plain: Texto plano sin formato\n * - html: HTML con estilos para visualización web\n */\nexport type ExportFormat = 'json' | 'csv' | 'markdown' | 'plain' | 'html';\n\n/**\n * Formatos de salida para diferentes entornos\n * @typedef {'auto' | 'plain' | 'ansi' | 'build' | 'ci'} OutputFormat\n *\n * @description\n * - auto: Detección automática basada en entorno (recomendado)\n * - plain: Texto plano sin colores (máxima compatibilidad)\n * - ansi: Colores ANSI para terminales modernos\n * - build: Formato optimizado para builds (Next.js, webpack, etc.)\n * - ci: Formato optimizado para CI/CD (sin emojis, texto simple)\n */\nexport type OutputFormat = 'auto' | 'plain' | 'ansi' | 'build' | 'ci';\n\n/**\n * Modos de output para controlar dónde se escriben los logs.\n * @typedef {'console' | 'silent' | 'custom'} OutputMode\n *\n * @description\n * - console: Output estándar vía `console.log` (default)\n * - silent: Sin output\n * - custom: Usa un `OutputWriter` custom para escenarios avanzados\n */\nexport type OutputMode = 'console' | 'silent' | 'custom';\n\n/**\n * Interfaz de output writer custom para redirigir el output de logs.\n *\n * @interface OutputWriter\n *\n * @description\n * Permite redirigir el output de logs a destinos custom como:\n * - DraftLog para CLI spinners con logging concurrente\n * - Buffers para colectar logs durante operaciones\n * - Streams o transports custom\n *\n * @example\n * class BufferWriter implements OutputWriter {\n * private buffer: string[] = [];\n *\n * write(message: string, level: LogLevel, styles: string[]): void {\n * this.buffer.push(message);\n * }\n *\n * flush(): void {\n * this.buffer.forEach(msg => console.log(msg));\n * this.buffer = [];\n * }\n * }\n */\nexport interface OutputWriter {\n write(message: string, level: LogLevel, styles: string[]): void;\n flush?(): void;\n}\n\n/**\n * Shape mínima de recurso OTel — duplicada aquí para evitar un import\n * circular con `./transports.js`. El `ILogResource` canónico vive en\n * `./transports.js`; ambos shapes se mantienen sincronizados vía el\n * contrato público (service.name + version opcional + environment opcional).\n */\nexport interface ILogResourceRef {\n 'service.name': string;\n 'service.version'?: string;\n 'deployment.environment'?: string;\n [key: string]: string | undefined;\n}\n\n/**\n * Configuración de una instancia de `Logger`. Los campos booleanos activan\n * o desactivan features visuales (colores, timestamps, stack traces); los\n * campos selectores controlan tema, banner y formato de salida. Todos los\n * campos son opcionales salvo `verbosity`, `enableColors` y\n * `enableTimestamps`, que el constructor del logger rellena desde\n * `DEFAULT_CONFIG` cuando no se proveen.\n *\n * @example\n * const config: LoggerConfig = {\n * globalPrefix: 'MiApp',\n * verbosity: 'info',\n * enableColors: true,\n * enableTimestamps: true,\n * enableStackTrace: false,\n * theme: 'cyberpunk',\n * bannerType: 'animated',\n * bufferSize: 500,\n * autoDetectTheme: true\n * };\n */\nexport interface LoggerConfig {\n globalPrefix?: string;\n verbosity: Verbosity;\n enableColors: boolean;\n enableTimestamps: boolean;\n enableStackTrace: boolean;\n theme?: ThemeVariant;\n bannerType?: BannerType;\n bufferSize?: number;\n autoDetectTheme?: boolean;\n outputFormat?: OutputFormat;\n /** Modo de output: 'console' (default), 'silent' o 'custom'. */\n outputMode?: OutputMode;\n /** Writer custom cuando outputMode es 'custom'. */\n outputWriter?: OutputWriter;\n /** Nivel de verbosidad CLI para controlar el output primitivo. */\n cliLevel?: CLILogLevel;\n /**\n * Recurso OTel por defecto adjuntado a cada record que no lo sobreescriba.\n * Se setea una vez por proceso (service.name, service.version, deployment.environment).\n */\n resource?: Partial<ILogResourceRef>;\n}\n\n/**\n * Información parseada del stack trace\n * \n * @interface StackInfo\n * @description Contiene la ubicación exacta donde se originó el log\n */\nexport interface StackInfo {\n file: string;\n line: number;\n column: number;\n function?: string;\n}\n\n/**\n * Entrada de temporizador para medición de rendimiento\n * \n * @interface TimerEntry\n * @description Usado internamente para rastrear temporizadores activos\n */\nexport interface TimerEntry {\n label: string;\n startTime: number;\n}\n\n/**\n * Opciones para estilizar componentes\n * \n * @interface StyleOptions\n * @description Configuración de dimensiones y espaciado para elementos visuales\n */\nexport interface StyleOptions {\n width?: number;\n height?: number;\n padding?: string;\n}\n\n/**\n * Configuración de colores adaptativos para temas claro/oscuro\n * \n * @interface AdaptiveColors\n * @description Define colores que se ajustan automáticamente al tema del navegador\n */\nexport interface AdaptiveColors {\n light: string;\n dark: string;\n}\n\n/**\n * Configuración de espaciado para elementos del log\n * @typedef {'compact' | 'normal' | 'spacious'} SpacingType\n * \n * @description\n * - compact: Espaciado mínimo para más densidad\n * - normal: Espaciado estándar balanceado\n * - spacious: Espaciado amplio para mejor legibilidad\n */\nexport type SpacingType = 'compact' | 'normal' | 'spacious';\n\n/**\n * Layout de la línea de log: spacing entre elementos, padding interior,\n * margen externo y separador entre partes. Lo consume el renderer para\n * estructurar la salida visual.\n *\n * @interface LogLayout\n */\nexport interface LogLayout {\n spacing: SpacingType;\n innerPadding?: string;\n outerMargin?: string;\n separator?: string;\n}\n\n/**\n * Estilo de un elemento individual del log (timestamp, level, prefix,\n * mensaje, location). Cada campo es opcional y se aplica solo al elemento\n * seleccionado sin tocar el resto de la línea.\n *\n * @interface LogPartConfig\n *\n * @example\n * const timestampConfig: LogPartConfig = {\n * show: true,\n * color: '#888',\n * font: 'Monaco',\n * size: '11px'\n * };\n */\nexport interface LogPartConfig {\n show?: boolean;\n style?: string;\n font?: string;\n size?: string;\n color?: string; // Adaptativo por defecto\n background?: string;\n padding?: string;\n margin?: string;\n border?: string;\n shadow?: string;\n uppercase?: boolean;\n}\n\n/**\n * Estilos globales del log: layout, configuración por elemento (timestamp,\n * level, prefix, mensaje, location) y props visuales de fondo (backdrop,\n * transparency).\n *\n * @interface LogStyles\n */\nexport interface LogStyles {\n layout?: LogLayout;\n timestamp?: LogPartConfig;\n level?: LogPartConfig;\n prefix?: LogPartConfig;\n message?: LogPartConfig;\n location?: LogPartConfig;\n backdrop?: string;\n transparency?: number;\n}\n\n/**\n * Resultado de un timer completado. Lo retorna internamente `Logger.timeEnd`\n * y lo pasan los hooks en `extra` para mediciones de rendimiento.\n *\n * @property label - Etiqueta con la que se registró el timer vía `time(label)`.\n * @property duration - Milisegundos transcurridos entre `startTime` y `endTime`.\n * @property startTime - Marca temporal de inicio (`performance.now()` o `Date.now()`).\n * @property endTime - Marca temporal de fin.\n */\nexport interface TimerResult {\n label: string;\n duration: number;\n startTime: number;\n endTime: number;\n}\n\n/**\n * Contrato del logger retornado por los factory de scope (`Logger.component`,\n * `Logger.scope`). Expone los métodos de log por nivel más una API fluida\n * para badges, timers y estilos.\n *\n * Los métodos de log (`debug`, `info`, ...) devuelven `void`; los métodos de\n * configuración (`badges`, `badge`, `clearBadges`, `style`) devuelven `this`\n * para permitir encadenamiento.\n *\n * @example\n * const auth = logger.component('Auth');\n * auth.badge('JWT').info('Token validado');\n * auth.style('cyberpunk').success('Login OK');\n */\nexport interface IScopedLogger {\n debug(...args: any[]): void;\n info(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n success(...args: any[]): void;\n critical(...args: any[]): void;\n trace(...args: any[]): void;\n\n badges(badges: string[]): this;\n badge(badge: string): this;\n clearBadges(): this;\n\n time(label: string): void;\n timeEnd(label: string): number | undefined;\n\n style(presetName: string): this;\n}\n\n/**\n * Logger especializado para servicios API. Extiende {@link IScopedLogger} con\n * verbosidades específicas de backend: latencia (`slow`), rate limiting\n * (`rateLimit`), fallos de credenciales (`auth`) y endpoints legacy\n * (`deprecated`).\n */\nexport interface IAPILogger extends IScopedLogger {\n slow(message: string, duration?: number): void;\n rateLimit(message: string): void;\n auth(message: string): void;\n deprecated(message: string): void;\n}\n\n/**\n * Logger especializado para componentes UI. Extiende {@link IScopedLogger}\n * con verbosidades de lifecycle: montaje/desmontaje (`lifecycle`), cambios\n * de estado (`stateChange`) y diffs de props (`propsChange`). Útil para\n * depurar re-renders y flujos de componentes sin inundar el log de ruido.\n */\nexport interface IComponentLogger extends IScopedLogger {\n lifecycle(event: string, message?: string): void;\n stateChange(from: string, to: string, data?: any): void;\n propsChange(changes: Record<string, any>): void;\n}\n\n/**\n * Bindings inmutables que viajan con un logger scoped/child. Definen la\n * \"identidad\" del logger para filtrado, agrupación y atribución en\n * transports. Se propagan a través de `child()` y se merguean al construir\n * el {@link TransportRecord} que reciben los transports.\n *\n * @property scope - Etiqueta lógica del scope (p.ej. `\"Auth\"`, `\"API:Users\"`).\n * @property badges - Lista de badges a renderizar junto al mensaje.\n * @property type - Categoría del logger: `'scope'` (genérico), `'api'` (verbosidades HTTP), `'component'` (UI lifecycle).\n * @property context - Cadena jerárquica de contexto (parent → child) para traces anidados.\n */\nexport interface Bindings {\n scope?: string;\n badges?: string[];\n type?: 'scope' | 'api' | 'component';\n context?: string[];\n}\n\n/**\n * Estilo visual del wrapper de un badge.\n *\n * - `'brackets'` — `[badge]`\n * - `'rounded'` — `(badge)`\n * - `'plain'` — `badge` (sin wrapper)\n * - `'unicode'` — `「badge」`\n * - `'pill'` — badge con fondo redondeado estilo pill (CSS)\n */\nexport type BadgeStyle = 'brackets' | 'rounded' | 'plain' | 'unicode' | 'pill';\n\n/**\n * Formato de renderizado del timestamp en la línea de log.\n *\n * - `'iso'` — `2026-07-05T12:34:56.789Z` (default, sortable)\n * - `'time'` — `12:34:56`\n * - `'timeMs'` — `12:34:56.789`\n * - `'relative'` — tiempo relativo al momento de carga del logger\n * - `'elapsed'` — `+1.2s` transcurrido desde el primer log de la sesión\n * - `'date'` — `2026-07-05 12:34:56` (local)\n * - `'custom'` — delega al formateador custom registrado en el logger\n */\nexport type TimestampFormat = 'iso' | 'time' | 'timeMs' | 'relative' | 'elapsed' | 'date' | 'custom';\n\n/**\n * Alineación horizontal de una celda dentro de una columna de\n * `Logger.cliTable`.\n */\nexport type ColumnAlign = 'left' | 'right' | 'center';\n\n/**\n * Definición de una columna para `Logger.cliTable`. `content` es la fuente\n * del valor (clave del row o string fijo); los demás campos controlan layout\n * y color.\n *\n * @property content - Clave del row a renderizar, o string fijo para todas las filas.\n * @property width - Ancho fijo en caracteres; si se omite, se auto-detecta del contenido.\n * @property align - Alineación del contenido dentro de la celda.\n * @property color - Color del texto (hex, nombre CSS o nombre ANSI).\n */\nexport interface ColumnConfig {\n content: string;\n width?: number;\n align?: ColumnAlign;\n color?: string;\n}\n\n/**\n * Opciones de presentación aplicables a un log individual. Controlan layout\n * multi-columna, ancho máximo, modo clave-valor, estilo de badge y formato\n * de timestamp — todo sin alterar el `LoggerConfig` global del logger.\n *\n * @property rightAlign - Texto alineado a la derecha del mensaje principal (p.ej. duración).\n * @property columns - Definición de columnas para modo tabla.\n * @property maxWidth - Ancho máximo del mensaje antes de truncar/wrap.\n * @property keyValue - Si `true`, renderiza los argumentos como `clave: valor`.\n * @property badgeStyle - Override del estilo de badge para esta entrada.\n * @property timestampFormat - Override del formato de timestamp para esta entrada.\n */\nexport interface LogOptions {\n rightAlign?: string;\n columns?: ColumnConfig[];\n maxWidth?: number;\n keyValue?: boolean;\n badgeStyle?: BadgeStyle;\n timestampFormat?: TimestampFormat;\n}\n\n// ===== CLI PRIMITIVES =====\n\n/**\n * Niveles de verbosidad CLI para controlar el output primitivo.\n */\nexport type CLILogLevel = 'silent' | 'quiet' | 'normal' | 'verbose' | 'debug';\n\n/**\n * Handle retornado por `logger.spinner()` para controlar el ciclo de vida\n * del spinner.\n */\nexport interface ISpinnerHandle {\n /** Arranca la animación del spinner. */\n start(): void;\n /** Detiene el spinner sin mensaje de status. */\n stop(): void;\n /** Detiene el spinner con un mensaje de success. */\n succeed(msg?: string): void;\n /** Detiene el spinner con un mensaje de failure. */\n fail(msg?: string): void;\n /** Actualiza el texto del spinner mientras corre. */\n text(msg: string): void;\n}\n\n/**\n * Opciones para el output de `logger.box()`.\n */\nexport interface IBoxOptions {\n /** Título mostrado en el borde superior. */\n title?: string;\n /** Color del borde (hex, nombre CSS o nombre ANSI). */\n borderColor?: string;\n /** Estilo de caracteres del borde. */\n borderStyle?: 'single' | 'double' | 'rounded' | 'bold';\n /** Líneas de padding interior (default: 0). */\n padding?: number;\n}\n\n/**\n * Opciones para el output de `logger.cliTable()`.\n */\nexport interface ITableOptions {\n /** Nombres de columnas a mostrar (sobreescribe la auto-detección). */\n columns?: string[];\n /** Labels del header (default: nombres de columnas). */\n head?: string[];\n}"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,MAAa,aAAa;CACtB,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACP,UAAU;AACd"}
@@ -0,0 +1,36 @@
1
+ //#region src/types/core.ts
2
+ /**
3
+ * Niveles de log soportados en orden jerárquico
4
+ * (trace < debug < info < warn < error < critical)
5
+ *
6
+ * @constant {Object} LOG_LEVELS
7
+ * @property {number} trace - Nivel -1: Trazas muy verbosas (alineado con OTel TRACE severity 1-4)
8
+ * @property {number} debug - Nivel 0: Información de depuración detallada
9
+ * @property {number} info - Nivel 1: Mensajes informativos generales
10
+ * @property {number} warn - Nivel 2: Advertencias que no detienen la ejecución
11
+ * @property {number} error - Nivel 3: Errores que pueden afectar funcionalidad
12
+ * @property {number} critical - Nivel 4: Errores críticos que requieren atención inmediata
13
+ *
14
+ * @example
15
+ * // Verificar si un nivel debe mostrarse
16
+ * if (LOG_LEVELS[currentLevel] >= LOG_LEVELS.warn) {
17
+ * // Mostrar solo warn, error y critical
18
+ * }
19
+ */
20
+ const LOG_LEVELS = {
21
+ trace: -1,
22
+ debug: 0,
23
+ info: 1,
24
+ warn: 2,
25
+ error: 3,
26
+ critical: 4
27
+ };
28
+ //#endregion
29
+ Object.defineProperty(exports, "LOG_LEVELS", {
30
+ enumerable: true,
31
+ get: function() {
32
+ return LOG_LEVELS;
33
+ }
34
+ });
35
+
36
+ //# sourceMappingURL=core-CqS_UBzJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-CqS_UBzJ.cjs","names":[],"sources":["../../src/types/core.ts"],"sourcesContent":["/**\n * Niveles de log soportados en orden jerárquico\n * (trace < debug < info < warn < error < critical)\n *\n * @constant {Object} LOG_LEVELS\n * @property {number} trace - Nivel -1: Trazas muy verbosas (alineado con OTel TRACE severity 1-4)\n * @property {number} debug - Nivel 0: Información de depuración detallada\n * @property {number} info - Nivel 1: Mensajes informativos generales\n * @property {number} warn - Nivel 2: Advertencias que no detienen la ejecución\n * @property {number} error - Nivel 3: Errores que pueden afectar funcionalidad\n * @property {number} critical - Nivel 4: Errores críticos que requieren atención inmediata\n *\n * @example\n * // Verificar si un nivel debe mostrarse\n * if (LOG_LEVELS[currentLevel] >= LOG_LEVELS.warn) {\n * // Mostrar solo warn, error y critical\n * }\n */\nexport const LOG_LEVELS = {\n trace: -1,\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n critical: 4,\n} as const;\n\n/**\n * Tipo de nivel de log derivado de las claves de LOG_LEVELS\n * @typedef {'trace' | 'debug' | 'info' | 'warn' | 'error' | 'critical'} LogLevel\n */\nexport type LogLevel = keyof typeof LOG_LEVELS;\n\n/**\n * Tag especial de \"nivel\" usado por `success()` — mapea a severidad INFO de OTel.\n * Vive fuera del union `LogLevel` estándar para que las comparaciones internas\n * de nivel (trace < debug < info < warn < error < critical) no se vean alteradas.\n */\nexport const SUCCESS_LEVEL = 'success' as const;\n\n/**\n * Tags aceptados por la familia `log()` y los métodos visuales (`success()`\n * emite a severidad INFO pero usa styling de success). Útil para transports\n * que necesitan distinguir \"success\" de logs info genéricos.\n */\nexport type LogTag = LogLevel | typeof SUCCESS_LEVEL;\n\n/**\n * Tipo de nivel de verbosidad para filtrar logs\n * @typedef {LogLevel | 'silent'} Verbosity\n * @description 'silent' desactiva completamente todos los logs\n */\nexport type Verbosity = LogLevel | 'silent';\n\n/**\n * Variantes de tema para diferentes estilos visuales\n * @typedef {'default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk'} ThemeVariant\n * \n * @description\n * - default: Tema adaptativo automático (claro/oscuro)\n * - dark: Tema oscuro con colores vibrantes\n * - light: Tema claro con colores suaves\n * - neon: Colores neón brillantes con efectos de resplandor\n * - minimal: Diseño minimalista y limpio\n * - cyberpunk: Estilo futurista con neón y efectos\n */\nexport type ThemeVariant = 'default' | 'dark' | 'light' | 'neon' | 'minimal' | 'cyberpunk';\n\n/**\n * Detección de tema de DevTools del navegador\n * @typedef {'light' | 'dark'} DevToolsTheme\n */\nexport type DevToolsTheme = 'light' | 'dark';\n\n/**\n * Tipos de banner para diferentes enfoques visuales\n * @typedef {'simple' | 'ascii' | 'unicode' | 'svg' | 'animated'} BannerType\n * \n * @description\n * - simple: Texto simple sin decoración\n * - ascii: Arte ASCII tradicional\n * - unicode: Caracteres Unicode decorativos\n * - svg: Gráfico SVG embebido\n * - animated: Banner con animación CSS\n */\nexport type BannerType = 'simple' | 'ascii' | 'unicode' | 'svg' | 'animated';\n\n/**\n * Formatos de exportación para datos de log\n * @typedef {'json' | 'csv' | 'markdown' | 'plain' | 'html'} ExportFormat\n *\n * @description\n * - json: Formato JSON estructurado\n * - csv: Valores separados por comas para Excel/Sheets\n * - markdown: Formato Markdown para documentación\n * - plain: Texto plano sin formato\n * - html: HTML con estilos para visualización web\n */\nexport type ExportFormat = 'json' | 'csv' | 'markdown' | 'plain' | 'html';\n\n/**\n * Formatos de salida para diferentes entornos\n * @typedef {'auto' | 'plain' | 'ansi' | 'build' | 'ci'} OutputFormat\n *\n * @description\n * - auto: Detección automática basada en entorno (recomendado)\n * - plain: Texto plano sin colores (máxima compatibilidad)\n * - ansi: Colores ANSI para terminales modernos\n * - build: Formato optimizado para builds (Next.js, webpack, etc.)\n * - ci: Formato optimizado para CI/CD (sin emojis, texto simple)\n */\nexport type OutputFormat = 'auto' | 'plain' | 'ansi' | 'build' | 'ci';\n\n/**\n * Modos de output para controlar dónde se escriben los logs.\n * @typedef {'console' | 'silent' | 'custom'} OutputMode\n *\n * @description\n * - console: Output estándar vía `console.log` (default)\n * - silent: Sin output\n * - custom: Usa un `OutputWriter` custom para escenarios avanzados\n */\nexport type OutputMode = 'console' | 'silent' | 'custom';\n\n/**\n * Interfaz de output writer custom para redirigir el output de logs.\n *\n * @interface OutputWriter\n *\n * @description\n * Permite redirigir el output de logs a destinos custom como:\n * - DraftLog para CLI spinners con logging concurrente\n * - Buffers para colectar logs durante operaciones\n * - Streams o transports custom\n *\n * @example\n * class BufferWriter implements OutputWriter {\n * private buffer: string[] = [];\n *\n * write(message: string, level: LogLevel, styles: string[]): void {\n * this.buffer.push(message);\n * }\n *\n * flush(): void {\n * this.buffer.forEach(msg => console.log(msg));\n * this.buffer = [];\n * }\n * }\n */\nexport interface OutputWriter {\n write(message: string, level: LogLevel, styles: string[]): void;\n flush?(): void;\n}\n\n/**\n * Shape mínima de recurso OTel — duplicada aquí para evitar un import\n * circular con `./transports.js`. El `ILogResource` canónico vive en\n * `./transports.js`; ambos shapes se mantienen sincronizados vía el\n * contrato público (service.name + version opcional + environment opcional).\n */\nexport interface ILogResourceRef {\n 'service.name': string;\n 'service.version'?: string;\n 'deployment.environment'?: string;\n [key: string]: string | undefined;\n}\n\n/**\n * Configuración de una instancia de `Logger`. Los campos booleanos activan\n * o desactivan features visuales (colores, timestamps, stack traces); los\n * campos selectores controlan tema, banner y formato de salida. Todos los\n * campos son opcionales salvo `verbosity`, `enableColors` y\n * `enableTimestamps`, que el constructor del logger rellena desde\n * `DEFAULT_CONFIG` cuando no se proveen.\n *\n * @example\n * const config: LoggerConfig = {\n * globalPrefix: 'MiApp',\n * verbosity: 'info',\n * enableColors: true,\n * enableTimestamps: true,\n * enableStackTrace: false,\n * theme: 'cyberpunk',\n * bannerType: 'animated',\n * bufferSize: 500,\n * autoDetectTheme: true\n * };\n */\nexport interface LoggerConfig {\n globalPrefix?: string;\n verbosity: Verbosity;\n enableColors: boolean;\n enableTimestamps: boolean;\n enableStackTrace: boolean;\n theme?: ThemeVariant;\n bannerType?: BannerType;\n bufferSize?: number;\n autoDetectTheme?: boolean;\n outputFormat?: OutputFormat;\n /** Modo de output: 'console' (default), 'silent' o 'custom'. */\n outputMode?: OutputMode;\n /** Writer custom cuando outputMode es 'custom'. */\n outputWriter?: OutputWriter;\n /** Nivel de verbosidad CLI para controlar el output primitivo. */\n cliLevel?: CLILogLevel;\n /**\n * Recurso OTel por defecto adjuntado a cada record que no lo sobreescriba.\n * Se setea una vez por proceso (service.name, service.version, deployment.environment).\n */\n resource?: Partial<ILogResourceRef>;\n}\n\n/**\n * Información parseada del stack trace\n * \n * @interface StackInfo\n * @description Contiene la ubicación exacta donde se originó el log\n */\nexport interface StackInfo {\n file: string;\n line: number;\n column: number;\n function?: string;\n}\n\n/**\n * Entrada de temporizador para medición de rendimiento\n * \n * @interface TimerEntry\n * @description Usado internamente para rastrear temporizadores activos\n */\nexport interface TimerEntry {\n label: string;\n startTime: number;\n}\n\n/**\n * Opciones para estilizar componentes\n * \n * @interface StyleOptions\n * @description Configuración de dimensiones y espaciado para elementos visuales\n */\nexport interface StyleOptions {\n width?: number;\n height?: number;\n padding?: string;\n}\n\n/**\n * Configuración de colores adaptativos para temas claro/oscuro\n * \n * @interface AdaptiveColors\n * @description Define colores que se ajustan automáticamente al tema del navegador\n */\nexport interface AdaptiveColors {\n light: string;\n dark: string;\n}\n\n/**\n * Configuración de espaciado para elementos del log\n * @typedef {'compact' | 'normal' | 'spacious'} SpacingType\n * \n * @description\n * - compact: Espaciado mínimo para más densidad\n * - normal: Espaciado estándar balanceado\n * - spacious: Espaciado amplio para mejor legibilidad\n */\nexport type SpacingType = 'compact' | 'normal' | 'spacious';\n\n/**\n * Layout de la línea de log: spacing entre elementos, padding interior,\n * margen externo y separador entre partes. Lo consume el renderer para\n * estructurar la salida visual.\n *\n * @interface LogLayout\n */\nexport interface LogLayout {\n spacing: SpacingType;\n innerPadding?: string;\n outerMargin?: string;\n separator?: string;\n}\n\n/**\n * Estilo de un elemento individual del log (timestamp, level, prefix,\n * mensaje, location). Cada campo es opcional y se aplica solo al elemento\n * seleccionado sin tocar el resto de la línea.\n *\n * @interface LogPartConfig\n *\n * @example\n * const timestampConfig: LogPartConfig = {\n * show: true,\n * color: '#888',\n * font: 'Monaco',\n * size: '11px'\n * };\n */\nexport interface LogPartConfig {\n show?: boolean;\n style?: string;\n font?: string;\n size?: string;\n color?: string; // Adaptativo por defecto\n background?: string;\n padding?: string;\n margin?: string;\n border?: string;\n shadow?: string;\n uppercase?: boolean;\n}\n\n/**\n * Estilos globales del log: layout, configuración por elemento (timestamp,\n * level, prefix, mensaje, location) y props visuales de fondo (backdrop,\n * transparency).\n *\n * @interface LogStyles\n */\nexport interface LogStyles {\n layout?: LogLayout;\n timestamp?: LogPartConfig;\n level?: LogPartConfig;\n prefix?: LogPartConfig;\n message?: LogPartConfig;\n location?: LogPartConfig;\n backdrop?: string;\n transparency?: number;\n}\n\n/**\n * Resultado de un timer completado. Lo retorna internamente `Logger.timeEnd`\n * y lo pasan los hooks en `extra` para mediciones de rendimiento.\n *\n * @property label - Etiqueta con la que se registró el timer vía `time(label)`.\n * @property duration - Milisegundos transcurridos entre `startTime` y `endTime`.\n * @property startTime - Marca temporal de inicio (`performance.now()` o `Date.now()`).\n * @property endTime - Marca temporal de fin.\n */\nexport interface TimerResult {\n label: string;\n duration: number;\n startTime: number;\n endTime: number;\n}\n\n/**\n * Contrato del logger retornado por los factory de scope (`Logger.component`,\n * `Logger.scope`). Expone los métodos de log por nivel más una API fluida\n * para badges, timers y estilos.\n *\n * Los métodos de log (`debug`, `info`, ...) devuelven `void`; los métodos de\n * configuración (`badges`, `badge`, `clearBadges`, `style`) devuelven `this`\n * para permitir encadenamiento.\n *\n * @example\n * const auth = logger.component('Auth');\n * auth.badge('JWT').info('Token validado');\n * auth.style('cyberpunk').success('Login OK');\n */\nexport interface IScopedLogger {\n debug(...args: any[]): void;\n info(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n success(...args: any[]): void;\n critical(...args: any[]): void;\n trace(...args: any[]): void;\n\n badges(badges: string[]): this;\n badge(badge: string): this;\n clearBadges(): this;\n\n time(label: string): void;\n timeEnd(label: string): number | undefined;\n\n style(presetName: string): this;\n}\n\n/**\n * Logger especializado para servicios API. Extiende {@link IScopedLogger} con\n * verbosidades específicas de backend: latencia (`slow`), rate limiting\n * (`rateLimit`), fallos de credenciales (`auth`) y endpoints legacy\n * (`deprecated`).\n */\nexport interface IAPILogger extends IScopedLogger {\n slow(message: string, duration?: number): void;\n rateLimit(message: string): void;\n auth(message: string): void;\n deprecated(message: string): void;\n}\n\n/**\n * Logger especializado para componentes UI. Extiende {@link IScopedLogger}\n * con verbosidades de lifecycle: montaje/desmontaje (`lifecycle`), cambios\n * de estado (`stateChange`) y diffs de props (`propsChange`). Útil para\n * depurar re-renders y flujos de componentes sin inundar el log de ruido.\n */\nexport interface IComponentLogger extends IScopedLogger {\n lifecycle(event: string, message?: string): void;\n stateChange(from: string, to: string, data?: any): void;\n propsChange(changes: Record<string, any>): void;\n}\n\n/**\n * Bindings inmutables que viajan con un logger scoped/child. Definen la\n * \"identidad\" del logger para filtrado, agrupación y atribución en\n * transports. Se propagan a través de `child()` y se merguean al construir\n * el {@link TransportRecord} que reciben los transports.\n *\n * @property scope - Etiqueta lógica del scope (p.ej. `\"Auth\"`, `\"API:Users\"`).\n * @property badges - Lista de badges a renderizar junto al mensaje.\n * @property type - Categoría del logger: `'scope'` (genérico), `'api'` (verbosidades HTTP), `'component'` (UI lifecycle).\n * @property context - Cadena jerárquica de contexto (parent → child) para traces anidados.\n */\nexport interface Bindings {\n scope?: string;\n badges?: string[];\n type?: 'scope' | 'api' | 'component';\n context?: string[];\n}\n\n/**\n * Estilo visual del wrapper de un badge.\n *\n * - `'brackets'` — `[badge]`\n * - `'rounded'` — `(badge)`\n * - `'plain'` — `badge` (sin wrapper)\n * - `'unicode'` — `「badge」`\n * - `'pill'` — badge con fondo redondeado estilo pill (CSS)\n */\nexport type BadgeStyle = 'brackets' | 'rounded' | 'plain' | 'unicode' | 'pill';\n\n/**\n * Formato de renderizado del timestamp en la línea de log.\n *\n * - `'iso'` — `2026-07-05T12:34:56.789Z` (default, sortable)\n * - `'time'` — `12:34:56`\n * - `'timeMs'` — `12:34:56.789`\n * - `'relative'` — tiempo relativo al momento de carga del logger\n * - `'elapsed'` — `+1.2s` transcurrido desde el primer log de la sesión\n * - `'date'` — `2026-07-05 12:34:56` (local)\n * - `'custom'` — delega al formateador custom registrado en el logger\n */\nexport type TimestampFormat = 'iso' | 'time' | 'timeMs' | 'relative' | 'elapsed' | 'date' | 'custom';\n\n/**\n * Alineación horizontal de una celda dentro de una columna de\n * `Logger.cliTable`.\n */\nexport type ColumnAlign = 'left' | 'right' | 'center';\n\n/**\n * Definición de una columna para `Logger.cliTable`. `content` es la fuente\n * del valor (clave del row o string fijo); los demás campos controlan layout\n * y color.\n *\n * @property content - Clave del row a renderizar, o string fijo para todas las filas.\n * @property width - Ancho fijo en caracteres; si se omite, se auto-detecta del contenido.\n * @property align - Alineación del contenido dentro de la celda.\n * @property color - Color del texto (hex, nombre CSS o nombre ANSI).\n */\nexport interface ColumnConfig {\n content: string;\n width?: number;\n align?: ColumnAlign;\n color?: string;\n}\n\n/**\n * Opciones de presentación aplicables a un log individual. Controlan layout\n * multi-columna, ancho máximo, modo clave-valor, estilo de badge y formato\n * de timestamp — todo sin alterar el `LoggerConfig` global del logger.\n *\n * @property rightAlign - Texto alineado a la derecha del mensaje principal (p.ej. duración).\n * @property columns - Definición de columnas para modo tabla.\n * @property maxWidth - Ancho máximo del mensaje antes de truncar/wrap.\n * @property keyValue - Si `true`, renderiza los argumentos como `clave: valor`.\n * @property badgeStyle - Override del estilo de badge para esta entrada.\n * @property timestampFormat - Override del formato de timestamp para esta entrada.\n */\nexport interface LogOptions {\n rightAlign?: string;\n columns?: ColumnConfig[];\n maxWidth?: number;\n keyValue?: boolean;\n badgeStyle?: BadgeStyle;\n timestampFormat?: TimestampFormat;\n}\n\n// ===== CLI PRIMITIVES =====\n\n/**\n * Niveles de verbosidad CLI para controlar el output primitivo.\n */\nexport type CLILogLevel = 'silent' | 'quiet' | 'normal' | 'verbose' | 'debug';\n\n/**\n * Handle retornado por `logger.spinner()` para controlar el ciclo de vida\n * del spinner.\n */\nexport interface ISpinnerHandle {\n /** Arranca la animación del spinner. */\n start(): void;\n /** Detiene el spinner sin mensaje de status. */\n stop(): void;\n /** Detiene el spinner con un mensaje de success. */\n succeed(msg?: string): void;\n /** Detiene el spinner con un mensaje de failure. */\n fail(msg?: string): void;\n /** Actualiza el texto del spinner mientras corre. */\n text(msg: string): void;\n}\n\n/**\n * Opciones para el output de `logger.box()`.\n */\nexport interface IBoxOptions {\n /** Título mostrado en el borde superior. */\n title?: string;\n /** Color del borde (hex, nombre CSS o nombre ANSI). */\n borderColor?: string;\n /** Estilo de caracteres del borde. */\n borderStyle?: 'single' | 'double' | 'rounded' | 'bold';\n /** Líneas de padding interior (default: 0). */\n padding?: number;\n}\n\n/**\n * Opciones para el output de `logger.cliTable()`.\n */\nexport interface ITableOptions {\n /** Nombres de columnas a mostrar (sobreescribe la auto-detección). */\n columns?: string[];\n /** Labels del header (default: nombres de columnas). */\n head?: string[];\n}"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,MAAa,aAAa;CACtB,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACP,UAAU;AACd"}
@@ -0,0 +1,110 @@
1
+ //#region src/utils/environment-detector.ts
2
+ /**
3
+ * Comprueba si se ejecuta en entorno Node.js
4
+ */
5
+ const isNode = typeof process !== "undefined" && process.versions && process.versions.node;
6
+ /**
7
+ * Comprueba si se ejecuta en entorno browser
8
+ */
9
+ const isBrowser = typeof window !== "undefined" && typeof document !== "undefined";
10
+ /**
11
+ * Función principal de detección de entorno
12
+ */
13
+ function getEnvironment() {
14
+ if (typeof globalThis !== "undefined" && globalThis.Deno) return "deno";
15
+ if (typeof window === "undefined" && typeof self !== "undefined" && typeof self.importScripts === "function") return "webworker";
16
+ if (typeof process !== "undefined" && process.versions && process.versions.node) {
17
+ if (isRunningInTerminal()) return "terminal";
18
+ return "server";
19
+ }
20
+ if (typeof window !== "undefined" && typeof document !== "undefined") return "browser";
21
+ return "unknown";
22
+ }
23
+ /**
24
+ * Comprueba si se ejecuta en una terminal interactiva
25
+ */
26
+ function isRunningInTerminal() {
27
+ if (typeof process === "undefined") return false;
28
+ const isTTY = process.stdout && process.stdout.isTTY;
29
+ const hasTerminalEnv = process.env && (process.env.TERM || process.env.TERM_PROGRAM || process.env.SSH_TTY || process.env.TERM_SESSION_ID);
30
+ const isTerminalProgram = hasTerminalEnv && [
31
+ "vscode",
32
+ "hyper",
33
+ "iterm",
34
+ "terminal",
35
+ "alacritty",
36
+ "kitty",
37
+ "gnome-terminal",
38
+ "konsole",
39
+ "xterm",
40
+ "tmux",
41
+ "screen"
42
+ ].some((program) => process.env.TERM_PROGRAM?.toLowerCase().includes(program) || process.env.TERM?.toLowerCase().includes(program));
43
+ return Boolean(isTTY || hasTerminalEnv || isTerminalProgram);
44
+ }
45
+ /**
46
+ * Comprueba si el entorno soporta colores ANSI
47
+ */
48
+ function supportsANSI() {
49
+ const env = getEnvironment();
50
+ if (env === "browser") return false;
51
+ if (env === "terminal") return true;
52
+ if (env === "server") return checkServerANSISupport();
53
+ return false;
54
+ }
55
+ /**
56
+ * Comprueba si el entorno server soporta colores ANSI
57
+ */
58
+ function checkServerANSISupport() {
59
+ if (typeof process === "undefined") return false;
60
+ const supportsANSI = process.env && (process.env.COLORTERM || process.env.FORCE_COLOR || process.env.TERM && process.env.TERM !== "dumb" || process.env.TERM_PROGRAM);
61
+ return Boolean(supportsANSI);
62
+ }
63
+ /**
64
+ * Obtiene la capacidad de color específica del entorno
65
+ */
66
+ function getColorCapability() {
67
+ if (getEnvironment() === "browser") return "full";
68
+ if (!supportsANSI()) return "none";
69
+ if (typeof process !== "undefined" && process.env) {
70
+ const hasTrueColor = process.env.COLORTERM === "truecolor" || process.env.COLORTERM === "24bit";
71
+ const has256Colors = process.env.TERM && process.env.TERM.includes("256");
72
+ if (hasTrueColor || has256Colors) return "full";
73
+ }
74
+ return "basic";
75
+ }
76
+ /**
77
+ * Obtiene el ancho de la terminal en columnas
78
+ */
79
+ function getTerminalWidth() {
80
+ if (typeof process !== "undefined" && process.stdout?.columns) return process.stdout.columns;
81
+ return 80;
82
+ }
83
+ /**
84
+ * Obtiene el alto de la terminal en filas
85
+ */
86
+ function getTerminalHeight() {
87
+ if (typeof process !== "undefined" && process.stdout?.rows) return process.stdout.rows;
88
+ return 24;
89
+ }
90
+ /**
91
+ * Información del entorno para debugging
92
+ */
93
+ function getEnvironmentInfo() {
94
+ return {
95
+ environment: getEnvironment(),
96
+ supportsANSI: supportsANSI(),
97
+ colorCapability: getColorCapability(),
98
+ isTTY: typeof process !== "undefined" ? Boolean(process.stdout?.isTTY) : false,
99
+ platform: typeof process !== "undefined" ? process.platform : "unknown",
100
+ nodeVersion: typeof process !== "undefined" ? process.versions?.node : null,
101
+ term: typeof process !== "undefined" ? process.env?.TERM : null,
102
+ colorTerm: typeof process !== "undefined" ? process.env?.COLORTERM : null,
103
+ terminalWidth: getTerminalWidth(),
104
+ terminalHeight: getTerminalHeight()
105
+ };
106
+ }
107
+ //#endregion
108
+ export { getTerminalWidth as a, isRunningInTerminal as c, getTerminalHeight as i, supportsANSI as l, getEnvironment as n, isBrowser as o, getEnvironmentInfo as r, isNode as s, getColorCapability as t };
109
+
110
+ //# sourceMappingURL=environment-detector-7NvnYUfr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-detector-7NvnYUfr.js","names":[],"sources":["../../src/utils/environment-detector.ts"],"sourcesContent":["/**\n * Detector de entorno — Detección robusta del entorno para el logger\n * Detecta entornos browser, terminal, server y otros runtime\n */\n\nexport type Environment = 'browser' | 'terminal' | 'server' | 'webworker' | 'deno' | 'unknown';\n\n/**\n * Comprueba si se ejecuta en entorno Node.js\n */\nexport const isNode = typeof process !== 'undefined' &&\n process.versions &&\n process.versions.node;\n\n/**\n * Comprueba si se ejecuta en entorno browser\n */\nexport const isBrowser = typeof window !== 'undefined' &&\n typeof document !== 'undefined';\n\n/**\n * Función principal de detección de entorno\n */\nexport function getEnvironment(): Environment {\n // Comprueba Deno primero\n if (typeof globalThis !== 'undefined' && (globalThis as any).Deno) {\n return 'deno';\n }\n\n // Comprueba WebWorker\n if (typeof window === 'undefined' && typeof self !== 'undefined' && typeof (self as any).importScripts === 'function') {\n return 'webworker';\n }\n\n // Comprueba Node.js (entorno server)\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n // Determina si corre en una terminal o como server\n if (isRunningInTerminal()) {\n return 'terminal';\n }\n return 'server';\n }\n\n // Comprueba browser\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return 'browser';\n }\n\n return 'unknown';\n}\n\n/**\n * Comprueba si se ejecuta en una terminal interactiva\n */\nexport function isRunningInTerminal(): boolean {\n // Comprueba indicadores comunes de terminal\n if (typeof process === 'undefined') return false;\n\n const isTTY = process.stdout && process.stdout.isTTY;\n const hasTerminalEnv = process.env && (\n process.env.TERM ||\n process.env.TERM_PROGRAM ||\n process.env.SSH_TTY ||\n process.env.TERM_SESSION_ID\n );\n\n // Comprueba si corre dentro de programas de terminal comunes\n const terminalPrograms = [\n 'vscode',\n 'hyper',\n 'iterm',\n 'terminal',\n 'alacritty',\n 'kitty',\n 'gnome-terminal',\n 'konsole',\n 'xterm',\n 'tmux',\n 'screen'\n ];\n\n const isTerminalProgram = hasTerminalEnv && terminalPrograms.some(program =>\n process.env.TERM_PROGRAM?.toLowerCase().includes(program) ||\n process.env.TERM?.toLowerCase().includes(program)\n );\n\n return Boolean(isTTY || hasTerminalEnv || isTerminalProgram);\n}\n\n/**\n * Comprueba si el entorno soporta colores ANSI\n */\nexport function supportsANSI(): boolean {\n const env = getEnvironment();\n\n if (env === 'browser') return false;\n if (env === 'terminal') return true;\n if (env === 'server') return checkServerANSISupport();\n\n return false;\n}\n\n/**\n * Comprueba si el entorno server soporta colores ANSI\n */\nfunction checkServerANSISupport(): boolean {\n if (typeof process === 'undefined') return false;\n\n // Comprueba variables de entorno comunes que indican soporte ANSI\n const supportsANSI = process.env && (\n process.env.COLORTERM ||\n process.env.FORCE_COLOR ||\n (process.env.TERM && process.env.TERM !== 'dumb') ||\n process.env.TERM_PROGRAM\n );\n\n return Boolean(supportsANSI);\n}\n\n/**\n * Obtiene la capacidad de color específica del entorno\n */\nexport function getColorCapability(): 'full' | 'basic' | 'none' {\n const env = getEnvironment();\n\n if (env === 'browser') {\n return 'full'; // Colores CSS\n }\n\n if (!supportsANSI()) {\n return 'none';\n }\n\n // Comprueba soporte de 256 colores o truecolor\n if (typeof process !== 'undefined' && process.env) {\n const hasTrueColor = process.env.COLORTERM === 'truecolor' || process.env.COLORTERM === '24bit';\n const has256Colors = process.env.TERM && process.env.TERM.includes('256');\n\n if (hasTrueColor || has256Colors) {\n return 'full';\n }\n }\n\n return 'basic'; // 16 colores básicos\n}\n\n/**\n * Obtiene el ancho de la terminal en columnas\n */\nexport function getTerminalWidth(): number {\n if (typeof process !== 'undefined' && process.stdout?.columns) {\n return process.stdout.columns;\n }\n return 80;\n}\n\n/**\n * Obtiene el alto de la terminal en filas\n */\nexport function getTerminalHeight(): number {\n if (typeof process !== 'undefined' && process.stdout?.rows) {\n return process.stdout.rows;\n }\n return 24;\n}\n\n/**\n * Información del entorno para debugging\n */\nexport function getEnvironmentInfo() {\n return {\n environment: getEnvironment(),\n supportsANSI: supportsANSI(),\n colorCapability: getColorCapability(),\n isTTY: typeof process !== 'undefined' ? Boolean(process.stdout?.isTTY) : false,\n platform: typeof process !== 'undefined' ? process.platform : 'unknown',\n nodeVersion: typeof process !== 'undefined' ? process.versions?.node : null,\n term: typeof process !== 'undefined' ? process.env?.TERM : null,\n colorTerm: typeof process !== 'undefined' ? process.env?.COLORTERM : null,\n terminalWidth: getTerminalWidth(),\n terminalHeight: getTerminalHeight()\n };\n}"],"mappings":";;;;AAUA,MAAa,SAAS,OAAO,YAAY,eACnB,QAAQ,YACR,QAAQ,SAAS;;;;AAKvC,MAAa,YAAY,OAAO,WAAW,eACjB,OAAO,aAAa;;;;AAK9C,SAAgB,iBAA8B;CAE1C,IAAI,OAAO,eAAe,eAAgB,WAAmB,MACzD,OAAO;CAIX,IAAI,OAAO,WAAW,eAAe,OAAO,SAAS,eAAe,OAAQ,KAAa,kBAAkB,YACvG,OAAO;CAIX,IAAI,OAAO,YAAY,eAAe,QAAQ,YAAY,QAAQ,SAAS,MAAM;EAE7E,IAAI,oBAAoB,GACpB,OAAO;EAEX,OAAO;CACX;CAGA,IAAI,OAAO,WAAW,eAAe,OAAO,aAAa,aACrD,OAAO;CAGX,OAAO;AACX;;;;AAKA,SAAgB,sBAA+B;CAE3C,IAAI,OAAO,YAAY,aAAa,OAAO;CAE3C,MAAM,QAAQ,QAAQ,UAAU,QAAQ,OAAO;CAC/C,MAAM,iBAAiB,QAAQ,QAC3B,QAAQ,IAAI,QACZ,QAAQ,IAAI,gBACZ,QAAQ,IAAI,WACZ,QAAQ,IAAI;CAkBhB,MAAM,oBAAoB,kBAAkB;EAbxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAGuD,CAAC,CAAC,MAAK,YAC9D,QAAQ,IAAI,cAAc,YAAY,CAAC,CAAC,SAAS,OAAO,KACxD,QAAQ,IAAI,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CACpD;CAEA,OAAO,QAAQ,SAAS,kBAAkB,iBAAiB;AAC/D;;;;AAKA,SAAgB,eAAwB;CACpC,MAAM,MAAM,eAAe;CAE3B,IAAI,QAAQ,WAAW,OAAO;CAC9B,IAAI,QAAQ,YAAY,OAAO;CAC/B,IAAI,QAAQ,UAAU,OAAO,uBAAuB;CAEpD,OAAO;AACX;;;;AAKA,SAAS,yBAAkC;CACvC,IAAI,OAAO,YAAY,aAAa,OAAO;CAG3C,MAAM,eAAe,QAAQ,QACzB,QAAQ,IAAI,aACZ,QAAQ,IAAI,eACX,QAAQ,IAAI,QAAQ,QAAQ,IAAI,SAAS,UAC1C,QAAQ,IAAI;CAGhB,OAAO,QAAQ,YAAY;AAC/B;;;;AAKA,SAAgB,qBAAgD;CAG5D,IAFY,eAEN,MAAM,WACR,OAAO;CAGX,IAAI,CAAC,aAAa,GACd,OAAO;CAIX,IAAI,OAAO,YAAY,eAAe,QAAQ,KAAK;EAC/C,MAAM,eAAe,QAAQ,IAAI,cAAc,eAAe,QAAQ,IAAI,cAAc;EACxF,MAAM,eAAe,QAAQ,IAAI,QAAQ,QAAQ,IAAI,KAAK,SAAS,KAAK;EAExE,IAAI,gBAAgB,cAChB,OAAO;CAEf;CAEA,OAAO;AACX;;;;AAKA,SAAgB,mBAA2B;CACvC,IAAI,OAAO,YAAY,eAAe,QAAQ,QAAQ,SAClD,OAAO,QAAQ,OAAO;CAE1B,OAAO;AACX;;;;AAKA,SAAgB,oBAA4B;CACxC,IAAI,OAAO,YAAY,eAAe,QAAQ,QAAQ,MAClD,OAAO,QAAQ,OAAO;CAE1B,OAAO;AACX;;;;AAKA,SAAgB,qBAAqB;CACjC,OAAO;EACH,aAAa,eAAe;EAC5B,cAAc,aAAa;EAC3B,iBAAiB,mBAAmB;EACpC,OAAO,OAAO,YAAY,cAAc,QAAQ,QAAQ,QAAQ,KAAK,IAAI;EACzE,UAAU,OAAO,YAAY,cAAc,QAAQ,WAAW;EAC9D,aAAa,OAAO,YAAY,cAAc,QAAQ,UAAU,OAAO;EACvE,MAAM,OAAO,YAAY,cAAc,QAAQ,KAAK,OAAO;EAC3D,WAAW,OAAO,YAAY,cAAc,QAAQ,KAAK,YAAY;EACrE,eAAe,iBAAiB;EAChC,gBAAgB,kBAAkB;CACtC;AACJ"}
@@ -0,0 +1,163 @@
1
+ //#region src/utils/environment-detector.ts
2
+ /**
3
+ * Comprueba si se ejecuta en entorno Node.js
4
+ */
5
+ const isNode = typeof process !== "undefined" && process.versions && process.versions.node;
6
+ /**
7
+ * Comprueba si se ejecuta en entorno browser
8
+ */
9
+ const isBrowser = typeof window !== "undefined" && typeof document !== "undefined";
10
+ /**
11
+ * Función principal de detección de entorno
12
+ */
13
+ function getEnvironment() {
14
+ if (typeof globalThis !== "undefined" && globalThis.Deno) return "deno";
15
+ if (typeof window === "undefined" && typeof self !== "undefined" && typeof self.importScripts === "function") return "webworker";
16
+ if (typeof process !== "undefined" && process.versions && process.versions.node) {
17
+ if (isRunningInTerminal()) return "terminal";
18
+ return "server";
19
+ }
20
+ if (typeof window !== "undefined" && typeof document !== "undefined") return "browser";
21
+ return "unknown";
22
+ }
23
+ /**
24
+ * Comprueba si se ejecuta en una terminal interactiva
25
+ */
26
+ function isRunningInTerminal() {
27
+ if (typeof process === "undefined") return false;
28
+ const isTTY = process.stdout && process.stdout.isTTY;
29
+ const hasTerminalEnv = process.env && (process.env.TERM || process.env.TERM_PROGRAM || process.env.SSH_TTY || process.env.TERM_SESSION_ID);
30
+ const isTerminalProgram = hasTerminalEnv && [
31
+ "vscode",
32
+ "hyper",
33
+ "iterm",
34
+ "terminal",
35
+ "alacritty",
36
+ "kitty",
37
+ "gnome-terminal",
38
+ "konsole",
39
+ "xterm",
40
+ "tmux",
41
+ "screen"
42
+ ].some((program) => process.env.TERM_PROGRAM?.toLowerCase().includes(program) || process.env.TERM?.toLowerCase().includes(program));
43
+ return Boolean(isTTY || hasTerminalEnv || isTerminalProgram);
44
+ }
45
+ /**
46
+ * Comprueba si el entorno soporta colores ANSI
47
+ */
48
+ function supportsANSI() {
49
+ const env = getEnvironment();
50
+ if (env === "browser") return false;
51
+ if (env === "terminal") return true;
52
+ if (env === "server") return checkServerANSISupport();
53
+ return false;
54
+ }
55
+ /**
56
+ * Comprueba si el entorno server soporta colores ANSI
57
+ */
58
+ function checkServerANSISupport() {
59
+ if (typeof process === "undefined") return false;
60
+ const supportsANSI = process.env && (process.env.COLORTERM || process.env.FORCE_COLOR || process.env.TERM && process.env.TERM !== "dumb" || process.env.TERM_PROGRAM);
61
+ return Boolean(supportsANSI);
62
+ }
63
+ /**
64
+ * Obtiene la capacidad de color específica del entorno
65
+ */
66
+ function getColorCapability() {
67
+ if (getEnvironment() === "browser") return "full";
68
+ if (!supportsANSI()) return "none";
69
+ if (typeof process !== "undefined" && process.env) {
70
+ const hasTrueColor = process.env.COLORTERM === "truecolor" || process.env.COLORTERM === "24bit";
71
+ const has256Colors = process.env.TERM && process.env.TERM.includes("256");
72
+ if (hasTrueColor || has256Colors) return "full";
73
+ }
74
+ return "basic";
75
+ }
76
+ /**
77
+ * Obtiene el ancho de la terminal en columnas
78
+ */
79
+ function getTerminalWidth() {
80
+ if (typeof process !== "undefined" && process.stdout?.columns) return process.stdout.columns;
81
+ return 80;
82
+ }
83
+ /**
84
+ * Obtiene el alto de la terminal en filas
85
+ */
86
+ function getTerminalHeight() {
87
+ if (typeof process !== "undefined" && process.stdout?.rows) return process.stdout.rows;
88
+ return 24;
89
+ }
90
+ /**
91
+ * Información del entorno para debugging
92
+ */
93
+ function getEnvironmentInfo() {
94
+ return {
95
+ environment: getEnvironment(),
96
+ supportsANSI: supportsANSI(),
97
+ colorCapability: getColorCapability(),
98
+ isTTY: typeof process !== "undefined" ? Boolean(process.stdout?.isTTY) : false,
99
+ platform: typeof process !== "undefined" ? process.platform : "unknown",
100
+ nodeVersion: typeof process !== "undefined" ? process.versions?.node : null,
101
+ term: typeof process !== "undefined" ? process.env?.TERM : null,
102
+ colorTerm: typeof process !== "undefined" ? process.env?.COLORTERM : null,
103
+ terminalWidth: getTerminalWidth(),
104
+ terminalHeight: getTerminalHeight()
105
+ };
106
+ }
107
+ //#endregion
108
+ Object.defineProperty(exports, "getColorCapability", {
109
+ enumerable: true,
110
+ get: function() {
111
+ return getColorCapability;
112
+ }
113
+ });
114
+ Object.defineProperty(exports, "getEnvironment", {
115
+ enumerable: true,
116
+ get: function() {
117
+ return getEnvironment;
118
+ }
119
+ });
120
+ Object.defineProperty(exports, "getEnvironmentInfo", {
121
+ enumerable: true,
122
+ get: function() {
123
+ return getEnvironmentInfo;
124
+ }
125
+ });
126
+ Object.defineProperty(exports, "getTerminalHeight", {
127
+ enumerable: true,
128
+ get: function() {
129
+ return getTerminalHeight;
130
+ }
131
+ });
132
+ Object.defineProperty(exports, "getTerminalWidth", {
133
+ enumerable: true,
134
+ get: function() {
135
+ return getTerminalWidth;
136
+ }
137
+ });
138
+ Object.defineProperty(exports, "isBrowser", {
139
+ enumerable: true,
140
+ get: function() {
141
+ return isBrowser;
142
+ }
143
+ });
144
+ Object.defineProperty(exports, "isNode", {
145
+ enumerable: true,
146
+ get: function() {
147
+ return isNode;
148
+ }
149
+ });
150
+ Object.defineProperty(exports, "isRunningInTerminal", {
151
+ enumerable: true,
152
+ get: function() {
153
+ return isRunningInTerminal;
154
+ }
155
+ });
156
+ Object.defineProperty(exports, "supportsANSI", {
157
+ enumerable: true,
158
+ get: function() {
159
+ return supportsANSI;
160
+ }
161
+ });
162
+
163
+ //# sourceMappingURL=environment-detector-D-tHkKWA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-detector-D-tHkKWA.cjs","names":[],"sources":["../../src/utils/environment-detector.ts"],"sourcesContent":["/**\n * Detector de entorno — Detección robusta del entorno para el logger\n * Detecta entornos browser, terminal, server y otros runtime\n */\n\nexport type Environment = 'browser' | 'terminal' | 'server' | 'webworker' | 'deno' | 'unknown';\n\n/**\n * Comprueba si se ejecuta en entorno Node.js\n */\nexport const isNode = typeof process !== 'undefined' &&\n process.versions &&\n process.versions.node;\n\n/**\n * Comprueba si se ejecuta en entorno browser\n */\nexport const isBrowser = typeof window !== 'undefined' &&\n typeof document !== 'undefined';\n\n/**\n * Función principal de detección de entorno\n */\nexport function getEnvironment(): Environment {\n // Comprueba Deno primero\n if (typeof globalThis !== 'undefined' && (globalThis as any).Deno) {\n return 'deno';\n }\n\n // Comprueba WebWorker\n if (typeof window === 'undefined' && typeof self !== 'undefined' && typeof (self as any).importScripts === 'function') {\n return 'webworker';\n }\n\n // Comprueba Node.js (entorno server)\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n // Determina si corre en una terminal o como server\n if (isRunningInTerminal()) {\n return 'terminal';\n }\n return 'server';\n }\n\n // Comprueba browser\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return 'browser';\n }\n\n return 'unknown';\n}\n\n/**\n * Comprueba si se ejecuta en una terminal interactiva\n */\nexport function isRunningInTerminal(): boolean {\n // Comprueba indicadores comunes de terminal\n if (typeof process === 'undefined') return false;\n\n const isTTY = process.stdout && process.stdout.isTTY;\n const hasTerminalEnv = process.env && (\n process.env.TERM ||\n process.env.TERM_PROGRAM ||\n process.env.SSH_TTY ||\n process.env.TERM_SESSION_ID\n );\n\n // Comprueba si corre dentro de programas de terminal comunes\n const terminalPrograms = [\n 'vscode',\n 'hyper',\n 'iterm',\n 'terminal',\n 'alacritty',\n 'kitty',\n 'gnome-terminal',\n 'konsole',\n 'xterm',\n 'tmux',\n 'screen'\n ];\n\n const isTerminalProgram = hasTerminalEnv && terminalPrograms.some(program =>\n process.env.TERM_PROGRAM?.toLowerCase().includes(program) ||\n process.env.TERM?.toLowerCase().includes(program)\n );\n\n return Boolean(isTTY || hasTerminalEnv || isTerminalProgram);\n}\n\n/**\n * Comprueba si el entorno soporta colores ANSI\n */\nexport function supportsANSI(): boolean {\n const env = getEnvironment();\n\n if (env === 'browser') return false;\n if (env === 'terminal') return true;\n if (env === 'server') return checkServerANSISupport();\n\n return false;\n}\n\n/**\n * Comprueba si el entorno server soporta colores ANSI\n */\nfunction checkServerANSISupport(): boolean {\n if (typeof process === 'undefined') return false;\n\n // Comprueba variables de entorno comunes que indican soporte ANSI\n const supportsANSI = process.env && (\n process.env.COLORTERM ||\n process.env.FORCE_COLOR ||\n (process.env.TERM && process.env.TERM !== 'dumb') ||\n process.env.TERM_PROGRAM\n );\n\n return Boolean(supportsANSI);\n}\n\n/**\n * Obtiene la capacidad de color específica del entorno\n */\nexport function getColorCapability(): 'full' | 'basic' | 'none' {\n const env = getEnvironment();\n\n if (env === 'browser') {\n return 'full'; // Colores CSS\n }\n\n if (!supportsANSI()) {\n return 'none';\n }\n\n // Comprueba soporte de 256 colores o truecolor\n if (typeof process !== 'undefined' && process.env) {\n const hasTrueColor = process.env.COLORTERM === 'truecolor' || process.env.COLORTERM === '24bit';\n const has256Colors = process.env.TERM && process.env.TERM.includes('256');\n\n if (hasTrueColor || has256Colors) {\n return 'full';\n }\n }\n\n return 'basic'; // 16 colores básicos\n}\n\n/**\n * Obtiene el ancho de la terminal en columnas\n */\nexport function getTerminalWidth(): number {\n if (typeof process !== 'undefined' && process.stdout?.columns) {\n return process.stdout.columns;\n }\n return 80;\n}\n\n/**\n * Obtiene el alto de la terminal en filas\n */\nexport function getTerminalHeight(): number {\n if (typeof process !== 'undefined' && process.stdout?.rows) {\n return process.stdout.rows;\n }\n return 24;\n}\n\n/**\n * Información del entorno para debugging\n */\nexport function getEnvironmentInfo() {\n return {\n environment: getEnvironment(),\n supportsANSI: supportsANSI(),\n colorCapability: getColorCapability(),\n isTTY: typeof process !== 'undefined' ? Boolean(process.stdout?.isTTY) : false,\n platform: typeof process !== 'undefined' ? process.platform : 'unknown',\n nodeVersion: typeof process !== 'undefined' ? process.versions?.node : null,\n term: typeof process !== 'undefined' ? process.env?.TERM : null,\n colorTerm: typeof process !== 'undefined' ? process.env?.COLORTERM : null,\n terminalWidth: getTerminalWidth(),\n terminalHeight: getTerminalHeight()\n };\n}"],"mappings":";;;;AAUA,MAAa,SAAS,OAAO,YAAY,eACnB,QAAQ,YACR,QAAQ,SAAS;;;;AAKvC,MAAa,YAAY,OAAO,WAAW,eACjB,OAAO,aAAa;;;;AAK9C,SAAgB,iBAA8B;CAE1C,IAAI,OAAO,eAAe,eAAgB,WAAmB,MACzD,OAAO;CAIX,IAAI,OAAO,WAAW,eAAe,OAAO,SAAS,eAAe,OAAQ,KAAa,kBAAkB,YACvG,OAAO;CAIX,IAAI,OAAO,YAAY,eAAe,QAAQ,YAAY,QAAQ,SAAS,MAAM;EAE7E,IAAI,oBAAoB,GACpB,OAAO;EAEX,OAAO;CACX;CAGA,IAAI,OAAO,WAAW,eAAe,OAAO,aAAa,aACrD,OAAO;CAGX,OAAO;AACX;;;;AAKA,SAAgB,sBAA+B;CAE3C,IAAI,OAAO,YAAY,aAAa,OAAO;CAE3C,MAAM,QAAQ,QAAQ,UAAU,QAAQ,OAAO;CAC/C,MAAM,iBAAiB,QAAQ,QAC3B,QAAQ,IAAI,QACZ,QAAQ,IAAI,gBACZ,QAAQ,IAAI,WACZ,QAAQ,IAAI;CAkBhB,MAAM,oBAAoB,kBAAkB;EAbxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAGuD,CAAC,CAAC,MAAK,YAC9D,QAAQ,IAAI,cAAc,YAAY,CAAC,CAAC,SAAS,OAAO,KACxD,QAAQ,IAAI,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CACpD;CAEA,OAAO,QAAQ,SAAS,kBAAkB,iBAAiB;AAC/D;;;;AAKA,SAAgB,eAAwB;CACpC,MAAM,MAAM,eAAe;CAE3B,IAAI,QAAQ,WAAW,OAAO;CAC9B,IAAI,QAAQ,YAAY,OAAO;CAC/B,IAAI,QAAQ,UAAU,OAAO,uBAAuB;CAEpD,OAAO;AACX;;;;AAKA,SAAS,yBAAkC;CACvC,IAAI,OAAO,YAAY,aAAa,OAAO;CAG3C,MAAM,eAAe,QAAQ,QACzB,QAAQ,IAAI,aACZ,QAAQ,IAAI,eACX,QAAQ,IAAI,QAAQ,QAAQ,IAAI,SAAS,UAC1C,QAAQ,IAAI;CAGhB,OAAO,QAAQ,YAAY;AAC/B;;;;AAKA,SAAgB,qBAAgD;CAG5D,IAFY,eAEN,MAAM,WACR,OAAO;CAGX,IAAI,CAAC,aAAa,GACd,OAAO;CAIX,IAAI,OAAO,YAAY,eAAe,QAAQ,KAAK;EAC/C,MAAM,eAAe,QAAQ,IAAI,cAAc,eAAe,QAAQ,IAAI,cAAc;EACxF,MAAM,eAAe,QAAQ,IAAI,QAAQ,QAAQ,IAAI,KAAK,SAAS,KAAK;EAExE,IAAI,gBAAgB,cAChB,OAAO;CAEf;CAEA,OAAO;AACX;;;;AAKA,SAAgB,mBAA2B;CACvC,IAAI,OAAO,YAAY,eAAe,QAAQ,QAAQ,SAClD,OAAO,QAAQ,OAAO;CAE1B,OAAO;AACX;;;;AAKA,SAAgB,oBAA4B;CACxC,IAAI,OAAO,YAAY,eAAe,QAAQ,QAAQ,MAClD,OAAO,QAAQ,OAAO;CAE1B,OAAO;AACX;;;;AAKA,SAAgB,qBAAqB;CACjC,OAAO;EACH,aAAa,eAAe;EAC5B,cAAc,aAAa;EAC3B,iBAAiB,mBAAmB;EACpC,OAAO,OAAO,YAAY,cAAc,QAAQ,QAAQ,QAAQ,KAAK,IAAI;EACzE,UAAU,OAAO,YAAY,cAAc,QAAQ,WAAW;EAC9D,aAAa,OAAO,YAAY,cAAc,QAAQ,UAAU,OAAO;EACvE,MAAM,OAAO,YAAY,cAAc,QAAQ,KAAK,OAAO;EAC3D,WAAW,OAAO,YAAY,cAAc,QAAQ,KAAK,YAAY;EACrE,eAAe,iBAAiB;EAChC,gBAAgB,kBAAkB;CACtC;AACJ"}