watch-tail 0.3.1 → 0.5.0

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 (382) hide show
  1. package/README.md +157 -3
  2. package/build/client/_app/immutable/assets/0.BQQ1YLPc.css +2 -0
  3. package/build/client/_app/immutable/assets/0.BQQ1YLPc.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.BQQ1YLPc.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/BrushContext.2tkUc39H.css +1 -0
  6. package/build/client/_app/immutable/assets/BrushContext.2tkUc39H.css.br +0 -0
  7. package/build/client/_app/immutable/assets/BrushContext.2tkUc39H.css.gz +0 -0
  8. package/build/client/_app/immutable/assets/ChartAnnotations.Bw8CGteN.css +1 -0
  9. package/build/client/_app/immutable/assets/ChartAnnotations.Bw8CGteN.css.br +0 -0
  10. package/build/client/_app/immutable/assets/ChartAnnotations.Bw8CGteN.css.gz +0 -0
  11. package/build/client/_app/immutable/assets/Circle.C5MKzgk2.css +1 -0
  12. package/build/client/_app/immutable/assets/Circle.C5MKzgk2.css.br +1 -0
  13. package/build/client/_app/immutable/assets/Circle.C5MKzgk2.css.gz +0 -0
  14. package/build/client/_app/immutable/assets/DefaultTooltip.CGOVIm3D.css +1 -0
  15. package/build/client/_app/immutable/assets/DefaultTooltip.CGOVIm3D.css.br +0 -0
  16. package/build/client/_app/immutable/assets/DefaultTooltip.CGOVIm3D.css.gz +0 -0
  17. package/build/client/_app/immutable/assets/EventScatter.DA5sZ1c0.css +1 -0
  18. package/build/client/_app/immutable/assets/EventScatter.DA5sZ1c0.css.br +0 -0
  19. package/build/client/_app/immutable/assets/EventScatter.DA5sZ1c0.css.gz +0 -0
  20. package/build/client/_app/immutable/assets/Labels.sEaJtb97.css +1 -0
  21. package/build/client/_app/immutable/assets/Labels.sEaJtb97.css.br +0 -0
  22. package/build/client/_app/immutable/assets/Labels.sEaJtb97.css.gz +0 -0
  23. package/build/client/_app/immutable/assets/Legend.DnhxhJ2I.css +1 -0
  24. package/build/client/_app/immutable/assets/Legend.DnhxhJ2I.css.br +0 -0
  25. package/build/client/_app/immutable/assets/Legend.DnhxhJ2I.css.gz +0 -0
  26. package/build/client/_app/immutable/assets/Path.B0wDzTrn.css +1 -0
  27. package/build/client/_app/immutable/assets/Path.B0wDzTrn.css.br +0 -0
  28. package/build/client/_app/immutable/assets/Path.B0wDzTrn.css.gz +0 -0
  29. package/build/client/_app/immutable/assets/TransformContext.1cjyViIk.css +1 -0
  30. package/build/client/_app/immutable/assets/TransformContext.1cjyViIk.css.br +0 -0
  31. package/build/client/_app/immutable/assets/TransformContext.1cjyViIk.css.gz +0 -0
  32. package/build/client/_app/immutable/assets/Voronoi.ce7atosu.css +1 -0
  33. package/build/client/_app/immutable/assets/Voronoi.ce7atosu.css.br +0 -0
  34. package/build/client/_app/immutable/assets/Voronoi.ce7atosu.css.gz +0 -0
  35. package/build/client/_app/immutable/chunks/AUlz4-kZ.js +1 -0
  36. package/build/client/_app/immutable/chunks/AUlz4-kZ.js.br +0 -0
  37. package/build/client/_app/immutable/chunks/AUlz4-kZ.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/B1t8v2wP.js +1 -0
  39. package/build/client/_app/immutable/chunks/B1t8v2wP.js.br +0 -0
  40. package/build/client/_app/immutable/chunks/B1t8v2wP.js.gz +0 -0
  41. package/build/client/_app/immutable/chunks/B6nyufJR.js +1 -0
  42. package/build/client/_app/immutable/chunks/B6nyufJR.js.br +0 -0
  43. package/build/client/_app/immutable/chunks/B6nyufJR.js.gz +0 -0
  44. package/build/client/_app/immutable/chunks/BR2LaRms.js +1 -0
  45. package/build/client/_app/immutable/chunks/BR2LaRms.js.br +1 -0
  46. package/build/client/_app/immutable/chunks/BR2LaRms.js.gz +0 -0
  47. package/build/client/_app/immutable/chunks/BR7qH0F5.js +1 -0
  48. package/build/client/_app/immutable/chunks/BR7qH0F5.js.br +0 -0
  49. package/build/client/_app/immutable/chunks/BR7qH0F5.js.gz +0 -0
  50. package/build/client/_app/immutable/chunks/BkXArOra.js +1 -0
  51. package/build/client/_app/immutable/chunks/BkXArOra.js.br +0 -0
  52. package/build/client/_app/immutable/chunks/BkXArOra.js.gz +0 -0
  53. package/build/client/_app/immutable/chunks/Bl052uUt.js +1 -0
  54. package/build/client/_app/immutable/chunks/Bl052uUt.js.br +0 -0
  55. package/build/client/_app/immutable/chunks/Bl052uUt.js.gz +0 -0
  56. package/build/client/_app/immutable/chunks/Bmk_Voz6.js +1 -0
  57. package/build/client/_app/immutable/chunks/Bmk_Voz6.js.br +0 -0
  58. package/build/client/_app/immutable/chunks/Bmk_Voz6.js.gz +0 -0
  59. package/build/client/_app/immutable/chunks/Bp63j1zN.js +1 -0
  60. package/build/client/_app/immutable/chunks/Bp63j1zN.js.br +0 -0
  61. package/build/client/_app/immutable/chunks/Bp63j1zN.js.gz +0 -0
  62. package/build/client/_app/immutable/chunks/BwntJtbK.js +1 -0
  63. package/build/client/_app/immutable/chunks/BwntJtbK.js.br +0 -0
  64. package/build/client/_app/immutable/chunks/BwntJtbK.js.gz +0 -0
  65. package/build/client/_app/immutable/chunks/C20WvNRq.js +1 -0
  66. package/build/client/_app/immutable/chunks/C20WvNRq.js.br +0 -0
  67. package/build/client/_app/immutable/chunks/C20WvNRq.js.gz +0 -0
  68. package/build/client/_app/immutable/chunks/C58PZtCD.js +4 -0
  69. package/build/client/_app/immutable/chunks/C58PZtCD.js.br +0 -0
  70. package/build/client/_app/immutable/chunks/C58PZtCD.js.gz +0 -0
  71. package/build/client/_app/immutable/chunks/CCch3uox.js +1 -0
  72. package/build/client/_app/immutable/chunks/CCch3uox.js.br +0 -0
  73. package/build/client/_app/immutable/chunks/CCch3uox.js.gz +0 -0
  74. package/build/client/_app/immutable/chunks/CDbeYGlD.js +1 -0
  75. package/build/client/_app/immutable/chunks/CDbeYGlD.js.br +0 -0
  76. package/build/client/_app/immutable/chunks/CDbeYGlD.js.gz +0 -0
  77. package/build/client/_app/immutable/chunks/CJFHBop_.js +1 -0
  78. package/build/client/_app/immutable/chunks/CJFHBop_.js.br +0 -0
  79. package/build/client/_app/immutable/chunks/CJFHBop_.js.gz +0 -0
  80. package/build/client/_app/immutable/chunks/CYw9ugj1.js +1 -0
  81. package/build/client/_app/immutable/chunks/CYw9ugj1.js.br +0 -0
  82. package/build/client/_app/immutable/chunks/CYw9ugj1.js.gz +0 -0
  83. package/build/client/_app/immutable/chunks/CjJd0uRB.js +1 -0
  84. package/build/client/_app/immutable/chunks/CjJd0uRB.js.br +1 -0
  85. package/build/client/_app/immutable/chunks/CjJd0uRB.js.gz +0 -0
  86. package/build/client/_app/immutable/chunks/CoEFQJcr.js +1 -0
  87. package/build/client/_app/immutable/chunks/CoEFQJcr.js.br +0 -0
  88. package/build/client/_app/immutable/chunks/CoEFQJcr.js.gz +0 -0
  89. package/build/client/_app/immutable/chunks/D-JtVVAo.js +1 -0
  90. package/build/client/_app/immutable/chunks/D-JtVVAo.js.br +0 -0
  91. package/build/client/_app/immutable/chunks/D-JtVVAo.js.gz +0 -0
  92. package/build/client/_app/immutable/chunks/DJDlf6lC.js +1 -0
  93. package/build/client/_app/immutable/chunks/DJDlf6lC.js.br +0 -0
  94. package/build/client/_app/immutable/chunks/DJDlf6lC.js.gz +0 -0
  95. package/build/client/_app/immutable/chunks/DJLYkl5w.js +1 -0
  96. package/build/client/_app/immutable/chunks/DJLYkl5w.js.br +0 -0
  97. package/build/client/_app/immutable/chunks/DJLYkl5w.js.gz +0 -0
  98. package/build/client/_app/immutable/chunks/DPKdNiYi.js +1 -0
  99. package/build/client/_app/immutable/chunks/DPKdNiYi.js.br +0 -0
  100. package/build/client/_app/immutable/chunks/DPKdNiYi.js.gz +0 -0
  101. package/build/client/_app/immutable/chunks/DQi7bc16.js +1 -0
  102. package/build/client/_app/immutable/chunks/DQi7bc16.js.br +0 -0
  103. package/build/client/_app/immutable/chunks/DQi7bc16.js.gz +0 -0
  104. package/build/client/_app/immutable/chunks/DVTgeA2y.js +2 -0
  105. package/build/client/_app/immutable/chunks/DVTgeA2y.js.br +0 -0
  106. package/build/client/_app/immutable/chunks/DVTgeA2y.js.gz +0 -0
  107. package/build/client/_app/immutable/chunks/Db0q5_zr.js +1 -0
  108. package/build/client/_app/immutable/chunks/Db0q5_zr.js.br +0 -0
  109. package/build/client/_app/immutable/chunks/Db0q5_zr.js.gz +0 -0
  110. package/build/client/_app/immutable/chunks/Dfvzj6n2.js +1 -0
  111. package/build/client/_app/immutable/chunks/Dfvzj6n2.js.br +0 -0
  112. package/build/client/_app/immutable/chunks/Dfvzj6n2.js.gz +0 -0
  113. package/build/client/_app/immutable/chunks/Di37PX72.js +1 -0
  114. package/build/client/_app/immutable/chunks/Di37PX72.js.br +0 -0
  115. package/build/client/_app/immutable/chunks/Di37PX72.js.gz +0 -0
  116. package/build/client/_app/immutable/chunks/{DyIYFD7i.js → DkyYNO4U.js} +1 -1
  117. package/build/client/_app/immutable/chunks/DkyYNO4U.js.br +0 -0
  118. package/build/client/_app/immutable/chunks/DkyYNO4U.js.gz +0 -0
  119. package/build/client/_app/immutable/chunks/DmRhEzIa.js +1 -0
  120. package/build/client/_app/immutable/chunks/DmRhEzIa.js.br +0 -0
  121. package/build/client/_app/immutable/chunks/DmRhEzIa.js.gz +0 -0
  122. package/build/client/_app/immutable/chunks/Dp8S9ymS.js +1 -0
  123. package/build/client/_app/immutable/chunks/Dp8S9ymS.js.br +0 -0
  124. package/build/client/_app/immutable/chunks/Dp8S9ymS.js.gz +0 -0
  125. package/build/client/_app/immutable/chunks/DslUcEd-.js +1 -0
  126. package/build/client/_app/immutable/chunks/DslUcEd-.js.br +0 -0
  127. package/build/client/_app/immutable/chunks/DslUcEd-.js.gz +0 -0
  128. package/build/client/_app/immutable/chunks/Dt_Zd6U2.js +1 -0
  129. package/build/client/_app/immutable/chunks/Dt_Zd6U2.js.br +0 -0
  130. package/build/client/_app/immutable/chunks/Dt_Zd6U2.js.gz +0 -0
  131. package/build/client/_app/immutable/chunks/DwezeuNE.js +5 -0
  132. package/build/client/_app/immutable/chunks/DwezeuNE.js.br +0 -0
  133. package/build/client/_app/immutable/chunks/DwezeuNE.js.gz +0 -0
  134. package/build/client/_app/immutable/chunks/HclGiUj8.js +1 -0
  135. package/build/client/_app/immutable/chunks/HclGiUj8.js.br +0 -0
  136. package/build/client/_app/immutable/chunks/HclGiUj8.js.gz +0 -0
  137. package/build/client/_app/immutable/chunks/PYzEcuyd.js +10 -0
  138. package/build/client/_app/immutable/chunks/PYzEcuyd.js.br +0 -0
  139. package/build/client/_app/immutable/chunks/PYzEcuyd.js.gz +0 -0
  140. package/build/client/_app/immutable/chunks/RobXhXPM.js +1 -0
  141. package/build/client/_app/immutable/chunks/RobXhXPM.js.br +1 -0
  142. package/build/client/_app/immutable/chunks/RobXhXPM.js.gz +0 -0
  143. package/build/client/_app/immutable/chunks/UySfXNq7.js +1 -0
  144. package/build/client/_app/immutable/chunks/UySfXNq7.js.br +0 -0
  145. package/build/client/_app/immutable/chunks/UySfXNq7.js.gz +0 -0
  146. package/build/client/_app/immutable/chunks/Y5urAfNy.js +1 -0
  147. package/build/client/_app/immutable/chunks/Y5urAfNy.js.br +0 -0
  148. package/build/client/_app/immutable/chunks/Y5urAfNy.js.gz +0 -0
  149. package/build/client/_app/immutable/chunks/_Zq76xnA.js +15 -0
  150. package/build/client/_app/immutable/chunks/_Zq76xnA.js.br +0 -0
  151. package/build/client/_app/immutable/chunks/_Zq76xnA.js.gz +0 -0
  152. package/build/client/_app/immutable/chunks/dbhDrJmm.js +1 -0
  153. package/build/client/_app/immutable/chunks/dbhDrJmm.js.br +0 -0
  154. package/build/client/_app/immutable/chunks/dbhDrJmm.js.gz +0 -0
  155. package/build/client/_app/immutable/chunks/pqiPC7Y8.js +3 -0
  156. package/build/client/_app/immutable/chunks/pqiPC7Y8.js.br +0 -0
  157. package/build/client/_app/immutable/chunks/pqiPC7Y8.js.gz +0 -0
  158. package/build/client/_app/immutable/chunks/yCfI4PCa.js +1 -0
  159. package/build/client/_app/immutable/chunks/yCfI4PCa.js.br +0 -0
  160. package/build/client/_app/immutable/chunks/yCfI4PCa.js.gz +0 -0
  161. package/build/client/_app/immutable/entry/app.vMZB8_Zr.js +2 -0
  162. package/build/client/_app/immutable/entry/app.vMZB8_Zr.js.br +0 -0
  163. package/build/client/_app/immutable/entry/app.vMZB8_Zr.js.gz +0 -0
  164. package/build/client/_app/immutable/entry/start.pM5lNk_5.js +1 -0
  165. package/build/client/_app/immutable/entry/start.pM5lNk_5.js.br +0 -0
  166. package/build/client/_app/immutable/entry/start.pM5lNk_5.js.gz +0 -0
  167. package/build/client/_app/immutable/nodes/0.CZO0sIxX.js +1 -0
  168. package/build/client/_app/immutable/nodes/0.CZO0sIxX.js.br +0 -0
  169. package/build/client/_app/immutable/nodes/0.CZO0sIxX.js.gz +0 -0
  170. package/build/client/_app/immutable/nodes/1.zcN3R_zF.js +1 -0
  171. package/build/client/_app/immutable/nodes/1.zcN3R_zF.js.br +0 -0
  172. package/build/client/_app/immutable/nodes/1.zcN3R_zF.js.gz +0 -0
  173. package/build/client/_app/immutable/nodes/2.DxevVqut.js +2 -0
  174. package/build/client/_app/immutable/nodes/2.DxevVqut.js.br +0 -0
  175. package/build/client/_app/immutable/nodes/2.DxevVqut.js.gz +0 -0
  176. package/build/client/_app/version.json +1 -1
  177. package/build/client/_app/version.json.br +0 -0
  178. package/build/client/_app/version.json.gz +0 -0
  179. package/build/handler.js +9 -7
  180. package/build/handler.js.map +1 -1
  181. package/build/index.js +9 -7
  182. package/build/index.js.map +1 -1
  183. package/build/server/chunks/chunks/Arc.canvas.js-D6g58nSp.js +701 -0
  184. package/build/server/chunks/chunks/Arc.canvas.js-D6g58nSp.js.map +1 -0
  185. package/build/server/chunks/chunks/Arc.js-D78Cf_4M.js +31 -0
  186. package/build/server/chunks/chunks/Arc.js-D78Cf_4M.js.map +1 -0
  187. package/build/server/chunks/chunks/Bar.js-Cv73T8_D.js +448 -0
  188. package/build/server/chunks/chunks/Bar.js-Cv73T8_D.js.map +1 -0
  189. package/build/server/chunks/chunks/ChartAnnotations.js-Ci22VB_6.js +983 -0
  190. package/build/server/chunks/chunks/ChartAnnotations.js-Ci22VB_6.js.map +1 -0
  191. package/build/server/chunks/chunks/Circle.html.js-BjwyNRG3.js +355 -0
  192. package/build/server/chunks/chunks/Circle.html.js-BjwyNRG3.js.map +1 -0
  193. package/build/server/chunks/chunks/ClipPath.canvas.js-CFTBDWVU.js +170 -0
  194. package/build/server/chunks/chunks/ClipPath.canvas.js-CFTBDWVU.js.map +1 -0
  195. package/build/server/chunks/chunks/DefaultTooltip.js-0r5rbE-1.js +352 -0
  196. package/build/server/chunks/chunks/DefaultTooltip.js-0r5rbE-1.js.map +1 -0
  197. package/build/server/chunks/chunks/EventScatter.js-DqCMPeHG.js +7304 -0
  198. package/build/server/chunks/chunks/EventScatter.js-DqCMPeHG.js.map +1 -0
  199. package/build/server/chunks/chunks/Labels.js-DpagpV6d.js +497 -0
  200. package/build/server/chunks/chunks/Labels.js-DpagpV6d.js.map +1 -0
  201. package/build/server/chunks/chunks/Legend.js-BOpwpe5s.js +343 -0
  202. package/build/server/chunks/chunks/Legend.js-BOpwpe5s.js.map +1 -0
  203. package/build/server/chunks/chunks/Line.html.js-BM5tR11G.js +423 -0
  204. package/build/server/chunks/chunks/Line.html.js-BM5tR11G.js.map +1 -0
  205. package/build/server/chunks/chunks/Link.canvas.js-P8ySzEAw.js +756 -0
  206. package/build/server/chunks/chunks/Link.canvas.js-P8ySzEAw.js.map +1 -0
  207. package/build/server/chunks/chunks/Path.canvas.js-DNAtnEBt.js +1259 -0
  208. package/build/server/chunks/chunks/Path.canvas.js-DNAtnEBt.js.map +1 -0
  209. package/build/server/chunks/chunks/Points.html.js-CLbHD6OP.js +228 -0
  210. package/build/server/chunks/chunks/Points.html.js-CLbHD6OP.js.map +1 -0
  211. package/build/server/chunks/chunks/Points.js-e6g0Re6H.js +14 -0
  212. package/build/server/chunks/chunks/Points.js-e6g0Re6H.js.map +1 -0
  213. package/build/server/chunks/chunks/Points2.js-BMGdkzTE.js +25 -0
  214. package/build/server/chunks/chunks/Points2.js-BMGdkzTE.js.map +1 -0
  215. package/build/server/chunks/chunks/Rect.html.js-Q3UvRwNn.js +547 -0
  216. package/build/server/chunks/chunks/Rect.html.js-Q3UvRwNn.js.map +1 -0
  217. package/build/server/chunks/chunks/Spline.js-BuZPz2PJ.js +516 -0
  218. package/build/server/chunks/chunks/Spline.js-BuZPz2PJ.js.map +1 -0
  219. package/build/server/chunks/chunks/Text.html.js-C8xO5Nz6.js +847 -0
  220. package/build/server/chunks/chunks/Text.html.js-C8xO5Nz6.js.map +1 -0
  221. package/build/server/chunks/chunks/TooltipItem.js-T0cKLjLu.js +314 -0
  222. package/build/server/chunks/chunks/TooltipItem.js-T0cKLjLu.js.map +1 -0
  223. package/build/server/chunks/chunks/Voronoi.js-DevTsXQE.js +2052 -0
  224. package/build/server/chunks/chunks/Voronoi.js-DevTsXQE.js.map +1 -0
  225. package/build/server/chunks/chunks/archive.js-C6rz09rJ.js +584 -0
  226. package/build/server/chunks/chunks/archive.js-C6rz09rJ.js.map +1 -0
  227. package/build/server/chunks/chunks/array.js-CBp0H4t3.js +8 -0
  228. package/build/server/chunks/chunks/array.js-CBp0H4t3.js.map +1 -0
  229. package/build/server/chunks/chunks/attributes.js-BVWo7wbg.js +25 -0
  230. package/build/server/chunks/chunks/attributes.js-BVWo7wbg.js.map +1 -0
  231. package/build/server/chunks/chunks/{env2.js-D7xrfc37.js → aws.js-DkPqAybc.js} +13 -64
  232. package/build/server/chunks/chunks/aws.js-DkPqAybc.js.map +1 -0
  233. package/build/server/chunks/chunks/band.js-C7izXphE.js +155 -0
  234. package/build/server/chunks/chunks/band.js-C7izXphE.js.map +1 -0
  235. package/build/server/chunks/chunks/centroid.js-BnGN3LH0.js +1356 -0
  236. package/build/server/chunks/chunks/centroid.js-BnGN3LH0.js.map +1 -0
  237. package/build/server/chunks/chunks/common.js-BWQB8Die.js +5760 -0
  238. package/build/server/chunks/chunks/common.js-BWQB8Die.js.map +1 -0
  239. package/build/server/chunks/chunks/env2.js-CcIskxOZ.js +60 -0
  240. package/build/server/chunks/chunks/env2.js-CcIskxOZ.js.map +1 -0
  241. package/build/server/chunks/chunks/{exports.js-CvFPPbaH.js → exports.js-ClPPfcHj.js} +6 -1
  242. package/build/server/chunks/chunks/exports.js-ClPPfcHj.js.map +1 -0
  243. package/build/server/chunks/chunks/group.js-DBFzWAox.js +30 -0
  244. package/build/server/chunks/chunks/group.js-DBFzWAox.js.map +1 -0
  245. package/build/server/chunks/chunks/index-server.js-DNLOKvM0.js +248 -0
  246. package/build/server/chunks/chunks/index-server.js-DNLOKvM0.js.map +1 -0
  247. package/build/server/chunks/chunks/index-server2.js-l0sNRNKZ.js +2 -0
  248. package/build/server/chunks/chunks/index-server2.js-l0sNRNKZ.js.map +1 -0
  249. package/build/server/chunks/chunks/{internal2.js-DZ8ZzzjN.js → internal.js-DZ8ZzzjN.js} +1 -1
  250. package/build/server/chunks/chunks/internal.js-DZ8ZzzjN.js.map +1 -0
  251. package/build/server/chunks/chunks/internal2.js-DDcktblR.js +188 -0
  252. package/build/server/chunks/chunks/internal2.js-DDcktblR.js.map +1 -0
  253. package/build/server/chunks/chunks/key.svelte.js-CWIvXc6L.js +695 -0
  254. package/build/server/chunks/chunks/key.svelte.js-CWIvXc6L.js.map +1 -0
  255. package/build/server/chunks/chunks/{internal.js-B-DZpK-L.js → legacy-client.js-DJmDw3Zx.js} +13 -439
  256. package/build/server/chunks/chunks/legacy-client.js-DJmDw3Zx.js.map +1 -0
  257. package/build/server/chunks/chunks/level-filter.js-H_AdNbCw.js +297 -0
  258. package/build/server/chunks/chunks/level-filter.js-H_AdNbCw.js.map +1 -0
  259. package/build/server/chunks/chunks/lineRadial.js-Dm0GMqo3.js +126 -0
  260. package/build/server/chunks/chunks/lineRadial.js-Dm0GMqo3.js.map +1 -0
  261. package/build/server/chunks/chunks/linear.js-CTOKrHn9.js +1046 -0
  262. package/build/server/chunks/chunks/linear.js-CTOKrHn9.js.map +1 -0
  263. package/build/server/chunks/chunks/log-buffer.js-CpI7gyom.js +471 -0
  264. package/build/server/chunks/chunks/log-buffer.js-CpI7gyom.js.map +1 -0
  265. package/build/server/chunks/chunks/math.js-BqujbaBs.js +50 -0
  266. package/build/server/chunks/chunks/math.js-BqujbaBs.js.map +1 -0
  267. package/build/server/chunks/chunks/max.js-CuS0BpRI.js +11 -0
  268. package/build/server/chunks/chunks/max.js-CuS0BpRI.js.map +1 -0
  269. package/build/server/chunks/chunks/min.js-DZWt5tPl.js +11 -0
  270. package/build/server/chunks/chunks/min.js-DZWt5tPl.js.map +1 -0
  271. package/build/server/chunks/chunks/motion.svelte.js-DCHSFMu-.js +677 -0
  272. package/build/server/chunks/chunks/motion.svelte.js-DCHSFMu-.js.map +1 -0
  273. package/build/server/chunks/chunks/occlusion.js-DJ-AdK9u.js +33 -0
  274. package/build/server/chunks/chunks/occlusion.js-DJ-AdK9u.js.map +1 -0
  275. package/build/server/chunks/chunks/path.js-BizMrlzb.js +488 -0
  276. package/build/server/chunks/chunks/path.js-BizMrlzb.js.map +1 -0
  277. package/build/server/chunks/chunks/path2.js-pquT2Kg6.js +27 -0
  278. package/build/server/chunks/chunks/path2.js-pquT2Kg6.js.map +1 -0
  279. package/build/server/chunks/chunks/pointRadial.js-Deeu1LXx.js +7 -0
  280. package/build/server/chunks/chunks/pointRadial.js-Deeu1LXx.js.map +1 -0
  281. package/build/server/chunks/chunks/rect.svelte.js-zeS7FWjB.js +187 -0
  282. package/build/server/chunks/chunks/rect.svelte.js-zeS7FWjB.js.map +1 -0
  283. package/build/server/chunks/chunks/scales.svelte.js-D_1popPi.js +276 -0
  284. package/build/server/chunks/chunks/scales.svelte.js-D_1popPi.js.map +1 -0
  285. package/build/server/chunks/chunks/series-buckets.js-CX_rWCeH.js +123 -0
  286. package/build/server/chunks/chunks/series-buckets.js-CX_rWCeH.js.map +1 -0
  287. package/build/server/chunks/chunks/{server.js-ByNB8uti.js → server.js-CAEBuMIH.js} +167 -2
  288. package/build/server/chunks/chunks/server.js-CAEBuMIH.js.map +1 -0
  289. package/build/server/chunks/chunks/source.js-DZEVvuho.js +21 -0
  290. package/build/server/chunks/chunks/source.js-DZEVvuho.js.map +1 -0
  291. package/build/server/chunks/chunks/{state.js-V2NYGhy_.js → state.js-Dves8H8h.js} +5 -4
  292. package/build/server/chunks/chunks/state.js-Dves8H8h.js.map +1 -0
  293. package/build/server/chunks/chunks/types.js-x3GyGPOz.js +11 -0
  294. package/build/server/chunks/chunks/types.js-x3GyGPOz.js.map +1 -0
  295. package/build/server/chunks/entries/endpoints/api/archive/_server.ts.js-sNd3lS0y.js +39 -0
  296. package/build/server/chunks/entries/endpoints/api/archive/_server.ts.js-sNd3lS0y.js.map +1 -0
  297. package/build/server/chunks/entries/endpoints/api/health/{_server.ts.js-aiNZfkco.js → _server.ts.js-VctnBhIJ.js} +5 -3
  298. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-VctnBhIJ.js.map +1 -0
  299. package/build/server/chunks/entries/endpoints/api/identity/_server.ts.js-Dt540Sio.js +73 -0
  300. package/build/server/chunks/entries/endpoints/api/identity/_server.ts.js-Dt540Sio.js.map +1 -0
  301. package/build/server/chunks/entries/endpoints/api/log-groups/{_server.ts.js-D143-vRl.js → _server.ts.js-BGyWbj78.js} +57 -7
  302. package/build/server/chunks/entries/endpoints/api/log-groups/_server.ts.js-BGyWbj78.js.map +1 -0
  303. package/build/server/chunks/entries/endpoints/api/regions/{_server.ts.js-CDNL7msU.js → _server.ts.js-CBqfN6Pg.js} +5 -3
  304. package/build/server/chunks/entries/endpoints/api/regions/_server.ts.js-CBqfN6Pg.js.map +1 -0
  305. package/build/server/chunks/entries/endpoints/api/series/_server.ts.js-DjGMqXKo.js +194 -0
  306. package/build/server/chunks/entries/endpoints/api/series/_server.ts.js-DjGMqXKo.js.map +1 -0
  307. package/build/server/chunks/entries/endpoints/api/stream/{_server.ts.js-D_i-xW6_.js → _server.ts.js-C-XDemlx.js} +324 -222
  308. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-C-XDemlx.js.map +1 -0
  309. package/build/server/chunks/entries/fallbacks/{error.svelte.js-CAasf3PF.js → error.svelte.js-DdUYlUJV.js} +7 -5
  310. package/build/server/chunks/entries/fallbacks/{error.svelte.js-CAasf3PF.js.map → error.svelte.js-DdUYlUJV.js.map} +1 -1
  311. package/build/server/chunks/entries/pages/_layout.svelte.js-CBQpEToy.js +22 -0
  312. package/build/server/chunks/entries/pages/_layout.svelte.js-CBQpEToy.js.map +1 -0
  313. package/build/server/chunks/entries/pages/{_page.svelte.js-DzAAqWz2.js → _page.svelte.js-B-kVwiNh.js} +563 -349
  314. package/build/server/chunks/entries/pages/_page.svelte.js-B-kVwiNh.js.map +1 -0
  315. package/build/server/chunks/{handler-CuWqZDuC.js → handler-BHf-eLnl.js} +3 -3
  316. package/build/server/chunks/{handler-CuWqZDuC.js.map → handler-BHf-eLnl.js.map} +1 -1
  317. package/build/server/chunks/{index.js-NHTL74z2.js → index.js-D6Auup1Z.js} +6 -5
  318. package/build/server/chunks/index.js-D6Auup1Z.js.map +1 -0
  319. package/build/server/chunks/manifest.js-B3Q7n9I6.js +91 -0
  320. package/build/server/chunks/manifest.js-B3Q7n9I6.js.map +1 -0
  321. package/build/server/chunks/nodes/0.js-BMP_Yttt.js +9 -0
  322. package/build/server/chunks/nodes/{0.js-Bg4_hDjk.js.map → 0.js-BMP_Yttt.js.map} +1 -1
  323. package/build/server/chunks/nodes/1.js-2HQHUOse.js +9 -0
  324. package/build/server/chunks/nodes/{1.js-CDSk3TvW.js.map → 1.js-2HQHUOse.js.map} +1 -1
  325. package/build/server/chunks/nodes/2.js-7RtHpiHN.js +9 -0
  326. package/build/server/chunks/nodes/2.js-7RtHpiHN.js.map +1 -0
  327. package/dist/cli/completions.js +6 -0
  328. package/dist/cli/index.js +149 -30
  329. package/dist/cli/options.js +28 -2
  330. package/dist/cli/preflight.js +72 -0
  331. package/dist/cli/ui.js +7 -3
  332. package/dist/lib/cli/aws.js +12 -4
  333. package/dist/lib/log-buffer.js +314 -0
  334. package/dist/lib/log-format.js +185 -0
  335. package/dist/lib/types.js +0 -4
  336. package/package.json +7 -2
  337. package/build/client/_app/immutable/assets/0.CocWI5K4.css +0 -2
  338. package/build/client/_app/immutable/assets/0.CocWI5K4.css.br +0 -0
  339. package/build/client/_app/immutable/assets/0.CocWI5K4.css.gz +0 -0
  340. package/build/client/_app/immutable/chunks/05WsiB4A.js +0 -1
  341. package/build/client/_app/immutable/chunks/05WsiB4A.js.br +0 -0
  342. package/build/client/_app/immutable/chunks/05WsiB4A.js.gz +0 -0
  343. package/build/client/_app/immutable/chunks/DyIYFD7i.js.br +0 -0
  344. package/build/client/_app/immutable/chunks/DyIYFD7i.js.gz +0 -0
  345. package/build/client/_app/immutable/chunks/ZAD2y5xJ.js +0 -3
  346. package/build/client/_app/immutable/chunks/ZAD2y5xJ.js.br +0 -0
  347. package/build/client/_app/immutable/chunks/ZAD2y5xJ.js.gz +0 -0
  348. package/build/client/_app/immutable/entry/app.D0_YFW4X.js +0 -2
  349. package/build/client/_app/immutable/entry/app.D0_YFW4X.js.br +0 -0
  350. package/build/client/_app/immutable/entry/app.D0_YFW4X.js.gz +0 -0
  351. package/build/client/_app/immutable/entry/start.D1rrHrg2.js +0 -1
  352. package/build/client/_app/immutable/entry/start.D1rrHrg2.js.br +0 -0
  353. package/build/client/_app/immutable/entry/start.D1rrHrg2.js.gz +0 -0
  354. package/build/client/_app/immutable/nodes/0.DHBUWbOo.js +0 -1
  355. package/build/client/_app/immutable/nodes/0.DHBUWbOo.js.br +0 -0
  356. package/build/client/_app/immutable/nodes/0.DHBUWbOo.js.gz +0 -0
  357. package/build/client/_app/immutable/nodes/1.D1vhnOgO.js +0 -1
  358. package/build/client/_app/immutable/nodes/1.D1vhnOgO.js.br +0 -0
  359. package/build/client/_app/immutable/nodes/1.D1vhnOgO.js.gz +0 -0
  360. package/build/client/_app/immutable/nodes/2.BPdL6B7F.js +0 -5
  361. package/build/client/_app/immutable/nodes/2.BPdL6B7F.js.br +0 -0
  362. package/build/client/_app/immutable/nodes/2.BPdL6B7F.js.gz +0 -0
  363. package/build/server/chunks/chunks/env2.js-D7xrfc37.js.map +0 -1
  364. package/build/server/chunks/chunks/exports.js-CvFPPbaH.js.map +0 -1
  365. package/build/server/chunks/chunks/internal.js-B-DZpK-L.js.map +0 -1
  366. package/build/server/chunks/chunks/internal2.js-DZ8ZzzjN.js.map +0 -1
  367. package/build/server/chunks/chunks/server.js-ByNB8uti.js.map +0 -1
  368. package/build/server/chunks/chunks/state.js-V2NYGhy_.js.map +0 -1
  369. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-aiNZfkco.js.map +0 -1
  370. package/build/server/chunks/entries/endpoints/api/log-groups/_server.ts.js-D143-vRl.js.map +0 -1
  371. package/build/server/chunks/entries/endpoints/api/regions/_server.ts.js-CDNL7msU.js.map +0 -1
  372. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-D_i-xW6_.js.map +0 -1
  373. package/build/server/chunks/entries/pages/_layout.svelte.js-Bx7lXkAi.js +0 -22
  374. package/build/server/chunks/entries/pages/_layout.svelte.js-Bx7lXkAi.js.map +0 -1
  375. package/build/server/chunks/entries/pages/_page.svelte.js-DzAAqWz2.js.map +0 -1
  376. package/build/server/chunks/index.js-NHTL74z2.js.map +0 -1
  377. package/build/server/chunks/manifest.js-8g4gjxwf.js +0 -70
  378. package/build/server/chunks/manifest.js-8g4gjxwf.js.map +0 -1
  379. package/build/server/chunks/nodes/0.js-Bg4_hDjk.js +0 -9
  380. package/build/server/chunks/nodes/1.js-CDSk3TvW.js +0 -9
  381. package/build/server/chunks/nodes/2.js-BVhBcWrN.js +0 -9
  382. package/build/server/chunks/nodes/2.js-BVhBcWrN.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"_server.ts.js-D143-vRl.js","sources":["../../../../../../../.svelte-kit/output/server/entries/endpoints/api/log-groups/_server.ts.js"],"sourcesContent":["import { a as describeAwsError, c as resolveEffectiveRegion, i as createLogsClient, l as apiError, o as parseRegionParam, r as REGION_PARAM_HINT, s as resolveAwsConfig, t as readEnv } from \"../../../../chunks/env2.js\";\nimport { json } from \"@sveltejs/kit\";\nimport { DescribeLogGroupsCommand } from \"@aws-sdk/client-cloudwatch-logs\";\n//#region src/lib/server/log-groups.ts\n/** Page size requested from `DescribeLogGroups` (the API maximum). */\nvar PAGE_SIZE = 50;\nvar DEFAULT_LIMIT = 200;\nvar MIN_LIMIT = 1;\nvar MAX_LIMIT$1 = 1e3;\n/** Clamps the result limit into the supported 1..1000 range. */\nfunction clampLimit(limit) {\n\tif (limit === void 0 || !Number.isFinite(limit)) return DEFAULT_LIMIT;\n\treturn Math.min(Math.max(Math.floor(limit), MIN_LIMIT), MAX_LIMIT$1);\n}\n/** Maps an SDK log group onto the wire type, omitting absent fields. */\nfunction toSummary(group) {\n\tconst summary = { name: group.logGroupName ?? \"\" };\n\tif (group.arn !== void 0) summary.arn = group.arn;\n\tif (group.storedBytes !== void 0) summary.storedBytes = group.storedBytes;\n\tif (group.retentionInDays !== void 0) summary.retentionInDays = group.retentionInDays;\n\tif (group.creationTime !== void 0) summary.creationTime = group.creationTime;\n\treturn summary;\n}\n/** Locale-independent name comparison for a stable sort. */\nfunction byName(a, b) {\n\tif (a.name === b.name) return 0;\n\treturn a.name < b.name ? -1 : 1;\n}\n/**\n* Lists log groups for a region.\n*\n* Pages through `DescribeLogGroups` (50 per page, honouring `nextToken`),\n* filters by prefix on the client too because some emulators ignore\n* `logGroupNamePrefix`, de-duplicates by name, sorts by name and stops at\n* `limit` (default 200, clamped to 1..1000).\n*/\nasync function listLogGroups(client, options = {}) {\n\tconst prefix = options.prefix?.trim() ?? \"\";\n\tconst limit = clampLimit(options.limit);\n\tconst { signal } = options;\n\tconst collected = [];\n\tconst seenNames = /* @__PURE__ */ new Set();\n\tlet nextToken;\n\tdo {\n\t\tif (signal?.aborted) break;\n\t\tconst input = { limit: PAGE_SIZE };\n\t\tif (nextToken !== void 0) input.nextToken = nextToken;\n\t\tif (prefix.length > 0) input.logGroupNamePrefix = prefix;\n\t\tconst response = await client.send(new DescribeLogGroupsCommand(input), { abortSignal: signal });\n\t\tfor (const group of response.logGroups ?? []) {\n\t\t\tconst name = group.logGroupName;\n\t\t\tif (name === void 0 || name.length === 0) continue;\n\t\t\tif (prefix.length > 0 && !name.startsWith(prefix)) continue;\n\t\t\tif (seenNames.has(name)) continue;\n\t\t\tseenNames.add(name);\n\t\t\tcollected.push(toSummary(group));\n\t\t\tif (collected.length >= limit) break;\n\t\t}\n\t\tnextToken = response.nextToken;\n\t} while (nextToken !== void 0 && nextToken.length > 0 && collected.length < limit);\n\treturn collected.toSorted(byName);\n}\n//#endregion\n//#region src/routes/api/log-groups/+server.ts\nvar MAX_LIMIT = 1e3;\n/**\n* `GET /api/log-groups?region=&prefix=&limit=` - lists log groups for a region.\n*\n* The region is optional: without it the SDK resolves the region from the\n* ambient AWS configuration. `request.signal` is forwarded to the SDK so a\n* disconnected client cancels the pagination loop.\n*/\nvar GET = async ({ url, request }) => {\n\tconst parsedRegion = parseRegionParam(url.searchParams.get(\"region\"));\n\tif (!parsedRegion.ok) return apiError(400, REGION_PARAM_HINT, \"invalid-region\");\n\tconst env = readEnv();\n\tconst limitRaw = url.searchParams.get(\"limit\")?.trim() ?? \"\";\n\tlet limit;\n\tif (limitRaw.length > 0) {\n\t\tconst parsed = Number(limitRaw);\n\t\tif (!Number.isInteger(parsed) || parsed < 1 || parsed > MAX_LIMIT) return apiError(400, `Invalid limit: expected an integer between 1 and ${MAX_LIMIT}`, \"invalid-limit\");\n\t\tlimit = parsed;\n\t} else {\n\t\tconst configured = Number((env.WATCH_STREAM_LIMIT ?? \"\").trim());\n\t\tif (Number.isInteger(configured) && configured >= 1 && configured <= MAX_LIMIT) limit = configured;\n\t}\n\tconst prefix = url.searchParams.get(\"prefix\")?.trim();\n\tconst config = resolveAwsConfig(env, parsedRegion.region);\n\tlet client;\n\ttry {\n\t\tclient = createLogsClient(config);\n\t\tconst region = await resolveEffectiveRegion(client, config);\n\t\tconst groups = await listLogGroups(client, {\n\t\t\tprefix: prefix !== void 0 && prefix.length > 0 ? prefix : void 0,\n\t\t\tlimit,\n\t\t\tsignal: request.signal\n\t\t});\n\t\tconst body = {\n\t\t\tregion,\n\t\t\tendpoint: config.endpoint,\n\t\t\tgroups\n\t\t};\n\t\treturn json(body);\n\t} catch (error) {\n\t\tif (request.signal.aborted || error instanceof Error && error.name === \"AbortError\") return apiError(499, \"The client closed the request before CloudWatch Logs replied\", \"aborted\");\n\t\tconst described = describeAwsError(error);\n\t\treturn apiError(502, described.message, described.code);\n\t} finally {\n\t\tclient?.destroy();\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_server.ts.js-CDNL7msU.js","sources":["../../../../../../../.svelte-kit/output/server/entries/endpoints/api/regions/_server.ts.js"],"sourcesContent":["import { a as describeAwsError, c as resolveEffectiveRegion, i as createLogsClient, l as apiError, o as parseRegionParam, r as REGION_PARAM_HINT, s as resolveAwsConfig, t as readEnv } from \"../../../../chunks/env2.js\";\nimport { t as REGION_CODES } from \"../../../../chunks/regions.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/lib/server/regions.ts\n/**\n* Region list used when `WATCH_STREAM_REGIONS` is unset.\n*\n* Every AWS region that publishes CloudWatch Logs endpoints, including\n* `af-south-1`; see `$lib/regions`.\n*/\nvar FALLBACK_REGIONS = [...REGION_CODES];\n/** Splits a comma-separated region list, trimming and dropping blanks. */\nfunction parseRegionList(value) {\n\tif (typeof value !== \"string\") return [];\n\tconst regions = [];\n\tfor (const part of value.split(\",\")) {\n\t\tconst region = part.trim();\n\t\tif (region.length > 0 && !regions.includes(region)) regions.push(region);\n\t}\n\treturn regions;\n}\n/** Trims a value and treats blank strings as absent. */\nfunction normalize(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim();\n\treturn trimmed.length > 0 ? trimmed : null;\n}\n/**\n* Resolves the region list for the picker plus the default region.\n*\n* `defaultRegion` is the explicit environment region when set, otherwise\n* `effectiveRegion` (usually the region the SDK resolved from the ambient AWS\n* configuration), otherwise `us-east-1`. The list comes from\n* `WATCH_STREAM_REGIONS` when set, otherwise from {@link FALLBACK_REGIONS}, and\n* the default region is always present: it is prepended when missing, keeping\n* the remaining order de-duplicated.\n*/\nfunction resolveRegions(env, effectiveRegion) {\n\tconst { region: envRegion } = resolveAwsConfig(env);\n\tconst defaultRegion = envRegion ?? normalize(effectiveRegion) ?? \"us-east-1\";\n\tconst configured = parseRegionList(env.WATCH_STREAM_REGIONS);\n\tconst regions = configured.length > 0 ? configured : [...FALLBACK_REGIONS];\n\tif (!regions.includes(defaultRegion)) regions.unshift(defaultRegion);\n\treturn {\n\t\tregions,\n\t\tdefaultRegion\n\t};\n}\n//#endregion\n//#region src/routes/api/regions/+server.ts\n/**\n* `GET /api/regions?region=` - region list for the picker plus the effective region.\n*\n* The effective region becomes `defaultRegion`, so a region resolved from the\n* ambient AWS configuration is selected by default.\n*/\nvar GET = async ({ url }) => {\n\tconst parsed = parseRegionParam(url.searchParams.get(\"region\"));\n\tif (!parsed.ok) return apiError(400, REGION_PARAM_HINT, \"invalid-region\");\n\tconst env = readEnv();\n\tconst config = resolveAwsConfig(env, parsed.region);\n\tlet client;\n\ttry {\n\t\tclient = createLogsClient(config);\n\t\tconst { regions, defaultRegion } = resolveRegions(env, await resolveEffectiveRegion(client, config));\n\t\tconst body = {\n\t\t\tregions,\n\t\t\tdefaultRegion,\n\t\t\tendpoint: config.endpoint\n\t\t};\n\t\treturn json(body);\n\t} catch (error) {\n\t\tconst described = describeAwsError(error);\n\t\treturn apiError(502, described.message, described.code);\n\t} finally {\n\t\tclient?.destroy();\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_server.ts.js-D_i-xW6_.js","sources":["../../../../../../../.svelte-kit/output/server/entries/endpoints/api/stream/_server.ts.js"],"sourcesContent":["import { a as describeAwsError, c as resolveEffectiveRegion, i as createLogsClient, l as apiError, o as parseRegionParam, r as REGION_PARAM_HINT, s as resolveAwsConfig, t as readEnv } from \"../../../../chunks/env2.js\";\nimport { a as presetDurationMs, i as isHistoricPreset, t as HISTORIC_PRESETS } from \"../../../../chunks/time-range.js\";\nimport \"@sveltejs/kit\";\nimport { FilterLogEventsCommand } from \"@aws-sdk/client-cloudwatch-logs\";\n//#region src/lib/server/filter.ts\n/** Default lookback window when neither `startTime` nor `lookback` is usable. */\nvar DEFAULT_LOOKBACK_MS = 3e5;\n/** CloudWatch Logs rejects `startTime` older than 14 days. */\nvar MAX_LOOKBACK_MS = 12096e5;\nvar DEFAULT_POLL_MS$1 = 1e3;\nvar MIN_POLL_MS = 250;\nvar MAX_POLL_MS = 15e3;\nvar DURATION_UNITS = {\n\tms: 1,\n\ts: 1e3,\n\tm: 6e4,\n\th: 36e5,\n\td: 864e5,\n\tw: 6048e5\n};\nvar DURATION_PATTERN = /^(\\d+(?:\\.\\d+)?)\\s*(ms|s|m|h|d|w)$/i;\nvar EPOCH_PATTERN = /^\\d+$/;\n/**\n* Parses a single-unit duration such as `500ms`, `30s`, `15m`, `2h`, `3d` or\n* `1w`. Returns `null` for anything invalid, negative or zero.\n*/\nfunction parseDurationMs(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst match = DURATION_PATTERN.exec(value.trim());\n\tif (match === null) return null;\n\tconst amount = Number(match[1]);\n\tconst unit = DURATION_UNITS[match[2].toLowerCase()];\n\tif (unit === void 0 || !Number.isFinite(amount)) return null;\n\tconst ms = amount * unit;\n\tif (!Number.isFinite(ms) || ms <= 0) return null;\n\treturn Math.round(ms);\n}\n/**\n* Parses a start point into epoch milliseconds.\n*\n* Accepts epoch milliseconds (`1700000000000`), a duration relative to `now`\n* (`15m`) and ISO 8601 timestamps. Returns `null` when the value is missing or\n* cannot be understood.\n*/\nfunction parseStartTime(value, now) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return null;\n\tif (EPOCH_PATTERN.test(trimmed)) return Number(trimmed);\n\tconst duration = parseDurationMs(trimmed);\n\tif (duration !== null) return now - duration;\n\tconst parsed = Date.parse(trimmed);\n\treturn Number.isNaN(parsed) ? null : parsed;\n}\n/** Resolves the effective start time, clamped to the last 14 days and to `now`. */\nfunction resolveStartTime(input) {\n\tconst { now } = input;\n\tlet start = parseStartTime(input.startTime, now);\n\tif (start === null) start = now - (parseDurationMs(input.lookback ?? \"\") ?? DEFAULT_LOOKBACK_MS);\n\tconst oldestAllowed = now - MAX_LOOKBACK_MS;\n\tif (start > now) start = now;\n\tif (start < oldestAllowed) start = oldestAllowed;\n\treturn Math.round(start);\n}\n/** Parses a poll interval in milliseconds, defaulting to 1000 and clamped to 250..15000. */\nfunction clampPollMs(value) {\n\tif (typeof value !== \"string\") return DEFAULT_POLL_MS$1;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return DEFAULT_POLL_MS$1;\n\tconst parsed = Number(trimmed);\n\tif (!Number.isFinite(parsed)) return DEFAULT_POLL_MS$1;\n\treturn Math.min(Math.max(Math.round(parsed), MIN_POLL_MS), MAX_POLL_MS);\n}\n/** Default historic window when neither `range` nor `from`/`to` is given. */\nvar DEFAULT_HISTORIC_PRESET = \"15m\";\n/** Parses the `mode` parameter; `null` for an unrecognised value. */\nfunction parseMode(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim().toLowerCase();\n\tif (trimmed === \"live\" || trimmed === \"historic\") return trimmed;\n\treturn null;\n}\n/**\n* Parses an absolute instant: epoch milliseconds or an ISO 8601 timestamp.\n*\n* Relative durations are deliberately rejected here so an end bound can never\n* move with the clock.\n*/\nfunction parseInstant(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return null;\n\tif (EPOCH_PATTERN.test(trimmed)) return Number(trimmed);\n\tconst parsed = Date.parse(trimmed);\n\treturn Number.isNaN(parsed) ? null : parsed;\n}\n/**\n* Clamps a window to what CloudWatch Logs can return: 14 days back, ending now.\n*\n* Returns `null` when the requested window ends before the retention floor, so\n* a request for month-old data fails loudly instead of returning a stub window.\n*/\nfunction clampWindow(start, end, now) {\n\tconst oldest = now - MAX_LOOKBACK_MS;\n\tif (end <= oldest) return null;\n\tconst clampedStart = Math.min(Math.max(start, oldest), now);\n\tconst clampedEnd = Math.min(Math.max(end, clampedStart + 1), now);\n\treturn {\n\t\tstart: Math.round(clampedStart),\n\t\tend: Math.round(clampedEnd),\n\t\tclamped: clampedStart !== Math.round(start) || clampedEnd !== Math.round(end)\n\t};\n}\n/**\n* Resolves the request window into a start time plus, for historic mode, an end\n* time.\n*\n* Historic windows come from a preset (`range=24h`), from explicit bounds\n* (`from`/`to`, epoch ms or ISO 8601) or, when neither is given, from the\n* smallest preset. Windows are clamped to the last 14 days and to `now` so the\n* request can never ask CloudWatch for data it will not return.\n*/\nfunction resolveWindow(input) {\n\tconst { now } = input;\n\tconst requestedMode = input.mode === null || input.mode === void 0 ? \"live\" : input.mode.trim();\n\tconst mode = requestedMode === \"\" ? \"live\" : parseMode(requestedMode);\n\tif (mode === null) return {\n\t\tok: false,\n\t\tcode: \"invalid-mode\",\n\t\tmessage: \"Invalid mode: expected \\\"live\\\" or \\\"historic\\\"\"\n\t};\n\tif (mode === \"live\") return {\n\t\tok: true,\n\t\tmode,\n\t\tstartTime: resolveStartTime({\n\t\t\tstartTime: input.startTime,\n\t\t\tlookback: input.lookback,\n\t\t\tnow\n\t\t}),\n\t\tendTime: null,\n\t\tpreset: null,\n\t\tclamped: false\n\t};\n\tconst from = input.from?.trim() ?? \"\";\n\tconst to = input.to?.trim() ?? \"\";\n\tif (from.length > 0 || to.length > 0) {\n\t\tif (from.length === 0 || to.length === 0) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-window\",\n\t\t\tmessage: \"A custom window needs both \\\"from\\\" and \\\"to\\\"\"\n\t\t};\n\t\tconst parsedFrom = parseStartTime(from, now);\n\t\tconst parsedTo = parseInstant(to);\n\t\tif (parsedFrom === null) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-time\",\n\t\t\tmessage: `Invalid \"from\": expected epoch milliseconds, a duration such as 3h, or an ISO 8601 timestamp`\n\t\t};\n\t\tif (parsedTo === null) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-time\",\n\t\t\tmessage: \"Invalid \\\"to\\\": expected epoch milliseconds or an ISO 8601 timestamp\"\n\t\t};\n\t\tif (parsedTo <= parsedFrom) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-window\",\n\t\t\tmessage: \"The end of the window must be after its start\"\n\t\t};\n\t\tconst clamped = clampWindow(parsedFrom, parsedTo, now);\n\t\tif (clamped === null || clamped.end <= clamped.start) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-window\",\n\t\t\tmessage: \"The requested window is outside the 14 days CloudWatch Logs keeps\"\n\t\t};\n\t\treturn {\n\t\t\tok: true,\n\t\t\tmode,\n\t\t\tstartTime: clamped.start,\n\t\t\tendTime: clamped.end,\n\t\t\tpreset: null,\n\t\t\tclamped: clamped.clamped\n\t\t};\n\t}\n\tconst requestedRange = input.range?.trim() ?? \"\";\n\tconst preset = requestedRange === \"\" ? DEFAULT_HISTORIC_PRESET : isHistoricPreset(requestedRange) ? requestedRange : null;\n\tif (preset === null) return {\n\t\tok: false,\n\t\tcode: \"invalid-range\",\n\t\tmessage: `Invalid range: expected one of ${HISTORIC_PRESETS.join(\", \")} or an explicit from/to window`\n\t};\n\tconst end = Math.round(now);\n\treturn {\n\t\tok: true,\n\t\tmode,\n\t\tstartTime: Math.round(now - presetDurationMs(preset)),\n\t\tendTime: end,\n\t\tpreset,\n\t\tclamped: false\n\t};\n}\n//#endregion\n//#region src/lib/server/sse.ts\nvar NEWLINE_PATTERN = /\\r?\\n/g;\n/**\n* Encodes a single server-sent event frame.\n*\n* The JSON payload is always kept on one line, so the frame is\n* `event: <name>\\ndata: <json>\\n\\n`.\n*/\nfunction sseFrame(event, data) {\n\treturn `event: ${event.replace(NEWLINE_PATTERN, \" \").trim()}\\ndata: ${(JSON.stringify(data) ?? \"null\").replace(NEWLINE_PATTERN, \" \")}\\n\\n`;\n}\n//#endregion\n//#region src/lib/server/tail.ts\nvar DEFAULT_SEEN_CAPACITY = 5e3;\nvar DEFAULT_POLL_MS = 1e3;\nvar DEFAULT_LIMIT = 1e3;\nvar DEFAULT_MAX_CONSECUTIVE_ERRORS = 8;\nvar MAX_BACKOFF_MS = 15e3;\n/** Empty polls that end a historic window: CloudWatch can lag behind ingestion. */\nvar DEFAULT_IDLE_POLLS = 2;\n/** Upper bound on events yielded for one historic window. */\nvar DEFAULT_MAX_EVENTS = 1e4;\n/** Returns true when the value is an abort error raised by the fetch/SDK layer. */\nfunction isAbortError(error) {\n\tif (error instanceof Error) return error.name === \"AbortError\" || error.code === \"ABORT_ERR\";\n\treturn false;\n}\n/**\n* Abort-aware sleep used by default.\n*\n* Resolves after `ms`, resolves immediately when the signal aborts and always\n* clears its timer. An injected sleep may instead reject on abort, which\n* {@link tailLogEvents} handles by re-checking the signal.\n*/\nvar defaultSleep = (ms, signal) => new Promise((resolve) => {\n\tif (signal?.aborted === true || !Number.isFinite(ms) || ms <= 0) {\n\t\tresolve();\n\t\treturn;\n\t}\n\tconst onAbort = () => {\n\t\tclearTimeout(timer);\n\t\tresolve();\n\t};\n\tconst timer = setTimeout(() => {\n\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\tresolve();\n\t}, ms);\n\ttimer.unref?.();\n\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n});\n/**\n* Bounded first-in-first-out set of event ids.\n*\n* Keeps at most `capacity` ids (default 5000) so memory stays flat on long\n* streams. The oldest id is evicted first.\n*/\nvar SeenEventIds = class {\n\tids = /* @__PURE__ */ new Set();\n\tcapacity;\n\tconstructor(capacity = DEFAULT_SEEN_CAPACITY) {\n\t\tconst parsed = Number.isFinite(capacity) ? Math.floor(capacity) : DEFAULT_SEEN_CAPACITY;\n\t\tthis.capacity = parsed > 0 ? parsed : DEFAULT_SEEN_CAPACITY;\n\t}\n\t/** True when the id was recorded before. Null and empty ids are never recorded. */\n\thas(id) {\n\t\treturn id !== null && id.length > 0 && this.ids.has(id);\n\t}\n\t/** Records an id, evicting the oldest entry when the capacity is reached. */\n\tadd(id) {\n\t\tif (id === null || id.length === 0 || this.ids.has(id)) return;\n\t\tif (this.ids.size >= this.capacity) {\n\t\t\tconst oldest = this.ids.values().next();\n\t\t\tif (!oldest.done) this.ids.delete(oldest.value);\n\t\t}\n\t\tthis.ids.add(id);\n\t}\n\t/** Number of ids currently remembered. */\n\tget size() {\n\t\treturn this.ids.size;\n\t}\n};\n/**\n* Converts a poll result into the events worth sending downstream.\n*\n* Drops ids seen in earlier polls and duplicates inside the same batch, then\n* records the ids of the accepted events. Events without an id are always kept\n* and never recorded.\n*/\nfunction selectNewEvents(events, seen) {\n\tconst selected = [];\n\tif (events === void 0 || events.length === 0) return selected;\n\tconst freshIds = /* @__PURE__ */ new Set();\n\tfor (const event of events) {\n\t\tconst id = event.eventId !== void 0 && event.eventId.length > 0 ? event.eventId : null;\n\t\tif (id !== null) {\n\t\t\tif (seen.has(id) || freshIds.has(id)) continue;\n\t\t\tfreshIds.add(id);\n\t\t}\n\t\tconst dto = {\n\t\t\tid,\n\t\t\ttimestamp: typeof event.timestamp === \"number\" ? event.timestamp : 0,\n\t\t\tmessage: event.message ?? \"\"\n\t\t};\n\t\tif (event.logStreamName !== void 0) dto.streamName = event.logStreamName;\n\t\tif (typeof event.ingestionTime === \"number\") dto.ingestionTime = event.ingestionTime;\n\t\tselected.push(dto);\n\t}\n\tfor (const id of freshIds) seen.add(id);\n\treturn selected;\n}\n/** Highest timestamp in `events`, never lower than `previous`. */\nfunction nextCursor(previous, events) {\n\tlet cursor = Number.isFinite(previous) ? previous : 0;\n\tfor (const event of events) if (Number.isFinite(event.timestamp) && event.timestamp > cursor) cursor = event.timestamp;\n\treturn cursor;\n}\n/**\n* Polls `FilterLogEvents` and yields batches as they arrive.\n*\n* `startTime` is inclusive upstream, so the cursor advances to the newest\n* timestamp seen and repeated events are removed by {@link SeenEventIds}.\n* Nothing is new in a poll => sleep `pollIntervalMs`. Errors are yielded as\n* `error` batches and retried with exponential backoff\n* (`pollIntervalMs * 2^consecutiveErrors`, capped at 15000 ms) until\n* `maxConsecutiveErrors` (default 8) failures in a row, then the generator\n* returns. An aborted signal ends the generator without throwing.\n*/\nasync function* tailLogEvents(options) {\n\tconst { client, logGroupName, startTime, pollIntervalMs = DEFAULT_POLL_MS, limit = DEFAULT_LIMIT, filterPattern, signal, sleep = defaultSleep, maxConsecutiveErrors = DEFAULT_MAX_CONSECUTIVE_ERRORS, logStreamNamePrefix, endTime = null, idlePolls = DEFAULT_IDLE_POLLS, maxEvents = DEFAULT_MAX_EVENTS } = options;\n\tconst historic = typeof endTime === \"number\" && Number.isFinite(endTime);\n\tconst windowEnd = historic ? endTime : null;\n\tconst idlePollsAllowed = Number.isFinite(idlePolls) && idlePolls > 0 ? Math.floor(idlePolls) : DEFAULT_IDLE_POLLS;\n\tconst eventCap = Number.isFinite(maxEvents) && maxEvents > 0 ? Math.floor(maxEvents) : DEFAULT_MAX_EVENTS;\n\tconst pollMs = Number.isFinite(pollIntervalMs) && pollIntervalMs > 0 ? Math.min(Math.round(pollIntervalMs), MAX_BACKOFF_MS) : DEFAULT_POLL_MS;\n\tconst pageLimit = Number.isFinite(limit) && limit > 0 ? Math.floor(limit) : DEFAULT_LIMIT;\n\tconst maxErrors = Number.isFinite(maxConsecutiveErrors) && maxConsecutiveErrors > 0 ? Math.floor(maxConsecutiveErrors) : DEFAULT_MAX_CONSECUTIVE_ERRORS;\n\tconst baseInput = {\n\t\tlogGroupName,\n\t\tstartTime,\n\t\tlimit: pageLimit\n\t};\n\tif (windowEnd !== null) baseInput.endTime = windowEnd;\n\tif (filterPattern !== void 0 && filterPattern.length > 0) baseInput.filterPattern = filterPattern;\n\tif (logStreamNamePrefix !== void 0 && logStreamNamePrefix.length > 0) baseInput.logStreamNamePrefix = logStreamNamePrefix;\n\tconst isAborted = () => signal?.aborted === true;\n\tconst wait = async (ms) => {\n\t\tif (isAborted()) return true;\n\t\ttry {\n\t\t\tawait sleep(ms, signal);\n\t\t} catch {}\n\t\treturn isAborted();\n\t};\n\tconst seen = new SeenEventIds();\n\tlet cursor = Number.isFinite(startTime) ? startTime : 0;\n\tlet consecutiveErrors = 0;\n\tlet emitted = 0;\n\tlet emptyPolls = 0;\n\tfor (;;) {\n\t\tif (isAborted()) return;\n\t\ttry {\n\t\t\tconst input = {\n\t\t\t\t...baseInput,\n\t\t\t\tstartTime: cursor\n\t\t\t};\n\t\t\tconst response = await client.send(new FilterLogEventsCommand(input), { abortSignal: signal });\n\t\t\tconsecutiveErrors = 0;\n\t\t\tconst events = selectNewEvents(response.events, seen);\n\t\t\tif (events.length > 0) {\n\t\t\t\temptyPolls = 0;\n\t\t\t\tcursor = nextCursor(cursor, events);\n\t\t\t\temitted += events.length;\n\t\t\t\tyield {\n\t\t\t\t\ttype: \"events\",\n\t\t\t\t\tevents\n\t\t\t\t};\n\t\t\t\tif (historic && emitted >= eventCap) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\ttype: \"end\",\n\t\t\t\t\t\treason: \"event-limit\"\n\t\t\t\t\t};\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (windowEnd !== null && cursor >= windowEnd) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\ttype: \"end\",\n\t\t\t\t\t\treason: \"window-complete\"\n\t\t\t\t\t};\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (historic) {\n\t\t\t\temptyPolls += 1;\n\t\t\t\tif (emptyPolls >= idlePollsAllowed) {\n\t\t\t\t\tyield {\n\t\t\t\t\t\ttype: \"end\",\n\t\t\t\t\t\treason: \"window-complete\"\n\t\t\t\t\t};\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (isAborted() || isAbortError(error)) return;\n\t\t\tconsecutiveErrors += 1;\n\t\t\tconst described = describeAwsError(error);\n\t\t\tyield {\n\t\t\t\ttype: \"error\",\n\t\t\t\tmessage: described.message,\n\t\t\t\tcode: described.code\n\t\t\t};\n\t\t\tif (consecutiveErrors >= maxErrors) {\n\t\t\t\tif (historic) yield {\n\t\t\t\t\ttype: \"end\",\n\t\t\t\t\treason: \"repeated-errors\"\n\t\t\t\t};\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (await wait(Math.min(pollMs * 2 ** consecutiveErrors, MAX_BACKOFF_MS))) return;\n\t\t\tcontinue;\n\t\t}\n\t\tif (await wait(pollMs)) return;\n\t}\n}\n//#endregion\n//#region src/routes/api/stream/+server.ts\n/** Send a `ping` after this much silence. */\nvar PING_INTERVAL_MS = 15e3;\n/** Stop the stream after this many consecutive failed polls. */\nvar MAX_CONSECUTIVE_ERRORS = 8;\nvar SSE_HEADERS = {\n\t\"content-type\": \"text/event-stream; charset=utf-8\",\n\t\"cache-control\": \"no-cache, no-transform\",\n\tconnection: \"keep-alive\",\n\t\"x-accel-buffering\": \"no\"\n};\n/**\n* `GET /api/stream` - server-sent events for one log group.\n*\n* Emits `ready` first, then `log` per batch, `ping` after 15 s of silence and\n* a final `end`. The region is optional: without it the tailer uses a client\n* that resolves the region from the ambient AWS configuration. The tailer is\n* cancelled through `request.signal`, and every timer and listener is removed\n* so the dev server can exit.\n*/\nvar GET = async ({ url, request }) => {\n\tconst logGroupName = url.searchParams.get(\"group\")?.trim() ?? \"\";\n\tif (logGroupName.length === 0) return apiError(400, \"Query parameter \\\"group\\\" is required\", \"missing-group\");\n\tconst parsedRegion = parseRegionParam(url.searchParams.get(\"region\"));\n\tif (!parsedRegion.ok) return apiError(400, REGION_PARAM_HINT, \"invalid-region\");\n\tconst env = readEnv();\n\tconst config = resolveAwsConfig(env, parsedRegion.region);\n\tconst filterPattern = url.searchParams.get(\"filterPattern\")?.trim();\n\tconst streamWindow = resolveWindow({\n\t\tmode: url.searchParams.get(\"mode\"),\n\t\trange: url.searchParams.get(\"range\"),\n\t\tfrom: url.searchParams.get(\"from\"),\n\t\tto: url.searchParams.get(\"to\"),\n\t\tstartTime: url.searchParams.get(\"startTime\"),\n\t\tlookback: url.searchParams.get(\"lookback\"),\n\t\tnow: Date.now()\n\t});\n\tif (!streamWindow.ok) return apiError(400, streamWindow.message, streamWindow.code);\n\tconst pollIntervalMs = clampPollMs(url.searchParams.get(\"poll\"));\n\tlet client;\n\tlet region;\n\ttry {\n\t\tclient = createLogsClient(config);\n\t\tregion = await resolveEffectiveRegion(client, config);\n\t} catch (error) {\n\t\tconst described = describeAwsError(error);\n\t\treturn apiError(502, described.message, described.code);\n\t}\n\tconst encoder = new TextEncoder();\n\tconst bodyAbort = new AbortController();\n\tlet streamController;\n\tlet closed = false;\n\tlet pingTimer;\n\tlet cleanedUp = false;\n\tconst clearPing = () => {\n\t\tif (pingTimer !== void 0) {\n\t\t\tclearTimeout(pingTimer);\n\t\t\tpingTimer = void 0;\n\t\t}\n\t};\n\tconst armPing = () => {\n\t\tif (closed) return;\n\t\tclearPing();\n\t\tpingTimer = setTimeout(() => {\n\t\t\tpingTimer = void 0;\n\t\t\tif (closed) return;\n\t\t\tenqueue(sseFrame(\"ping\", { at: Date.now() }), false);\n\t\t\tarmPing();\n\t\t}, PING_INTERVAL_MS);\n\t\tpingTimer.unref?.();\n\t};\n\tconst enqueue = (chunk, rearm = true) => {\n\t\tif (closed || streamController === void 0) return;\n\t\ttry {\n\t\t\tstreamController.enqueue(encoder.encode(chunk));\n\t\t} catch {\n\t\t\tclosed = true;\n\t\t\treturn;\n\t\t}\n\t\tif (rearm) armPing();\n\t};\n\tconst closeStream = () => {\n\t\tclosed = true;\n\t\ttry {\n\t\t\tstreamController?.close();\n\t\t} catch {}\n\t};\n\tconst writeEnd = (reason) => {\n\t\tclearPing();\n\t\tconst payload = { reason };\n\t\ttry {\n\t\t\tstreamController?.enqueue(encoder.encode(sseFrame(\"end\", payload)));\n\t\t} catch {}\n\t\tcloseStream();\n\t};\n\tconst onAbort = () => {\n\t\tbodyAbort.abort();\n\t};\n\tconst cleanup = () => {\n\t\tif (cleanedUp) return;\n\t\tcleanedUp = true;\n\t\tclearPing();\n\t\trequest.signal.removeEventListener(\"abort\", onAbort);\n\t\tclient.destroy();\n\t};\n\tconst pump = async () => {\n\t\tlet consecutiveErrors = 0;\n\t\tlet reason = \"completed\";\n\t\ttry {\n\t\t\tfor await (const batch of tailLogEvents({\n\t\t\t\tclient,\n\t\t\t\tlogGroupName,\n\t\t\t\tstartTime: streamWindow.startTime,\n\t\t\t\tendTime: streamWindow.endTime,\n\t\t\t\tpollIntervalMs,\n\t\t\t\tfilterPattern,\n\t\t\t\tsignal: bodyAbort.signal,\n\t\t\t\tmaxConsecutiveErrors: MAX_CONSECUTIVE_ERRORS\n\t\t\t})) {\n\t\t\t\tif (closed || bodyAbort.signal.aborted) break;\n\t\t\t\tif (batch.type === \"events\") {\n\t\t\t\t\tconst payload = { events: batch.events };\n\t\t\t\t\tconsecutiveErrors = 0;\n\t\t\t\t\tenqueue(sseFrame(\"log\", payload));\n\t\t\t\t} else if (batch.type === \"end\") {\n\t\t\t\t\treason = batch.reason;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tconst payload = { message: batch.message };\n\t\t\t\t\tif (batch.code !== void 0) payload.code = batch.code;\n\t\t\t\t\tconsecutiveErrors += 1;\n\t\t\t\t\tenqueue(sseFrame(\"error\", payload));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (reason === \"completed\") {\n\t\t\t\tif (bodyAbort.signal.aborted) reason = \"client-disconnected\";\n\t\t\t\telse if (consecutiveErrors >= MAX_CONSECUTIVE_ERRORS) reason = \"repeated-errors\";\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst described = describeAwsError(error);\n\t\t\tconst payload = { message: described.message };\n\t\t\tif (described.code !== void 0) payload.code = described.code;\n\t\t\tenqueue(sseFrame(\"error\", payload));\n\t\t\treason = \"failed\";\n\t\t} finally {\n\t\t\tcleanup();\n\t\t}\n\t\twriteEnd(reason);\n\t};\n\trequest.signal.addEventListener(\"abort\", onAbort, { once: true });\n\tconst stream = new ReadableStream({\n\t\tstart(controller) {\n\t\t\tstreamController = controller;\n\t\t\tconst payload = {\n\t\t\t\tregion,\n\t\t\t\tlogGroupName,\n\t\t\t\tendpoint: config.endpoint,\n\t\t\t\tstartTime: streamWindow.startTime,\n\t\t\t\tendTime: streamWindow.endTime,\n\t\t\t\tmode: streamWindow.mode,\n\t\t\t\tpreset: streamWindow.preset,\n\t\t\t\tclamped: streamWindow.clamped\n\t\t\t};\n\t\t\tenqueue(sseFrame(\"ready\", payload));\n\t\t\tarmPing();\n\t\t\tpump();\n\t\t},\n\t\tcancel() {\n\t\t\tbodyAbort.abort();\n\t\t\tclearPing();\n\t\t\tcloseStream();\n\t\t\tcleanup();\n\t\t}\n\t});\n\treturn new Response(stream, { headers: SSE_HEADERS });\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { af as head, ag as attr } from '../../chunks/server.js-ByNB8uti.js';
2
- import '../../chunks/uneval.js-DaakSYFQ.js';
3
-
4
- //#region src/lib/assets/favicon.svg
5
- var favicon_default = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='107'%20height='128'%20viewBox='0%200%20107%20128'%3e%3ctitle%3esvelte-logo%3c/title%3e%3cpath%20d='M94.157%2022.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282%2029.608A29.92%2029.92%200%200%200%208.764%2049.65a31.5%2031.5%200%200%200%203.108%2020.231%2030%2030%200%200%200-4.477%2011.183%2031.9%2031.9%200%200%200%205.448%2024.116c10.402%2014.887%2030.942%2019.297%2045.791%209.835l26.083-16.624A29.92%2029.92%200%200%200%2098.235%2078.35a31.53%2031.53%200%200%200-3.105-20.232%2030%2030%200%200%200%204.474-11.182%2031.88%2031.88%200%200%200-5.447-24.116'%20style='fill:%23ff3e00'/%3e%3cpath%20d='M45.817%20106.582a20.72%2020.72%200%200%201-22.237-8.243%2019.17%2019.17%200%200%201-3.277-14.503%2018%2018%200%200%201%20.624-2.435l.49-1.498%201.337.981a33.6%2033.6%200%200%200%2010.203%205.098l.97.294-.09.968a5.85%205.85%200%200%200%201.052%203.878%206.24%206.24%200%200%200%206.695%202.485%205.8%205.8%200%200%200%201.603-.704L69.27%2076.28a5.43%205.43%200%200%200%202.45-3.631%205.8%205.8%200%200%200-.987-4.371%206.24%206.24%200%200%200-6.698-2.487%205.7%205.7%200%200%200-1.6.704l-9.953%206.345a19%2019%200%200%201-5.296%202.326%2020.72%2020.72%200%200%201-22.237-8.243%2019.17%2019.17%200%200%201-3.277-14.502%2017.99%2017.99%200%200%201%208.13-12.052l26.081-16.623a19%2019%200%200%201%205.3-2.329%2020.72%2020.72%200%200%201%2022.237%208.243%2019.17%2019.17%200%200%201%203.277%2014.503%2018%2018%200%200%201-.624%202.435l-.49%201.498-1.337-.98a33.6%2033.6%200%200%200-10.203-5.1l-.97-.294.09-.968a5.86%205.86%200%200%200-1.052-3.878%206.24%206.24%200%200%200-6.696-2.485%205.8%205.8%200%200%200-1.602.704L37.73%2051.72a5.42%205.42%200%200%200-2.449%203.63%205.79%205.79%200%200%200%20.986%204.372%206.24%206.24%200%200%200%206.698%202.486%205.8%205.8%200%200%200%201.602-.704l9.952-6.342a19%2019%200%200%201%205.295-2.328%2020.72%2020.72%200%200%201%2022.237%208.242%2019.17%2019.17%200%200%201%203.277%2014.503%2018%2018%200%200%201-8.13%2012.053l-26.081%2016.622a19%2019%200%200%201-5.3%202.328'%20style='fill:%23fff'/%3e%3c/svg%3e";
6
- //#endregion
7
- //#region src/routes/+layout.svelte
8
- function _layout($$renderer, $$props) {
9
- let { children } = $$props;
10
- head("12qhfyh", $$renderer, ($$renderer) => {
11
- $$renderer.title(($$renderer) => {
12
- $$renderer.push(`<title>watch-stream</title>`);
13
- });
14
- $$renderer.push(`<link rel="icon"${attr("href", favicon_default)}/>`);
15
- });
16
- $$renderer.push(`<div class="flex h-dvh min-h-[30rem] flex-col overflow-hidden bg-neutral-950 font-sans text-neutral-100 antialiased selection:bg-sky-900/60"><header class="flex-none border-b border-neutral-900 bg-neutral-950/90"><div class="flex w-full items-baseline gap-3 px-3 py-2 sm:px-4"><span class="text-sm font-semibold tracking-tight">watch<span class="text-sky-400">-stream</span></span> <span class="hidden text-xs text-neutral-500 sm:inline">Tail CloudWatch Logs in the browser</span></div></header> <main class="flex min-h-0 w-full flex-1 flex-col gap-3 px-3 py-3 sm:px-4">`);
17
- children($$renderer);
18
- $$renderer.push(`<!----></main></div>`);
19
- }
20
-
21
- export { _layout as default };
22
- //# sourceMappingURL=_layout.svelte.js-Bx7lXkAi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_layout.svelte.js-Bx7lXkAi.js","sources":["../../../../../.svelte-kit/output/server/entries/pages/_layout.svelte.js"],"sourcesContent":["import { a as head, y as attr } from \"../../chunks/server.js\";\n//#region src/lib/assets/favicon.svg\nvar favicon_default = \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='107'%20height='128'%20viewBox='0%200%20107%20128'%3e%3ctitle%3esvelte-logo%3c/title%3e%3cpath%20d='M94.157%2022.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282%2029.608A29.92%2029.92%200%200%200%208.764%2049.65a31.5%2031.5%200%200%200%203.108%2020.231%2030%2030%200%200%200-4.477%2011.183%2031.9%2031.9%200%200%200%205.448%2024.116c10.402%2014.887%2030.942%2019.297%2045.791%209.835l26.083-16.624A29.92%2029.92%200%200%200%2098.235%2078.35a31.53%2031.53%200%200%200-3.105-20.232%2030%2030%200%200%200%204.474-11.182%2031.88%2031.88%200%200%200-5.447-24.116'%20style='fill:%23ff3e00'/%3e%3cpath%20d='M45.817%20106.582a20.72%2020.72%200%200%201-22.237-8.243%2019.17%2019.17%200%200%201-3.277-14.503%2018%2018%200%200%201%20.624-2.435l.49-1.498%201.337.981a33.6%2033.6%200%200%200%2010.203%205.098l.97.294-.09.968a5.85%205.85%200%200%200%201.052%203.878%206.24%206.24%200%200%200%206.695%202.485%205.8%205.8%200%200%200%201.603-.704L69.27%2076.28a5.43%205.43%200%200%200%202.45-3.631%205.8%205.8%200%200%200-.987-4.371%206.24%206.24%200%200%200-6.698-2.487%205.7%205.7%200%200%200-1.6.704l-9.953%206.345a19%2019%200%200%201-5.296%202.326%2020.72%2020.72%200%200%201-22.237-8.243%2019.17%2019.17%200%200%201-3.277-14.502%2017.99%2017.99%200%200%201%208.13-12.052l26.081-16.623a19%2019%200%200%201%205.3-2.329%2020.72%2020.72%200%200%201%2022.237%208.243%2019.17%2019.17%200%200%201%203.277%2014.503%2018%2018%200%200%201-.624%202.435l-.49%201.498-1.337-.98a33.6%2033.6%200%200%200-10.203-5.1l-.97-.294.09-.968a5.86%205.86%200%200%200-1.052-3.878%206.24%206.24%200%200%200-6.696-2.485%205.8%205.8%200%200%200-1.602.704L37.73%2051.72a5.42%205.42%200%200%200-2.449%203.63%205.79%205.79%200%200%200%20.986%204.372%206.24%206.24%200%200%200%206.698%202.486%205.8%205.8%200%200%200%201.602-.704l9.952-6.342a19%2019%200%200%201%205.295-2.328%2020.72%2020.72%200%200%201%2022.237%208.242%2019.17%2019.17%200%200%201%203.277%2014.503%2018%2018%200%200%201-8.13%2012.053l-26.081%2016.622a19%2019%200%200%201-5.3%202.328'%20style='fill:%23fff'/%3e%3c/svg%3e\";\n//#endregion\n//#region src/routes/+layout.svelte\nfunction _layout($$renderer, $$props) {\n\tlet { children } = $$props;\n\thead(\"12qhfyh\", $$renderer, ($$renderer) => {\n\t\t$$renderer.title(($$renderer) => {\n\t\t\t$$renderer.push(`<title>watch-stream</title>`);\n\t\t});\n\t\t$$renderer.push(`<link rel=\"icon\"${attr(\"href\", favicon_default)}/>`);\n\t});\n\t$$renderer.push(`<div class=\"flex h-dvh min-h-[30rem] flex-col overflow-hidden bg-neutral-950 font-sans text-neutral-100 antialiased selection:bg-sky-900/60\"><header class=\"flex-none border-b border-neutral-900 bg-neutral-950/90\"><div class=\"flex w-full items-baseline gap-3 px-3 py-2 sm:px-4\"><span class=\"text-sm font-semibold tracking-tight\">watch<span class=\"text-sky-400\">-stream</span></span> <span class=\"hidden text-xs text-neutral-500 sm:inline\">Tail CloudWatch Logs in the browser</span></div></header> <main class=\"flex min-h-0 w-full flex-1 flex-col gap-3 px-3 py-3 sm:px-4\">`);\n\tchildren($$renderer);\n\t$$renderer.push(`<!----></main></div>`);\n}\n//#endregion\nexport { _layout as default };\n"],"names":[],"mappings":";;;AACA;AACA,IAAI,eAAe,GAAG,skEAAskE;AAC5lE;AACA;AACA,SAAS,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE;AACtC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO;AAC3B,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,UAAU,KAAK;AAC7C,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK;AACnC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,2BAA2B,CAAC,CAAC;AACjD,EAAE,CAAC,CAAC;AACJ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC;AACH,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,0jBAA0jB,CAAC,CAAC;AAC9kB,CAAC,QAAQ,CAAC,UAAU,CAAC;AACrB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC;AACxC;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_page.svelte.js-DzAAqWz2.js","sources":["../../../../../.svelte-kit/output/server/entries/pages/_page.svelte.js"],"sourcesContent":["import \"../../chunks/internal.js\";\nimport { b as clsx, i as ensure_array_like, n as attr_style, r as derived, s as stringify, t as attr_class, x as escape_html, y as attr } from \"../../chunks/server.js\";\nimport { t as REGION_CODES } from \"../../chunks/regions.js\";\nimport { n as PRESET_LABELS, o as presetLabel, r as describeWindow, s as toDateTimeLocal, t as HISTORIC_PRESETS } from \"../../chunks/time-range.js\";\nimport { n as replaceState, t as page } from \"../../chunks/state.js\";\n//#region src/lib/format.ts\n/**\n* Formatting helpers for the watch-stream UI. Every function here is pure so it can be unit\n* tested without a DOM.\n*/\n/** Placeholder shown when a timestamp is missing or not a number. */\nvar EMPTY_TIME = \"--:--:--.---\";\n/** Left-pads a non-negative integer with zeros. */\nfunction pad(value, size = 2) {\n\treturn String(Math.trunc(Math.abs(value))).padStart(size, \"0\");\n}\n/**\n* Formats an epoch-millisecond timestamp as `HH:MM:SS.mmm` in UTC.\n* UTC keeps rendering stable no matter where the browser runs.\n*/\nfunction formatTime(timestamp) {\n\tif (typeof timestamp !== \"number\" || !Number.isFinite(timestamp)) return EMPTY_TIME;\n\tconst date = new Date(timestamp);\n\tif (Number.isNaN(date.getTime())) return EMPTY_TIME;\n\treturn `${`${pad(date.getUTCHours())}:${pad(date.getUTCMinutes())}:${pad(date.getUTCSeconds())}`}.${pad(date.getUTCMilliseconds(), 3)}`;\n}\n/** Formats an epoch-millisecond timestamp as an ISO 8601 string, for tooltips. */\nfunction formatTimestamp(timestamp) {\n\tif (typeof timestamp !== \"number\" || !Number.isFinite(timestamp)) return \"—\";\n\tconst date = new Date(timestamp);\n\tif (Number.isNaN(date.getTime())) return \"—\";\n\treturn date.toISOString();\n}\n/** Formats a number with at most one decimal, dropping a trailing `.0`. */\nfunction trimZero(value) {\n\tconst fixed = value >= 100 ? value.toFixed(0) : value.toFixed(1);\n\treturn fixed.endsWith(\".0\") ? fixed.slice(0, -2) : fixed;\n}\n/**\n* Formats a byte count as `B`, `KiB`, `MiB` or `GiB`, with at most one decimal for scaled units.\n* Returns {@link EMPTY_VALUE} for a missing or negative value.\n*/\nfunction formatBytes(bytes) {\n\tif (typeof bytes !== \"number\" || !Number.isFinite(bytes) || bytes < 0) return \"—\";\n\tif (bytes < 1024) return `${Math.trunc(bytes)} B`;\n\tconst units = [\n\t\t\"KiB\",\n\t\t\"MiB\",\n\t\t\"GiB\",\n\t\t\"TiB\"\n\t];\n\tlet value = bytes / 1024;\n\tlet unit = units[0];\n\tfor (let index = 1; index < units.length && value >= 1024; index += 1) {\n\t\tvalue /= 1024;\n\t\tunit = units[index];\n\t}\n\treturn `${trimZero(value)} ${unit}`;\n}\n/** Formats an integer count with thousands separators, for example `1,234`. */\nfunction formatCount(value) {\n\tif (typeof value !== \"number\" || !Number.isFinite(value)) return \"0\";\n\tconst rounded = Math.trunc(value);\n\treturn (rounded < 0 ? \"-\" : \"\") + String(Math.abs(rounded)).replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n/**\n* Names the emulator behind a CloudWatch Logs endpoint override.\n* Returns `null` when the endpoint is empty, which means real AWS.\n*/\nfunction emulatorLabel(endpoint) {\n\tconst trimmed = typeof endpoint === \"string\" ? endpoint.trim() : \"\";\n\tif (trimmed === \"\") return null;\n\tconst lower = trimmed.toLowerCase();\n\tif (lower.includes(\"floci\")) return \"floci\";\n\tif (lower.includes(\"localstack\")) return \"localstack\";\n\tif (endpointPort(trimmed) === \"4566\") return \"floci\";\n\treturn \"local emulator\";\n}\n/** Reads the port of an endpoint URL, or `null` when it cannot be parsed. */\nfunction endpointPort(endpoint) {\n\treturn parseEndpoint(endpoint)?.port || null;\n}\n/** Parses an endpoint URL, returning `null` when it is not a URL. */\nfunction parseEndpoint(endpoint) {\n\ttry {\n\t\treturn new URL(endpoint);\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Builds the header badge text for an endpoint, for example `floci http://localhost:4566`.\n* Returns `null` when the app talks to real AWS.\n*/\nfunction describeEndpoint(endpoint) {\n\tconst trimmed = typeof endpoint === \"string\" ? endpoint.trim() : \"\";\n\tif (trimmed === \"\") return null;\n\tconst label = emulatorLabel(trimmed);\n\tif (label === null) return null;\n\treturn (parseEndpoint(trimmed)?.hostname.toLowerCase() ?? trimmed.toLowerCase()).startsWith(label) ? trimmed : `${label} ${trimmed}`;\n}\n//#endregion\n//#region src/lib/components/EndpointBadge.svelte\nfunction EndpointBadge($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** Resolved CloudWatch Logs endpoint, or `null` when talking to real AWS. */\n\t\t/** Credential mode from `GET /api/health`, or `null` when it is unknown. */\n\t\tlet { endpoint = null, credentials = null } = $$props;\n\t\t/** Badge text, for example `floci http://localhost:4566`; `null` hides the badge. */\n\t\tlet label = derived(() => describeEndpoint(endpoint));\n\t\t/** True when the server fell back to the emulator's throwaway credentials. */\n\t\tlet emulatorDefault = derived(() => credentials === \"emulator-default\");\n\t\tlet hint = derived(() => emulatorDefault() ? \"Local emulator endpoint - using floci's throwaway credentials (no ambient AWS credentials found)\" : \"Local emulator endpoint\");\n\t\tif (label() !== null) {\n\t\t\t$$renderer.push(`<!--[0--><span class=\"inline-flex items-center gap-1.5\"${attr(\"title\", hint())}><span data-testid=\"endpoint-badge\"${attr(\"title\", hint())} class=\"rounded-full border border-violet-900 bg-violet-950/60 px-2.5 py-1 text-xs font-medium text-violet-300\">${escape_html(label())}</span> `);\n\t\t\tif (emulatorDefault()) $$renderer.push(`<!--[0--><span data-testid=\"credentials-hint\" class=\"text-[0.6875rem] text-neutral-500\">dev creds</span>`);\n\t\t\telse $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/lib/resize.ts\n/**\n* Pure helpers for the drag-resizable columns in the UI.\n*\n* The components own the pointer events and the persistence; everything that can\n* be reasoned about without a DOM lives here so it can be unit tested.\n*/\n/** `localStorage` keys, prefixed so they are easy to spot in a browser. */\nvar STORAGE_KEYS = {\n\tsidebarWidth: \"watch-stream:sidebar-width\",\n\tprefixWidth: \"watch-stream:prefix-width\",\n\twrap: \"watch-stream:wrap\",\n\tjsonView: \"watch-stream:json-view\"\n};\n/** Default width of the group-list pane, in rem (matches the original layout). */\nvar SIDEBAR_WIDTH = {\n\tdefaultRem: 22,\n\tminRem: 16,\n\tmaxVw: 44\n};\n/** Width constraints for the log line prefix (timestamp + stream name). */\nvar PREFIX_WIDTH = {\n\tdefaultRem: 14,\n\tminRem: 4,\n\tmaxRem: 40\n};\n/** Converts a CSS pixel width to `rem` for use in a Tailwind `style` attribute. */\nfunction pxToRem(px, rootFontSize = 16) {\n\tconst rem = px / rootFontSize;\n\treturn `${Number.isInteger(rem) ? rem : Number(rem.toFixed(3))}rem`;\n}\n/** Parses a `rem` value into CSS pixels. */\nfunction remToPx(rem, rootFontSize = 16) {\n\treturn rem * rootFontSize;\n}\n//#endregion\n//#region src/lib/components/ColumnResizer.svelte\nfunction ColumnResizer($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** Accessible name, for example \"Resize group list\". */\n\t\t/** Current width in CSS pixels. */\n\t\t/** Lower bound in CSS pixels. */\n\t\t/** Upper bound in CSS pixels. */\n\t\t/** `data-testid` value. */\n\t\t/** Called on every pointer move and arrow key with the clamped width. */\n\t\t/** Called when a drag ends or an arrow key is handled, for persistence. */\n\t\t/** Extra classes, used for positioning. */\n\t\t/** Extra inline style, for example `left: 120px`. */\n\t\tlet { label, width, min, max, testId, onChange, onCommit, class: className = \"\", style = \"\" } = $$props;\n\t\t$$renderer.push(`<div role=\"separator\" aria-orientation=\"vertical\"${attr(\"aria-label\", label)}${attr(\"aria-valuemin\", min)}${attr(\"aria-valuemax\", max)}${attr(\"aria-valuenow\", Math.round(width))} tabindex=\"0\"${attr(\"title\", `${stringify(label)} (drag or use the arrow keys)`)}${attr(\"data-testid\", testId)}${attr_class(`cursor-col-resize touch-none bg-transparent hover:bg-sky-500/30 focus:bg-sky-500/50 focus:outline-none ${stringify(className)}`)}${attr_style(style)}></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/RangeControls.svelte\nfunction RangeControls($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** Preset name when a preset is active, otherwise an empty string. */\n\t\t/** Custom bounds as epoch ms, or `null` when a preset/live window is active. */\n\t\t/** Active mode, owned by the page. */\n\t\t/** Active preset, owned by the page. */\n\t\t/** Active custom bounds as epoch ms, owned by the page. */\n\t\t/** True when no group is selected, so there is nothing to scope. */\n\t\t/** True while a historic window is being fetched. */\n\t\t/** Called when the user switches mode or applies a range. */\n\t\tlet { mode = \"live\", range = \"15m\", from = null, to = null, disabled = false, loading = false, onApply } = $$props;\n\t\t/** Label shown on the custom chip. */\n\t\tlet customLabel = derived(() => mode === \"historic\" && range === \"\" && from !== null && to !== null ? `${toDateTimeLocal(from).replace(\"T\", \" \")} → ${toDateTimeLocal(to).replace(\"T\", \" \")}` : \"Custom…\");\n\t\t$$renderer.push(`<div class=\"flex flex-wrap items-center gap-2\" data-testid=\"range-controls\"><div class=\"flex items-center gap-1 rounded-lg border border-neutral-800 bg-neutral-900 p-0.5\" role=\"group\" aria-label=\"Tail mode\"><button type=\"button\"${attr(\"aria-pressed\", mode === \"live\")} data-testid=\"mode-live\"${attr_class(`rounded-md border px-2 py-1 text-xs font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${mode === \"live\" ? \"border-sky-700 bg-sky-950/60 text-sky-300\" : \"border-transparent text-neutral-400 hover:text-neutral-200\"}`)}>Live</button> <button type=\"button\"${attr(\"aria-pressed\", mode === \"historic\")} data-testid=\"mode-historic\"${attr_class(`rounded-md border px-2 py-1 text-xs font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${mode === \"historic\" ? \"border-amber-700 bg-amber-950/50 text-amber-300\" : \"border-transparent text-neutral-400 hover:text-neutral-200\"}`)}>Historic</button></div> `);\n\t\tif (mode === \"historic\") {\n\t\t\t$$renderer.push(`<!--[0--><div class=\"flex flex-wrap items-center gap-1\" role=\"group\" aria-label=\"Historic range\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(HISTORIC_PRESETS);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet preset = each_array[$$index];\n\t\t\t\t$$renderer.push(`<button type=\"button\"${attr(\"aria-pressed\", range === preset)}${attr(\"data-testid\", `preset-${stringify(preset)}`)}${attr(\"disabled\", disabled, true)}${attr_class(`rounded-md border px-2 py-1 text-xs font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${range === preset ? \"border-amber-700 bg-amber-950/50 text-amber-200\" : \"border-neutral-800 bg-neutral-900 text-neutral-300 hover:border-neutral-700\"} disabled:opacity-40`)}>${escape_html(PRESET_LABELS[preset])}</button>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> <button type=\"button\"${attr(\"aria-pressed\", range === \"\")} data-testid=\"preset-custom\"${attr(\"disabled\", disabled, true)}${attr_class(`rounded-md border px-2 py-1 text-xs font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${range === \"\" ? \"border-amber-700 bg-amber-950/50 text-amber-200\" : \"border-neutral-800 bg-neutral-900 text-neutral-300 hover:border-neutral-700\"}`)}>${escape_html(customLabel())}</button></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (loading) $$renderer.push(`<!--[0--><span class=\"text-xs text-amber-300\" data-testid=\"range-loading\">loading window…</span>`);\n\t\telse if (mode === \"historic\" && range !== \"\") $$renderer.push(`<!--[1--><span class=\"text-xs text-neutral-500\">last ${escape_html(presetLabel(range))}</span>`);\n\t\telse $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/groups-client.ts\n/**\n* Browser-side fetch helpers for the watch-stream JSON API (`/api/health`, `/api/regions`,\n* `/api/log-groups`). Every helper throws {@link ApiError} on a non-2xx response so the UI can show\n* the API `error` message instead of an opaque failure.\n*/\n/** Region list used by the picker before (or instead of) `/api/regions`. */\nvar DEFAULT_REGIONS = REGION_CODES;\n/** Error carrying the parsed `ApiErrorBody` returned by the API. */\nvar ApiError = class extends Error {\n\t/** HTTP status, or `0` when the request never reached the server. */\n\tstatus;\n\t/** Optional machine-readable code from the API. */\n\tcode;\n\t/** Optional extra detail from the API. */\n\tdetails;\n\tconstructor(message, options = {}) {\n\t\tsuper(message, { cause: options.cause });\n\t\tthis.name = \"ApiError\";\n\t\tthis.status = options.status ?? 0;\n\t\tthis.code = options.code;\n\t\tthis.details = options.details;\n\t}\n};\n/** Reads a string field from an unknown JSON value. */\nfunction readField(value, key) {\n\tif (typeof value !== \"object\" || value === null) return void 0;\n\tconst field = value[key];\n\treturn typeof field === \"string\" ? field : void 0;\n}\n/** Extracts the API `error` message, falling back when the body has none. */\nfunction apiErrorMessage(value, fallback = \"Unexpected API error\") {\n\treturn readField(value, \"error\") ?? fallback;\n}\n/** Builds the `/api/log-groups` URL, including only the parameters that are set. */\nfunction buildLogGroupsUrl(query) {\n\tconst search = new URLSearchParams();\n\tif (query.region) search.set(\"region\", query.region);\n\tif (query.prefix) search.set(\"prefix\", query.prefix);\n\tif (typeof query.limit === \"number\" && Number.isFinite(query.limit)) search.set(\"limit\", String(query.limit));\n\tconst suffix = search.toString();\n\treturn suffix === \"\" ? \"/api/log-groups\" : `/api/log-groups?${suffix}`;\n}\n/** True for an abort, which is a normal way to cancel a request. */\nfunction isAbort(error) {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\n/** Performs a JSON request and maps failures onto {@link ApiError}. */\nasync function getJson(url, options) {\n\tconst fetchImpl = options.fetchImpl ?? fetch;\n\tlet response;\n\ttry {\n\t\tresponse = await fetchImpl(url, {\n\t\t\theaders: { accept: \"application/json\" },\n\t\t\tsignal: options.signal\n\t\t});\n\t} catch (cause) {\n\t\tif (isAbort(cause)) throw cause;\n\t\tthrow new ApiError(`Could not reach ${url}.`, { cause });\n\t}\n\tconst text = await response.text();\n\tlet body = null;\n\tif (text.trim() !== \"\") try {\n\t\tbody = JSON.parse(text);\n\t} catch {\n\t\tbody = null;\n\t}\n\tif (!response.ok) throw new ApiError(apiErrorMessage(body, `Request to ${url} failed with ${response.status}.`), {\n\t\tstatus: response.status,\n\t\tcode: readField(body, \"code\"),\n\t\tdetails: readField(body, \"details\")\n\t});\n\treturn body;\n}\n/** `GET /api/log-groups` - log groups for a region. */\nfunction fetchLogGroups(query) {\n\treturn getJson(buildLogGroupsUrl(query), query);\n}\n/** Message shown when a region has no log groups at all. */\nfunction noGroupsMessage(region) {\n\treturn `No log groups found in ${region}. Start floci and run \\`pnpm seed\\` to create sample groups.`;\n}\n/** Drops a trailing period so an appended sentence does not double up. */\nfunction trimSentence(text) {\n\treturn text.trim().replace(/\\.+$/, \"\");\n}\n/** Adds region context to a failed group list request. */\nfunction describeGroupsError(region, error) {\n\tif (error instanceof ApiError) {\n\t\tconst details = error.details ? ` ${error.details}` : \"\";\n\t\treturn `Could not list log groups in ${region}: ${trimSentence(error.message)}.${details}`;\n\t}\n\treturn `Could not reach the watch-stream API for ${region}. ${error instanceof Error && error.message !== \"\" ? error.message : String(error)}`;\n}\n/** Adds group and region context to a stream error payload. */\nfunction describeStreamError(region, group, message) {\n\treturn `${message} (${group === null || group === \"\" ? region : `${group} in ${region}`})`;\n}\n//#endregion\n//#region src/lib/components/LogGroupList.svelte\nfunction LogGroupList($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** Groups returned for the active region. */\n\t\t/** Active region, used for context in the empty state. */\n\t\t/** Group name currently being tailed. */\n\t\t/** API error message, shown instead of the list. */\n\t\t/** Row cap; defaults to {@link MAX_GROUP_ROWS}. */\n\t\t/** Called with the group name when a row is clicked. */\n\t\t/** Called when the refresh button is clicked. */\n\t\tlet { groups = [], region = \"\", selected = null, loading = false, error = null, maxRows = 500, onSelect, onRefresh } = $$props;\n\t\tlet search = \"\";\n\t\t/** Groups matching the search box, case-insensitively. */\n\t\tlet filtered = derived(() => groups.filter((group) => group.name.toLowerCase().includes(search.trim().toLowerCase())));\n\t\t/** Rows actually rendered, capped at `maxRows`. */\n\t\tlet visible = derived(() => filtered().slice(0, maxRows));\n\t\tlet truncated = derived(() => filtered().length > visible().length);\n\t\tlet query = derived(() => search.trim());\n\t\t/** Row styling, highlighting the group that is currently being tailed. */\n\t\tfunction rowTone(name) {\n\t\t\treturn name === selected ? \"border-sky-800 bg-sky-950/50 text-sky-200\" : \"border-transparent bg-neutral-900/60 text-neutral-300 hover:border-neutral-800 hover:text-neutral-100\";\n\t\t}\n\t\t$$renderer.push(`<section class=\"flex min-h-0 flex-1 flex-col gap-3\"><div class=\"flex items-center justify-between gap-2\"><div class=\"flex items-baseline gap-2\"><h2 class=\"text-sm font-semibold text-neutral-200\">Log groups</h2> <span class=\"text-xs text-neutral-500\" data-testid=\"group-count\">${escape_html(formatCount(filtered().length))} of ${escape_html(formatCount(groups.length))}</span></div> <button type=\"button\"${attr(\"disabled\", loading, true)} class=\"rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium text-neutral-300 transition-colors hover:border-neutral-700 hover:text-neutral-100 disabled:cursor-not-allowed disabled:opacity-50\">${escape_html(loading ? \"Refreshing…\" : \"Refresh\")}</button></div> <div class=\"flex flex-col gap-1.5\"><label class=\"sr-only\" for=\"group-search\">Search log groups</label> <input id=\"group-search\" type=\"search\" placeholder=\"Search log groups\"${attr(\"value\", search)} class=\"w-full rounded-md border border-neutral-800 bg-neutral-900 px-2.5 py-1.5 text-sm text-neutral-100 outline-none transition-colors placeholder:text-neutral-600 hover:border-neutral-700 focus:border-sky-600\"/></div> `);\n\t\tif (error !== null && error !== \"\") $$renderer.push(`<!--[0--><p role=\"alert\" data-testid=\"group-error\" class=\"rounded-md border border-red-900 bg-red-950/50 px-3 py-2 text-xs leading-5 text-red-300\">${escape_html(error)}</p>`);\n\t\telse if (loading && groups.length === 0) {\n\t\t\t$$renderer.push(`<!--[1--><div class=\"flex flex-col gap-2\" data-testid=\"group-loading\" aria-busy=\"true\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(Array.from({ length: 5 }));\n\t\t\tfor (let index = 0, $$length = each_array.length; index < $$length; index++) {\n\t\t\t\teach_array[index];\n\t\t\t\t$$renderer.push(`<div class=\"h-5 animate-pulse rounded bg-neutral-800/80\"></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> <p class=\"text-xs text-neutral-500\">Loading log groups…</p></div>`);\n\t\t} else if (groups.length === 0) $$renderer.push(`<!--[2--><p data-testid=\"group-empty\" class=\"rounded-md border border-neutral-800 bg-neutral-900/60 px-3 py-2 text-xs leading-5 text-neutral-400\">${escape_html(noGroupsMessage(region))}</p>`);\n\t\telse if (visible().length === 0) $$renderer.push(`<!--[3--><p data-testid=\"group-no-match\" class=\"px-1 py-2 text-xs text-neutral-500\">No log groups match “${escape_html(query())}”.</p>`);\n\t\telse {\n\t\t\t$$renderer.push(`<!--[-1--><ul class=\"flex min-h-0 flex-1 flex-col gap-1 overflow-y-auto pr-1\"><!--[-->`);\n\t\t\tconst each_array_1 = ensure_array_like(visible());\n\t\t\tfor (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet group = each_array_1[$$index_1];\n\t\t\t\t$$renderer.push(`<li><button type=\"button\" data-testid=\"group-row\"${attr(\"aria-current\", group.name === selected ? \"true\" : void 0)}${attr_class(`flex w-full items-center justify-between gap-2 rounded-md border px-2.5 py-1.5 text-left text-xs transition-colors ${stringify(rowTone(group.name))}`)}><span class=\"truncate font-mono\">${escape_html(group.name)}</span> `);\n\t\t\t\tif (group.storedBytes !== void 0) $$renderer.push(`<!--[0--><span class=\"shrink-0 text-[0.6875rem] text-neutral-500\">${escape_html(formatBytes(group.storedBytes))}</span>`);\n\t\t\t\telse $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></button></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ul> `);\n\t\t\tif (truncated()) $$renderer.push(`<!--[0--><p class=\"text-[0.6875rem] text-neutral-500\" data-testid=\"group-truncated\">Showing first ${escape_html(formatCount(maxRows))} of ${escape_html(formatCount(filtered().length))} groups.</p>`);\n\t\t\telse $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></section>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/StatusBadge.svelte\nfunction StatusBadge($$renderer, $$props) {\n\t/** Connection status reported by the log stream. */\n\tlet { status } = $$props;\n\t/** Pill text per status. */\n\tconst LABELS = {\n\t\tidle: \"idle\",\n\t\tconnecting: \"connecting\",\n\t\tlive: \"live\",\n\t\treconnecting: \"reconnecting\",\n\t\terror: \"error\",\n\t\tended: \"ended\"\n\t};\n\t/** Pill colours per status. */\n\tconst TONES = {\n\t\tidle: \"border-neutral-700 bg-neutral-800/60 text-neutral-400\",\n\t\tconnecting: \"border-sky-900 bg-sky-950/70 text-sky-300\",\n\t\tlive: \"border-emerald-900 bg-emerald-950/70 text-emerald-300\",\n\t\treconnecting: \"border-amber-900 bg-amber-950/70 text-amber-300\",\n\t\terror: \"border-red-900 bg-red-950/70 text-red-300\",\n\t\tended: \"border-neutral-700 bg-neutral-800/60 text-neutral-400\"\n\t};\n\t/** Dot colours per status. */\n\tconst DOTS = {\n\t\tidle: \"bg-neutral-500\",\n\t\tconnecting: \"bg-sky-400 animate-pulse\",\n\t\tlive: \"bg-emerald-400\",\n\t\treconnecting: \"bg-amber-400 animate-pulse\",\n\t\terror: \"bg-red-400\",\n\t\tended: \"bg-neutral-500\"\n\t};\n\tlet tone = derived(() => TONES[status]);\n\tlet dot = derived(() => DOTS[status]);\n\tlet text = derived(() => LABELS[status]);\n\t$$renderer.push(`<span data-testid=\"status-badge\"${attr(\"data-status\", status)}${attr_class(`inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium ${stringify(tone())}`)}><span${attr_class(`size-1.5 rounded-full ${stringify(dot())}`)} aria-hidden=\"true\"></span> ${escape_html(text())}</span>`);\n}\n//#endregion\n//#region src/lib/log-buffer.ts\n/** Maximum number of lines kept in the visible client buffer. */\nvar DEFAULT_CAPACITY = 5e3;\nvar ERROR_PATTERN = /\\b(ERROR|FATAL|CRITICAL|CRIT|PANIC|EXCEPTION|TRACEBACK|SEVERE|FAILED|FAILURE)\\b/;\nvar WARN_PATTERN = /\\b(WARN|WARNING)\\b/;\nvar DEBUG_PATTERN = /\\b(DEBUG|TRACE|VERBOSE)\\b/;\n/**\n* Guesses the severity of a log line from its text.\n* Plain structured logs such as `{\"level\":\"WARN\"}` are detected too, because the level word is\n* matched anywhere in the message. Order of precedence: error, warn, debug, info.\n*/\nfunction detectLevel(message) {\n\tconst upper = (message ?? \"\").toUpperCase();\n\tif (ERROR_PATTERN.test(upper)) return \"error\";\n\tif (WARN_PATTERN.test(upper)) return \"warn\";\n\tif (DEBUG_PATTERN.test(upper)) return \"debug\";\n\treturn \"info\";\n}\n/** Tailwind text colour class for a severity. */\nfunction levelColorClass(level) {\n\tswitch (level) {\n\t\tcase \"error\": return \"text-red-400\";\n\t\tcase \"warn\": return \"text-amber-300\";\n\t\tcase \"debug\": return \"text-neutral-500\";\n\t\tdefault: return \"text-neutral-200\";\n\t}\n}\n/** Stable key for rendering a log line, since event ids can repeat or be missing. */\nfunction eventKey(event, index) {\n\treturn `${event.id ?? \"no-id\"}:${event.timestamp}:${index}`;\n}\n/** Case-insensitive substring match over the message and the stream name. */\nfunction matchesFilter(event, query) {\n\tconst needle = (query ?? \"\").trim().toLowerCase();\n\tif (needle === \"\") return true;\n\treturn `${event.message ?? \"\"} ${event.streamName ?? \"\"}`.toLowerCase().includes(needle);\n}\n/** Returns the events matching `query`, in arrival order. */\nfunction filterEvents(events, query) {\n\tif ((query ?? \"\").trim() === \"\") return events.slice();\n\treturn events.filter((event) => matchesFilter(event, query));\n}\n/** Creates an array of `length` undefined slots. */\nfunction emptySlots(length) {\n\treturn Array.from({ length });\n}\n/**\n* Fixed-capacity ring buffer that overwrites the oldest item once it is full.\n*/\nvar LogRingBuffer = class {\n\t/** Maximum number of items kept. */\n\tcapacity;\n\t#items;\n\t#start = 0;\n\t#size = 0;\n\t#dropped = 0;\n\tconstructor(capacity = DEFAULT_CAPACITY) {\n\t\tif (!Number.isInteger(capacity) || capacity <= 0) throw new RangeError(`capacity must be a positive integer, received ${capacity}`);\n\t\tthis.capacity = capacity;\n\t\tthis.#items = emptySlots(capacity);\n\t}\n\t/** Number of items currently stored. */\n\tget size() {\n\t\treturn this.#size;\n\t}\n\t/** Number of items discarded because the buffer was full. */\n\tget dropped() {\n\t\treturn this.#dropped;\n\t}\n\t/** True when the buffer holds `capacity` items. */\n\tget full() {\n\t\treturn this.#size === this.capacity;\n\t}\n\t/** Appends one item, dropping the oldest item when the buffer is full. */\n\tpush(item) {\n\t\tif (this.#size === this.capacity) {\n\t\t\tthis.#dropped += 1;\n\t\t\tthis.#start = (this.#start + 1) % this.capacity;\n\t\t\tthis.#size -= 1;\n\t\t}\n\t\tconst index = (this.#start + this.#size) % this.capacity;\n\t\tthis.#items[index] = item;\n\t\tthis.#size += 1;\n\t}\n\t/** Appends several items in order. */\n\tpushMany(items) {\n\t\tfor (const item of items) this.push(item);\n\t}\n\t/** Copies the stored items into an array ordered oldest to newest. */\n\ttoArray() {\n\t\tconst output = emptySlots(this.#size);\n\t\tfor (let offset = 0; offset < this.#size; offset += 1) output[offset] = this.#items[(this.#start + offset) % this.capacity];\n\t\treturn output;\n\t}\n\t/** Oldest stored item, or `undefined` when empty. */\n\tfirst() {\n\t\treturn this.#size === 0 ? void 0 : this.#items[this.#start];\n\t}\n\t/** Newest stored item, or `undefined` when empty. */\n\tlast() {\n\t\treturn this.#size === 0 ? void 0 : this.#items[(this.#start + this.#size - 1) % this.capacity];\n\t}\n\t/** Removes every item and resets the dropped counter. */\n\tclear() {\n\t\tthis.#items = emptySlots(this.capacity);\n\t\tthis.#start = 0;\n\t\tthis.#size = 0;\n\t\tthis.#dropped = 0;\n\t}\n};\n/**\n* Log store used by the UI: a visible ring buffer plus a pending buffer that fills up while the\n* view is paused. `push()` never drops silent data, it either appends to the visible buffer or to\n* the pending buffer; `resume()` moves the pending events into the visible buffer in order.\n*/\nvar LogStore = class {\n\tbuffer;\n\t#pending;\n\t#paused = false;\n\tconstructor(capacity = DEFAULT_CAPACITY) {\n\t\tthis.buffer = new LogRingBuffer(capacity);\n\t\tthis.#pending = new LogRingBuffer(capacity);\n\t}\n\t/** True when incoming events are buffered instead of appended to the visible buffer. */\n\tget paused() {\n\t\treturn this.#paused;\n\t}\n\t/** Number of visible lines. */\n\tget size() {\n\t\treturn this.buffer.size;\n\t}\n\t/** Number of lines held back while paused. */\n\tget pendingCount() {\n\t\treturn this.#pending.size;\n\t}\n\t/** Number of visible lines dropped because the buffer was full. */\n\tget droppedCount() {\n\t\treturn this.buffer.dropped;\n\t}\n\t/** Appends events to the visible buffer, or holds them back while paused. */\n\tpush(events) {\n\t\tif (this.#paused) {\n\t\t\tthis.#pending.pushMany(events);\n\t\t\treturn;\n\t\t}\n\t\tthis.buffer.pushMany(events);\n\t}\n\t/** Pauses or resumes appending. Resuming flushes the pending events immediately. */\n\tsetPaused(paused) {\n\t\tif (paused === this.#paused) return [];\n\t\tthis.#paused = paused;\n\t\treturn paused ? [] : this.flush();\n\t}\n\t/** Pauses appending to the visible buffer. */\n\tpause() {\n\t\tthis.#paused = true;\n\t}\n\t/** Resumes appending and returns the events flushed from the pending buffer. */\n\tresume() {\n\t\tthis.#paused = false;\n\t\treturn this.flush();\n\t}\n\t/** Moves every pending event into the visible buffer, oldest first. */\n\tflush() {\n\t\tconst flushed = this.#pending.toArray();\n\t\tthis.#pending.clear();\n\t\tthis.buffer.pushMany(flushed);\n\t\treturn flushed;\n\t}\n\t/** Copies the visible lines, oldest first. */\n\ttoArray() {\n\t\treturn this.buffer.toArray();\n\t}\n\t/** Empties the visible buffer and discards pending events. */\n\tclear() {\n\t\tthis.buffer.clear();\n\t\tthis.#pending.clear();\n\t}\n};\n//#endregion\n//#region src/lib/log-format.ts\n/**\n* Parses a log message that is entirely JSON.\n*\n* Only objects and arrays count: a message that happens to be `42` or `\"ok\"` is\n* left alone, and anything that does not parse is not JSON. Leading and trailing\n* whitespace is ignored.\n*/\nfunction detectJson(message) {\n\tif (typeof message !== \"string\") return null;\n\tconst trimmed = message.trim();\n\tif (trimmed.length === 0) return null;\n\tconst first = trimmed[0];\n\tif (first !== \"{\" && first !== \"[\") return null;\n\ttry {\n\t\tconst parsed = JSON.parse(trimmed);\n\t\tif (parsed === null || typeof parsed !== \"object\") return null;\n\t\treturn parsed;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Returns the text to render for a log message.\n*\n* `prettyJson` is normally true: JSON messages are re-serialised with two-space\n* indentation. With `prettyJson` false the raw message is returned unchanged,\n* which is what the viewer's JSON toggle switches to.\n*/\nfunction formatLogMessage(message, options = {}) {\n\tconst { prettyJson = true } = options;\n\tconst value = detectJson(message);\n\tif (value === null || !prettyJson) return {\n\t\ttext: message,\n\t\tisJson: value !== null,\n\t\tvalue\n\t};\n\treturn {\n\t\ttext: JSON.stringify(value, null, 2),\n\t\tisJson: true,\n\t\tvalue\n\t};\n}\nvar NUMBER_PATTERN = /^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$/;\n/**\n* Splits pretty-printed JSON into coloured tokens.\n*\n* The concatenation of every token's `text` is always identical to the input, so\n* rendering tokens can never lose or alter a character. This is a display-only\n* scanner: it assumes well-formed JSON produced by `JSON.stringify`.\n*/\nfunction tokenizeJson(text) {\n\tconst tokens = [];\n\tlet index = 0;\n\tconst push = (type, value) => {\n\t\tif (value.length > 0) tokens.push({\n\t\t\ttype,\n\t\t\ttext: value\n\t\t});\n\t};\n\twhile (index < text.length) {\n\t\tconst char = text[index];\n\t\tif (char === \" \" || char === \"\\n\" || char === \"\t\" || char === \"\\r\") {\n\t\t\tlet end = index;\n\t\t\twhile (end < text.length && \" \\n\t\\r\".includes(text[end])) end += 1;\n\t\t\tpush(\"whitespace\", text.slice(index, end));\n\t\t\tindex = end;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"\\\"\") {\n\t\t\tlet end = index + 1;\n\t\t\twhile (end < text.length) {\n\t\t\t\tif (text[end] === \"\\\\\") {\n\t\t\t\t\tend += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (text[end] === \"\\\"\") break;\n\t\t\t\tend += 1;\n\t\t\t}\n\t\t\tconst raw = text.slice(index, Math.min(end + 1, text.length));\n\t\t\tlet lookahead = index + raw.length;\n\t\t\twhile (lookahead < text.length && \" \\n\t\\r\".includes(text[lookahead])) lookahead += 1;\n\t\t\tpush(text[lookahead] === \":\" ? \"key\" : \"string\", raw);\n\t\t\tindex += raw.length;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"{\" || char === \"}\" || char === \"[\" || char === \"]\" || char === \",\" || char === \":\") {\n\t\t\tpush(\"punctuation\", char);\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (text.startsWith(\"true\", index) || text.startsWith(\"false\", index)) {\n\t\t\tconst literal = text.startsWith(\"true\", index) ? \"true\" : \"false\";\n\t\t\tpush(\"boolean\", literal);\n\t\t\tindex += literal.length;\n\t\t\tcontinue;\n\t\t}\n\t\tif (text.startsWith(\"null\", index)) {\n\t\t\tpush(\"null\", \"null\");\n\t\t\tindex += 4;\n\t\t\tcontinue;\n\t\t}\n\t\tlet end = index;\n\t\twhile (end < text.length && !\"{}[],:\\\" \\n\t\\r\".includes(text[end])) end += 1;\n\t\tconst raw = text.slice(index, Math.max(end, index + 1));\n\t\tpush(NUMBER_PATTERN.test(raw) ? \"number\" : \"other\", raw);\n\t\tindex += raw.length;\n\t}\n\treturn tokens;\n}\n//#endregion\n//#region src/lib/components/LogViewer.svelte\nfunction LogViewer($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** Lines held by the client buffer, oldest first. */\n\t\t/** Connection status. */\n\t\t/** Last stream error, or `null`. */\n\t\t/** Active region, used for error and empty-state context. */\n\t\t/** Group being tailed, or `null` when nothing is selected. */\n\t\t/** Client-side text filter, controlled by the parent. */\n\t\t/** True while the visible buffer is frozen. */\n\t\t/** True when new lines scroll the view. */\n\t\t/** Lines held back while paused. */\n\t\t/** Lines dropped by the cap. */\n\t\t/** Total events received since the last reset. */\n\t\t/** Active tail mode, used for the window chip. */\n\t\t/** Last `ready` payload, which describes the window the server is scanning. */\n\t\t/** Reason the server ended the stream, for example `window-complete`. */\n\t\tlet { lines = [], status = \"idle\", error = null, region = \"\", group = null, filter = \"\", paused = false, autoScroll = true, pendingCount = 0, droppedCount = 0, receivedCount = 0, mode = \"live\", ready = null, endReason = null, onFilterChange, onPauseToggle, onClear, onAutoScrollToggle } = $$props;\n\t\tconst TIMESTAMP_COLUMN_PX = remToPx(7.5);\n\t\tconst ROW_PADDING_PX = remToPx(.75);\n\t\tconst ROW_GAP_PX = remToPx(.5);\n\t\tconst PREFIX_MIN_PX = remToPx(PREFIX_WIDTH.minRem);\n\t\tconst PREFIX_MAX_PX = remToPx(PREFIX_WIDTH.maxRem);\n\t\tconst PREFIX_DEFAULT_PX = remToPx(PREFIX_WIDTH.defaultRem);\n\t\t/** Persists a preference; failures are ignored (private mode, quota). */\n\t\tfunction writePref(key, value) {\n\t\t\ttry {\n\t\t\t\tif (typeof localStorage === \"undefined\") return;\n\t\t\t\tlocalStorage.setItem(key, value);\n\t\t\t} catch {}\n\t\t}\n\t\t/** View preferences, restored in `onMount` so SSR output stays deterministic. */\n\t\tlet wrapLines = false;\n\t\tlet jsonView = true;\n\t\tlet prefixPx = PREFIX_DEFAULT_PX;\n\t\t/** One rendered row, pre-formatted so the template stays declarative. */\n\t\t/** Lines matching the client-side filter. */\n\t\tlet visible = derived(() => filterEvents(lines, filter));\n\t\t/** Presentation rows for the visible lines. */\n\t\tlet rows = derived(() => visible().map((event, index) => {\n\t\t\tconst level = detectLevel(event.message);\n\t\t\tconst formatted = formatLogMessage(event.message, { prettyJson: jsonView });\n\t\t\treturn {\n\t\t\t\tkey: eventKey(event, index),\n\t\t\t\ttime: formatTime(event.timestamp),\n\t\t\t\ttimestamp: formatTimestamp(event.timestamp),\n\t\t\t\tstreamName: event.streamName,\n\t\t\t\tmessage: formatted.text,\n\t\t\t\ttokens: formatted.isJson ? tokenizeJson(formatted.text) : null,\n\t\t\t\tlevel,\n\t\t\t\tlevelClass: levelColorClass(level)\n\t\t\t};\n\t\t}));\n\t\t/** Keeps the newest line in view while auto-scroll is on (vertical only). */\n\t\t/** Error text with the group and region context. */\n\t\tlet errorText = derived(() => error === null ? null : describeStreamError(region, group, error.message));\n\t\t/** Body text when there is nothing to render. */\n\t\tlet emptyText = derived(() => group === null || group === \"\" ? \"Select a log group to start tailing.\" : filter.trim() === \"\" ? `Waiting for events from ${group}\\u2026` : \"No lines match the filter.\");\n\t\t/** Auto-scroll button colour. */\n\t\tlet autoScrollTone = derived(() => autoScroll ? \"text-sky-300\" : \"text-neutral-400\");\n\t\t/** Chip describing the active window. */\n\t\tlet windowSummary = derived(() => describeWindow(ready, Date.now()));\n\t\t/** True when a historic scan finished on its own. */\n\t\tlet windowComplete = derived(() => mode === \"historic\" && endReason === \"window-complete\");\n\t\t/** Wrap toggle colour. */\n\t\tlet wrapTone = derived(() => \"text-neutral-400\");\n\t\t/** JSON toggle colour. */\n\t\tlet jsonTone = derived(() => \"text-sky-300\");\n\t\t/** Rows fill the window when wrapping, and grow to their content otherwise. */\n\t\tlet listClass = derived(() => \"w-max min-w-full\");\n\t\t/** Message cell: wrapped text or a single long line that scrolls sideways. */\n\t\tlet messageClass = derived(() => \"whitespace-pre\");\n\t\t/** Left edge of the prefix resize handle, in pixels from the scrolled content edge. */\n\t\tlet handleLeft = derived(() => ROW_PADDING_PX + TIMESTAMP_COLUMN_PX + ROW_GAP_PX + prefixPx);\n\t\t/** Prefix column width as a CSS length. */\n\t\tlet prefixStyle = derived(() => `max-width: ${pxToRem(prefixPx)}`);\n\t\t/** Colour for a JSON token, keeping punctuation and whitespace quiet. */\n\t\tfunction tokenClass(type) {\n\t\t\tswitch (type) {\n\t\t\t\tcase \"key\": return \"text-sky-300\";\n\t\t\t\tcase \"string\": return \"text-emerald-300\";\n\t\t\t\tcase \"number\": return \"text-amber-300\";\n\t\t\t\tcase \"boolean\": return \"text-fuchsia-300\";\n\t\t\t\tcase \"null\": return \"text-neutral-500\";\n\t\t\t\tcase \"punctuation\": return \"text-neutral-600\";\n\t\t\t\tdefault: return \"\";\n\t\t\t}\n\t\t}\n\t\t/** Persists the current prefix width. */\n\t\tfunction savePrefixWidth() {\n\t\t\twritePref(STORAGE_KEYS.prefixWidth, String(Math.round(prefixPx)));\n\t\t}\n\t\t$$renderer.push(`<section class=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-neutral-800 bg-neutral-950\"><div class=\"flex flex-wrap items-center gap-x-3 gap-y-2 border-b border-neutral-800 bg-neutral-900/40 px-3 py-2\">`);\n\t\tStatusBadge($$renderer, { status });\n\t\t$$renderer.push(`<!----> <span class=\"text-xs text-neutral-400\" data-testid=\"visible-count\">${escape_html(formatCount(visible().length))} shown</span> <span class=\"text-xs text-neutral-500\" data-testid=\"received-count\">${escape_html(formatCount(receivedCount))} received</span> `);\n\t\tif (pendingCount > 0) $$renderer.push(`<!--[0--><span class=\"text-xs text-amber-300\" data-testid=\"pending-count\">${escape_html(formatCount(pendingCount))} buffered</span>`);\n\t\telse $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (droppedCount > 0) $$renderer.push(`<!--[0--><span class=\"text-xs text-amber-300/80\" data-testid=\"dropped-count\">${escape_html(formatCount(droppedCount))} dropped</span>`);\n\t\telse $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <span${attr_class(`rounded-full border px-2 py-0.5 text-[0.6875rem] font-medium ${windowSummary().mode === \"historic\" ? \"border-amber-900 bg-amber-950/40 text-amber-300\" : \"border-neutral-800 bg-neutral-900 text-neutral-400\"}`)}${attr(\"title\", windowSummary().title)} data-testid=\"window-chip\">${escape_html(windowSummary().label)}</span> `);\n\t\tif (windowSummary().clamped) $$renderer.push(`<!--[0--><span class=\"text-[0.6875rem] text-amber-400/80\" data-testid=\"window-clamped\">14-day limit</span>`);\n\t\telse $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (windowComplete()) $$renderer.push(`<!--[0--><span class=\"text-[0.6875rem] text-emerald-400/80\" data-testid=\"window-complete\">window complete</span>`);\n\t\telse $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"ml-auto flex flex-wrap items-center gap-2\"><input type=\"search\" aria-label=\"Filter log lines\" placeholder=\"Filter lines\"${attr(\"value\", filter)} class=\"w-40 rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs text-neutral-100 outline-none transition-colors placeholder:text-neutral-600 hover:border-neutral-700 focus:border-sky-600\"/> <button type=\"button\"${attr(\"aria-pressed\", wrapLines)} title=\"Wrap long lines instead of scrolling sideways\" data-testid=\"wrap-toggle\"${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${wrapTone()}`)}>Wrap</button> <button type=\"button\"${attr(\"aria-pressed\", jsonView)} title=\"Pretty-print JSON log entries\" data-testid=\"json-toggle\"${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${jsonTone()}`)}>JSON</button> <button type=\"button\"${attr(\"aria-pressed\", paused)} class=\"rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium text-neutral-300 transition-colors hover:border-neutral-700 hover:text-neutral-100\">${escape_html(paused ? \"Resume\" : \"Pause\")}</button> <button type=\"button\" class=\"rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium text-neutral-300 transition-colors hover:border-neutral-700 hover:text-neutral-100\">Clear</button> <button type=\"button\"${attr(\"aria-pressed\", autoScroll)}${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${autoScrollTone()}`)}>Auto-scroll</button></div></div> `);\n\t\tif (errorText() !== null) $$renderer.push(`<!--[0--><p role=\"alert\" data-testid=\"stream-error\" class=\"border-b border-red-900 bg-red-950/50 px-3 py-2 text-xs leading-5 text-red-300\">${escape_html(errorText())}</p>`);\n\t\telse $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"min-h-0 min-w-0 flex-1 overflow-auto bg-neutral-950\" data-testid=\"log-scroller\">`);\n\t\tif (group === null || group === \"\") $$renderer.push(`<!--[0--><p class=\"px-3 py-6 text-sm text-neutral-500\" data-testid=\"viewer-idle\">Select a log group to start tailing.</p>`);\n\t\telse if (rows().length === 0) $$renderer.push(`<!--[1--><p class=\"px-3 py-6 text-sm text-neutral-500\" data-testid=\"viewer-empty\">${escape_html(emptyText())}</p>`);\n\t\telse {\n\t\t\t$$renderer.push(`<!--[-1--><div${attr_class(`relative min-h-full ${listClass()}`)} data-testid=\"log-canvas\"><ol class=\"font-mono text-xs leading-5\" data-testid=\"log-lines\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(rows());\n\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet row = each_array[$$index_1];\n\t\t\t\t$$renderer.push(`<li${attr_class(`flex items-baseline gap-2 px-3 py-0.5 hover:bg-neutral-900/60 ${listClass()}`)} data-testid=\"log-line\"${attr(\"data-level\", row.level)}><span class=\"w-[7.5rem] shrink-0 text-neutral-500\"${attr(\"title\", row.timestamp)}>${escape_html(row.time)}</span> <span class=\"shrink-0 truncate text-sky-400/80\"${attr_style(prefixStyle())}${attr(\"title\", row.streamName ?? \"\")} data-testid=\"log-stream\">${escape_html(row.streamName ?? \"\")}</span> <span${attr_class(`${messageClass()} ${stringify(row.levelClass)}`)} data-testid=\"log-message\">`);\n\t\t\t\tif (row.tokens !== null) {\n\t\t\t\t\t$$renderer.push(`<!--[0--><!--[-->`);\n\t\t\t\t\tconst each_array_1 = ensure_array_like(row.tokens);\n\t\t\t\t\tfor (let tokenIndex = 0, $$length = each_array_1.length; tokenIndex < $$length; tokenIndex++) {\n\t\t\t\t\t\tlet token = each_array_1[tokenIndex];\n\t\t\t\t\t\t$$renderer.push(`<span${attr_class(clsx(tokenClass(token.type)))}>${escape_html(token.text)}</span>`);\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t} else $$renderer.push(`<!--[-1-->${escape_html(row.message)}`);\n\t\t\t\t$$renderer.push(`<!--]--></span></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ol> `);\n\t\t\tColumnResizer($$renderer, {\n\t\t\t\tlabel: \"Resize prefix column\",\n\t\t\t\twidth: prefixPx,\n\t\t\t\tmin: PREFIX_MIN_PX,\n\t\t\t\tmax: PREFIX_MAX_PX,\n\t\t\t\ttestId: \"prefix-resizer\",\n\t\t\t\tonChange: (next) => prefixPx = next,\n\t\t\t\tonCommit: () => savePrefixWidth(),\n\t\t\t\tclass: \"absolute inset-y-0 w-2\",\n\t\t\t\tstyle: `left: ${stringify(handleLeft() - 4)}px`\n\t\t\t});\n\t\t\t$$renderer.push(`<!----></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></section>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/RegionSelect.svelte\nfunction RegionSelect($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** Regions offered by the picker; defaults to {@link DEFAULT_REGIONS}. */\n\t\t/** Currently selected region. */\n\t\t/** Called with the newly selected region. */\n\t\tlet { regions = DEFAULT_REGIONS, value = \"\", disabled = false, label = \"Region\", id = \"region-select\", onchange } = $$props;\n\t\t/** Offered regions, plus the current value when the server does not list it. */\n\t\tlet options = derived(() => value !== \"\" && !regions.includes(value) ? [value, ...regions] : [...regions]);\n\t\t$$renderer.push(`<div class=\"flex flex-col gap-1.5\"><label${attr(\"for\", id)} class=\"text-[0.6875rem] font-semibold uppercase tracking-wider text-neutral-500\">${escape_html(label)}</label> `);\n\t\t$$renderer.select({\n\t\t\tid,\n\t\t\tdisabled,\n\t\t\tvalue,\n\t\t\tonchange: (event) => onchange?.(event.currentTarget.value),\n\t\t\tclass: \"w-full rounded-md border border-neutral-800 bg-neutral-900 px-2.5 py-1.5 text-sm text-neutral-100 outline-none transition-colors hover:border-neutral-700 focus:border-sky-600 disabled:cursor-not-allowed disabled:opacity-50\"\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\tconst each_array = ensure_array_like(options());\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet option = each_array[$$index];\n\t\t\t\t$$renderer.option({ value: option }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`${escape_html(option)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t});\n\t\t$$renderer.push(`</div>`);\n\t});\n}\nfunction createBrowserEventSource(url) {\n\treturn new EventSource(url);\n}\n/** Builds the `/api/stream` SSE URL for a target. `base` allows an absolute URL in tests. */\nfunction buildStreamUrl(target, base = \"\") {\n\tconst search = new URLSearchParams();\n\tsearch.set(\"region\", target.region);\n\tsearch.set(\"group\", target.group);\n\tif (target.filterPattern) search.set(\"filterPattern\", target.filterPattern);\n\tif (target.mode === \"historic\") {\n\t\tsearch.set(\"mode\", \"historic\");\n\t\tif (target.range) search.set(\"range\", target.range);\n\t\tif (target.from !== void 0 && target.from !== \"\") search.set(\"from\", String(target.from));\n\t\tif (target.to !== void 0 && target.to !== \"\") search.set(\"to\", String(target.to));\n\t} else if (target.mode === \"live\") search.set(\"mode\", \"live\");\n\tif (target.startTime !== void 0 && target.startTime !== \"\") search.set(\"startTime\", String(target.startTime));\n\tif (target.lookback) search.set(\"lookback\", target.lookback);\n\tif (typeof target.poll === \"number\" && Number.isFinite(target.poll)) search.set(\"poll\", String(target.poll));\n\treturn `${base}/api/stream?${search.toString()}`;\n}\n/** Parses an SSE payload, returning `null` instead of throwing on malformed JSON. */\nfunction parsePayload(data) {\n\ttry {\n\t\treturn JSON.parse(data);\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Live view over one CloudWatch log group.\n*\n* Pause policy: pausing keeps the connection open and keeps receiving events; those events are\n* held in a pending buffer and flushed into the visible buffer on resume.\n*/\nvar LogStream = class {\n\t/** Connection status shown by the status badge. */\n\tstatus = \"idle\";\n\t/** Last server-side or transport error, or `null`. */\n\tlastError = null;\n\t/** Payload of the last `ready` event. */\n\tready = null;\n\t/** Current target, or `null` after `stop()`. */\n\ttarget = null;\n\t/** Visible log lines, oldest first, capped by the buffer capacity. */\n\tlines = [];\n\t/** Total number of events received since the last reset. */\n\treceivedCount = 0;\n\t/** Lines dropped because the visible buffer was full. */\n\tdroppedCount = 0;\n\t/** Lines held back while paused. */\n\tpendingCount = 0;\n\t/** True when the visible buffer is frozen and events are buffered. */\n\tpaused = false;\n\t/** Timestamp of the last `ping` or `log` event. */\n\tlastEventAt = null;\n\t/** Reason given by the last `end` event. */\n\tendReason = null;\n\t#store;\n\t#source = null;\n\t#listeners = [];\n\t#reconnectTimer = null;\n\t#createEventSource;\n\t#reconnectDelayMs;\n\t#url;\n\t#schedule;\n\t#cancel;\n\tconstructor(options = {}) {\n\t\tthis.#store = new LogStore(options.capacity ?? 5e3);\n\t\tthis.#createEventSource = options.createEventSource ?? createBrowserEventSource;\n\t\tthis.#reconnectDelayMs = options.reconnectDelayMs ?? 1e3;\n\t\tthis.#url = options.url ?? ((target) => buildStreamUrl(target));\n\t\tthis.#schedule = options.schedule ?? ((callback, delayMs) => setTimeout(callback, delayMs));\n\t\tthis.#cancel = options.cancel ?? ((handle) => clearTimeout(handle));\n\t}\n\t/** Starts tailing a target, replacing any previous stream and clearing the buffer. */\n\tstart(target) {\n\t\tthis.#closeSource();\n\t\tthis.#clearReconnect();\n\t\tthis.clear();\n\t\tthis.status = \"connecting\";\n\t\tthis.lastError = null;\n\t\tthis.ready = null;\n\t\tthis.endReason = null;\n\t\tthis.target = { ...target };\n\t\tthis.#connect(false);\n\t}\n\t/** Stops tailing and forgets the target; the buffered lines stay visible. */\n\tstop() {\n\t\tthis.#clearReconnect();\n\t\tthis.#closeSource();\n\t\tthis.target = null;\n\t\tthis.status = \"idle\";\n\t}\n\t/** Freezes the visible buffer; incoming events are held until {@link resume}. */\n\tpause() {\n\t\tthis.#store.pause();\n\t\tthis.paused = true;\n\t}\n\t/** Thaws the visible buffer and flushes the events held while paused. */\n\tresume() {\n\t\tthis.#store.resume();\n\t\tthis.paused = false;\n\t\tthis.#syncStore();\n\t}\n\t/** Pauses or resumes, depending on the current state. */\n\ttogglePause() {\n\t\tif (this.paused) this.resume();\n\t\telse this.pause();\n\t}\n\t/** Empties the visible buffer, the pending buffer and the counters. */\n\tclear() {\n\t\tthis.#store.clear();\n\t\tthis.paused = false;\n\t\tthis.lines = [];\n\t\tthis.receivedCount = 0;\n\t\tthis.droppedCount = 0;\n\t\tthis.pendingCount = 0;\n\t}\n\t/** Number of visible lines. */\n\tget size() {\n\t\treturn this.#store.size;\n\t}\n\t/** Opens a connection for the current target. */\n\t#connect(retry) {\n\t\tconst target = this.target;\n\t\tif (target === null) return;\n\t\tthis.#closeSource();\n\t\tthis.status = retry ? \"reconnecting\" : \"connecting\";\n\t\tlet source;\n\t\ttry {\n\t\t\tsource = this.#createEventSource(this.#url(target));\n\t\t} catch (error) {\n\t\t\tthis.status = \"error\";\n\t\t\tthis.lastError = { message: error instanceof Error ? error.message : String(error) };\n\t\t\treturn;\n\t\t}\n\t\tthis.#source = source;\n\t\tthis.#listen(source, \"open\", () => {\n\t\t\tthis.status = \"live\";\n\t\t\tthis.lastError = null;\n\t\t});\n\t\tthis.#listen(source, \"error\", (event) => this.#handleErrorEvent(event));\n\t\tthis.#listen(source, \"ready\", (event) => this.#handleReady(event));\n\t\tthis.#listen(source, \"log\", (event) => this.#handleLog(event));\n\t\tthis.#listen(source, \"ping\", (event) => this.#handlePing(event));\n\t\tthis.#listen(source, \"end\", (event) => this.#handleEnd(event));\n\t}\n\t/** Registers a named-event listener and remembers it for cleanup. */\n\t#listen(source, type, handler) {\n\t\tsource.addEventListener(type, handler);\n\t\tthis.#listeners.push({\n\t\t\tsource,\n\t\t\ttype,\n\t\t\thandler\n\t\t});\n\t}\n\t/** Detaches listeners and closes the current connection. */\n\t#closeSource() {\n\t\tfor (const listener of this.#listeners) listener.source.removeEventListener(listener.type, listener.handler);\n\t\tthis.#listeners = [];\n\t\tthis.#source?.close();\n\t\tthis.#source = null;\n\t}\n\t/**\n\t* Handles every `error` event. A payload means the server reported a problem; an empty payload\n\t* means the connection dropped, which {@link #handleTransportError} deals with.\n\t*/\n\t#handleErrorEvent(event) {\n\t\tconst data = typeof event.data === \"string\" ? event.data.trim() : \"\";\n\t\tif (data === \"\") {\n\t\t\tthis.#handleTransportError();\n\t\t\treturn;\n\t\t}\n\t\tthis.lastError = parsePayload(data) ?? { message: data };\n\t\tthis.status = \"error\";\n\t}\n\t/**\n\t* Handles a transport failure. While the source is still `CONNECTING` the browser keeps retrying\n\t* on its own; a `CLOSED` source is rebuilt after {@link LogStreamOptions.reconnectDelayMs}.\n\t*/\n\t#handleTransportError() {\n\t\tconst source = this.#source;\n\t\tif (source === null) return;\n\t\tthis.status = \"reconnecting\";\n\t\tif (source.readyState === 2) this.#scheduleReconnect();\n\t}\n\t/** Schedules one reconnect attempt, unless one is already pending. */\n\t#scheduleReconnect() {\n\t\tif (this.#reconnectTimer !== null) return;\n\t\tthis.#reconnectTimer = this.#schedule(() => {\n\t\t\tthis.#reconnectTimer = null;\n\t\t\tif (this.target !== null) this.#connect(true);\n\t\t}, this.#reconnectDelayMs);\n\t}\n\t/** Drops a pending reconnect attempt. */\n\t#clearReconnect() {\n\t\tif (this.#reconnectTimer === null) return;\n\t\tthis.#cancel(this.#reconnectTimer);\n\t\tthis.#reconnectTimer = null;\n\t}\n\t/** Marks the stream as live after receiving data. */\n\t#markLive() {\n\t\tthis.lastEventAt = Date.now();\n\t\tif (this.status !== \"ended\") this.status = \"live\";\n\t}\n\t/** Copies buffer state onto the reactive fields. */\n\t#syncStore() {\n\t\tthis.lines = this.#store.toArray();\n\t\tthis.pendingCount = this.#store.pendingCount;\n\t\tthis.droppedCount = this.#store.droppedCount;\n\t}\n\t#handleReady(event) {\n\t\tconst payload = parsePayload(event.data);\n\t\tif (payload !== null) this.ready = payload;\n\t\tthis.#markLive();\n\t}\n\t#handleLog(event) {\n\t\tconst payload = parsePayload(event.data);\n\t\tconst events = payload !== null && Array.isArray(payload.events) ? payload.events : [];\n\t\tif (events.length === 0) return;\n\t\tthis.#store.push(events);\n\t\tthis.#syncStore();\n\t\tthis.receivedCount += events.length;\n\t\tthis.#markLive();\n\t}\n\t#handlePing(event) {\n\t\tconst payload = parsePayload(event.data);\n\t\tthis.lastEventAt = payload?.at ?? Date.now();\n\t\tif (this.status !== \"ended\") this.status = \"live\";\n\t}\n\t#handleEnd(event) {\n\t\tconst payload = parsePayload(event.data);\n\t\tthis.endReason = payload?.reason ?? null;\n\t\tthis.status = \"ended\";\n\t\tthis.#clearReconnect();\n\t\tthis.#closeSource();\n\t}\n};\n//#endregion\n//#region src/routes/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** Owns the SSE connection; the page only wires it to the UI. */\n\t\tconst stream = new LogStream();\n\t\t/** Region picker state. Seeded from the URL so a shared link restores the view. */\n\t\tlet region = page.url.searchParams.get(\"region\") ?? \"\";\n\t\t/** Tail mode and historic window, seeded from the URL. */\n\t\tlet mode = page.url.searchParams.get(\"mode\") === \"historic\" ? \"historic\" : \"live\";\n\t\tlet range = page.url.searchParams.get(\"range\") ?? \"15m\";\n\t\tlet windowFrom = parseUrlEpoch(page.url.searchParams.get(\"from\"));\n\t\tlet windowTo = parseUrlEpoch(page.url.searchParams.get(\"to\"));\n\t\tlet rangeLoading = false;\n\t\tlet regions = [...DEFAULT_REGIONS];\n\t\tlet groups = [];\n\t\tlet groupsLoading = false;\n\t\tlet groupsError = null;\n\t\tlet endpoint = null;\n\t\tlet filter = \"\";\n\t\tlet autoScroll = true;\n\t\t/** Group currently being tailed, or `null`. */\n\t\tlet selectedGroup = derived(() => stream.target?.group ?? null);\n\t\t/** Sidebar width in pixels; the layout default is 22rem. */\n\t\tlet sidebarPx = remToPx(SIDEBAR_WIDTH.defaultRem);\n\t\t/** Largest sidebar width allowed: 44vw, but never below the minimum. */\n\t\tlet sidebarMaxPx = derived(() => remToPx(SIDEBAR_WIDTH.defaultRem));\n\t\tlet sidebarMinPx = remToPx(SIDEBAR_WIDTH.minRem);\n\t\tlet sidebarStyle = derived(() => `width: min(${sidebarPx}px, ${SIDEBAR_WIDTH.maxVw}vw)`);\n\t\t/** Persists the sidebar width; failures are ignored (private mode, quota). */\n\t\tfunction saveSidebarWidth() {\n\t\t\ttry {\n\t\t\t\tif (typeof localStorage === \"undefined\") return;\n\t\t\t\tlocalStorage.setItem(STORAGE_KEYS.sidebarWidth, String(Math.round(sidebarPx)));\n\t\t\t} catch {}\n\t\t}\n\t\t/** Loads the log groups of a region; a newer region change wins the race. */\n\t\tasync function loadGroups(target) {\n\t\t\tgroupsLoading = true;\n\t\t\tgroupsError = null;\n\t\t\ttry {\n\t\t\t\tconst response = await fetchLogGroups({ region: target });\n\t\t\t\tif (target !== region) return;\n\t\t\t\tif (response.endpoint !== null) endpoint = response.endpoint;\n\t\t\t\tgroups = response.groups;\n\t\t\t} catch (error) {\n\t\t\t\tif (target !== region) return;\n\t\t\t\tgroups = [];\n\t\t\t\tgroupsError = describeGroupsError(target, error);\n\t\t\t} finally {\n\t\t\t\tif (target === region) groupsLoading = false;\n\t\t\t}\n\t\t}\n\t\t/** Parses an epoch-millisecond URL parameter, or `null`. */\n\t\tfunction parseUrlEpoch(value) {\n\t\t\tif (value === null || value.trim() === \"\") return null;\n\t\t\tconst parsed = Number(value);\n\t\t\treturn Number.isFinite(parsed) ? parsed : null;\n\t\t}\n\t\t/** The window the current mode asks for. */\n\t\tfunction windowParams() {\n\t\t\tif (mode === \"live\") return { mode: \"live\" };\n\t\t\tif (range === \"\" && windowFrom !== null && windowTo !== null) return {\n\t\t\t\tmode: \"historic\",\n\t\t\t\tfrom: windowFrom,\n\t\t\t\tto: windowTo\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tmode: \"historic\",\n\t\t\t\trange: range === \"\" ? \"15m\" : range\n\t\t\t};\n\t\t}\n\t\t/** Starts tailing a group with the active mode and window. */\n\t\tfunction selectGroup(name) {\n\t\t\tif (region === \"\" || name === \"\") return;\n\t\t\tstream.start({\n\t\t\t\tregion,\n\t\t\t\tgroup: name,\n\t\t\t\t...windowParams()\n\t\t\t});\n\t\t\tsyncUrl(region, name);\n\t\t}\n\t\t/** Applies a mode or range change: restarts the stream and mirrors it into the URL. */\n\t\tfunction applyRange(payload) {\n\t\t\tmode = payload.mode;\n\t\t\trange = payload.range;\n\t\t\twindowFrom = payload.from;\n\t\t\twindowTo = payload.to;\n\t\t\tsyncUrl(region, selectedGroup());\n\t\t\tif (selectedGroup() === null) return;\n\t\t\trangeLoading = payload.mode === \"historic\";\n\t\t\tstream.start({\n\t\t\t\tregion,\n\t\t\t\tgroup: selectedGroup(),\n\t\t\t\t...windowParams()\n\t\t\t});\n\t\t}\n\t\t/** Switches region: stops the stream, clears the list and reloads the groups. */\n\t\tfunction changeRegion(next) {\n\t\t\tif (next === \"\" || next === region) return;\n\t\t\tregion = next;\n\t\t\tstream.stop();\n\t\t\tgroups = [];\n\t\t\tsyncUrl(next, null);\n\t\t\tloadGroups(next);\n\t\t}\n\t\t/** Reloads the groups of the active region. */\n\t\tfunction refreshGroups() {\n\t\t\tloadGroups(region);\n\t\t}\n\t\t/** Replaces the view parameters in the address bar. */\n\t\tfunction syncUrl(nextRegion, nextGroup) {\n\t\t\tconst url = new URL(page.url);\n\t\t\tif (nextRegion === \"\") url.searchParams.delete(\"region\");\n\t\t\telse url.searchParams.set(\"region\", nextRegion);\n\t\t\tif (nextGroup === null || nextGroup === \"\") url.searchParams.delete(\"group\");\n\t\t\telse url.searchParams.set(\"group\", nextGroup);\n\t\t\tif (mode === \"live\") {\n\t\t\t\turl.searchParams.delete(\"mode\");\n\t\t\t\turl.searchParams.delete(\"range\");\n\t\t\t\turl.searchParams.delete(\"from\");\n\t\t\t\turl.searchParams.delete(\"to\");\n\t\t\t} else {\n\t\t\t\turl.searchParams.set(\"mode\", \"historic\");\n\t\t\t\turl.searchParams.delete(\"from\");\n\t\t\t\turl.searchParams.delete(\"to\");\n\t\t\t\turl.searchParams.delete(\"range\");\n\t\t\t\tif (range === \"\" && windowFrom !== null && windowTo !== null) {\n\t\t\t\t\turl.searchParams.set(\"from\", String(windowFrom));\n\t\t\t\t\turl.searchParams.set(\"to\", String(windowTo));\n\t\t\t\t} else url.searchParams.set(\"range\", range === \"\" ? \"15m\" : range);\n\t\t\t}\n\t\t\tif (url.href !== page.url.href) replaceState(url, {});\n\t\t}\n\t\t$$renderer.push(`<div class=\"flex flex-wrap items-center gap-x-3 gap-y-2\"><span class=\"text-[0.6875rem] font-semibold uppercase tracking-wider text-neutral-500\">Watching</span> <span class=\"max-w-[22rem] truncate rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 font-mono text-xs text-neutral-200\">${escape_html(selectedGroup() ?? \"no group selected\")}</span> <span class=\"text-xs text-neutral-500\">in</span> <span class=\"font-mono text-xs text-neutral-300\">${escape_html(region === \"\" ? \"resolving region…\" : region)}</span> `);\n\t\tEndpointBadge($$renderer, {\n\t\t\tendpoint,\n\t\t\tcredentials: null\n\t\t});\n\t\t$$renderer.push(`<!----> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tRangeControls($$renderer, {\n\t\t\tmode,\n\t\t\trange,\n\t\t\tfrom: windowFrom,\n\t\t\tto: windowTo,\n\t\t\tloading: rangeLoading,\n\t\t\tdisabled: selectedGroup() === null,\n\t\t\tonApply: applyRange\n\t\t});\n\t\t$$renderer.push(`<!----> <div class=\"flex min-h-0 min-w-0 flex-1 flex-col gap-3 lg:flex-row\"><div class=\"flex min-h-0 w-full flex-col gap-3 rounded-lg border border-neutral-800 bg-neutral-950/60 p-3 lg:shrink-0\"${attr_style(sidebarStyle())} data-testid=\"sidebar\">`);\n\t\tRegionSelect($$renderer, {\n\t\t\tregions,\n\t\t\tvalue: region,\n\t\t\tonchange: changeRegion\n\t\t});\n\t\t$$renderer.push(`<!----> `);\n\t\tLogGroupList($$renderer, {\n\t\t\tgroups,\n\t\t\tregion,\n\t\t\tselected: selectedGroup(),\n\t\t\tloading: groupsLoading,\n\t\t\terror: groupsError,\n\t\t\tonSelect: selectGroup,\n\t\t\tonRefresh: refreshGroups\n\t\t});\n\t\t$$renderer.push(`<!----></div> `);\n\t\tColumnResizer($$renderer, {\n\t\t\tlabel: \"Resize group list\",\n\t\t\twidth: sidebarPx,\n\t\t\tmin: sidebarMinPx,\n\t\t\tmax: sidebarMaxPx(),\n\t\t\ttestId: \"sidebar-resizer\",\n\t\t\tonChange: (next) => sidebarPx = next,\n\t\t\tonCommit: () => saveSidebarWidth(),\n\t\t\tclass: \"hidden lg:block lg:w-2\"\n\t\t});\n\t\t$$renderer.push(`<!----> <div class=\"flex min-h-0 min-w-0 flex-1 flex-col\">`);\n\t\tLogViewer($$renderer, {\n\t\t\tlines: stream.lines,\n\t\t\tstatus: stream.status,\n\t\t\terror: stream.lastError,\n\t\t\tmode,\n\t\t\tready: stream.ready,\n\t\t\tendReason: stream.endReason,\n\t\t\tregion,\n\t\t\tgroup: selectedGroup(),\n\t\t\tfilter,\n\t\t\tpaused: stream.paused,\n\t\t\tautoScroll,\n\t\t\tpendingCount: stream.pendingCount,\n\t\t\tdroppedCount: stream.droppedCount,\n\t\t\treceivedCount: stream.receivedCount,\n\t\t\tonFilterChange: (value) => filter = value,\n\t\t\tonPauseToggle: () => stream.togglePause(),\n\t\t\tonClear: () => stream.clear(),\n\t\t\tonAutoScrollToggle: () => autoScroll = !autoScroll\n\t\t});\n\t\t$$renderer.push(`<!----></div></div>`);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}