watch-tail 0.6.2 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/README.md +22 -6
  2. package/build/client/_app/immutable/assets/0.DKleCc0-.css +2 -0
  3. package/build/client/_app/immutable/assets/0.DKleCc0-.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.DKleCc0-.css.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{CBRk0OGa.js → 1mB5Ee1Q.js} +1 -1
  6. package/build/client/_app/immutable/chunks/1mB5Ee1Q.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/1mB5Ee1Q.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{DWm-CGbg.js → 3fFVdy92.js} +1 -1
  9. package/build/client/_app/immutable/chunks/3fFVdy92.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/3fFVdy92.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{w7c5E2ms.js → 8mpn3Xst.js} +1 -1
  12. package/build/client/_app/immutable/chunks/8mpn3Xst.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/8mpn3Xst.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{OoMmWNOu.js → B78Vj1az.js} +1 -1
  15. package/build/client/_app/immutable/chunks/B78Vj1az.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/B78Vj1az.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{D0IrjYE5.js → B7aS9tS2.js} +1 -1
  18. package/build/client/_app/immutable/chunks/B7aS9tS2.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/B7aS9tS2.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/{8x_7TBuS.js → BF84Orj8.js} +1 -1
  21. package/build/client/_app/immutable/chunks/BF84Orj8.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/BF84Orj8.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/BIdvnjrP.js +1 -0
  24. package/build/client/_app/immutable/chunks/BIdvnjrP.js.br +1 -0
  25. package/build/client/_app/immutable/chunks/BIdvnjrP.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/{UsO0MS14.js → BPoZrXrH.js} +1 -1
  27. package/build/client/_app/immutable/chunks/BPoZrXrH.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/BPoZrXrH.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/{D1Hr4tKw.js → BSy__Jrd.js} +1 -1
  30. package/build/client/_app/immutable/chunks/BSy__Jrd.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/BSy__Jrd.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/{KsLFdNDs.js → BdW_yBQU.js} +1 -1
  33. package/build/client/_app/immutable/chunks/BdW_yBQU.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/BdW_yBQU.js.gz +0 -0
  35. package/build/client/_app/immutable/chunks/{F4LqKrLs.js → BnRQs9nz.js} +5 -5
  36. package/build/client/_app/immutable/chunks/BnRQs9nz.js.br +0 -0
  37. package/build/client/_app/immutable/chunks/BnRQs9nz.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/{AAWh0-tL.js → C6r7NvtG.js} +1 -1
  39. package/build/client/_app/immutable/chunks/C6r7NvtG.js.br +0 -0
  40. package/build/client/_app/immutable/chunks/C6r7NvtG.js.gz +0 -0
  41. package/build/client/_app/immutable/chunks/{KA1QvXmu.js → CEw1go7g.js} +1 -1
  42. package/build/client/_app/immutable/chunks/CEw1go7g.js.br +0 -0
  43. package/build/client/_app/immutable/chunks/CEw1go7g.js.gz +0 -0
  44. package/build/client/_app/immutable/chunks/{BNDRPiSt.js → CFJEGo4j.js} +1 -1
  45. package/build/client/_app/immutable/chunks/CFJEGo4j.js.br +0 -0
  46. package/build/client/_app/immutable/chunks/CFJEGo4j.js.gz +0 -0
  47. package/build/client/_app/immutable/chunks/CGnVqaBL.js +1 -0
  48. package/build/client/_app/immutable/chunks/CGnVqaBL.js.br +0 -0
  49. package/build/client/_app/immutable/chunks/CGnVqaBL.js.gz +0 -0
  50. package/build/client/_app/immutable/chunks/{CfPyeeq3.js → CY8zQ4KM.js} +1 -1
  51. package/build/client/_app/immutable/chunks/CY8zQ4KM.js.br +0 -0
  52. package/build/client/_app/immutable/chunks/CY8zQ4KM.js.gz +0 -0
  53. package/build/client/_app/immutable/chunks/{DYDQbI6D.js → CZ3S843d.js} +1 -1
  54. package/build/client/_app/immutable/chunks/CZ3S843d.js.br +0 -0
  55. package/build/client/_app/immutable/chunks/CZ3S843d.js.gz +0 -0
  56. package/build/client/_app/immutable/chunks/{DtV-MjyX.js → CgAZPeK7.js} +1 -1
  57. package/build/client/_app/immutable/chunks/CgAZPeK7.js.br +0 -0
  58. package/build/client/_app/immutable/chunks/CgAZPeK7.js.gz +0 -0
  59. package/build/client/_app/immutable/chunks/{Dc9It0QB.js → CrmB4MvE.js} +1 -1
  60. package/build/client/_app/immutable/chunks/CrmB4MvE.js.br +0 -0
  61. package/build/client/_app/immutable/chunks/CrmB4MvE.js.gz +0 -0
  62. package/build/client/_app/immutable/chunks/{DznDQzx1.js → CtWwlW0t.js} +1 -1
  63. package/build/client/_app/immutable/chunks/CtWwlW0t.js.br +0 -0
  64. package/build/client/_app/immutable/chunks/CtWwlW0t.js.gz +0 -0
  65. package/build/client/_app/immutable/chunks/{CG0TPRkn.js → D-AkVRH7.js} +1 -1
  66. package/build/client/_app/immutable/chunks/D-AkVRH7.js.br +0 -0
  67. package/build/client/_app/immutable/chunks/D-AkVRH7.js.gz +0 -0
  68. package/build/client/_app/immutable/chunks/{D6rwn6Ed.js → D0CZlpgd.js} +1 -1
  69. package/build/client/_app/immutable/chunks/D0CZlpgd.js.br +0 -0
  70. package/build/client/_app/immutable/chunks/D0CZlpgd.js.gz +0 -0
  71. package/build/client/_app/immutable/chunks/{CpeJ2iPd.js → D0IZin0e.js} +1 -1
  72. package/build/client/_app/immutable/chunks/D0IZin0e.js.br +0 -0
  73. package/build/client/_app/immutable/chunks/D0IZin0e.js.gz +0 -0
  74. package/build/client/_app/immutable/chunks/{DQCjzVyz.js → DI6o1zMC.js} +1 -1
  75. package/build/client/_app/immutable/chunks/DI6o1zMC.js.br +0 -0
  76. package/build/client/_app/immutable/chunks/DI6o1zMC.js.gz +0 -0
  77. package/build/client/_app/immutable/chunks/{sf5kQ3yV.js → DbWb9_dK.js} +1 -1
  78. package/build/client/_app/immutable/chunks/DbWb9_dK.js.br +0 -0
  79. package/build/client/_app/immutable/chunks/DbWb9_dK.js.gz +0 -0
  80. package/build/client/_app/immutable/chunks/{1cmfrS0o.js → Dh3ZWuG8.js} +1 -1
  81. package/build/client/_app/immutable/chunks/Dh3ZWuG8.js.br +0 -0
  82. package/build/client/_app/immutable/chunks/Dh3ZWuG8.js.gz +0 -0
  83. package/build/client/_app/immutable/chunks/{CIDBs8t6.js → Dp3OTI-g.js} +1 -1
  84. package/build/client/_app/immutable/chunks/Dp3OTI-g.js.br +0 -0
  85. package/build/client/_app/immutable/chunks/Dp3OTI-g.js.gz +0 -0
  86. package/build/client/_app/immutable/chunks/{BKpsnTLG.js → DtdjxckD.js} +1 -1
  87. package/build/client/_app/immutable/chunks/DtdjxckD.js.br +0 -0
  88. package/build/client/_app/immutable/chunks/DtdjxckD.js.gz +0 -0
  89. package/build/client/_app/immutable/chunks/YehCS1lO.js +5 -0
  90. package/build/client/_app/immutable/chunks/YehCS1lO.js.br +0 -0
  91. package/build/client/_app/immutable/chunks/YehCS1lO.js.gz +0 -0
  92. package/build/client/_app/immutable/chunks/{DqJI6J5U.js → g-7YfdwH.js} +1 -1
  93. package/build/client/_app/immutable/chunks/g-7YfdwH.js.br +0 -0
  94. package/build/client/_app/immutable/chunks/g-7YfdwH.js.gz +0 -0
  95. package/build/client/_app/immutable/chunks/{BWDKMHXq.js → zfc2KyIr.js} +1 -1
  96. package/build/client/_app/immutable/chunks/zfc2KyIr.js.br +0 -0
  97. package/build/client/_app/immutable/chunks/zfc2KyIr.js.gz +0 -0
  98. package/build/client/_app/immutable/entry/{app.FQLd-NC-.js → app.C-KKyvGI.js} +2 -2
  99. package/build/client/_app/immutable/entry/app.C-KKyvGI.js.br +0 -0
  100. package/build/client/_app/immutable/entry/app.C-KKyvGI.js.gz +0 -0
  101. package/build/client/_app/immutable/entry/start.obx3dQT_.js +1 -0
  102. package/build/client/_app/immutable/entry/start.obx3dQT_.js.br +1 -0
  103. package/build/client/_app/immutable/entry/start.obx3dQT_.js.gz +0 -0
  104. package/build/client/_app/immutable/nodes/{0.BN3NguWs.js → 0.2dnHMwE1.js} +1 -1
  105. package/build/client/_app/immutable/nodes/0.2dnHMwE1.js.br +0 -0
  106. package/build/client/_app/immutable/nodes/{0.BN3NguWs.js.gz → 0.2dnHMwE1.js.gz} +0 -0
  107. package/build/client/_app/immutable/nodes/{1.5EZfoLCg.js → 1.D5nbnmDb.js} +1 -1
  108. package/build/client/_app/immutable/nodes/1.D5nbnmDb.js.br +0 -0
  109. package/build/client/_app/immutable/nodes/1.D5nbnmDb.js.gz +0 -0
  110. package/build/client/_app/immutable/nodes/2.DAQ4mvAt.js +5 -0
  111. package/build/client/_app/immutable/nodes/2.DAQ4mvAt.js.br +0 -0
  112. package/build/client/_app/immutable/nodes/2.DAQ4mvAt.js.gz +0 -0
  113. package/build/client/_app/version.json +1 -1
  114. package/build/client/_app/version.json.br +0 -0
  115. package/build/client/_app/version.json.gz +0 -0
  116. package/build/handler.js +4 -4
  117. package/build/index.js +4 -4
  118. package/build/server/chunks/chunks/{EventScatter.js-D3Jaw_Cw.js → EventScatter.js-Du7AJN9m.js} +50 -17
  119. package/build/server/chunks/chunks/{EventScatter.js-D3Jaw_Cw.js.map → EventScatter.js-Du7AJN9m.js.map} +1 -1
  120. package/build/server/chunks/chunks/{archive.js-C2D-5edp.js → archive.js-D2jtMmDo.js} +134 -26
  121. package/build/server/chunks/chunks/archive.js-D2jtMmDo.js.map +1 -0
  122. package/build/server/chunks/chunks/{aws.js-DkPqAybc.js → env2.js-C5BgBJDY.js} +63 -6
  123. package/build/server/chunks/chunks/env2.js-C5BgBJDY.js.map +1 -0
  124. package/build/server/chunks/chunks/identity.js-NmGXxBz3.js +22 -0
  125. package/build/server/chunks/chunks/identity.js-NmGXxBz3.js.map +1 -0
  126. package/build/server/chunks/chunks/{internal2.js-627EG4am.js → internal2.js--RCssYze.js} +2 -2
  127. package/build/server/chunks/chunks/{internal2.js-627EG4am.js.map → internal2.js--RCssYze.js.map} +1 -1
  128. package/build/server/chunks/chunks/{level-filter.js-B3o2hyWD.js → level-filter.js-D9MNrew3.js} +2 -2
  129. package/build/server/chunks/chunks/{level-filter.js-B3o2hyWD.js.map → level-filter.js-D9MNrew3.js.map} +1 -1
  130. package/build/server/chunks/chunks/{log-buffer.js-BI_gQOls.js → log-buffer.js-A9FA-Qv8.js} +18 -3
  131. package/build/server/chunks/chunks/log-buffer.js-A9FA-Qv8.js.map +1 -0
  132. package/build/server/chunks/chunks/{regions.js-IQPMyP5C.js → regions.js-COf7DgnH.js} +3 -3
  133. package/build/server/chunks/chunks/regions.js-COf7DgnH.js.map +1 -0
  134. package/build/server/chunks/chunks/{series-buckets.js-BjigySff.js → series-buckets.js-BmCYga3F.js} +28 -3
  135. package/build/server/chunks/chunks/series-buckets.js-BmCYga3F.js.map +1 -0
  136. package/build/server/chunks/chunks/{state.js-DbqJPX0Y.js → state.js-CI2ef6Vi.js} +2 -2
  137. package/build/server/chunks/chunks/{state.js-DbqJPX0Y.js.map → state.js-CI2ef6Vi.js.map} +1 -1
  138. package/build/server/chunks/entries/endpoints/api/archive/{_server.ts.js-83Ch7djd.js → _server.ts.js-C4hWyXuu.js} +17 -9
  139. package/build/server/chunks/entries/endpoints/api/archive/_server.ts.js-C4hWyXuu.js.map +1 -0
  140. package/build/server/chunks/entries/endpoints/api/health/{_server.ts.js-VctnBhIJ.js → _server.ts.js-C5tfrpmC.js} +4 -5
  141. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-C5tfrpmC.js.map +1 -0
  142. package/build/server/chunks/entries/endpoints/api/identity/{_server.ts.js-Dt540Sio.js → _server.ts.js-PWRPScuN.js} +6 -24
  143. package/build/server/chunks/entries/endpoints/api/identity/_server.ts.js-PWRPScuN.js.map +1 -0
  144. package/build/server/chunks/entries/endpoints/api/log-groups/{_server.ts.js-drLgUdvB.js → _server.ts.js-D4y43Vwe.js} +14 -11
  145. package/build/server/chunks/entries/endpoints/api/log-groups/_server.ts.js-D4y43Vwe.js.map +1 -0
  146. package/build/server/chunks/entries/endpoints/api/regions/{_server.ts.js-CBqfN6Pg.js → _server.ts.js-9_g0ojki.js} +8 -9
  147. package/build/server/chunks/entries/endpoints/api/regions/_server.ts.js-9_g0ojki.js.map +1 -0
  148. package/build/server/chunks/entries/endpoints/api/series/{_server.ts.js-DOvBhEDU.js → _server.ts.js-DibT3Hjc.js} +34 -16
  149. package/build/server/chunks/entries/endpoints/api/series/_server.ts.js-DibT3Hjc.js.map +1 -0
  150. package/build/server/chunks/entries/endpoints/api/stream/{_server.ts.js-B9_-4ssJ.js → _server.ts.js-3ZYI-Za9.js} +15 -12
  151. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-3ZYI-Za9.js.map +1 -0
  152. package/build/server/chunks/entries/fallbacks/{error.svelte.js-B8dLO9gT.js → error.svelte.js-DP0OULWi.js} +3 -3
  153. package/build/server/chunks/entries/fallbacks/{error.svelte.js-B8dLO9gT.js.map → error.svelte.js-DP0OULWi.js.map} +1 -1
  154. package/build/server/chunks/entries/pages/{_layout.svelte.js-CBQpEToy.js → _layout.svelte.js-8U7ZeKYO.js} +3 -3
  155. package/build/server/chunks/entries/pages/_layout.svelte.js-8U7ZeKYO.js.map +1 -0
  156. package/build/server/chunks/entries/pages/{_page.svelte.js-BwuzE25P.js → _page.svelte.js-hG1agdw-.js} +82 -33
  157. package/build/server/chunks/entries/pages/_page.svelte.js-hG1agdw-.js.map +1 -0
  158. package/build/server/chunks/{handler-hlKcUyVP.js → handler-_dxqeJJj.js} +3 -3
  159. package/build/server/chunks/{handler-hlKcUyVP.js.map → handler-_dxqeJJj.js.map} +1 -1
  160. package/build/server/chunks/{index.js-BfPWKsz6.js → index.js-arX1nCCw.js} +2 -2
  161. package/build/server/chunks/{index.js-BfPWKsz6.js.map → index.js-arX1nCCw.js.map} +1 -1
  162. package/build/server/chunks/{manifest.js-uuijI5lm.js → manifest.js-D3447-0_.js} +12 -12
  163. package/build/server/chunks/{manifest.js-uuijI5lm.js.map → manifest.js-D3447-0_.js.map} +1 -1
  164. package/build/server/chunks/nodes/{0.js-CNFDDPj5.js → 0.js-XM75fTfb.js} +4 -4
  165. package/build/server/chunks/nodes/{0.js-CNFDDPj5.js.map → 0.js-XM75fTfb.js.map} +1 -1
  166. package/build/server/chunks/nodes/{1.js-bi9PXX_2.js → 1.js-CRIDfcrR.js} +3 -3
  167. package/build/server/chunks/nodes/{1.js-bi9PXX_2.js.map → 1.js-CRIDfcrR.js.map} +1 -1
  168. package/build/server/chunks/nodes/{2.js-3MYCPEqM.js → 2.js-1qmqKlMg.js} +3 -3
  169. package/build/server/chunks/nodes/{2.js-3MYCPEqM.js.map → 2.js-1qmqKlMg.js.map} +1 -1
  170. package/dist/cli/options.js +1 -1
  171. package/dist/lib/cli/aws.js +4 -4
  172. package/dist/lib/log-buffer.js +1 -1
  173. package/package.json +5 -5
  174. package/build/client/_app/immutable/assets/0.Dfts6BC4.css +0 -2
  175. package/build/client/_app/immutable/assets/0.Dfts6BC4.css.br +0 -0
  176. package/build/client/_app/immutable/assets/0.Dfts6BC4.css.gz +0 -0
  177. package/build/client/_app/immutable/chunks/1cmfrS0o.js.br +0 -0
  178. package/build/client/_app/immutable/chunks/1cmfrS0o.js.gz +0 -0
  179. package/build/client/_app/immutable/chunks/8x_7TBuS.js.br +0 -0
  180. package/build/client/_app/immutable/chunks/8x_7TBuS.js.gz +0 -0
  181. package/build/client/_app/immutable/chunks/AAWh0-tL.js.br +0 -0
  182. package/build/client/_app/immutable/chunks/AAWh0-tL.js.gz +0 -0
  183. package/build/client/_app/immutable/chunks/BKpsnTLG.js.br +0 -0
  184. package/build/client/_app/immutable/chunks/BKpsnTLG.js.gz +0 -0
  185. package/build/client/_app/immutable/chunks/BNDRPiSt.js.br +0 -0
  186. package/build/client/_app/immutable/chunks/BNDRPiSt.js.gz +0 -0
  187. package/build/client/_app/immutable/chunks/BWDKMHXq.js.br +0 -0
  188. package/build/client/_app/immutable/chunks/BWDKMHXq.js.gz +0 -0
  189. package/build/client/_app/immutable/chunks/BjxZ_neZ.js +0 -5
  190. package/build/client/_app/immutable/chunks/BjxZ_neZ.js.br +0 -0
  191. package/build/client/_app/immutable/chunks/BjxZ_neZ.js.gz +0 -0
  192. package/build/client/_app/immutable/chunks/CBRk0OGa.js.br +0 -0
  193. package/build/client/_app/immutable/chunks/CBRk0OGa.js.gz +0 -0
  194. package/build/client/_app/immutable/chunks/CG0TPRkn.js.br +0 -0
  195. package/build/client/_app/immutable/chunks/CG0TPRkn.js.gz +0 -0
  196. package/build/client/_app/immutable/chunks/CGReuhGk.js +0 -1
  197. package/build/client/_app/immutable/chunks/CGReuhGk.js.br +0 -1
  198. package/build/client/_app/immutable/chunks/CGReuhGk.js.gz +0 -0
  199. package/build/client/_app/immutable/chunks/CIDBs8t6.js.br +0 -0
  200. package/build/client/_app/immutable/chunks/CIDBs8t6.js.gz +0 -0
  201. package/build/client/_app/immutable/chunks/CfPyeeq3.js.br +0 -0
  202. package/build/client/_app/immutable/chunks/CfPyeeq3.js.gz +0 -0
  203. package/build/client/_app/immutable/chunks/CpeJ2iPd.js.br +0 -0
  204. package/build/client/_app/immutable/chunks/CpeJ2iPd.js.gz +0 -0
  205. package/build/client/_app/immutable/chunks/D0IrjYE5.js.br +0 -0
  206. package/build/client/_app/immutable/chunks/D0IrjYE5.js.gz +0 -0
  207. package/build/client/_app/immutable/chunks/D1Hr4tKw.js.br +0 -0
  208. package/build/client/_app/immutable/chunks/D1Hr4tKw.js.gz +0 -0
  209. package/build/client/_app/immutable/chunks/D6rwn6Ed.js.br +0 -1
  210. package/build/client/_app/immutable/chunks/D6rwn6Ed.js.gz +0 -0
  211. package/build/client/_app/immutable/chunks/DQCjzVyz.js.br +0 -0
  212. package/build/client/_app/immutable/chunks/DQCjzVyz.js.gz +0 -0
  213. package/build/client/_app/immutable/chunks/DWm-CGbg.js.br +0 -0
  214. package/build/client/_app/immutable/chunks/DWm-CGbg.js.gz +0 -0
  215. package/build/client/_app/immutable/chunks/DYDQbI6D.js.br +0 -0
  216. package/build/client/_app/immutable/chunks/DYDQbI6D.js.gz +0 -0
  217. package/build/client/_app/immutable/chunks/Dc9It0QB.js.br +0 -0
  218. package/build/client/_app/immutable/chunks/Dc9It0QB.js.gz +0 -0
  219. package/build/client/_app/immutable/chunks/DkQY3T0m.js +0 -1
  220. package/build/client/_app/immutable/chunks/DkQY3T0m.js.br +0 -0
  221. package/build/client/_app/immutable/chunks/DkQY3T0m.js.gz +0 -0
  222. package/build/client/_app/immutable/chunks/DqJI6J5U.js.br +0 -0
  223. package/build/client/_app/immutable/chunks/DqJI6J5U.js.gz +0 -0
  224. package/build/client/_app/immutable/chunks/DtV-MjyX.js.br +0 -0
  225. package/build/client/_app/immutable/chunks/DtV-MjyX.js.gz +0 -0
  226. package/build/client/_app/immutable/chunks/DznDQzx1.js.br +0 -0
  227. package/build/client/_app/immutable/chunks/DznDQzx1.js.gz +0 -0
  228. package/build/client/_app/immutable/chunks/F4LqKrLs.js.br +0 -0
  229. package/build/client/_app/immutable/chunks/F4LqKrLs.js.gz +0 -0
  230. package/build/client/_app/immutable/chunks/KA1QvXmu.js.br +0 -0
  231. package/build/client/_app/immutable/chunks/KA1QvXmu.js.gz +0 -0
  232. package/build/client/_app/immutable/chunks/KsLFdNDs.js.br +0 -0
  233. package/build/client/_app/immutable/chunks/KsLFdNDs.js.gz +0 -0
  234. package/build/client/_app/immutable/chunks/OoMmWNOu.js.br +0 -0
  235. package/build/client/_app/immutable/chunks/OoMmWNOu.js.gz +0 -0
  236. package/build/client/_app/immutable/chunks/UsO0MS14.js.br +0 -0
  237. package/build/client/_app/immutable/chunks/UsO0MS14.js.gz +0 -0
  238. package/build/client/_app/immutable/chunks/sf5kQ3yV.js.br +0 -0
  239. package/build/client/_app/immutable/chunks/sf5kQ3yV.js.gz +0 -0
  240. package/build/client/_app/immutable/chunks/w7c5E2ms.js.br +0 -0
  241. package/build/client/_app/immutable/chunks/w7c5E2ms.js.gz +0 -0
  242. package/build/client/_app/immutable/entry/app.FQLd-NC-.js.br +0 -0
  243. package/build/client/_app/immutable/entry/app.FQLd-NC-.js.gz +0 -0
  244. package/build/client/_app/immutable/entry/start.DqW_lChD.js +0 -1
  245. package/build/client/_app/immutable/entry/start.DqW_lChD.js.br +0 -1
  246. package/build/client/_app/immutable/entry/start.DqW_lChD.js.gz +0 -0
  247. package/build/client/_app/immutable/nodes/0.BN3NguWs.js.br +0 -0
  248. package/build/client/_app/immutable/nodes/1.5EZfoLCg.js.br +0 -0
  249. package/build/client/_app/immutable/nodes/1.5EZfoLCg.js.gz +0 -0
  250. package/build/client/_app/immutable/nodes/2.CbcDv2oO.js +0 -4
  251. package/build/client/_app/immutable/nodes/2.CbcDv2oO.js.br +0 -0
  252. package/build/client/_app/immutable/nodes/2.CbcDv2oO.js.gz +0 -0
  253. package/build/server/chunks/chunks/archive.js-C2D-5edp.js.map +0 -1
  254. package/build/server/chunks/chunks/aws.js-DkPqAybc.js.map +0 -1
  255. package/build/server/chunks/chunks/env2.js-CcIskxOZ.js +0 -60
  256. package/build/server/chunks/chunks/env2.js-CcIskxOZ.js.map +0 -1
  257. package/build/server/chunks/chunks/log-buffer.js-BI_gQOls.js.map +0 -1
  258. package/build/server/chunks/chunks/regions.js-IQPMyP5C.js.map +0 -1
  259. package/build/server/chunks/chunks/series-buckets.js-BjigySff.js.map +0 -1
  260. package/build/server/chunks/entries/endpoints/api/archive/_server.ts.js-83Ch7djd.js.map +0 -1
  261. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-VctnBhIJ.js.map +0 -1
  262. package/build/server/chunks/entries/endpoints/api/identity/_server.ts.js-Dt540Sio.js.map +0 -1
  263. package/build/server/chunks/entries/endpoints/api/log-groups/_server.ts.js-drLgUdvB.js.map +0 -1
  264. package/build/server/chunks/entries/endpoints/api/regions/_server.ts.js-CBqfN6Pg.js.map +0 -1
  265. package/build/server/chunks/entries/endpoints/api/series/_server.ts.js-DOvBhEDU.js.map +0 -1
  266. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-B9_-4ssJ.js.map +0 -1
  267. package/build/server/chunks/entries/pages/_layout.svelte.js-CBQpEToy.js.map +0 -1
  268. package/build/server/chunks/entries/pages/_page.svelte.js-BwuzE25P.js.map +0 -1
@@ -1,20 +1,20 @@
1
1
  import { ah as escape_html, ag as attr, ai as attr_style, ac as derived, aj as attr_class, ak as ensure_array_like, al as stringify, am as bind_props, an as clsx } from '../../chunks/server.js-CAEBuMIH.js';
2
- import { c as LogStore, f as filterByLevel, g as filterEvents, e as effectiveLevel, t as tokenizeJson, b as detectLevel, h as formatLogMessage, j as eventKey, l as levelColorClass } from '../../chunks/log-buffer.js-BI_gQOls.js';
3
- import { R as REGION_CODES } from '../../chunks/regions.js-IQPMyP5C.js';
2
+ import { f as LogStore, g as filterByLevel, h as filterEvents, c as effectiveLevel, t as tokenizeJson, b as detectLevel, j as formatLogMessage, k as eventKey, l as levelColorClass } from '../../chunks/log-buffer.js-A9FA-Qv8.js';
3
+ import { R as REGION_CODES } from '../../chunks/regions.js-COf7DgnH.js';
4
4
  import { P as PRESET_LABELS, a as presetLabel, H as HISTORIC_PRESETS, t as toDateTimeLocal, d as describeWindow } from '../../chunks/time-range.js-BLMT8aU3.js';
5
- import { p as page, r as replaceState } from '../../chunks/state.js-DbqJPX0Y.js';
6
- import { S as SERIES_LEVEL_COLOR, g as groupByLevel, r as requestRows, L as LEVEL_LABELS, i as isMeaningfulBrush, b as bucketEvents } from '../../chunks/series-buckets.js-BjigySff.js';
5
+ import { p as page, r as replaceState } from '../../chunks/state.js-CI2ef6Vi.js';
6
+ import { S as SERIES_LEVEL_COLOR, g as groupByLevel, r as requestRows, L as LEVEL_LABELS, i as isMeaningfulBrush, a as requestDurations, b as bucketEvents } from '../../chunks/series-buckets.js-BmCYga3F.js';
7
7
  import '../../chunks/uneval.js-DaakSYFQ.js';
8
8
  import '../../chunks/index-server.js-DNLOKvM0.js';
9
9
  import '../../chunks/shared.js-CgjUIvRK.js';
10
10
  import '../../chunks/exports.js-ClPPfcHj.js';
11
- import '../../chunks/internal2.js-627EG4am.js';
11
+ import '../../chunks/internal2.js--RCssYze.js';
12
12
  import '../../chunks/legacy-client.js-DJmDw3Zx.js';
13
13
  import '../../chunks/utils.js-BIlHjgGW.js';
14
14
 
15
15
  //#region src/lib/format.ts
16
16
  /**
17
- * Formatting helpers for the watch-stream UI. Every function here is pure so it can be unit
17
+ * Formatting helpers for the watch-tail UI. Every function here is pure so it can be unit
18
18
  * tested without a DOM.
19
19
  */
20
20
  /** Placeholder shown when a timestamp is missing or not a number. */
@@ -158,12 +158,12 @@ function EndpointBadge($$renderer, $$props) {
158
158
  */
159
159
  /** `localStorage` keys, prefixed so they are easy to spot in a browser. */
160
160
  var STORAGE_KEYS = {
161
- sidebarWidth: "watch-stream:sidebar-width",
162
- prefixWidth: "watch-stream:prefix-width",
163
- wrap: "watch-stream:wrap",
164
- jsonView: "watch-stream:json-view",
165
- chartOpen: "watch-stream:chart-open",
166
- groupRequests: "watch-stream:group-requests"
161
+ sidebarWidth: "watch-tail:sidebar-width",
162
+ prefixWidth: "watch-tail:prefix-width",
163
+ wrap: "watch-tail:wrap",
164
+ jsonView: "watch-tail:json-view",
165
+ chartOpen: "watch-tail:chart-open",
166
+ groupRequests: "watch-tail:group-requests"
167
167
  };
168
168
  /** Default width of the group-list pane, in rem (matches the original layout). */
169
169
  var SIDEBAR_WIDTH = {
@@ -207,7 +207,7 @@ function EventScatterPanel($$renderer, $$props) {
207
207
  * The real loader: a dynamic import, which is what keeps layerchart out of the
208
208
  * initial bundle. It only runs in the browser, and only once the panel is open.
209
209
  */
210
- const loadChartModule = () => import('../../chunks/EventScatter.js-D3Jaw_Cw.js');
210
+ const loadChartModule = () => import('../../chunks/EventScatter.js-Du7AJN9m.js');
211
211
  /** Bucketed counts for the window. */
212
212
  /** Inclusive start of the window, epoch ms. */
213
213
  /** Inclusive end of the window, epoch ms. */
@@ -219,7 +219,7 @@ function EventScatterPanel($$renderer, $$props) {
219
219
  /** Chart height in px. */
220
220
  /** Start open, which is also what the first visit uses. */
221
221
  /** Chart module loader; defaults to the dynamic import. */
222
- let { points = [], from = 0, to = 0, bucketMs = 0, groups = [], loading = false, byRequest = true, onBrush, height = 200, open = true, loadChart = loadChartModule } = $$props;
222
+ let { metric = "count", onMetricChange, points = [], from = 0, to = 0, bucketMs = 0, groups = [], loading = false, byRequest = true, onBrush, height = 200, open = true, loadChart = loadChartModule } = $$props;
223
223
  let expanded = derived(() => open);
224
224
  /** Totals and labels per level, in severity order. */
225
225
  let levelGroups = derived(() => groupByLevel(points));
@@ -230,23 +230,32 @@ function EventScatterPanel($$renderer, $$props) {
230
230
  /** True when there is something to draw. */
231
231
  let hasPoints = derived(() => points.length > 0);
232
232
  /** What one mark stands for, which is what the totals count. */
233
- let unit = derived(() => byRequest ? "requests" : "events");
233
+ let unit = derived(() => metric === "duration" || byRequest ? "requests" : "events");
234
234
  /** Clears the brush, for the host's Reset zoom control. */
235
235
  function reset() {
236
236
  onBrush?.(null);
237
237
  }
238
- $$renderer.push(`<section class="flex min-w-0 flex-col gap-1 rounded-lg border border-neutral-800 bg-neutral-950/60 p-2" data-testid="event-scatter" aria-label="Events over time"><div class="flex flex-wrap items-center gap-x-3 gap-y-1 px-1 text-[0.6875rem]"><button type="button"${attr("aria-expanded", expanded())}${attr("title", expanded() ? "Hide the chart" : "Show the chart")} data-testid="scatter-toggle" class="flex items-center gap-1 rounded-md border border-neutral-800 bg-neutral-900 px-2 py-0.5 font-semibold uppercase tracking-wider text-neutral-400 transition-colors hover:border-neutral-700 hover:text-neutral-200"><span aria-hidden="true">${escape_html(expanded() ? "▾" : "▸")}</span> Events over time</button> <span class="text-neutral-400" data-testid="scatter-summary">${escape_html(formatCount(totalEvents()))}
239
- ${escape_html(unit())} in ${escape_html(formatCount(bucketCount()))} buckets</span> `);
238
+ $$renderer.push(`<section class="flex min-w-0 flex-col gap-1 rounded-lg border border-neutral-800 bg-neutral-950/60 p-2" data-testid="event-scatter"${attr("aria-label", metric === "duration" ? "Request duration over time" : "Events over time")}><div class="flex flex-wrap items-center gap-x-3 gap-y-1 px-1 text-[0.6875rem]"><button type="button"${attr("aria-expanded", expanded())}${attr("title", expanded() ? "Hide the chart" : "Show the chart")} data-testid="scatter-toggle" class="flex items-center gap-1 rounded-md border border-neutral-800 bg-neutral-900 px-2 py-0.5 font-semibold uppercase tracking-wider text-neutral-400 transition-colors hover:border-neutral-700 hover:text-neutral-200"><span aria-hidden="true">${escape_html(expanded() ? "▾" : "▸")}</span> ${escape_html(metric === "duration" ? "Request duration" : "Events over time")}</button> <div role="group" aria-label="Chart metric" class="flex rounded-md border border-neutral-800 p-0.5"><!--[-->`);
239
+ const each_array = ensure_array_like(["count", "duration"]);
240
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
241
+ let choice = each_array[$$index];
242
+ $$renderer.push(`<button type="button"${attr("data-testid", `chart-metric-${choice}`)}${attr("aria-pressed", metric === choice)}${attr_class(`rounded px-2 py-0.5 transition-colors ${metric === choice ? "bg-sky-950 text-sky-300" : "text-neutral-400 hover:text-neutral-200"}`)}>${escape_html(choice === "count" ? "Count" : "Duration (ms)")}</button>`);
243
+ }
244
+ $$renderer.push(`<!--]--></div> <span class="text-neutral-400" data-testid="scatter-summary">${escape_html(formatCount(totalEvents()))}
245
+ ${escape_html(unit())}`);
246
+ if (metric === "count") $$renderer.push(`<!--[0--> in ${escape_html(formatCount(bucketCount()))} buckets`);
247
+ else $$renderer.push("<!--[-1-->");
248
+ $$renderer.push(`<!--]--></span> `);
240
249
  if (groups.length > 1) $$renderer.push(`<!--[0--><span class="text-neutral-500" data-testid="scatter-groups">across ${escape_html(groups.length)} groups</span>`);
241
250
  else $$renderer.push("<!--[-1-->");
242
251
  $$renderer.push(`<!--]--> <!--[-->`);
243
- const each_array = ensure_array_like(levelGroups());
244
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
245
- let entry = each_array[$$index];
252
+ const each_array_1 = ensure_array_like(levelGroups());
253
+ for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
254
+ let entry = each_array_1[$$index_1];
246
255
  $$renderer.push(`<span class="flex items-center gap-1 text-neutral-400"${attr("data-testid", `scatter-legend-${stringify(entry.level)}`)}><span class="inline-block h-2 w-2 rounded-full"${attr_style(`background-color: ${stringify(SERIES_LEVEL_COLOR[entry.level])}`)}></span> ${escape_html(entry.label)} <span class="text-neutral-500">${escape_html(formatCount(entry.events))}</span></span>`);
247
256
  }
248
257
  $$renderer.push(`<!--]--> `);
249
- if (loading && expanded()) $$renderer.push(`<!--[0--><span class="text-amber-300" data-testid="scatter-loading">counting…</span>`);
258
+ if (loading && expanded()) $$renderer.push(`<!--[0--><span class="text-amber-300" data-testid="scatter-loading">loading…</span>`);
250
259
  else $$renderer.push("<!--[-1-->");
251
260
  $$renderer.push(`<!--]--> `);
252
261
  if (expanded()) {
@@ -257,11 +266,15 @@ function EventScatterPanel($$renderer, $$props) {
257
266
  $$renderer.push(`<!--]--></div> `);
258
267
  if (expanded()) {
259
268
  $$renderer.push("<!--[0-->");
269
+ if (metric === "duration") $$renderer.push(`<!--[0--><p class="px-1 text-[0.6875rem] text-neutral-500" data-testid="duration-note">Observed duration (ms) · last event + its duration − first event · partial requests may
270
+ appear shorter</p>`);
271
+ else $$renderer.push("<!--[-1-->");
272
+ $$renderer.push(`<!--]--> `);
260
273
  if (hasPoints()) {
261
274
  $$renderer.push("<!--[1-->");
262
275
  $$renderer.push(`<!--[-1--><div class="w-full animate-pulse rounded bg-neutral-900/60"${attr_style(`height: ${stringify(height)}px`)}></div>`);
263
276
  $$renderer.push(`<!--]-->`);
264
- } else if (!loading) $$renderer.push(`<!--[2--><p class="px-1 py-6 text-xs text-neutral-500" data-testid="scatter-empty">No events in this window yet.</p>`);
277
+ } else if (!loading) $$renderer.push(`<!--[2--><p class="px-1 py-6 text-xs text-neutral-500" data-testid="scatter-empty">${escape_html(metric === "duration" ? "No requests with a request ID in this window yet." : "No events in this window yet.")}</p>`);
265
278
  else $$renderer.push("<!--[-1-->");
266
279
  $$renderer.push(`<!--]-->`);
267
280
  } else $$renderer.push("<!--[-1-->");
@@ -324,7 +337,7 @@ function RangeControls($$renderer, $$props) {
324
337
  //#endregion
325
338
  //#region src/lib/groups-client.ts
326
339
  /**
327
- * Browser-side fetch helpers for the watch-stream JSON API (`/api/health`, `/api/regions`,
340
+ * Browser-side fetch helpers for the watch-tail JSON API (`/api/health`, `/api/regions`,
328
341
  * `/api/log-groups`, `/api/archive`). Every helper throws {@link ApiError} on a non-2xx response so
329
342
  * the UI can show the API `error` message instead of an opaque failure.
330
343
  */
@@ -377,6 +390,7 @@ function buildSeriesUrl(query) {
377
390
  if (typeof query.to === "number" && Number.isFinite(query.to)) search.set("to", String(Math.round(query.to)));
378
391
  const levels = (query.levels ?? []).filter((level) => level.length > 0);
379
392
  if (levels.length > 0) search.set("level", levels.join(","));
393
+ if (query.metric) search.set("metric", query.metric);
380
394
  if (query.by === "request" || query.by === "event") search.set("by", query.by);
381
395
  if (typeof query.bucketMs === "number" && Number.isFinite(query.bucketMs) && query.bucketMs > 0) search.set("bucket", String(Math.round(query.bucketMs)));
382
396
  return `/api/series?${search.toString()}`;
@@ -424,6 +438,16 @@ async function getJson(url, options) {
424
438
  function fetchLogGroups(query) {
425
439
  return getJson(buildLogGroupsUrl(query), query);
426
440
  }
441
+ /**
442
+ * `GET /api/archive` - what the local DuckDB archive holds.
443
+ *
444
+ * The route answers 200 even when the archive is off or unreadable, so a failed
445
+ * request means the API itself is unreachable and the caller should just hide
446
+ * the archive view.
447
+ */
448
+ function fetchArchiveStatus(options = {}) {
449
+ return getJson(`/api/archive${options.region ? `?${new URLSearchParams({ region: options.region })}` : ""}`, options);
450
+ }
427
451
  /** Message shown when a region has no log groups at all. */
428
452
  function noGroupsMessage(region) {
429
453
  return `No log groups found in ${region}. Start floci and run \`pnpm seed\` to create sample groups.`;
@@ -450,7 +474,7 @@ function describeGroupsError(region, error) {
450
474
  const details = error.details ? ` ${error.details}` : "";
451
475
  return `Could not list log groups in ${region}: ${trimSentence(error.message)}.${details}`;
452
476
  }
453
- return `Could not reach the watch-stream API for ${region}. ${error instanceof Error && error.message !== "" ? error.message : String(error)}`;
477
+ return `Could not reach the watch-tail API for ${region}. ${error instanceof Error && error.message !== "" ? error.message : String(error)}`;
454
478
  }
455
479
  /** Adds group and region context to a stream error payload. */
456
480
  function describeStreamError(region, group, message) {
@@ -1275,6 +1299,8 @@ function _page($$renderer, $$props) {
1275
1299
  let groupsLoading = false;
1276
1300
  let groupsError = null;
1277
1301
  let endpoint = null;
1302
+ /** Last `/api/archive` answer, or `null` when it could not be read. */
1303
+ let archiveStatus = null;
1278
1304
  let filter = "";
1279
1305
  let autoScroll = true;
1280
1306
  /**
@@ -1297,10 +1323,12 @@ function _page($$renderer, $$props) {
1297
1323
  let seriesPoints = [];
1298
1324
  /** True while the archive counts are being fetched. */
1299
1325
  let seriesLoading = false;
1326
+ let chartMetric = "count";
1327
+ let seriesRequest = 0;
1300
1328
  /** True only when the local archive reports that it can be read. */
1301
- let archiveAvailable = derived(() => false);
1329
+ let archiveAvailable = derived(() => archiveStatus?.available === true);
1302
1330
  /** Database file behind the archive, or `null` when it is unknown. */
1303
- let archivePath = derived(() => null);
1331
+ let archivePath = derived(() => archiveStatus?.path ?? null);
1304
1332
  /** Tooltip of the archive badge in the header. */
1305
1333
  let archiveTitle = derived(() => describeArchive(archivePath()));
1306
1334
  /** Sidebar width in pixels; the layout default is 22rem. */
@@ -1317,6 +1345,19 @@ function _page($$renderer, $$props) {
1317
1345
  } catch {}
1318
1346
  }
1319
1347
  /**
1348
+ * Reads `GET /api/archive`. The route answers 200 even for an unusable archive, so a failure
1349
+ * here only means the API is unreachable; the archive view stays hidden in that case.
1350
+ */
1351
+ async function loadArchiveStatus() {
1352
+ const target = region;
1353
+ try {
1354
+ const status = await fetchArchiveStatus({ region: target });
1355
+ if (region === target) archiveStatus = status;
1356
+ } catch {
1357
+ if (region === target) archiveStatus = null;
1358
+ }
1359
+ }
1360
+ /**
1320
1361
  * Loads the log groups of a region from the active source; a newer region or source change wins
1321
1362
  * the race. The CloudWatch URL is left exactly as it was, so only the archive names its source.
1322
1363
  */
@@ -1417,6 +1458,7 @@ function _page($$renderer, $$props) {
1417
1458
  selectedGroups = [];
1418
1459
  seriesPoints = [];
1419
1460
  syncUrl(next, []);
1461
+ loadArchiveStatus();
1420
1462
  loadGroups(next);
1421
1463
  }
1422
1464
  /** Replaces the view parameters in the address bar. */
@@ -1502,13 +1544,15 @@ function _page($$renderer, $$props) {
1502
1544
  * streamed are bucketed here. Both end up as the same points.
1503
1545
  */
1504
1546
  async function loadSeries() {
1547
+ const request = ++seriesRequest;
1548
+ seriesLoading = false;
1505
1549
  if (selectedGroups.length === 0 || region === "") {
1506
1550
  seriesPoints = [];
1507
1551
  return;
1508
1552
  }
1509
1553
  const { from, to } = chartWindow();
1510
1554
  if (source !== "archive") {
1511
- seriesPoints = bucketEvents(stream.lines, {
1555
+ seriesPoints = (chartMetric === "duration" ? requestDurations : bucketEvents)(stream.lines, {
1512
1556
  from,
1513
1557
  to,
1514
1558
  bucketMs: chartBucketMs(from, to),
@@ -1519,19 +1563,22 @@ function _page($$renderer, $$props) {
1519
1563
  return;
1520
1564
  }
1521
1565
  seriesLoading = true;
1566
+ seriesPoints = [];
1522
1567
  try {
1523
- seriesPoints = (await fetchSeries({
1568
+ const series = await fetchSeries({
1524
1569
  region,
1525
1570
  groups: selectedGroups,
1526
1571
  from,
1527
1572
  to,
1528
1573
  levels: levelFilter === null ? [] : [levelFilter],
1529
- by: groupRequests ? "request" : "event"
1530
- })).points;
1574
+ by: groupRequests ? "request" : "event",
1575
+ metric: chartMetric
1576
+ });
1577
+ if (request === seriesRequest) seriesPoints = series.points;
1531
1578
  } catch {
1532
- seriesPoints = [];
1579
+ if (request === seriesRequest) seriesPoints = [];
1533
1580
  } finally {
1534
- seriesLoading = false;
1581
+ if (request === seriesRequest) seriesLoading = false;
1535
1582
  }
1536
1583
  }
1537
1584
  $$renderer.push(`<div class="flex flex-wrap items-center gap-x-3 gap-y-2"><span class="text-[0.6875rem] font-semibold uppercase tracking-wider text-neutral-500">Watching</span> <span class="max-w-[22rem] truncate rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 font-mono text-xs text-neutral-200">${escape_html(selectedGroup() ?? "no group selected")}</span> <span class="text-xs text-neutral-500">in</span> <span class="font-mono text-xs text-neutral-300">${escape_html(region === "" ? "resolving region…" : region)}</span> `);
@@ -1600,6 +1647,8 @@ function _page($$renderer, $$props) {
1600
1647
  bucketMs: chartBucketMs(chartWindow().from, chartWindow().to),
1601
1648
  groups: selectedGroups,
1602
1649
  byRequest: groupRequests,
1650
+ metric: chartMetric,
1651
+ onMetricChange: (metric) => chartMetric = metric,
1603
1652
  loading: seriesLoading,
1604
1653
  onBrush: applyBrush
1605
1654
  });
@@ -1638,4 +1687,4 @@ function _page($$renderer, $$props) {
1638
1687
  }
1639
1688
 
1640
1689
  export { _page as default };
1641
- //# sourceMappingURL=_page.svelte.js-BwuzE25P.js.map
1690
+ //# sourceMappingURL=_page.svelte.js-hG1agdw-.js.map