@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,180 @@
1
+ import type { TransportRecord, TransportOptions, IBufferedTransport, HookLogEntry } from '../types/index.js';
2
+ /**
3
+ * Configuración para {@link HttpTransport}. Extiende {@link TransportOptions}
4
+ * con parámetros HTTP: URL destino, headers custom, buffer acotado,
5
+ * retry con backoff para fallos transitorios, timeout de fetch por intento, y
6
+ * un hook `onError` que reporta drops (overflow / 4xx / retry exhausto)
7
+ * sin escalar excepciones al caller.
8
+ *
9
+ * @example
10
+ * // Mínimo: solo URL
11
+ * new HttpTransport({ url: 'https://logs.example.com/ingest' });
12
+ *
13
+ * @example
14
+ * // Con retry/backoff ajustado y hook de errores
15
+ * new HttpTransport({
16
+ * url: 'https://logs.example.com/ingest',
17
+ * headers: { Authorization: 'Bearer <REDACTED>' },
18
+ * maxRetries: 5,
19
+ * initialBackoffMs: 500,
20
+ * maxBackoffMs: 30_000,
21
+ * fetchTimeoutMs: 5_000,
22
+ * onError: (entry) => metrics.increment('log_drop', { reason: entry.message })
23
+ * });
24
+ */
25
+ export interface HttpTransportOptions extends TransportOptions {
26
+ /** URL destino. Se usa POST con body JSON. */
27
+ url?: string;
28
+ /** Headers extra de la request (ej. `Authorization: Bearer ...`). */
29
+ headers?: Record<string, string>;
30
+ /** Tope máximo de records en buffer. En overflow se dropea el más viejo. */
31
+ maxBufferSize?: number;
32
+ /** Reintentos consecutivos por batch antes de dropear los records. */
33
+ maxRetries?: number;
34
+ /** Backoff inicial en ms. Duplica por intento hasta `maxBackoffMs`. */
35
+ initialBackoffMs?: number;
36
+ /** Techo de backoff en ms. */
37
+ maxBackoffMs?: number;
38
+ /** Timeout del fetch en ms (por intento). Default 10_000. */
39
+ fetchTimeoutMs?: number;
40
+ /**
41
+ * Hook opcional que se dispara cuando el buffer hace overflow o un batch
42
+ * se dropea tras `maxRetries`. Recibe una entrada {@link HookLogEntry}
43
+ * sintética.
44
+ */
45
+ onError?: (entry: HookLogEntry) => void | Promise<void>;
46
+ }
47
+ /**
48
+ * Transport basado en HTTP. Bufferea records, los batcha por tamaño o
49
+ * intervalo, POSTea el batch como JSON, y reporta fallos vía retry, buffer
50
+ * acotado y un hook `onError` — nunca un `.catch(() => {})` silencioso.
51
+ *
52
+ * Lifecycle de cada batch (driveado internamente por `sendWithRetry`):
53
+ * 1. `fetch(url, { method: 'POST', body, signal })` con un `AbortController`
54
+ * que aborta tras `fetchTimeoutMs`.
55
+ * 2. Si `response.ok` → batch considerado entregado.
56
+ * 3. Si `4xx` → dropeado sin reintento: el cliente nunca se recupera de un
57
+ * error de URL/auth/payload mal formado. Se dispara `onError`.
58
+ * 4. Si `5xx` o `fetch` lanza (red caída / abort por timeout) → reintento con
59
+ * backoff exponencial: arranca en `initialBackoffMs`, duplica por intento,
60
+ * techo `maxBackoffMs`, hasta `maxRetries` intentos. Tras el agotamiento
61
+ * el batch se re-bufferiza (o se trimea contra `maxBufferSize`) y se
62
+ * dispara `onError` con `droppedCount`.
63
+ *
64
+ * El body por defecto es el envelope JSON `{ logs: TransportRecord[] }`.
65
+ * Para cambiar el wire format, sobrescribe los hooks `protected`
66
+ * {@link HttpTransport.serializeBody} y {@link HttpTransport.buildHeaders}
67
+ * (referencia: {@link OtlpTransport}).
68
+ *
69
+ * Extender esta clase es la vía recomendada para shippear un transport
70
+ * nuevo orientado a HTTP.
71
+ *
72
+ * @example
73
+ * // Registro en un logger
74
+ * import logger from '@mks2508/better-logger';
75
+ * import { HttpTransport } from '@mks2508/better-logger/transports';
76
+ *
77
+ * logger.addTransport({
78
+ * target: new HttpTransport({
79
+ * url: 'https://logs.example.com/ingest',
80
+ * flushInterval: 5_000,
81
+ * batchSize: 100,
82
+ * onError: (entry) => console.error('[log-drop]', entry.message)
83
+ * })
84
+ * });
85
+ *
86
+ * @see {@link HttpTransportOptions}
87
+ * @see {@link OtlpTransport}
88
+ */
89
+ export declare class HttpTransport implements IBufferedTransport {
90
+ /** Identificador del transport. Los loggers lo usan para lookup, dedup y logs de diagnóstico. */
91
+ readonly name: string;
92
+ private buffer;
93
+ private flushTimer?;
94
+ private closed;
95
+ /** Bag de options — `protected` para que subclasses (ej. {@link OtlpTransport}) puedan leerlo o extenderlo. */
96
+ protected options: HttpTransportOptions;
97
+ /**
98
+ * Crea una instancia de {@link HttpTransport}.
99
+ *
100
+ * Los campos omitidos en `options` se rellenan con defaults sensatos
101
+ * (`batchSize=50`, `maxBufferSize=10_000`, `maxRetries=3`,
102
+ * `initialBackoffMs=250`, `maxBackoffMs=5_000`, `fetchTimeoutMs=10_000`).
103
+ * Si se pasa `flushInterval`, arranca un `setInterval` que flushea cada
104
+ * N ms; si se omite, el flush solo dispara por llenado de `batchSize`.
105
+ *
106
+ * @param {HttpTransportOptions} [options] - Configuración opcional. Si se omite por completo, el transport queda inactivo hasta que se setee `options.url` por otra vía (subclasses).
107
+ *
108
+ * @example
109
+ * const t = new HttpTransport({
110
+ * url: 'https://logs.example.com/ingest',
111
+ * flushInterval: 5_000
112
+ * });
113
+ */
114
+ constructor(options?: HttpTransportOptions);
115
+ /** Records actualmente encolados esperando el próximo flush. */
116
+ get bufferSize(): number;
117
+ /** Capacidad máxima del buffer. Al superarla, el registro más viejo se dropea y se notifica vía `onError`. */
118
+ get maxBufferSize(): number;
119
+ /**
120
+ * Indica si el transport está listo para aceptar y entregar records.
121
+ * Devuelve `false` tras {@link close} o si no se configuró `url`.
122
+ *
123
+ * @returns {boolean} `true` si el transport puede enviar.
124
+ */
125
+ isReady(): boolean;
126
+ /**
127
+ * Encola un record en el buffer. Si el buffer está lleno, aplica la
128
+ * política de overflow (dropea el más viejo + dispara `onError`). Si tras
129
+ * el push se alcanza `batchSize`, dispara un flush asíncrono (sin await).
130
+ *
131
+ * No-op si el transport ya fue cerrado ({@link close}).
132
+ *
133
+ * @param {TransportRecord} record - Registro a encolar.
134
+ */
135
+ write(record: TransportRecord): void;
136
+ /**
137
+ * Serializa un batch al body de la request. Las subclasses sobrescriben
138
+ * para cambiar la codificación (ej. {@link OtlpTransport} produce OTLP/HTTP
139
+ * JSON en vez del envelope default `{ logs: [...] }`).
140
+ *
141
+ */
142
+ protected serializeBody(records: TransportRecord[]): string;
143
+ /**
144
+ * Construye los headers de la request. Las subclasses pueden prependear
145
+ * headers transport-specific (ej. `signoz-ingestion-key`).
146
+ *
147
+ */
148
+ protected buildHeaders(): Record<string, string>;
149
+ private applyOverflowPolicy;
150
+ /**
151
+ * Flushea el buffer actual: toma un snapshot de los records pendientes,
152
+ * los envía con retry/backoff vía `sendWithRetry`, y ante fallo los
153
+ * re-bufferiza preservando el orden. Si la re-bufferización excede
154
+ * `maxBufferSize`, trimea los más viejos y dispara `onError` con
155
+ * `droppedCount`.
156
+ *
157
+ * No-op si el transport está cerrado, el buffer está vacío o no hay
158
+ * `url` configurada.
159
+ *
160
+ * @returns {Promise<void>} Resuelve cuando el intento de entrega del batch actual terminó (success, drop definitivo o no-op).
161
+ *
162
+ * @see {@link HttpTransportOptions.onError}
163
+ */
164
+ flush(): Promise<void>;
165
+ private sendWithRetry;
166
+ /**
167
+ * Cierra el transport: marca el flag `closed`, detiene el timer de
168
+ * `flushInterval` si estaba corriendo, y ejecuta un flush final para
169
+ * entregar lo pendiente.
170
+ *
171
+ * Tras `close()`, todo {@link write} posterior es no-op y
172
+ * {@link isReady} devuelve `false`.
173
+ *
174
+ * @returns {Promise<void>} Resuelve cuando el flush final termina.
175
+ *
176
+ * @see {@link flush}
177
+ */
178
+ close(): Promise<void>;
179
+ }
180
+ //# sourceMappingURL=HttpTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpTransport.d.ts","sourceRoot":"","sources":["../../src/transports/HttpTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,gBAAgB,EAEhB,kBAAkB,EAElB,YAAY,EACf,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC1D,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBAAa,aAAc,YAAW,kBAAkB;IACpD,iGAAiG;IACjG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAU;IAE/B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,UAAU,CAAC,CAAiC;IACpD,OAAO,CAAC,MAAM,CAAS;IAEvB,+GAA+G;IAC/G,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC;IAExC;;;;;;;;;;;;;;;;OAgBG;gBACS,OAAO,CAAC,EAAE,oBAAoB;IAkB1C,gEAAgE;IAChE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,8GAA8G;IAC9G,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;;;;OAKG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAepC;;;;;OAKG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM;IAI3D;;;;OAIG;IACH,SAAS,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOhD,OAAO,CAAC,mBAAmB;IAgB3B;;;;;;;;;;;;;OAaG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCd,aAAa;IA4E3B;;;;;;;;;;;OAWG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B"}
@@ -0,0 +1,165 @@
1
+ import type { TransportRecord, HookLogEntry } from '../types/index.js';
2
+ import { HttpTransport } from './HttpTransport.js';
3
+ /**
4
+ * Opciones de configuración para {@link OtlpTransport}.
5
+ */
6
+ export interface OtlpTransportOptions {
7
+ /**
8
+ * URL base del collector OTLP/HTTP, p.ej. `https://collector.example.com:4318`.
9
+ * El transport hace POST a `<endpoint>/v1/logs`.
10
+ */
11
+ endpoint: string;
12
+ /** Atributo de resource `service.name`. Requerido por la spec OTel. */
13
+ serviceName: string;
14
+ /** Atributo de resource `service.version`. Recomendado. */
15
+ serviceVersion?: string;
16
+ /** Atributo de resource `deployment.environment` (production/staging/dev). */
17
+ environment?: string;
18
+ /** Atributos de resource adicionales que se merguean en el bloque `resource`. */
19
+ resourceAttributes?: Record<string, string>;
20
+ /**
21
+ * Nombre de la env var cuyo valor se envía como header
22
+ * `signoz-ingestion-key`. El transport lee `process.env[ingestKeyEnvVar]`
23
+ * al construirse — nunca desde un string literal. Si la env var no está
24
+ * seteada, el header se omite silenciosamente (el collector OTLP usa el
25
+ * path default sin auth).
26
+ */
27
+ ingestKeyEnvVar?: string;
28
+ /** Headers extra que se merguean (Authorization, X-* custom). */
29
+ headers?: Record<string, string>;
30
+ /** Tamaño del batch (records por POST). Default 50. */
31
+ batchSize?: number;
32
+ /** Intervalo de flush en ms. */
33
+ flushInterval?: number;
34
+ /** Tope duro de records bufferizados. Default 10_000. */
35
+ maxBufferSize?: number;
36
+ /** Reintentos máximos por batch. Default 3. */
37
+ maxRetries?: number;
38
+ /** Backoff inicial en ms. Default 250. */
39
+ initialBackoffMs?: number;
40
+ /** Techo de backoff en ms. Default 5_000. */
41
+ maxBackoffMs?: number;
42
+ /** Timeout por fetch en ms. Default 10_000. */
43
+ fetchTimeoutMs?: number;
44
+ /** Hook que se dispara ante falla del transport (drop, agotamiento de reintentos, ...). */
45
+ onError?: (entry: HookLogEntry) => void | Promise<void>;
46
+ }
47
+ /**
48
+ * Shape del body JSON de un request OTLP/HTTP. Coincide con el JSON mapping
49
+ * del proto `LogsData` para `/v1/logs`. Ver
50
+ * https://opentelemetry.io/docs/specs/otlp/#json-protobuf-encoding
51
+ */
52
+ interface OtlpLogsPayload {
53
+ resourceLogs: Array<{
54
+ resource: {
55
+ attributes: Array<{
56
+ key: string;
57
+ value: {
58
+ stringValue: string;
59
+ };
60
+ }>;
61
+ };
62
+ scopeLogs: Array<{
63
+ scope: {
64
+ name: string;
65
+ version: string;
66
+ };
67
+ logRecords: Array<OtlpLogRecord>;
68
+ }>;
69
+ }>;
70
+ }
71
+ /**
72
+ * Registro individual de log dentro del payload OTLP. Mappea mensaje,
73
+ * severidad, timestamp (en nanosegundos), atributos y contexto de trace al
74
+ * formato `LogRecord` definido por la spec OTel Logs.
75
+ * @see https://opentelemetry.io/docs/specs/otel/logs/data-model/
76
+ */
77
+ interface OtlpLogRecord {
78
+ timeUnixNano: string;
79
+ observedTimeUnixNano: string;
80
+ severityNumber: number;
81
+ severityText: string;
82
+ body: {
83
+ stringValue: string;
84
+ };
85
+ attributes?: Array<{
86
+ key: string;
87
+ value: OtlpAttributeValue;
88
+ }>;
89
+ traceId?: string;
90
+ spanId?: string;
91
+ }
92
+ /**
93
+ * Unión discriminada que representa un `AnyValue` de OTel para atributos de
94
+ * log. Soporta string, int, double, bool y arrays anidados (homogéneos o
95
+ * mixtos).
96
+ * @see https://opentelemetry.io/docs/specs/otel/common/
97
+ */
98
+ type OtlpAttributeValue = {
99
+ stringValue: string;
100
+ } | {
101
+ intValue: number;
102
+ } | {
103
+ doubleValue: number;
104
+ } | {
105
+ boolValue: boolean;
106
+ } | {
107
+ arrayValue: {
108
+ values: OtlpAttributeValue[];
109
+ };
110
+ };
111
+ /**
112
+ * Transport OTLP/HTTP para SigNoz (o cualquier backend compatible con OTLP).
113
+ *
114
+ * Extiende {@link HttpTransport} — hereda retry, buffer acotado, status check,
115
+ * close asincrónico y el hook on-error. Overridea únicamente la shape del
116
+ * payload y los headers del request.
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * logger.addTransport({
121
+ * target: new OtlpTransport({
122
+ * endpoint: 'https://otelcollector.example.com:4318',
123
+ * serviceName: 'my-app',
124
+ * serviceVersion: '1.2.3',
125
+ * environment: 'production',
126
+ * ingestKeyEnvVar: 'SIGNOZ_KEY'
127
+ * })
128
+ * });
129
+ * ```
130
+ */
131
+ export declare class OtlpTransport extends HttpTransport {
132
+ readonly name = "otlp";
133
+ private readonly resource;
134
+ /** Resuelto al construir. Nunca se loguea, nunca se escribe a source. */
135
+ private readonly ingestKeyValue;
136
+ constructor(options: OtlpTransportOptions);
137
+ /**
138
+ * Construye el payload JSON OTLP/HTTP a partir de los records bufferizados.
139
+ * Un bloque `resourceLogs` por batch (sigue la guía de batching del
140
+ * collector OTel). Expuesto para tests y para subclasses custom de transport.
141
+ *
142
+ * @param records - Records de log a serializar dentro del payload.
143
+ * @returns Objeto `LogsData` listo para `JSON.stringify`.
144
+ * @see {@link OtlpLogsPayload}
145
+ */
146
+ buildPayload(records: TransportRecord[]): OtlpLogsPayload;
147
+ /**
148
+ * Serializa un batch al body JSON del request OTLP/HTTP. Override de
149
+ * {@link HttpTransport.serializeBody}.
150
+ *
151
+ * @param records - Records del batch a serializar.
152
+ * @returns String JSON listo para usar como `body` del fetch POST.
153
+ */
154
+ protected serializeBody(records: TransportRecord[]): string;
155
+ /**
156
+ * Construye los headers del request. Agrega `signoz-ingestion-key` con el
157
+ * valor resuelto al construir (nunca se loguea, nunca se escribe a source).
158
+ *
159
+ * @returns Record de headers a merguear en el fetch.
160
+ */
161
+ protected buildHeaders(): Record<string, string>;
162
+ private toLogRecord;
163
+ }
164
+ export {};
165
+ //# sourceMappingURL=OtlpTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OtlpTransport.d.ts","sourceRoot":"","sources":["../../src/transports/OtlpTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,YAAY,EAGf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAA6B,MAAM,oBAAoB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2FAA2F;IAC3F,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED;;;;GAIG;AACH,UAAU,eAAe;IACrB,YAAY,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE;YACN,UAAU,EAAE,KAAK,CAAC;gBAAE,GAAG,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE;oBAAE,WAAW,EAAE,MAAM,CAAA;iBAAE,CAAA;aAAE,CAAC,CAAC;SACtE,CAAC;QACF,SAAS,EAAE,KAAK,CAAC;YACb,KAAK,EAAE;gBACH,IAAI,EAAE,MAAM,CAAC;gBACb,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;SACpC,CAAC,CAAC;KACN,CAAC,CAAC;CACN;AAED;;;;;GAKG;AACH,UAAU,aAAa;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,KAAK,kBAAkB,GACjB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GACtB;IAAE,UAAU,EAAE;QAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC5C,SAAkB,IAAI,UAAU;IAEhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAExC,OAAO,EAAE,oBAAoB;IAqCzC;;;;;;;;OAQG;IACH,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,eAAe;IAuBzD;;;;;;OAMG;cACgB,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM;IAIpE;;;;;OAKG;cACgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQzD,OAAO,CAAC,WAAW;CAuBtB"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @fileoverview TransportBridge — facade de TransportManager.
3
+ * Encapsula el lifecycle de transports: add, remove, flush, close.
4
+ *
5
+ * @internal
6
+ */
7
+ import type { TransportTarget } from '../types/index.js';
8
+ import { TransportManager } from '../transports/index.js';
9
+ /**
10
+ * Resultado de añadir un transport.
11
+ */
12
+ export interface AddTransportResult {
13
+ /** ID único del transport. */
14
+ id: string;
15
+ /** La instancia de TransportManager (creada al primer add). */
16
+ manager: TransportManager;
17
+ }
18
+ /**
19
+ * Bridge para la gestión del lifecycle de transports.
20
+ *
21
+ * @internal
22
+ */
23
+ export interface TransportBridge {
24
+ /** Añade un transport y devuelve su ID. */
25
+ addTransport(target: TransportTarget): string;
26
+ /** Elimina un transport por ID. Devuelve `true` si se eliminó. */
27
+ removeTransport(id: string): boolean;
28
+ /** Fuerza el flush de todos los buffers de transports. */
29
+ flushTransports(): Promise<void>;
30
+ /** Cierra todos los transports de forma graceful. */
31
+ closeTransports(): Promise<void>;
32
+ /** Devuelve el manager subyacente (o `undefined` si nunca se usó). */
33
+ getTransportManager(): TransportManager | undefined;
34
+ /** Escribe un transport record (fire-and-forget). No-op si el manager no está inicializado. */
35
+ writeRecord(record: Parameters<TransportManager['write']>[0]): void;
36
+ }
37
+ /**
38
+ * Crea una instancia de {@link TransportBridge}.
39
+ *
40
+ * @internal
41
+ */
42
+ export declare function createTransportBridge(): TransportBridge;
43
+ //# sourceMappingURL=TransportBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransportBridge.d.ts","sourceRoot":"","sources":["../../src/transports/TransportBridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,OAAO,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC5B,2CAA2C;IAC3C,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAAC;IAC9C,kEAAkE;IAClE,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,0DAA0D;IAC1D,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,qDAAqD;IACrD,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,sEAAsE;IACtE,mBAAmB,IAAI,gBAAgB,GAAG,SAAS,CAAC;IACpD,+FAA+F;IAC/F,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACvE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAiCvD"}
@@ -0,0 +1,251 @@
1
+ import type { TransportRecord, TransportTarget, TransportOptions, ITransport, ITransportManager, LogLevel } from '../types/index.js';
2
+ /**
3
+ * Firma del constructor de los transports registrados en el registry
4
+ * built-in. Acepta el tipo propio de options del transport; el pass-through
5
+ * se enforcea en registro vía TypeScript pero se borra en runtime.
6
+ */
7
+ export type TransportConstructor = new (options?: TransportOptions) => ITransport;
8
+ /**
9
+ * Registry y dispatcher de transports. Mantiene el set activo de destinos
10
+ * de log (console, file, http, otlp, o transports custom registrados vía
11
+ * {@link TransportManager.register}) y les dispatcha cada
12
+ * {@link TransportRecord} producido por el Logger.
13
+ *
14
+ * Cada transport added se identifica por un `id` opaco (generado por la
15
+ * propia instancia) que devuelven {@link add} y {@link list}, y que acepta
16
+ * {@link remove}. El registry arranca con los cuatro built-ins
17
+ * (`console` / `file` / `http` / `otlp`) ya cargados; {@link register}
18
+ * añade customs sin poder sobreescribir los built-ins (lanza).
19
+ *
20
+ * El dispatch ({@link write}) aplica el filtro de `level` por transport y
21
+ * el `transform` opcional de {@link TransportOptions}, y captura toda
22
+ * excepción / rechazo de cada transport para que un transport roto nunca
23
+ * rompa el log call del caller. El propio Logger habla con el manager a
24
+ * través del facade {@link TransportBridge} (ver
25
+ * `Logger.addTransport` / `Logger.getTransportManager`).
26
+ *
27
+ * Implementa {@link ITransportManager}.
28
+ *
29
+ * @example
30
+ * // Manager con nivel default y transports añadidos por nombre
31
+ * const tm = new TransportManager('info');
32
+ * tm.add({ target: 'console' });
33
+ * tm.add({ target: 'file', options: { path: './app.log' } });
34
+ *
35
+ * @example
36
+ * // Registrar un transport custom y usarlo por nombre
37
+ * tm.register('datadog', DatadogTransport);
38
+ * tm.add({ target: 'datadog', options: { apiKey: env('DD_KEY') } });
39
+ *
40
+ * @example
41
+ * // Pasar una instancia de ITransport directamente (sin pasar por registry)
42
+ * tm.add({ target: new MyTransport(), level: 'warn' });
43
+ *
44
+ * @example
45
+ * // Dispatch + ciclo de vida
46
+ * await tm.write(record);
47
+ * await tm.flush(); // flusha todos los buffered
48
+ * await tm.close(); // flush + close + clear
49
+ *
50
+ * @see {@link ITransportManager}
51
+ * @see {@link TransportTarget}
52
+ * @see {@link TransportBridge}
53
+ */
54
+ export declare class TransportManager implements ITransportManager {
55
+ private transports;
56
+ private defaultLevel;
57
+ private readonly registry;
58
+ /**
59
+ * Crea un nuevo manager.
60
+ *
61
+ * @param {LogLevel} [defaultLevel='info'] - Nivel mínimo por defecto
62
+ * para transports añadidos sin `level` explícito en su
63
+ * {@link TransportTarget}. Records con `levelValue` inferior al del
64
+ * transport se descartan en {@link write}.
65
+ *
66
+ * @example
67
+ * const tm = new TransportManager('debug'); // todo pasa salvo filter propio
68
+ */
69
+ constructor(defaultLevel?: LogLevel);
70
+ /**
71
+ * Registra un constructor de transport bajo un nombre string. Tras el
72
+ * registro, `add({ target: name, options })` instancia ese transport con
73
+ * las options pasadas.
74
+ *
75
+ * No se puede sobreescribir un built-in (`console` / `file` / `http` /
76
+ * `otlp`): lanza para evitar silenciar un transport crítico por un
77
+ * accidente de naming. El registro es por-instancia (no comparte entre
78
+ * managers).
79
+ *
80
+ * @param {string} name - Nombre bajo el que registrar (usado luego como
81
+ * `target` en {@link TransportTarget}).
82
+ * @param {TransportConstructor} ctor - Constructor que acepta
83
+ * {@link TransportOptions} y devuelve un {@link ITransport}.
84
+ * @throws {Error} Si `name` colisiona con un built-in del registry.
85
+ *
86
+ * @example
87
+ * tm.register('datadog', DatadogTransport);
88
+ * tm.add({ target: 'datadog', options: { apiKey: env('DD_KEY') } });
89
+ *
90
+ * @see {@link listRegistered}
91
+ */
92
+ register(name: string, ctor: TransportConstructor): void;
93
+ /**
94
+ * Lista los nombres de transports registrados en esta instancia
95
+ * (built-ins + customs añadidos vía {@link register}).
96
+ *
97
+ * @returns {string[]} Nombres registrados. Incluye siempre los cuatro
98
+ * built-ins.
99
+ *
100
+ * @example
101
+ * tm.register('loki', LokiTransport);
102
+ * tm.listRegistered(); // ['console', 'file', 'http', 'otlp', 'loki']
103
+ */
104
+ listRegistered(): string[];
105
+ /**
106
+ * Añade un transport al set activo y devuelve su id opaco.
107
+ *
108
+ * Acepta dos formas de `target`:
109
+ * - **string**: se resuelve contra el registry (built-ins + customs
110
+ * vía {@link register}). Lanza si el nombre no existe, listando los
111
+ * registrados para facilitar el debug.
112
+ * - **ITransport instancia**: se registra tal cual, sin pasar por el
113
+ * registry. Útil para transports one-off o cuya configuración no
114
+ * encaja en un constructor reutilizable.
115
+ *
116
+ * El `level` (explícito en el target o `defaultLevel` del manager) fija
117
+ * el filtro por transport — los records con `levelValue` inferior se
118
+ * descartan en {@link write}. El `transform` opcional de
119
+ * {@link TransportOptions} se aplica por transport antes de delegar al
120
+ * `write` concreto.
121
+ *
122
+ * @param {TransportTarget} target - Especificación del transport a añadir.
123
+ * @returns {string} Id opaco del transport añadido. Úsalo con
124
+ * {@link remove}; aparece en {@link list}.
125
+ * @throws {Error} Si `target.target` es un string no presente en el
126
+ * registry.
127
+ *
128
+ * @example
129
+ * // Por nombre (built-in o custom registrado)
130
+ * const id = tm.add({ target: 'console' });
131
+ *
132
+ * @example
133
+ * // Instancia directa con nivel y transform propios
134
+ * const id = tm.add({
135
+ * target: new MyTransport(),
136
+ * level: 'warn',
137
+ * options: { transform: r => r.level === 'debug' ? null : r }
138
+ * });
139
+ *
140
+ * @see {@link TransportTarget}
141
+ */
142
+ add(target: TransportTarget): string;
143
+ /**
144
+ * Elimina un transport del set por su id. Si el transport expone
145
+ * `close()`, lo invoca para liberar recursos (timers, sockets, file
146
+ * handles). Si `close()` devuelve una Promise, su eventual rechazo se
147
+ * ignora de forma best-effort — los errores de close durante la
148
+ * remoción no se propagan al caller.
149
+ *
150
+ * @param {string} id - Id devuelto por {@link add}.
151
+ * @returns {boolean} `true` si había un transport con ese id (y se
152
+ * eliminó), `false` si el id no existía.
153
+ *
154
+ * @example
155
+ * const id = tm.add({ target: 'file', options: { path: './app.log' } });
156
+ * tm.remove(id); // true — FileTransport.close() se invoca
157
+ */
158
+ remove(id: string): boolean;
159
+ /**
160
+ * Dispatcha un {@link TransportRecord} a todos los transports activos
161
+ * que pasen el filtro de nivel.
162
+ *
163
+ * Por cada transport, en orden:
164
+ * 1. **Filtro de nivel**: si `record.levelValue < entry.levelValue`,
165
+ * se skipa (ese transport no recibe este record).
166
+ * 2. **Transform**: si `entry.options.transform` está seteado, se
167
+ * aplica al record. Si devuelve `null`, el record se droppea para
168
+ * este transport (no para los demás).
169
+ * 3. **Write**: se llama a `transport.write(transformedRecord)`. Si
170
+ * devuelve una Promise, se añade al batch await. Toda excepción
171
+ * sincrónica o rechazo de Promise se captura y se loguea por
172
+ * consola — el log call original del caller nunca rompe por un
173
+ * transport roto.
174
+ *
175
+ * El método es async: retorna después de que todos los transports hayan
176
+ * resuelto (o fallado) su write. Para fire-and-forget desde el Logger,
177
+ * el caller puede ignorar la Promise.
178
+ *
179
+ * @param {TransportRecord} record - Record a dispatchar.
180
+ * @returns {Promise<void>} Resuelve cuando todos los writes terminaron
181
+ * (exitosos o fallidos). Nunca rechaza.
182
+ *
183
+ * @example
184
+ * await tm.write({
185
+ * level: 'info', levelValue: 1, severityNumber: 9, severityText: 'INFO',
186
+ * time: Date.now(), msg: 'boot ok'
187
+ * });
188
+ *
189
+ * @see {@link TransportRecord}
190
+ */
191
+ write(record: TransportRecord): Promise<void>;
192
+ /**
193
+ * Flushea todos los transports que expongan `flush()` (buffered transports
194
+ * como {@link HttpTransport}, {@link FileTransport}, {@link OtlpTransport}).
195
+ * Los transports sin `flush()` (p.ej. {@link ConsoleTransport}) se
196
+ * skipan sin error.
197
+ *
198
+ * Errores de flush (sync throw o Promise rejection) se capturan y
199
+ * loguean por consola — nunca propagan al caller. Útil para forzar el
200
+ * envío del batch pendiente antes de un graceful shutdown.
201
+ *
202
+ * @returns {Promise<void>} Resuelve cuando todos los flushes terminaron.
203
+ *
204
+ * @example
205
+ * await tm.flush();
206
+ */
207
+ flush(): Promise<void>;
208
+ /**
209
+ * Shutdown ordenado: flushea todos los transports buffered, luego
210
+ * invoca `close()` en cada uno, y finalmente limpia el set interno.
211
+ * Tras esto la instancia queda sin transports — reusarla requiere
212
+ * `add()` de nuevo.
213
+ *
214
+ * Los errores de close (sync throw o Promise rejection) se capturan y
215
+ * loguean — nunca propagan al caller.
216
+ *
217
+ * @returns {Promise<void>} Resuelve cuando flush + close de todos los
218
+ * transports terminaron.
219
+ *
220
+ * @example
221
+ * // Shutdown limpio del proceso
222
+ * process.on('SIGTERM', async () => {
223
+ * await logger.getTransportManager()?.close();
224
+ * process.exit(0);
225
+ * });
226
+ */
227
+ close(): Promise<void>;
228
+ /**
229
+ * Número de transports actualmente en el set activo.
230
+ *
231
+ * @returns {number}
232
+ *
233
+ * @example
234
+ * if (tm.count === 0) console.warn('no transports configured');
235
+ */
236
+ get count(): number;
237
+ /**
238
+ * Lista los ids opacos de los transports actualmente activos.
239
+ *
240
+ * @returns {string[]} Array de ids (mismo formato opaco que devolvió
241
+ * {@link add}).
242
+ *
243
+ * @example
244
+ * for (const id of tm.list()) {
245
+ * console.log('removing transport', id);
246
+ * tm.remove(id);
247
+ * }
248
+ */
249
+ list(): string[];
250
+ }
251
+ //# sourceMappingURL=TransportManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransportManager.d.ts","sourceRoot":"","sources":["../../src/transports/TransportManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACX,MAAM,mBAAmB,CAAC;AAmB3B;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,OAAO,CAAC,EAAE,gBAAgB,KAAK,UAAU,CAAC;AAuClF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgE;IAEzF;;;;;;;;;;OAUG;gBACS,YAAY,CAAC,EAAE,QAAQ;IAMnC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAOxD;;;;;;;;;;OAUG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,GAAG,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM;IA+BpC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAc3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACG,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCnD;;;;;;;;;;;;;;OAcG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB5B;;;;;;;;;;;;;;;;;;OAkBG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5B;;;;;;;OAOG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;;;;;;;OAWG;IACH,IAAI,IAAI,MAAM,EAAE;CAGnB"}
@@ -0,0 +1,6 @@
1
+ export { TransportManager } from './TransportManager.js';
2
+ export { ConsoleTransport } from './ConsoleTransport.js';
3
+ export { FileTransport, type FileTransportOptions } from './FileTransport.js';
4
+ export { HttpTransport, type HttpTransportOptions } from './HttpTransport.js';
5
+ export { OtlpTransport, type OtlpTransportOptions } from './OtlpTransport.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}