watch-tail 0.10.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -2
- package/build/client/_app/immutable/chunks/{N78Fm5Ux.js → 0bp2Fczu.js} +1 -1
- package/build/client/_app/immutable/chunks/{CNomy7CF.js → B7X5bVGV.js} +1 -1
- package/build/client/_app/immutable/chunks/{DSHrbzz3.js → BDcWO4cr.js} +1 -1
- package/build/client/_app/immutable/chunks/{DSvLImpl.js → BDdUgtQ9.js} +1 -1
- package/build/client/_app/immutable/chunks/{BdV_pkVs.js → BP77Fyht.js} +1 -1
- package/build/client/_app/immutable/chunks/{Bb9UOIo-.js → B_Mg_9D4.js} +1 -1
- package/build/client/_app/immutable/chunks/{BJ7fEbY9.js → BvE-N_5_.js} +1 -1
- package/build/client/_app/immutable/chunks/C0Fq51PS.js +1 -0
- package/build/client/_app/immutable/chunks/{Fg8W5tkO.js → CBu7zaX6.js} +1 -1
- package/build/client/_app/immutable/chunks/{CZ2PC-zH.js → CDs2jokv.js} +1 -1
- package/build/client/_app/immutable/chunks/{D6vIi1r5.js → CL6wPCzw.js} +1 -1
- package/build/client/_app/immutable/chunks/{EZJqWoh3.js → CMPe3AwH.js} +1 -1
- package/build/client/_app/immutable/chunks/{DWBod19x.js → CRxuTO84.js} +1 -1
- package/build/client/_app/immutable/chunks/{McME9wI6.js → CXlCR4o6.js} +5 -5
- package/build/client/_app/immutable/chunks/{XrAcf7YH.js → CZZUqHxO.js} +1 -1
- package/build/client/_app/immutable/chunks/{_PJhUOmT.js → CaFHnwyo.js} +1 -1
- package/build/client/_app/immutable/chunks/{DAxERhtN.js → CbtqT1c8.js} +1 -1
- package/build/client/_app/immutable/chunks/{vMHl7jRw.js → CfRqDrzx.js} +1 -1
- package/build/client/_app/immutable/chunks/{CzU0cUz4.js → CwzJ9AB4.js} +1 -1
- package/build/client/_app/immutable/chunks/{B_AZHMkI.js → Cy2yzzl5.js} +1 -1
- package/build/client/_app/immutable/chunks/{xJTjOoUQ.js → D067lFSc.js} +1 -1
- package/build/client/_app/immutable/chunks/{BsrUsB47.js → D27MZEE2.js} +1 -1
- package/build/client/_app/immutable/chunks/{Dicxo5h-.js → D9KJP6hv.js} +1 -1
- package/build/client/_app/immutable/chunks/{gXyWwJbW.js → DO938hpm.js} +1 -1
- package/build/client/_app/immutable/chunks/{DjjHmSG3.js → DrLgrJ3k.js} +1 -1
- package/build/client/_app/immutable/chunks/{CPbNf3ya.js → DrupwIIS.js} +1 -1
- package/build/client/_app/immutable/chunks/{BX0v2q9h.js → PUpq0Ki5.js} +1 -1
- package/build/client/_app/immutable/chunks/{CHnbfiIG.js → kSuEE8Bt.js} +1 -1
- package/build/client/_app/immutable/chunks/{DlDLXtam.js → y79YFfGW.js} +1 -1
- package/build/client/_app/immutable/chunks/{DIzgJaYS.js → zP_HZRCk.js} +1 -1
- package/build/client/_app/immutable/entry/{app.ycJtqzGh.js → app.BEq8gOel.js} +2 -2
- package/build/client/_app/immutable/entry/start.DmBlaUbV.js +1 -0
- package/build/client/_app/immutable/nodes/{1.B63I-h1v.js → 1.DXfG5P6X.js} +1 -1
- package/build/client/_app/immutable/nodes/{2.DXy8PMWZ.js → 2.45XrHxUU.js} +3 -3
- package/build/client/_app/version.json +1 -1
- package/build/env.js +0 -1
- package/build/handler.js +6 -9
- package/build/index.js +6 -9
- package/build/server/chunks/chunks/{archive.js-BRlkdj2X.js → archive.js-D7cGVWaq.js} +1 -2
- package/build/server/chunks/chunks/env.js-l0sNRNKZ.js +0 -1
- package/build/server/chunks/chunks/env2.js-C5BgBJDY.js +0 -1
- package/build/server/chunks/chunks/{exports.js-ClPPfcHj.js → exports.js-CvFPPbaH.js} +0 -6
- package/build/server/chunks/chunks/identity.js-NmGXxBz3.js +0 -1
- package/build/server/chunks/chunks/{index-server.js-Dsi44azJ.js → index-server.js-DOq0LmqS.js} +1 -115
- package/build/server/chunks/chunks/internal.js-DZ8ZzzjN.js +0 -1
- package/build/server/chunks/chunks/{legacy-client.js-C8Upo6IB.js → internal2.js-B2FekELn.js} +279 -7
- package/build/server/chunks/chunks/{level-filter.js-H0nc-2BG.js → level-filter.js-kKdNjmbR.js} +1 -2
- package/build/server/chunks/chunks/{log-buffer.js-A9FA-Qv8.js → log-buffer.js-BjT3sJlh.js} +1 -2
- package/build/server/chunks/chunks/regions.js-COf7DgnH.js +0 -1
- package/build/server/chunks/chunks/shared-server.js-Dn5XheXH.js +0 -1
- package/build/server/chunks/chunks/shared.js-CgjUIvRK.js +0 -1
- package/build/server/chunks/chunks/source.js-DZEVvuho.js +0 -1
- package/build/server/chunks/chunks/{state.js-qsHzjuJU.js → state.js-CdO6iuBd.js} +3 -4
- package/build/server/chunks/chunks/{text-size.svelte.js-CqGaHRr3.js → text-size.svelte.js-D09gVgvI.js} +1 -2
- package/build/server/chunks/chunks/time-range.js-__87ZPq6.js +0 -1
- package/build/server/chunks/chunks/uneval.js-DaakSYFQ.js +0 -1
- package/build/server/chunks/chunks/utils.js-BIlHjgGW.js +0 -1
- package/build/server/chunks/entries/endpoints/api/archive/{_server.ts.js-C6WY-ljy.js → _server.ts.js-D-97I3hr.js} +2 -3
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-C5tfrpmC.js +0 -1
- package/build/server/chunks/entries/endpoints/api/identity/_server.ts.js-PWRPScuN.js +0 -1
- package/build/server/chunks/entries/endpoints/api/log-groups/{_server.ts.js-DTcVSbpV.js → _server.ts.js-BBBsBX5h.js} +2 -3
- package/build/server/chunks/entries/endpoints/api/regions/_server.ts.js-9_g0ojki.js +0 -1
- package/build/server/chunks/entries/endpoints/api/series/{_server.ts.js-CzJ_bXh8.js → _server.ts.js-bsGqvQ1O.js} +3 -4
- package/build/server/chunks/entries/endpoints/api/stream/{_server.ts.js-U2naV16N.js → _server.ts.js-B6obpUbh.js} +3 -4
- package/build/server/chunks/entries/fallbacks/{error.svelte.js-ClTGKP0-.js → error.svelte.js-BupH3lxJ.js} +4 -7
- package/build/server/chunks/entries/pages/{_layout.svelte.js-DNuWb03K.js → _layout.svelte.js-C3CVxu2T.js} +2 -3
- package/build/server/chunks/entries/pages/{_page.svelte.js-CVlL2UsO.js → _page.svelte.js-DS9p1LVo.js} +322 -11
- package/build/server/chunks/{handler-CrpvMheE.js → handler-DrjCpeeA.js} +4 -5
- package/build/server/chunks/{index.js-9Dk7Q13E.js → index.js-BLTOesya.js} +3 -4
- package/build/server/chunks/{manifest.js-DIaODzKX.js → manifest.js-C1_IS4sj.js} +8 -9
- package/build/server/chunks/nodes/{0.js-CQ960AOW.js → 0.js-BHXaR9OX.js} +1 -2
- package/build/server/chunks/nodes/{1.js-CtTei4sV.js → 1.js-C-coUSdu.js} +2 -3
- package/build/server/chunks/nodes/2.js-Dor6Xgc7.js +8 -0
- package/build/shims.js +0 -1
- package/package.json +16 -7
- package/build/client/_app/immutable/assets/0.B5hI3s8c.css.br +0 -0
- package/build/client/_app/immutable/assets/0.B5hI3s8c.css.gz +0 -0
- package/build/client/_app/immutable/assets/2.Cn4w1JYv.css.br +0 -0
- package/build/client/_app/immutable/assets/2.Cn4w1JYv.css.gz +0 -0
- package/build/client/_app/immutable/assets/BrushContext.2tkUc39H.css.br +0 -0
- package/build/client/_app/immutable/assets/BrushContext.2tkUc39H.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChartAnnotations.Bw8CGteN.css.br +0 -0
- package/build/client/_app/immutable/assets/ChartAnnotations.Bw8CGteN.css.gz +0 -0
- package/build/client/_app/immutable/assets/Circle.C5MKzgk2.css.br +0 -1
- package/build/client/_app/immutable/assets/Circle.C5MKzgk2.css.gz +0 -0
- package/build/client/_app/immutable/assets/DefaultTooltip.CGOVIm3D.css.br +0 -0
- package/build/client/_app/immutable/assets/DefaultTooltip.CGOVIm3D.css.gz +0 -0
- package/build/client/_app/immutable/assets/EventScatter.0BkgJO-l.css.br +0 -0
- package/build/client/_app/immutable/assets/EventScatter.0BkgJO-l.css.gz +0 -0
- package/build/client/_app/immutable/assets/Labels.sEaJtb97.css.br +0 -0
- package/build/client/_app/immutable/assets/Labels.sEaJtb97.css.gz +0 -0
- package/build/client/_app/immutable/assets/Legend.DnhxhJ2I.css.br +0 -0
- package/build/client/_app/immutable/assets/Legend.DnhxhJ2I.css.gz +0 -0
- package/build/client/_app/immutable/assets/Path.B0wDzTrn.css.br +0 -0
- package/build/client/_app/immutable/assets/Path.B0wDzTrn.css.gz +0 -0
- package/build/client/_app/immutable/assets/TransformContext.1cjyViIk.css.br +0 -0
- package/build/client/_app/immutable/assets/TransformContext.1cjyViIk.css.gz +0 -0
- package/build/client/_app/immutable/assets/Voronoi.ce7atosu.css.br +0 -0
- package/build/client/_app/immutable/assets/Voronoi.ce7atosu.css.gz +0 -0
- package/build/client/_app/immutable/chunks/B2En4t_E.js.br +0 -0
- package/build/client/_app/immutable/chunks/B2En4t_E.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BJ7fEbY9.js.br +0 -0
- package/build/client/_app/immutable/chunks/BJ7fEbY9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BR2LaRms.js.br +0 -1
- package/build/client/_app/immutable/chunks/BR2LaRms.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BX0v2q9h.js.br +0 -0
- package/build/client/_app/immutable/chunks/BX0v2q9h.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B_AZHMkI.js.br +0 -0
- package/build/client/_app/immutable/chunks/B_AZHMkI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bb9UOIo-.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bb9UOIo-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BdV_pkVs.js.br +0 -0
- package/build/client/_app/immutable/chunks/BdV_pkVs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bjy-W4x2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bjy-W4x2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bl052uUt.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bl052uUt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BsrUsB47.js.br +0 -0
- package/build/client/_app/immutable/chunks/BsrUsB47.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C58PZtCD.js.br +0 -0
- package/build/client/_app/immutable/chunks/C58PZtCD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CBZpkDc1.js.br +0 -0
- package/build/client/_app/immutable/chunks/CBZpkDc1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CCch3uox.js.br +0 -0
- package/build/client/_app/immutable/chunks/CCch3uox.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CHnbfiIG.js.br +0 -0
- package/build/client/_app/immutable/chunks/CHnbfiIG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CNomy7CF.js.br +0 -0
- package/build/client/_app/immutable/chunks/CNomy7CF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CPbNf3ya.js.br +0 -0
- package/build/client/_app/immutable/chunks/CPbNf3ya.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZ2PC-zH.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZ2PC-zH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CljxK204.js +0 -1
- package/build/client/_app/immutable/chunks/CljxK204.js.br +0 -1
- package/build/client/_app/immutable/chunks/CljxK204.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CzU0cUz4.js.br +0 -0
- package/build/client/_app/immutable/chunks/CzU0cUz4.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D6vIi1r5.js.br +0 -3
- package/build/client/_app/immutable/chunks/D6vIi1r5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DAxERhtN.js.br +0 -0
- package/build/client/_app/immutable/chunks/DAxERhtN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DIzgJaYS.js.br +0 -0
- package/build/client/_app/immutable/chunks/DIzgJaYS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DSHrbzz3.js.br +0 -0
- package/build/client/_app/immutable/chunks/DSHrbzz3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DSvLImpl.js.br +0 -0
- package/build/client/_app/immutable/chunks/DSvLImpl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DWBod19x.js.br +0 -0
- package/build/client/_app/immutable/chunks/DWBod19x.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Db0q5_zr.js.br +0 -0
- package/build/client/_app/immutable/chunks/Db0q5_zr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dfvzj6n2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dfvzj6n2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dicxo5h-.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dicxo5h-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DjjHmSG3.js.br +0 -0
- package/build/client/_app/immutable/chunks/DjjHmSG3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DlDLXtam.js.br +0 -0
- package/build/client/_app/immutable/chunks/DlDLXtam.js.gz +0 -0
- package/build/client/_app/immutable/chunks/EZJqWoh3.js.br +0 -0
- package/build/client/_app/immutable/chunks/EZJqWoh3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Fg8W5tkO.js.br +0 -0
- package/build/client/_app/immutable/chunks/Fg8W5tkO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/HclGiUj8.js.br +0 -0
- package/build/client/_app/immutable/chunks/HclGiUj8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/LGzrUxfF.js.br +0 -0
- package/build/client/_app/immutable/chunks/LGzrUxfF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/McME9wI6.js.br +0 -0
- package/build/client/_app/immutable/chunks/McME9wI6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/N78Fm5Ux.js.br +0 -0
- package/build/client/_app/immutable/chunks/N78Fm5Ux.js.gz +0 -0
- package/build/client/_app/immutable/chunks/RobXhXPM.js.br +0 -1
- package/build/client/_app/immutable/chunks/RobXhXPM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/XrAcf7YH.js.br +0 -0
- package/build/client/_app/immutable/chunks/XrAcf7YH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Y5urAfNy.js.br +0 -0
- package/build/client/_app/immutable/chunks/Y5urAfNy.js.gz +0 -0
- package/build/client/_app/immutable/chunks/_PJhUOmT.js.br +0 -0
- package/build/client/_app/immutable/chunks/_PJhUOmT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/gXyWwJbW.js.br +0 -0
- package/build/client/_app/immutable/chunks/gXyWwJbW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/vMHl7jRw.js.br +0 -0
- package/build/client/_app/immutable/chunks/vMHl7jRw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xJTjOoUQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/xJTjOoUQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.br +0 -1
- package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/yCfI4PCa.js.br +0 -0
- package/build/client/_app/immutable/chunks/yCfI4PCa.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.ycJtqzGh.js.br +0 -0
- package/build/client/_app/immutable/entry/app.ycJtqzGh.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DOq0-PiA.js +0 -1
- package/build/client/_app/immutable/entry/start.DOq0-PiA.js.br +0 -0
- package/build/client/_app/immutable/entry/start.DOq0-PiA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D63E8Q6i.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D63E8Q6i.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.B63I-h1v.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B63I-h1v.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DXy8PMWZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DXy8PMWZ.js.gz +0 -0
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/robots.txt.br +0 -0
- package/build/client/robots.txt.gz +0 -0
- package/build/env.js.map +0 -1
- package/build/handler.js.map +0 -1
- package/build/index.js.map +0 -1
- package/build/server/chunks/chunks/Arc.canvas.js-DqfSjlnB.js +0 -701
- package/build/server/chunks/chunks/Arc.canvas.js-DqfSjlnB.js.map +0 -1
- package/build/server/chunks/chunks/Arc.js-DNywwEq7.js +0 -31
- package/build/server/chunks/chunks/Arc.js-DNywwEq7.js.map +0 -1
- package/build/server/chunks/chunks/Bar.js-BHJrwOa1.js +0 -448
- package/build/server/chunks/chunks/Bar.js-BHJrwOa1.js.map +0 -1
- package/build/server/chunks/chunks/ChartAnnotations.js-DXt38zkt.js +0 -983
- package/build/server/chunks/chunks/ChartAnnotations.js-DXt38zkt.js.map +0 -1
- package/build/server/chunks/chunks/Circle.html.js-KngSXZUe.js +0 -355
- package/build/server/chunks/chunks/Circle.html.js-KngSXZUe.js.map +0 -1
- package/build/server/chunks/chunks/ClipPath.canvas.js-BsGsfzQK.js +0 -170
- package/build/server/chunks/chunks/ClipPath.canvas.js-BsGsfzQK.js.map +0 -1
- package/build/server/chunks/chunks/DefaultTooltip.js-CbyljZUi.js +0 -352
- package/build/server/chunks/chunks/DefaultTooltip.js-CbyljZUi.js.map +0 -1
- package/build/server/chunks/chunks/EventScatter.js-DHlLEn_7.js +0 -7371
- package/build/server/chunks/chunks/EventScatter.js-DHlLEn_7.js.map +0 -1
- package/build/server/chunks/chunks/Labels.js-DhpbhJmV.js +0 -497
- package/build/server/chunks/chunks/Labels.js-DhpbhJmV.js.map +0 -1
- package/build/server/chunks/chunks/Legend.js-D25j2DRt.js +0 -343
- package/build/server/chunks/chunks/Legend.js-D25j2DRt.js.map +0 -1
- package/build/server/chunks/chunks/Line.html.js-CKb2T7JC.js +0 -423
- package/build/server/chunks/chunks/Line.html.js-CKb2T7JC.js.map +0 -1
- package/build/server/chunks/chunks/Link.canvas.js-c0r05107.js +0 -756
- package/build/server/chunks/chunks/Link.canvas.js-c0r05107.js.map +0 -1
- package/build/server/chunks/chunks/Path.canvas.js-opfoYzQB.js +0 -1259
- package/build/server/chunks/chunks/Path.canvas.js-opfoYzQB.js.map +0 -1
- package/build/server/chunks/chunks/Points.html.js-CJ75UtkE.js +0 -228
- package/build/server/chunks/chunks/Points.html.js-CJ75UtkE.js.map +0 -1
- package/build/server/chunks/chunks/Points.js-Bx_vB0po.js +0 -14
- package/build/server/chunks/chunks/Points.js-Bx_vB0po.js.map +0 -1
- package/build/server/chunks/chunks/Points2.js-Br2MMKbn.js +0 -25
- package/build/server/chunks/chunks/Points2.js-Br2MMKbn.js.map +0 -1
- package/build/server/chunks/chunks/Rect.html.js-D_-JSZ22.js +0 -547
- package/build/server/chunks/chunks/Rect.html.js-D_-JSZ22.js.map +0 -1
- package/build/server/chunks/chunks/Spline.js-DpD4175j.js +0 -516
- package/build/server/chunks/chunks/Spline.js-DpD4175j.js.map +0 -1
- package/build/server/chunks/chunks/Text.html.js-Clxo39Ky.js +0 -847
- package/build/server/chunks/chunks/Text.html.js-Clxo39Ky.js.map +0 -1
- package/build/server/chunks/chunks/TooltipItem.js-CgYSF3I3.js +0 -314
- package/build/server/chunks/chunks/TooltipItem.js-CgYSF3I3.js.map +0 -1
- package/build/server/chunks/chunks/Voronoi.js-CX8bqc1A.js +0 -2052
- package/build/server/chunks/chunks/Voronoi.js-CX8bqc1A.js.map +0 -1
- package/build/server/chunks/chunks/archive.js-BRlkdj2X.js.map +0 -1
- package/build/server/chunks/chunks/array.js-CBp0H4t3.js +0 -8
- package/build/server/chunks/chunks/array.js-CBp0H4t3.js.map +0 -1
- package/build/server/chunks/chunks/attributes.js-ECgqVV_7.js +0 -25
- package/build/server/chunks/chunks/attributes.js-ECgqVV_7.js.map +0 -1
- package/build/server/chunks/chunks/band.js-BcI84M0Z.js +0 -155
- package/build/server/chunks/chunks/band.js-BcI84M0Z.js.map +0 -1
- package/build/server/chunks/chunks/centroid.js-BnGN3LH0.js +0 -1356
- package/build/server/chunks/chunks/centroid.js-BnGN3LH0.js.map +0 -1
- package/build/server/chunks/chunks/common.js-DeZxUyRN.js +0 -5760
- package/build/server/chunks/chunks/common.js-DeZxUyRN.js.map +0 -1
- package/build/server/chunks/chunks/env.js-l0sNRNKZ.js.map +0 -1
- package/build/server/chunks/chunks/env2.js-C5BgBJDY.js.map +0 -1
- package/build/server/chunks/chunks/events.js-oxLu7lhH.js +0 -95
- package/build/server/chunks/chunks/events.js-oxLu7lhH.js.map +0 -1
- package/build/server/chunks/chunks/exports.js-ClPPfcHj.js.map +0 -1
- package/build/server/chunks/chunks/group.js-C8H9Tpr6.js +0 -30
- package/build/server/chunks/chunks/group.js-C8H9Tpr6.js.map +0 -1
- package/build/server/chunks/chunks/identity.js-NmGXxBz3.js.map +0 -1
- package/build/server/chunks/chunks/index-server.js-Dsi44azJ.js.map +0 -1
- package/build/server/chunks/chunks/index-server2.js-l0sNRNKZ.js +0 -2
- package/build/server/chunks/chunks/index-server2.js-l0sNRNKZ.js.map +0 -1
- package/build/server/chunks/chunks/internal.js-DZ8ZzzjN.js.map +0 -1
- package/build/server/chunks/chunks/internal2.js-Dm0TlpeP.js +0 -188
- package/build/server/chunks/chunks/internal2.js-Dm0TlpeP.js.map +0 -1
- package/build/server/chunks/chunks/key.svelte.js-C9G4pBhE.js +0 -695
- package/build/server/chunks/chunks/key.svelte.js-C9G4pBhE.js.map +0 -1
- package/build/server/chunks/chunks/legacy-client.js-C8Upo6IB.js.map +0 -1
- package/build/server/chunks/chunks/level-filter.js-H0nc-2BG.js.map +0 -1
- package/build/server/chunks/chunks/lineRadial.js-B0m9ujVX.js +0 -126
- package/build/server/chunks/chunks/lineRadial.js-B0m9ujVX.js.map +0 -1
- package/build/server/chunks/chunks/linear.js-CJ07spu6.js +0 -1046
- package/build/server/chunks/chunks/linear.js-CJ07spu6.js.map +0 -1
- package/build/server/chunks/chunks/log-buffer.js-A9FA-Qv8.js.map +0 -1
- package/build/server/chunks/chunks/math.js-BqujbaBs.js +0 -50
- package/build/server/chunks/chunks/math.js-BqujbaBs.js.map +0 -1
- package/build/server/chunks/chunks/max.js-CuS0BpRI.js +0 -11
- package/build/server/chunks/chunks/max.js-CuS0BpRI.js.map +0 -1
- package/build/server/chunks/chunks/min.js-DZWt5tPl.js +0 -11
- package/build/server/chunks/chunks/min.js-DZWt5tPl.js.map +0 -1
- package/build/server/chunks/chunks/motion.svelte.js-DB7vkWmD.js +0 -677
- package/build/server/chunks/chunks/motion.svelte.js-DB7vkWmD.js.map +0 -1
- package/build/server/chunks/chunks/occlusion.js-DtcqoJjc.js +0 -33
- package/build/server/chunks/chunks/occlusion.js-DtcqoJjc.js.map +0 -1
- package/build/server/chunks/chunks/path.js-BizMrlzb.js +0 -488
- package/build/server/chunks/chunks/path.js-BizMrlzb.js.map +0 -1
- package/build/server/chunks/chunks/path2.js-B3tNByoS.js +0 -27
- package/build/server/chunks/chunks/path2.js-B3tNByoS.js.map +0 -1
- package/build/server/chunks/chunks/pointRadial.js-Deeu1LXx.js +0 -7
- package/build/server/chunks/chunks/pointRadial.js-Deeu1LXx.js.map +0 -1
- package/build/server/chunks/chunks/rect.svelte.js-C6R1SgCx.js +0 -187
- package/build/server/chunks/chunks/rect.svelte.js-C6R1SgCx.js.map +0 -1
- package/build/server/chunks/chunks/regions.js-COf7DgnH.js.map +0 -1
- package/build/server/chunks/chunks/scales.svelte.js-C4lRvUAb.js +0 -276
- package/build/server/chunks/chunks/scales.svelte.js-C4lRvUAb.js.map +0 -1
- package/build/server/chunks/chunks/series-buckets.js-C-vMEJT2.js +0 -316
- package/build/server/chunks/chunks/series-buckets.js-C-vMEJT2.js.map +0 -1
- package/build/server/chunks/chunks/shared-server.js-Dn5XheXH.js.map +0 -1
- package/build/server/chunks/chunks/shared.js-CgjUIvRK.js.map +0 -1
- package/build/server/chunks/chunks/source.js-DZEVvuho.js.map +0 -1
- package/build/server/chunks/chunks/state.js-qsHzjuJU.js.map +0 -1
- package/build/server/chunks/chunks/text-size.svelte.js-CqGaHRr3.js.map +0 -1
- package/build/server/chunks/chunks/time-range.js-__87ZPq6.js.map +0 -1
- package/build/server/chunks/chunks/types.js-x3GyGPOz.js +0 -11
- package/build/server/chunks/chunks/types.js-x3GyGPOz.js.map +0 -1
- package/build/server/chunks/chunks/uneval.js-DaakSYFQ.js.map +0 -1
- package/build/server/chunks/chunks/utils.js-BIlHjgGW.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/archive/_server.ts.js-C6WY-ljy.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-C5tfrpmC.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/identity/_server.ts.js-PWRPScuN.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/log-groups/_server.ts.js-DTcVSbpV.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/regions/_server.ts.js-9_g0ojki.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/series/_server.ts.js-CzJ_bXh8.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-U2naV16N.js.map +0 -1
- package/build/server/chunks/entries/fallbacks/error.svelte.js-ClTGKP0-.js.map +0 -1
- package/build/server/chunks/entries/pages/_layout.svelte.js-DNuWb03K.js.map +0 -1
- package/build/server/chunks/entries/pages/_page.svelte.js-CVlL2UsO.js.map +0 -1
- package/build/server/chunks/handler-CrpvMheE.js.map +0 -1
- package/build/server/chunks/index.js-9Dk7Q13E.js.map +0 -1
- package/build/server/chunks/manifest.js-DIaODzKX.js.map +0 -1
- package/build/server/chunks/nodes/0.js-CQ960AOW.js.map +0 -1
- package/build/server/chunks/nodes/1.js-CtTei4sV.js.map +0 -1
- package/build/server/chunks/nodes/2.js-BbKDb_M6.js +0 -9
- package/build/server/chunks/nodes/2.js-BbKDb_M6.js.map +0 -1
- package/build/shims.js.map +0 -1
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import { ae as escape_html, ac as attr, ad as attr_class, af as attr_style, a6 as ensure_array_like, ag as stringify,
|
|
2
|
-
import {
|
|
1
|
+
import { ae as escape_html, ac as attr, ad as attr_class, af as attr_style, a6 as ensure_array_like, ag as stringify, P as derived, ah as spread_props, al as bind_props, am as clsx } from '../../chunks/index-server.js-DOq0LmqS.js';
|
|
2
|
+
import { c as LogStore, f as filterByLevel, g as filterEvents, h as effectiveLevel, t as tokenizeJson, b as detectLevel, j as formatLogMessage, k as eventKey, l as levelColorClass, d as detectRequestId, m as mostCriticalLevel, e as eventDurationMs } from '../../chunks/log-buffer.js-BjT3sJlh.js';
|
|
3
3
|
import { R as REGION_CODES } from '../../chunks/regions.js-COf7DgnH.js';
|
|
4
4
|
import { P as PRESET_LABELS, a as presetLabel, H as HISTORIC_PRESETS, t as toDateTimeLocal, d as describeWindow } from '../../chunks/time-range.js-__87ZPq6.js';
|
|
5
|
-
import { I as Icon, t as textSize, p as puppy } from '../../chunks/text-size.svelte.js-
|
|
6
|
-
import { p as page, r as replaceState } from '../../chunks/state.js-
|
|
7
|
-
import { S as SERIES_LEVEL_COLOR, g as groupByLevel, r as requestRows, a as requestIdOf, c as collectRequests, L as LEVEL_LABELS, i as isMeaningfulBrush, b as requestDurations, d as bucketEvents } from '../../chunks/series-buckets.js-C-vMEJT2.js';
|
|
5
|
+
import { I as Icon, t as textSize, p as puppy } from '../../chunks/text-size.svelte.js-D09gVgvI.js';
|
|
6
|
+
import { p as page, r as replaceState } from '../../chunks/state.js-CdO6iuBd.js';
|
|
8
7
|
import '../../chunks/uneval.js-DaakSYFQ.js';
|
|
9
8
|
import '../../chunks/shared.js-CgjUIvRK.js';
|
|
10
|
-
import '../../chunks/exports.js-
|
|
11
|
-
import '../../chunks/internal2.js-
|
|
12
|
-
import '../../chunks/legacy-client.js-C8Upo6IB.js';
|
|
13
|
-
import '../../chunks/events.js-oxLu7lhH.js';
|
|
9
|
+
import '../../chunks/exports.js-CvFPPbaH.js';
|
|
10
|
+
import '../../chunks/internal2.js-B2FekELn.js';
|
|
14
11
|
import '../../chunks/utils.js-BIlHjgGW.js';
|
|
15
12
|
|
|
16
13
|
//#region node_modules/.pnpm/@lucide+svelte@1.47.0_svelte@5.57.0/node_modules/@lucide/svelte/dist/icons/arrow-right.svelte
|
|
@@ -200,6 +197,318 @@ function EndpointBadge($$renderer, $$props) {
|
|
|
200
197
|
});
|
|
201
198
|
}
|
|
202
199
|
//#endregion
|
|
200
|
+
//#region src/lib/request-groups.ts
|
|
201
|
+
/**
|
|
202
|
+
* Request grouping: the one place that decides what a "request" is.
|
|
203
|
+
*
|
|
204
|
+
* CloudWatch Logs has no concept of a request. A request is a set of lines that
|
|
205
|
+
* share a log group and detected request id - a Lambda `REPORT RequestId: ...` line, an API
|
|
206
|
+
* Gateway access log, a framework's structured `requestId` - and the same id
|
|
207
|
+
* must produce the same group in the log view and in the chart. Both call the
|
|
208
|
+
* helpers here, so a line that reads as one request in one view reads as one
|
|
209
|
+
* request in the other.
|
|
210
|
+
*
|
|
211
|
+
* Design decisions:
|
|
212
|
+
*
|
|
213
|
+
* - A request is placed where it *starts* (its first line), because a request
|
|
214
|
+
* that logs for two minutes is one event that happened, not two.
|
|
215
|
+
* - A request's level is its most critical line. An error is what a reader
|
|
216
|
+
* needs to see, even when twenty lines around it are info.
|
|
217
|
+
* - Lines without a request id are not grouped: they keep their own row and
|
|
218
|
+
* their own chart mark, which is honest about what the log contains.
|
|
219
|
+
*/
|
|
220
|
+
/**
|
|
221
|
+
* Request id of an event.
|
|
222
|
+
*
|
|
223
|
+
* A value the server already detected wins, because it is the same value the
|
|
224
|
+
* archive stored; only an event that carries no verdict is detected here.
|
|
225
|
+
*/
|
|
226
|
+
function requestIdOf(event) {
|
|
227
|
+
if (event.requestId !== void 0) {
|
|
228
|
+
const declared = event.requestId;
|
|
229
|
+
return declared === null || declared === "" ? null : declared;
|
|
230
|
+
}
|
|
231
|
+
return detectRequestId(event.message ?? "");
|
|
232
|
+
}
|
|
233
|
+
/** Level of a request: its worst line, or `unknown` when no line has a level. */
|
|
234
|
+
function requestLevel(events) {
|
|
235
|
+
return mostCriticalLevel(events.map((event) => effectiveLevel(event))) ?? "unknown";
|
|
236
|
+
}
|
|
237
|
+
/** Groups events by log group and request id, keeping every timestamp and byte of the originals. */
|
|
238
|
+
function collectRequests(events) {
|
|
239
|
+
const byId = /* @__PURE__ */ new Map();
|
|
240
|
+
events.forEach((event, index) => {
|
|
241
|
+
const id = requestIdOf(event);
|
|
242
|
+
if (id === null) return;
|
|
243
|
+
const key = JSON.stringify([event.group ?? "", id]);
|
|
244
|
+
const existing = byId.get(key);
|
|
245
|
+
if (existing === void 0) {
|
|
246
|
+
byId.set(key, {
|
|
247
|
+
id,
|
|
248
|
+
level: "unknown",
|
|
249
|
+
first: event.timestamp,
|
|
250
|
+
last: event.timestamp,
|
|
251
|
+
events: [{
|
|
252
|
+
event,
|
|
253
|
+
index
|
|
254
|
+
}]
|
|
255
|
+
});
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
existing.events.push({
|
|
259
|
+
event,
|
|
260
|
+
index
|
|
261
|
+
});
|
|
262
|
+
if (Number.isFinite(event.timestamp)) {
|
|
263
|
+
if (event.timestamp < existing.first) existing.first = event.timestamp;
|
|
264
|
+
if (event.timestamp > existing.last) existing.last = event.timestamp;
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
const groups = [...byId.values()];
|
|
268
|
+
for (const group of groups) group.level = requestLevel(group.events.map((entry) => entry.event));
|
|
269
|
+
return groups;
|
|
270
|
+
}
|
|
271
|
+
/** True when an event belongs to a request. */
|
|
272
|
+
function hasRequestId(event) {
|
|
273
|
+
return requestIdOf(event) !== null;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Builds the log view's rows for a buffer.
|
|
277
|
+
*
|
|
278
|
+
* A request is placed where its first line appeared, so the view stays in time
|
|
279
|
+
* order and a request never jumps down the list when its last line lands. The
|
|
280
|
+
* lines inside a request keep their own order.
|
|
281
|
+
*/
|
|
282
|
+
function requestRows(events) {
|
|
283
|
+
const at = /* @__PURE__ */ new Map();
|
|
284
|
+
for (const group of collectRequests(events)) {
|
|
285
|
+
const first = group.events[0];
|
|
286
|
+
if (first !== void 0) at.set(first.index, group);
|
|
287
|
+
}
|
|
288
|
+
const rows = [];
|
|
289
|
+
events.forEach((event, index) => {
|
|
290
|
+
const group = at.get(index);
|
|
291
|
+
if (group !== void 0) {
|
|
292
|
+
rows.push({
|
|
293
|
+
kind: "request",
|
|
294
|
+
key: `req:${JSON.stringify([group.events[0]?.event.group ?? "", group.id])}`,
|
|
295
|
+
request: group
|
|
296
|
+
});
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
if (hasRequestId(event)) return;
|
|
300
|
+
rows.push({
|
|
301
|
+
kind: "line",
|
|
302
|
+
key: `line:${index}`,
|
|
303
|
+
event,
|
|
304
|
+
index
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
return rows;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Counts requests into buckets, one mark per request, per group and level.
|
|
311
|
+
*
|
|
312
|
+
* A request is counted in the bucket its first line falls in, and only when
|
|
313
|
+
* that first line is inside the window: a request that started before the window
|
|
314
|
+
* is not re-counted in every bucket it touches. Lines that belong to no request
|
|
315
|
+
* are still counted, each as one mark, so nothing disappears from the chart when
|
|
316
|
+
* grouping is on. The level filter is applied to the request's most critical
|
|
317
|
+
* level, matching what the archive answers, so the chips mean the same thing in
|
|
318
|
+
* both sources.
|
|
319
|
+
*/
|
|
320
|
+
function bucketRequests(events, options) {
|
|
321
|
+
const bucketMs = options.bucketMs > 0 ? Math.round(options.bucketMs) : 6e4;
|
|
322
|
+
const levelFilter = options.level ?? null;
|
|
323
|
+
const fallbackGroup = options.fallbackGroup ?? "";
|
|
324
|
+
const marks = [];
|
|
325
|
+
for (const group of collectRequests(events)) marks.push({
|
|
326
|
+
t: group.first,
|
|
327
|
+
group: group.events[0]?.event.group ?? fallbackGroup,
|
|
328
|
+
level: group.level
|
|
329
|
+
});
|
|
330
|
+
for (const event of events) {
|
|
331
|
+
if (requestIdOf(event) !== null) continue;
|
|
332
|
+
marks.push({
|
|
333
|
+
t: event.timestamp,
|
|
334
|
+
group: event.group ?? fallbackGroup,
|
|
335
|
+
level: effectiveLevel(event) ?? "unknown"
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
const counts = /* @__PURE__ */ new Map();
|
|
339
|
+
for (const mark of marks) {
|
|
340
|
+
const timestamp = mark.t;
|
|
341
|
+
if (!Number.isFinite(timestamp)) continue;
|
|
342
|
+
if (timestamp < options.from || timestamp >= options.to) continue;
|
|
343
|
+
if (levelFilter !== null && mark.level !== levelFilter) continue;
|
|
344
|
+
const t = Math.floor(timestamp / bucketMs) * bucketMs;
|
|
345
|
+
const name = mark.group;
|
|
346
|
+
const key = `${t}\u0000${name}\u0000${mark.level}`;
|
|
347
|
+
const existing = counts.get(key);
|
|
348
|
+
if (existing === void 0) counts.set(key, {
|
|
349
|
+
t,
|
|
350
|
+
group: name,
|
|
351
|
+
level: mark.level,
|
|
352
|
+
events: 1
|
|
353
|
+
});
|
|
354
|
+
else existing.events += 1;
|
|
355
|
+
}
|
|
356
|
+
return [...counts.values()].toSorted((a, b) => a.t === b.t ? a.level.localeCompare(b.level) : a.t - b.t);
|
|
357
|
+
}
|
|
358
|
+
//#endregion
|
|
359
|
+
//#region src/lib/series-buckets.ts
|
|
360
|
+
/**
|
|
361
|
+
* Client-side bucketing for the chart.
|
|
362
|
+
*
|
|
363
|
+
* The archive answers `/api/series` with counts it can compute in DuckDB, but a
|
|
364
|
+
* CloudWatch view has no aggregate API, so the events already streamed into the
|
|
365
|
+
* view are bucketed here instead. Both paths produce the same
|
|
366
|
+
* {@link SeriesPoint} shape, so the chart has one data contract.
|
|
367
|
+
*/
|
|
368
|
+
/** Severity order used wherever levels are listed. */
|
|
369
|
+
var LEVEL_ORDER = [
|
|
370
|
+
"error",
|
|
371
|
+
"warn",
|
|
372
|
+
"info",
|
|
373
|
+
"debug",
|
|
374
|
+
"unknown"
|
|
375
|
+
];
|
|
376
|
+
/** Label shown for a level. */
|
|
377
|
+
var LEVEL_LABELS = {
|
|
378
|
+
error: "Error",
|
|
379
|
+
warn: "Warn",
|
|
380
|
+
info: "Info",
|
|
381
|
+
debug: "Debug",
|
|
382
|
+
unknown: "No level"
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* Chart palette per level, matching the colours the log viewer uses for lines.
|
|
386
|
+
*
|
|
387
|
+
* SVG needs real colour values rather than Tailwind classes, so the palette is
|
|
388
|
+
* kept next to the level helpers instead of in the component.
|
|
389
|
+
*/
|
|
390
|
+
var SERIES_LEVEL_COLOR = {
|
|
391
|
+
error: "var(--chart-error, #f87171)",
|
|
392
|
+
warn: "var(--chart-warn, #fcd34d)",
|
|
393
|
+
info: "var(--chart-info, #a3a3a3)",
|
|
394
|
+
debug: "var(--chart-debug, #737373)",
|
|
395
|
+
unknown: "var(--chart-unknown, #525252)"
|
|
396
|
+
};
|
|
397
|
+
/** Bucket width used when a caller does not ask for one. */
|
|
398
|
+
var DEFAULT_BUCKET_MS = 6e4;
|
|
399
|
+
/** Level of an event as the chart counts it. */
|
|
400
|
+
function seriesLevelOf(event) {
|
|
401
|
+
return effectiveLevel(event) ?? "unknown";
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Counts events into buckets of one width, per group and level.
|
|
405
|
+
*
|
|
406
|
+
* Events outside the window are ignored, as are events without a usable
|
|
407
|
+
* timestamp: the chart describes exactly the window it is drawn for. With
|
|
408
|
+
* `byRequest`, a request is one mark instead of its lines being many, which is
|
|
409
|
+
* the same thing the archive counts in SQL.
|
|
410
|
+
*/
|
|
411
|
+
function bucketEvents(events, options) {
|
|
412
|
+
const requested = options.bucketMs ?? 6e4;
|
|
413
|
+
const bucketMs = Number.isFinite(requested) && requested > 0 ? Math.round(requested) : DEFAULT_BUCKET_MS;
|
|
414
|
+
const levelFilter = options.level ?? null;
|
|
415
|
+
const fallbackGroup = options.fallbackGroup ?? "";
|
|
416
|
+
if (options.byRequest === true) return bucketRequests(events, {
|
|
417
|
+
from: options.from,
|
|
418
|
+
to: options.to,
|
|
419
|
+
bucketMs,
|
|
420
|
+
level: levelFilter,
|
|
421
|
+
fallbackGroup
|
|
422
|
+
});
|
|
423
|
+
const counts = /* @__PURE__ */ new Map();
|
|
424
|
+
for (const event of events) {
|
|
425
|
+
const timestamp = event.timestamp;
|
|
426
|
+
if (!Number.isFinite(timestamp)) continue;
|
|
427
|
+
if (timestamp < options.from || timestamp >= options.to) continue;
|
|
428
|
+
const level = seriesLevelOf(event);
|
|
429
|
+
if (levelFilter !== null && level !== levelFilter) continue;
|
|
430
|
+
const t = Math.floor(timestamp / bucketMs) * bucketMs;
|
|
431
|
+
const group = event.group ?? fallbackGroup;
|
|
432
|
+
const key = `${t}\u0000${group}\u0000${level}`;
|
|
433
|
+
const existing = counts.get(key);
|
|
434
|
+
if (existing === void 0) counts.set(key, {
|
|
435
|
+
t,
|
|
436
|
+
group,
|
|
437
|
+
level,
|
|
438
|
+
events: 1
|
|
439
|
+
});
|
|
440
|
+
else existing.events += 1;
|
|
441
|
+
}
|
|
442
|
+
return [...counts.values()].toSorted((a, b) => a.t === b.t ? a.level.localeCompare(b.level) : a.t - b.t);
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Splits points into one series per level, in severity order.
|
|
446
|
+
*
|
|
447
|
+
* A level with no events is left out, so the legend only names what is drawn.
|
|
448
|
+
*/
|
|
449
|
+
function groupByLevel(points) {
|
|
450
|
+
const byLevel = /* @__PURE__ */ new Map();
|
|
451
|
+
for (const point of points) {
|
|
452
|
+
const bucket = byLevel.get(point.level);
|
|
453
|
+
if (bucket === void 0) byLevel.set(point.level, [point]);
|
|
454
|
+
else bucket.push(point);
|
|
455
|
+
}
|
|
456
|
+
return LEVEL_ORDER.filter((level) => byLevel.has(level)).map((level) => {
|
|
457
|
+
const levelPoints = (byLevel.get(level) ?? []).toSorted((a, b) => a.t - b.t);
|
|
458
|
+
return {
|
|
459
|
+
level,
|
|
460
|
+
label: LEVEL_LABELS[level],
|
|
461
|
+
points: levelPoints,
|
|
462
|
+
events: levelPoints.reduce((sum, point) => sum + point.events, 0)
|
|
463
|
+
};
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
/** Fraction of the window a brush must stay under to count as a zoom. */
|
|
467
|
+
var MAX_BRUSH_FRACTION = .98;
|
|
468
|
+
/**
|
|
469
|
+
* True when a brushed range is a deliberate zoom rather than a stray click.
|
|
470
|
+
*
|
|
471
|
+
* A pointer down and up a couple of pixels apart still produces a range (the
|
|
472
|
+
* chart has a minimum selection width), and a double click on empty space
|
|
473
|
+
* selects the whole domain. Acting on either would re-scope the log view to a
|
|
474
|
+
* window with nothing in it, so a brush is only applied when it spans at least
|
|
475
|
+
* two buckets and a floor of {@link MIN_BRUSH_MS}, and is narrower than almost
|
|
476
|
+
* the whole window.
|
|
477
|
+
*/
|
|
478
|
+
function isMeaningfulBrush(range, window, bucketMs) {
|
|
479
|
+
const span = range.to - range.from;
|
|
480
|
+
if (!Number.isFinite(span) || span <= 0) return false;
|
|
481
|
+
const windowSpan = window.to - window.from;
|
|
482
|
+
if (!Number.isFinite(windowSpan) || windowSpan <= 0) return false;
|
|
483
|
+
if (span < Math.max(3e4, bucketMs * 2)) return false;
|
|
484
|
+
return span <= windowSpan * MAX_BRUSH_FRACTION;
|
|
485
|
+
}
|
|
486
|
+
/** One point per identified request, using its observed first/last events in the window. */
|
|
487
|
+
function requestDurations(events, options) {
|
|
488
|
+
const byGroup = /* @__PURE__ */ new Map();
|
|
489
|
+
for (const event of events) {
|
|
490
|
+
if (!Number.isFinite(event.timestamp) || event.timestamp < options.from || event.timestamp > options.to) continue;
|
|
491
|
+
const group = event.group ?? options.fallbackGroup ?? "";
|
|
492
|
+
const rows = byGroup.get(group) ?? [];
|
|
493
|
+
rows.push(event);
|
|
494
|
+
byGroup.set(group, rows);
|
|
495
|
+
}
|
|
496
|
+
const points = [];
|
|
497
|
+
for (const [group, rows] of byGroup) for (const request of collectRequests(rows)) {
|
|
498
|
+
if (options.level && request.level !== options.level) continue;
|
|
499
|
+
const last = request.events.reduce((latest, entry) => entry.event.timestamp >= latest.timestamp ? entry.event : latest, request.events[0].event);
|
|
500
|
+
points.push({
|
|
501
|
+
t: request.first,
|
|
502
|
+
group,
|
|
503
|
+
level: request.level,
|
|
504
|
+
events: 1,
|
|
505
|
+
requestId: request.id,
|
|
506
|
+
durationMs: request.last - request.first + eventDurationMs(last.message)
|
|
507
|
+
});
|
|
508
|
+
}
|
|
509
|
+
return points.toSorted((a, b) => a.t - b.t || a.group.localeCompare(b.group) || (a.requestId ?? "").localeCompare(b.requestId ?? ""));
|
|
510
|
+
}
|
|
511
|
+
//#endregion
|
|
203
512
|
//#region src/lib/resize.ts
|
|
204
513
|
/**
|
|
205
514
|
* Pure helpers for the drag-resizable columns in the UI.
|
|
@@ -256,8 +565,11 @@ function EventScatterPanel($$renderer, $$props) {
|
|
|
256
565
|
/**
|
|
257
566
|
* The real loader: a dynamic import, which is what keeps layerchart out of the
|
|
258
567
|
* initial bundle. It only runs in the browser, and only once the panel is open.
|
|
568
|
+
* The server build gets a stub instead: without it, layerchart and d3 are
|
|
569
|
+
* compiled into the server chunks (and shipped in the npm package) for code
|
|
570
|
+
* that never runs there.
|
|
259
571
|
*/
|
|
260
|
-
const loadChartModule = () =>
|
|
572
|
+
const loadChartModule = () => Promise.reject(/* @__PURE__ */ new Error("the chart is client-only"));
|
|
261
573
|
/** Bucketed counts for the window. */
|
|
262
574
|
/** Inclusive start of the window, epoch ms. */
|
|
263
575
|
/** Inclusive end of the window, epoch ms. */
|
|
@@ -1912,4 +2224,3 @@ function _page($$renderer, $$props) {
|
|
|
1912
2224
|
}
|
|
1913
2225
|
|
|
1914
2226
|
export { _page as default };
|
|
1915
|
-
//# sourceMappingURL=_page.svelte.js-CVlL2UsO.js.map
|
|
@@ -9,8 +9,8 @@ import * as qs from 'node:querystring';
|
|
|
9
9
|
import { Readable } from 'node:stream';
|
|
10
10
|
import { S as SvelteKitError } from './chunks/shared.js-CgjUIvRK.js';
|
|
11
11
|
import './chunks/utils.js-BIlHjgGW.js';
|
|
12
|
-
import { S as Server } from './index.js-
|
|
13
|
-
import { m as manifest } from './manifest.js-
|
|
12
|
+
import { S as Server } from './index.js-BLTOesya.js';
|
|
13
|
+
import { m as manifest } from './manifest.js-C1_IS4sj.js';
|
|
14
14
|
import { env, dir, env_prefix } from '../../env.js';
|
|
15
15
|
import { format } from 'node:url';
|
|
16
16
|
|
|
@@ -1534,8 +1534,8 @@ function serve(path, client = false) {
|
|
|
1534
1534
|
return fs__default.existsSync(path)
|
|
1535
1535
|
? sirv(path, {
|
|
1536
1536
|
etag: true,
|
|
1537
|
-
gzip:
|
|
1538
|
-
brotli:
|
|
1537
|
+
gzip: false,
|
|
1538
|
+
brotli: false,
|
|
1539
1539
|
setHeaders: client
|
|
1540
1540
|
? (res, pathname) => {
|
|
1541
1541
|
// only apply to build directory, not e.g. version.json
|
|
@@ -1732,4 +1732,3 @@ const handler = sequence(
|
|
|
1732
1732
|
);
|
|
1733
1733
|
|
|
1734
1734
|
export { format_listening_address as f, handler as h, polka as p };
|
|
1735
|
-
//# sourceMappingURL=handler-CrpvMheE.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { a2 as __commonJSMin, a3 as writable, a4 as readable } from './chunks/index-server.js-
|
|
1
|
+
import { a2 as __commonJSMin, a3 as writable, a4 as readable } from './chunks/index-server.js-DOq0LmqS.js';
|
|
2
2
|
import { n as noop, T as TRAILING_SLASH_PARAM, I as INVALIDATED_PARAM, R as Redirect, b as get_relative_path, S as SvelteKitError, g as get_status, t as text_encoder, o as once, H as HttpError, d as normalize_error, e as create_remote_key, f as parse_remote_arg, s as stringify, h as stringify$1, A as ActionFailure, i as split_remote_key, j as base64_encode } from './chunks/shared.js-CgjUIvRK.js';
|
|
3
3
|
import { b as base, o as override, a as assets, r as reset, c as app_dir } from './chunks/internal.js-DZ8ZzzjN.js';
|
|
4
4
|
import { f as format_server_error, j as json, i as is_form_content_type, t as text, h as has_prerendered_path, a as handle_fatal_error, r as redirect_response, g as get_set_cookies, n as negotiate, w as with_request_store, p as parseString, m as merge_tracing, b as method_not_allowed, s as static_error_page, c as handle_error_and_jsonify, d as get_global_name, e as create_replacer, k as serialize_uses, l as clarify_devalue_error, E as ENDPOINT_METHODS, P as PAGE_METHODS, o as get_node_type, q as isRedirect, u as escape_html, v as error, x as deserialize_binary_form } from './chunks/utils.js-BIlHjgGW.js';
|
|
5
5
|
import { u as uneval } from './chunks/uneval.js-DaakSYFQ.js';
|
|
6
6
|
import { s as set_private_env, a as set_public_env, p as public_env } from './chunks/shared-server.js-Dn5XheXH.js';
|
|
7
|
-
import { d as decode_pathname, f as find_route, n as normalize_path, a as disable_search, v as validate_layout_server_exports, b as validate_layout_exports, c as validate_page_server_exports, e as validate_page_exports, r as resolve, h as hash, m as make_trackable } from './chunks/exports.js-
|
|
8
|
-
import { o as options, g as get_hooks, r as read_implementation, s as set_read_implementation } from './chunks/internal2.js-
|
|
7
|
+
import { d as decode_pathname, f as find_route, n as normalize_path, a as disable_search, v as validate_layout_server_exports, b as validate_layout_exports, c as validate_page_server_exports, e as validate_page_exports, r as resolve, h as hash, m as make_trackable } from './chunks/exports.js-CvFPPbaH.js';
|
|
8
|
+
import { o as options, g as get_hooks, r as read_implementation, s as set_read_implementation } from './chunks/internal2.js-B2FekELn.js';
|
|
9
9
|
|
|
10
10
|
//#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/utils/promise.js
|
|
11
11
|
/** @see https://github.com/microsoft/TypeScript/blob/904e7dd97dc8da1352c8e05d70829dff17c73214/src/lib/es2024.promise.d.ts */
|
|
@@ -3800,4 +3800,3 @@ var Server = class {
|
|
|
3800
3800
|
};
|
|
3801
3801
|
|
|
3802
3802
|
export { Server as S };
|
|
3803
|
-
//# sourceMappingURL=index.js-9Dk7Q13E.js.map
|
|
@@ -10,11 +10,11 @@ return {
|
|
|
10
10
|
assets: new Set(["robots.txt"]),
|
|
11
11
|
mimeTypes: {".txt":"text/plain"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {start:"_app/immutable/entry/start.
|
|
13
|
+
client: {start:"_app/immutable/entry/start.DmBlaUbV.js",app:"_app/immutable/entry/app.BEq8gOel.js",imports:["_app/immutable/entry/start.DmBlaUbV.js","_app/immutable/chunks/DrupwIIS.js","_app/immutable/chunks/B2En4t_E.js","_app/immutable/entry/app.BEq8gOel.js","_app/immutable/chunks/B2En4t_E.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
14
14
|
nodes: [
|
|
15
|
-
__memo(() => import('./nodes/0.js-
|
|
16
|
-
__memo(() => import('./nodes/1.js-
|
|
17
|
-
__memo(() => import('./nodes/2.js-
|
|
15
|
+
__memo(() => import('./nodes/0.js-BHXaR9OX.js')),
|
|
16
|
+
__memo(() => import('./nodes/1.js-C-coUSdu.js')),
|
|
17
|
+
__memo(() => import('./nodes/2.js-Dor6Xgc7.js'))
|
|
18
18
|
],
|
|
19
19
|
remotes: {
|
|
20
20
|
|
|
@@ -32,7 +32,7 @@ return {
|
|
|
32
32
|
pattern: /^\/api\/archive\/?$/,
|
|
33
33
|
params: [],
|
|
34
34
|
page: null,
|
|
35
|
-
endpoint: __memo(() => import('./entries/endpoints/api/archive/_server.ts.js-
|
|
35
|
+
endpoint: __memo(() => import('./entries/endpoints/api/archive/_server.ts.js-D-97I3hr.js'))
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
id: "/api/health",
|
|
@@ -53,7 +53,7 @@ return {
|
|
|
53
53
|
pattern: /^\/api\/log-groups\/?$/,
|
|
54
54
|
params: [],
|
|
55
55
|
page: null,
|
|
56
|
-
endpoint: __memo(() => import('./entries/endpoints/api/log-groups/_server.ts.js-
|
|
56
|
+
endpoint: __memo(() => import('./entries/endpoints/api/log-groups/_server.ts.js-BBBsBX5h.js'))
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
id: "/api/regions",
|
|
@@ -67,14 +67,14 @@ return {
|
|
|
67
67
|
pattern: /^\/api\/series\/?$/,
|
|
68
68
|
params: [],
|
|
69
69
|
page: null,
|
|
70
|
-
endpoint: __memo(() => import('./entries/endpoints/api/series/_server.ts.js-
|
|
70
|
+
endpoint: __memo(() => import('./entries/endpoints/api/series/_server.ts.js-bsGqvQ1O.js'))
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
id: "/api/stream",
|
|
74
74
|
pattern: /^\/api\/stream\/?$/,
|
|
75
75
|
params: [],
|
|
76
76
|
page: null,
|
|
77
|
-
endpoint: __memo(() => import('./entries/endpoints/api/stream/_server.ts.js-
|
|
77
|
+
endpoint: __memo(() => import('./entries/endpoints/api/stream/_server.ts.js-B6obpUbh.js'))
|
|
78
78
|
}
|
|
79
79
|
],
|
|
80
80
|
prerendered_routes: new Set([]),
|
|
@@ -88,4 +88,3 @@ return {
|
|
|
88
88
|
})();
|
|
89
89
|
|
|
90
90
|
export { manifest as m };
|
|
91
|
-
//# sourceMappingURL=manifest.js-DIaODzKX.js.map
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
const index = 0;
|
|
2
2
|
let component_cache;
|
|
3
|
-
const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js-
|
|
3
|
+
const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js-C3CVxu2T.js')).default;
|
|
4
4
|
const imports = ["_app/immutable/nodes/0.D63E8Q6i.js","_app/immutable/chunks/B2En4t_E.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/LGzrUxfF.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/0.B5hI3s8c.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=0.js-CQ960AOW.js.map
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
const index = 1;
|
|
2
2
|
let component_cache;
|
|
3
|
-
const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js-
|
|
4
|
-
const imports = ["_app/immutable/nodes/1.
|
|
3
|
+
const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js-BupH3lxJ.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/1.DXfG5P6X.js","_app/immutable/chunks/B2En4t_E.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/CL6wPCzw.js","_app/immutable/chunks/DrupwIIS.js"];
|
|
5
5
|
const stylesheets = [];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=1.js-CtTei4sV.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const index = 2;
|
|
2
|
+
let component_cache;
|
|
3
|
+
const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-DS9p1LVo.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/2.45XrHxUU.js","_app/immutable/chunks/B2En4t_E.js","_app/immutable/chunks/DrupwIIS.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/LGzrUxfF.js","_app/immutable/chunks/CL6wPCzw.js","_app/immutable/chunks/CBZpkDc1.js"];
|
|
5
|
+
const stylesheets = ["_app/immutable/assets/2.Cn4w1JYv.css"];
|
|
6
|
+
const fonts = [];
|
|
7
|
+
|
|
8
|
+
export { component, fonts, imports, index, stylesheets };
|
package/build/shims.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "watch-tail",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"description": "Tail Amazon CloudWatch Logs in your browser: a local SvelteKit UI with live and historic streaming, ambient AWS credentials and floci support",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aws",
|
|
@@ -45,23 +45,24 @@
|
|
|
45
45
|
"@bomb.sh/args": "^0.3.1",
|
|
46
46
|
"@bomb.sh/tab": "^0.0.22",
|
|
47
47
|
"@clack/prompts": "^1.8.0",
|
|
48
|
-
"@lucide/svelte": "^1.47.0",
|
|
49
48
|
"@tmcp/adapter-valibot": "^0.1.6",
|
|
50
|
-
"layerchart": "^2.5.0",
|
|
51
49
|
"tmcp": "^1.20.0",
|
|
52
50
|
"valibot": "^1.5.0"
|
|
53
51
|
},
|
|
54
52
|
"devDependencies": {
|
|
55
53
|
"@changesets/changelog-github": "^1.0.1",
|
|
56
54
|
"@changesets/cli": "^3.0.2",
|
|
55
|
+
"@lucide/svelte": "^1.47.0",
|
|
57
56
|
"@sveltejs/adapter-node": "^5.5.4",
|
|
58
57
|
"@sveltejs/kit": "^2.63.0",
|
|
59
58
|
"@sveltejs/vite-plugin-svelte": "^7.1.2",
|
|
60
59
|
"@tailwindcss/vite": "^4.3.0",
|
|
61
60
|
"@testing-library/svelte": "^5.4.2",
|
|
62
61
|
"@types/node": "^22.20.2",
|
|
62
|
+
"es-module-lexer": "^2.3.2",
|
|
63
63
|
"jsdom": "^30.0.1",
|
|
64
64
|
"knip": "^6.35.1",
|
|
65
|
+
"layerchart": "^2.5.0",
|
|
65
66
|
"oxfmt": "^0.67.0",
|
|
66
67
|
"oxlint": "^1.82.0",
|
|
67
68
|
"playwright": "^1.63.0",
|
|
@@ -76,12 +77,19 @@
|
|
|
76
77
|
"optionalDependencies": {
|
|
77
78
|
"@duckdb/node-api": "^1.5.5-r.4"
|
|
78
79
|
},
|
|
80
|
+
"devEngines": {
|
|
81
|
+
"runtime": {
|
|
82
|
+
"name": "node",
|
|
83
|
+
"version": ">=22.18",
|
|
84
|
+
"onFail": "error"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
79
87
|
"engines": {
|
|
80
88
|
"node": ">=22"
|
|
81
89
|
},
|
|
82
90
|
"scripts": {
|
|
83
91
|
"dev": "vite dev",
|
|
84
|
-
"build": "vite build && tsc -p tsconfig.cli.json",
|
|
92
|
+
"build": "vite build && node scripts/strip-sourcemaps.ts && tsc -p tsconfig.cli.json",
|
|
85
93
|
"preview": "vite preview",
|
|
86
94
|
"start": "node dist/cli/bin.js",
|
|
87
95
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
@@ -94,7 +102,7 @@
|
|
|
94
102
|
"format": "oxfmt --write .",
|
|
95
103
|
"format:check": "oxfmt --check .",
|
|
96
104
|
"knip": "knip",
|
|
97
|
-
"verify": "pnpm check && pnpm lint && pnpm format:check && pnpm test && pnpm knip && pnpm build",
|
|
105
|
+
"verify": "pnpm check && pnpm lint && pnpm format:check && pnpm test && pnpm knip && pnpm build && pnpm check:package",
|
|
98
106
|
"floci:start": "floci start",
|
|
99
107
|
"floci:stop": "floci stop",
|
|
100
108
|
"floci:env": "node scripts/floci-env.ts",
|
|
@@ -105,10 +113,11 @@
|
|
|
105
113
|
"dev:aws": "node scripts/dev.ts",
|
|
106
114
|
"start:aws": "node scripts/dev.ts --start",
|
|
107
115
|
"test:ui": "node scripts/ui-smoke.ts",
|
|
108
|
-
"build:app": "vite build",
|
|
116
|
+
"build:app": "vite build && node scripts/strip-sourcemaps.ts",
|
|
109
117
|
"build:cli": "tsc -p tsconfig.cli.json",
|
|
110
118
|
"watch-tail": "node dist/cli/bin.js",
|
|
111
|
-
"publish:check": "publint && npm pack --dry-run",
|
|
119
|
+
"publish:check": "publint && npm pack --dry-run && pnpm check:package",
|
|
120
|
+
"check:package": "node scripts/check-package.ts",
|
|
112
121
|
"test:cli": "WATCH_TAIL_E2E=1 vitest run --project integration tests/cli-server.spec.ts tests/shutdown.spec.ts tests/cli-terminal.spec.ts",
|
|
113
122
|
"changeset": "changeset",
|
|
114
123
|
"changeset:version": "changeset version && pnpm install --no-frozen-lockfile"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
�`d�Oh�>������e���}�}� �Bz~�j�m� '�����B�.$BJ�t�"ѥ���(a����c9��R3D���<�qްI���Y�els�Ǭ����Ay�OYY�$�:(h���N�`1'�u�>�Pʴ���&O�$a�����9�UHde?��
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|