watch-tail 0.7.1 → 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.
- package/README.md +15 -9
- package/build/client/_app/immutable/assets/0.zDk3x0WE.css +2 -0
- package/build/client/_app/immutable/assets/0.zDk3x0WE.css.br +0 -0
- package/build/client/_app/immutable/assets/0.zDk3x0WE.css.gz +0 -0
- package/build/client/_app/immutable/assets/{EventScatter.DA5sZ1c0.css → EventScatter.CCk6ByS3.css} +1 -1
- package/build/client/_app/immutable/assets/EventScatter.CCk6ByS3.css.br +0 -0
- package/build/client/_app/immutable/assets/EventScatter.CCk6ByS3.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{BF84Orj8.js → 9z7cmAWt.js} +1 -1
- package/build/client/_app/immutable/chunks/9z7cmAWt.js.br +0 -0
- package/build/client/_app/immutable/chunks/9z7cmAWt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BSy__Jrd.js → B26Z2DQX.js} +1 -1
- package/build/client/_app/immutable/chunks/B26Z2DQX.js.br +0 -0
- package/build/client/_app/immutable/chunks/B26Z2DQX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CEw1go7g.js → B5kJ4QGS.js} +1 -1
- package/build/client/_app/immutable/chunks/B5kJ4QGS.js.br +0 -0
- package/build/client/_app/immutable/chunks/B5kJ4QGS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DbWb9_dK.js → BF1MBUT7.js} +1 -1
- package/build/client/_app/immutable/chunks/BF1MBUT7.js.br +0 -0
- package/build/client/_app/immutable/chunks/BF1MBUT7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BnRQs9nz.js → BJEa1AAY.js} +5 -5
- package/build/client/_app/immutable/chunks/BJEa1AAY.js.br +0 -0
- package/build/client/_app/immutable/chunks/BJEa1AAY.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{8mpn3Xst.js → BKpbhYu9.js} +1 -1
- package/build/client/_app/immutable/chunks/BKpbhYu9.js.br +0 -0
- package/build/client/_app/immutable/chunks/BKpbhYu9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CgAZPeK7.js → BVlqiKgb.js} +1 -1
- package/build/client/_app/immutable/chunks/BVlqiKgb.js.br +0 -0
- package/build/client/_app/immutable/chunks/BVlqiKgb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{3fFVdy92.js → BWGaSL1l.js} +1 -1
- package/build/client/_app/immutable/chunks/BWGaSL1l.js.br +0 -0
- package/build/client/_app/immutable/chunks/BWGaSL1l.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CFJEGo4j.js → B_Z4tBMl.js} +1 -1
- package/build/client/_app/immutable/chunks/B_Z4tBMl.js.br +0 -0
- package/build/client/_app/immutable/chunks/B_Z4tBMl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{zfc2KyIr.js → Bo46v6NJ.js} +1 -1
- package/build/client/_app/immutable/chunks/Bo46v6NJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bo46v6NJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DtdjxckD.js → BpDPh_kG.js} +1 -1
- package/build/client/_app/immutable/chunks/BpDPh_kG.js.br +0 -0
- package/build/client/_app/immutable/chunks/BpDPh_kG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DI6o1zMC.js → BzFqst10.js} +1 -1
- package/build/client/_app/immutable/chunks/BzFqst10.js.br +0 -0
- package/build/client/_app/immutable/chunks/BzFqst10.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BdW_yBQU.js → C3JYac4u.js} +1 -1
- package/build/client/_app/immutable/chunks/C3JYac4u.js.br +0 -0
- package/build/client/_app/immutable/chunks/C3JYac4u.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{D-AkVRH7.js → CBzF0p8K.js} +1 -1
- package/build/client/_app/immutable/chunks/CBzF0p8K.js.br +0 -0
- package/build/client/_app/immutable/chunks/CBzF0p8K.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Dh3ZWuG8.js → CM9QBz5w.js} +1 -1
- package/build/client/_app/immutable/chunks/CM9QBz5w.js.br +0 -0
- package/build/client/_app/immutable/chunks/CM9QBz5w.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CtWwlW0t.js → CZqQKfBo.js} +1 -1
- package/build/client/_app/immutable/chunks/CZqQKfBo.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZqQKfBo.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{YehCS1lO.js → Cr-NovV3.js} +1 -1
- package/build/client/_app/immutable/chunks/Cr-NovV3.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cr-NovV3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{g-7YfdwH.js → Cz6pnyFa.js} +1 -1
- package/build/client/_app/immutable/chunks/Cz6pnyFa.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cz6pnyFa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{1mB5Ee1Q.js → D2fsDTN5.js} +1 -1
- package/build/client/_app/immutable/chunks/D2fsDTN5.js.br +0 -0
- package/build/client/_app/immutable/chunks/D2fsDTN5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{D0IZin0e.js → DBcd9YbV.js} +1 -1
- package/build/client/_app/immutable/chunks/DBcd9YbV.js.br +0 -0
- package/build/client/_app/immutable/chunks/DBcd9YbV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{B78Vj1az.js → DC_milOQ.js} +1 -1
- package/build/client/_app/immutable/chunks/DC_milOQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/DC_milOQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Dp3OTI-g.js → DNiEIfDZ.js} +1 -1
- package/build/client/_app/immutable/chunks/DNiEIfDZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/DNiEIfDZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CrmB4MvE.js → DWdskt_Y.js} +1 -1
- package/build/client/_app/immutable/chunks/DWdskt_Y.js.br +0 -0
- package/build/client/_app/immutable/chunks/DWdskt_Y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CZ3S843d.js → DsMQ6HVM.js} +1 -1
- package/build/client/_app/immutable/chunks/DsMQ6HVM.js.br +0 -0
- package/build/client/_app/immutable/chunks/DsMQ6HVM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dxeyu30B.js +1 -0
- package/build/client/_app/immutable/chunks/Dxeyu30B.js.br +1 -0
- package/build/client/_app/immutable/chunks/Dxeyu30B.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CY8zQ4KM.js → H4Anb6kP.js} +1 -1
- package/build/client/_app/immutable/chunks/H4Anb6kP.js.br +0 -0
- package/build/client/_app/immutable/chunks/H4Anb6kP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/MDK8mPOo.js +1 -0
- package/build/client/_app/immutable/chunks/MDK8mPOo.js.br +0 -0
- package/build/client/_app/immutable/chunks/MDK8mPOo.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{B7aS9tS2.js → X7CLxGgV.js} +1 -1
- package/build/client/_app/immutable/chunks/X7CLxGgV.js.br +0 -0
- package/build/client/_app/immutable/chunks/X7CLxGgV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{D0CZlpgd.js → cK-f5ch_.js} +1 -1
- package/build/client/_app/immutable/chunks/cK-f5ch_.js.br +2 -0
- package/build/client/_app/immutable/chunks/cK-f5ch_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BPoZrXrH.js → mhYP0ygJ.js} +1 -1
- package/build/client/_app/immutable/chunks/mhYP0ygJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/mhYP0ygJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{C6r7NvtG.js → vB0ff9Sn.js} +1 -1
- package/build/client/_app/immutable/chunks/vB0ff9Sn.js.br +0 -0
- package/build/client/_app/immutable/chunks/vB0ff9Sn.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.C-KKyvGI.js → app.CinEZGkq.js} +2 -2
- package/build/client/_app/immutable/entry/app.CinEZGkq.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CinEZGkq.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.B7e0-3Hk.js +1 -0
- package/build/client/_app/immutable/entry/start.B7e0-3Hk.js.br +1 -0
- package/build/client/_app/immutable/entry/start.B7e0-3Hk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.D5nbnmDb.js → 1.kGO9dV9J.js} +1 -1
- package/build/client/_app/immutable/nodes/1.kGO9dV9J.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.kGO9dV9J.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.eGSziRQX.js +5 -0
- package/build/client/_app/immutable/nodes/2.eGSziRQX.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.eGSziRQX.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/handler.js +4 -4
- package/build/index.js +4 -4
- package/build/server/chunks/chunks/{EventScatter.js-Du7AJN9m.js → EventScatter.js-CG0RcOU6.js} +35 -6
- package/build/server/chunks/chunks/{EventScatter.js-Du7AJN9m.js.map → EventScatter.js-CG0RcOU6.js.map} +1 -1
- package/build/server/chunks/chunks/{internal2.js--RCssYze.js → internal2.js-BMcEVxqN.js} +2 -2
- package/build/server/chunks/chunks/{internal2.js--RCssYze.js.map → internal2.js-BMcEVxqN.js.map} +1 -1
- package/build/server/chunks/chunks/{series-buckets.js-BmCYga3F.js → series-buckets.js-DFGWkob5.js} +8 -7
- package/build/server/chunks/chunks/series-buckets.js-DFGWkob5.js.map +1 -0
- package/build/server/chunks/chunks/{state.js-CI2ef6Vi.js → state.js-vZj9lo1I.js} +2 -2
- package/build/server/chunks/chunks/{state.js-CI2ef6Vi.js.map → state.js-vZj9lo1I.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/stream/{_server.ts.js-3ZYI-Za9.js → _server.ts.js-BxXw5K0R.js} +18 -9
- package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-BxXw5K0R.js.map +1 -0
- package/build/server/chunks/entries/fallbacks/{error.svelte.js-DP0OULWi.js → error.svelte.js-bokc4skC.js} +3 -3
- package/build/server/chunks/entries/fallbacks/{error.svelte.js-DP0OULWi.js.map → error.svelte.js-bokc4skC.js.map} +1 -1
- package/build/server/chunks/entries/pages/{_page.svelte.js-hG1agdw-.js → _page.svelte.js-DRoSEPVH.js} +75 -16
- package/build/server/chunks/entries/pages/_page.svelte.js-DRoSEPVH.js.map +1 -0
- package/build/server/chunks/{handler-_dxqeJJj.js → handler-BkYErjbr.js} +3 -3
- package/build/server/chunks/{handler-_dxqeJJj.js.map → handler-BkYErjbr.js.map} +1 -1
- package/build/server/chunks/{index.js-arX1nCCw.js → index.js-5mkIDcpy.js} +2 -2
- package/build/server/chunks/{index.js-arX1nCCw.js.map → index.js-5mkIDcpy.js.map} +1 -1
- package/build/server/chunks/{manifest.js-D3447-0_.js → manifest.js-BGoS-vRx.js} +6 -6
- package/build/server/chunks/{manifest.js-D3447-0_.js.map → manifest.js-BGoS-vRx.js.map} +1 -1
- package/build/server/chunks/nodes/{0.js-XM75fTfb.js → 0.js-BIj6k30n.js} +3 -3
- package/build/server/chunks/nodes/{0.js-XM75fTfb.js.map → 0.js-BIj6k30n.js.map} +1 -1
- package/build/server/chunks/nodes/{1.js-CRIDfcrR.js → 1.js-BQibx33b.js} +3 -3
- package/build/server/chunks/nodes/{1.js-CRIDfcrR.js.map → 1.js-BQibx33b.js.map} +1 -1
- package/build/server/chunks/nodes/{2.js-1qmqKlMg.js → 2.js-CczDSPv9.js} +4 -4
- package/build/server/chunks/nodes/{2.js-1qmqKlMg.js.map → 2.js-CczDSPv9.js.map} +1 -1
- package/dist/cli/index.js +13 -6
- package/dist/cli/server.js +19 -4
- package/package.json +2 -2
- package/build/client/_app/immutable/assets/0.DKleCc0-.css +0 -2
- package/build/client/_app/immutable/assets/0.DKleCc0-.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DKleCc0-.css.gz +0 -0
- package/build/client/_app/immutable/assets/EventScatter.DA5sZ1c0.css.br +0 -0
- package/build/client/_app/immutable/assets/EventScatter.DA5sZ1c0.css.gz +0 -0
- package/build/client/_app/immutable/chunks/1mB5Ee1Q.js.br +0 -0
- package/build/client/_app/immutable/chunks/1mB5Ee1Q.js.gz +0 -0
- package/build/client/_app/immutable/chunks/3fFVdy92.js.br +0 -0
- package/build/client/_app/immutable/chunks/3fFVdy92.js.gz +0 -0
- package/build/client/_app/immutable/chunks/8mpn3Xst.js.br +0 -0
- package/build/client/_app/immutable/chunks/8mpn3Xst.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B78Vj1az.js.br +0 -0
- package/build/client/_app/immutable/chunks/B78Vj1az.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B7aS9tS2.js.br +0 -0
- package/build/client/_app/immutable/chunks/B7aS9tS2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BF84Orj8.js.br +0 -0
- package/build/client/_app/immutable/chunks/BF84Orj8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BIdvnjrP.js +0 -1
- package/build/client/_app/immutable/chunks/BIdvnjrP.js.br +0 -1
- package/build/client/_app/immutable/chunks/BIdvnjrP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BPoZrXrH.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPoZrXrH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BSy__Jrd.js.br +0 -0
- package/build/client/_app/immutable/chunks/BSy__Jrd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BdW_yBQU.js.br +0 -0
- package/build/client/_app/immutable/chunks/BdW_yBQU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BnRQs9nz.js.br +0 -0
- package/build/client/_app/immutable/chunks/BnRQs9nz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C6r7NvtG.js.br +0 -0
- package/build/client/_app/immutable/chunks/C6r7NvtG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CEw1go7g.js.br +0 -0
- package/build/client/_app/immutable/chunks/CEw1go7g.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CFJEGo4j.js.br +0 -0
- package/build/client/_app/immutable/chunks/CFJEGo4j.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CGnVqaBL.js +0 -1
- package/build/client/_app/immutable/chunks/CGnVqaBL.js.br +0 -0
- package/build/client/_app/immutable/chunks/CGnVqaBL.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CY8zQ4KM.js.br +0 -0
- package/build/client/_app/immutable/chunks/CY8zQ4KM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZ3S843d.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZ3S843d.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CgAZPeK7.js.br +0 -0
- package/build/client/_app/immutable/chunks/CgAZPeK7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CrmB4MvE.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrmB4MvE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CtWwlW0t.js.br +0 -0
- package/build/client/_app/immutable/chunks/CtWwlW0t.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D-AkVRH7.js.br +0 -0
- package/build/client/_app/immutable/chunks/D-AkVRH7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D0CZlpgd.js.br +0 -0
- package/build/client/_app/immutable/chunks/D0CZlpgd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D0IZin0e.js.br +0 -0
- package/build/client/_app/immutable/chunks/D0IZin0e.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DI6o1zMC.js.br +0 -0
- package/build/client/_app/immutable/chunks/DI6o1zMC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DbWb9_dK.js.br +0 -0
- package/build/client/_app/immutable/chunks/DbWb9_dK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dh3ZWuG8.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dh3ZWuG8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dp3OTI-g.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dp3OTI-g.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DtdjxckD.js.br +0 -0
- package/build/client/_app/immutable/chunks/DtdjxckD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/YehCS1lO.js.br +0 -0
- package/build/client/_app/immutable/chunks/YehCS1lO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/g-7YfdwH.js.br +0 -0
- package/build/client/_app/immutable/chunks/g-7YfdwH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/zfc2KyIr.js.br +0 -0
- package/build/client/_app/immutable/chunks/zfc2KyIr.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.C-KKyvGI.js.br +0 -0
- package/build/client/_app/immutable/entry/app.C-KKyvGI.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.obx3dQT_.js +0 -1
- package/build/client/_app/immutable/entry/start.obx3dQT_.js.br +0 -1
- package/build/client/_app/immutable/entry/start.obx3dQT_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.D5nbnmDb.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.D5nbnmDb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DAQ4mvAt.js +0 -5
- package/build/client/_app/immutable/nodes/2.DAQ4mvAt.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DAQ4mvAt.js.gz +0 -0
- package/build/server/chunks/chunks/series-buckets.js-BmCYga3F.js.map +0 -1
- package/build/server/chunks/entries/endpoints/api/stream/_server.ts.js-3ZYI-Za9.js.map +0 -1
- package/build/server/chunks/entries/pages/_page.svelte.js-hG1agdw-.js.map +0 -1
- /package/build/client/_app/immutable/nodes/{0.2dnHMwE1.js → 0.CFO0Fthy.js} +0 -0
- /package/build/client/_app/immutable/nodes/{0.2dnHMwE1.js.br → 0.CFO0Fthy.js.br} +0 -0
- /package/build/client/_app/immutable/nodes/{0.2dnHMwE1.js.gz → 0.CFO0Fthy.js.gz} +0 -0
|
@@ -2,13 +2,13 @@ import { ah as escape_html, ag as attr, ai as attr_style, ac as derived, aj as a
|
|
|
2
2
|
import { f as LogStore, g as filterByLevel, h as filterEvents, c as effectiveLevel, t as tokenizeJson, b as detectLevel, j as formatLogMessage, k as eventKey, l as levelColorClass } from '../../chunks/log-buffer.js-A9FA-Qv8.js';
|
|
3
3
|
import { R as REGION_CODES } from '../../chunks/regions.js-COf7DgnH.js';
|
|
4
4
|
import { P as PRESET_LABELS, a as presetLabel, H as HISTORIC_PRESETS, t as toDateTimeLocal, d as describeWindow } from '../../chunks/time-range.js-BLMT8aU3.js';
|
|
5
|
-
import { p as page, r as replaceState } from '../../chunks/state.js-
|
|
6
|
-
import { S as SERIES_LEVEL_COLOR, g as groupByLevel, r as requestRows, L as LEVEL_LABELS, i as isMeaningfulBrush,
|
|
5
|
+
import { p as page, r as replaceState } from '../../chunks/state.js-vZj9lo1I.js';
|
|
6
|
+
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-DFGWkob5.js';
|
|
7
7
|
import '../../chunks/uneval.js-DaakSYFQ.js';
|
|
8
8
|
import '../../chunks/index-server.js-DNLOKvM0.js';
|
|
9
9
|
import '../../chunks/shared.js-CgjUIvRK.js';
|
|
10
10
|
import '../../chunks/exports.js-ClPPfcHj.js';
|
|
11
|
-
import '../../chunks/internal2.js
|
|
11
|
+
import '../../chunks/internal2.js-BMcEVxqN.js';
|
|
12
12
|
import '../../chunks/legacy-client.js-DJmDw3Zx.js';
|
|
13
13
|
import '../../chunks/utils.js-BIlHjgGW.js';
|
|
14
14
|
|
|
@@ -207,7 +207,7 @@ function EventScatterPanel($$renderer, $$props) {
|
|
|
207
207
|
* The real loader: a dynamic import, which is what keeps layerchart out of the
|
|
208
208
|
* initial bundle. It only runs in the browser, and only once the panel is open.
|
|
209
209
|
*/
|
|
210
|
-
const loadChartModule = () => import('../../chunks/EventScatter.js-
|
|
210
|
+
const loadChartModule = () => import('../../chunks/EventScatter.js-CG0RcOU6.js');
|
|
211
211
|
/** Bucketed counts for the window. */
|
|
212
212
|
/** Inclusive start of the window, epoch ms. */
|
|
213
213
|
/** Inclusive end of the window, epoch ms. */
|
|
@@ -219,7 +219,7 @@ function EventScatterPanel($$renderer, $$props) {
|
|
|
219
219
|
/** Chart height in px. */
|
|
220
220
|
/** Start open, which is also what the first visit uses. */
|
|
221
221
|
/** Chart module loader; defaults to the dynamic import. */
|
|
222
|
-
let { metric = "count", onMetricChange, points = [], from = 0, to = 0, bucketMs = 0, groups = [], loading = false, byRequest = true, onBrush, height = 200, open = true, loadChart = loadChartModule } = $$props;
|
|
222
|
+
let { metric = "count", onMetricChange, onSelect, points = [], from = 0, to = 0, bucketMs = 0, groups = [], loading = false, byRequest = true, onBrush, height = 200, open = true, loadChart = loadChartModule } = $$props;
|
|
223
223
|
let expanded = derived(() => open);
|
|
224
224
|
/** Totals and labels per level, in severity order. */
|
|
225
225
|
let levelGroups = derived(() => groupByLevel(points));
|
|
@@ -260,7 +260,7 @@ function EventScatterPanel($$renderer, $$props) {
|
|
|
260
260
|
$$renderer.push(`<!--]--> `);
|
|
261
261
|
if (expanded()) {
|
|
262
262
|
$$renderer.push("<!--[0-->");
|
|
263
|
-
$$renderer.push(`<!--[-1--><span class="ml-auto text-neutral-500" data-testid="scatter-hint">drag to zoom · click to clear</span>`);
|
|
263
|
+
$$renderer.push(`<!--[-1--><span class="ml-auto text-neutral-500" data-testid="scatter-hint">select a point to show logs · drag to zoom · click background to clear</span>`);
|
|
264
264
|
$$renderer.push(`<!--]-->`);
|
|
265
265
|
} else $$renderer.push("<!--[-1-->");
|
|
266
266
|
$$renderer.push(`<!--]--></div> `);
|
|
@@ -574,6 +574,25 @@ function LogGroupList($$renderer, $$props) {
|
|
|
574
574
|
});
|
|
575
575
|
}
|
|
576
576
|
//#endregion
|
|
577
|
+
//#region src/lib/chart-selection.ts
|
|
578
|
+
/** Resolve a plotted mark against the loaded events, before display filters. */
|
|
579
|
+
function selectedChartEvents(lines, selection) {
|
|
580
|
+
if (selection === null) return /* @__PURE__ */ new Set();
|
|
581
|
+
const { point, bucketMs, byRequest, fallbackGroup } = selection;
|
|
582
|
+
const events = lines.filter((event) => (event.group ?? fallbackGroup) === point.group);
|
|
583
|
+
if (point.requestId !== void 0) return new Set(events.filter((event) => requestIdOf(event) === point.requestId));
|
|
584
|
+
const inBucket = (timestamp) => Math.floor(timestamp / bucketMs) * bucketMs === point.t;
|
|
585
|
+
const matches = /* @__PURE__ */ new Set();
|
|
586
|
+
if (byRequest) {
|
|
587
|
+
for (const request of collectRequests(events)) if (inBucket(request.first) && request.level === point.level) for (const { event } of request.events) matches.add(event);
|
|
588
|
+
}
|
|
589
|
+
for (const event of events) {
|
|
590
|
+
if (byRequest && requestIdOf(event) !== null) continue;
|
|
591
|
+
if (inBucket(event.timestamp) && (effectiveLevel(event) ?? "unknown") === point.level) matches.add(event);
|
|
592
|
+
}
|
|
593
|
+
return matches;
|
|
594
|
+
}
|
|
595
|
+
//#endregion
|
|
577
596
|
//#region src/lib/components/StatusBadge.svelte
|
|
578
597
|
function StatusBadge($$renderer, $$props) {
|
|
579
598
|
/** Connection status reported by the log stream. */
|
|
@@ -641,7 +660,7 @@ function LogViewer($$renderer, $$props) {
|
|
|
641
660
|
* default, and owned by the page so the chart counts the same requests.
|
|
642
661
|
*/
|
|
643
662
|
/** Called when the grouping toggle is pressed. */
|
|
644
|
-
let { lines = [], status = "idle", error = null, region = "", group = null, filter = "", paused = false, autoScroll = true, pendingCount = 0, droppedCount = 0, receivedCount = 0, mode = "live", ready = null, endReason = null, archivePath = null, groups = [], level = void 0, onLevelChange, groupRequests = true, onGroupToggle, onFilterChange, onPauseToggle, onClear, onAutoScrollToggle } = $$props;
|
|
663
|
+
let { selection = null, onSelectionClear, lines = [], status = "idle", error = null, region = "", group = null, filter = "", paused = false, autoScroll = true, pendingCount = 0, droppedCount = 0, receivedCount = 0, mode = "live", ready = null, endReason = null, archivePath = null, groups = [], level = void 0, onLevelChange, groupRequests = true, onGroupToggle, onFilterChange, onPauseToggle, onClear, onAutoScrollToggle } = $$props;
|
|
645
664
|
const TIMESTAMP_COLUMN_PX = remToPx(7.5);
|
|
646
665
|
const ROW_PADDING_PX = remToPx(.75);
|
|
647
666
|
const ROW_GAP_PX = remToPx(.5);
|
|
@@ -693,8 +712,10 @@ function LogViewer($$renderer, $$props) {
|
|
|
693
712
|
activeClass: "border-neutral-700 bg-neutral-800 text-neutral-400"
|
|
694
713
|
}
|
|
695
714
|
];
|
|
715
|
+
let selectedEvents = derived(() => selectedChartEvents(lines, selection));
|
|
696
716
|
/** Lines matching the text filter and the level filter. */
|
|
697
717
|
let visible = derived(() => filterByLevel(filterEvents(lines, filter), levelFilter()));
|
|
718
|
+
let visibleSelectedCount = derived(() => visible().filter((event) => selectedEvents().has(event)).length);
|
|
698
719
|
/** How many lines of each level are loaded, including `unknown`. */
|
|
699
720
|
let levelCounts = derived(() => {
|
|
700
721
|
const counts = {
|
|
@@ -716,6 +737,7 @@ function LogViewer($$renderer, $$props) {
|
|
|
716
737
|
const formatted = formatLogMessage(event.message, { prettyJson: jsonView });
|
|
717
738
|
const levelClass = levelColorClass(rowLevel);
|
|
718
739
|
return {
|
|
740
|
+
selected: selectedEvents().has(event),
|
|
719
741
|
key: eventKey(event, index),
|
|
720
742
|
time: formatTime(event.timestamp),
|
|
721
743
|
timestamp: formatTimestamp(event.timestamp),
|
|
@@ -809,7 +831,6 @@ function LogViewer($$renderer, $$props) {
|
|
|
809
831
|
let grouped = derived(() => displayRows().some((row) => row.kind === "request"));
|
|
810
832
|
/** Requests in view, shown next to the line count while grouping. */
|
|
811
833
|
let requestCount = derived(() => displayRows().filter((row) => row.kind === "request").length);
|
|
812
|
-
/** Keeps the newest line in view while auto-scroll is on (vertical only). */
|
|
813
834
|
/** Error text with the group and region context. */
|
|
814
835
|
let errorText = derived(() => error === null ? null : describeStreamError(region, group, error.message));
|
|
815
836
|
/** True when the ready frame says the events come from the local archive. */
|
|
@@ -897,6 +918,13 @@ function LogViewer($$renderer, $$props) {
|
|
|
897
918
|
$$renderer.push(`<!--]--></div> <input type="search" aria-label="Filter log lines" placeholder="Filter lines"${attr("value", filter)} class="w-40 rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs text-neutral-100 outline-none transition-colors placeholder:text-neutral-600 hover:border-neutral-700 focus:border-sky-600"/> <button type="button"${attr("aria-pressed", wrapLines)} title="Wrap long lines instead of scrolling sideways" data-testid="wrap-toggle"${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${wrapTone()}`)}>Wrap</button> <button type="button"${attr("aria-pressed", jsonView)} title="Pretty-print JSON log entries (off: click a line to open its JSON)" data-testid="json-toggle"${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${jsonTone()}`)}>JSON</button> <button type="button"${attr("aria-pressed", groupRequests)} title="Group the lines of one request into a single row, coloured by its most critical line (off: one row per line)" data-testid="group-toggle"${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${groupTone()}`)}>By request</button> <button type="button"${attr("aria-pressed", paused)} class="rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium text-neutral-300 transition-colors hover:border-neutral-700 hover:text-neutral-100">${escape_html(paused ? "Resume" : "Pause")}</button> <button type="button" class="rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium text-neutral-300 transition-colors hover:border-neutral-700 hover:text-neutral-100">Clear</button> <button type="button"${attr("aria-pressed", autoScroll)}${attr_class(`rounded-md border border-neutral-800 bg-neutral-900 px-2 py-1 text-xs font-medium transition-colors hover:border-neutral-700 ${autoScrollTone()}`)}>Auto-scroll</button></div></div> `);
|
|
898
919
|
if (errorText() !== null) $$renderer.push(`<!--[0--><p role="alert" data-testid="stream-error" class="border-b border-red-900 bg-red-950/50 px-3 py-2 text-xs leading-5 text-red-300">${escape_html(errorText())}</p>`);
|
|
899
920
|
else $$renderer.push("<!--[-1-->");
|
|
921
|
+
$$renderer.push(`<!--]--> `);
|
|
922
|
+
if (selection !== null) {
|
|
923
|
+
$$renderer.push(`<!--[0--><div class="flex items-center gap-2 px-3 py-1 text-xs text-sky-300" role="status" data-testid="chart-selection-status">`);
|
|
924
|
+
if (selectedEvents().size === 0) $$renderer.push(`<!--[0-->Selected logs are not in the loaded buffer. Zoom into this time range to load them.`);
|
|
925
|
+
else $$renderer.push(`<!--[-1-->${escape_html(visibleSelectedCount())} of ${escape_html(selectedEvents().size)} selected log lines visible${escape_html(visibleSelectedCount() < selectedEvents().size ? " — clear the text or level filter to see all" : "")}.`);
|
|
926
|
+
$$renderer.push(`<!--]--> <button type="button" class="ml-auto underline">Clear selection</button></div>`);
|
|
927
|
+
} else $$renderer.push("<!--[-1-->");
|
|
900
928
|
$$renderer.push(`<!--]--> <div class="min-h-0 min-w-0 flex-1 overflow-auto bg-neutral-950" data-testid="log-scroller">`);
|
|
901
929
|
if (group === null || group === "") $$renderer.push(`<!--[0--><p class="px-3 py-6 text-sm text-neutral-500" data-testid="viewer-idle">Select a log group to start tailing.</p>`);
|
|
902
930
|
else if (displayRows().length === 0) $$renderer.push(`<!--[1--><p class="px-3 py-6 text-sm text-neutral-500" data-testid="viewer-empty">${escape_html(emptyText())}</p>`);
|
|
@@ -905,7 +933,12 @@ function LogViewer($$renderer, $$props) {
|
|
|
905
933
|
function logLine($$renderer, row, child) {
|
|
906
934
|
const expandable = row.expandable !== null;
|
|
907
935
|
const open = expandable && isExpanded(row.key);
|
|
908
|
-
$$renderer.push(`<li${attr_class(`flex flex-wrap items-baseline gap-2 ${child ? "pl-8" : "px-3"} py-0.5 hover:bg-neutral-900/60 ${listClass()} ${expandable ? "cursor-pointer" : ""}
|
|
936
|
+
$$renderer.push(`<li${attr_class(`flex flex-wrap items-baseline gap-2 ${child ? "pl-8" : "px-3"} py-0.5 hover:bg-neutral-900/60 ${listClass()} ${expandable ? "cursor-pointer" : ""}`, void 0, {
|
|
937
|
+
"bg-sky-950": row.selected,
|
|
938
|
+
"ring-1": row.selected,
|
|
939
|
+
"ring-inset": row.selected,
|
|
940
|
+
"ring-sky-700": row.selected
|
|
941
|
+
})} data-testid="log-line"${attr("data-chart-selected", row.selected ? "true" : void 0)}${attr("data-request-child", child ? "true" : void 0)}${attr("data-level", row.level ?? "unknown")}${attr("data-expandable", expandable ? "true" : void 0)}${attr("data-expanded", open ? "true" : void 0)}${attr("role", expandable ? "button" : void 0)}${attr("tabindex", expandable ? 0 : void 0)}${attr("aria-expanded", expandable ? open : void 0)}${attr("title", expandable ? open ? "Hide the JSON in this line" : "Show this line as JSON" : void 0)}><span class="w-[7.5rem] shrink-0 text-neutral-500"${attr("title", row.timestamp)}>${escape_html(row.time)}</span> `);
|
|
909
942
|
if (groups.length > 1) $$renderer.push(`<!--[0--><span class="w-[9rem] shrink-0 truncate text-teal-400/80"${attr("title", row.group ?? "")} data-testid="log-group">${escape_html(row.group ?? "")}</span>`);
|
|
910
943
|
else $$renderer.push("<!--[-1-->");
|
|
911
944
|
$$renderer.push(`<!--]--> <span class="shrink-0 truncate text-sky-400/80"${attr_style(prefixStyle())}${attr("title", row.streamName ?? "")} data-testid="log-stream">${escape_html(row.streamName ?? "")}</span> `);
|
|
@@ -940,7 +973,7 @@ function LogViewer($$renderer, $$props) {
|
|
|
940
973
|
if (row.kind === "request") {
|
|
941
974
|
$$renderer.push("<!--[0-->");
|
|
942
975
|
const open = isExpanded(row.key);
|
|
943
|
-
$$renderer.push(`<li${attr_class(clsx(listClass()))} data-testid="log-request-group"${attr("data-request-id", row.id)}${attr("data-level", row.level)}${attr("data-expanded", open ? "true" : void 0)}${attr("data-lines", row.count)}><button type="button" class="flex w-full flex-wrap items-baseline gap-2 px-3 py-0.5 text-left hover:bg-neutral-900/60"${attr("aria-expanded", open)}${attr("title", open ? "Hide the lines of this request" : "Show every line of this request")} data-testid="request-group-summary"><span class="w-[7.5rem] shrink-0 text-neutral-500"${attr("title", row.timestamp)}>${escape_html(row.time)}</span> `);
|
|
976
|
+
$$renderer.push(`<li${attr_class(clsx(listClass()), void 0, { "bg-sky-950": row.children.some((child) => child.selected) })} data-testid="log-request-group"${attr("data-chart-selected", row.children.some((child) => child.selected) ? "true" : void 0)}${attr("data-request-id", row.id)}${attr("data-level", row.level)}${attr("data-expanded", open ? "true" : void 0)}${attr("data-lines", row.count)}><button type="button" class="flex w-full flex-wrap items-baseline gap-2 px-3 py-0.5 text-left hover:bg-neutral-900/60"${attr("aria-expanded", open)}${attr("title", open ? "Hide the lines of this request" : "Show every line of this request")} data-testid="request-group-summary"><span class="w-[7.5rem] shrink-0 text-neutral-500"${attr("title", row.timestamp)}>${escape_html(row.time)}</span> `);
|
|
944
977
|
if (groups.length > 1) $$renderer.push(`<!--[0--><span class="w-[9rem] shrink-0 truncate text-teal-400/80"${attr("title", row.group ?? "")} data-testid="log-group">${escape_html(row.group ?? "")}</span>`);
|
|
945
978
|
else $$renderer.push("<!--[-1-->");
|
|
946
979
|
$$renderer.push(`<!--]--> <span class="shrink-0 truncate text-sky-400/80"${attr_style(prefixStyle())}${attr("title", row.streamName ?? "")} data-testid="log-stream">${escape_html(row.streamName ?? "")}</span> <span class="shrink-0 text-neutral-600" aria-hidden="true">${escape_html(open ? "▾" : "▸")}</span> <span class="shrink-0 rounded border border-neutral-700 bg-neutral-900 px-1.5 font-mono text-[0.6875rem] text-sky-200" data-testid="request-group-id" title="Request id shared by these lines">${escape_html(row.id)}</span> <span class="shrink-0 text-neutral-400" data-testid="request-group-count">${escape_html(formatCount(row.count))} lines</span> <span class="shrink-0 text-neutral-500" data-testid="request-group-span">${escape_html(row.span)}</span> <span${attr_class(`shrink-0 font-medium ${stringify(row.levelClass)}`)} data-testid="request-group-level">${escape_html(row.levelLabel)}</span> `);
|
|
@@ -1320,6 +1353,8 @@ function _page($$renderer, $$props) {
|
|
|
1320
1353
|
*/
|
|
1321
1354
|
let groupRequests = true;
|
|
1322
1355
|
/** Bucketed counts behind the chart. */
|
|
1356
|
+
let chartSelection = null;
|
|
1357
|
+
let seriesBucketMs = 6e4;
|
|
1323
1358
|
let seriesPoints = [];
|
|
1324
1359
|
/** True while the archive counts are being fetched. */
|
|
1325
1360
|
let seriesLoading = false;
|
|
@@ -1551,6 +1586,7 @@ function _page($$renderer, $$props) {
|
|
|
1551
1586
|
return;
|
|
1552
1587
|
}
|
|
1553
1588
|
const { from, to } = chartWindow();
|
|
1589
|
+
seriesBucketMs = chartBucketMs(from, to);
|
|
1554
1590
|
if (source !== "archive") {
|
|
1555
1591
|
seriesPoints = (chartMetric === "duration" ? requestDurations : bucketEvents)(stream.lines, {
|
|
1556
1592
|
from,
|
|
@@ -1574,7 +1610,10 @@ function _page($$renderer, $$props) {
|
|
|
1574
1610
|
by: groupRequests ? "request" : "event",
|
|
1575
1611
|
metric: chartMetric
|
|
1576
1612
|
});
|
|
1577
|
-
if (request === seriesRequest)
|
|
1613
|
+
if (request === seriesRequest) {
|
|
1614
|
+
seriesPoints = series.points;
|
|
1615
|
+
seriesBucketMs = series.bucketMs;
|
|
1616
|
+
}
|
|
1578
1617
|
} catch {
|
|
1579
1618
|
if (request === seriesRequest) seriesPoints = [];
|
|
1580
1619
|
} finally {
|
|
@@ -1644,11 +1683,23 @@ function _page($$renderer, $$props) {
|
|
|
1644
1683
|
points: seriesPoints,
|
|
1645
1684
|
from: chartWindow().from,
|
|
1646
1685
|
to: chartWindow().to,
|
|
1647
|
-
bucketMs:
|
|
1686
|
+
bucketMs: seriesBucketMs,
|
|
1648
1687
|
groups: selectedGroups,
|
|
1649
1688
|
byRequest: groupRequests,
|
|
1650
1689
|
metric: chartMetric,
|
|
1651
|
-
onMetricChange: (metric) =>
|
|
1690
|
+
onMetricChange: (metric) => {
|
|
1691
|
+
chartSelection = null;
|
|
1692
|
+
chartMetric = metric;
|
|
1693
|
+
},
|
|
1694
|
+
onSelect: (point) => {
|
|
1695
|
+
autoScroll = false;
|
|
1696
|
+
chartSelection = {
|
|
1697
|
+
point,
|
|
1698
|
+
bucketMs: seriesBucketMs,
|
|
1699
|
+
byRequest: groupRequests,
|
|
1700
|
+
fallbackGroup: selectedGroup() ?? ""
|
|
1701
|
+
};
|
|
1702
|
+
},
|
|
1652
1703
|
loading: seriesLoading,
|
|
1653
1704
|
onBrush: applyBrush
|
|
1654
1705
|
});
|
|
@@ -1657,6 +1708,8 @@ function _page($$renderer, $$props) {
|
|
|
1657
1708
|
else $$renderer.push("<!--[-1-->");
|
|
1658
1709
|
$$renderer.push(`<!--]--> `);
|
|
1659
1710
|
LogViewer($$renderer, {
|
|
1711
|
+
selection: chartSelection,
|
|
1712
|
+
onSelectionClear: () => chartSelection = null,
|
|
1660
1713
|
lines: stream.lines,
|
|
1661
1714
|
status: stream.status,
|
|
1662
1715
|
error: stream.lastError,
|
|
@@ -1679,12 +1732,18 @@ function _page($$renderer, $$props) {
|
|
|
1679
1732
|
receivedCount: stream.receivedCount,
|
|
1680
1733
|
onFilterChange: (value) => filter = value,
|
|
1681
1734
|
onPauseToggle: () => stream.togglePause(),
|
|
1682
|
-
onClear: () =>
|
|
1683
|
-
|
|
1735
|
+
onClear: () => {
|
|
1736
|
+
chartSelection = null;
|
|
1737
|
+
stream.clear();
|
|
1738
|
+
},
|
|
1739
|
+
onAutoScrollToggle: () => {
|
|
1740
|
+
chartSelection = null;
|
|
1741
|
+
autoScroll = !autoScroll;
|
|
1742
|
+
}
|
|
1684
1743
|
});
|
|
1685
1744
|
$$renderer.push(`<!----></div></div>`);
|
|
1686
1745
|
});
|
|
1687
1746
|
}
|
|
1688
1747
|
|
|
1689
1748
|
export { _page as default };
|
|
1690
|
-
//# sourceMappingURL=_page.svelte.js-
|
|
1749
|
+
//# sourceMappingURL=_page.svelte.js-DRoSEPVH.js.map
|