watch-tail 0.6.2 → 0.8.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 (275) hide show
  1. package/README.md +37 -15
  2. package/build/client/_app/immutable/assets/0.zDk3x0WE.css +2 -0
  3. package/build/client/_app/immutable/assets/0.zDk3x0WE.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.zDk3x0WE.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/{EventScatter.DA5sZ1c0.css → EventScatter.CCk6ByS3.css} +1 -1
  6. package/build/client/_app/immutable/assets/EventScatter.CCk6ByS3.css.br +0 -0
  7. package/build/client/_app/immutable/assets/EventScatter.CCk6ByS3.css.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{8x_7TBuS.js → 9z7cmAWt.js} +1 -1
  9. package/build/client/_app/immutable/chunks/9z7cmAWt.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/9z7cmAWt.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{D1Hr4tKw.js → B26Z2DQX.js} +1 -1
  12. package/build/client/_app/immutable/chunks/B26Z2DQX.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/B26Z2DQX.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{KA1QvXmu.js → B5kJ4QGS.js} +1 -1
  15. package/build/client/_app/immutable/chunks/B5kJ4QGS.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/B5kJ4QGS.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{sf5kQ3yV.js → BF1MBUT7.js} +1 -1
  18. package/build/client/_app/immutable/chunks/BF1MBUT7.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/BF1MBUT7.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/{F4LqKrLs.js → BJEa1AAY.js} +5 -5
  21. package/build/client/_app/immutable/chunks/BJEa1AAY.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/BJEa1AAY.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/{w7c5E2ms.js → BKpbhYu9.js} +1 -1
  24. package/build/client/_app/immutable/chunks/BKpbhYu9.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/BKpbhYu9.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/{DtV-MjyX.js → BVlqiKgb.js} +1 -1
  27. package/build/client/_app/immutable/chunks/BVlqiKgb.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/BVlqiKgb.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/{DWm-CGbg.js → BWGaSL1l.js} +1 -1
  30. package/build/client/_app/immutable/chunks/BWGaSL1l.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/BWGaSL1l.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/{BNDRPiSt.js → B_Z4tBMl.js} +1 -1
  33. package/build/client/_app/immutable/chunks/B_Z4tBMl.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/B_Z4tBMl.js.gz +0 -0
  35. package/build/client/_app/immutable/chunks/{BWDKMHXq.js → Bo46v6NJ.js} +1 -1
  36. package/build/client/_app/immutable/chunks/Bo46v6NJ.js.br +0 -0
  37. package/build/client/_app/immutable/chunks/Bo46v6NJ.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/{BKpsnTLG.js → BpDPh_kG.js} +1 -1
  39. package/build/client/_app/immutable/chunks/BpDPh_kG.js.br +0 -0
  40. package/build/client/_app/immutable/chunks/BpDPh_kG.js.gz +0 -0
  41. package/build/client/_app/immutable/chunks/{DQCjzVyz.js → BzFqst10.js} +1 -1
  42. package/build/client/_app/immutable/chunks/BzFqst10.js.br +0 -0
  43. package/build/client/_app/immutable/chunks/BzFqst10.js.gz +0 -0
  44. package/build/client/_app/immutable/chunks/{KsLFdNDs.js → C3JYac4u.js} +1 -1
  45. package/build/client/_app/immutable/chunks/C3JYac4u.js.br +0 -0
  46. package/build/client/_app/immutable/chunks/C3JYac4u.js.gz +0 -0
  47. package/build/client/_app/immutable/chunks/{CG0TPRkn.js → CBzF0p8K.js} +1 -1
  48. package/build/client/_app/immutable/chunks/CBzF0p8K.js.br +0 -0
  49. package/build/client/_app/immutable/chunks/CBzF0p8K.js.gz +0 -0
  50. package/build/client/_app/immutable/chunks/{1cmfrS0o.js → CM9QBz5w.js} +1 -1
  51. package/build/client/_app/immutable/chunks/CM9QBz5w.js.br +0 -0
  52. package/build/client/_app/immutable/chunks/CM9QBz5w.js.gz +0 -0
  53. package/build/client/_app/immutable/chunks/{DznDQzx1.js → CZqQKfBo.js} +1 -1
  54. package/build/client/_app/immutable/chunks/CZqQKfBo.js.br +0 -0
  55. package/build/client/_app/immutable/chunks/CZqQKfBo.js.gz +0 -0
  56. package/build/client/_app/immutable/chunks/Cr-NovV3.js +5 -0
  57. package/build/client/_app/immutable/chunks/Cr-NovV3.js.br +0 -0
  58. package/build/client/_app/immutable/chunks/Cr-NovV3.js.gz +0 -0
  59. package/build/client/_app/immutable/chunks/{DqJI6J5U.js → Cz6pnyFa.js} +1 -1
  60. package/build/client/_app/immutable/chunks/Cz6pnyFa.js.br +0 -0
  61. package/build/client/_app/immutable/chunks/Cz6pnyFa.js.gz +0 -0
  62. package/build/client/_app/immutable/chunks/{CBRk0OGa.js → D2fsDTN5.js} +1 -1
  63. package/build/client/_app/immutable/chunks/D2fsDTN5.js.br +0 -0
  64. package/build/client/_app/immutable/chunks/D2fsDTN5.js.gz +0 -0
  65. package/build/client/_app/immutable/chunks/{CpeJ2iPd.js → DBcd9YbV.js} +1 -1
  66. package/build/client/_app/immutable/chunks/DBcd9YbV.js.br +0 -0
  67. package/build/client/_app/immutable/chunks/DBcd9YbV.js.gz +0 -0
  68. package/build/client/_app/immutable/chunks/{OoMmWNOu.js → DC_milOQ.js} +1 -1
  69. package/build/client/_app/immutable/chunks/DC_milOQ.js.br +0 -0
  70. package/build/client/_app/immutable/chunks/DC_milOQ.js.gz +0 -0
  71. package/build/client/_app/immutable/chunks/{CIDBs8t6.js → DNiEIfDZ.js} +1 -1
  72. package/build/client/_app/immutable/chunks/DNiEIfDZ.js.br +0 -0
  73. package/build/client/_app/immutable/chunks/DNiEIfDZ.js.gz +0 -0
  74. package/build/client/_app/immutable/chunks/{Dc9It0QB.js → DWdskt_Y.js} +1 -1
  75. package/build/client/_app/immutable/chunks/DWdskt_Y.js.br +0 -0
  76. package/build/client/_app/immutable/chunks/DWdskt_Y.js.gz +0 -0
  77. package/build/client/_app/immutable/chunks/{DYDQbI6D.js → DsMQ6HVM.js} +1 -1
  78. package/build/client/_app/immutable/chunks/DsMQ6HVM.js.br +0 -0
  79. package/build/client/_app/immutable/chunks/DsMQ6HVM.js.gz +0 -0
  80. package/build/client/_app/immutable/chunks/Dxeyu30B.js +1 -0
  81. package/build/client/_app/immutable/chunks/Dxeyu30B.js.br +1 -0
  82. package/build/client/_app/immutable/chunks/Dxeyu30B.js.gz +0 -0
  83. package/build/client/_app/immutable/chunks/{CfPyeeq3.js → H4Anb6kP.js} +1 -1
  84. package/build/client/_app/immutable/chunks/H4Anb6kP.js.br +0 -0
  85. package/build/client/_app/immutable/chunks/H4Anb6kP.js.gz +0 -0
  86. package/build/client/_app/immutable/chunks/MDK8mPOo.js +1 -0
  87. package/build/client/_app/immutable/chunks/MDK8mPOo.js.br +0 -0
  88. package/build/client/_app/immutable/chunks/MDK8mPOo.js.gz +0 -0
  89. package/build/client/_app/immutable/chunks/{D0IrjYE5.js → X7CLxGgV.js} +1 -1
  90. package/build/client/_app/immutable/chunks/X7CLxGgV.js.br +0 -0
  91. package/build/client/_app/immutable/chunks/X7CLxGgV.js.gz +0 -0
  92. package/build/client/_app/immutable/chunks/{D6rwn6Ed.js → cK-f5ch_.js} +1 -1
  93. package/build/client/_app/immutable/chunks/cK-f5ch_.js.br +2 -0
  94. package/build/client/_app/immutable/chunks/cK-f5ch_.js.gz +0 -0
  95. package/build/client/_app/immutable/chunks/{UsO0MS14.js → mhYP0ygJ.js} +1 -1
  96. package/build/client/_app/immutable/chunks/mhYP0ygJ.js.br +0 -0
  97. package/build/client/_app/immutable/chunks/mhYP0ygJ.js.gz +0 -0
  98. package/build/client/_app/immutable/chunks/{AAWh0-tL.js → vB0ff9Sn.js} +1 -1
  99. package/build/client/_app/immutable/chunks/vB0ff9Sn.js.br +0 -0
  100. package/build/client/_app/immutable/chunks/vB0ff9Sn.js.gz +0 -0
  101. package/build/client/_app/immutable/entry/{app.FQLd-NC-.js → app.CinEZGkq.js} +2 -2
  102. package/build/client/_app/immutable/entry/app.CinEZGkq.js.br +0 -0
  103. package/build/client/_app/immutable/entry/app.CinEZGkq.js.gz +0 -0
  104. package/build/client/_app/immutable/entry/start.B7e0-3Hk.js +1 -0
  105. package/build/client/_app/immutable/entry/start.B7e0-3Hk.js.br +1 -0
  106. package/build/client/_app/immutable/entry/start.B7e0-3Hk.js.gz +0 -0
  107. package/build/client/_app/immutable/nodes/{0.BN3NguWs.js → 0.CFO0Fthy.js} +1 -1
  108. package/build/client/_app/immutable/nodes/0.CFO0Fthy.js.br +0 -0
  109. package/build/client/_app/immutable/nodes/{0.BN3NguWs.js.gz → 0.CFO0Fthy.js.gz} +0 -0
  110. package/build/client/_app/immutable/nodes/{1.5EZfoLCg.js → 1.kGO9dV9J.js} +1 -1
  111. package/build/client/_app/immutable/nodes/1.kGO9dV9J.js.br +0 -0
  112. package/build/client/_app/immutable/nodes/1.kGO9dV9J.js.gz +0 -0
  113. package/build/client/_app/immutable/nodes/2.eGSziRQX.js +5 -0
  114. package/build/client/_app/immutable/nodes/2.eGSziRQX.js.br +0 -0
  115. package/build/client/_app/immutable/nodes/2.eGSziRQX.js.gz +0 -0
  116. package/build/client/_app/version.json +1 -1
  117. package/build/client/_app/version.json.br +0 -0
  118. package/build/client/_app/version.json.gz +0 -0
  119. package/build/handler.js +4 -4
  120. package/build/index.js +4 -4
  121. package/build/server/chunks/chunks/{EventScatter.js-D3Jaw_Cw.js → EventScatter.js-CG0RcOU6.js} +82 -20
  122. package/build/server/chunks/chunks/{EventScatter.js-D3Jaw_Cw.js.map → EventScatter.js-CG0RcOU6.js.map} +1 -1
  123. package/build/server/chunks/chunks/{archive.js-C2D-5edp.js → archive.js-D2jtMmDo.js} +134 -26
  124. package/build/server/chunks/chunks/archive.js-D2jtMmDo.js.map +1 -0
  125. package/build/server/chunks/chunks/{aws.js-DkPqAybc.js → env2.js-C5BgBJDY.js} +63 -6
  126. package/build/server/chunks/chunks/env2.js-C5BgBJDY.js.map +1 -0
  127. package/build/server/chunks/chunks/identity.js-NmGXxBz3.js +22 -0
  128. package/build/server/chunks/chunks/identity.js-NmGXxBz3.js.map +1 -0
  129. package/build/server/chunks/chunks/{internal2.js-627EG4am.js → internal2.js-BMcEVxqN.js} +2 -2
  130. package/build/server/chunks/chunks/{internal2.js-627EG4am.js.map → internal2.js-BMcEVxqN.js.map} +1 -1
  131. package/build/server/chunks/chunks/{level-filter.js-B3o2hyWD.js → level-filter.js-D9MNrew3.js} +2 -2
  132. package/build/server/chunks/chunks/{level-filter.js-B3o2hyWD.js.map → level-filter.js-D9MNrew3.js.map} +1 -1
  133. package/build/server/chunks/chunks/{log-buffer.js-BI_gQOls.js → log-buffer.js-A9FA-Qv8.js} +18 -3
  134. package/build/server/chunks/chunks/log-buffer.js-A9FA-Qv8.js.map +1 -0
  135. package/build/server/chunks/chunks/{regions.js-IQPMyP5C.js → regions.js-COf7DgnH.js} +3 -3
  136. package/build/server/chunks/chunks/regions.js-COf7DgnH.js.map +1 -0
  137. package/build/server/chunks/chunks/{series-buckets.js-BjigySff.js → series-buckets.js-DFGWkob5.js} +34 -8
  138. package/build/server/chunks/chunks/series-buckets.js-DFGWkob5.js.map +1 -0
  139. package/build/server/chunks/chunks/{state.js-DbqJPX0Y.js → state.js-vZj9lo1I.js} +2 -2
  140. package/build/server/chunks/chunks/{state.js-DbqJPX0Y.js.map → state.js-vZj9lo1I.js.map} +1 -1
  141. package/build/server/chunks/entries/endpoints/api/archive/{_server.ts.js-83Ch7djd.js → _server.ts.js-C4hWyXuu.js} +17 -9
  142. package/build/server/chunks/entries/endpoints/api/archive/_server.ts.js-C4hWyXuu.js.map +1 -0
  143. package/build/server/chunks/entries/endpoints/api/health/{_server.ts.js-VctnBhIJ.js → _server.ts.js-C5tfrpmC.js} +4 -5
  144. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-C5tfrpmC.js.map +1 -0
  145. package/build/server/chunks/entries/endpoints/api/identity/{_server.ts.js-Dt540Sio.js → _server.ts.js-PWRPScuN.js} +6 -24
  146. package/build/server/chunks/entries/endpoints/api/identity/_server.ts.js-PWRPScuN.js.map +1 -0
  147. package/build/server/chunks/entries/endpoints/api/log-groups/{_server.ts.js-drLgUdvB.js → _server.ts.js-D4y43Vwe.js} +14 -11
  148. package/build/server/chunks/entries/endpoints/api/log-groups/_server.ts.js-D4y43Vwe.js.map +1 -0
  149. package/build/server/chunks/entries/endpoints/api/regions/{_server.ts.js-CBqfN6Pg.js → _server.ts.js-9_g0ojki.js} +8 -9
  150. package/build/server/chunks/entries/endpoints/api/regions/_server.ts.js-9_g0ojki.js.map +1 -0
  151. package/build/server/chunks/entries/endpoints/api/series/{_server.ts.js-DOvBhEDU.js → _server.ts.js-DibT3Hjc.js} +34 -16
  152. package/build/server/chunks/entries/endpoints/api/series/_server.ts.js-DibT3Hjc.js.map +1 -0
  153. package/build/server/chunks/entries/endpoints/api/stream/{_server.ts.js-B9_-4ssJ.js → _server.ts.js-BxXw5K0R.js} +32 -20
  154. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-BxXw5K0R.js.map +1 -0
  155. package/build/server/chunks/entries/fallbacks/{error.svelte.js-B8dLO9gT.js → error.svelte.js-bokc4skC.js} +3 -3
  156. package/build/server/chunks/entries/fallbacks/{error.svelte.js-B8dLO9gT.js.map → error.svelte.js-bokc4skC.js.map} +1 -1
  157. package/build/server/chunks/entries/pages/{_layout.svelte.js-CBQpEToy.js → _layout.svelte.js-8U7ZeKYO.js} +3 -3
  158. package/build/server/chunks/entries/pages/_layout.svelte.js-8U7ZeKYO.js.map +1 -0
  159. package/build/server/chunks/entries/pages/{_page.svelte.js-BwuzE25P.js → _page.svelte.js-DRoSEPVH.js} +149 -41
  160. package/build/server/chunks/entries/pages/_page.svelte.js-DRoSEPVH.js.map +1 -0
  161. package/build/server/chunks/{handler-hlKcUyVP.js → handler-BkYErjbr.js} +3 -3
  162. package/build/server/chunks/{handler-hlKcUyVP.js.map → handler-BkYErjbr.js.map} +1 -1
  163. package/build/server/chunks/{index.js-BfPWKsz6.js → index.js-5mkIDcpy.js} +2 -2
  164. package/build/server/chunks/{index.js-BfPWKsz6.js.map → index.js-5mkIDcpy.js.map} +1 -1
  165. package/build/server/chunks/{manifest.js-uuijI5lm.js → manifest.js-BGoS-vRx.js} +12 -12
  166. package/build/server/chunks/{manifest.js-uuijI5lm.js.map → manifest.js-BGoS-vRx.js.map} +1 -1
  167. package/build/server/chunks/nodes/{0.js-CNFDDPj5.js → 0.js-BIj6k30n.js} +4 -4
  168. package/build/server/chunks/nodes/{0.js-CNFDDPj5.js.map → 0.js-BIj6k30n.js.map} +1 -1
  169. package/build/server/chunks/nodes/{1.js-bi9PXX_2.js → 1.js-BQibx33b.js} +3 -3
  170. package/build/server/chunks/nodes/{1.js-bi9PXX_2.js.map → 1.js-BQibx33b.js.map} +1 -1
  171. package/build/server/chunks/nodes/{2.js-3MYCPEqM.js → 2.js-CczDSPv9.js} +4 -4
  172. package/build/server/chunks/nodes/{2.js-3MYCPEqM.js.map → 2.js-CczDSPv9.js.map} +1 -1
  173. package/dist/cli/index.js +13 -6
  174. package/dist/cli/options.js +1 -1
  175. package/dist/cli/server.js +19 -4
  176. package/dist/lib/cli/aws.js +4 -4
  177. package/dist/lib/log-buffer.js +1 -1
  178. package/package.json +6 -6
  179. package/build/client/_app/immutable/assets/0.Dfts6BC4.css +0 -2
  180. package/build/client/_app/immutable/assets/0.Dfts6BC4.css.br +0 -0
  181. package/build/client/_app/immutable/assets/0.Dfts6BC4.css.gz +0 -0
  182. package/build/client/_app/immutable/assets/EventScatter.DA5sZ1c0.css.br +0 -0
  183. package/build/client/_app/immutable/assets/EventScatter.DA5sZ1c0.css.gz +0 -0
  184. package/build/client/_app/immutable/chunks/1cmfrS0o.js.br +0 -0
  185. package/build/client/_app/immutable/chunks/1cmfrS0o.js.gz +0 -0
  186. package/build/client/_app/immutable/chunks/8x_7TBuS.js.br +0 -0
  187. package/build/client/_app/immutable/chunks/8x_7TBuS.js.gz +0 -0
  188. package/build/client/_app/immutable/chunks/AAWh0-tL.js.br +0 -0
  189. package/build/client/_app/immutable/chunks/AAWh0-tL.js.gz +0 -0
  190. package/build/client/_app/immutable/chunks/BKpsnTLG.js.br +0 -0
  191. package/build/client/_app/immutable/chunks/BKpsnTLG.js.gz +0 -0
  192. package/build/client/_app/immutable/chunks/BNDRPiSt.js.br +0 -0
  193. package/build/client/_app/immutable/chunks/BNDRPiSt.js.gz +0 -0
  194. package/build/client/_app/immutable/chunks/BWDKMHXq.js.br +0 -0
  195. package/build/client/_app/immutable/chunks/BWDKMHXq.js.gz +0 -0
  196. package/build/client/_app/immutable/chunks/BjxZ_neZ.js +0 -5
  197. package/build/client/_app/immutable/chunks/BjxZ_neZ.js.br +0 -0
  198. package/build/client/_app/immutable/chunks/BjxZ_neZ.js.gz +0 -0
  199. package/build/client/_app/immutable/chunks/CBRk0OGa.js.br +0 -0
  200. package/build/client/_app/immutable/chunks/CBRk0OGa.js.gz +0 -0
  201. package/build/client/_app/immutable/chunks/CG0TPRkn.js.br +0 -0
  202. package/build/client/_app/immutable/chunks/CG0TPRkn.js.gz +0 -0
  203. package/build/client/_app/immutable/chunks/CGReuhGk.js +0 -1
  204. package/build/client/_app/immutable/chunks/CGReuhGk.js.br +0 -1
  205. package/build/client/_app/immutable/chunks/CGReuhGk.js.gz +0 -0
  206. package/build/client/_app/immutable/chunks/CIDBs8t6.js.br +0 -0
  207. package/build/client/_app/immutable/chunks/CIDBs8t6.js.gz +0 -0
  208. package/build/client/_app/immutable/chunks/CfPyeeq3.js.br +0 -0
  209. package/build/client/_app/immutable/chunks/CfPyeeq3.js.gz +0 -0
  210. package/build/client/_app/immutable/chunks/CpeJ2iPd.js.br +0 -0
  211. package/build/client/_app/immutable/chunks/CpeJ2iPd.js.gz +0 -0
  212. package/build/client/_app/immutable/chunks/D0IrjYE5.js.br +0 -0
  213. package/build/client/_app/immutable/chunks/D0IrjYE5.js.gz +0 -0
  214. package/build/client/_app/immutable/chunks/D1Hr4tKw.js.br +0 -0
  215. package/build/client/_app/immutable/chunks/D1Hr4tKw.js.gz +0 -0
  216. package/build/client/_app/immutable/chunks/D6rwn6Ed.js.br +0 -1
  217. package/build/client/_app/immutable/chunks/D6rwn6Ed.js.gz +0 -0
  218. package/build/client/_app/immutable/chunks/DQCjzVyz.js.br +0 -0
  219. package/build/client/_app/immutable/chunks/DQCjzVyz.js.gz +0 -0
  220. package/build/client/_app/immutable/chunks/DWm-CGbg.js.br +0 -0
  221. package/build/client/_app/immutable/chunks/DWm-CGbg.js.gz +0 -0
  222. package/build/client/_app/immutable/chunks/DYDQbI6D.js.br +0 -0
  223. package/build/client/_app/immutable/chunks/DYDQbI6D.js.gz +0 -0
  224. package/build/client/_app/immutable/chunks/Dc9It0QB.js.br +0 -0
  225. package/build/client/_app/immutable/chunks/Dc9It0QB.js.gz +0 -0
  226. package/build/client/_app/immutable/chunks/DkQY3T0m.js +0 -1
  227. package/build/client/_app/immutable/chunks/DkQY3T0m.js.br +0 -0
  228. package/build/client/_app/immutable/chunks/DkQY3T0m.js.gz +0 -0
  229. package/build/client/_app/immutable/chunks/DqJI6J5U.js.br +0 -0
  230. package/build/client/_app/immutable/chunks/DqJI6J5U.js.gz +0 -0
  231. package/build/client/_app/immutable/chunks/DtV-MjyX.js.br +0 -0
  232. package/build/client/_app/immutable/chunks/DtV-MjyX.js.gz +0 -0
  233. package/build/client/_app/immutable/chunks/DznDQzx1.js.br +0 -0
  234. package/build/client/_app/immutable/chunks/DznDQzx1.js.gz +0 -0
  235. package/build/client/_app/immutable/chunks/F4LqKrLs.js.br +0 -0
  236. package/build/client/_app/immutable/chunks/F4LqKrLs.js.gz +0 -0
  237. package/build/client/_app/immutable/chunks/KA1QvXmu.js.br +0 -0
  238. package/build/client/_app/immutable/chunks/KA1QvXmu.js.gz +0 -0
  239. package/build/client/_app/immutable/chunks/KsLFdNDs.js.br +0 -0
  240. package/build/client/_app/immutable/chunks/KsLFdNDs.js.gz +0 -0
  241. package/build/client/_app/immutable/chunks/OoMmWNOu.js.br +0 -0
  242. package/build/client/_app/immutable/chunks/OoMmWNOu.js.gz +0 -0
  243. package/build/client/_app/immutable/chunks/UsO0MS14.js.br +0 -0
  244. package/build/client/_app/immutable/chunks/UsO0MS14.js.gz +0 -0
  245. package/build/client/_app/immutable/chunks/sf5kQ3yV.js.br +0 -0
  246. package/build/client/_app/immutable/chunks/sf5kQ3yV.js.gz +0 -0
  247. package/build/client/_app/immutable/chunks/w7c5E2ms.js.br +0 -0
  248. package/build/client/_app/immutable/chunks/w7c5E2ms.js.gz +0 -0
  249. package/build/client/_app/immutable/entry/app.FQLd-NC-.js.br +0 -0
  250. package/build/client/_app/immutable/entry/app.FQLd-NC-.js.gz +0 -0
  251. package/build/client/_app/immutable/entry/start.DqW_lChD.js +0 -1
  252. package/build/client/_app/immutable/entry/start.DqW_lChD.js.br +0 -1
  253. package/build/client/_app/immutable/entry/start.DqW_lChD.js.gz +0 -0
  254. package/build/client/_app/immutable/nodes/0.BN3NguWs.js.br +0 -0
  255. package/build/client/_app/immutable/nodes/1.5EZfoLCg.js.br +0 -0
  256. package/build/client/_app/immutable/nodes/1.5EZfoLCg.js.gz +0 -0
  257. package/build/client/_app/immutable/nodes/2.CbcDv2oO.js +0 -4
  258. package/build/client/_app/immutable/nodes/2.CbcDv2oO.js.br +0 -0
  259. package/build/client/_app/immutable/nodes/2.CbcDv2oO.js.gz +0 -0
  260. package/build/server/chunks/chunks/archive.js-C2D-5edp.js.map +0 -1
  261. package/build/server/chunks/chunks/aws.js-DkPqAybc.js.map +0 -1
  262. package/build/server/chunks/chunks/env2.js-CcIskxOZ.js +0 -60
  263. package/build/server/chunks/chunks/env2.js-CcIskxOZ.js.map +0 -1
  264. package/build/server/chunks/chunks/log-buffer.js-BI_gQOls.js.map +0 -1
  265. package/build/server/chunks/chunks/regions.js-IQPMyP5C.js.map +0 -1
  266. package/build/server/chunks/chunks/series-buckets.js-BjigySff.js.map +0 -1
  267. package/build/server/chunks/entries/endpoints/api/archive/_server.ts.js-83Ch7djd.js.map +0 -1
  268. package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-VctnBhIJ.js.map +0 -1
  269. package/build/server/chunks/entries/endpoints/api/identity/_server.ts.js-Dt540Sio.js.map +0 -1
  270. package/build/server/chunks/entries/endpoints/api/log-groups/_server.ts.js-drLgUdvB.js.map +0 -1
  271. package/build/server/chunks/entries/endpoints/api/regions/_server.ts.js-CBqfN6Pg.js.map +0 -1
  272. package/build/server/chunks/entries/endpoints/api/series/_server.ts.js-DOvBhEDU.js.map +0 -1
  273. package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-B9_-4ssJ.js.map +0 -1
  274. package/build/server/chunks/entries/pages/_layout.svelte.js-CBQpEToy.js.map +0 -1
  275. package/build/server/chunks/entries/pages/_page.svelte.js-BwuzE25P.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"internal2.js-627EG4am.js","sources":["../../../../.svelte-kit/output/server/chunks/internal2.js"],"sourcesContent":["import \"./index-server.js\";\nimport \"./internal.js\";\nimport { S as setContext, o as derived, u as render, vt as async_mode_flag } from \"./server.js\";\nimport { t as asClassComponent$1 } from \"./legacy-client.js\";\n//#region \\0virtual:__sveltekit/server\nvar read_implementation = null;\nfunction set_read_implementation(fn) {\n\tread_implementation = fn;\n}\nfunction set_manifest(_) {}\n//#endregion\n//#region node_modules/.pnpm/svelte@5.57.0/node_modules/svelte/src/legacy/legacy-server.js\n/** @import { SvelteComponent } from '../index.js' */\n/** @import { Csp } from '../server/public.js' */\n/** @typedef {{ head: string, html: string, css: { code: string, map: null }; hashes?: { script: `sha256-${string}`[] } }} LegacyRenderResult */\n/**\n* Takes a Svelte 5 component and returns a Svelte 4 compatible component constructor.\n*\n* @deprecated Use this only as a temporary solution to migrate your imperative component code to Svelte 5.\n*\n* @template {Record<string, any>} Props\n* @template {Record<string, any>} Exports\n* @template {Record<string, any>} Events\n* @template {Record<string, any>} Slots\n*\n* @param {SvelteComponent<Props, Events, Slots>} component\n* @returns {typeof SvelteComponent<Props, Events, Slots> & Exports}\n*/\nfunction asClassComponent(component) {\n\tconst component_constructor = asClassComponent$1(component);\n\t/** @type {(props?: {}, opts?: { $$slots?: {}; context?: Map<any, any>; csp?: Csp; transformError?: (error: unknown) => unknown }) => LegacyRenderResult & PromiseLike<LegacyRenderResult> } */\n\tconst _render = (props, { context, csp, transformError } = {}) => {\n\t\tconst result = render(component, {\n\t\t\tprops,\n\t\t\tcontext,\n\t\t\tcsp,\n\t\t\ttransformError\n\t\t});\n\t\tconst munged = Object.defineProperties({}, {\n\t\t\tcss: { value: {\n\t\t\t\tcode: \"\",\n\t\t\t\tmap: null\n\t\t\t} },\n\t\t\thead: { get: () => result.head },\n\t\t\thtml: { get: () => result.body },\n\t\t\tthen: { \n\t\t\t/**\n\t\t\t* this is not type-safe, but honestly it's the best I can do right now, and it's a straightforward function.\n\t\t\t*\n\t\t\t* @template TResult1\n\t\t\t* @template [TResult2=never]\n\t\t\t* @param { (value: LegacyRenderResult) => TResult1 } onfulfilled\n\t\t\t* @param { (reason: unknown) => TResult2 } onrejected\n\t\t\t*/\nvalue: (onfulfilled, onrejected) => {\n\t\t\t\tif (!async_mode_flag) {\n\t\t\t\t\tconst user_result = onfulfilled({\n\t\t\t\t\t\tcss: munged.css,\n\t\t\t\t\t\thead: munged.head,\n\t\t\t\t\t\thtml: munged.html\n\t\t\t\t\t});\n\t\t\t\t\treturn Promise.resolve(user_result);\n\t\t\t\t}\n\t\t\t\treturn result.then((result) => {\n\t\t\t\t\treturn onfulfilled({\n\t\t\t\t\t\tcss: munged.css,\n\t\t\t\t\t\thead: result.head,\n\t\t\t\t\t\thtml: result.body,\n\t\t\t\t\t\thashes: result.hashes\n\t\t\t\t\t});\n\t\t\t\t}, onrejected);\n\t\t\t} }\n\t\t});\n\t\treturn munged;\n\t};\n\tcomponent_constructor.render = _render;\n\treturn component_constructor;\n}\n//#endregion\n//#region .svelte-kit/generated/root.svelte\nfunction Root($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { stores, page, constructors, components = [], form, data_0 = null, data_1 = null } = $$props;\n\t\tsetContext(\"__svelte__\", stores);\n\t\tstores.page.set(page);\n\t\tconst Pyramid_1 = derived(() => constructors[1]);\n\t\tif (constructors[1]) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tconst Pyramid_0 = constructors[0];\n\t\t\tif (Pyramid_0) {\n\t\t\t\t$$renderer.push(\"<!--[-->\");\n\t\t\t\tPyramid_0($$renderer, {\n\t\t\t\t\tdata: data_0,\n\t\t\t\t\tform,\n\t\t\t\t\tparams: page.params,\n\t\t\t\t\tchildren: ($$renderer) => {\n\t\t\t\t\t\tif (Pyramid_1()) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[-->\");\n\t\t\t\t\t\t\tPyramid_1()($$renderer, {\n\t\t\t\t\t\t\t\tdata: data_1,\n\t\t\t\t\t\t\t\tform,\n\t\t\t\t\t\t\t\tparams: page.params\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[!-->\");\n\t\t\t\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t$$slots: { default: true }\n\t\t\t\t});\n\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[!-->\");\n\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t}\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\tconst Pyramid_0 = constructors[0];\n\t\t\tif (Pyramid_0) {\n\t\t\t\t$$renderer.push(\"<!--[-->\");\n\t\t\t\tPyramid_0($$renderer, {\n\t\t\t\t\tdata: data_0,\n\t\t\t\t\tform,\n\t\t\t\t\tparams: page.params\n\t\t\t\t});\n\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[!-->\");\n\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t}\n\t\t}\n\t\t$$renderer.push(`<!--]--> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region .svelte-kit/generated/root.js\nvar root_default = asClassComponent(Root);\n//#endregion\n//#region .svelte-kit/generated/shared/error-template.js\nvar error_template_default = ({ status, message }) => \"<!doctype html>\\n<html lang=\\\"en\\\">\\n\t<head>\\n\t\t<meta charset=\\\"utf-8\\\" />\\n\t\t<title>\" + message + \"</title>\\n\\n\t\t<style>\\n\t\t\tbody {\\n\t\t\t\t--bg: white;\\n\t\t\t\t--fg: #222;\\n\t\t\t\t--divider: #ccc;\\n\t\t\t\tbackground: var(--bg);\\n\t\t\t\tcolor: var(--fg);\\n\t\t\t\tfont-family:\\n\t\t\t\t\tsystem-ui,\\n\t\t\t\t\t-apple-system,\\n\t\t\t\t\tBlinkMacSystemFont,\\n\t\t\t\t\t'Segoe UI',\\n\t\t\t\t\tRoboto,\\n\t\t\t\t\tOxygen,\\n\t\t\t\t\tUbuntu,\\n\t\t\t\t\tCantarell,\\n\t\t\t\t\t'Open Sans',\\n\t\t\t\t\t'Helvetica Neue',\\n\t\t\t\t\tsans-serif;\\n\t\t\t\tdisplay: flex;\\n\t\t\t\talign-items: center;\\n\t\t\t\tjustify-content: center;\\n\t\t\t\theight: 100vh;\\n\t\t\t\tmargin: 0;\\n\t\t\t}\\n\\n\t\t\t.error {\\n\t\t\t\tdisplay: flex;\\n\t\t\t\talign-items: center;\\n\t\t\t\tmax-width: 32rem;\\n\t\t\t\tmargin: 0 1rem;\\n\t\t\t}\\n\\n\t\t\t.status {\\n\t\t\t\tfont-weight: 200;\\n\t\t\t\tfont-size: 3rem;\\n\t\t\t\tline-height: 1;\\n\t\t\t\tposition: relative;\\n\t\t\t\ttop: -0.05rem;\\n\t\t\t}\\n\\n\t\t\t.message {\\n\t\t\t\tborder-left: 1px solid var(--divider);\\n\t\t\t\tpadding: 0 0 0 1rem;\\n\t\t\t\tmargin: 0 0 0 1rem;\\n\t\t\t\tmin-height: 2.5rem;\\n\t\t\t\tdisplay: flex;\\n\t\t\t\talign-items: center;\\n\t\t\t}\\n\\n\t\t\t.message h1 {\\n\t\t\t\tfont-weight: 400;\\n\t\t\t\tfont-size: 1em;\\n\t\t\t\tmargin: 0;\\n\t\t\t}\\n\\n\t\t\t@media (prefers-color-scheme: dark) {\\n\t\t\t\tbody {\\n\t\t\t\t\t--bg: #222;\\n\t\t\t\t\t--fg: #ddd;\\n\t\t\t\t\t--divider: #666;\\n\t\t\t\t}\\n\t\t\t}\\n\t\t</style>\\n\t</head>\\n\t<body>\\n\t\t<div class=\\\"error\\\">\\n\t\t\t<span class=\\\"status\\\">\" + status + \"</span>\\n\t\t\t<div class=\\\"message\\\">\\n\t\t\t\t<h1>\" + message + \"</h1>\\n\t\t\t</div>\\n\t\t</div>\\n\t</body>\\n</html>\\n\";\n//#endregion\n//#region .svelte-kit/generated/server/internal.js\nvar options = {\n\tapp_template_contains_nonce: false,\n\tasync: false,\n\tcsp: {\n\t\t\"mode\": \"auto\",\n\t\t\"directives\": {\n\t\t\t\"upgrade-insecure-requests\": false,\n\t\t\t\"block-all-mixed-content\": false\n\t\t},\n\t\t\"reportOnly\": {\n\t\t\t\"upgrade-insecure-requests\": false,\n\t\t\t\"block-all-mixed-content\": false\n\t\t}\n\t},\n\tcsrf_check_origin: true,\n\tcsrf_trusted_origins: [],\n\tembedded: false,\n\tenv_public_prefix: \"PUBLIC_\",\n\tenv_private_prefix: \"\",\n\thash_routing: false,\n\thooks: null,\n\tpreload_strategy: \"modulepreload\",\n\troot: root_default,\n\tservice_worker: false,\n\tservice_worker_options: void 0,\n\tserver_error_boundaries: false,\n\ttemplates: {\n\t\tapp: ({ head, body, assets, nonce, env }) => \"<!doctype html>\\n<html lang=\\\"en\\\">\\n\t<head>\\n\t\t<meta charset=\\\"utf-8\\\" />\\n\t\t<meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\" />\\n\t\t<meta name=\\\"text-scale\\\" content=\\\"scale\\\" />\\n\t\t<meta name=\\\"theme-color\\\" content=\\\"#0a0a0a\\\" />\\n\t\t\" + head + \"\\n\t</head>\\n\t<body data-sveltekit-preload-data=\\\"hover\\\">\\n\t\t<div style=\\\"display: contents\\\">\" + body + \"</div>\\n\t</body>\\n</html>\\n\",\n\t\terror: error_template_default\n\t},\n\tversion_hash: \"ymp2l7\"\n};\nasync function get_hooks() {\n\tlet handle;\n\tlet handleFetch;\n\tlet handleError;\n\tlet handleValidationError;\n\tlet init;\n\tlet reroute;\n\tlet transport;\n\treturn {\n\t\thandle,\n\t\thandleFetch,\n\t\thandleError,\n\t\thandleValidationError,\n\t\tinit,\n\t\treroute,\n\t\ttransport\n\t};\n}\n//#endregion\nexport { set_read_implementation as a, set_manifest as i, options as n, read_implementation as r, get_hooks as t };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal2.js-BMcEVxqN.js","sources":["../../../../.svelte-kit/output/server/chunks/internal2.js"],"sourcesContent":["import \"./index-server.js\";\nimport \"./internal.js\";\nimport { S as setContext, o as derived, u as render, vt as async_mode_flag } from \"./server.js\";\nimport { t as asClassComponent$1 } from \"./legacy-client.js\";\n//#region \\0virtual:__sveltekit/server\nvar read_implementation = null;\nfunction set_read_implementation(fn) {\n\tread_implementation = fn;\n}\nfunction set_manifest(_) {}\n//#endregion\n//#region node_modules/.pnpm/svelte@5.57.0/node_modules/svelte/src/legacy/legacy-server.js\n/** @import { SvelteComponent } from '../index.js' */\n/** @import { Csp } from '../server/public.js' */\n/** @typedef {{ head: string, html: string, css: { code: string, map: null }; hashes?: { script: `sha256-${string}`[] } }} LegacyRenderResult */\n/**\n* Takes a Svelte 5 component and returns a Svelte 4 compatible component constructor.\n*\n* @deprecated Use this only as a temporary solution to migrate your imperative component code to Svelte 5.\n*\n* @template {Record<string, any>} Props\n* @template {Record<string, any>} Exports\n* @template {Record<string, any>} Events\n* @template {Record<string, any>} Slots\n*\n* @param {SvelteComponent<Props, Events, Slots>} component\n* @returns {typeof SvelteComponent<Props, Events, Slots> & Exports}\n*/\nfunction asClassComponent(component) {\n\tconst component_constructor = asClassComponent$1(component);\n\t/** @type {(props?: {}, opts?: { $$slots?: {}; context?: Map<any, any>; csp?: Csp; transformError?: (error: unknown) => unknown }) => LegacyRenderResult & PromiseLike<LegacyRenderResult> } */\n\tconst _render = (props, { context, csp, transformError } = {}) => {\n\t\tconst result = render(component, {\n\t\t\tprops,\n\t\t\tcontext,\n\t\t\tcsp,\n\t\t\ttransformError\n\t\t});\n\t\tconst munged = Object.defineProperties({}, {\n\t\t\tcss: { value: {\n\t\t\t\tcode: \"\",\n\t\t\t\tmap: null\n\t\t\t} },\n\t\t\thead: { get: () => result.head },\n\t\t\thtml: { get: () => result.body },\n\t\t\tthen: { \n\t\t\t/**\n\t\t\t* this is not type-safe, but honestly it's the best I can do right now, and it's a straightforward function.\n\t\t\t*\n\t\t\t* @template TResult1\n\t\t\t* @template [TResult2=never]\n\t\t\t* @param { (value: LegacyRenderResult) => TResult1 } onfulfilled\n\t\t\t* @param { (reason: unknown) => TResult2 } onrejected\n\t\t\t*/\nvalue: (onfulfilled, onrejected) => {\n\t\t\t\tif (!async_mode_flag) {\n\t\t\t\t\tconst user_result = onfulfilled({\n\t\t\t\t\t\tcss: munged.css,\n\t\t\t\t\t\thead: munged.head,\n\t\t\t\t\t\thtml: munged.html\n\t\t\t\t\t});\n\t\t\t\t\treturn Promise.resolve(user_result);\n\t\t\t\t}\n\t\t\t\treturn result.then((result) => {\n\t\t\t\t\treturn onfulfilled({\n\t\t\t\t\t\tcss: munged.css,\n\t\t\t\t\t\thead: result.head,\n\t\t\t\t\t\thtml: result.body,\n\t\t\t\t\t\thashes: result.hashes\n\t\t\t\t\t});\n\t\t\t\t}, onrejected);\n\t\t\t} }\n\t\t});\n\t\treturn munged;\n\t};\n\tcomponent_constructor.render = _render;\n\treturn component_constructor;\n}\n//#endregion\n//#region .svelte-kit/generated/root.svelte\nfunction Root($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { stores, page, constructors, components = [], form, data_0 = null, data_1 = null } = $$props;\n\t\tsetContext(\"__svelte__\", stores);\n\t\tstores.page.set(page);\n\t\tconst Pyramid_1 = derived(() => constructors[1]);\n\t\tif (constructors[1]) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tconst Pyramid_0 = constructors[0];\n\t\t\tif (Pyramid_0) {\n\t\t\t\t$$renderer.push(\"<!--[-->\");\n\t\t\t\tPyramid_0($$renderer, {\n\t\t\t\t\tdata: data_0,\n\t\t\t\t\tform,\n\t\t\t\t\tparams: page.params,\n\t\t\t\t\tchildren: ($$renderer) => {\n\t\t\t\t\t\tif (Pyramid_1()) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[-->\");\n\t\t\t\t\t\t\tPyramid_1()($$renderer, {\n\t\t\t\t\t\t\t\tdata: data_1,\n\t\t\t\t\t\t\t\tform,\n\t\t\t\t\t\t\t\tparams: page.params\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[!-->\");\n\t\t\t\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t$$slots: { default: true }\n\t\t\t\t});\n\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[!-->\");\n\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t}\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\tconst Pyramid_0 = constructors[0];\n\t\t\tif (Pyramid_0) {\n\t\t\t\t$$renderer.push(\"<!--[-->\");\n\t\t\t\tPyramid_0($$renderer, {\n\t\t\t\t\tdata: data_0,\n\t\t\t\t\tform,\n\t\t\t\t\tparams: page.params\n\t\t\t\t});\n\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[!-->\");\n\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t}\n\t\t}\n\t\t$$renderer.push(`<!--]--> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region .svelte-kit/generated/root.js\nvar root_default = asClassComponent(Root);\n//#endregion\n//#region .svelte-kit/generated/shared/error-template.js\nvar error_template_default = ({ status, message }) => \"<!doctype html>\\n<html lang=\\\"en\\\">\\n\t<head>\\n\t\t<meta charset=\\\"utf-8\\\" />\\n\t\t<title>\" + message + \"</title>\\n\\n\t\t<style>\\n\t\t\tbody {\\n\t\t\t\t--bg: white;\\n\t\t\t\t--fg: #222;\\n\t\t\t\t--divider: #ccc;\\n\t\t\t\tbackground: var(--bg);\\n\t\t\t\tcolor: var(--fg);\\n\t\t\t\tfont-family:\\n\t\t\t\t\tsystem-ui,\\n\t\t\t\t\t-apple-system,\\n\t\t\t\t\tBlinkMacSystemFont,\\n\t\t\t\t\t'Segoe UI',\\n\t\t\t\t\tRoboto,\\n\t\t\t\t\tOxygen,\\n\t\t\t\t\tUbuntu,\\n\t\t\t\t\tCantarell,\\n\t\t\t\t\t'Open Sans',\\n\t\t\t\t\t'Helvetica Neue',\\n\t\t\t\t\tsans-serif;\\n\t\t\t\tdisplay: flex;\\n\t\t\t\talign-items: center;\\n\t\t\t\tjustify-content: center;\\n\t\t\t\theight: 100vh;\\n\t\t\t\tmargin: 0;\\n\t\t\t}\\n\\n\t\t\t.error {\\n\t\t\t\tdisplay: flex;\\n\t\t\t\talign-items: center;\\n\t\t\t\tmax-width: 32rem;\\n\t\t\t\tmargin: 0 1rem;\\n\t\t\t}\\n\\n\t\t\t.status {\\n\t\t\t\tfont-weight: 200;\\n\t\t\t\tfont-size: 3rem;\\n\t\t\t\tline-height: 1;\\n\t\t\t\tposition: relative;\\n\t\t\t\ttop: -0.05rem;\\n\t\t\t}\\n\\n\t\t\t.message {\\n\t\t\t\tborder-left: 1px solid var(--divider);\\n\t\t\t\tpadding: 0 0 0 1rem;\\n\t\t\t\tmargin: 0 0 0 1rem;\\n\t\t\t\tmin-height: 2.5rem;\\n\t\t\t\tdisplay: flex;\\n\t\t\t\talign-items: center;\\n\t\t\t}\\n\\n\t\t\t.message h1 {\\n\t\t\t\tfont-weight: 400;\\n\t\t\t\tfont-size: 1em;\\n\t\t\t\tmargin: 0;\\n\t\t\t}\\n\\n\t\t\t@media (prefers-color-scheme: dark) {\\n\t\t\t\tbody {\\n\t\t\t\t\t--bg: #222;\\n\t\t\t\t\t--fg: #ddd;\\n\t\t\t\t\t--divider: #666;\\n\t\t\t\t}\\n\t\t\t}\\n\t\t</style>\\n\t</head>\\n\t<body>\\n\t\t<div class=\\\"error\\\">\\n\t\t\t<span class=\\\"status\\\">\" + status + \"</span>\\n\t\t\t<div class=\\\"message\\\">\\n\t\t\t\t<h1>\" + message + \"</h1>\\n\t\t\t</div>\\n\t\t</div>\\n\t</body>\\n</html>\\n\";\n//#endregion\n//#region .svelte-kit/generated/server/internal.js\nvar options = {\n\tapp_template_contains_nonce: false,\n\tasync: false,\n\tcsp: {\n\t\t\"mode\": \"auto\",\n\t\t\"directives\": {\n\t\t\t\"upgrade-insecure-requests\": false,\n\t\t\t\"block-all-mixed-content\": false\n\t\t},\n\t\t\"reportOnly\": {\n\t\t\t\"upgrade-insecure-requests\": false,\n\t\t\t\"block-all-mixed-content\": false\n\t\t}\n\t},\n\tcsrf_check_origin: true,\n\tcsrf_trusted_origins: [],\n\tembedded: false,\n\tenv_public_prefix: \"PUBLIC_\",\n\tenv_private_prefix: \"\",\n\thash_routing: false,\n\thooks: null,\n\tpreload_strategy: \"modulepreload\",\n\troot: root_default,\n\tservice_worker: false,\n\tservice_worker_options: void 0,\n\tserver_error_boundaries: false,\n\ttemplates: {\n\t\tapp: ({ head, body, assets, nonce, env }) => \"<!doctype html>\\n<html lang=\\\"en\\\">\\n\t<head>\\n\t\t<meta charset=\\\"utf-8\\\" />\\n\t\t<meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\" />\\n\t\t<meta name=\\\"text-scale\\\" content=\\\"scale\\\" />\\n\t\t<meta name=\\\"theme-color\\\" content=\\\"#0a0a0a\\\" />\\n\t\t\" + head + \"\\n\t</head>\\n\t<body data-sveltekit-preload-data=\\\"hover\\\">\\n\t\t<div style=\\\"display: contents\\\">\" + body + \"</div>\\n\t</body>\\n</html>\\n\",\n\t\terror: error_template_default\n\t},\n\tversion_hash: \"1t5w61q\"\n};\nasync function get_hooks() {\n\tlet handle;\n\tlet handleFetch;\n\tlet handleError;\n\tlet handleValidationError;\n\tlet init;\n\tlet reroute;\n\tlet transport;\n\treturn {\n\t\thandle,\n\t\thandleFetch,\n\t\thandleError,\n\t\thandleValidationError,\n\t\tinit,\n\t\treroute,\n\t\ttransport\n\t};\n}\n//#endregion\nexport { set_read_implementation as a, set_manifest as i, options as n, read_implementation as r, get_hooks as t };\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { i as isLogLevel, b as detectLevel, d as detectRequestId } from './log-buffer.js-BI_gQOls.js';
1
+ import { i as isLogLevel, b as detectLevel, d as detectRequestId } from './log-buffer.js-A9FA-Qv8.js';
2
2
  import { H as HISTORIC_PRESETS, p as presetDurationMs, i as isHistoricPreset } from './time-range.js-BLMT8aU3.js';
3
3
 
4
4
  //#region src/lib/server/filter.ts
@@ -310,4 +310,4 @@ function withDetections(events) {
310
310
  }
311
311
 
312
312
  export { LEVEL_PARAM_HINT as L, parseLevelParam as a, parseDurationMs as b, clampPollMs as c, parseGroupParams as p, resolveWindow as r, withDetections as w };
313
- //# sourceMappingURL=level-filter.js-B3o2hyWD.js.map
313
+ //# sourceMappingURL=level-filter.js-D9MNrew3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"level-filter.js-B3o2hyWD.js","sources":["../../../../.svelte-kit/output/server/chunks/level-filter.js"],"sourcesContent":["import { d as isLogLevel, i as detectLevel, o as detectRequestId } from \"./log-buffer.js\";\nimport { a as presetDurationMs, i as isHistoricPreset, t as HISTORIC_PRESETS } from \"./time-range.js\";\n//#region src/lib/server/filter.ts\n/** Default lookback window when neither `startTime` nor `lookback` is usable. */\nvar DEFAULT_LOOKBACK_MS = 3e5;\n/** CloudWatch Logs rejects `startTime` older than 14 days. */\nvar MAX_LOOKBACK_MS = 12096e5;\nvar DEFAULT_POLL_MS = 1e3;\nvar MIN_POLL_MS = 250;\nvar MAX_POLL_MS = 15e3;\nvar DURATION_UNITS = {\n\tms: 1,\n\ts: 1e3,\n\tm: 6e4,\n\th: 36e5,\n\td: 864e5,\n\tw: 6048e5\n};\nvar DURATION_PATTERN = /^(\\d+(?:\\.\\d+)?)\\s*(ms|s|m|h|d|w)$/i;\nvar EPOCH_PATTERN = /^\\d+$/;\n/**\n* Parses a single-unit duration such as `500ms`, `30s`, `15m`, `2h`, `3d` or\n* `1w`. Returns `null` for anything invalid, negative or zero.\n*/\nfunction parseDurationMs(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst match = DURATION_PATTERN.exec(value.trim());\n\tif (match === null) return null;\n\tconst amount = Number(match[1]);\n\tconst unit = DURATION_UNITS[match[2].toLowerCase()];\n\tif (unit === void 0 || !Number.isFinite(amount)) return null;\n\tconst ms = amount * unit;\n\tif (!Number.isFinite(ms) || ms <= 0) return null;\n\treturn Math.round(ms);\n}\n/**\n* Parses a start point into epoch milliseconds.\n*\n* Accepts epoch milliseconds (`1700000000000`), a duration relative to `now`\n* (`15m`) and ISO 8601 timestamps. Returns `null` when the value is missing or\n* cannot be understood.\n*/\nfunction parseStartTime(value, now) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return null;\n\tif (EPOCH_PATTERN.test(trimmed)) return Number(trimmed);\n\tconst duration = parseDurationMs(trimmed);\n\tif (duration !== null) return now - duration;\n\tconst parsed = Date.parse(trimmed);\n\treturn Number.isNaN(parsed) ? null : parsed;\n}\n/** Resolves the effective start time, clamped to the last 14 days and to `now`. */\nfunction resolveStartTime(input) {\n\tconst { now } = input;\n\tlet start = parseStartTime(input.startTime, now);\n\tif (start === null) start = now - (parseDurationMs(input.lookback ?? \"\") ?? DEFAULT_LOOKBACK_MS);\n\tif (start > now) start = now;\n\tconst maxLookback = input.maxLookbackMs === void 0 ? MAX_LOOKBACK_MS : input.maxLookbackMs;\n\tif (maxLookback !== null) {\n\t\tconst oldestAllowed = now - maxLookback;\n\t\tif (start < oldestAllowed) start = oldestAllowed;\n\t}\n\treturn Math.round(start);\n}\n/** Parses a poll interval in milliseconds, defaulting to 1000 and clamped to 250..15000. */\nfunction clampPollMs(value) {\n\tif (typeof value !== \"string\") return DEFAULT_POLL_MS;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return DEFAULT_POLL_MS;\n\tconst parsed = Number(trimmed);\n\tif (!Number.isFinite(parsed)) return DEFAULT_POLL_MS;\n\treturn Math.min(Math.max(Math.round(parsed), MIN_POLL_MS), MAX_POLL_MS);\n}\n/** Default historic window when neither `range` nor `from`/`to` is given. */\nvar DEFAULT_HISTORIC_PRESET = \"15m\";\n/** Parses the `mode` parameter; `null` for an unrecognised value. */\nfunction parseMode(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim().toLowerCase();\n\tif (trimmed === \"live\" || trimmed === \"historic\") return trimmed;\n\treturn null;\n}\n/**\n* Parses an absolute instant: epoch milliseconds or an ISO 8601 timestamp.\n*\n* Relative durations are deliberately rejected here so an end bound can never\n* move with the clock.\n*/\nfunction parseInstant(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return null;\n\tif (EPOCH_PATTERN.test(trimmed)) return Number(trimmed);\n\tconst parsed = Date.parse(trimmed);\n\treturn Number.isNaN(parsed) ? null : parsed;\n}\n/**\n* Clamps a window to what CloudWatch Logs can return: 14 days back, ending now.\n*\n* Returns `null` when the requested window ends before the retention floor, so\n* a request for month-old data fails loudly instead of returning a stub window.\n*/\nfunction clampWindow(start, end, now, maxLookbackMs = MAX_LOOKBACK_MS) {\n\tif (maxLookbackMs === null) {\n\t\tconst clampedEnd = Math.max(end, start + 1);\n\t\treturn {\n\t\t\tstart: Math.round(start),\n\t\t\tend: Math.round(clampedEnd),\n\t\t\tclamped: false\n\t\t};\n\t}\n\tconst oldest = now - maxLookbackMs;\n\tif (end <= oldest) return null;\n\tconst clampedStart = Math.min(Math.max(start, oldest), now);\n\tconst clampedEnd = Math.min(Math.max(end, clampedStart + 1), now);\n\treturn {\n\t\tstart: Math.round(clampedStart),\n\t\tend: Math.round(clampedEnd),\n\t\tclamped: clampedStart !== Math.round(start) || clampedEnd !== Math.round(end)\n\t};\n}\n/**\n* Resolves the request window into a start time plus, for historic mode, an end\n* time.\n*\n* Historic windows come from a preset (`range=24h`), from explicit bounds\n* (`from`/`to`, epoch ms or ISO 8601) or, when neither is given, from the\n* smallest preset. Windows are clamped to the last 14 days and to `now` so the\n* request can never ask CloudWatch for data it will not return.\n*/\nfunction resolveWindow(input, options = {}) {\n\tconst maxLookbackMs = options.maxLookbackMs === void 0 ? MAX_LOOKBACK_MS : options.maxLookbackMs;\n\tconst { now } = input;\n\tconst requestedMode = input.mode === null || input.mode === void 0 ? \"live\" : input.mode.trim();\n\tconst mode = requestedMode === \"\" ? \"live\" : parseMode(requestedMode);\n\tif (mode === null) return {\n\t\tok: false,\n\t\tcode: \"invalid-mode\",\n\t\tmessage: \"Invalid mode: expected \\\"live\\\" or \\\"historic\\\"\"\n\t};\n\tif (mode === \"live\") return {\n\t\tok: true,\n\t\tmode,\n\t\tstartTime: resolveStartTime({\n\t\t\tstartTime: input.startTime,\n\t\t\tlookback: input.lookback,\n\t\t\tnow,\n\t\t\tmaxLookbackMs\n\t\t}),\n\t\tendTime: null,\n\t\tpreset: null,\n\t\tclamped: false\n\t};\n\tconst from = input.from?.trim() ?? \"\";\n\tconst to = input.to?.trim() ?? \"\";\n\tif (from.length > 0 || to.length > 0) {\n\t\tif (from.length === 0 || to.length === 0) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-window\",\n\t\t\tmessage: \"A custom window needs both \\\"from\\\" and \\\"to\\\"\"\n\t\t};\n\t\tconst parsedFrom = parseStartTime(from, now);\n\t\tconst parsedTo = parseInstant(to);\n\t\tif (parsedFrom === null) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-time\",\n\t\t\tmessage: `Invalid \"from\": expected epoch milliseconds, a duration such as 3h, or an ISO 8601 timestamp`\n\t\t};\n\t\tif (parsedTo === null) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-time\",\n\t\t\tmessage: \"Invalid \\\"to\\\": expected epoch milliseconds or an ISO 8601 timestamp\"\n\t\t};\n\t\tif (parsedTo <= parsedFrom) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-window\",\n\t\t\tmessage: \"The end of the window must be after its start\"\n\t\t};\n\t\tconst clamped = clampWindow(parsedFrom, parsedTo, now, maxLookbackMs);\n\t\tif (clamped === null || clamped.end <= clamped.start) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-window\",\n\t\t\tmessage: maxLookbackMs === null ? \"The end of the window must be after its start\" : \"The requested window is outside the 14 days CloudWatch Logs keeps\"\n\t\t};\n\t\treturn {\n\t\t\tok: true,\n\t\t\tmode,\n\t\t\tstartTime: clamped.start,\n\t\t\tendTime: clamped.end,\n\t\t\tpreset: null,\n\t\t\tclamped: clamped.clamped\n\t\t};\n\t}\n\tconst requestedRange = input.range?.trim() ?? \"\";\n\tconst preset = requestedRange === \"\" ? DEFAULT_HISTORIC_PRESET : isHistoricPreset(requestedRange) ? requestedRange : null;\n\tif (preset === null) return {\n\t\tok: false,\n\t\tcode: \"invalid-range\",\n\t\tmessage: `Invalid range: expected one of ${HISTORIC_PRESETS.join(\", \")} or an explicit from/to window`\n\t};\n\tconst end = Math.round(now);\n\treturn {\n\t\tok: true,\n\t\tmode,\n\t\tstartTime: Math.round(now - presetDurationMs(preset)),\n\t\tendTime: end,\n\t\tpreset,\n\t\tclamped: false\n\t};\n}\n/** Message used when a request names no group at all. */\nvar GROUP_PARAM_HINT = \"Query parameter \\\"group\\\" or \\\"groups\\\" is required\";\n/** Message used when a request names too many groups. */\nvar TOO_MANY_GROUPS_HINT = `Too many groups: at most 10 can be selected at once`;\n/**\n* Parses the group selection.\n*\n* `groups` may repeat the same name as `group`; duplicates are removed and the\n* order of the request is preserved, because it is the order the UI shows.\n*/\nfunction parseGroupParams(group, groups) {\n\tconst names = [];\n\tconst collect = (value) => {\n\t\tif (typeof value !== \"string\") return;\n\t\tfor (const part of value.split(\",\")) {\n\t\t\tconst name = part.trim();\n\t\t\tif (name.length === 0) continue;\n\t\t\tif (!names.includes(name)) names.push(name);\n\t\t}\n\t};\n\tcollect(group);\n\tcollect(groups);\n\tif (names.length === 0) return {\n\t\tok: false,\n\t\tcode: \"missing-group\",\n\t\tmessage: GROUP_PARAM_HINT\n\t};\n\tif (names.length > 10) return {\n\t\tok: false,\n\t\tcode: \"too-many-groups\",\n\t\tmessage: TOO_MANY_GROUPS_HINT\n\t};\n\treturn {\n\t\tok: true,\n\t\tnames\n\t};\n}\n//#endregion\n//#region src/lib/server/level-filter.ts\n/**\n* Detection for the stream route: the `level` parameter, and the fields the\n* archive stores.\n*\n* SvelteKit only allows HTTP method exports from a `+server.ts`, so the helpers\n* live here: parsing the `level` parameter, and tagging outgoing events with the\n* level and the request id that the archive will store for them.\n*/\n/** Message used when `level` cannot be understood, or when it is misapplied. */\nvar LEVEL_PARAM_HINT = \"Invalid level: expected one or more of error, warn, info, debug (comma separated)\";\n/**\n* Parses the `level` parameter into the levels to include.\n*\n* Returns `null` when the parameter is absent or blank (every level) and\n* `undefined` when it names something that is not a level, so the caller can\n* answer 400 instead of silently ignoring a filter the user asked for.\n*/\nfunction parseLevelParam(value) {\n\tif (value === null || value === void 0) return null;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return null;\n\tconst levels = [];\n\tfor (const part of trimmed.split(\",\")) {\n\t\tconst word = part.trim().toLowerCase();\n\t\tif (word.length === 0) continue;\n\t\tif (!isLogLevel(word)) return void 0;\n\t\tif (!levels.includes(word)) levels.push(word);\n\t}\n\treturn levels.length === 0 ? null : levels;\n}\n/**\n* Fills in the fields the archive stores for an event: its level and its request\n* id.\n*\n* This is where a live CloudWatch event gets what the archive will hold, so the\n* UI, the chart and the database all describe the same line the same way. It runs\n* for every batch, whatever the source, because the two fields are decided one\n* by one:\n*\n* - `level` is only detected when the event does not already carry one. A row\n* replayed from the archive has the level that was stored, including an\n* explicit `null` for \"no signal\", and re-guessing it would contradict the\n* database.\n* - `requestId` is only detected when it is absent. An explicit `null` from the\n* archive stays `null`, since that is what the row says; a row written before\n* the column existed has no property at all and is detected here.\n*/\nfunction withDetections(events) {\n\treturn events.map((event) => {\n\t\tconst level = event.level === void 0 ? detectLevel(event.message) : event.level;\n\t\tconst requestId = event.requestId === void 0 ? detectRequestId(event.message) : event.requestId;\n\t\tif (level === event.level && requestId === event.requestId) return event;\n\t\treturn {\n\t\t\t...event,\n\t\t\tlevel,\n\t\t\trequestId\n\t\t};\n\t});\n}\n//#endregion\nexport { clampPollMs as a, parseGroupParams as i, parseLevelParam as n, parseDurationMs as o, withDetections as r, resolveWindow as s, LEVEL_PARAM_HINT as t };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"level-filter.js-D9MNrew3.js","sources":["../../../../.svelte-kit/output/server/chunks/level-filter.js"],"sourcesContent":["import { d as isLogLevel, i as detectLevel, o as detectRequestId } from \"./log-buffer.js\";\nimport { a as presetDurationMs, i as isHistoricPreset, t as HISTORIC_PRESETS } from \"./time-range.js\";\n//#region src/lib/server/filter.ts\n/** Default lookback window when neither `startTime` nor `lookback` is usable. */\nvar DEFAULT_LOOKBACK_MS = 3e5;\n/** CloudWatch Logs rejects `startTime` older than 14 days. */\nvar MAX_LOOKBACK_MS = 12096e5;\nvar DEFAULT_POLL_MS = 1e3;\nvar MIN_POLL_MS = 250;\nvar MAX_POLL_MS = 15e3;\nvar DURATION_UNITS = {\n\tms: 1,\n\ts: 1e3,\n\tm: 6e4,\n\th: 36e5,\n\td: 864e5,\n\tw: 6048e5\n};\nvar DURATION_PATTERN = /^(\\d+(?:\\.\\d+)?)\\s*(ms|s|m|h|d|w)$/i;\nvar EPOCH_PATTERN = /^\\d+$/;\n/**\n* Parses a single-unit duration such as `500ms`, `30s`, `15m`, `2h`, `3d` or\n* `1w`. Returns `null` for anything invalid, negative or zero.\n*/\nfunction parseDurationMs(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst match = DURATION_PATTERN.exec(value.trim());\n\tif (match === null) return null;\n\tconst amount = Number(match[1]);\n\tconst unit = DURATION_UNITS[match[2].toLowerCase()];\n\tif (unit === void 0 || !Number.isFinite(amount)) return null;\n\tconst ms = amount * unit;\n\tif (!Number.isFinite(ms) || ms <= 0) return null;\n\treturn Math.round(ms);\n}\n/**\n* Parses a start point into epoch milliseconds.\n*\n* Accepts epoch milliseconds (`1700000000000`), a duration relative to `now`\n* (`15m`) and ISO 8601 timestamps. Returns `null` when the value is missing or\n* cannot be understood.\n*/\nfunction parseStartTime(value, now) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return null;\n\tif (EPOCH_PATTERN.test(trimmed)) return Number(trimmed);\n\tconst duration = parseDurationMs(trimmed);\n\tif (duration !== null) return now - duration;\n\tconst parsed = Date.parse(trimmed);\n\treturn Number.isNaN(parsed) ? null : parsed;\n}\n/** Resolves the effective start time, clamped to the last 14 days and to `now`. */\nfunction resolveStartTime(input) {\n\tconst { now } = input;\n\tlet start = parseStartTime(input.startTime, now);\n\tif (start === null) start = now - (parseDurationMs(input.lookback ?? \"\") ?? DEFAULT_LOOKBACK_MS);\n\tif (start > now) start = now;\n\tconst maxLookback = input.maxLookbackMs === void 0 ? MAX_LOOKBACK_MS : input.maxLookbackMs;\n\tif (maxLookback !== null) {\n\t\tconst oldestAllowed = now - maxLookback;\n\t\tif (start < oldestAllowed) start = oldestAllowed;\n\t}\n\treturn Math.round(start);\n}\n/** Parses a poll interval in milliseconds, defaulting to 1000 and clamped to 250..15000. */\nfunction clampPollMs(value) {\n\tif (typeof value !== \"string\") return DEFAULT_POLL_MS;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return DEFAULT_POLL_MS;\n\tconst parsed = Number(trimmed);\n\tif (!Number.isFinite(parsed)) return DEFAULT_POLL_MS;\n\treturn Math.min(Math.max(Math.round(parsed), MIN_POLL_MS), MAX_POLL_MS);\n}\n/** Default historic window when neither `range` nor `from`/`to` is given. */\nvar DEFAULT_HISTORIC_PRESET = \"15m\";\n/** Parses the `mode` parameter; `null` for an unrecognised value. */\nfunction parseMode(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim().toLowerCase();\n\tif (trimmed === \"live\" || trimmed === \"historic\") return trimmed;\n\treturn null;\n}\n/**\n* Parses an absolute instant: epoch milliseconds or an ISO 8601 timestamp.\n*\n* Relative durations are deliberately rejected here so an end bound can never\n* move with the clock.\n*/\nfunction parseInstant(value) {\n\tif (typeof value !== \"string\") return null;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return null;\n\tif (EPOCH_PATTERN.test(trimmed)) return Number(trimmed);\n\tconst parsed = Date.parse(trimmed);\n\treturn Number.isNaN(parsed) ? null : parsed;\n}\n/**\n* Clamps a window to what CloudWatch Logs can return: 14 days back, ending now.\n*\n* Returns `null` when the requested window ends before the retention floor, so\n* a request for month-old data fails loudly instead of returning a stub window.\n*/\nfunction clampWindow(start, end, now, maxLookbackMs = MAX_LOOKBACK_MS) {\n\tif (maxLookbackMs === null) {\n\t\tconst clampedEnd = Math.max(end, start + 1);\n\t\treturn {\n\t\t\tstart: Math.round(start),\n\t\t\tend: Math.round(clampedEnd),\n\t\t\tclamped: false\n\t\t};\n\t}\n\tconst oldest = now - maxLookbackMs;\n\tif (end <= oldest) return null;\n\tconst clampedStart = Math.min(Math.max(start, oldest), now);\n\tconst clampedEnd = Math.min(Math.max(end, clampedStart + 1), now);\n\treturn {\n\t\tstart: Math.round(clampedStart),\n\t\tend: Math.round(clampedEnd),\n\t\tclamped: clampedStart !== Math.round(start) || clampedEnd !== Math.round(end)\n\t};\n}\n/**\n* Resolves the request window into a start time plus, for historic mode, an end\n* time.\n*\n* Historic windows come from a preset (`range=24h`), from explicit bounds\n* (`from`/`to`, epoch ms or ISO 8601) or, when neither is given, from the\n* smallest preset. Windows are clamped to the last 14 days and to `now` so the\n* request can never ask CloudWatch for data it will not return.\n*/\nfunction resolveWindow(input, options = {}) {\n\tconst maxLookbackMs = options.maxLookbackMs === void 0 ? MAX_LOOKBACK_MS : options.maxLookbackMs;\n\tconst { now } = input;\n\tconst requestedMode = input.mode === null || input.mode === void 0 ? \"live\" : input.mode.trim();\n\tconst mode = requestedMode === \"\" ? \"live\" : parseMode(requestedMode);\n\tif (mode === null) return {\n\t\tok: false,\n\t\tcode: \"invalid-mode\",\n\t\tmessage: \"Invalid mode: expected \\\"live\\\" or \\\"historic\\\"\"\n\t};\n\tif (mode === \"live\") return {\n\t\tok: true,\n\t\tmode,\n\t\tstartTime: resolveStartTime({\n\t\t\tstartTime: input.startTime,\n\t\t\tlookback: input.lookback,\n\t\t\tnow,\n\t\t\tmaxLookbackMs\n\t\t}),\n\t\tendTime: null,\n\t\tpreset: null,\n\t\tclamped: false\n\t};\n\tconst from = input.from?.trim() ?? \"\";\n\tconst to = input.to?.trim() ?? \"\";\n\tif (from.length > 0 || to.length > 0) {\n\t\tif (from.length === 0 || to.length === 0) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-window\",\n\t\t\tmessage: \"A custom window needs both \\\"from\\\" and \\\"to\\\"\"\n\t\t};\n\t\tconst parsedFrom = parseStartTime(from, now);\n\t\tconst parsedTo = parseInstant(to);\n\t\tif (parsedFrom === null) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-time\",\n\t\t\tmessage: `Invalid \"from\": expected epoch milliseconds, a duration such as 3h, or an ISO 8601 timestamp`\n\t\t};\n\t\tif (parsedTo === null) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-time\",\n\t\t\tmessage: \"Invalid \\\"to\\\": expected epoch milliseconds or an ISO 8601 timestamp\"\n\t\t};\n\t\tif (parsedTo <= parsedFrom) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-window\",\n\t\t\tmessage: \"The end of the window must be after its start\"\n\t\t};\n\t\tconst clamped = clampWindow(parsedFrom, parsedTo, now, maxLookbackMs);\n\t\tif (clamped === null || clamped.end <= clamped.start) return {\n\t\t\tok: false,\n\t\t\tcode: \"invalid-window\",\n\t\t\tmessage: maxLookbackMs === null ? \"The end of the window must be after its start\" : \"The requested window is outside the 14 days CloudWatch Logs keeps\"\n\t\t};\n\t\treturn {\n\t\t\tok: true,\n\t\t\tmode,\n\t\t\tstartTime: clamped.start,\n\t\t\tendTime: clamped.end,\n\t\t\tpreset: null,\n\t\t\tclamped: clamped.clamped\n\t\t};\n\t}\n\tconst requestedRange = input.range?.trim() ?? \"\";\n\tconst preset = requestedRange === \"\" ? DEFAULT_HISTORIC_PRESET : isHistoricPreset(requestedRange) ? requestedRange : null;\n\tif (preset === null) return {\n\t\tok: false,\n\t\tcode: \"invalid-range\",\n\t\tmessage: `Invalid range: expected one of ${HISTORIC_PRESETS.join(\", \")} or an explicit from/to window`\n\t};\n\tconst end = Math.round(now);\n\treturn {\n\t\tok: true,\n\t\tmode,\n\t\tstartTime: Math.round(now - presetDurationMs(preset)),\n\t\tendTime: end,\n\t\tpreset,\n\t\tclamped: false\n\t};\n}\n/** Message used when a request names no group at all. */\nvar GROUP_PARAM_HINT = \"Query parameter \\\"group\\\" or \\\"groups\\\" is required\";\n/** Message used when a request names too many groups. */\nvar TOO_MANY_GROUPS_HINT = `Too many groups: at most 10 can be selected at once`;\n/**\n* Parses the group selection.\n*\n* `groups` may repeat the same name as `group`; duplicates are removed and the\n* order of the request is preserved, because it is the order the UI shows.\n*/\nfunction parseGroupParams(group, groups) {\n\tconst names = [];\n\tconst collect = (value) => {\n\t\tif (typeof value !== \"string\") return;\n\t\tfor (const part of value.split(\",\")) {\n\t\t\tconst name = part.trim();\n\t\t\tif (name.length === 0) continue;\n\t\t\tif (!names.includes(name)) names.push(name);\n\t\t}\n\t};\n\tcollect(group);\n\tcollect(groups);\n\tif (names.length === 0) return {\n\t\tok: false,\n\t\tcode: \"missing-group\",\n\t\tmessage: GROUP_PARAM_HINT\n\t};\n\tif (names.length > 10) return {\n\t\tok: false,\n\t\tcode: \"too-many-groups\",\n\t\tmessage: TOO_MANY_GROUPS_HINT\n\t};\n\treturn {\n\t\tok: true,\n\t\tnames\n\t};\n}\n//#endregion\n//#region src/lib/server/level-filter.ts\n/**\n* Detection for the stream route: the `level` parameter, and the fields the\n* archive stores.\n*\n* SvelteKit only allows HTTP method exports from a `+server.ts`, so the helpers\n* live here: parsing the `level` parameter, and tagging outgoing events with the\n* level and the request id that the archive will store for them.\n*/\n/** Message used when `level` cannot be understood, or when it is misapplied. */\nvar LEVEL_PARAM_HINT = \"Invalid level: expected one or more of error, warn, info, debug (comma separated)\";\n/**\n* Parses the `level` parameter into the levels to include.\n*\n* Returns `null` when the parameter is absent or blank (every level) and\n* `undefined` when it names something that is not a level, so the caller can\n* answer 400 instead of silently ignoring a filter the user asked for.\n*/\nfunction parseLevelParam(value) {\n\tif (value === null || value === void 0) return null;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) return null;\n\tconst levels = [];\n\tfor (const part of trimmed.split(\",\")) {\n\t\tconst word = part.trim().toLowerCase();\n\t\tif (word.length === 0) continue;\n\t\tif (!isLogLevel(word)) return void 0;\n\t\tif (!levels.includes(word)) levels.push(word);\n\t}\n\treturn levels.length === 0 ? null : levels;\n}\n/**\n* Fills in the fields the archive stores for an event: its level and its request\n* id.\n*\n* This is where a live CloudWatch event gets what the archive will hold, so the\n* UI, the chart and the database all describe the same line the same way. It runs\n* for every batch, whatever the source, because the two fields are decided one\n* by one:\n*\n* - `level` is only detected when the event does not already carry one. A row\n* replayed from the archive has the level that was stored, including an\n* explicit `null` for \"no signal\", and re-guessing it would contradict the\n* database.\n* - `requestId` is only detected when it is absent. An explicit `null` from the\n* archive stays `null`, since that is what the row says; a row written before\n* the column existed has no property at all and is detected here.\n*/\nfunction withDetections(events) {\n\treturn events.map((event) => {\n\t\tconst level = event.level === void 0 ? detectLevel(event.message) : event.level;\n\t\tconst requestId = event.requestId === void 0 ? detectRequestId(event.message) : event.requestId;\n\t\tif (level === event.level && requestId === event.requestId) return event;\n\t\treturn {\n\t\t\t...event,\n\t\t\tlevel,\n\t\t\trequestId\n\t\t};\n\t});\n}\n//#endregion\nexport { clampPollMs as a, parseGroupParams as i, parseLevelParam as n, parseDurationMs as o, withDetections as r, resolveWindow as s, LEVEL_PARAM_HINT as t };\n"],"names":[],"mappings":"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"}
@@ -158,9 +158,24 @@ function findJsonInMessage(message) {
158
158
  return null;
159
159
  }
160
160
  //#endregion
161
+ //#region src/lib/request-duration.ts
162
+ /** Explicit event duration in milliseconds; malformed or negative values are ignored. */
163
+ function eventDurationMs(message) {
164
+ const payload = findJsonInMessage(message);
165
+ if (payload === null || typeof payload !== "object" || Array.isArray(payload)) return 0;
166
+ const record = payload;
167
+ for (const key of ["duration", "durationMs"]) {
168
+ const value = record[key];
169
+ if (typeof value !== "number" && (typeof value !== "string" || value.trim() === "")) continue;
170
+ const duration = Number(value);
171
+ if (Number.isFinite(duration) && duration >= 0 && duration <= Number.MAX_SAFE_INTEGER) return duration;
172
+ }
173
+ return 0;
174
+ }
175
+ //#endregion
161
176
  //#region src/lib/log-buffer.ts
162
177
  /**
163
- * Pure client-side log storage and filtering for the watch-stream UI.
178
+ * Pure client-side log storage and filtering for the watch-tail UI.
164
179
  *
165
180
  * Design decisions (kept in one place so the UI stays predictable):
166
181
  *
@@ -583,5 +598,5 @@ var LogStore = class {
583
598
  }
584
599
  };
585
600
 
586
- export { LEVEL_RANK as L, detectLevelWithSource as a, detectLevel as b, LogStore as c, detectRequestId as d, effectiveLevel as e, filterByLevel as f, filterEvents as g, formatLogMessage as h, isLogLevel as i, eventKey as j, levelColorClass as l, mostCriticalLevel as m, tokenizeJson as t };
587
- //# sourceMappingURL=log-buffer.js-BI_gQOls.js.map
601
+ export { LEVEL_RANK as L, detectLevelWithSource as a, detectLevel as b, effectiveLevel as c, detectRequestId as d, eventDurationMs as e, LogStore as f, filterByLevel as g, filterEvents as h, isLogLevel as i, formatLogMessage as j, eventKey as k, levelColorClass as l, mostCriticalLevel as m, tokenizeJson as t };
602
+ //# sourceMappingURL=log-buffer.js-A9FA-Qv8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-buffer.js-A9FA-Qv8.js","sources":["../../../../.svelte-kit/output/server/chunks/log-buffer.js"],"sourcesContent":["//#region src/lib/log-format.ts\n/**\n* Parses a log message that is entirely JSON.\n*\n* Only objects and arrays count: a message that happens to be `42` or `\"ok\"` is\n* left alone, and anything that does not parse is not JSON. Leading and trailing\n* whitespace is ignored.\n*/\nfunction detectJson(message) {\n\tif (typeof message !== \"string\") return null;\n\tconst trimmed = message.trim();\n\tif (trimmed.length === 0) return null;\n\tconst first = trimmed[0];\n\tif (first !== \"{\" && first !== \"[\") return null;\n\ttry {\n\t\tconst parsed = JSON.parse(trimmed);\n\t\tif (parsed === null || typeof parsed !== \"object\") return null;\n\t\treturn parsed;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Returns the text to render for a log message.\n*\n* `prettyJson` is normally true: JSON messages are re-serialised with two-space\n* indentation. With `prettyJson` false the raw message is returned unchanged,\n* which is what the viewer's JSON toggle switches to.\n*/\nfunction formatLogMessage(message, options = {}) {\n\tconst { prettyJson = true } = options;\n\tconst value = detectJson(message);\n\tif (value === null || !prettyJson) return {\n\t\ttext: message,\n\t\tisJson: value !== null,\n\t\tvalue\n\t};\n\treturn {\n\t\ttext: JSON.stringify(value, null, 2),\n\t\tisJson: true,\n\t\tvalue\n\t};\n}\nvar NUMBER_PATTERN = /^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$/;\n/**\n* Splits pretty-printed JSON into coloured tokens.\n*\n* The concatenation of every token's `text` is always identical to the input, so\n* rendering tokens can never lose or alter a character. This is a display-only\n* scanner: it assumes well-formed JSON produced by `JSON.stringify`.\n*/\nfunction tokenizeJson(text) {\n\tconst tokens = [];\n\tlet index = 0;\n\tconst push = (type, value) => {\n\t\tif (value.length > 0) tokens.push({\n\t\t\ttype,\n\t\t\ttext: value\n\t\t});\n\t};\n\twhile (index < text.length) {\n\t\tconst char = text[index];\n\t\tif (char === \" \" || char === \"\\n\" || char === \"\t\" || char === \"\\r\") {\n\t\t\tlet end = index;\n\t\t\twhile (end < text.length && \" \\n\t\\r\".includes(text[end])) end += 1;\n\t\t\tpush(\"whitespace\", text.slice(index, end));\n\t\t\tindex = end;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"\\\"\") {\n\t\t\tlet end = index + 1;\n\t\t\twhile (end < text.length) {\n\t\t\t\tif (text[end] === \"\\\\\") {\n\t\t\t\t\tend += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (text[end] === \"\\\"\") break;\n\t\t\t\tend += 1;\n\t\t\t}\n\t\t\tconst raw = text.slice(index, Math.min(end + 1, text.length));\n\t\t\tlet lookahead = index + raw.length;\n\t\t\twhile (lookahead < text.length && \" \\n\t\\r\".includes(text[lookahead])) lookahead += 1;\n\t\t\tpush(text[lookahead] === \":\" ? \"key\" : \"string\", raw);\n\t\t\tindex += raw.length;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"{\" || char === \"}\" || char === \"[\" || char === \"]\" || char === \",\" || char === \":\") {\n\t\t\tpush(\"punctuation\", char);\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (text.startsWith(\"true\", index) || text.startsWith(\"false\", index)) {\n\t\t\tconst literal = text.startsWith(\"true\", index) ? \"true\" : \"false\";\n\t\t\tpush(\"boolean\", literal);\n\t\t\tindex += literal.length;\n\t\t\tcontinue;\n\t\t}\n\t\tif (text.startsWith(\"null\", index)) {\n\t\t\tpush(\"null\", \"null\");\n\t\t\tindex += 4;\n\t\t\tcontinue;\n\t\t}\n\t\tlet end = index;\n\t\twhile (end < text.length && !\"{}[],:\\\" \\n\t\\r\".includes(text[end])) end += 1;\n\t\tconst raw = text.slice(index, Math.max(end, index + 1));\n\t\tpush(NUMBER_PATTERN.test(raw) ? \"number\" : \"other\", raw);\n\t\tindex += raw.length;\n\t}\n\treturn tokens;\n}\n/**\n* Finds the first JSON object or array inside a log message.\n*\n* Whole messages are handled by {@link detectJson}; this also copes with the\n* common \"prefix then payload\" shape (`2026-01-01 INFO {\"level\":\"info\"}`), which\n* is what the viewer expands when pretty-printing is switched off.\n*\n* Strings and escapes are respected while matching brackets, so a `}` inside a\n* message value cannot end the scan early.\n*/\nfunction findJsonInMessage(message) {\n\tif (typeof message !== \"string\") return null;\n\tconst whole = detectJson(message);\n\tif (whole !== null) return whole;\n\tfor (let index = 0; index < message.length; index += 1) {\n\t\tconst opener = message[index];\n\t\tif (opener !== \"{\" && opener !== \"[\") continue;\n\t\tconst closer = opener === \"{\" ? \"}\" : \"]\";\n\t\tlet depth = 0;\n\t\tlet inString = false;\n\t\tlet escaped = false;\n\t\tfor (let scan = index; scan < message.length; scan += 1) {\n\t\t\tconst char = message[scan];\n\t\t\tif (inString) {\n\t\t\t\tif (escaped) escaped = false;\n\t\t\t\telse if (char === \"\\\\\") escaped = true;\n\t\t\t\telse if (char === \"\\\"\") inString = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"\\\"\") {\n\t\t\t\tinString = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === opener) depth += 1;\n\t\t\telse if (char === closer) {\n\t\t\t\tdepth -= 1;\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\tconst candidate = message.slice(index, scan + 1);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst parsed = JSON.parse(candidate);\n\t\t\t\t\t\tif (parsed !== null && typeof parsed === \"object\") return parsed;\n\t\t\t\t\t} catch {}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n//#endregion\n//#region src/lib/request-duration.ts\n/** Explicit event duration in milliseconds; malformed or negative values are ignored. */\nfunction eventDurationMs(message) {\n\tconst payload = findJsonInMessage(message);\n\tif (payload === null || typeof payload !== \"object\" || Array.isArray(payload)) return 0;\n\tconst record = payload;\n\tfor (const key of [\"duration\", \"durationMs\"]) {\n\t\tconst value = record[key];\n\t\tif (typeof value !== \"number\" && (typeof value !== \"string\" || value.trim() === \"\")) continue;\n\t\tconst duration = Number(value);\n\t\tif (Number.isFinite(duration) && duration >= 0 && duration <= Number.MAX_SAFE_INTEGER) return duration;\n\t}\n\treturn 0;\n}\n//#endregion\n//#region src/lib/log-buffer.ts\n/**\n* Pure client-side log storage and filtering for the watch-tail UI.\n*\n* Design decisions (kept in one place so the UI stays predictable):\n*\n* - The visible buffer is a fixed-capacity ring buffer. When it is full the oldest line is\n* dropped, so memory stays bounded while tailing a busy group.\n* - Pausing keeps the SSE connection open and keeps receiving events. Incoming events are held in\n* a bounded pending buffer instead of the visible buffer, and are flushed in arrival order when\n* the user resumes.\n*/\n/** Maximum number of lines kept in the visible client buffer. */\nvar DEFAULT_CAPACITY = 5e3;\nvar ERROR_PATTERN = /\\b(ERROR|FATAL|CRITICAL|CRIT|PANIC|EXCEPTION|TRACEBACK|SEVERE|FAILED|FAILURE)\\b/;\nvar WARN_PATTERN = /\\b(WARN|WARNING)\\b/;\nvar DEBUG_PATTERN = /\\b(DEBUG|TRACE|VERBOSE)\\b/;\n/** Payload keys checked, in order, for a level the producer declared. */\nvar LEVEL_KEYS = [\n\t\"level\",\n\t\"severity\",\n\t\"lvl\",\n\t\"logLevel\",\n\t\"log_level\"\n];\n/**\n* Declared level words mapped onto the four levels the UI knows.\n*\n* The vocabulary is deliberately small: `fatal` and `critical` are errors to\n* everyone reading a log, and collapsing them keeps the filter and the colours\n* honest instead of inventing levels nothing else understands.\n*/\nvar LEVEL_WORDS = {\n\ttrace: \"debug\",\n\tverbose: \"debug\",\n\tdebug: \"debug\",\n\tinfo: \"info\",\n\tinformation: \"info\",\n\tnotice: \"info\",\n\tnote: \"info\",\n\twarn: \"warn\",\n\twarning: \"warn\",\n\terror: \"error\",\n\terr: \"error\",\n\texception: \"error\",\n\tfatal: \"error\",\n\tcritical: \"error\",\n\tcrit: \"error\",\n\tpanic: \"error\",\n\tsevere: \"error\",\n\talert: \"error\",\n\temergency: \"error\"\n};\n/**\n* Bunyan/pino style numeric levels.\n*\n* Only exact known values are mapped: a bare number such as `{\"level\":0}` means\n* different things in different loggers, so an unknown number falls through to\n* the text heuristic instead of being guessed at.\n*/\nvar NUMERIC_LEVELS = {\n\t10: \"debug\",\n\t20: \"debug\",\n\t30: \"info\",\n\t40: \"warn\",\n\t50: \"error\",\n\t60: \"error\"\n};\n/** True when a value is one of the four known levels. */\nfunction isLogLevel(value) {\n\treturn value === \"error\" || value === \"warn\" || value === \"info\" || value === \"debug\";\n}\n/** Converts one declared JSON value into a level, or `null` when unrecognised. */\nfunction levelFromDeclared(value) {\n\tif (typeof value === \"number\" && Number.isFinite(value)) return NUMERIC_LEVELS[value] ?? null;\n\tif (typeof value !== \"string\") return null;\n\tconst word = value.trim().toLowerCase();\n\tif (word.length === 0) return null;\n\treturn LEVEL_WORDS[word] ?? null;\n}\n/**\n* Level the payload declares, when the line carries a JSON object with a known\n* level key. Whole messages and \"prefix then payload\" lines are both handled,\n* by the same parser the viewer uses to pretty-print JSON.\n*/\nfunction declaredLevel(message) {\n\tconst payload = findJsonInMessage(message);\n\tif (payload === null || typeof payload !== \"object\" || Array.isArray(payload)) return null;\n\tconst record = payload;\n\tfor (const key of LEVEL_KEYS) {\n\t\tconst level = levelFromDeclared(record[key]);\n\t\tif (level !== null) return level;\n\t}\n\treturn null;\n}\n/**\n* Severity ranks, highest first, with `unknown` below every real level.\n*\n* One ordered table feeds the JavaScript helpers and the SQL the archive runs,\n* so \"most critical\" means exactly the same thing in the chart, in the log view\n* and in DuckDB. Insertion order is severity order.\n*/\nvar LEVEL_RANK = {\n\terror: 4,\n\twarn: 3,\n\tinfo: 2,\n\tdebug: 1,\n\tunknown: 0\n};\n/**\n* Worst level in a set of levels, or `null` when none of them has a level.\n*\n* This is what a request id group is coloured by: a group with one error line\n* and twenty info lines is an error, because that is what a reader needs to see.\n*/\nfunction mostCriticalLevel(levels) {\n\tlet best = null;\n\tlet bestRank = -1;\n\tfor (const level of levels) {\n\t\tif (level === null || level === void 0 || level === \"unknown\") continue;\n\t\tconst rank = LEVEL_RANK[level];\n\t\tif (rank > bestRank) {\n\t\t\tbestRank = rank;\n\t\t\tbest = level;\n\t\t}\n\t}\n\treturn best;\n}\n/**\n* Payload keys checked, in order, for a request id the producer declared.\n*\n* The list is deliberately about the *request*: a trace id, a session id or a\n* tenant id names something else and must not collapse unrelated lines.\n*/\nvar REQUEST_ID_KEYS = [\n\t\"requestId\",\n\t\"request_id\",\n\t\"requestID\",\n\t\"reqId\",\n\t\"req_id\",\n\t\"awsRequestId\",\n\t\"aws_request_id\",\n\t\"xRequestId\",\n\t\"x_request_id\",\n\t\"x-request-id\",\n\t\"X-Request-Id\"\n];\n/** Values that look like an id but mean \"there is none\". */\nvar REQUEST_ID_PLACEHOLDERS = /* @__PURE__ */ new Set([\n\t\"none\",\n\t\"null\",\n\t\"undefined\",\n\t\"n/a\",\n\t\"na\",\n\t\"unknown\",\n\t\"test\",\n\t\"-\",\n\t\"{{requestid}}\",\n\t\"${requestid}\"\n]);\n/** Shortest value treated as a request id, so `id: 1` is not a grouping key. */\nvar REQUEST_ID_MIN_LENGTH = 4;\n/** Characters a request id is made of; anything with a space is not an id. */\nvar REQUEST_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:=-]*$/;\n/**\n* `RequestId: 1234-abcd`, `request_id=abc.def`, `x-request-id: 8f2c`: the\n* separators and the casing both vary, so one pattern covers them.\n*\n* A bare UUID is deliberately *not* matched. Plenty of log lines carry a\n* correlation id, a span id or an uploaded file's id, and grouping by one of\n* those would invent requests that never existed.\n*/\nvar REQUEST_ID_TEXT = /\\brequest[\\s_-]?id\\b\\s*[:=]\\s*\"?([A-Za-z0-9][A-Za-z0-9._:=-]*)\"?/i;\n/** Trims trailing punctuation a sentence adds after an id. */\nfunction cleanRequestId(value) {\n\tconst trimmed = value.replace(/[.,;:]+$/, \"\").trim();\n\tif (trimmed.length < REQUEST_ID_MIN_LENGTH) return null;\n\tif (REQUEST_ID_PLACEHOLDERS.has(trimmed.toLowerCase())) return null;\n\treturn REQUEST_ID_PATTERN.test(trimmed) ? trimmed : null;\n}\n/** Request id the payload declares, when the line carries a JSON object. */\nfunction declaredRequestId(message) {\n\tconst payload = findJsonInMessage(message);\n\tif (payload === null || typeof payload !== \"object\" || Array.isArray(payload)) return null;\n\tconst record = payload;\n\tfor (const key of REQUEST_ID_KEYS) {\n\t\tconst value = record[key];\n\t\tif (typeof value === \"string\") {\n\t\t\tconst cleaned = cleanRequestId(value);\n\t\t\tif (cleaned !== null) return cleaned;\n\t\t}\n\t\tif (typeof value === \"number\" && Number.isFinite(value)) return String(value);\n\t}\n\treturn null;\n}\n/**\n* Detects the request id of a log line, or returns `null` when it has none.\n*\n* A declared payload key wins; the text form is the fallback for the many logs\n* that print their id instead of emitting JSON. Both paths return the id\n* verbatim, because it is an identifier - folding case would merge distinct ids\n* on the one hand and lie about what the log said on the other.\n*/\nfunction detectRequestId(message) {\n\tconst text = message ?? \"\";\n\tif (text === \"\") return null;\n\tconst declared = declaredRequestId(text);\n\tif (declared !== null) return declared;\n\tconst match = REQUEST_ID_TEXT.exec(text);\n\treturn match === null ? null : cleanRequestId(match[1] ?? \"\");\n}\n/**\n* Detects the severity of a log line.\n*\n* A level the payload declares wins, because it is a statement of fact; the\n* text heuristic is the fallback for the many logs that declare nothing. The\n* heuristic matches level words anywhere in the line, so\n* `{\"level\":\"info\",\"msg\":\"retry after error count 0\"}` is `info`, not `error`.\n*/\nfunction detectLevelWithSource(message) {\n\tconst declared = declaredLevel(message ?? \"\");\n\tif (declared !== null) return {\n\t\tlevel: declared,\n\t\tsource: \"json\"\n\t};\n\tconst upper = (message ?? \"\").toUpperCase();\n\tif (ERROR_PATTERN.test(upper)) return {\n\t\tlevel: \"error\",\n\t\tsource: \"text\"\n\t};\n\tif (WARN_PATTERN.test(upper)) return {\n\t\tlevel: \"warn\",\n\t\tsource: \"text\"\n\t};\n\tif (DEBUG_PATTERN.test(upper)) return {\n\t\tlevel: \"debug\",\n\t\tsource: \"text\"\n\t};\n\treturn {\n\t\tlevel: null,\n\t\tsource: null\n\t};\n}\n/**\n* Guesses the severity of a log line from its text, or returns `null` when the\n* line carries no signal at all (a stack-trace continuation, for example).\n*/\nfunction detectLevel(message) {\n\treturn detectLevelWithSource(message).level;\n}\n/** Level of an event: what the server detected, else a guess from the text. */\nfunction effectiveLevel(event) {\n\treturn event.level !== void 0 ? event.level : detectLevel(event.message);\n}\n/** True when an event passes a level filter; a `null` filter accepts every line. */\nfunction matchesLevel(event, level) {\n\treturn level === null || effectiveLevel(event) === level;\n}\n/** Filters events by level, keeping every line when `level` is `null`. */\nfunction filterByLevel(events, level) {\n\tif (level === null) return events.slice();\n\treturn events.filter((event) => matchesLevel(event, level));\n}\n/** Tailwind text colour class for a severity; an unknown level stays neutral. */\nfunction levelColorClass(level) {\n\tswitch (level) {\n\t\tcase \"error\": return \"text-red-400\";\n\t\tcase \"warn\": return \"text-amber-300\";\n\t\tcase \"debug\": return \"text-neutral-500\";\n\t\tdefault: return \"text-neutral-200\";\n\t}\n}\n/** Stable key for rendering a log line, since event ids can repeat or be missing. */\nfunction eventKey(event, index) {\n\treturn `${event.id ?? \"no-id\"}:${event.timestamp}:${index}`;\n}\n/** Case-insensitive substring match over the message and the stream name. */\nfunction matchesFilter(event, query) {\n\tconst needle = (query ?? \"\").trim().toLowerCase();\n\tif (needle === \"\") return true;\n\treturn `${event.message ?? \"\"} ${event.streamName ?? \"\"}`.toLowerCase().includes(needle);\n}\n/** Returns the events matching `query`, in arrival order. */\nfunction filterEvents(events, query) {\n\tif ((query ?? \"\").trim() === \"\") return events.slice();\n\treturn events.filter((event) => matchesFilter(event, query));\n}\n/** Creates an array of `length` undefined slots. */\nfunction emptySlots(length) {\n\treturn Array.from({ length });\n}\n/**\n* Fixed-capacity ring buffer that overwrites the oldest item once it is full.\n*/\nvar LogRingBuffer = class {\n\t/** Maximum number of items kept. */\n\tcapacity;\n\t#items;\n\t#start = 0;\n\t#size = 0;\n\t#dropped = 0;\n\tconstructor(capacity = DEFAULT_CAPACITY) {\n\t\tif (!Number.isInteger(capacity) || capacity <= 0) throw new RangeError(`capacity must be a positive integer, received ${capacity}`);\n\t\tthis.capacity = capacity;\n\t\tthis.#items = emptySlots(capacity);\n\t}\n\t/** Number of items currently stored. */\n\tget size() {\n\t\treturn this.#size;\n\t}\n\t/** Number of items discarded because the buffer was full. */\n\tget dropped() {\n\t\treturn this.#dropped;\n\t}\n\t/** True when the buffer holds `capacity` items. */\n\tget full() {\n\t\treturn this.#size === this.capacity;\n\t}\n\t/** Appends one item, dropping the oldest item when the buffer is full. */\n\tpush(item) {\n\t\tif (this.#size === this.capacity) {\n\t\t\tthis.#dropped += 1;\n\t\t\tthis.#start = (this.#start + 1) % this.capacity;\n\t\t\tthis.#size -= 1;\n\t\t}\n\t\tconst index = (this.#start + this.#size) % this.capacity;\n\t\tthis.#items[index] = item;\n\t\tthis.#size += 1;\n\t}\n\t/** Appends several items in order. */\n\tpushMany(items) {\n\t\tfor (const item of items) this.push(item);\n\t}\n\t/** Copies the stored items into an array ordered oldest to newest. */\n\ttoArray() {\n\t\tconst output = emptySlots(this.#size);\n\t\tfor (let offset = 0; offset < this.#size; offset += 1) output[offset] = this.#items[(this.#start + offset) % this.capacity];\n\t\treturn output;\n\t}\n\t/** Oldest stored item, or `undefined` when empty. */\n\tfirst() {\n\t\treturn this.#size === 0 ? void 0 : this.#items[this.#start];\n\t}\n\t/** Newest stored item, or `undefined` when empty. */\n\tlast() {\n\t\treturn this.#size === 0 ? void 0 : this.#items[(this.#start + this.#size - 1) % this.capacity];\n\t}\n\t/** Removes every item and resets the dropped counter. */\n\tclear() {\n\t\tthis.#items = emptySlots(this.capacity);\n\t\tthis.#start = 0;\n\t\tthis.#size = 0;\n\t\tthis.#dropped = 0;\n\t}\n};\n/**\n* Log store used by the UI: a visible ring buffer plus a pending buffer that fills up while the\n* view is paused. `push()` never drops silent data, it either appends to the visible buffer or to\n* the pending buffer; `resume()` moves the pending events into the visible buffer in order.\n*/\nvar LogStore = class {\n\tbuffer;\n\t#pending;\n\t#paused = false;\n\tconstructor(capacity = DEFAULT_CAPACITY) {\n\t\tthis.buffer = new LogRingBuffer(capacity);\n\t\tthis.#pending = new LogRingBuffer(capacity);\n\t}\n\t/** True when incoming events are buffered instead of appended to the visible buffer. */\n\tget paused() {\n\t\treturn this.#paused;\n\t}\n\t/** Number of visible lines. */\n\tget size() {\n\t\treturn this.buffer.size;\n\t}\n\t/** Number of lines held back while paused. */\n\tget pendingCount() {\n\t\treturn this.#pending.size;\n\t}\n\t/** Number of visible lines dropped because the buffer was full. */\n\tget droppedCount() {\n\t\treturn this.buffer.dropped;\n\t}\n\t/** Appends events to the visible buffer, or holds them back while paused. */\n\tpush(events) {\n\t\tif (this.#paused) {\n\t\t\tthis.#pending.pushMany(events);\n\t\t\treturn;\n\t\t}\n\t\tthis.buffer.pushMany(events);\n\t}\n\t/** Pauses or resumes appending. Resuming flushes the pending events immediately. */\n\tsetPaused(paused) {\n\t\tif (paused === this.#paused) return [];\n\t\tthis.#paused = paused;\n\t\treturn paused ? [] : this.flush();\n\t}\n\t/** Pauses appending to the visible buffer. */\n\tpause() {\n\t\tthis.#paused = true;\n\t}\n\t/** Resumes appending and returns the events flushed from the pending buffer. */\n\tresume() {\n\t\tthis.#paused = false;\n\t\treturn this.flush();\n\t}\n\t/** Moves every pending event into the visible buffer, oldest first. */\n\tflush() {\n\t\tconst flushed = this.#pending.toArray();\n\t\tthis.#pending.clear();\n\t\tthis.buffer.pushMany(flushed);\n\t\treturn flushed;\n\t}\n\t/** Copies the visible lines, oldest first. */\n\ttoArray() {\n\t\treturn this.buffer.toArray();\n\t}\n\t/** Empties the visible buffer and discards pending events. */\n\tclear() {\n\t\tthis.buffer.clear();\n\t\tthis.#pending.clear();\n\t}\n};\n//#endregion\nexport { tokenizeJson as _, detectLevelWithSource as a, eventKey as c, isLogLevel as d, levelColorClass as f, formatLogMessage as g, findJsonInMessage as h, detectLevel as i, filterByLevel as l, eventDurationMs as m, LEVEL_RANK as n, detectRequestId as o, mostCriticalLevel as p, LogStore as r, effectiveLevel as s, DEFAULT_CAPACITY as t, filterEvents as u };\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  //#region src/lib/regions.ts
2
2
  /**
3
- * Regions offered by the picker when `WATCH_STREAM_REGIONS` is not set.
3
+ * Regions offered by the picker when `WATCH_TAIL_REGIONS` is not set.
4
4
  *
5
5
  * The list is every AWS region in the standard `aws` partition that publishes a
6
6
  * CloudWatch Logs endpoint, taken from the AWS CLI's own endpoint data
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * Shared by the server (`src/lib/server/regions.ts`) and the browser
12
12
  * (`src/lib/groups-client.ts`) so both agree on the same set.
13
- * Narrow it per deployment with `WATCH_STREAM_REGIONS=eu-west-1,af-south-1`.
13
+ * Narrow it per deployment with `WATCH_TAIL_REGIONS=eu-west-1,af-south-1`.
14
14
  */
15
15
  var REGION_CODES = [
16
16
  "us-east-1",
@@ -49,4 +49,4 @@ var REGION_CODES = [
49
49
  ];
50
50
 
51
51
  export { REGION_CODES as R };
52
- //# sourceMappingURL=regions.js-IQPMyP5C.js.map
52
+ //# sourceMappingURL=regions.js-COf7DgnH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regions.js-COf7DgnH.js","sources":["../../../../.svelte-kit/output/server/chunks/regions.js"],"sourcesContent":["//#region src/lib/regions.ts\n/**\n* Regions offered by the picker when `WATCH_TAIL_REGIONS` is not set.\n*\n* The list is every AWS region in the standard `aws` partition that publishes a\n* CloudWatch Logs endpoint, taken from the AWS CLI's own endpoint data\n* (`botocore/data/endpoints.json`, filtered to the `aws` partition and with the\n* FIPS pseudo-regions removed). `af-south-1` (Africa, Cape Town) is included.\n* The China, GovCloud and secret partitions are excluded on purpose.\n*\n* Shared by the server (`src/lib/server/regions.ts`) and the browser\n* (`src/lib/groups-client.ts`) so both agree on the same set.\n* Narrow it per deployment with `WATCH_TAIL_REGIONS=eu-west-1,af-south-1`.\n*/\nvar REGION_CODES = [\n\t\"us-east-1\",\n\t\"us-east-2\",\n\t\"us-west-1\",\n\t\"us-west-2\",\n\t\"ca-central-1\",\n\t\"ca-west-1\",\n\t\"mx-central-1\",\n\t\"sa-east-1\",\n\t\"eu-west-1\",\n\t\"eu-west-2\",\n\t\"eu-west-3\",\n\t\"eu-central-1\",\n\t\"eu-central-2\",\n\t\"eu-north-1\",\n\t\"eu-south-1\",\n\t\"eu-south-2\",\n\t\"af-south-1\",\n\t\"me-south-1\",\n\t\"me-central-1\",\n\t\"il-central-1\",\n\t\"ap-east-1\",\n\t\"ap-south-1\",\n\t\"ap-south-2\",\n\t\"ap-southeast-1\",\n\t\"ap-southeast-2\",\n\t\"ap-southeast-3\",\n\t\"ap-southeast-4\",\n\t\"ap-southeast-5\",\n\t\"ap-southeast-6\",\n\t\"ap-southeast-7\",\n\t\"ap-northeast-1\",\n\t\"ap-northeast-2\",\n\t\"ap-northeast-3\"\n];\n//#endregion\nexport { REGION_CODES as t };\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,YAAY,GAAG;AACnB,CAAC,WAAW;AACZ,CAAC,WAAW;AACZ,CAAC,WAAW;AACZ,CAAC,WAAW;AACZ,CAAC,cAAc;AACf,CAAC,WAAW;AACZ,CAAC,cAAc;AACf,CAAC,WAAW;AACZ,CAAC,WAAW;AACZ,CAAC,WAAW;AACZ,CAAC,WAAW;AACZ,CAAC,cAAc;AACf,CAAC,cAAc;AACf,CAAC,YAAY;AACb,CAAC,YAAY;AACb,CAAC,YAAY;AACb,CAAC,YAAY;AACb,CAAC,YAAY;AACb,CAAC,cAAc;AACf,CAAC,cAAc;AACf,CAAC,WAAW;AACZ,CAAC,YAAY;AACb,CAAC,YAAY;AACb,CAAC,gBAAgB;AACjB,CAAC,gBAAgB;AACjB,CAAC,gBAAgB;AACjB,CAAC,gBAAgB;AACjB,CAAC,gBAAgB;AACjB,CAAC,gBAAgB;AACjB,CAAC,gBAAgB;AACjB,CAAC,gBAAgB;AACjB,CAAC,gBAAgB;AACjB,CAAC;AACD;;"}
@@ -1,11 +1,11 @@
1
- import { d as detectRequestId, m as mostCriticalLevel, e as effectiveLevel } from './log-buffer.js-BI_gQOls.js';
1
+ import { d as detectRequestId, m as mostCriticalLevel, c as effectiveLevel, e as eventDurationMs } from './log-buffer.js-A9FA-Qv8.js';
2
2
 
3
3
  //#region src/lib/request-groups.ts
4
4
  /**
5
5
  * Request grouping: the one place that decides what a "request" is.
6
6
  *
7
7
  * CloudWatch Logs has no concept of a request. A request is a set of lines that
8
- * share a detected request id - a Lambda `REPORT RequestId: ...` line, an API
8
+ * share a log group and detected request id - a Lambda `REPORT RequestId: ...` line, an API
9
9
  * Gateway access log, a framework's structured `requestId` - and the same id
10
10
  * must produce the same group in the log view and in the chart. Both call the
11
11
  * helpers here, so a line that reads as one request in one view reads as one
@@ -37,15 +37,16 @@ function requestIdOf(event) {
37
37
  function requestLevel(events) {
38
38
  return mostCriticalLevel(events.map((event) => effectiveLevel(event))) ?? "unknown";
39
39
  }
40
- /** Groups events by request id, keeping every timestamp and byte of the originals. */
40
+ /** Groups events by log group and request id, keeping every timestamp and byte of the originals. */
41
41
  function collectRequests(events) {
42
42
  const byId = /* @__PURE__ */ new Map();
43
43
  events.forEach((event, index) => {
44
44
  const id = requestIdOf(event);
45
45
  if (id === null) return;
46
- const existing = byId.get(id);
46
+ const key = JSON.stringify([event.group ?? "", id]);
47
+ const existing = byId.get(key);
47
48
  if (existing === void 0) {
48
- byId.set(id, {
49
+ byId.set(key, {
49
50
  id,
50
51
  level: "unknown",
51
52
  first: event.timestamp,
@@ -93,7 +94,7 @@ function requestRows(events) {
93
94
  if (group !== void 0) {
94
95
  rows.push({
95
96
  kind: "request",
96
- key: `req:${group.id}`,
97
+ key: `req:${JSON.stringify([group.events[0]?.event.group ?? "", group.id])}`,
97
98
  request: group
98
99
  });
99
100
  return;
@@ -285,6 +286,31 @@ function isMeaningfulBrush(range, window, bucketMs) {
285
286
  if (span < Math.max(3e4, bucketMs * 2)) return false;
286
287
  return span <= windowSpan * MAX_BRUSH_FRACTION;
287
288
  }
289
+ /** One point per identified request, using its observed first/last events in the window. */
290
+ function requestDurations(events, options) {
291
+ const byGroup = /* @__PURE__ */ new Map();
292
+ for (const event of events) {
293
+ if (!Number.isFinite(event.timestamp) || event.timestamp < options.from || event.timestamp > options.to) continue;
294
+ const group = event.group ?? options.fallbackGroup ?? "";
295
+ const rows = byGroup.get(group) ?? [];
296
+ rows.push(event);
297
+ byGroup.set(group, rows);
298
+ }
299
+ const points = [];
300
+ for (const [group, rows] of byGroup) for (const request of collectRequests(rows)) {
301
+ if (options.level && request.level !== options.level) continue;
302
+ const last = request.events.reduce((latest, entry) => entry.event.timestamp >= latest.timestamp ? entry.event : latest, request.events[0].event);
303
+ points.push({
304
+ t: request.first,
305
+ group,
306
+ level: request.level,
307
+ events: 1,
308
+ requestId: request.id,
309
+ durationMs: request.last - request.first + eventDurationMs(last.message)
310
+ });
311
+ }
312
+ return points.toSorted((a, b) => a.t - b.t || a.group.localeCompare(b.group) || (a.requestId ?? "").localeCompare(b.requestId ?? ""));
313
+ }
288
314
 
289
- export { LEVEL_LABELS as L, SERIES_LEVEL_COLOR as S, bucketEvents as b, groupByLevel as g, isMeaningfulBrush as i, requestRows as r };
290
- //# sourceMappingURL=series-buckets.js-BjigySff.js.map
315
+ export { LEVEL_LABELS as L, SERIES_LEVEL_COLOR as S, requestIdOf as a, requestDurations as b, collectRequests as c, bucketEvents as d, groupByLevel as g, isMeaningfulBrush as i, requestRows as r };
316
+ //# sourceMappingURL=series-buckets.js-DFGWkob5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"series-buckets.js-DFGWkob5.js","sources":["../../../../.svelte-kit/output/server/chunks/series-buckets.js"],"sourcesContent":["import { m as eventDurationMs, o as detectRequestId, p as mostCriticalLevel, s as effectiveLevel } from \"./log-buffer.js\";\n//#region src/lib/request-groups.ts\n/**\n* Request grouping: the one place that decides what a \"request\" is.\n*\n* CloudWatch Logs has no concept of a request. A request is a set of lines that\n* share a log group and detected request id - a Lambda `REPORT RequestId: ...` line, an API\n* Gateway access log, a framework's structured `requestId` - and the same id\n* must produce the same group in the log view and in the chart. Both call the\n* helpers here, so a line that reads as one request in one view reads as one\n* request in the other.\n*\n* Design decisions:\n*\n* - A request is placed where it *starts* (its first line), because a request\n* that logs for two minutes is one event that happened, not two.\n* - A request's level is its most critical line. An error is what a reader\n* needs to see, even when twenty lines around it are info.\n* - Lines without a request id are not grouped: they keep their own row and\n* their own chart mark, which is honest about what the log contains.\n*/\n/**\n* Request id of an event.\n*\n* A value the server already detected wins, because it is the same value the\n* archive stored; only an event that carries no verdict is detected here.\n*/\nfunction requestIdOf(event) {\n\tif (event.requestId !== void 0) {\n\t\tconst declared = event.requestId;\n\t\treturn declared === null || declared === \"\" ? null : declared;\n\t}\n\treturn detectRequestId(event.message ?? \"\");\n}\n/** Level of a request: its worst line, or `unknown` when no line has a level. */\nfunction requestLevel(events) {\n\treturn mostCriticalLevel(events.map((event) => effectiveLevel(event))) ?? \"unknown\";\n}\n/** Groups events by log group and request id, keeping every timestamp and byte of the originals. */\nfunction collectRequests(events) {\n\tconst byId = /* @__PURE__ */ new Map();\n\tevents.forEach((event, index) => {\n\t\tconst id = requestIdOf(event);\n\t\tif (id === null) return;\n\t\tconst key = JSON.stringify([event.group ?? \"\", id]);\n\t\tconst existing = byId.get(key);\n\t\tif (existing === void 0) {\n\t\t\tbyId.set(key, {\n\t\t\t\tid,\n\t\t\t\tlevel: \"unknown\",\n\t\t\t\tfirst: event.timestamp,\n\t\t\t\tlast: event.timestamp,\n\t\t\t\tevents: [{\n\t\t\t\t\tevent,\n\t\t\t\t\tindex\n\t\t\t\t}]\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\texisting.events.push({\n\t\t\tevent,\n\t\t\tindex\n\t\t});\n\t\tif (Number.isFinite(event.timestamp)) {\n\t\t\tif (event.timestamp < existing.first) existing.first = event.timestamp;\n\t\t\tif (event.timestamp > existing.last) existing.last = event.timestamp;\n\t\t}\n\t});\n\tconst groups = [...byId.values()];\n\tfor (const group of groups) group.level = requestLevel(group.events.map((entry) => entry.event));\n\treturn groups;\n}\n/** True when an event belongs to a request. */\nfunction hasRequestId(event) {\n\treturn requestIdOf(event) !== null;\n}\n/**\n* Builds the log view's rows for a buffer.\n*\n* A request is placed where its first line appeared, so the view stays in time\n* order and a request never jumps down the list when its last line lands. The\n* lines inside a request keep their own order.\n*/\nfunction requestRows(events) {\n\tconst at = /* @__PURE__ */ new Map();\n\tfor (const group of collectRequests(events)) {\n\t\tconst first = group.events[0];\n\t\tif (first !== void 0) at.set(first.index, group);\n\t}\n\tconst rows = [];\n\tevents.forEach((event, index) => {\n\t\tconst group = at.get(index);\n\t\tif (group !== void 0) {\n\t\t\trows.push({\n\t\t\t\tkind: \"request\",\n\t\t\t\tkey: `req:${JSON.stringify([group.events[0]?.event.group ?? \"\", group.id])}`,\n\t\t\t\trequest: group\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (hasRequestId(event)) return;\n\t\trows.push({\n\t\t\tkind: \"line\",\n\t\t\tkey: `line:${index}`,\n\t\t\tevent,\n\t\t\tindex\n\t\t});\n\t});\n\treturn rows;\n}\n/**\n* Counts requests into buckets, one mark per request, per group and level.\n*\n* A request is counted in the bucket its first line falls in, and only when\n* that first line is inside the window: a request that started before the window\n* is not re-counted in every bucket it touches. Lines that belong to no request\n* are still counted, each as one mark, so nothing disappears from the chart when\n* grouping is on. The level filter is applied to the request's most critical\n* level, matching what the archive answers, so the chips mean the same thing in\n* both sources.\n*/\nfunction bucketRequests(events, options) {\n\tconst bucketMs = options.bucketMs > 0 ? Math.round(options.bucketMs) : 6e4;\n\tconst levelFilter = options.level ?? null;\n\tconst fallbackGroup = options.fallbackGroup ?? \"\";\n\tconst marks = [];\n\tfor (const group of collectRequests(events)) marks.push({\n\t\tt: group.first,\n\t\tgroup: group.events[0]?.event.group ?? fallbackGroup,\n\t\tlevel: group.level\n\t});\n\tfor (const event of events) {\n\t\tif (requestIdOf(event) !== null) continue;\n\t\tmarks.push({\n\t\t\tt: event.timestamp,\n\t\t\tgroup: event.group ?? fallbackGroup,\n\t\t\tlevel: effectiveLevel(event) ?? \"unknown\"\n\t\t});\n\t}\n\tconst counts = /* @__PURE__ */ new Map();\n\tfor (const mark of marks) {\n\t\tconst timestamp = mark.t;\n\t\tif (!Number.isFinite(timestamp)) continue;\n\t\tif (timestamp < options.from || timestamp >= options.to) continue;\n\t\tif (levelFilter !== null && mark.level !== levelFilter) continue;\n\t\tconst t = Math.floor(timestamp / bucketMs) * bucketMs;\n\t\tconst name = mark.group;\n\t\tconst key = `${t}\\u0000${name}\\u0000${mark.level}`;\n\t\tconst existing = counts.get(key);\n\t\tif (existing === void 0) counts.set(key, {\n\t\t\tt,\n\t\t\tgroup: name,\n\t\t\tlevel: mark.level,\n\t\t\tevents: 1\n\t\t});\n\t\telse existing.events += 1;\n\t}\n\treturn [...counts.values()].toSorted((a, b) => a.t === b.t ? a.level.localeCompare(b.level) : a.t - b.t);\n}\n//#endregion\n//#region src/lib/series-buckets.ts\n/**\n* Client-side bucketing for the chart.\n*\n* The archive answers `/api/series` with counts it can compute in DuckDB, but a\n* CloudWatch view has no aggregate API, so the events already streamed into the\n* view are bucketed here instead. Both paths produce the same\n* {@link SeriesPoint} shape, so the chart has one data contract.\n*/\n/** Severity order used wherever levels are listed. */\nvar LEVEL_ORDER = [\n\t\"error\",\n\t\"warn\",\n\t\"info\",\n\t\"debug\",\n\t\"unknown\"\n];\n/** Label shown for a level. */\nvar LEVEL_LABELS = {\n\terror: \"Error\",\n\twarn: \"Warn\",\n\tinfo: \"Info\",\n\tdebug: \"Debug\",\n\tunknown: \"No level\"\n};\n/**\n* Chart palette per level, matching the colours the log viewer uses for lines.\n*\n* SVG needs real colour values rather than Tailwind classes, so the palette is\n* kept next to the level helpers instead of in the component.\n*/\nvar SERIES_LEVEL_COLOR = {\n\terror: \"#f87171\",\n\twarn: \"#fcd34d\",\n\tinfo: \"#a3a3a3\",\n\tdebug: \"#737373\",\n\tunknown: \"#525252\"\n};\n/** Bucket width used when a caller does not ask for one. */\nvar DEFAULT_BUCKET_MS = 6e4;\n/** Level of an event as the chart counts it. */\nfunction seriesLevelOf(event) {\n\treturn effectiveLevel(event) ?? \"unknown\";\n}\n/**\n* Counts events into buckets of one width, per group and level.\n*\n* Events outside the window are ignored, as are events without a usable\n* timestamp: the chart describes exactly the window it is drawn for. With\n* `byRequest`, a request is one mark instead of its lines being many, which is\n* the same thing the archive counts in SQL.\n*/\nfunction bucketEvents(events, options) {\n\tconst requested = options.bucketMs ?? 6e4;\n\tconst bucketMs = Number.isFinite(requested) && requested > 0 ? Math.round(requested) : DEFAULT_BUCKET_MS;\n\tconst levelFilter = options.level ?? null;\n\tconst fallbackGroup = options.fallbackGroup ?? \"\";\n\tif (options.byRequest === true) return bucketRequests(events, {\n\t\tfrom: options.from,\n\t\tto: options.to,\n\t\tbucketMs,\n\t\tlevel: levelFilter,\n\t\tfallbackGroup\n\t});\n\tconst counts = /* @__PURE__ */ new Map();\n\tfor (const event of events) {\n\t\tconst timestamp = event.timestamp;\n\t\tif (!Number.isFinite(timestamp)) continue;\n\t\tif (timestamp < options.from || timestamp >= options.to) continue;\n\t\tconst level = seriesLevelOf(event);\n\t\tif (levelFilter !== null && level !== levelFilter) continue;\n\t\tconst t = Math.floor(timestamp / bucketMs) * bucketMs;\n\t\tconst group = event.group ?? fallbackGroup;\n\t\tconst key = `${t}\\u0000${group}\\u0000${level}`;\n\t\tconst existing = counts.get(key);\n\t\tif (existing === void 0) counts.set(key, {\n\t\t\tt,\n\t\t\tgroup,\n\t\t\tlevel,\n\t\t\tevents: 1\n\t\t});\n\t\telse existing.events += 1;\n\t}\n\treturn [...counts.values()].toSorted((a, b) => a.t === b.t ? a.level.localeCompare(b.level) : a.t - b.t);\n}\n/**\n* Splits points into one series per level, in severity order.\n*\n* A level with no events is left out, so the legend only names what is drawn.\n*/\nfunction groupByLevel(points) {\n\tconst byLevel = /* @__PURE__ */ new Map();\n\tfor (const point of points) {\n\t\tconst bucket = byLevel.get(point.level);\n\t\tif (bucket === void 0) byLevel.set(point.level, [point]);\n\t\telse bucket.push(point);\n\t}\n\treturn LEVEL_ORDER.filter((level) => byLevel.has(level)).map((level) => {\n\t\tconst levelPoints = (byLevel.get(level) ?? []).toSorted((a, b) => a.t - b.t);\n\t\treturn {\n\t\t\tlevel,\n\t\t\tlabel: LEVEL_LABELS[level],\n\t\t\tpoints: levelPoints,\n\t\t\tevents: levelPoints.reduce((sum, point) => sum + point.events, 0)\n\t\t};\n\t});\n}\n/** Fraction of the window a brush must stay under to count as a zoom. */\nvar MAX_BRUSH_FRACTION = .98;\n/**\n* True when a brushed range is a deliberate zoom rather than a stray click.\n*\n* A pointer down and up a couple of pixels apart still produces a range (the\n* chart has a minimum selection width), and a double click on empty space\n* selects the whole domain. Acting on either would re-scope the log view to a\n* window with nothing in it, so a brush is only applied when it spans at least\n* two buckets and a floor of {@link MIN_BRUSH_MS}, and is narrower than almost\n* the whole window.\n*/\nfunction isMeaningfulBrush(range, window, bucketMs) {\n\tconst span = range.to - range.from;\n\tif (!Number.isFinite(span) || span <= 0) return false;\n\tconst windowSpan = window.to - window.from;\n\tif (!Number.isFinite(windowSpan) || windowSpan <= 0) return false;\n\tif (span < Math.max(3e4, bucketMs * 2)) return false;\n\treturn span <= windowSpan * MAX_BRUSH_FRACTION;\n}\n/** One point per identified request, using its observed first/last events in the window. */\nfunction requestDurations(events, options) {\n\tconst byGroup = /* @__PURE__ */ new Map();\n\tfor (const event of events) {\n\t\tif (!Number.isFinite(event.timestamp) || event.timestamp < options.from || event.timestamp > options.to) continue;\n\t\tconst group = event.group ?? options.fallbackGroup ?? \"\";\n\t\tconst rows = byGroup.get(group) ?? [];\n\t\trows.push(event);\n\t\tbyGroup.set(group, rows);\n\t}\n\tconst points = [];\n\tfor (const [group, rows] of byGroup) for (const request of collectRequests(rows)) {\n\t\tif (options.level && request.level !== options.level) continue;\n\t\tconst last = request.events.reduce((latest, entry) => entry.event.timestamp >= latest.timestamp ? entry.event : latest, request.events[0].event);\n\t\tpoints.push({\n\t\t\tt: request.first,\n\t\t\tgroup,\n\t\t\tlevel: request.level,\n\t\t\tevents: 1,\n\t\t\trequestId: request.id,\n\t\t\tdurationMs: request.last - request.first + eventDurationMs(last.message)\n\t\t});\n\t}\n\treturn points.toSorted((a, b) => a.t - b.t || a.group.localeCompare(b.group) || (a.requestId ?? \"\").localeCompare(b.requestId ?? \"\"));\n}\n//#endregion\nexport { isMeaningfulBrush as a, requestIdOf as c, groupByLevel as i, requestRows as l, SERIES_LEVEL_COLOR as n, requestDurations as o, bucketEvents as r, collectRequests as s, LEVEL_LABELS as t };\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { i as index_server_exports } from './index-server.js-DNLOKvM0.js';
2
2
  import './shared.js-CgjUIvRK.js';
3
3
  import './exports.js-ClPPfcHj.js';
4
4
  import { g as getContext, n as noop } from './server.js-CAEBuMIH.js';
5
- import './internal2.js-627EG4am.js';
5
+ import './internal2.js-BMcEVxqN.js';
6
6
  import './utils.js-BIlHjgGW.js';
7
7
 
8
8
  var is_legacy = noop.toString().includes("$$") || /function \w+\(\) \{\}/.test(noop.toString());
@@ -84,4 +84,4 @@ var page = {
84
84
  };
85
85
 
86
86
  export { page as p, replaceState as r };
87
- //# sourceMappingURL=state.js-DbqJPX0Y.js.map
87
+ //# sourceMappingURL=state.js-vZj9lo1I.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js-DbqJPX0Y.js","sources":["../../../../.svelte-kit/output/server/chunks/state.js"],"sourcesContent":["import { t as index_server_exports } from \"./index-server.js\";\nimport { y as noop } from \"./shared.js\";\nimport \"./internal.js\";\nimport \"./exports.js\";\nimport { Ut as noop$1, b as getContext } from \"./server.js\";\nimport \"./index-server2.js\";\nimport \"./internal2.js\";\nimport \"@sveltejs/kit/internal\";\nimport \"@sveltejs/kit/internal/server\";\nvar PRELOAD_PRIORITIES = {\n\ttap: 1,\n\thover: 2,\n\tviewport: 3,\n\teager: 4,\n\toff: -1,\n\tfalse: -1\n};\n({ ...PRELOAD_PRIORITIES }), PRELOAD_PRIORITIES.hover;\nvar updated_listener = { v: noop };\nvar updated;\nvar is_legacy = noop$1.toString().includes(\"$$\") || /function \\w+\\(\\) \\{\\}/.test(noop$1.toString());\nvar placeholder_url = \"a:\";\nif (is_legacy) {\n\tnew URL(placeholder_url);\n\tupdated = { current: false };\n} else {\n\tnew class Page {\n\t\tdata = {};\n\t\tform = null;\n\t\terror = null;\n\t\tparams = {};\n\t\troute = { id: null };\n\t\tstate = {};\n\t\tstatus = -1;\n\t\turl = new URL(placeholder_url);\n\t}();\n\tnew class Navigating {\n\t\tcurrent = null;\n\t}();\n\tupdated = new class Updated {\n\t\tcurrent = false;\n\t}();\n\tupdated_listener.v = () => updated.current = true;\n}\n//#endregion\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/runtime/client/client.js\n/** @import { RemoteFunctionDataNode, ServerNodesResponse, ServerRedirectNode } from 'types' */\n/** @import { CacheEntry } from './remote-functions/cache.svelte.js' */\n/** @import { Query } from './remote-functions/query/instance.svelte.js' */\n/** @import { LiveQuery } from './remote-functions/query-live/instance.svelte.js' */\nvar { onMount, tick } = index_server_exports;\n/**\n* Programmatically replace the current history entry with the given `page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://svelte.dev/docs/kit/shallow-routing).\n*\n* @param {string | URL} url\n* @param {App.PageState} state\n* @returns {void}\n*/\nfunction replaceState(url, state) {\n\tthrow new Error(\"Cannot call replaceState(...) on the server\");\n}\n//#endregion\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/runtime/app/state/server.js\nfunction context() {\n\treturn getContext(\"__request__\");\n}\n//#endregion\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/runtime/app/state/index.js\n/**\n* A read-only reactive object with information about the current page, serving several use cases:\n* - retrieving the combined `data` of all pages/layouts anywhere in your component tree (also see [loading data](https://svelte.dev/docs/kit/load))\n* - retrieving the current value of the `form` prop anywhere in your component tree (also see [form actions](https://svelte.dev/docs/kit/form-actions))\n* - retrieving the page state that was set through `goto`, `pushState` or `replaceState` (also see [goto](https://svelte.dev/docs/kit/$app-navigation#goto) and [shallow routing](https://svelte.dev/docs/kit/shallow-routing))\n* - retrieving metadata such as the URL you're on, the current route and its parameters, and whether or not there was an error\n*\n* ```svelte\n* <!--- file: +layout.svelte --->\n* <script>\n* \timport { page } from '$app/state';\n* <\\/script>\n*\n* <p>Currently at {page.url.pathname}</p>\n*\n* {#if page.error}\n* \t<span class=\"red\">Problem detected</span>\n* {:else}\n* \t<span class=\"small\">All systems operational</span>\n* {/if}\n* ```\n*\n* Changes to `page` are available exclusively with runes. (The legacy reactivity syntax will not reflect any changes)\n*\n* ```svelte\n* <!--- file: +page.svelte --->\n* <script>\n* \timport { page } from '$app/state';\n* \tconst id = $derived(page.params.id); // This will correctly update id for usage on this page\n* \t$: badId = page.params.id; // Do not use; will never update after initial load\n* <\\/script>\n* ```\n*\n* On the server, values can only be read during rendering (in other words _not_ in e.g. `load` functions). In the browser, the values can be read at any time.\n*\n* @type {import('@sveltejs/kit').Page}\n*/\nvar page = {\n\tget data() {\n\t\treturn context().page.data;\n\t},\n\tget error() {\n\t\treturn context().page.error;\n\t},\n\tget form() {\n\t\treturn context().page.form;\n\t},\n\tget params() {\n\t\treturn context().page.params;\n\t},\n\tget route() {\n\t\treturn context().page.route;\n\t},\n\tget state() {\n\t\treturn context().page.state;\n\t},\n\tget status() {\n\t\treturn context().page.status;\n\t},\n\tget url() {\n\t\treturn context().page.url;\n\t}\n};\n//#endregion\nexport { replaceState as n, page as t };\n"],"names":["noop$1"],"mappings":";;;;;;;AAoBA,IAAI,SAAS,GAAGA,IAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAACA,IAAM,CAAC,QAAQ,EAAE,CAAC;AACnG,IAAI,eAAe,GAAG,IAAI;AAC1B,IAAI,SAAS,EAAE;AACf,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC;AAEzB;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC,CAAC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AAC/D;AACA;AACA;AACA,SAAS,OAAO,GAAG;AACnB,CAAC,OAAO,UAAU,CAAC,aAAa,CAAC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,IAAI,GAAG;AACX,CAGC,IAAI,KAAK,GAAG;AACb,EAAE,OAAO,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK;AAC7B,CAAC,CAAC;AACF,CAYC,IAAI,MAAM,GAAG;AACd,EAAE,OAAO,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM;AAC9B,CAAC,CAAC;AACF,CAAC,IAAI,GAAG,GAAG;AACX,EAAE,OAAO,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG;AAC3B,CAAC;AACD;;"}
1
+ {"version":3,"file":"state.js-vZj9lo1I.js","sources":["../../../../.svelte-kit/output/server/chunks/state.js"],"sourcesContent":["import { t as index_server_exports } from \"./index-server.js\";\nimport { y as noop } from \"./shared.js\";\nimport \"./internal.js\";\nimport \"./exports.js\";\nimport { Ut as noop$1, b as getContext } from \"./server.js\";\nimport \"./index-server2.js\";\nimport \"./internal2.js\";\nimport \"@sveltejs/kit/internal\";\nimport \"@sveltejs/kit/internal/server\";\nvar PRELOAD_PRIORITIES = {\n\ttap: 1,\n\thover: 2,\n\tviewport: 3,\n\teager: 4,\n\toff: -1,\n\tfalse: -1\n};\n({ ...PRELOAD_PRIORITIES }), PRELOAD_PRIORITIES.hover;\nvar updated_listener = { v: noop };\nvar updated;\nvar is_legacy = noop$1.toString().includes(\"$$\") || /function \\w+\\(\\) \\{\\}/.test(noop$1.toString());\nvar placeholder_url = \"a:\";\nif (is_legacy) {\n\tnew URL(placeholder_url);\n\tupdated = { current: false };\n} else {\n\tnew class Page {\n\t\tdata = {};\n\t\tform = null;\n\t\terror = null;\n\t\tparams = {};\n\t\troute = { id: null };\n\t\tstate = {};\n\t\tstatus = -1;\n\t\turl = new URL(placeholder_url);\n\t}();\n\tnew class Navigating {\n\t\tcurrent = null;\n\t}();\n\tupdated = new class Updated {\n\t\tcurrent = false;\n\t}();\n\tupdated_listener.v = () => updated.current = true;\n}\n//#endregion\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/runtime/client/client.js\n/** @import { RemoteFunctionDataNode, ServerNodesResponse, ServerRedirectNode } from 'types' */\n/** @import { CacheEntry } from './remote-functions/cache.svelte.js' */\n/** @import { Query } from './remote-functions/query/instance.svelte.js' */\n/** @import { LiveQuery } from './remote-functions/query-live/instance.svelte.js' */\nvar { onMount, tick } = index_server_exports;\n/**\n* Programmatically replace the current history entry with the given `page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://svelte.dev/docs/kit/shallow-routing).\n*\n* @param {string | URL} url\n* @param {App.PageState} state\n* @returns {void}\n*/\nfunction replaceState(url, state) {\n\tthrow new Error(\"Cannot call replaceState(...) on the server\");\n}\n//#endregion\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/runtime/app/state/server.js\nfunction context() {\n\treturn getContext(\"__request__\");\n}\n//#endregion\n//#region node_modules/.pnpm/@sveltejs+kit@2.70.3_@sveltejs+vite-plugin-svelte@7.3.0_svelte@5.57.0_vite@8.2.2_@types_ab6e39593f61aae0ad0b9a1bac6935c7/node_modules/@sveltejs/kit/src/runtime/app/state/index.js\n/**\n* A read-only reactive object with information about the current page, serving several use cases:\n* - retrieving the combined `data` of all pages/layouts anywhere in your component tree (also see [loading data](https://svelte.dev/docs/kit/load))\n* - retrieving the current value of the `form` prop anywhere in your component tree (also see [form actions](https://svelte.dev/docs/kit/form-actions))\n* - retrieving the page state that was set through `goto`, `pushState` or `replaceState` (also see [goto](https://svelte.dev/docs/kit/$app-navigation#goto) and [shallow routing](https://svelte.dev/docs/kit/shallow-routing))\n* - retrieving metadata such as the URL you're on, the current route and its parameters, and whether or not there was an error\n*\n* ```svelte\n* <!--- file: +layout.svelte --->\n* <script>\n* \timport { page } from '$app/state';\n* <\\/script>\n*\n* <p>Currently at {page.url.pathname}</p>\n*\n* {#if page.error}\n* \t<span class=\"red\">Problem detected</span>\n* {:else}\n* \t<span class=\"small\">All systems operational</span>\n* {/if}\n* ```\n*\n* Changes to `page` are available exclusively with runes. (The legacy reactivity syntax will not reflect any changes)\n*\n* ```svelte\n* <!--- file: +page.svelte --->\n* <script>\n* \timport { page } from '$app/state';\n* \tconst id = $derived(page.params.id); // This will correctly update id for usage on this page\n* \t$: badId = page.params.id; // Do not use; will never update after initial load\n* <\\/script>\n* ```\n*\n* On the server, values can only be read during rendering (in other words _not_ in e.g. `load` functions). In the browser, the values can be read at any time.\n*\n* @type {import('@sveltejs/kit').Page}\n*/\nvar page = {\n\tget data() {\n\t\treturn context().page.data;\n\t},\n\tget error() {\n\t\treturn context().page.error;\n\t},\n\tget form() {\n\t\treturn context().page.form;\n\t},\n\tget params() {\n\t\treturn context().page.params;\n\t},\n\tget route() {\n\t\treturn context().page.route;\n\t},\n\tget state() {\n\t\treturn context().page.state;\n\t},\n\tget status() {\n\t\treturn context().page.status;\n\t},\n\tget url() {\n\t\treturn context().page.url;\n\t}\n};\n//#endregion\nexport { replaceState as n, page as t };\n"],"names":["noop$1"],"mappings":";;;;;;;AAoBA,IAAI,SAAS,GAAGA,IAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAACA,IAAM,CAAC,QAAQ,EAAE,CAAC;AACnG,IAAI,eAAe,GAAG,IAAI;AAC1B,IAAI,SAAS,EAAE;AACf,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC;AAEzB;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC,CAAC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AAC/D;AACA;AACA;AACA,SAAS,OAAO,GAAG;AACnB,CAAC,OAAO,UAAU,CAAC,aAAa,CAAC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,IAAI,GAAG;AACX,CAGC,IAAI,KAAK,GAAG;AACb,EAAE,OAAO,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK;AAC7B,CAAC,CAAC;AACF,CAYC,IAAI,MAAM,GAAG;AACd,EAAE,OAAO,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM;AAC9B,CAAC,CAAC;AACF,CAAC,IAAI,GAAG,GAAG;AACX,EAAE,OAAO,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG;AAC3B,CAAC;AACD;;"}
@@ -1,13 +1,16 @@
1
- import { g as getArchive } from '../../../../chunks/archive.js-C2D-5edp.js';
2
- import { r as readEnv } from '../../../../chunks/env2.js-CcIskxOZ.js';
1
+ import { p as parseRegionParam, a as apiError, b as readEnv, R as REGION_PARAM_HINT } from '../../../../chunks/env2.js-C5BgBJDY.js';
2
+ import { g as getArchive } from '../../../../chunks/archive.js-D2jtMmDo.js';
3
3
  import { j as json } from '../../../../chunks/utils.js-BIlHjgGW.js';
4
- import '../../../../chunks/log-buffer.js-BI_gQOls.js';
4
+ import '../../../../chunks/shared-server.js-Dn5XheXH.js';
5
+ import '@aws-sdk/client-cloudwatch-logs';
6
+ import '@aws-sdk/client-sts';
5
7
  import 'node:fs';
6
- import 'node:os';
7
8
  import 'node:path';
8
- import 'node:timers/promises';
9
+ import '../../../../chunks/identity.js-NmGXxBz3.js';
10
+ import '../../../../chunks/log-buffer.js-A9FA-Qv8.js';
11
+ import 'node:os';
9
12
  import 'node:crypto';
10
- import '../../../../chunks/shared-server.js-Dn5XheXH.js';
13
+ import 'node:timers/promises';
11
14
  import '../../../../chunks/shared.js-CgjUIvRK.js';
12
15
  import '../../../../chunks/uneval.js-DaakSYFQ.js';
13
16
 
@@ -19,8 +22,13 @@ import '../../../../chunks/uneval.js-DaakSYFQ.js';
19
22
  * driver or unreadable answers 200 with `available: false` and the reason, so
20
23
  * the UI can hide the archive view instead of showing an error.
21
24
  */
22
- var GET = async () => {
23
- const status = await (await getArchive(readEnv())).status();
25
+ var GET = async ({ url }) => {
26
+ const parsed = parseRegionParam(url.searchParams.get("region"));
27
+ if (!parsed.ok) return apiError(400, REGION_PARAM_HINT, "invalid-region");
28
+ const status = await (await getArchive(readEnv(), {
29
+ region: parsed.region,
30
+ readOnly: true
31
+ })).status();
24
32
  const body = {
25
33
  path: status.path,
26
34
  available: status.available,
@@ -36,4 +44,4 @@ var GET = async () => {
36
44
  };
37
45
 
38
46
  export { GET };
39
- //# sourceMappingURL=_server.ts.js-83Ch7djd.js.map
47
+ //# sourceMappingURL=_server.ts.js-C4hWyXuu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts.js-C4hWyXuu.js","sources":["../../../../../../../.svelte-kit/output/server/entries/endpoints/api/archive/_server.ts.js"],"sourcesContent":["import { r as REGION_PARAM_HINT, s as parseRegionParam, t as readEnv, u as apiError } from \"../../../../chunks/env2.js\";\nimport { t as getArchive } from \"../../../../chunks/archive.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/archive/+server.ts\n/**\n* `GET /api/archive` - what the local DuckDB archive holds.\n*\n* Never fails: an archive that is off by configuration, missing its optional\n* driver or unreadable answers 200 with `available: false` and the reason, so\n* the UI can hide the archive view instead of showing an error.\n*/\nvar GET = async ({ url }) => {\n\tconst parsed = parseRegionParam(url.searchParams.get(\"region\"));\n\tif (!parsed.ok) return apiError(400, REGION_PARAM_HINT, \"invalid-region\");\n\tconst status = await (await getArchive(readEnv(), {\n\t\tregion: parsed.region,\n\t\treadOnly: true\n\t})).status();\n\tconst body = {\n\t\tpath: status.path,\n\t\tavailable: status.available,\n\t\terror: status.error,\n\t\tbytes: status.bytes,\n\t\trows: status.totals.rows,\n\t\tgroups: status.totals.groups,\n\t\tregions: status.totals.regions,\n\t\toldest: status.totals.oldest,\n\t\tnewest: status.totals.newest\n\t};\n\treturn json(body);\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK;AAC7B,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;AAC1E,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,EAAE;AACnD,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM;AACvB,EAAE,QAAQ,EAAE;AACZ,EAAE,CAAC,EAAE,MAAM,EAAE;AACb,CAAC,MAAM,IAAI,GAAG;AACd,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI;AACnB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS;AAC7B,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK;AACrB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK;AACrB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;AAC1B,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;AAC9B,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;AAChC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;AAC9B,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;AACxB,EAAE;AACF,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC;AAClB;;"}