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
@@ -0,0 +1,471 @@
1
+ //#region src/lib/log-format.ts
2
+ /**
3
+ * Parses a log message that is entirely JSON.
4
+ *
5
+ * Only objects and arrays count: a message that happens to be `42` or `"ok"` is
6
+ * left alone, and anything that does not parse is not JSON. Leading and trailing
7
+ * whitespace is ignored.
8
+ */
9
+ function detectJson(message) {
10
+ if (typeof message !== "string") return null;
11
+ const trimmed = message.trim();
12
+ if (trimmed.length === 0) return null;
13
+ const first = trimmed[0];
14
+ if (first !== "{" && first !== "[") return null;
15
+ try {
16
+ const parsed = JSON.parse(trimmed);
17
+ if (parsed === null || typeof parsed !== "object") return null;
18
+ return parsed;
19
+ } catch {
20
+ return null;
21
+ }
22
+ }
23
+ /**
24
+ * Returns the text to render for a log message.
25
+ *
26
+ * `prettyJson` is normally true: JSON messages are re-serialised with two-space
27
+ * indentation. With `prettyJson` false the raw message is returned unchanged,
28
+ * which is what the viewer's JSON toggle switches to.
29
+ */
30
+ function formatLogMessage(message, options = {}) {
31
+ const { prettyJson = true } = options;
32
+ const value = detectJson(message);
33
+ if (value === null || !prettyJson) return {
34
+ text: message,
35
+ isJson: value !== null,
36
+ value
37
+ };
38
+ return {
39
+ text: JSON.stringify(value, null, 2),
40
+ isJson: true,
41
+ value
42
+ };
43
+ }
44
+ var NUMBER_PATTERN = /^-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?$/;
45
+ /**
46
+ * Splits pretty-printed JSON into coloured tokens.
47
+ *
48
+ * The concatenation of every token's `text` is always identical to the input, so
49
+ * rendering tokens can never lose or alter a character. This is a display-only
50
+ * scanner: it assumes well-formed JSON produced by `JSON.stringify`.
51
+ */
52
+ function tokenizeJson(text) {
53
+ const tokens = [];
54
+ let index = 0;
55
+ const push = (type, value) => {
56
+ if (value.length > 0) tokens.push({
57
+ type,
58
+ text: value
59
+ });
60
+ };
61
+ while (index < text.length) {
62
+ const char = text[index];
63
+ if (char === " " || char === "\n" || char === " " || char === "\r") {
64
+ let end = index;
65
+ while (end < text.length && " \n \r".includes(text[end])) end += 1;
66
+ push("whitespace", text.slice(index, end));
67
+ index = end;
68
+ continue;
69
+ }
70
+ if (char === "\"") {
71
+ let end = index + 1;
72
+ while (end < text.length) {
73
+ if (text[end] === "\\") {
74
+ end += 2;
75
+ continue;
76
+ }
77
+ if (text[end] === "\"") break;
78
+ end += 1;
79
+ }
80
+ const raw = text.slice(index, Math.min(end + 1, text.length));
81
+ let lookahead = index + raw.length;
82
+ while (lookahead < text.length && " \n \r".includes(text[lookahead])) lookahead += 1;
83
+ push(text[lookahead] === ":" ? "key" : "string", raw);
84
+ index += raw.length;
85
+ continue;
86
+ }
87
+ if (char === "{" || char === "}" || char === "[" || char === "]" || char === "," || char === ":") {
88
+ push("punctuation", char);
89
+ index += 1;
90
+ continue;
91
+ }
92
+ if (text.startsWith("true", index) || text.startsWith("false", index)) {
93
+ const literal = text.startsWith("true", index) ? "true" : "false";
94
+ push("boolean", literal);
95
+ index += literal.length;
96
+ continue;
97
+ }
98
+ if (text.startsWith("null", index)) {
99
+ push("null", "null");
100
+ index += 4;
101
+ continue;
102
+ }
103
+ let end = index;
104
+ while (end < text.length && !"{}[],:\" \n \r".includes(text[end])) end += 1;
105
+ const raw = text.slice(index, Math.max(end, index + 1));
106
+ push(NUMBER_PATTERN.test(raw) ? "number" : "other", raw);
107
+ index += raw.length;
108
+ }
109
+ return tokens;
110
+ }
111
+ /**
112
+ * Finds the first JSON object or array inside a log message.
113
+ *
114
+ * Whole messages are handled by {@link detectJson}; this also copes with the
115
+ * common "prefix then payload" shape (`2026-01-01 INFO {"level":"info"}`), which
116
+ * is what the viewer expands when pretty-printing is switched off.
117
+ *
118
+ * Strings and escapes are respected while matching brackets, so a `}` inside a
119
+ * message value cannot end the scan early.
120
+ */
121
+ function findJsonInMessage(message) {
122
+ if (typeof message !== "string") return null;
123
+ const whole = detectJson(message);
124
+ if (whole !== null) return whole;
125
+ for (let index = 0; index < message.length; index += 1) {
126
+ const opener = message[index];
127
+ if (opener !== "{" && opener !== "[") continue;
128
+ const closer = opener === "{" ? "}" : "]";
129
+ let depth = 0;
130
+ let inString = false;
131
+ let escaped = false;
132
+ for (let scan = index; scan < message.length; scan += 1) {
133
+ const char = message[scan];
134
+ if (inString) {
135
+ if (escaped) escaped = false;
136
+ else if (char === "\\") escaped = true;
137
+ else if (char === "\"") inString = false;
138
+ continue;
139
+ }
140
+ if (char === "\"") {
141
+ inString = true;
142
+ continue;
143
+ }
144
+ if (char === opener) depth += 1;
145
+ else if (char === closer) {
146
+ depth -= 1;
147
+ if (depth === 0) {
148
+ const candidate = message.slice(index, scan + 1);
149
+ try {
150
+ const parsed = JSON.parse(candidate);
151
+ if (parsed !== null && typeof parsed === "object") return parsed;
152
+ } catch {}
153
+ break;
154
+ }
155
+ }
156
+ }
157
+ }
158
+ return null;
159
+ }
160
+ //#endregion
161
+ //#region src/lib/log-buffer.ts
162
+ /**
163
+ * Pure client-side log storage and filtering for the watch-stream UI.
164
+ *
165
+ * Design decisions (kept in one place so the UI stays predictable):
166
+ *
167
+ * - The visible buffer is a fixed-capacity ring buffer. When it is full the oldest line is
168
+ * dropped, so memory stays bounded while tailing a busy group.
169
+ * - Pausing keeps the SSE connection open and keeps receiving events. Incoming events are held in
170
+ * a bounded pending buffer instead of the visible buffer, and are flushed in arrival order when
171
+ * the user resumes.
172
+ */
173
+ /** Maximum number of lines kept in the visible client buffer. */
174
+ var DEFAULT_CAPACITY = 5e3;
175
+ var ERROR_PATTERN = /\b(ERROR|FATAL|CRITICAL|CRIT|PANIC|EXCEPTION|TRACEBACK|SEVERE|FAILED|FAILURE)\b/;
176
+ var WARN_PATTERN = /\b(WARN|WARNING)\b/;
177
+ var DEBUG_PATTERN = /\b(DEBUG|TRACE|VERBOSE)\b/;
178
+ /** Payload keys checked, in order, for a level the producer declared. */
179
+ var LEVEL_KEYS = [
180
+ "level",
181
+ "severity",
182
+ "lvl",
183
+ "logLevel",
184
+ "log_level"
185
+ ];
186
+ /**
187
+ * Declared level words mapped onto the four levels the UI knows.
188
+ *
189
+ * The vocabulary is deliberately small: `fatal` and `critical` are errors to
190
+ * everyone reading a log, and collapsing them keeps the filter and the colours
191
+ * honest instead of inventing levels nothing else understands.
192
+ */
193
+ var LEVEL_WORDS = {
194
+ trace: "debug",
195
+ verbose: "debug",
196
+ debug: "debug",
197
+ info: "info",
198
+ information: "info",
199
+ notice: "info",
200
+ note: "info",
201
+ warn: "warn",
202
+ warning: "warn",
203
+ error: "error",
204
+ err: "error",
205
+ exception: "error",
206
+ fatal: "error",
207
+ critical: "error",
208
+ crit: "error",
209
+ panic: "error",
210
+ severe: "error",
211
+ alert: "error",
212
+ emergency: "error"
213
+ };
214
+ /**
215
+ * Bunyan/pino style numeric levels.
216
+ *
217
+ * Only exact known values are mapped: a bare number such as `{"level":0}` means
218
+ * different things in different loggers, so an unknown number falls through to
219
+ * the text heuristic instead of being guessed at.
220
+ */
221
+ var NUMERIC_LEVELS = {
222
+ 10: "debug",
223
+ 20: "debug",
224
+ 30: "info",
225
+ 40: "warn",
226
+ 50: "error",
227
+ 60: "error"
228
+ };
229
+ /** True when a value is one of the four known levels. */
230
+ function isLogLevel(value) {
231
+ return value === "error" || value === "warn" || value === "info" || value === "debug";
232
+ }
233
+ /** Converts one declared JSON value into a level, or `null` when unrecognised. */
234
+ function levelFromDeclared(value) {
235
+ if (typeof value === "number" && Number.isFinite(value)) return NUMERIC_LEVELS[value] ?? null;
236
+ if (typeof value !== "string") return null;
237
+ const word = value.trim().toLowerCase();
238
+ if (word.length === 0) return null;
239
+ return LEVEL_WORDS[word] ?? null;
240
+ }
241
+ /**
242
+ * Level the payload declares, when the line carries a JSON object with a known
243
+ * level key. Whole messages and "prefix then payload" lines are both handled,
244
+ * by the same parser the viewer uses to pretty-print JSON.
245
+ */
246
+ function declaredLevel(message) {
247
+ const payload = findJsonInMessage(message);
248
+ if (payload === null || typeof payload !== "object" || Array.isArray(payload)) return null;
249
+ const record = payload;
250
+ for (const key of LEVEL_KEYS) {
251
+ const level = levelFromDeclared(record[key]);
252
+ if (level !== null) return level;
253
+ }
254
+ return null;
255
+ }
256
+ /**
257
+ * Detects the severity of a log line.
258
+ *
259
+ * A level the payload declares wins, because it is a statement of fact; the
260
+ * text heuristic is the fallback for the many logs that declare nothing. The
261
+ * heuristic matches level words anywhere in the line, so
262
+ * `{"level":"info","msg":"retry after error count 0"}` is `info`, not `error`.
263
+ */
264
+ function detectLevelWithSource(message) {
265
+ const declared = declaredLevel(message ?? "");
266
+ if (declared !== null) return {
267
+ level: declared,
268
+ source: "json"
269
+ };
270
+ const upper = (message ?? "").toUpperCase();
271
+ if (ERROR_PATTERN.test(upper)) return {
272
+ level: "error",
273
+ source: "text"
274
+ };
275
+ if (WARN_PATTERN.test(upper)) return {
276
+ level: "warn",
277
+ source: "text"
278
+ };
279
+ if (DEBUG_PATTERN.test(upper)) return {
280
+ level: "debug",
281
+ source: "text"
282
+ };
283
+ return {
284
+ level: null,
285
+ source: null
286
+ };
287
+ }
288
+ /**
289
+ * Guesses the severity of a log line from its text, or returns `null` when the
290
+ * line carries no signal at all (a stack-trace continuation, for example).
291
+ */
292
+ function detectLevel(message) {
293
+ return detectLevelWithSource(message).level;
294
+ }
295
+ /** Level of an event: what the server detected, else a guess from the text. */
296
+ function effectiveLevel(event) {
297
+ return event.level !== void 0 ? event.level : detectLevel(event.message);
298
+ }
299
+ /** True when an event passes a level filter; a `null` filter accepts every line. */
300
+ function matchesLevel(event, level) {
301
+ return level === null || effectiveLevel(event) === level;
302
+ }
303
+ /** Filters events by level, keeping every line when `level` is `null`. */
304
+ function filterByLevel(events, level) {
305
+ if (level === null) return events.slice();
306
+ return events.filter((event) => matchesLevel(event, level));
307
+ }
308
+ /** Tailwind text colour class for a severity; an unknown level stays neutral. */
309
+ function levelColorClass(level) {
310
+ switch (level) {
311
+ case "error": return "text-red-400";
312
+ case "warn": return "text-amber-300";
313
+ case "debug": return "text-neutral-500";
314
+ default: return "text-neutral-200";
315
+ }
316
+ }
317
+ /** Stable key for rendering a log line, since event ids can repeat or be missing. */
318
+ function eventKey(event, index) {
319
+ return `${event.id ?? "no-id"}:${event.timestamp}:${index}`;
320
+ }
321
+ /** Case-insensitive substring match over the message and the stream name. */
322
+ function matchesFilter(event, query) {
323
+ const needle = (query ?? "").trim().toLowerCase();
324
+ if (needle === "") return true;
325
+ return `${event.message ?? ""} ${event.streamName ?? ""}`.toLowerCase().includes(needle);
326
+ }
327
+ /** Returns the events matching `query`, in arrival order. */
328
+ function filterEvents(events, query) {
329
+ if ((query ?? "").trim() === "") return events.slice();
330
+ return events.filter((event) => matchesFilter(event, query));
331
+ }
332
+ /** Creates an array of `length` undefined slots. */
333
+ function emptySlots(length) {
334
+ return Array.from({ length });
335
+ }
336
+ /**
337
+ * Fixed-capacity ring buffer that overwrites the oldest item once it is full.
338
+ */
339
+ var LogRingBuffer = class {
340
+ /** Maximum number of items kept. */
341
+ capacity;
342
+ #items;
343
+ #start = 0;
344
+ #size = 0;
345
+ #dropped = 0;
346
+ constructor(capacity = DEFAULT_CAPACITY) {
347
+ if (!Number.isInteger(capacity) || capacity <= 0) throw new RangeError(`capacity must be a positive integer, received ${capacity}`);
348
+ this.capacity = capacity;
349
+ this.#items = emptySlots(capacity);
350
+ }
351
+ /** Number of items currently stored. */
352
+ get size() {
353
+ return this.#size;
354
+ }
355
+ /** Number of items discarded because the buffer was full. */
356
+ get dropped() {
357
+ return this.#dropped;
358
+ }
359
+ /** True when the buffer holds `capacity` items. */
360
+ get full() {
361
+ return this.#size === this.capacity;
362
+ }
363
+ /** Appends one item, dropping the oldest item when the buffer is full. */
364
+ push(item) {
365
+ if (this.#size === this.capacity) {
366
+ this.#dropped += 1;
367
+ this.#start = (this.#start + 1) % this.capacity;
368
+ this.#size -= 1;
369
+ }
370
+ const index = (this.#start + this.#size) % this.capacity;
371
+ this.#items[index] = item;
372
+ this.#size += 1;
373
+ }
374
+ /** Appends several items in order. */
375
+ pushMany(items) {
376
+ for (const item of items) this.push(item);
377
+ }
378
+ /** Copies the stored items into an array ordered oldest to newest. */
379
+ toArray() {
380
+ const output = emptySlots(this.#size);
381
+ for (let offset = 0; offset < this.#size; offset += 1) output[offset] = this.#items[(this.#start + offset) % this.capacity];
382
+ return output;
383
+ }
384
+ /** Oldest stored item, or `undefined` when empty. */
385
+ first() {
386
+ return this.#size === 0 ? void 0 : this.#items[this.#start];
387
+ }
388
+ /** Newest stored item, or `undefined` when empty. */
389
+ last() {
390
+ return this.#size === 0 ? void 0 : this.#items[(this.#start + this.#size - 1) % this.capacity];
391
+ }
392
+ /** Removes every item and resets the dropped counter. */
393
+ clear() {
394
+ this.#items = emptySlots(this.capacity);
395
+ this.#start = 0;
396
+ this.#size = 0;
397
+ this.#dropped = 0;
398
+ }
399
+ };
400
+ /**
401
+ * Log store used by the UI: a visible ring buffer plus a pending buffer that fills up while the
402
+ * view is paused. `push()` never drops silent data, it either appends to the visible buffer or to
403
+ * the pending buffer; `resume()` moves the pending events into the visible buffer in order.
404
+ */
405
+ var LogStore = class {
406
+ buffer;
407
+ #pending;
408
+ #paused = false;
409
+ constructor(capacity = DEFAULT_CAPACITY) {
410
+ this.buffer = new LogRingBuffer(capacity);
411
+ this.#pending = new LogRingBuffer(capacity);
412
+ }
413
+ /** True when incoming events are buffered instead of appended to the visible buffer. */
414
+ get paused() {
415
+ return this.#paused;
416
+ }
417
+ /** Number of visible lines. */
418
+ get size() {
419
+ return this.buffer.size;
420
+ }
421
+ /** Number of lines held back while paused. */
422
+ get pendingCount() {
423
+ return this.#pending.size;
424
+ }
425
+ /** Number of visible lines dropped because the buffer was full. */
426
+ get droppedCount() {
427
+ return this.buffer.dropped;
428
+ }
429
+ /** Appends events to the visible buffer, or holds them back while paused. */
430
+ push(events) {
431
+ if (this.#paused) {
432
+ this.#pending.pushMany(events);
433
+ return;
434
+ }
435
+ this.buffer.pushMany(events);
436
+ }
437
+ /** Pauses or resumes appending. Resuming flushes the pending events immediately. */
438
+ setPaused(paused) {
439
+ if (paused === this.#paused) return [];
440
+ this.#paused = paused;
441
+ return paused ? [] : this.flush();
442
+ }
443
+ /** Pauses appending to the visible buffer. */
444
+ pause() {
445
+ this.#paused = true;
446
+ }
447
+ /** Resumes appending and returns the events flushed from the pending buffer. */
448
+ resume() {
449
+ this.#paused = false;
450
+ return this.flush();
451
+ }
452
+ /** Moves every pending event into the visible buffer, oldest first. */
453
+ flush() {
454
+ const flushed = this.#pending.toArray();
455
+ this.#pending.clear();
456
+ this.buffer.pushMany(flushed);
457
+ return flushed;
458
+ }
459
+ /** Copies the visible lines, oldest first. */
460
+ toArray() {
461
+ return this.buffer.toArray();
462
+ }
463
+ /** Empties the visible buffer and discards pending events. */
464
+ clear() {
465
+ this.buffer.clear();
466
+ this.#pending.clear();
467
+ }
468
+ };
469
+
470
+ export { LogStore as L, detectLevel as a, filterEvents as b, formatLogMessage as c, detectLevelWithSource as d, effectiveLevel as e, filterByLevel as f, eventKey as g, isLogLevel as i, levelColorClass as l, tokenizeJson as t };
471
+ //# sourceMappingURL=log-buffer.js-CpI7gyom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-buffer.js-CpI7gyom.js","sources":["../../../../.svelte-kit/output/server/chunks/log-buffer.js"],"sourcesContent":["//#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/**\n* Finds the first JSON object or array inside a log message.\n*\n* Whole messages are handled by {@link detectJson}; this also copes with the\n* common \"prefix then payload\" shape (`2026-01-01 INFO {\"level\":\"info\"}`), which\n* is what the viewer expands when pretty-printing is switched off.\n*\n* Strings and escapes are respected while matching brackets, so a `}` inside a\n* message value cannot end the scan early.\n*/\nfunction findJsonInMessage(message) {\n\tif (typeof message !== \"string\") return null;\n\tconst whole = detectJson(message);\n\tif (whole !== null) return whole;\n\tfor (let index = 0; index < message.length; index += 1) {\n\t\tconst opener = message[index];\n\t\tif (opener !== \"{\" && opener !== \"[\") continue;\n\t\tconst closer = opener === \"{\" ? \"}\" : \"]\";\n\t\tlet depth = 0;\n\t\tlet inString = false;\n\t\tlet escaped = false;\n\t\tfor (let scan = index; scan < message.length; scan += 1) {\n\t\t\tconst char = message[scan];\n\t\t\tif (inString) {\n\t\t\t\tif (escaped) escaped = false;\n\t\t\t\telse if (char === \"\\\\\") escaped = true;\n\t\t\t\telse if (char === \"\\\"\") inString = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"\\\"\") {\n\t\t\t\tinString = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === opener) depth += 1;\n\t\t\telse if (char === closer) {\n\t\t\t\tdepth -= 1;\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\tconst candidate = message.slice(index, scan + 1);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst parsed = JSON.parse(candidate);\n\t\t\t\t\t\tif (parsed !== null && typeof parsed === \"object\") return parsed;\n\t\t\t\t\t} catch {}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n//#endregion\n//#region src/lib/log-buffer.ts\n/**\n* Pure client-side log storage and filtering for the watch-stream UI.\n*\n* Design decisions (kept in one place so the UI stays predictable):\n*\n* - The visible buffer is a fixed-capacity ring buffer. When it is full the oldest line is\n* dropped, so memory stays bounded while tailing a busy group.\n* - Pausing keeps the SSE connection open and keeps receiving events. Incoming events are held in\n* a bounded pending buffer instead of the visible buffer, and are flushed in arrival order when\n* the user resumes.\n*/\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/** Payload keys checked, in order, for a level the producer declared. */\nvar LEVEL_KEYS = [\n\t\"level\",\n\t\"severity\",\n\t\"lvl\",\n\t\"logLevel\",\n\t\"log_level\"\n];\n/**\n* Declared level words mapped onto the four levels the UI knows.\n*\n* The vocabulary is deliberately small: `fatal` and `critical` are errors to\n* everyone reading a log, and collapsing them keeps the filter and the colours\n* honest instead of inventing levels nothing else understands.\n*/\nvar LEVEL_WORDS = {\n\ttrace: \"debug\",\n\tverbose: \"debug\",\n\tdebug: \"debug\",\n\tinfo: \"info\",\n\tinformation: \"info\",\n\tnotice: \"info\",\n\tnote: \"info\",\n\twarn: \"warn\",\n\twarning: \"warn\",\n\terror: \"error\",\n\terr: \"error\",\n\texception: \"error\",\n\tfatal: \"error\",\n\tcritical: \"error\",\n\tcrit: \"error\",\n\tpanic: \"error\",\n\tsevere: \"error\",\n\talert: \"error\",\n\temergency: \"error\"\n};\n/**\n* Bunyan/pino style numeric levels.\n*\n* Only exact known values are mapped: a bare number such as `{\"level\":0}` means\n* different things in different loggers, so an unknown number falls through to\n* the text heuristic instead of being guessed at.\n*/\nvar NUMERIC_LEVELS = {\n\t10: \"debug\",\n\t20: \"debug\",\n\t30: \"info\",\n\t40: \"warn\",\n\t50: \"error\",\n\t60: \"error\"\n};\n/** True when a value is one of the four known levels. */\nfunction isLogLevel(value) {\n\treturn value === \"error\" || value === \"warn\" || value === \"info\" || value === \"debug\";\n}\n/** Converts one declared JSON value into a level, or `null` when unrecognised. */\nfunction levelFromDeclared(value) {\n\tif (typeof value === \"number\" && Number.isFinite(value)) return NUMERIC_LEVELS[value] ?? null;\n\tif (typeof value !== \"string\") return null;\n\tconst word = value.trim().toLowerCase();\n\tif (word.length === 0) return null;\n\treturn LEVEL_WORDS[word] ?? null;\n}\n/**\n* Level the payload declares, when the line carries a JSON object with a known\n* level key. Whole messages and \"prefix then payload\" lines are both handled,\n* by the same parser the viewer uses to pretty-print JSON.\n*/\nfunction declaredLevel(message) {\n\tconst payload = findJsonInMessage(message);\n\tif (payload === null || typeof payload !== \"object\" || Array.isArray(payload)) return null;\n\tconst record = payload;\n\tfor (const key of LEVEL_KEYS) {\n\t\tconst level = levelFromDeclared(record[key]);\n\t\tif (level !== null) return level;\n\t}\n\treturn null;\n}\n/**\n* Detects the severity of a log line.\n*\n* A level the payload declares wins, because it is a statement of fact; the\n* text heuristic is the fallback for the many logs that declare nothing. The\n* heuristic matches level words anywhere in the line, so\n* `{\"level\":\"info\",\"msg\":\"retry after error count 0\"}` is `info`, not `error`.\n*/\nfunction detectLevelWithSource(message) {\n\tconst declared = declaredLevel(message ?? \"\");\n\tif (declared !== null) return {\n\t\tlevel: declared,\n\t\tsource: \"json\"\n\t};\n\tconst upper = (message ?? \"\").toUpperCase();\n\tif (ERROR_PATTERN.test(upper)) return {\n\t\tlevel: \"error\",\n\t\tsource: \"text\"\n\t};\n\tif (WARN_PATTERN.test(upper)) return {\n\t\tlevel: \"warn\",\n\t\tsource: \"text\"\n\t};\n\tif (DEBUG_PATTERN.test(upper)) return {\n\t\tlevel: \"debug\",\n\t\tsource: \"text\"\n\t};\n\treturn {\n\t\tlevel: null,\n\t\tsource: null\n\t};\n}\n/**\n* Guesses the severity of a log line from its text, or returns `null` when the\n* line carries no signal at all (a stack-trace continuation, for example).\n*/\nfunction detectLevel(message) {\n\treturn detectLevelWithSource(message).level;\n}\n/** Level of an event: what the server detected, else a guess from the text. */\nfunction effectiveLevel(event) {\n\treturn event.level !== void 0 ? event.level : detectLevel(event.message);\n}\n/** True when an event passes a level filter; a `null` filter accepts every line. */\nfunction matchesLevel(event, level) {\n\treturn level === null || effectiveLevel(event) === level;\n}\n/** Filters events by level, keeping every line when `level` is `null`. */\nfunction filterByLevel(events, level) {\n\tif (level === null) return events.slice();\n\treturn events.filter((event) => matchesLevel(event, level));\n}\n/** Tailwind text colour class for a severity; an unknown level stays neutral. */\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\nexport { effectiveLevel as a, filterEvents as c, findJsonInMessage as d, formatLogMessage as f, detectLevelWithSource as i, isLogLevel as l, LogStore as n, eventKey as o, tokenizeJson as p, detectLevel as r, filterByLevel as s, DEFAULT_CAPACITY as t, levelColorClass as u };\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ //#region node_modules/.pnpm/layerchart@2.5.0_@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0__9bc60734f10d29b7556189549fab5703/node_modules/layerchart/dist/utils/math.js
2
+ /**
3
+ * Convert degrees to radians
4
+ */
5
+ function degreesToRadians(degrees) {
6
+ return degrees * Math.PI / 180;
7
+ }
8
+ /**
9
+ * Convert radians to degrees
10
+ */
11
+ function radiansToDegrees(radians) {
12
+ return radians * (180 / Math.PI);
13
+ }
14
+ /**
15
+ * Convert cartesian to polar coordinate system. Angle in radians with 0 at the 12 o'clock position
16
+ */
17
+ function cartesianToPolar(x, y) {
18
+ let radians = Math.atan2(y, x);
19
+ radians += Math.PI / 2;
20
+ if (radians < 0) radians += 2 * Math.PI;
21
+ return {
22
+ radius: Math.sqrt(x ** 2 + y ** 2),
23
+ radians
24
+ };
25
+ }
26
+ /**
27
+ * Calculate the angle and length between two points
28
+ * @param point1 - First point
29
+ * @param point2 - Second point
30
+ * @returns Angle in degrees and length
31
+ */
32
+ function pointsToAngleAndLength(point1, point2) {
33
+ const dx = point2.x - point1.x;
34
+ const dy = point2.y - point1.y;
35
+ const radians = Math.atan2(dy, dx);
36
+ const length = Math.sqrt(dx * dx + dy * dy);
37
+ return {
38
+ radians,
39
+ angle: radiansToDegrees(radians),
40
+ length
41
+ };
42
+ }
43
+ /** Parse percent string (`50%`) to decimal (`0.5`) */
44
+ function parsePercent(percent) {
45
+ if (typeof percent === "number") return percent;
46
+ else return Number(percent.replace("%", "")) / 100;
47
+ }
48
+
49
+ export { parsePercent as a, cartesianToPolar as c, degreesToRadians as d, pointsToAngleAndLength as p, radiansToDegrees as r };
50
+ //# sourceMappingURL=math.js-BqujbaBs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js-BqujbaBs.js","sources":["../../../../.svelte-kit/output/server/chunks/math.js"],"sourcesContent":["//#region node_modules/.pnpm/layerchart@2.5.0_@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0__9bc60734f10d29b7556189549fab5703/node_modules/layerchart/dist/utils/math.js\n/**\n* Convert degrees to radians\n*/\nfunction degreesToRadians(degrees) {\n\treturn degrees * Math.PI / 180;\n}\n/**\n* Convert radians to degrees\n*/\nfunction radiansToDegrees(radians) {\n\treturn radians * (180 / Math.PI);\n}\n/**\n* Convert cartesian to polar coordinate system. Angle in radians with 0 at the 12 o'clock position\n*/\nfunction cartesianToPolar(x, y) {\n\tlet radians = Math.atan2(y, x);\n\tradians += Math.PI / 2;\n\tif (radians < 0) radians += 2 * Math.PI;\n\treturn {\n\t\tradius: Math.sqrt(x ** 2 + y ** 2),\n\t\tradians\n\t};\n}\n/**\n* Calculate the angle and length between two points\n* @param point1 - First point\n* @param point2 - Second point\n* @returns Angle in degrees and length\n*/\nfunction pointsToAngleAndLength(point1, point2) {\n\tconst dx = point2.x - point1.x;\n\tconst dy = point2.y - point1.y;\n\tconst radians = Math.atan2(dy, dx);\n\tconst length = Math.sqrt(dx * dx + dy * dy);\n\treturn {\n\t\tradians,\n\t\tangle: radiansToDegrees(radians),\n\t\tlength\n\t};\n}\n/** Parse percent string (`50%`) to decimal (`0.5`) */\nfunction parsePercent(percent) {\n\tif (typeof percent === \"number\") return percent;\n\telse return Number(percent.replace(\"%\", \"\")) / 100;\n}\n//#endregion\nexport { radiansToDegrees as a, pointsToAngleAndLength as i, degreesToRadians as n, parsePercent as r, cartesianToPolar as t };\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,CAAC,OAAO,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG;AAC/B;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,CAAC,OAAO,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;AACjC;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAChC,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC;AACvB,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;AACxC,CAAC,OAAO;AACR,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE;AAChD,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC/B,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC/B,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC5C,CAAC,OAAO;AACR,EAAE,OAAO;AACT,EAAE,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC;AAClC,EAAE;AACF,EAAE;AACF;AACA;AACA,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,OAAO,OAAO;AAChD,MAAM,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG;AACnD;;"}
@@ -0,0 +1,11 @@
1
+ //#region node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js
2
+ function max(values, valueof) {
3
+ let max;
4
+ {
5
+ for (const value of values) if (value != null && (max < value || max === void 0 && value >= value)) max = value;
6
+ }
7
+ return max;
8
+ }
9
+
10
+ export { max as m };
11
+ //# sourceMappingURL=max.js-CuS0BpRI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max.js-CuS0BpRI.js","sources":["../../../../.svelte-kit/output/server/chunks/max.js"],"sourcesContent":["//#region node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js\nfunction max(values, valueof) {\n\tlet max;\n\tif (valueof === void 0) {\n\t\tfor (const value of values) if (value != null && (max < value || max === void 0 && value >= value)) max = value;\n\t} else {\n\t\tlet index = -1;\n\t\tfor (let value of values) if ((value = valueof(value, ++index, values)) != null && (max < value || max === void 0 && value >= value)) max = value;\n\t}\n\treturn max;\n}\n//#endregion\nexport { max as t };\n"],"names":[],"mappings":"AAAA;AACA,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE;AAC9B,CAAC,IAAI,GAAG;AACR,CAAyB;AACzB,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK;AACjH,CAAC;AAID,CAAC,OAAO,GAAG;AACX;;"}
@@ -0,0 +1,11 @@
1
+ //#region node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/min.js
2
+ function min(values, valueof) {
3
+ let min;
4
+ {
5
+ for (const value of values) if (value != null && (min > value || min === void 0 && value >= value)) min = value;
6
+ }
7
+ return min;
8
+ }
9
+
10
+ export { min as m };
11
+ //# sourceMappingURL=min.js-DZWt5tPl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"min.js-DZWt5tPl.js","sources":["../../../../.svelte-kit/output/server/chunks/min.js"],"sourcesContent":["//#region node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/min.js\nfunction min(values, valueof) {\n\tlet min;\n\tif (valueof === void 0) {\n\t\tfor (const value of values) if (value != null && (min > value || min === void 0 && value >= value)) min = value;\n\t} else {\n\t\tlet index = -1;\n\t\tfor (let value of values) if ((value = valueof(value, ++index, values)) != null && (min > value || min === void 0 && value >= value)) min = value;\n\t}\n\treturn min;\n}\n//#endregion\nexport { min as t };\n"],"names":[],"mappings":"AAAA;AACA,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE;AAC9B,CAAC,IAAI,GAAG;AACR,CAAyB;AACzB,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK;AACjH,CAAC;AAID,CAAC,OAAO,GAAG;AACX;;"}