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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. package/README.md +289 -185
  2. package/dist/Logger.d.ts +576 -205
  3. package/dist/Logger.d.ts.map +1 -1
  4. package/dist/ScopedLogger.d.ts +48 -292
  5. package/dist/ScopedLogger.d.ts.map +1 -1
  6. package/dist/chunks/HookBridge-CiRfR67f.cjs +190 -0
  7. package/dist/chunks/HookBridge-CiRfR67f.cjs.map +1 -0
  8. package/dist/chunks/HookBridge-SgMmbXZB.js +173 -0
  9. package/dist/chunks/HookBridge-SgMmbXZB.js.map +1 -0
  10. package/dist/chunks/LogContext-Cwn-1Zzb.js +85 -0
  11. package/dist/chunks/LogContext-Cwn-1Zzb.js.map +1 -0
  12. package/dist/chunks/LogContext-L7HzynFw.cjs +90 -0
  13. package/dist/chunks/LogContext-L7HzynFw.cjs.map +1 -0
  14. package/dist/chunks/SerializerBridge-BaOQOb8q.cjs +166 -0
  15. package/dist/chunks/SerializerBridge-BaOQOb8q.cjs.map +1 -0
  16. package/dist/chunks/SerializerBridge-BkpQu5c9.js +149 -0
  17. package/dist/chunks/SerializerBridge-BkpQu5c9.js.map +1 -0
  18. package/dist/chunks/StyleManager-CIpd6wbO.cjs +92 -0
  19. package/dist/chunks/StyleManager-CIpd6wbO.cjs.map +1 -0
  20. package/dist/chunks/StyleManager-LCvVlVdx.js +87 -0
  21. package/dist/chunks/StyleManager-LCvVlVdx.js.map +1 -0
  22. package/dist/chunks/core-Dzz7agGa.cjs +39 -0
  23. package/dist/chunks/core-Dzz7agGa.cjs.map +1 -0
  24. package/dist/chunks/core-PoT7RrTK.js +34 -0
  25. package/dist/chunks/core-PoT7RrTK.js.map +1 -0
  26. package/dist/chunks/environment-detector-CI3TrWK_.js +110 -0
  27. package/dist/chunks/environment-detector-CI3TrWK_.js.map +1 -0
  28. package/dist/chunks/environment-detector-Cnn6wr6O.cjs +163 -0
  29. package/dist/chunks/environment-detector-Cnn6wr6O.cjs.map +1 -0
  30. package/dist/chunks/server-fallback-BUKjdLS7.cjs +42 -0
  31. package/dist/chunks/server-fallback-BUKjdLS7.cjs.map +1 -0
  32. package/dist/chunks/server-fallback-BsuWH1Dk.js +37 -0
  33. package/dist/chunks/server-fallback-BsuWH1Dk.js.map +1 -0
  34. package/dist/chunks/spinner-D3FsF78o.js +700 -0
  35. package/dist/chunks/spinner-D3FsF78o.js.map +1 -0
  36. package/dist/chunks/spinner-DNvxbM9a.cjs +747 -0
  37. package/dist/chunks/spinner-DNvxbM9a.cjs.map +1 -0
  38. package/dist/chunks/styling-84N8T97t.js +941 -0
  39. package/dist/chunks/styling-84N8T97t.js.map +1 -0
  40. package/dist/chunks/styling-Cg5saQ46.cjs +994 -0
  41. package/dist/chunks/styling-Cg5saQ46.cjs.map +1 -0
  42. package/dist/chunks/transports-BiDk345e.js +715 -0
  43. package/dist/chunks/transports-BiDk345e.js.map +1 -0
  44. package/dist/chunks/transports-COPWmlF1.cjs +756 -0
  45. package/dist/chunks/transports-COPWmlF1.cjs.map +1 -0
  46. package/dist/chunks/utils-BqlFYocD.cjs +698 -0
  47. package/dist/chunks/utils-BqlFYocD.cjs.map +1 -0
  48. package/dist/chunks/utils-VETbVpkR.js +579 -0
  49. package/dist/chunks/utils-VETbVpkR.js.map +1 -0
  50. package/dist/cli/commands/ExportCommand.d.ts +8 -26
  51. package/dist/cli/commands/ExportCommand.d.ts.map +1 -1
  52. package/dist/cli/index.d.ts +1 -2
  53. package/dist/cli/index.d.ts.map +1 -1
  54. package/dist/cli-module.d.ts +13 -0
  55. package/dist/cli-module.d.ts.map +1 -0
  56. package/dist/cli.cjs +11 -0
  57. package/dist/cli.js +3 -0
  58. package/dist/constants.d.ts +16 -47
  59. package/dist/constants.d.ts.map +1 -1
  60. package/dist/context/LogContext.d.ts +146 -0
  61. package/dist/context/LogContext.d.ts.map +1 -0
  62. package/dist/context/index.d.ts +6 -0
  63. package/dist/context/index.d.ts.map +1 -0
  64. package/dist/context-module.d.ts +6 -0
  65. package/dist/context-module.d.ts.map +1 -0
  66. package/dist/context.cjs +3 -0
  67. package/dist/context.js +2 -0
  68. package/dist/core.cjs +281 -2
  69. package/dist/core.cjs.map +1 -1
  70. package/dist/core.d.ts +6 -7
  71. package/dist/core.d.ts.map +1 -1
  72. package/dist/core.js +258 -314
  73. package/dist/core.js.map +1 -1
  74. package/dist/example.d.ts.map +1 -1
  75. package/dist/hooks/HookBridge.d.ts +26 -0
  76. package/dist/hooks/HookBridge.d.ts.map +1 -0
  77. package/dist/hooks/HookManager.d.ts +26 -0
  78. package/dist/hooks/HookManager.d.ts.map +1 -0
  79. package/dist/hooks/index.d.ts +7 -0
  80. package/dist/hooks/index.d.ts.map +1 -0
  81. package/dist/hooks-module.d.ts +7 -0
  82. package/dist/hooks-module.d.ts.map +1 -0
  83. package/dist/hooks.cjs +5 -0
  84. package/dist/hooks.js +2 -0
  85. package/dist/index.cjs +2522 -2
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.d.ts +42 -130
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +2447 -158
  90. package/dist/index.js.map +1 -1
  91. package/dist/node-module.d.ts +10 -0
  92. package/dist/node-module.d.ts.map +1 -0
  93. package/dist/node.cjs +13 -0
  94. package/dist/node.cjs.map +1 -0
  95. package/dist/node.js +12 -0
  96. package/dist/node.js.map +1 -0
  97. package/dist/playground/TerminalBridge.d.ts +46 -0
  98. package/dist/playground/TerminalBridge.d.ts.map +1 -0
  99. package/dist/playground/box.d.ts +14 -0
  100. package/dist/playground/box.d.ts.map +1 -0
  101. package/dist/playground/cli-table.d.ts +14 -0
  102. package/dist/playground/cli-table.d.ts.map +1 -0
  103. package/dist/playground/divider.d.ts +10 -0
  104. package/dist/playground/divider.d.ts.map +1 -0
  105. package/dist/playground/header.d.ts +11 -0
  106. package/dist/playground/header.d.ts.map +1 -0
  107. package/dist/playground/index.d.ts +11 -0
  108. package/dist/playground/index.d.ts.map +1 -0
  109. package/dist/playground/server-fallback.d.ts +27 -0
  110. package/dist/playground/server-fallback.d.ts.map +1 -0
  111. package/dist/playground/spinner.d.ts +48 -0
  112. package/dist/playground/spinner.d.ts.map +1 -0
  113. package/dist/playground/step.d.ts +14 -0
  114. package/dist/playground/step.d.ts.map +1 -0
  115. package/dist/playground-module.d.ts +11 -0
  116. package/dist/playground-module.d.ts.map +1 -0
  117. package/dist/playground.cjs +9 -0
  118. package/dist/playground.js +2 -0
  119. package/dist/serializers/SerializerBridge.d.ts +21 -0
  120. package/dist/serializers/SerializerBridge.d.ts.map +1 -0
  121. package/dist/serializers/SerializerRegistry.d.ts +16 -0
  122. package/dist/serializers/SerializerRegistry.d.ts.map +1 -0
  123. package/dist/serializers/index.d.ts +7 -0
  124. package/dist/serializers/index.d.ts.map +1 -0
  125. package/dist/serializers-module.d.ts +7 -0
  126. package/dist/serializers-module.d.ts.map +1 -0
  127. package/dist/serializers.cjs +5 -0
  128. package/dist/serializers.js +2 -0
  129. package/dist/styles/StyleManager.d.ts +83 -0
  130. package/dist/styles/StyleManager.d.ts.map +1 -0
  131. package/dist/styles/index.d.ts +7 -0
  132. package/dist/styles/index.d.ts.map +1 -0
  133. package/dist/styles-module.d.ts +7 -0
  134. package/dist/styles-module.d.ts.map +1 -0
  135. package/dist/styles.cjs +7 -0
  136. package/dist/styles.js +3 -0
  137. package/dist/styling/banners.d.ts +6 -2
  138. package/dist/styling/banners.d.ts.map +1 -1
  139. package/dist/styling/index.d.ts +8 -3
  140. package/dist/styling/index.d.ts.map +1 -1
  141. package/dist/terminal/color-converter.d.ts +73 -0
  142. package/dist/terminal/color-converter.d.ts.map +1 -0
  143. package/dist/terminal/formatter.d.ts +23 -0
  144. package/dist/terminal/formatter.d.ts.map +1 -0
  145. package/dist/transports/ConsoleTransport.d.ts +9 -0
  146. package/dist/transports/ConsoleTransport.d.ts.map +1 -0
  147. package/dist/transports/FileTransport.d.ts +56 -0
  148. package/dist/transports/FileTransport.d.ts.map +1 -0
  149. package/dist/transports/HttpTransport.d.ts +67 -0
  150. package/dist/transports/HttpTransport.d.ts.map +1 -0
  151. package/dist/transports/OtlpTransport.d.ts +148 -0
  152. package/dist/transports/OtlpTransport.d.ts.map +1 -0
  153. package/dist/transports/TransportBridge.d.ts +37 -0
  154. package/dist/transports/TransportBridge.d.ts.map +1 -0
  155. package/dist/transports/TransportManager.d.ts +36 -0
  156. package/dist/transports/TransportManager.d.ts.map +1 -0
  157. package/dist/transports/index.d.ts +6 -0
  158. package/dist/transports/index.d.ts.map +1 -0
  159. package/dist/transports-module.d.ts +10 -0
  160. package/dist/transports-module.d.ts.map +1 -0
  161. package/dist/transports.cjs +7 -0
  162. package/dist/transports.js +2 -0
  163. package/dist/types/core.d.ts +188 -6
  164. package/dist/types/core.d.ts.map +1 -1
  165. package/dist/types/handlers.d.ts +0 -67
  166. package/dist/types/handlers.d.ts.map +1 -1
  167. package/dist/types/hooks.d.ts +60 -0
  168. package/dist/types/hooks.d.ts.map +1 -0
  169. package/dist/types/index.d.ts +7 -3
  170. package/dist/types/index.d.ts.map +1 -1
  171. package/dist/types/serializers.d.ts +25 -0
  172. package/dist/types/serializers.d.ts.map +1 -0
  173. package/dist/types/transports.d.ts +127 -0
  174. package/dist/types/transports.d.ts.map +1 -0
  175. package/dist/utils/ansi-colors.d.ts +115 -0
  176. package/dist/utils/ansi-colors.d.ts.map +1 -0
  177. package/dist/utils/environment-detector.d.ts +53 -0
  178. package/dist/utils/environment-detector.d.ts.map +1 -0
  179. package/dist/utils/formatting.d.ts +1 -0
  180. package/dist/utils/formatting.d.ts.map +1 -1
  181. package/dist/utils/index.d.ts +3 -2
  182. package/dist/utils/index.d.ts.map +1 -1
  183. package/dist/utils/output.d.ts +8 -11
  184. package/dist/utils/output.d.ts.map +1 -1
  185. package/dist/utils/stackTrace.d.ts.map +1 -1
  186. package/dist/utils/timestamps.d.ts +0 -12
  187. package/dist/utils/timestamps.d.ts.map +1 -1
  188. package/package.json +96 -21
  189. package/.claude/settings.local.json +0 -39
  190. package/.github/workflows/ci-quality.yml +0 -357
  191. package/.github/workflows/docs-demo.yml +0 -119
  192. package/.github/workflows/releases-core.yml +0 -512
  193. package/.github/workflows/releases-full.yml +0 -582
  194. package/.github/workflows-backup/ci.yml +0 -221
  195. package/.github/workflows-backup/nightly.yml +0 -196
  196. package/.github/workflows-backup/release-optimized.yml +0 -373
  197. package/.github/workflows-backup/release.yml +0 -269
  198. package/.release-notes-0.2.0.md +0 -129
  199. package/.yamllint +0 -28
  200. package/CHANGELOG.json +0 -865
  201. package/CLAUDE.md +0 -204
  202. package/bun.lock +0 -323
  203. package/demo.html +0 -847
  204. package/dist/.tsbuildinfo +0 -1
  205. package/dist/Logger.js +0 -1124
  206. package/dist/ScopedLogger.js +0 -426
  207. package/dist/chunks/Logger-Crw1woqR.js +0 -3464
  208. package/dist/chunks/Logger-Crw1woqR.js.map +0 -1
  209. package/dist/chunks/Logger-D_p3xnbq.js +0 -2
  210. package/dist/chunks/Logger-D_p3xnbq.js.map +0 -1
  211. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +0 -33
  212. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +0 -1
  213. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +0 -2
  214. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +0 -1
  215. package/dist/chunks/environment-Bxbnw4pd.js +0 -544
  216. package/dist/chunks/environment-Bxbnw4pd.js.map +0 -1
  217. package/dist/chunks/environment-Dm66zOML.js +0 -4
  218. package/dist/chunks/environment-Dm66zOML.js.map +0 -1
  219. package/dist/chunks/formatting-C0riPC5_.js +0 -95
  220. package/dist/chunks/formatting-C0riPC5_.js.map +0 -1
  221. package/dist/chunks/formatting-DNCAV66-.js +0 -2
  222. package/dist/chunks/formatting-DNCAV66-.js.map +0 -1
  223. package/dist/cli/CommandProcessor.js +0 -184
  224. package/dist/cli/commands/ConfigCommand.js +0 -88
  225. package/dist/cli/commands/ExportCommand.js +0 -243
  226. package/dist/cli/commands/HistoryCommand.d.ts +0 -50
  227. package/dist/cli/commands/HistoryCommand.d.ts.map +0 -1
  228. package/dist/cli/commands/HistoryCommand.js +0 -96
  229. package/dist/cli/commands/StatusCommand.d.ts +0 -33
  230. package/dist/cli/commands/StatusCommand.d.ts.map +0 -1
  231. package/dist/cli/commands/StatusCommand.js +0 -93
  232. package/dist/cli/commands/ThemeCommand.js +0 -79
  233. package/dist/cli/help.js +0 -118
  234. package/dist/cli/index.js +0 -46
  235. package/dist/constants.js +0 -159
  236. package/dist/example.js +0 -154
  237. package/dist/exports-module.d.ts +0 -203
  238. package/dist/exports-module.d.ts.map +0 -1
  239. package/dist/exports-module.js +0 -260
  240. package/dist/exports.cjs +0 -2
  241. package/dist/exports.cjs.map +0 -1
  242. package/dist/exports.js +0 -238
  243. package/dist/exports.js.map +0 -1
  244. package/dist/handlers/AnalyticsLogHandler.d.ts +0 -11
  245. package/dist/handlers/AnalyticsLogHandler.d.ts.map +0 -1
  246. package/dist/handlers/AnalyticsLogHandler.js +0 -19
  247. package/dist/handlers/ExportLogHandler.d.ts +0 -103
  248. package/dist/handlers/ExportLogHandler.d.ts.map +0 -1
  249. package/dist/handlers/ExportLogHandler.js +0 -516
  250. package/dist/handlers/FileLogHandler.d.ts +0 -36
  251. package/dist/handlers/FileLogHandler.d.ts.map +0 -1
  252. package/dist/handlers/FileLogHandler.js +0 -156
  253. package/dist/handlers/RemoteLogHandler.d.ts +0 -14
  254. package/dist/handlers/RemoteLogHandler.d.ts.map +0 -1
  255. package/dist/handlers/RemoteLogHandler.js +0 -37
  256. package/dist/handlers/index.d.ts +0 -8
  257. package/dist/handlers/index.d.ts.map +0 -1
  258. package/dist/handlers/index.js +0 -7
  259. package/dist/main.js +0 -139
  260. package/dist/styling/LogStyleBuilder.d.ts +0 -149
  261. package/dist/styling/LogStyleBuilder.d.ts.map +0 -1
  262. package/dist/styling/LogStyleBuilder.js +0 -289
  263. package/dist/styling/SemanticStyles.d.ts +0 -181
  264. package/dist/styling/SemanticStyles.d.ts.map +0 -1
  265. package/dist/styling/SemanticStyles.js +0 -339
  266. package/dist/styling/SmartPresets.js +0 -276
  267. package/dist/styling/StyleBuilder.js +0 -280
  268. package/dist/styling/banners.js +0 -155
  269. package/dist/styling/index.js +0 -9
  270. package/dist/styling/themes.js +0 -231
  271. package/dist/styling-module.d.ts +0 -185
  272. package/dist/styling-module.d.ts.map +0 -1
  273. package/dist/styling-module.js +0 -199
  274. package/dist/styling.cjs +0 -2
  275. package/dist/styling.cjs.map +0 -1
  276. package/dist/styling.js +0 -146
  277. package/dist/styling.js.map +0 -1
  278. package/dist/types/Logger.d.ts +0 -700
  279. package/dist/types/Logger.d.ts.map +0 -1
  280. package/dist/types/ScopedLogger.d.ts +0 -310
  281. package/dist/types/ScopedLogger.d.ts.map +0 -1
  282. package/dist/types/cli/CommandProcessor.d.ts +0 -100
  283. package/dist/types/cli/CommandProcessor.d.ts.map +0 -1
  284. package/dist/types/cli/commands/ConfigCommand.d.ts +0 -14
  285. package/dist/types/cli/commands/ConfigCommand.d.ts.map +0 -1
  286. package/dist/types/cli/commands/ExportCommand.d.ts +0 -48
  287. package/dist/types/cli/commands/ExportCommand.d.ts.map +0 -1
  288. package/dist/types/cli/commands/HistoryCommand.d.ts +0 -47
  289. package/dist/types/cli/commands/HistoryCommand.d.ts.map +0 -1
  290. package/dist/types/cli/commands/StatusCommand.d.ts +0 -30
  291. package/dist/types/cli/commands/StatusCommand.d.ts.map +0 -1
  292. package/dist/types/cli/commands/ThemeCommand.d.ts +0 -30
  293. package/dist/types/cli/commands/ThemeCommand.d.ts.map +0 -1
  294. package/dist/types/cli/help.d.ts +0 -12
  295. package/dist/types/cli/help.d.ts.map +0 -1
  296. package/dist/types/cli/index.d.ts +0 -15
  297. package/dist/types/cli/index.d.ts.map +0 -1
  298. package/dist/types/constants.d.ts +0 -119
  299. package/dist/types/constants.d.ts.map +0 -1
  300. package/dist/types/core.js +0 -28
  301. package/dist/types/example.d.ts +0 -18
  302. package/dist/types/example.d.ts.map +0 -1
  303. package/dist/types/exports-module.d.ts +0 -196
  304. package/dist/types/exports-module.d.ts.map +0 -1
  305. package/dist/types/handlers/AnalyticsLogHandler.d.ts +0 -8
  306. package/dist/types/handlers/AnalyticsLogHandler.d.ts.map +0 -1
  307. package/dist/types/handlers/ExportLogHandler.d.ts +0 -100
  308. package/dist/types/handlers/ExportLogHandler.d.ts.map +0 -1
  309. package/dist/types/handlers/FileLogHandler.d.ts +0 -33
  310. package/dist/types/handlers/FileLogHandler.d.ts.map +0 -1
  311. package/dist/types/handlers/RemoteLogHandler.d.ts +0 -11
  312. package/dist/types/handlers/RemoteLogHandler.d.ts.map +0 -1
  313. package/dist/types/handlers/index.d.ts +0 -8
  314. package/dist/types/handlers/index.d.ts.map +0 -1
  315. package/dist/types/handlers.js +0 -4
  316. package/dist/types/index.js +0 -4
  317. package/dist/types/main.d.ts +0 -2
  318. package/dist/types/main.d.ts.map +0 -1
  319. package/dist/types/styling/LogStyleBuilder.d.ts +0 -146
  320. package/dist/types/styling/LogStyleBuilder.d.ts.map +0 -1
  321. package/dist/types/styling/SemanticStyles.d.ts +0 -178
  322. package/dist/types/styling/SemanticStyles.d.ts.map +0 -1
  323. package/dist/types/styling/SmartPresets.d.ts +0 -22
  324. package/dist/types/styling/SmartPresets.d.ts.map +0 -1
  325. package/dist/types/styling/StyleBuilder.d.ts +0 -140
  326. package/dist/types/styling/StyleBuilder.d.ts.map +0 -1
  327. package/dist/types/styling/banners.d.ts +0 -42
  328. package/dist/types/styling/banners.d.ts.map +0 -1
  329. package/dist/types/styling/index.d.ts +0 -10
  330. package/dist/types/styling/index.d.ts.map +0 -1
  331. package/dist/types/styling/themes.d.ts +0 -7
  332. package/dist/types/styling/themes.d.ts.map +0 -1
  333. package/dist/types/styling-module.d.ts +0 -178
  334. package/dist/types/styling-module.d.ts.map +0 -1
  335. package/dist/types/types/core.d.ts +0 -221
  336. package/dist/types/types/core.d.ts.map +0 -1
  337. package/dist/types/types/handlers.d.ts +0 -85
  338. package/dist/types/types/handlers.d.ts.map +0 -1
  339. package/dist/types/types/index.d.ts +0 -7
  340. package/dist/types/types/index.d.ts.map +0 -1
  341. package/dist/types/utils/environment.d.ts +0 -47
  342. package/dist/types/utils/environment.d.ts.map +0 -1
  343. package/dist/types/utils/formatting.d.ts +0 -37
  344. package/dist/types/utils/formatting.d.ts.map +0 -1
  345. package/dist/types/utils/index.d.ts +0 -7
  346. package/dist/types/utils/index.d.ts.map +0 -1
  347. package/dist/types/utils/opentui-detection.d.ts +0 -34
  348. package/dist/types/utils/opentui-detection.d.ts.map +0 -1
  349. package/dist/types/utils/output.d.ts +0 -41
  350. package/dist/types/utils/output.d.ts.map +0 -1
  351. package/dist/types/utils/stackTrace.d.ts +0 -6
  352. package/dist/types/utils/stackTrace.d.ts.map +0 -1
  353. package/dist/types/utils/timestamps.d.ts +0 -20
  354. package/dist/types/utils/timestamps.d.ts.map +0 -1
  355. package/dist/utils/environment.d.ts +0 -47
  356. package/dist/utils/environment.d.ts.map +0 -1
  357. package/dist/utils/environment.js +0 -85
  358. package/dist/utils/formatting.js +0 -117
  359. package/dist/utils/index.js +0 -6
  360. package/dist/utils/opentui-detection.d.ts +0 -34
  361. package/dist/utils/opentui-detection.d.ts.map +0 -1
  362. package/dist/utils/opentui-detection.js +0 -116
  363. package/dist/utils/output.js +0 -150
  364. package/dist/utils/stackTrace.js +0 -81
  365. package/dist/utils/timestamps.js +0 -71
  366. package/dist/vite.svg +0 -1
  367. package/docs/API.md +0 -691
  368. package/docs/CORE.md +0 -264
  369. package/docs/DEVELOPMENT.md +0 -731
  370. package/docs/EXPORTS.md +0 -467
  371. package/docs/PACKAGES.md +0 -244
  372. package/docs/STYLING.md +0 -405
  373. package/docs/_config.yml +0 -36
  374. package/docs/index.md +0 -179
  375. package/examples/README.md +0 -208
  376. package/examples/basic-logging.js +0 -75
  377. package/examples/data-export.js +0 -234
  378. package/examples/package.json +0 -16
  379. package/examples/performance-timing.js +0 -170
  380. package/examples/simplified-api.js +0 -124
  381. package/examples/styling-themes.js +0 -207
  382. package/index.html +0 -358
  383. package/packages/core/package.json +0 -57
  384. package/packages/exports/package.json +0 -41
  385. package/packages/nodejs-opentui/README.md +0 -232
  386. package/packages/nodejs-opentui/package.json +0 -72
  387. package/packages/nodejs-opentui/src/LogRenderer.ts +0 -171
  388. package/packages/nodejs-opentui/src/OpenTUILogHandler.ts +0 -178
  389. package/packages/nodejs-opentui/src/components/LogBadge.tsx +0 -131
  390. package/packages/nodejs-opentui/src/index.ts +0 -133
  391. package/packages/nodejs-opentui/src/types.ts +0 -158
  392. package/packages/nodejs-opentui/tsconfig.json +0 -20
  393. package/packages/styling/package.json +0 -41
  394. package/project-utils/README.md +0 -172
  395. package/project-utils/auto-release-gemini.ts +0 -1193
  396. package/project-utils/auto-release-ui.ts +0 -1329
  397. package/project-utils/commit-generator.ts +0 -1385
  398. package/project-utils/commit-ui.ts +0 -264
  399. package/project-utils/git-utils.ts +0 -199
  400. package/project-utils/github-release-manager.ts +0 -466
  401. package/project-utils/project-config.ts +0 -260
  402. package/project-utils/prompt-templates.js +0 -345
  403. package/project-utils/prompt-templates.ts +0 -422
  404. package/project-utils/version-manager.ts +0 -1078
  405. package/public/vite.svg +0 -1
  406. package/src/Logger.ts +0 -1276
  407. package/src/ScopedLogger.ts +0 -454
  408. package/src/cli/CommandProcessor.ts +0 -248
  409. package/src/cli/commands/ConfigCommand.ts +0 -93
  410. package/src/cli/commands/ExportCommand.ts +0 -276
  411. package/src/cli/commands/HistoryCommand.ts +0 -117
  412. package/src/cli/commands/StatusCommand.ts +0 -112
  413. package/src/cli/commands/ThemeCommand.ts +0 -88
  414. package/src/cli/help.ts +0 -127
  415. package/src/cli/index.ts +0 -71
  416. package/src/constants.ts +0 -171
  417. package/src/core.ts +0 -393
  418. package/src/example.ts +0 -210
  419. package/src/exports-module.ts +0 -311
  420. package/src/handlers/AnalyticsLogHandler.ts +0 -22
  421. package/src/handlers/ExportLogHandler.ts +0 -609
  422. package/src/handlers/FileLogHandler.ts +0 -169
  423. package/src/handlers/RemoteLogHandler.ts +0 -42
  424. package/src/handlers/index.ts +0 -8
  425. package/src/index.ts +0 -209
  426. package/src/main.ts +0 -196
  427. package/src/style.css +0 -96
  428. package/src/styling/LogStyleBuilder.ts +0 -355
  429. package/src/styling/SemanticStyles.ts +0 -380
  430. package/src/styling/SmartPresets.ts +0 -288
  431. package/src/styling/StyleBuilder.ts +0 -319
  432. package/src/styling/banners.ts +0 -168
  433. package/src/styling/index.ts +0 -27
  434. package/src/styling/themes.ts +0 -235
  435. package/src/styling-module.ts +0 -244
  436. package/src/types/core.ts +0 -236
  437. package/src/types/handlers.ts +0 -95
  438. package/src/types/index.ts +0 -35
  439. package/src/typescript.svg +0 -1
  440. package/src/utils/environment.ts +0 -94
  441. package/src/utils/formatting.ts +0 -142
  442. package/src/utils/index.ts +0 -21
  443. package/src/utils/opentui-detection.ts +0 -138
  444. package/src/utils/output.ts +0 -185
  445. package/src/utils/stackTrace.ts +0 -95
  446. package/src/utils/timestamps.ts +0 -80
  447. package/src/vite-env.d.ts +0 -1
  448. package/test-core-browser.html +0 -237
  449. package/test-core-node.js +0 -63
  450. package/tests/test-conflict-resolution.ts +0 -391
  451. package/tests/validate-workflows.sh +0 -131
  452. package/tests/yaml-autofix.sh +0 -146
  453. package/tsconfig.json +0 -50
  454. package/vite.config.ts +0 -223
@@ -1,609 +0,0 @@
1
- /**
2
- * @fileoverview Export and clipboard log handler for Advanced Logger
3
- */
4
-
5
- import type {
6
- ILogHandler,
7
- LogLevel,
8
- LogMetadata,
9
- LogEntry,
10
- ExportFilters,
11
- ExportOptions,
12
- ExportResult,
13
- BufferStats,
14
- ExportFormat
15
- } from '../types/index.js';
16
- import { parseTimeInput, formatDisplayTime, safeStringify, escapeHtml, generateLogId } from '../utils/index.js';
17
- import { BUFFER_LIMITS } from '../constants.js';
18
-
19
- /**
20
- * Export log handler with circular buffer and multiple export formats
21
- */
22
- export class ExportLogHandler implements ILogHandler {
23
- private buffer: LogEntry[] = [];
24
- private maxSize: number;
25
- private groupDepth: number = 0;
26
- private currentGroup?: string;
27
-
28
- constructor(maxSize: number = BUFFER_LIMITS.DEFAULT_SIZE) {
29
- this.maxSize = Math.min(Math.max(maxSize, BUFFER_LIMITS.MIN_SIZE), BUFFER_LIMITS.MAX_SIZE);
30
- }
31
-
32
- /**
33
- * Handle incoming log and store in buffer
34
- */
35
- handle(level: LogLevel, message: string, args: any[], metadata: LogMetadata): void {
36
- const entry: LogEntry = {
37
- id: generateLogId(),
38
- timestamp: metadata.timestamp,
39
- level,
40
- prefix: metadata.prefix,
41
- message,
42
- args,
43
- location: metadata.stackInfo,
44
- groupInfo: this.groupDepth > 0 ? {
45
- depth: this.groupDepth,
46
- groupName: this.currentGroup
47
- } : undefined
48
- };
49
-
50
- // Add to circular buffer
51
- this.buffer.push(entry);
52
- if (this.buffer.length > this.maxSize) {
53
- this.buffer.shift(); // Remove oldest entry
54
- }
55
- }
56
-
57
- /**
58
- * Set group tracking for nested logs
59
- */
60
- setGroupInfo(depth: number, groupName?: string): void {
61
- this.groupDepth = depth;
62
- this.currentGroup = groupName;
63
- }
64
-
65
- /**
66
- * Get buffer statistics
67
- */
68
- getBufferStats(): BufferStats {
69
- const levelCounts = this.buffer.reduce((acc, entry) => {
70
- const currentCount = acc[entry.level] ? acc[entry.level] : 0;
71
- acc[entry.level] = currentCount + 1;
72
- return acc;
73
- }, {} as Record<LogLevel, number>);
74
-
75
- let oldestLog: Date | undefined;
76
- let newestLog: Date | undefined;
77
-
78
- if (this.buffer.length > 0) {
79
- const firstEntry = this.buffer[0];
80
- const lastEntry = this.buffer[this.buffer.length - 1];
81
-
82
- if (firstEntry && firstEntry.timestamp) {
83
- oldestLog = new Date(firstEntry.timestamp);
84
- }
85
-
86
- if (lastEntry && lastEntry.timestamp) {
87
- newestLog = new Date(lastEntry.timestamp);
88
- }
89
- }
90
-
91
- return {
92
- size: this.buffer.length,
93
- maxSize: this.maxSize,
94
- usage: (this.buffer.length / this.maxSize) * 100,
95
- oldestLog,
96
- newestLog,
97
- levelCounts: {
98
- debug: levelCounts.debug ? levelCounts.debug : 0,
99
- info: levelCounts.info ? levelCounts.info : 0,
100
- warn: levelCounts.warn ? levelCounts.warn : 0,
101
- error: levelCounts.error ? levelCounts.error : 0,
102
- critical: levelCounts.critical ? levelCounts.critical : 0
103
- }
104
- };
105
- }
106
-
107
- /**
108
- * Clear the buffer
109
- */
110
- clearBuffer(): void {
111
- this.buffer = [];
112
- }
113
-
114
- /**
115
- * Set buffer size (with limits)
116
- */
117
- setBufferSize(size: number): void {
118
- this.maxSize = Math.min(Math.max(size, BUFFER_LIMITS.MIN_SIZE), BUFFER_LIMITS.MAX_SIZE);
119
-
120
- // Trim buffer if new size is smaller
121
- if (this.buffer.length > this.maxSize) {
122
- this.buffer = this.buffer.slice(-this.maxSize);
123
- }
124
- }
125
-
126
- /**
127
- * Filter logs based on criteria
128
- */
129
- private filterLogs(filters: ExportFilters = {}): LogEntry[] {
130
- let filtered = [...this.buffer];
131
-
132
- // Filter by levels
133
- if (filters.levels?.length) {
134
- filtered = filtered.filter(entry => filters.levels!.includes(entry.level));
135
- }
136
-
137
- // Filter by prefixes
138
- if (filters.prefixes?.length) {
139
- filtered = filtered.filter(entry =>
140
- entry.prefix && filters.prefixes!.includes(entry.prefix)
141
- );
142
- }
143
-
144
- // Exclude prefixes
145
- if (filters.excludePrefixes?.length) {
146
- filtered = filtered.filter(entry =>
147
- !entry.prefix || !filters.excludePrefixes!.includes(entry.prefix)
148
- );
149
- }
150
-
151
- // Filter by time range
152
- if (filters.since) {
153
- const sinceDate = parseTimeInput(filters.since);
154
- filtered = filtered.filter(entry => new Date(entry.timestamp) >= sinceDate);
155
- }
156
-
157
- if (filters.until) {
158
- const untilDate = parseTimeInput(filters.until);
159
- filtered = filtered.filter(entry => new Date(entry.timestamp) <= untilDate);
160
- }
161
-
162
- // Filter by stack trace presence
163
- if (filters.withStackTrace) {
164
- filtered = filtered.filter(entry => entry.location);
165
- }
166
-
167
- // Filter errors only
168
- if (filters.errorsOnly) {
169
- filtered = filtered.filter(entry => entry.level === 'error' || entry.level === 'critical');
170
- }
171
-
172
- // Search in messages
173
- if (filters.search) {
174
- const searchTerm = filters.search.toLowerCase();
175
- filtered = filtered.filter(entry =>
176
- entry.message.toLowerCase().includes(searchTerm) ||
177
- entry.args.some(arg =>
178
- String(arg).toLowerCase().includes(searchTerm)
179
- )
180
- );
181
- }
182
-
183
- // Limit results
184
- if (filters.last) {
185
- filtered = filtered.slice(-filters.last);
186
- }
187
-
188
- if (filters.first) {
189
- filtered = filtered.slice(0, filters.first);
190
- }
191
-
192
- return filtered;
193
- }
194
-
195
- /**
196
- * Export logs in JSON format
197
- */
198
- private exportJSON(logs: LogEntry[], options: ExportOptions): string {
199
- const data = logs.map(entry => ({
200
- timestamp: entry.timestamp,
201
- level: entry.level,
202
- prefix: entry.prefix,
203
- message: entry.message,
204
- ...(options.minimal ? {} : {
205
- args: entry.args.slice(1),
206
- location: entry.location,
207
- groupInfo: entry.groupInfo
208
- })
209
- }));
210
-
211
- return options.compact
212
- ? JSON.stringify(data)
213
- : JSON.stringify(data, null, 2);
214
- }
215
-
216
- /**
217
- * Export logs in CSV format
218
- */
219
- private exportCSV(logs: LogEntry[], options: ExportOptions): string {
220
- const headers = options.minimal
221
- ? ['Timestamp', 'Level', 'Prefix', 'Message']
222
- : ['Timestamp', 'Level', 'Prefix', 'Message', 'File', 'Line', 'Args'];
223
-
224
- const rows = logs.map(entry => {
225
- const baseRow = [
226
- formatDisplayTime(new Date(entry.timestamp), 'full'),
227
- entry.level.toUpperCase(),
228
- entry.prefix || '',
229
- `"${entry.message.replace(/"/g, '""')}"`
230
- ];
231
-
232
- if (!options.minimal) {
233
- baseRow.push(
234
- entry.location?.file || '',
235
- entry.location?.line?.toString() || '',
236
- `"${safeStringify(entry.args.slice(1)).replace(/"/g, '""')}"`
237
- );
238
- }
239
-
240
- return baseRow;
241
- });
242
-
243
- return [headers.join(','), ...rows.map(row => row.join(','))].join('\n');
244
- }
245
-
246
- /**
247
- * Export logs in Markdown format
248
- */
249
- private exportMarkdown(logs: LogEntry[], options: ExportOptions): string {
250
- const now = new Date();
251
- let content = `# Log Export - ${formatDisplayTime(now, 'full')}\n\n`;
252
-
253
- // Add summary if not minimal
254
- if (!options.minimal) {
255
- const summary = this.getBufferStats();
256
- content += `## Summary\n`;
257
- content += `- **Total logs**: ${logs.length}\n`;
258
- content += `- **Errors**: ${summary.levelCounts.error + summary.levelCounts.critical}\n`;
259
- content += `- **Warnings**: ${summary.levelCounts.warn}\n\n`;
260
- }
261
-
262
- // Group by level if specified
263
- if (options.groupBy === 'level') {
264
- const grouped = logs.reduce((acc, entry) => {
265
- const level = entry.level;
266
- if (!acc[level]) {
267
- acc[level] = [];
268
- }
269
- // We just ensured the array exists above
270
- const levelArray = acc[level];
271
- if (levelArray) {
272
- levelArray.push(entry);
273
- }
274
- return acc;
275
- }, {} as Record<string, LogEntry[]>);
276
-
277
- Object.entries(grouped).forEach(([level, entries]) => {
278
- const emoji = this.getLevelEmoji(level as LogLevel);
279
- content += `## ${emoji} ${level.toUpperCase()} (${entries.length})\n\n`;
280
-
281
- entries.forEach(entry => {
282
- const time = formatDisplayTime(new Date(entry.timestamp), 'time-only');
283
- const location = entry.location ? ` (${entry.location.file}:${entry.location.line})` : '';
284
- const prefix = entry.prefix ? ` **${entry.prefix}**:` : '';
285
- content += `- \`${time}\`${prefix} ${entry.message}${location}\n`;
286
- });
287
- content += '\n';
288
- });
289
- } else {
290
- content += '## Logs\n\n';
291
- logs.forEach(entry => {
292
- const time = formatDisplayTime(new Date(entry.timestamp), 'time-only');
293
- const emoji = this.getLevelEmoji(entry.level);
294
- const location = entry.location ? ` (${entry.location.file}:${entry.location.line})` : '';
295
- const prefix = entry.prefix ? ` **${entry.prefix}**:` : '';
296
- content += `- \`${time}\` ${emoji}${prefix} ${entry.message}${location}\n`;
297
- });
298
- }
299
-
300
- return content;
301
- }
302
-
303
- /**
304
- * Export logs in plain text format
305
- */
306
- private exportPlain(logs: LogEntry[], options: ExportOptions): string {
307
- return logs.map(entry => {
308
- const time = formatDisplayTime(new Date(entry.timestamp), options.minimal ? 'time-only' : 'short');
309
- const level = entry.level.toUpperCase().padEnd(8);
310
- const prefix = entry.prefix ? `[${entry.prefix}] ` : '';
311
- const location = (!options.minimal && entry.location) ? ` (${entry.location.file}:${entry.location.line})` : '';
312
-
313
- return `${time} ${level} ${prefix}${entry.message}${location}`;
314
- }).join('\n');
315
- }
316
-
317
- /**
318
- * Export logs in HTML format
319
- */
320
- private exportHTML(logs: LogEntry[], _options: ExportOptions): string {
321
- const title = `Log Export - ${formatDisplayTime(new Date(), 'full')}`;
322
-
323
- let html = `<!DOCTYPE html>
324
- <html lang="en">
325
- <head>
326
- <meta charset="UTF-8">
327
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
328
- <title>${title}</title>
329
- <style>
330
- body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; margin: 20px; line-height: 1.6; }
331
- .header { border-bottom: 2px solid #ddd; padding-bottom: 20px; margin-bottom: 20px; }
332
- .log-entry { margin: 5px 0; padding: 8px; border-radius: 4px; font-family: 'Monaco', 'Consolas', monospace; }
333
- .timestamp { color: #666; font-size: 0.9em; }
334
- .level { font-weight: bold; padding: 2px 6px; border-radius: 3px; margin: 0 8px; }
335
- .prefix { background: #2d3748; color: #e2e8f0; padding: 2px 6px; border-radius: 3px; margin: 0 8px; }
336
- .location { color: #718096; font-size: 0.9em; }
337
- .debug { background: #f0f4ff; }
338
- .info { background: #f0f9ff; }
339
- .warn { background: #fffbeb; }
340
- .error { background: #fef2f2; }
341
- .critical { background: #fef2f2; border-left: 4px solid #dc2626; }
342
- .level.debug { background: #667eea; color: white; }
343
- .level.info { background: #74b9ff; color: white; }
344
- .level.warn { background: #fdcb6e; color: #2d3436; }
345
- .level.error { background: #e84393; color: white; }
346
- .level.critical { background: #ff3838; color: white; }
347
- </style>
348
- </head>
349
- <body>
350
- <div class="header">
351
- <h1>${title}</h1>
352
- <p>Generated by Advanced Logger v2.0.0</p>
353
- </div>
354
- <div class="logs">`;
355
-
356
- logs.forEach(entry => {
357
- const time = formatDisplayTime(new Date(entry.timestamp), 'full');
358
- const location = entry.location ? ` <span class="location">(${escapeHtml(entry.location.file)}:${entry.location.line})</span>` : '';
359
- const prefix = entry.prefix ? ` <span class="prefix">${escapeHtml(entry.prefix)}</span>` : '';
360
-
361
- html += `
362
- <div class="log-entry ${entry.level}">
363
- <span class="timestamp">${time}</span>
364
- <span class="level ${entry.level}">${entry.level.toUpperCase()}</span>
365
- ${prefix}
366
- <span class="message">${escapeHtml(entry.message)}</span>
367
- ${location}
368
- </div>`;
369
- });
370
-
371
- html += `
372
- </div>
373
- </body>
374
- </html>`;
375
-
376
- return html;
377
- }
378
-
379
- /**
380
- * Get emoji for log level
381
- */
382
- private getLevelEmoji(level: LogLevel): string {
383
- const emojis = {
384
- debug: '🐞',
385
- info: 'ℹ️',
386
- warn: '⚠️',
387
- error: '❌',
388
- critical: '🔥'
389
- };
390
- return emojis[level] || '';
391
- }
392
-
393
- /**
394
- * Main export function
395
- */
396
- export(format: ExportFormat, filters: ExportFilters = {}, options: ExportOptions = {}): ExportResult {
397
- const filteredLogs = this.filterLogs(filters);
398
-
399
- let data: string;
400
- switch (format) {
401
- case 'json':
402
- data = this.exportJSON(filteredLogs, options);
403
- break;
404
- case 'csv':
405
- data = this.exportCSV(filteredLogs, options);
406
- break;
407
- case 'markdown':
408
- data = this.exportMarkdown(filteredLogs, options);
409
- break;
410
- case 'plain':
411
- data = this.exportPlain(filteredLogs, options);
412
- break;
413
- case 'html':
414
- data = this.exportHTML(filteredLogs, options);
415
- break;
416
- default:
417
- throw new Error(`Unsupported export format: ${format}`);
418
- }
419
-
420
- return {
421
- format,
422
- data,
423
- metadata: {
424
- totalLogs: this.buffer.length,
425
- filteredLogs: filteredLogs.length,
426
- exportedAt: new Date().toISOString(),
427
- filters,
428
- options
429
- }
430
- };
431
- }
432
-
433
- /**
434
- * Copy to clipboard with fallback
435
- */
436
- async copyToClipboard(format: ExportFormat, filters: ExportFilters = {}, options: ExportOptions = {}): Promise<boolean> {
437
- const result = this.export(format, filters, options);
438
-
439
- try {
440
- if (navigator.clipboard && window.isSecureContext) {
441
- await navigator.clipboard.writeText(result.data);
442
- return true;
443
- } else {
444
- // Fallback for non-secure contexts
445
- const textArea = document.createElement('textarea');
446
- textArea.value = result.data;
447
- textArea.style.position = 'fixed';
448
- textArea.style.opacity = '0';
449
- document.body.appendChild(textArea);
450
- textArea.focus();
451
- textArea.select();
452
- const success = document.execCommand('copy');
453
- document.body.removeChild(textArea);
454
- return success;
455
- }
456
- } catch (error) {
457
- console.error('Failed to copy to clipboard:', error);
458
- return false;
459
- }
460
- }
461
-
462
- /**
463
- * Get all logs (for debugging)
464
- */
465
- getAllLogs(): LogEntry[] {
466
- return [...this.buffer];
467
- }
468
-
469
- /**
470
- * Save export to file with download prompt
471
- */
472
- async saveToFile(format: ExportFormat, filters: ExportFilters = {}, options: ExportOptions = {}): Promise<boolean> {
473
- try {
474
- const result = this.export(format, filters, options);
475
- const blob = new Blob([result.data], {
476
- type: this.getMimeType(format)
477
- });
478
-
479
- const url = URL.createObjectURL(blob);
480
- const a = document.createElement('a');
481
- const filename = this.generateFilename(format, filters);
482
-
483
- a.href = url;
484
- a.download = filename;
485
- a.style.display = 'none';
486
- document.body.appendChild(a);
487
- a.click();
488
- document.body.removeChild(a);
489
- URL.revokeObjectURL(url);
490
-
491
- return true;
492
- } catch (error) {
493
- console.error('Failed to save file:', error);
494
- return false;
495
- }
496
- }
497
-
498
- /**
499
- * Get MIME type for format
500
- */
501
- private getMimeType(format: ExportFormat): string {
502
- const mimeTypes = {
503
- json: 'application/json',
504
- csv: 'text/csv',
505
- markdown: 'text/markdown',
506
- plain: 'text/plain',
507
- html: 'text/html'
508
- };
509
- return mimeTypes[format] || 'text/plain';
510
- }
511
-
512
- /**
513
- * Generate filename with timestamp
514
- */
515
- private generateFilename(format: ExportFormat, filters: ExportFilters): string {
516
- const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5);
517
- const prefix = filters.prefixes?.length === 1 ? `_${filters.prefixes[0]}` : '';
518
- const extension = format === 'markdown' ? 'md' : format;
519
- return `logs${prefix}_${timestamp}.${extension}`;
520
- }
521
-
522
- /**
523
- * Stream logs to external endpoint
524
- */
525
- async streamToEndpoint(endpoint: string, filters: ExportFilters = {}, options: {
526
- apiKey?: string;
527
- batchSize?: number;
528
- format?: ExportFormat
529
- } = {}): Promise<boolean> {
530
- try {
531
- const logs = this.filterLogs(filters);
532
- const batchSize = options.batchSize || 100;
533
- const format = options.format || 'json';
534
-
535
- // Send in batches
536
- for (let i = 0; i < logs.length; i += batchSize) {
537
- const batch = logs.slice(i, i + batchSize);
538
- const result = this.export(format, {}, { compact: true });
539
-
540
- const headers: Record<string, string> = {
541
- 'Content-Type': 'application/json'
542
- };
543
-
544
- if (options.apiKey) {
545
- headers['Authorization'] = `Bearer ${options.apiKey}`;
546
- }
547
-
548
- const response = await fetch(endpoint, {
549
- method: 'POST',
550
- headers,
551
- body: JSON.stringify({
552
- logs: batch,
553
- metadata: {
554
- batchIndex: Math.floor(i / batchSize),
555
- totalBatches: Math.ceil(logs.length / batchSize),
556
- timestamp: new Date().toISOString()
557
- }
558
- })
559
- });
560
-
561
- if (!response.ok) {
562
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
563
- }
564
- }
565
-
566
- return true;
567
- } catch (error) {
568
- console.error('Failed to stream logs:', error);
569
- return false;
570
- }
571
- }
572
-
573
- /**
574
- * Create export with metadata enrichment
575
- */
576
- exportWithMetadata(format: ExportFormat, filters: ExportFilters = {}, options: ExportOptions = {}): ExportResult {
577
- const baseResult = this.export(format, filters, options);
578
- const bufferStats = this.getBufferStats();
579
-
580
- return {
581
- ...baseResult,
582
- metadata: {
583
- ...baseResult.metadata,
584
- bufferStats: bufferStats,
585
- performance: {
586
- memoryUsage: this.estimateMemoryUsage(),
587
- processingTime: Date.now()
588
- },
589
- system: {
590
- userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : 'Node.js',
591
- timestamp: new Date().toISOString(),
592
- timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
593
- }
594
- } as any
595
- };
596
- }
597
-
598
- /**
599
- * Estimate memory usage of buffer
600
- */
601
- private estimateMemoryUsage(): number {
602
- const sampleEntry = this.buffer[0];
603
- if (!sampleEntry) return 0;
604
-
605
- // Rough estimation: JSON.stringify size * buffer length
606
- const sampleSize = JSON.stringify(sampleEntry).length;
607
- return sampleSize * this.buffer.length;
608
- }
609
- }