watch-tail 0.5.0 → 0.6.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 (242) hide show
  1. package/README.md +30 -2
  2. package/build/client/_app/immutable/assets/{0.BQQ1YLPc.css → 0.Dfts6BC4.css} +1 -1
  3. package/build/client/_app/immutable/assets/0.Dfts6BC4.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.Dfts6BC4.css.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{D-JtVVAo.js → Amq8zxdJ.js} +1 -1
  6. package/build/client/_app/immutable/chunks/Amq8zxdJ.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/Amq8zxdJ.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{B6nyufJR.js → B3p3umIY.js} +1 -1
  9. package/build/client/_app/immutable/chunks/B3p3umIY.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/B3p3umIY.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{DJDlf6lC.js → B43Eeyih.js} +1 -1
  12. package/build/client/_app/immutable/chunks/B43Eeyih.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/B43Eeyih.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{CoEFQJcr.js → B5q6rkQ-.js} +1 -1
  15. package/build/client/_app/immutable/chunks/B5q6rkQ-.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/B5q6rkQ-.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{BR7qH0F5.js → BAynhd7i.js} +1 -1
  18. package/build/client/_app/immutable/chunks/BAynhd7i.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/BAynhd7i.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/{DQi7bc16.js → BDlvDAqe.js} +1 -1
  21. package/build/client/_app/immutable/chunks/BDlvDAqe.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/BDlvDAqe.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/{PYzEcuyd.js → BGmgUZMc.js} +5 -5
  24. package/build/client/_app/immutable/chunks/BGmgUZMc.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/BGmgUZMc.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/{DJLYkl5w.js → BJpWBbAS.js} +1 -1
  27. package/build/client/_app/immutable/chunks/BJpWBbAS.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/BJpWBbAS.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/{Dp8S9ymS.js → BOT2hFMn.js} +1 -1
  30. package/build/client/_app/immutable/chunks/BOT2hFMn.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/BOT2hFMn.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/{Bp63j1zN.js → BZFYtRPj.js} +1 -1
  33. package/build/client/_app/immutable/chunks/BZFYtRPj.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/BZFYtRPj.js.gz +0 -0
  35. package/build/client/_app/immutable/chunks/BjxZ_neZ.js +5 -0
  36. package/build/client/_app/immutable/chunks/BjxZ_neZ.js.br +0 -0
  37. package/build/client/_app/immutable/chunks/BjxZ_neZ.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/{DkyYNO4U.js → BsH4MNzX.js} +1 -1
  39. package/build/client/_app/immutable/chunks/BsH4MNzX.js.br +0 -0
  40. package/build/client/_app/immutable/chunks/BsH4MNzX.js.gz +0 -0
  41. package/build/client/_app/immutable/chunks/{DmRhEzIa.js → ByhwhtiG.js} +1 -1
  42. package/build/client/_app/immutable/chunks/ByhwhtiG.js.br +0 -0
  43. package/build/client/_app/immutable/chunks/ByhwhtiG.js.gz +0 -0
  44. package/build/client/_app/immutable/chunks/{CDbeYGlD.js → C1lycbEF.js} +1 -1
  45. package/build/client/_app/immutable/chunks/C1lycbEF.js.br +0 -0
  46. package/build/client/_app/immutable/chunks/C1lycbEF.js.gz +0 -0
  47. package/build/client/_app/immutable/chunks/{DslUcEd-.js → CEU4ihsz.js} +1 -1
  48. package/build/client/_app/immutable/chunks/CEU4ihsz.js.br +0 -0
  49. package/build/client/_app/immutable/chunks/CEU4ihsz.js.gz +0 -0
  50. package/build/client/_app/immutable/chunks/{DVTgeA2y.js → CG6rRxUy.js} +1 -1
  51. package/build/client/_app/immutable/chunks/CG6rRxUy.js.br +0 -0
  52. package/build/client/_app/immutable/chunks/CG6rRxUy.js.gz +0 -0
  53. package/build/client/_app/immutable/chunks/{AUlz4-kZ.js → CM5sQDq_.js} +1 -1
  54. package/build/client/_app/immutable/chunks/CM5sQDq_.js.br +0 -0
  55. package/build/client/_app/immutable/chunks/CM5sQDq_.js.gz +0 -0
  56. package/build/client/_app/immutable/chunks/{UySfXNq7.js → CT_NYh_-.js} +1 -1
  57. package/build/client/_app/immutable/chunks/CT_NYh_-.js.br +0 -0
  58. package/build/client/_app/immutable/chunks/CT_NYh_-.js.gz +0 -0
  59. package/build/client/_app/immutable/chunks/{DPKdNiYi.js → CZIk93qi.js} +1 -1
  60. package/build/client/_app/immutable/chunks/CZIk93qi.js.br +0 -0
  61. package/build/client/_app/immutable/chunks/CZIk93qi.js.gz +0 -0
  62. package/build/client/_app/immutable/chunks/{B1t8v2wP.js → C_aXFBl3.js} +1 -1
  63. package/build/client/_app/immutable/chunks/C_aXFBl3.js.br +0 -0
  64. package/build/client/_app/immutable/chunks/C_aXFBl3.js.gz +0 -0
  65. package/build/client/_app/immutable/chunks/CqWPu3PG.js +1 -0
  66. package/build/client/_app/immutable/chunks/CqWPu3PG.js.br +1 -0
  67. package/build/client/_app/immutable/chunks/CqWPu3PG.js.gz +0 -0
  68. package/build/client/_app/immutable/chunks/{CJFHBop_.js → CyncJW0D.js} +1 -1
  69. package/build/client/_app/immutable/chunks/CyncJW0D.js.br +0 -0
  70. package/build/client/_app/immutable/chunks/CyncJW0D.js.gz +0 -0
  71. package/build/client/_app/immutable/chunks/{Bmk_Voz6.js → D4sC5v3c.js} +1 -1
  72. package/build/client/_app/immutable/chunks/D4sC5v3c.js.br +0 -0
  73. package/build/client/_app/immutable/chunks/D4sC5v3c.js.gz +0 -0
  74. package/build/client/_app/immutable/chunks/{dbhDrJmm.js → D76YLq-2.js} +1 -1
  75. package/build/client/_app/immutable/chunks/D76YLq-2.js.br +0 -0
  76. package/build/client/_app/immutable/chunks/D76YLq-2.js.gz +0 -0
  77. package/build/client/_app/immutable/chunks/{C20WvNRq.js → D8H_ivbb.js} +1 -1
  78. package/build/client/_app/immutable/chunks/D8H_ivbb.js.br +0 -0
  79. package/build/client/_app/immutable/chunks/D8H_ivbb.js.gz +0 -0
  80. package/build/client/_app/immutable/chunks/{Di37PX72.js → DU0OQtdJ.js} +1 -1
  81. package/build/client/_app/immutable/chunks/DU0OQtdJ.js.br +0 -0
  82. package/build/client/_app/immutable/chunks/DU0OQtdJ.js.gz +0 -0
  83. package/build/client/_app/immutable/chunks/{CYw9ugj1.js → Yk6ZJZnu.js} +1 -1
  84. package/build/client/_app/immutable/chunks/Yk6ZJZnu.js.br +0 -0
  85. package/build/client/_app/immutable/chunks/Yk6ZJZnu.js.gz +0 -0
  86. package/build/client/_app/immutable/chunks/{BwntJtbK.js → jO4fmY1N.js} +1 -1
  87. package/build/client/_app/immutable/chunks/jO4fmY1N.js.br +0 -0
  88. package/build/client/_app/immutable/chunks/jO4fmY1N.js.gz +0 -0
  89. package/build/client/_app/immutable/chunks/{Dt_Zd6U2.js → snfmbqby.js} +1 -1
  90. package/build/client/_app/immutable/chunks/snfmbqby.js.br +0 -0
  91. package/build/client/_app/immutable/chunks/snfmbqby.js.gz +0 -0
  92. package/build/client/_app/immutable/chunks/{_Zq76xnA.js → wx-wtMGx.js} +1 -1
  93. package/build/client/_app/immutable/chunks/wx-wtMGx.js.br +0 -0
  94. package/build/client/_app/immutable/chunks/wx-wtMGx.js.gz +0 -0
  95. package/build/client/_app/immutable/chunks/{BkXArOra.js → zHL7lw4G.js} +1 -1
  96. package/build/client/_app/immutable/chunks/zHL7lw4G.js.br +0 -0
  97. package/build/client/_app/immutable/chunks/zHL7lw4G.js.gz +0 -0
  98. package/build/client/_app/immutable/entry/{app.vMZB8_Zr.js → app.DFSifnlU.js} +2 -2
  99. package/build/client/_app/immutable/entry/app.DFSifnlU.js.br +0 -0
  100. package/build/client/_app/immutable/entry/app.DFSifnlU.js.gz +0 -0
  101. package/build/client/_app/immutable/entry/start.2H5s3Lol.js +1 -0
  102. package/build/client/_app/immutable/entry/start.2H5s3Lol.js.br +1 -0
  103. package/build/client/_app/immutable/entry/start.2H5s3Lol.js.gz +0 -0
  104. package/build/client/_app/immutable/nodes/{1.zcN3R_zF.js → 1.Djdw1GzA.js} +1 -1
  105. package/build/client/_app/immutable/nodes/{1.zcN3R_zF.js.br → 1.Djdw1GzA.js.br} +0 -0
  106. package/build/client/_app/immutable/nodes/1.Djdw1GzA.js.gz +0 -0
  107. package/build/client/_app/immutable/nodes/2.CjvaJDQJ.js +4 -0
  108. package/build/client/_app/immutable/nodes/2.CjvaJDQJ.js.br +0 -0
  109. package/build/client/_app/immutable/nodes/2.CjvaJDQJ.js.gz +0 -0
  110. package/build/client/_app/version.json +1 -1
  111. package/build/client/_app/version.json.br +0 -0
  112. package/build/client/_app/version.json.gz +0 -0
  113. package/build/handler.js +4 -4
  114. package/build/index.js +4 -4
  115. package/build/server/chunks/chunks/{EventScatter.js-DqCMPeHG.js → EventScatter.js-D3Jaw_Cw.js} +7 -3
  116. package/build/server/chunks/chunks/{EventScatter.js-DqCMPeHG.js.map → EventScatter.js-D3Jaw_Cw.js.map} +1 -1
  117. package/build/server/chunks/chunks/{archive.js-C6rz09rJ.js → archive.js-C2D-5edp.js} +258 -19
  118. package/build/server/chunks/chunks/archive.js-C2D-5edp.js.map +1 -0
  119. package/build/server/chunks/chunks/{internal2.js-DDcktblR.js → internal2.js-BPo5dcDi.js} +2 -2
  120. package/build/server/chunks/chunks/{internal2.js-DDcktblR.js.map → internal2.js-BPo5dcDi.js.map} +1 -1
  121. package/build/server/chunks/chunks/{level-filter.js-H_AdNbCw.js → level-filter.js-B3o2hyWD.js} +32 -16
  122. package/build/server/chunks/chunks/level-filter.js-B3o2hyWD.js.map +1 -0
  123. package/build/server/chunks/chunks/{log-buffer.js-CpI7gyom.js → log-buffer.js-BI_gQOls.js} +118 -2
  124. package/build/server/chunks/chunks/log-buffer.js-BI_gQOls.js.map +1 -0
  125. package/build/server/chunks/chunks/series-buckets.js-BjigySff.js +290 -0
  126. package/build/server/chunks/chunks/series-buckets.js-BjigySff.js.map +1 -0
  127. package/build/server/chunks/chunks/{state.js-Dves8H8h.js → state.js-DgkwfYFo.js} +2 -2
  128. package/build/server/chunks/chunks/{state.js-Dves8H8h.js.map → state.js-DgkwfYFo.js.map} +1 -1
  129. package/build/server/chunks/entries/endpoints/api/archive/{_server.ts.js-sNd3lS0y.js → _server.ts.js-83Ch7djd.js} +3 -3
  130. package/build/server/chunks/entries/endpoints/api/archive/{_server.ts.js-sNd3lS0y.js.map → _server.ts.js-83Ch7djd.js.map} +1 -1
  131. package/build/server/chunks/entries/endpoints/api/log-groups/{_server.ts.js-BGyWbj78.js → _server.ts.js-drLgUdvB.js} +3 -3
  132. package/build/server/chunks/entries/endpoints/api/log-groups/{_server.ts.js-BGyWbj78.js.map → _server.ts.js-drLgUdvB.js.map} +1 -1
  133. package/build/server/chunks/entries/endpoints/api/series/{_server.ts.js-DjGMqXKo.js → _server.ts.js-DOvBhEDU.js} +39 -8
  134. package/build/server/chunks/entries/endpoints/api/series/_server.ts.js-DOvBhEDU.js.map +1 -0
  135. package/build/server/chunks/entries/endpoints/api/stream/{_server.ts.js-C-XDemlx.js → _server.ts.js-BWRHawY8.js} +5 -5
  136. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-BWRHawY8.js.map +1 -0
  137. package/build/server/chunks/entries/fallbacks/{error.svelte.js-DdUYlUJV.js → error.svelte.js-CsCL5PMW.js} +3 -3
  138. package/build/server/chunks/entries/fallbacks/{error.svelte.js-DdUYlUJV.js.map → error.svelte.js-CsCL5PMW.js.map} +1 -1
  139. package/build/server/chunks/entries/pages/{_page.svelte.js-B-kVwiNh.js → _page.svelte.js-qqtU0apo.js} +191 -28
  140. package/build/server/chunks/entries/pages/_page.svelte.js-qqtU0apo.js.map +1 -0
  141. package/build/server/chunks/{handler-BHf-eLnl.js → handler-DlfTB05m.js} +3 -3
  142. package/build/server/chunks/{handler-BHf-eLnl.js.map → handler-DlfTB05m.js.map} +1 -1
  143. package/build/server/chunks/{index.js-D6Auup1Z.js → index.js-BMrd9hfO.js} +2 -2
  144. package/build/server/chunks/{index.js-D6Auup1Z.js.map → index.js-BMrd9hfO.js.map} +1 -1
  145. package/build/server/chunks/{manifest.js-B3Q7n9I6.js → manifest.js-D1kCuVe5.js} +9 -9
  146. package/build/server/chunks/{manifest.js-B3Q7n9I6.js.map → manifest.js-D1kCuVe5.js.map} +1 -1
  147. package/build/server/chunks/nodes/{0.js-BMP_Yttt.js → 0.js-CNFDDPj5.js} +3 -3
  148. package/build/server/chunks/nodes/{0.js-BMP_Yttt.js.map → 0.js-CNFDDPj5.js.map} +1 -1
  149. package/build/server/chunks/nodes/{1.js-2HQHUOse.js → 1.js-B5FPLYnf.js} +3 -3
  150. package/build/server/chunks/nodes/{1.js-2HQHUOse.js.map → 1.js-B5FPLYnf.js.map} +1 -1
  151. package/build/server/chunks/nodes/{2.js-7RtHpiHN.js → 2.js-BEuxzw6b.js} +3 -3
  152. package/build/server/chunks/nodes/{2.js-7RtHpiHN.js.map → 2.js-BEuxzw6b.js.map} +1 -1
  153. package/dist/cli/index.js +127 -104
  154. package/dist/cli/ui.js +18 -3
  155. package/dist/lib/log-buffer.js +129 -0
  156. package/package.json +1 -1
  157. package/build/client/_app/immutable/assets/0.BQQ1YLPc.css.br +0 -0
  158. package/build/client/_app/immutable/assets/0.BQQ1YLPc.css.gz +0 -0
  159. package/build/client/_app/immutable/chunks/AUlz4-kZ.js.br +0 -0
  160. package/build/client/_app/immutable/chunks/AUlz4-kZ.js.gz +0 -0
  161. package/build/client/_app/immutable/chunks/B1t8v2wP.js.br +0 -0
  162. package/build/client/_app/immutable/chunks/B1t8v2wP.js.gz +0 -0
  163. package/build/client/_app/immutable/chunks/B6nyufJR.js.br +0 -0
  164. package/build/client/_app/immutable/chunks/B6nyufJR.js.gz +0 -0
  165. package/build/client/_app/immutable/chunks/BR7qH0F5.js.br +0 -0
  166. package/build/client/_app/immutable/chunks/BR7qH0F5.js.gz +0 -0
  167. package/build/client/_app/immutable/chunks/BkXArOra.js.br +0 -0
  168. package/build/client/_app/immutable/chunks/BkXArOra.js.gz +0 -0
  169. package/build/client/_app/immutable/chunks/Bmk_Voz6.js.br +0 -0
  170. package/build/client/_app/immutable/chunks/Bmk_Voz6.js.gz +0 -0
  171. package/build/client/_app/immutable/chunks/Bp63j1zN.js.br +0 -0
  172. package/build/client/_app/immutable/chunks/Bp63j1zN.js.gz +0 -0
  173. package/build/client/_app/immutable/chunks/BwntJtbK.js.br +0 -0
  174. package/build/client/_app/immutable/chunks/BwntJtbK.js.gz +0 -0
  175. package/build/client/_app/immutable/chunks/C20WvNRq.js.br +0 -0
  176. package/build/client/_app/immutable/chunks/C20WvNRq.js.gz +0 -0
  177. package/build/client/_app/immutable/chunks/CDbeYGlD.js.br +0 -0
  178. package/build/client/_app/immutable/chunks/CDbeYGlD.js.gz +0 -0
  179. package/build/client/_app/immutable/chunks/CJFHBop_.js.br +0 -0
  180. package/build/client/_app/immutable/chunks/CJFHBop_.js.gz +0 -0
  181. package/build/client/_app/immutable/chunks/CYw9ugj1.js.br +0 -0
  182. package/build/client/_app/immutable/chunks/CYw9ugj1.js.gz +0 -0
  183. package/build/client/_app/immutable/chunks/CjJd0uRB.js +0 -1
  184. package/build/client/_app/immutable/chunks/CjJd0uRB.js.br +0 -1
  185. package/build/client/_app/immutable/chunks/CjJd0uRB.js.gz +0 -0
  186. package/build/client/_app/immutable/chunks/CoEFQJcr.js.br +0 -0
  187. package/build/client/_app/immutable/chunks/CoEFQJcr.js.gz +0 -0
  188. package/build/client/_app/immutable/chunks/D-JtVVAo.js.br +0 -0
  189. package/build/client/_app/immutable/chunks/D-JtVVAo.js.gz +0 -0
  190. package/build/client/_app/immutable/chunks/DJDlf6lC.js.br +0 -0
  191. package/build/client/_app/immutable/chunks/DJDlf6lC.js.gz +0 -0
  192. package/build/client/_app/immutable/chunks/DJLYkl5w.js.br +0 -0
  193. package/build/client/_app/immutable/chunks/DJLYkl5w.js.gz +0 -0
  194. package/build/client/_app/immutable/chunks/DPKdNiYi.js.br +0 -0
  195. package/build/client/_app/immutable/chunks/DPKdNiYi.js.gz +0 -0
  196. package/build/client/_app/immutable/chunks/DQi7bc16.js.br +0 -0
  197. package/build/client/_app/immutable/chunks/DQi7bc16.js.gz +0 -0
  198. package/build/client/_app/immutable/chunks/DVTgeA2y.js.br +0 -0
  199. package/build/client/_app/immutable/chunks/DVTgeA2y.js.gz +0 -0
  200. package/build/client/_app/immutable/chunks/Di37PX72.js.br +0 -0
  201. package/build/client/_app/immutable/chunks/Di37PX72.js.gz +0 -0
  202. package/build/client/_app/immutable/chunks/DkyYNO4U.js.br +0 -0
  203. package/build/client/_app/immutable/chunks/DkyYNO4U.js.gz +0 -0
  204. package/build/client/_app/immutable/chunks/DmRhEzIa.js.br +0 -0
  205. package/build/client/_app/immutable/chunks/DmRhEzIa.js.gz +0 -0
  206. package/build/client/_app/immutable/chunks/Dp8S9ymS.js.br +0 -0
  207. package/build/client/_app/immutable/chunks/Dp8S9ymS.js.gz +0 -0
  208. package/build/client/_app/immutable/chunks/DslUcEd-.js.br +0 -0
  209. package/build/client/_app/immutable/chunks/DslUcEd-.js.gz +0 -0
  210. package/build/client/_app/immutable/chunks/Dt_Zd6U2.js.br +0 -0
  211. package/build/client/_app/immutable/chunks/Dt_Zd6U2.js.gz +0 -0
  212. package/build/client/_app/immutable/chunks/DwezeuNE.js +0 -5
  213. package/build/client/_app/immutable/chunks/DwezeuNE.js.br +0 -0
  214. package/build/client/_app/immutable/chunks/DwezeuNE.js.gz +0 -0
  215. package/build/client/_app/immutable/chunks/PYzEcuyd.js.br +0 -0
  216. package/build/client/_app/immutable/chunks/PYzEcuyd.js.gz +0 -0
  217. package/build/client/_app/immutable/chunks/UySfXNq7.js.br +0 -0
  218. package/build/client/_app/immutable/chunks/UySfXNq7.js.gz +0 -0
  219. package/build/client/_app/immutable/chunks/_Zq76xnA.js.br +0 -0
  220. package/build/client/_app/immutable/chunks/_Zq76xnA.js.gz +0 -0
  221. package/build/client/_app/immutable/chunks/dbhDrJmm.js.br +0 -0
  222. package/build/client/_app/immutable/chunks/dbhDrJmm.js.gz +0 -0
  223. package/build/client/_app/immutable/entry/app.vMZB8_Zr.js.br +0 -0
  224. package/build/client/_app/immutable/entry/app.vMZB8_Zr.js.gz +0 -0
  225. package/build/client/_app/immutable/entry/start.pM5lNk_5.js +0 -1
  226. package/build/client/_app/immutable/entry/start.pM5lNk_5.js.br +0 -0
  227. package/build/client/_app/immutable/entry/start.pM5lNk_5.js.gz +0 -0
  228. package/build/client/_app/immutable/nodes/1.zcN3R_zF.js.gz +0 -0
  229. package/build/client/_app/immutable/nodes/2.DxevVqut.js +0 -2
  230. package/build/client/_app/immutable/nodes/2.DxevVqut.js.br +0 -0
  231. package/build/client/_app/immutable/nodes/2.DxevVqut.js.gz +0 -0
  232. package/build/server/chunks/chunks/archive.js-C6rz09rJ.js.map +0 -1
  233. package/build/server/chunks/chunks/level-filter.js-H_AdNbCw.js.map +0 -1
  234. package/build/server/chunks/chunks/log-buffer.js-CpI7gyom.js.map +0 -1
  235. package/build/server/chunks/chunks/series-buckets.js-CX_rWCeH.js +0 -123
  236. package/build/server/chunks/chunks/series-buckets.js-CX_rWCeH.js.map +0 -1
  237. package/build/server/chunks/entries/endpoints/api/series/_server.ts.js-DjGMqXKo.js.map +0 -1
  238. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-C-XDemlx.js.map +0 -1
  239. package/build/server/chunks/entries/pages/_page.svelte.js-B-kVwiNh.js.map +0 -1
  240. /package/build/client/_app/immutable/nodes/{0.CZO0sIxX.js → 0.BN3NguWs.js} +0 -0
  241. /package/build/client/_app/immutable/nodes/{0.CZO0sIxX.js.br → 0.BN3NguWs.js.br} +0 -0
  242. /package/build/client/_app/immutable/nodes/{0.CZO0sIxX.js.gz → 0.BN3NguWs.js.gz} +0 -0
@@ -10,11 +10,11 @@ return {
10
10
  assets: new Set(["robots.txt"]),
11
11
  mimeTypes: {".txt":"text/plain"},
12
12
  _: {
13
- client: {start:"_app/immutable/entry/start.pM5lNk_5.js",app:"_app/immutable/entry/app.vMZB8_Zr.js",imports:["_app/immutable/entry/start.pM5lNk_5.js","_app/immutable/chunks/Dp8S9ymS.js","_app/immutable/chunks/pqiPC7Y8.js","_app/immutable/entry/app.vMZB8_Zr.js","_app/immutable/chunks/pqiPC7Y8.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
13
+ client: {start:"_app/immutable/entry/start.2H5s3Lol.js",app:"_app/immutable/entry/app.DFSifnlU.js",imports:["_app/immutable/entry/start.2H5s3Lol.js","_app/immutable/chunks/BOT2hFMn.js","_app/immutable/chunks/pqiPC7Y8.js","_app/immutable/entry/app.DFSifnlU.js","_app/immutable/chunks/pqiPC7Y8.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
14
14
  nodes: [
15
- __memo(() => import('./nodes/0.js-BMP_Yttt.js')),
16
- __memo(() => import('./nodes/1.js-2HQHUOse.js')),
17
- __memo(() => import('./nodes/2.js-7RtHpiHN.js'))
15
+ __memo(() => import('./nodes/0.js-CNFDDPj5.js')),
16
+ __memo(() => import('./nodes/1.js-B5FPLYnf.js')),
17
+ __memo(() => import('./nodes/2.js-BEuxzw6b.js'))
18
18
  ],
19
19
  remotes: {
20
20
 
@@ -32,7 +32,7 @@ return {
32
32
  pattern: /^\/api\/archive\/?$/,
33
33
  params: [],
34
34
  page: null,
35
- endpoint: __memo(() => import('./entries/endpoints/api/archive/_server.ts.js-sNd3lS0y.js'))
35
+ endpoint: __memo(() => import('./entries/endpoints/api/archive/_server.ts.js-83Ch7djd.js'))
36
36
  },
37
37
  {
38
38
  id: "/api/health",
@@ -53,7 +53,7 @@ return {
53
53
  pattern: /^\/api\/log-groups\/?$/,
54
54
  params: [],
55
55
  page: null,
56
- endpoint: __memo(() => import('./entries/endpoints/api/log-groups/_server.ts.js-BGyWbj78.js'))
56
+ endpoint: __memo(() => import('./entries/endpoints/api/log-groups/_server.ts.js-drLgUdvB.js'))
57
57
  },
58
58
  {
59
59
  id: "/api/regions",
@@ -67,14 +67,14 @@ return {
67
67
  pattern: /^\/api\/series\/?$/,
68
68
  params: [],
69
69
  page: null,
70
- endpoint: __memo(() => import('./entries/endpoints/api/series/_server.ts.js-DjGMqXKo.js'))
70
+ endpoint: __memo(() => import('./entries/endpoints/api/series/_server.ts.js-DOvBhEDU.js'))
71
71
  },
72
72
  {
73
73
  id: "/api/stream",
74
74
  pattern: /^\/api\/stream\/?$/,
75
75
  params: [],
76
76
  page: null,
77
- endpoint: __memo(() => import('./entries/endpoints/api/stream/_server.ts.js-C-XDemlx.js'))
77
+ endpoint: __memo(() => import('./entries/endpoints/api/stream/_server.ts.js-BWRHawY8.js'))
78
78
  }
79
79
  ],
80
80
  prerendered_routes: new Set([]),
@@ -88,4 +88,4 @@ return {
88
88
  })();
89
89
 
90
90
  export { manifest as m };
91
- //# sourceMappingURL=manifest.js-B3Q7n9I6.js.map
91
+ //# sourceMappingURL=manifest.js-D1kCuVe5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js-B3Q7n9I6.js","sources":["../../../.svelte-kit/output/server/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"robots.txt\"]),\n\tmimeTypes: {\".txt\":\"text/plain\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.pM5lNk_5.js\",app:\"_app/immutable/entry/app.vMZB8_Zr.js\",imports:[\"_app/immutable/entry/start.pM5lNk_5.js\",\"_app/immutable/chunks/Dp8S9ymS.js\",\"_app/immutable/chunks/pqiPC7Y8.js\",\"_app/immutable/entry/app.vMZB8_Zr.js\",\"_app/immutable/chunks/pqiPC7Y8.js\",\"_app/immutable/chunks/HclGiUj8.js\",\"_app/immutable/chunks/xihTtKlq.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/archive\",\n\t\t\t\tpattern: /^\\/api\\/archive\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/archive/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/health\",\n\t\t\t\tpattern: /^\\/api\\/health\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/health/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/identity\",\n\t\t\t\tpattern: /^\\/api\\/identity\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/identity/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/log-groups\",\n\t\t\t\tpattern: /^\\/api\\/log-groups\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/log-groups/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/regions\",\n\t\t\t\tpattern: /^\\/api\\/regions\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/regions/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/series\",\n\t\t\t\tpattern: /^\\/api\\/series\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/series/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/stream\",\n\t\t\t\tpattern: /^\\/api\\/stream\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/stream/_server.ts.js'))\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js-D1kCuVe5.js","sources":["../../../.svelte-kit/output/server/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"robots.txt\"]),\n\tmimeTypes: {\".txt\":\"text/plain\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.2H5s3Lol.js\",app:\"_app/immutable/entry/app.DFSifnlU.js\",imports:[\"_app/immutable/entry/start.2H5s3Lol.js\",\"_app/immutable/chunks/BOT2hFMn.js\",\"_app/immutable/chunks/pqiPC7Y8.js\",\"_app/immutable/entry/app.DFSifnlU.js\",\"_app/immutable/chunks/pqiPC7Y8.js\",\"_app/immutable/chunks/HclGiUj8.js\",\"_app/immutable/chunks/xihTtKlq.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/archive\",\n\t\t\t\tpattern: /^\\/api\\/archive\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/archive/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/health\",\n\t\t\t\tpattern: /^\\/api\\/health\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/health/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/identity\",\n\t\t\t\tpattern: /^\\/api\\/identity\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/identity/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/log-groups\",\n\t\t\t\tpattern: /^\\/api\\/log-groups\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/log-groups/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/regions\",\n\t\t\t\tpattern: /^\\/api\\/regions\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/regions/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/series\",\n\t\t\t\tpattern: /^\\/api\\/series\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/series/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/stream\",\n\t\t\t\tpattern: /^\\/api\\/stream\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/stream/_server.ts.js'))\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  const index = 0;
2
2
  let component_cache;
3
3
  const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js-CBQpEToy.js')).default;
4
- const imports = ["_app/immutable/nodes/0.CZO0sIxX.js","_app/immutable/chunks/pqiPC7Y8.js","_app/immutable/chunks/xihTtKlq.js"];
5
- const stylesheets = ["_app/immutable/assets/0.BQQ1YLPc.css"];
4
+ const imports = ["_app/immutable/nodes/0.BN3NguWs.js","_app/immutable/chunks/pqiPC7Y8.js","_app/immutable/chunks/xihTtKlq.js"];
5
+ const stylesheets = ["_app/immutable/assets/0.Dfts6BC4.css"];
6
6
  const fonts = [];
7
7
 
8
8
  export { component, fonts, imports, index, stylesheets };
9
- //# sourceMappingURL=0.js-BMP_Yttt.js.map
9
+ //# sourceMappingURL=0.js-CNFDDPj5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"0.js-BMP_Yttt.js","sources":["../../../../.svelte-kit/output/server/nodes/0.js"],"sourcesContent":["\n\nexport const index = 0;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/0.CZO0sIxX.js\",\"_app/immutable/chunks/pqiPC7Y8.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [\"_app/immutable/assets/0.BQQ1YLPc.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,gDAAoC,CAAC,EAAE;AAClG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC;AACxH,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;"}
1
+ {"version":3,"file":"0.js-CNFDDPj5.js","sources":["../../../../.svelte-kit/output/server/nodes/0.js"],"sourcesContent":["\n\nexport const index = 0;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/0.BN3NguWs.js\",\"_app/immutable/chunks/pqiPC7Y8.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [\"_app/immutable/assets/0.Dfts6BC4.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,gDAAoC,CAAC,EAAE;AAClG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC;AACxH,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;"}
@@ -1,9 +1,9 @@
1
1
  const index = 1;
2
2
  let component_cache;
3
- const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js-DdUYlUJV.js')).default;
4
- const imports = ["_app/immutable/nodes/1.zcN3R_zF.js","_app/immutable/chunks/pqiPC7Y8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DkyYNO4U.js","_app/immutable/chunks/Dp8S9ymS.js"];
3
+ const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js-CsCL5PMW.js')).default;
4
+ const imports = ["_app/immutable/nodes/1.Djdw1GzA.js","_app/immutable/chunks/pqiPC7Y8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/BsH4MNzX.js","_app/immutable/chunks/BOT2hFMn.js"];
5
5
  const stylesheets = [];
6
6
  const fonts = [];
7
7
 
8
8
  export { component, fonts, imports, index, stylesheets };
9
- //# sourceMappingURL=1.js-2HQHUOse.js.map
9
+ //# sourceMappingURL=1.js-B5FPLYnf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"1.js-2HQHUOse.js","sources":["../../../../.svelte-kit/output/server/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.zcN3R_zF.js\",\"_app/immutable/chunks/pqiPC7Y8.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/DkyYNO4U.js\",\"_app/immutable/chunks/Dp8S9ymS.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,kDAAsC,CAAC,EAAE;AACpG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChM,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;"}
1
+ {"version":3,"file":"1.js-B5FPLYnf.js","sources":["../../../../.svelte-kit/output/server/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.Djdw1GzA.js\",\"_app/immutable/chunks/pqiPC7Y8.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/BsH4MNzX.js\",\"_app/immutable/chunks/BOT2hFMn.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,kDAAsC,CAAC,EAAE;AACpG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChM,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;"}
@@ -1,9 +1,9 @@
1
1
  const index = 2;
2
2
  let component_cache;
3
- const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-B-kVwiNh.js')).default;
4
- const imports = ["_app/immutable/nodes/2.DxevVqut.js","_app/immutable/chunks/pqiPC7Y8.js","_app/immutable/chunks/Dp8S9ymS.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DkyYNO4U.js","_app/immutable/chunks/DwezeuNE.js"];
3
+ const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-qqtU0apo.js')).default;
4
+ const imports = ["_app/immutable/nodes/2.CjvaJDQJ.js","_app/immutable/chunks/pqiPC7Y8.js","_app/immutable/chunks/BOT2hFMn.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/BsH4MNzX.js","_app/immutable/chunks/BjxZ_neZ.js"];
5
5
  const stylesheets = ["_app/immutable/assets/Path.B0wDzTrn.css","_app/immutable/assets/Circle.C5MKzgk2.css","_app/immutable/assets/EventScatter.DA5sZ1c0.css"];
6
6
  const fonts = [];
7
7
 
8
8
  export { component, fonts, imports, index, stylesheets };
9
- //# sourceMappingURL=2.js-7RtHpiHN.js.map
9
+ //# sourceMappingURL=2.js-BEuxzw6b.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"2.js-7RtHpiHN.js","sources":["../../../../.svelte-kit/output/server/nodes/2.js"],"sourcesContent":["\n\nexport const index = 2;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/2.DxevVqut.js\",\"_app/immutable/chunks/pqiPC7Y8.js\",\"_app/immutable/chunks/Dp8S9ymS.js\",\"_app/immutable/chunks/HclGiUj8.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/DkyYNO4U.js\",\"_app/immutable/chunks/DwezeuNE.js\"];\nexport const stylesheets = [\"_app/immutable/assets/Path.B0wDzTrn.css\",\"_app/immutable/assets/Circle.C5MKzgk2.css\",\"_app/immutable/assets/EventScatter.DA5sZ1c0.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,8CAAkC,CAAC,EAAE;AAChG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACxQ,MAAC,WAAW,GAAG,CAAC,yCAAyC,CAAC,2CAA2C,CAAC,iDAAiD;AACvJ,MAAC,KAAK,GAAG;;"}
1
+ {"version":3,"file":"2.js-BEuxzw6b.js","sources":["../../../../.svelte-kit/output/server/nodes/2.js"],"sourcesContent":["\n\nexport const index = 2;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/2.CjvaJDQJ.js\",\"_app/immutable/chunks/pqiPC7Y8.js\",\"_app/immutable/chunks/BOT2hFMn.js\",\"_app/immutable/chunks/HclGiUj8.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/BsH4MNzX.js\",\"_app/immutable/chunks/BjxZ_neZ.js\"];\nexport const stylesheets = [\"_app/immutable/assets/Path.B0wDzTrn.css\",\"_app/immutable/assets/Circle.C5MKzgk2.css\",\"_app/immutable/assets/EventScatter.DA5sZ1c0.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,8CAAkC,CAAC,EAAE;AAChG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACxQ,MAAC,WAAW,GAAG,CAAC,yCAAyC,CAAC,2CAA2C,CAAC,iDAAiD;AACvJ,MAAC,KAAK,GAAG;;"}
package/dist/cli/index.js CHANGED
@@ -16,7 +16,7 @@ import { handleCompletion } from "./completions.js";
16
16
  import { isLoopbackHost, parseCliArgs, usageText } from "./options.js";
17
17
  import { appRootFromHere, healthUrl, openBrowser as openBrowserDefault, startServer, stopServer, uiUrl, waitForHealth, } from "./server.js";
18
18
  import { describeArchive, isHeadless, probeCredentials as probeCredentialsDefault, readArchive as readArchiveDefault, readIdentity as readIdentityDefault, runLogin as runLoginDefault, shortIdentity, } from "./preflight.js";
19
- import { createUi, isInteractive } from "./ui.js";
19
+ import { PromptCancelled, createUi, isInteractive } from "./ui.js";
20
20
  /** Reads the version from the package manifest next to the app root. */
21
21
  export function readVersion(appRoot) {
22
22
  const fallback = '0.0.0';
@@ -269,122 +269,145 @@ export async function run(argv, overrides = {}) {
269
269
  host: options.host,
270
270
  verbose: options.verbose,
271
271
  });
272
- const ready = await io.waitForHealth(healthUrl(url), { fetchImpl: fetch });
273
- if (!ready) {
274
- ui.failSpinner(`the server did not answer on ${url}`);
275
- await stopServer(child);
276
- return 1;
277
- }
278
- ui.stopSpinner(`listening on ${url}`);
279
- // Report where history is kept before the AWS check: it is the one thing the
280
- // UI can offer even when credentials are not usable yet.
281
- if (!options.archive) {
282
- ui.info('local history off (--no-archive)');
283
- }
284
- else {
285
- const archive = await io.readArchive({ baseUrl: url });
286
- if (archive.ok) {
287
- if (archive.status.available)
288
- ui.info(describeArchive(archive.status));
289
- else
290
- ui.warn(describeArchive(archive.status));
272
+ try {
273
+ const ready = await io.waitForHealth(healthUrl(url), { fetchImpl: fetch });
274
+ if (!ready) {
275
+ ui.failSpinner(`the server did not answer on ${url}`);
276
+ await stopServer(child);
277
+ return 1;
291
278
  }
292
- else {
293
- ui.warn(`could not read the local history status: ${archive.message}`);
279
+ ui.stopSpinner(`listening on ${url}`);
280
+ // Report where history is kept before the AWS check: it is the one thing the
281
+ // UI can offer even when credentials are not usable yet.
282
+ if (!options.archive) {
283
+ ui.info('local history off (--no-archive)');
294
284
  }
295
- }
296
- // Before sending anyone to a UI that cannot load logs, check that AWS will
297
- // actually answer, and offer the login that fixes it.
298
- const assessment = await assessCredentials({
299
- options,
300
- io,
301
- ui,
302
- url,
303
- region,
304
- startProfile: profile,
305
- });
306
- if (assessment.status === 'other') {
307
- ui.warn(`could not list log groups: ${assessment.message}`);
308
- }
309
- if (assessment.status === 'credentials') {
310
- // A profile that was not in play needs the app restarted with it: that is
311
- // the only way to find out whether its credentials already work, and the
312
- // only way the browser can use it.
313
- const activeProfile = assessment.chosen === null ? null : assessment.chosen;
314
- let activeRegion = region;
315
- let failureMessage = assessment.message;
316
- let failureCode = assessment.code;
317
- if (assessment.chosen !== null) {
318
- activeRegion = resolveRunRegion({
319
- region: options.region,
320
- profile: assessment.chosen,
321
- base: io.env,
322
- configText: io.readConfigText(),
323
- });
324
- ui.info(`restarting with profile ${assessment.chosen}`);
325
- await stopServer(child);
326
- child = io.startServerImpl({
327
- appRoot: io.appRoot,
328
- env: buildChildEnv({
329
- base: baseEnv,
330
- profile: assessment.chosen,
331
- region: activeRegion,
332
- endpoint: null,
333
- archive: { enabled: options.archive, path: options.db },
334
- }),
335
- port: options.port,
336
- host: options.host,
337
- verbose: options.verbose,
338
- });
339
- const healthy = await io.waitForHealth(healthUrl(url), { fetchImpl: fetch });
340
- if (!healthy) {
341
- ui.failSpinner(`the server did not come back up on ${url}`);
342
- await stopServer(child);
343
- return 1;
285
+ else {
286
+ const archive = await io.readArchive({ baseUrl: url });
287
+ if (archive.ok) {
288
+ if (archive.status.available)
289
+ ui.info(describeArchive(archive.status));
290
+ else
291
+ ui.warn(describeArchive(archive.status));
344
292
  }
345
- // Now the question is about the chosen profile, not the ambient one.
346
- const identity = await io.readIdentity({ baseUrl: url, region: activeRegion });
347
- if (identity.ok) {
348
- ui.info(`profile ${assessment.chosen} already works (${shortIdentity(identity.identity.arn)}) - using it`);
349
- ui.outro(`${url} (Ctrl+C to stop)`);
350
- if (options.open)
351
- io.openBrowser(url);
352
- const code = await io.waitForStop(child);
353
- ui.outro('stopped');
354
- return code;
293
+ else {
294
+ ui.warn(`could not read the local history status: ${archive.message}`);
355
295
  }
356
- failureMessage = identity.message;
357
- failureCode = identity.code;
358
296
  }
359
- const outcome = await offerLogin({
297
+ // Before sending anyone to a UI that cannot load logs, check that AWS will
298
+ // actually answer, and offer the login that fixes it.
299
+ const assessment = await assessCredentials({
360
300
  options,
361
301
  io,
362
302
  ui,
363
- profile: activeProfile ?? assessment.profile,
364
- failureMessage,
365
- failureCode,
303
+ url,
304
+ region,
305
+ startProfile: profile,
366
306
  });
367
- if (outcome.login === 'succeeded') {
368
- const identity = await io.readIdentity({ baseUrl: url, region: activeRegion });
369
- if (identity.ok) {
370
- ui.info(`signed in as ${shortIdentity(identity.identity.arn)}${activeProfile === null ? '' : ` (${activeProfile})`}`);
307
+ if (assessment.status === 'other') {
308
+ ui.warn(`could not list log groups: ${assessment.message}`);
309
+ }
310
+ if (assessment.status === 'credentials') {
311
+ // A profile that was not in play needs the app restarted with it: that is
312
+ // the only way to find out whether its credentials already work, and the
313
+ // only way the browser can use it.
314
+ const activeProfile = assessment.chosen === null ? null : assessment.chosen;
315
+ let activeRegion = region;
316
+ let failureMessage = assessment.message;
317
+ let failureCode = assessment.code;
318
+ if (assessment.chosen !== null) {
319
+ activeRegion = resolveRunRegion({
320
+ region: options.region,
321
+ profile: assessment.chosen,
322
+ base: io.env,
323
+ configText: io.readConfigText(),
324
+ });
325
+ ui.info(`restarting with profile ${assessment.chosen}`);
326
+ await stopServer(child);
327
+ child = io.startServerImpl({
328
+ appRoot: io.appRoot,
329
+ env: buildChildEnv({
330
+ base: baseEnv,
331
+ profile: assessment.chosen,
332
+ region: activeRegion,
333
+ endpoint: null,
334
+ archive: { enabled: options.archive, path: options.db },
335
+ }),
336
+ port: options.port,
337
+ host: options.host,
338
+ verbose: options.verbose,
339
+ });
340
+ const healthy = await io.waitForHealth(healthUrl(url), { fetchImpl: fetch });
341
+ if (!healthy) {
342
+ ui.failSpinner(`the server did not come back up on ${url}`);
343
+ await stopServer(child);
344
+ return 1;
345
+ }
346
+ // Now the question is about the chosen profile, not the ambient one.
347
+ const identity = await io.readIdentity({ baseUrl: url, region: activeRegion });
348
+ if (identity.ok) {
349
+ ui.info(`profile ${assessment.chosen} already works (${shortIdentity(identity.identity.arn)}) - using it`);
350
+ ui.outro(`${url} (Ctrl+C to stop)`);
351
+ if (options.open)
352
+ io.openBrowser(url);
353
+ const code = await io.waitForStop(child);
354
+ ui.outro('stopped');
355
+ return code;
356
+ }
357
+ failureMessage = identity.message;
358
+ failureCode = identity.code;
371
359
  }
372
- else {
373
- ui.warn(`still failing after login: ${identity.message}`);
360
+ const outcome = await offerLogin({
361
+ options,
362
+ io,
363
+ ui,
364
+ profile: activeProfile ?? assessment.profile,
365
+ failureMessage,
366
+ failureCode,
367
+ });
368
+ if (outcome.login === 'succeeded') {
369
+ const identity = await io.readIdentity({ baseUrl: url, region: activeRegion });
370
+ if (identity.ok) {
371
+ ui.info(`signed in as ${shortIdentity(identity.identity.arn)}${activeProfile === null ? '' : ` (${activeProfile})`}`);
372
+ }
373
+ else {
374
+ ui.warn(`still failing after login: ${identity.message}`);
375
+ }
376
+ }
377
+ else if (activeProfile !== null) {
378
+ ui.info(`the app is using profile ${activeProfile}; log in, then press Refresh in the UI`);
374
379
  }
375
380
  }
376
- else if (activeProfile !== null) {
377
- ui.info(`the app is using profile ${activeProfile}; log in, then press Refresh in the UI`);
378
- }
381
+ if (options.open)
382
+ io.openBrowser(url);
383
+ ui.outro(`${url} (Ctrl+C to stop)`);
384
+ const code = await io.waitForStop(child);
385
+ ui.outro('stopped');
386
+ return code;
387
+ }
388
+ catch (error) {
389
+ if (!(error instanceof PromptCancelled))
390
+ throw error;
391
+ // Ctrl+C at a prompt is a stop, not an answer to the question: shut the
392
+ // server down and report it the same way a Ctrl+C at a running server does.
393
+ ui.outro('stopped');
394
+ return await stopServer(child);
379
395
  }
380
- if (options.open)
381
- io.openBrowser(url);
382
- ui.outro(`${url} (Ctrl+C to stop)`);
383
- const code = await io.waitForStop(child);
384
- ui.outro('stopped');
385
- return code;
386
396
  }
387
- /** Entry point used by `bin.ts`: runs the CLI and sets the exit code. */
397
+ /**
398
+ * Entry point used by `bin.ts`: runs the CLI and sets the exit code.
399
+ *
400
+ * A cancelled prompt that `run` did not convert into a stop still exits like an
401
+ * interrupted process (130) instead of throwing "the prompt was cancelled" at
402
+ * someone who just pressed Ctrl+C.
403
+ */
388
404
  export async function main(argv = process.argv.slice(2)) {
389
- process.exitCode = await run(argv);
405
+ try {
406
+ process.exitCode = await run(argv);
407
+ }
408
+ catch (error) {
409
+ if (!(error instanceof PromptCancelled))
410
+ throw error;
411
+ process.exitCode = 130;
412
+ }
390
413
  }
package/dist/cli/ui.js CHANGED
@@ -6,6 +6,19 @@
6
6
  * falls back to plain lines, which also keeps the integration tests readable.
7
7
  */
8
8
  import { autocomplete, cancel, confirm, intro, isCancel, log, outro, spinner, } from '@clack/prompts';
9
+ /**
10
+ * Thrown when the user cancels a prompt with Ctrl+C.
11
+ *
12
+ * A cancel is not an answer: reading it as "No" is how the CLI used to keep
13
+ * running (server and all) after a Ctrl+C that looked like it did nothing, so
14
+ * the prompt layer raises this instead and the CLI stops cleanly.
15
+ */
16
+ export class PromptCancelled extends Error {
17
+ constructor() {
18
+ super('the prompt was cancelled');
19
+ this.name = 'PromptCancelled';
20
+ }
21
+ }
9
22
  /**
10
23
  * Decides whether the process can render animated output and ask questions.
11
24
  *
@@ -72,14 +85,16 @@ export function createUi(options = {}) {
72
85
  });
73
86
  if (isCancel(answer)) {
74
87
  cancel('Cancelled.');
75
- return null;
88
+ throw new PromptCancelled();
76
89
  }
77
90
  return String(answer);
78
91
  },
79
92
  confirm: async (message, initial = true) => {
80
93
  const answer = await confirm({ message, initialValue: initial });
81
- if (isCancel(answer))
82
- return false;
94
+ if (isCancel(answer)) {
95
+ cancel('Cancelled.');
96
+ throw new PromptCancelled();
97
+ }
83
98
  return answer === true;
84
99
  },
85
100
  };
@@ -93,6 +93,135 @@ function declaredLevel(message) {
93
93
  }
94
94
  return null;
95
95
  }
96
+ /**
97
+ * Severity ranks, highest first, with `unknown` below every real level.
98
+ *
99
+ * One ordered table feeds the JavaScript helpers and the SQL the archive runs,
100
+ * so "most critical" means exactly the same thing in the chart, in the log view
101
+ * and in DuckDB. Insertion order is severity order.
102
+ */
103
+ export const LEVEL_RANK = {
104
+ error: 4,
105
+ warn: 3,
106
+ info: 2,
107
+ debug: 1,
108
+ unknown: 0,
109
+ };
110
+ /** Rank of a level; a missing level ranks as `unknown`. */
111
+ export function levelRank(level) {
112
+ return level === null || level === undefined ? LEVEL_RANK.unknown : LEVEL_RANK[level];
113
+ }
114
+ /**
115
+ * Worst level in a set of levels, or `null` when none of them has a level.
116
+ *
117
+ * This is what a request id group is coloured by: a group with one error line
118
+ * and twenty info lines is an error, because that is what a reader needs to see.
119
+ */
120
+ export function mostCriticalLevel(levels) {
121
+ let best = null;
122
+ let bestRank = -1;
123
+ for (const level of levels) {
124
+ if (level === null || level === undefined || level === 'unknown')
125
+ continue;
126
+ const rank = LEVEL_RANK[level];
127
+ if (rank > bestRank) {
128
+ bestRank = rank;
129
+ best = level;
130
+ }
131
+ }
132
+ return best;
133
+ }
134
+ /**
135
+ * Payload keys checked, in order, for a request id the producer declared.
136
+ *
137
+ * The list is deliberately about the *request*: a trace id, a session id or a
138
+ * tenant id names something else and must not collapse unrelated lines.
139
+ */
140
+ export const REQUEST_ID_KEYS = [
141
+ 'requestId',
142
+ 'request_id',
143
+ 'requestID',
144
+ 'reqId',
145
+ 'req_id',
146
+ 'awsRequestId',
147
+ 'aws_request_id',
148
+ 'xRequestId',
149
+ 'x_request_id',
150
+ 'x-request-id',
151
+ 'X-Request-Id',
152
+ ];
153
+ /** Values that look like an id but mean "there is none". */
154
+ const REQUEST_ID_PLACEHOLDERS = new Set([
155
+ 'none',
156
+ 'null',
157
+ 'undefined',
158
+ 'n/a',
159
+ 'na',
160
+ 'unknown',
161
+ 'test',
162
+ '-',
163
+ '{{requestid}}',
164
+ '${requestid}',
165
+ ]);
166
+ /** Shortest value treated as a request id, so `id: 1` is not a grouping key. */
167
+ const REQUEST_ID_MIN_LENGTH = 4;
168
+ /** Characters a request id is made of; anything with a space is not an id. */
169
+ const REQUEST_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:=-]*$/;
170
+ /**
171
+ * `RequestId: 1234-abcd`, `request_id=abc.def`, `x-request-id: 8f2c`: the
172
+ * separators and the casing both vary, so one pattern covers them.
173
+ *
174
+ * A bare UUID is deliberately *not* matched. Plenty of log lines carry a
175
+ * correlation id, a span id or an uploaded file's id, and grouping by one of
176
+ * those would invent requests that never existed.
177
+ */
178
+ const REQUEST_ID_TEXT = /\brequest[\s_-]?id\b\s*[:=]\s*"?([A-Za-z0-9][A-Za-z0-9._:=-]*)"?/i;
179
+ /** Trims trailing punctuation a sentence adds after an id. */
180
+ function cleanRequestId(value) {
181
+ const trimmed = value.replace(/[.,;:]+$/, '').trim();
182
+ if (trimmed.length < REQUEST_ID_MIN_LENGTH)
183
+ return null;
184
+ if (REQUEST_ID_PLACEHOLDERS.has(trimmed.toLowerCase()))
185
+ return null;
186
+ return REQUEST_ID_PATTERN.test(trimmed) ? trimmed : null;
187
+ }
188
+ /** Request id the payload declares, when the line carries a JSON object. */
189
+ function declaredRequestId(message) {
190
+ const payload = findJsonInMessage(message);
191
+ if (payload === null || typeof payload !== 'object' || Array.isArray(payload))
192
+ return null;
193
+ const record = payload;
194
+ for (const key of REQUEST_ID_KEYS) {
195
+ const value = record[key];
196
+ if (typeof value === 'string') {
197
+ const cleaned = cleanRequestId(value);
198
+ if (cleaned !== null)
199
+ return cleaned;
200
+ }
201
+ // Numbers are legitimate ids in some frameworks, and never placeholders.
202
+ if (typeof value === 'number' && Number.isFinite(value))
203
+ return String(value);
204
+ }
205
+ return null;
206
+ }
207
+ /**
208
+ * Detects the request id of a log line, or returns `null` when it has none.
209
+ *
210
+ * A declared payload key wins; the text form is the fallback for the many logs
211
+ * that print their id instead of emitting JSON. Both paths return the id
212
+ * verbatim, because it is an identifier - folding case would merge distinct ids
213
+ * on the one hand and lie about what the log said on the other.
214
+ */
215
+ export function detectRequestId(message) {
216
+ const text = message ?? '';
217
+ if (text === '')
218
+ return null;
219
+ const declared = declaredRequestId(text);
220
+ if (declared !== null)
221
+ return declared;
222
+ const match = REQUEST_ID_TEXT.exec(text);
223
+ return match === null ? null : cleanRequestId(match[1] ?? '');
224
+ }
96
225
  /**
97
226
  * Detects the severity of a log line.
98
227
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "watch-tail",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Tail Amazon CloudWatch Logs in your browser: a local SvelteKit UI with live and historic streaming, ambient AWS credentials and floci support",
5
5
  "keywords": [
6
6
  "aws",