prismcast 1.10.2 → 1.11.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/dist/app.d.ts +6 -3
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +140 -86
- package/dist/app.js.map +1 -1
- package/dist/browser/blockedPage.d.ts +80 -0
- package/dist/browser/blockedPage.d.ts.map +1 -0
- package/dist/browser/blockedPage.js +209 -0
- package/dist/browser/blockedPage.js.map +1 -0
- package/dist/browser/browserSupervisor.d.ts +80 -0
- package/dist/browser/browserSupervisor.d.ts.map +1 -0
- package/dist/browser/browserSupervisor.js +186 -0
- package/dist/browser/browserSupervisor.js.map +1 -0
- package/dist/browser/cdp.d.ts +1 -0
- package/dist/browser/cdp.d.ts.map +1 -0
- package/dist/browser/cdp.js +6 -5
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +45 -14
- package/dist/browser/channelSelection.d.ts.map +1 -0
- package/dist/browser/channelSelection.js +81 -18
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/consent.d.ts +152 -0
- package/dist/browser/consent.d.ts.map +1 -0
- package/dist/browser/consent.js +418 -0
- package/dist/browser/consent.js.map +1 -0
- package/dist/browser/display.d.ts +1 -0
- package/dist/browser/display.d.ts.map +1 -0
- package/dist/browser/hlsPlaylistObserver.d.ts +55 -0
- package/dist/browser/hlsPlaylistObserver.d.ts.map +1 -0
- package/dist/browser/hlsPlaylistObserver.js +132 -0
- package/dist/browser/hlsPlaylistObserver.js.map +1 -0
- package/dist/browser/index.d.ts +67 -40
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +508 -300
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/launchGovernor.d.ts +89 -0
- package/dist/browser/launchGovernor.d.ts.map +1 -0
- package/dist/browser/launchGovernor.js +96 -0
- package/dist/browser/launchGovernor.js.map +1 -0
- package/dist/browser/login.d.ts +10 -2
- package/dist/browser/login.d.ts.map +1 -0
- package/dist/browser/login.js +36 -5
- package/dist/browser/login.js.map +1 -1
- package/dist/browser/manifestInterceptor.d.ts +102 -49
- package/dist/browser/manifestInterceptor.d.ts.map +1 -0
- package/dist/browser/manifestInterceptor.js +219 -237
- package/dist/browser/manifestInterceptor.js.map +1 -1
- package/dist/browser/pageStaleness.d.ts +30 -0
- package/dist/browser/pageStaleness.d.ts.map +1 -0
- package/dist/browser/pageStaleness.js +76 -0
- package/dist/browser/pageStaleness.js.map +1 -0
- package/dist/browser/precaching.d.ts +95 -3
- package/dist/browser/precaching.d.ts.map +1 -0
- package/dist/browser/precaching.js +499 -65
- package/dist/browser/precaching.js.map +1 -1
- package/dist/browser/tabNetworkObserver.d.ts +49 -0
- package/dist/browser/tabNetworkObserver.d.ts.map +1 -0
- package/dist/browser/tabNetworkObserver.js +144 -0
- package/dist/browser/tabNetworkObserver.js.map +1 -0
- package/dist/browser/tuning/cache.d.ts +61 -0
- package/dist/browser/tuning/cache.d.ts.map +1 -0
- package/dist/browser/tuning/cache.js +62 -0
- package/dist/browser/tuning/cache.js.map +1 -0
- package/dist/browser/tuning/comcastPolymer.d.ts +3 -2
- package/dist/browser/tuning/comcastPolymer.d.ts.map +1 -0
- package/dist/browser/tuning/comcastPolymer.js +79 -102
- package/dist/browser/tuning/comcastPolymer.js.map +1 -1
- package/dist/browser/tuning/cox.d.ts +1 -0
- package/dist/browser/tuning/cox.d.ts.map +1 -0
- package/dist/browser/tuning/directv.d.ts +1 -0
- package/dist/browser/tuning/directv.d.ts.map +1 -0
- package/dist/browser/tuning/directv.js +52 -46
- package/dist/browser/tuning/directv.js.map +1 -1
- package/dist/browser/tuning/fox.d.ts +1 -0
- package/dist/browser/tuning/fox.d.ts.map +1 -0
- package/dist/browser/tuning/fox.js +13 -12
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/gridSearch.d.ts +68 -0
- package/dist/browser/tuning/gridSearch.d.ts.map +1 -0
- package/dist/browser/tuning/gridSearch.js +85 -0
- package/dist/browser/tuning/gridSearch.js.map +1 -0
- package/dist/browser/tuning/hbo.d.ts +1 -0
- package/dist/browser/tuning/hbo.d.ts.map +1 -0
- package/dist/browser/tuning/hbo.js +73 -45
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.d.ts +1 -0
- package/dist/browser/tuning/hulu.d.ts.map +1 -0
- package/dist/browser/tuning/hulu.js +128 -173
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/shared.d.ts +75 -5
- package/dist/browser/tuning/shared.d.ts.map +1 -0
- package/dist/browser/tuning/shared.js +216 -6
- package/dist/browser/tuning/shared.js.map +1 -1
- package/dist/browser/tuning/sling.d.ts +1 -0
- package/dist/browser/tuning/sling.d.ts.map +1 -0
- package/dist/browser/tuning/sling.js +105 -126
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/spectrum.d.ts +1 -0
- package/dist/browser/tuning/spectrum.d.ts.map +1 -0
- package/dist/browser/tuning/spectrum.js +80 -125
- package/dist/browser/tuning/spectrum.js.map +1 -1
- package/dist/browser/tuning/thumbnailRow.d.ts +1 -0
- package/dist/browser/tuning/thumbnailRow.d.ts.map +1 -0
- package/dist/browser/tuning/thumbnailRow.js +8 -2
- package/dist/browser/tuning/thumbnailRow.js.map +1 -1
- package/dist/browser/tuning/tileClick.d.ts +1 -0
- package/dist/browser/tuning/tileClick.d.ts.map +1 -0
- package/dist/browser/tuning/tileClick.js +3 -2
- package/dist/browser/tuning/tileClick.js.map +1 -1
- package/dist/browser/tuning/xfinity.d.ts +1 -0
- package/dist/browser/tuning/xfinity.d.ts.map +1 -0
- package/dist/browser/tuning/youtubeTv.d.ts +1 -0
- package/dist/browser/tuning/youtubeTv.d.ts.map +1 -0
- package/dist/browser/tuning/youtubeTv.js +74 -127
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +54 -14
- package/dist/browser/video.d.ts.map +1 -0
- package/dist/browser/video.js +296 -138
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.d.ts +1 -0
- package/dist/channels/index.d.ts.map +1 -0
- package/dist/channels/index.js +12 -9
- package/dist/channels/index.js.map +1 -1
- package/dist/config/channelForm.d.ts +15 -1
- package/dist/config/channelForm.d.ts.map +1 -0
- package/dist/config/channelForm.js +28 -12
- package/dist/config/channelForm.js.map +1 -1
- package/dist/config/consistencyProbe.d.ts +1 -0
- package/dist/config/consistencyProbe.d.ts.map +1 -0
- package/dist/config/consistencyProbe.js +27 -21
- package/dist/config/consistencyProbe.js.map +1 -1
- package/dist/config/health.d.ts +41 -8
- package/dist/config/health.d.ts.map +1 -0
- package/dist/config/health.js +189 -38
- package/dist/config/health.js.map +1 -1
- package/dist/config/index.d.ts +55 -3
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +320 -69
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +10 -9
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +11 -11
- package/dist/config/paths.js.map +1 -1
- package/dist/config/persistence.context.d.ts +1 -0
- package/dist/config/persistence.context.d.ts.map +1 -0
- package/dist/config/persistence.d.ts +13 -10
- package/dist/config/persistence.d.ts.map +1 -0
- package/dist/config/persistence.js +40 -21
- package/dist/config/persistence.js.map +1 -1
- package/dist/config/presets.d.ts +1 -0
- package/dist/config/presets.d.ts.map +1 -0
- package/dist/config/profiles.d.ts +22 -15
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/config/profiles.js +81 -47
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/providerLineups.d.ts +47 -0
- package/dist/config/providerLineups.d.ts.map +1 -0
- package/dist/config/providerLineups.js +137 -0
- package/dist/config/providerLineups.js.map +1 -0
- package/dist/config/reactivity.d.ts +84 -0
- package/dist/config/reactivity.d.ts.map +1 -0
- package/dist/config/reactivity.js +226 -0
- package/dist/config/reactivity.js.map +1 -0
- package/dist/config/servicePacks.d.ts +18 -2
- package/dist/config/servicePacks.d.ts.map +1 -0
- package/dist/config/servicePacks.js +53 -11
- package/dist/config/servicePacks.js.map +1 -1
- package/dist/config/services.d.ts +21 -15
- package/dist/config/services.d.ts.map +1 -0
- package/dist/config/services.js +35 -24
- package/dist/config/services.js.map +1 -1
- package/dist/config/sites.d.ts +6 -4
- package/dist/config/sites.d.ts.map +1 -0
- package/dist/config/sites.js +15 -11
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +129 -30
- package/dist/config/userChannels.d.ts.map +1 -0
- package/dist/config/userChannels.js +333 -68
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +14 -9
- package/dist/config/userConfig.d.ts.map +1 -0
- package/dist/config/userConfig.js +87 -25
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +10 -6
- package/dist/config/userProfiles.d.ts.map +1 -0
- package/dist/config/userProfiles.js +64 -39
- package/dist/config/userProfiles.js.map +1 -1
- package/dist/hdhr/channelMap.d.ts +1 -0
- package/dist/hdhr/channelMap.d.ts.map +1 -0
- package/dist/hdhr/deviceId.d.ts +1 -0
- package/dist/hdhr/deviceId.d.ts.map +1 -0
- package/dist/hdhr/discover.d.ts +1 -0
- package/dist/hdhr/discover.d.ts.map +1 -0
- package/dist/hdhr/discover.js +48 -47
- package/dist/hdhr/discover.js.map +1 -1
- package/dist/hdhr/getHandlers.d.ts +29 -0
- package/dist/hdhr/getHandlers.d.ts.map +1 -0
- package/dist/hdhr/getHandlers.js +196 -0
- package/dist/hdhr/getHandlers.js.map +1 -0
- package/dist/hdhr/identity.d.ts +36 -0
- package/dist/hdhr/identity.d.ts.map +1 -0
- package/dist/hdhr/identity.js +51 -0
- package/dist/hdhr/identity.js.map +1 -0
- package/dist/hdhr/index.d.ts +22 -4
- package/dist/hdhr/index.d.ts.map +1 -0
- package/dist/hdhr/index.js +229 -54
- package/dist/hdhr/index.js.map +1 -1
- package/dist/hdhr/protocol.d.ts +75 -0
- package/dist/hdhr/protocol.d.ts.map +1 -0
- package/dist/hdhr/protocol.js +264 -0
- package/dist/hdhr/protocol.js.map +1 -0
- package/dist/hdhr/tunerState.d.ts +24 -0
- package/dist/hdhr/tunerState.d.ts.map +1 -0
- package/dist/hdhr/tunerState.js +67 -0
- package/dist/hdhr/tunerState.js.map +1 -0
- package/dist/hdhr/udp.d.ts +43 -0
- package/dist/hdhr/udp.d.ts.map +1 -0
- package/dist/hdhr/udp.js +277 -0
- package/dist/hdhr/udp.js.map +1 -0
- package/dist/identity.d.ts +1 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +13 -11
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -12
- package/dist/index.js.map +1 -1
- package/dist/native/codecInference.d.ts +1 -0
- package/dist/native/codecInference.d.ts.map +1 -0
- package/dist/native/codecInference.js +50 -5
- package/dist/native/codecInference.js.map +1 -1
- package/dist/native/decrypt.d.ts +6 -2
- package/dist/native/decrypt.d.ts.map +1 -0
- package/dist/native/decrypt.js +15 -8
- package/dist/native/decrypt.js.map +1 -1
- package/dist/native/index.d.ts +40 -17
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/index.js +281 -120
- package/dist/native/index.js.map +1 -1
- package/dist/native/probe.d.ts +114 -18
- package/dist/native/probe.d.ts.map +1 -0
- package/dist/native/probe.js +452 -115
- package/dist/native/probe.js.map +1 -1
- package/dist/native/proxy.d.ts +57 -5
- package/dist/native/proxy.d.ts.map +1 -0
- package/dist/native/proxy.js +604 -170
- package/dist/native/proxy.js.map +1 -1
- package/dist/native/tokenExpiry.d.ts +1 -0
- package/dist/native/tokenExpiry.d.ts.map +1 -0
- package/dist/native/tokenExpiry.js +1 -1
- package/dist/routes/assets.d.ts +1 -0
- package/dist/routes/assets.d.ts.map +1 -0
- package/dist/routes/assets.js +4 -2
- package/dist/routes/assets.js.map +1 -1
- package/dist/routes/auth.d.ts +1 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +0 -1
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/cdp.d.ts +5 -5
- package/dist/routes/cdp.d.ts.map +1 -0
- package/dist/routes/cdp.js +59 -20
- package/dist/routes/cdp.js.map +1 -1
- package/dist/routes/channels.d.ts +1 -0
- package/dist/routes/channels.d.ts.map +1 -0
- package/dist/routes/channels.js +2 -1
- package/dist/routes/channels.js.map +1 -1
- package/dist/routes/clientActions.d.ts +98 -0
- package/dist/routes/clientActions.d.ts.map +1 -0
- package/dist/routes/clientActions.js +113 -0
- package/dist/routes/clientActions.js.map +1 -0
- package/dist/routes/components.d.ts +5 -3
- package/dist/routes/components.d.ts.map +1 -0
- package/dist/routes/components.js +36 -39
- package/dist/routes/components.js.map +1 -1
- package/dist/routes/config/channels/endpoints/browse.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/browse.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/browse.js +23 -10
- package/dist/routes/config/channels/endpoints/browse.js.map +1 -1
- package/dist/routes/config/channels/endpoints/bulk.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/bulk.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/bulk.js +5 -3
- package/dist/routes/config/channels/endpoints/bulk.js.map +1 -1
- package/dist/routes/config/channels/endpoints/crud.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/crud.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/crud.js +85 -93
- package/dist/routes/config/channels/endpoints/crud.js.map +1 -1
- package/dist/routes/config/channels/endpoints/importExport.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/importExport.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/importExport.js +6 -3
- package/dist/routes/config/channels/endpoints/importExport.js.map +1 -1
- package/dist/routes/config/channels/endpoints/predefined.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/predefined.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/prefs.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/prefs.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/prefs.js +2 -1
- package/dist/routes/config/channels/endpoints/prefs.js.map +1 -1
- package/dist/routes/config/channels/endpoints/service.d.ts +2 -1
- package/dist/routes/config/channels/endpoints/service.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/service.js +3 -1
- package/dist/routes/config/channels/endpoints/service.js.map +1 -1
- package/dist/routes/config/channels/endpoints/tags.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/tags.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/tags.js +13 -7
- package/dist/routes/config/channels/endpoints/tags.js.map +1 -1
- package/dist/routes/config/channels/healthBridge.d.ts +24 -0
- package/dist/routes/config/channels/healthBridge.d.ts.map +1 -0
- package/dist/routes/config/channels/healthBridge.js +71 -0
- package/dist/routes/config/channels/healthBridge.js.map +1 -0
- package/dist/routes/config/channels/http/handler.d.ts +1 -0
- package/dist/routes/config/channels/http/handler.d.ts.map +1 -0
- package/dist/routes/config/channels/http/playlistHint.d.ts +2 -1
- package/dist/routes/config/channels/http/playlistHint.d.ts.map +1 -0
- package/dist/routes/config/channels/http/playlistHint.js +16 -2
- package/dist/routes/config/channels/http/playlistHint.js.map +1 -1
- package/dist/routes/config/channels/http/serviceWarning.d.ts +4 -2
- package/dist/routes/config/channels/http/serviceWarning.d.ts.map +1 -0
- package/dist/routes/config/channels/http/serviceWarning.js +3 -2
- package/dist/routes/config/channels/http/serviceWarning.js.map +1 -1
- package/dist/routes/config/channels/index.d.ts +1 -0
- package/dist/routes/config/channels/index.d.ts.map +1 -0
- package/dist/routes/config/channels/setup.d.ts +1 -0
- package/dist/routes/config/channels/setup.d.ts.map +1 -0
- package/dist/routes/config/channels/table.d.ts +3 -3
- package/dist/routes/config/channels/table.d.ts.map +1 -0
- package/dist/routes/config/channels/table.js +148 -107
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/http/envelope.d.ts +1 -0
- package/dist/routes/config/http/envelope.d.ts.map +1 -0
- package/dist/routes/config/index.d.ts +35 -3
- package/dist/routes/config/index.d.ts.map +1 -0
- package/dist/routes/config/index.js +51 -2
- package/dist/routes/config/index.js.map +1 -1
- package/dist/routes/config/services.d.ts +5 -4
- package/dist/routes/config/services.d.ts.map +1 -0
- package/dist/routes/config/services.js +57 -43
- package/dist/routes/config/services.js.map +1 -1
- package/dist/routes/config/settings.d.ts +1 -0
- package/dist/routes/config/settings.d.ts.map +1 -0
- package/dist/routes/config/settings.js +98 -49
- package/dist/routes/config/settings.js.map +1 -1
- package/dist/routes/debug.d.ts +1 -0
- package/dist/routes/debug.d.ts.map +1 -0
- package/dist/routes/debug.js +277 -139
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/health.d.ts +39 -1
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +33 -27
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/hls.d.ts +1 -0
- package/dist/routes/hls.d.ts.map +1 -0
- package/dist/routes/icons.d.ts +1 -0
- package/dist/routes/icons.d.ts.map +1 -0
- package/dist/routes/icons.js +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/logs.d.ts +1 -0
- package/dist/routes/logs.d.ts.map +1 -0
- package/dist/routes/logs.js +14 -4
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/mpegts.d.ts +1 -0
- package/dist/routes/mpegts.d.ts.map +1 -0
- package/dist/routes/play.d.ts +1 -0
- package/dist/routes/play.d.ts.map +1 -0
- package/dist/routes/playlist.d.ts +1 -0
- package/dist/routes/playlist.d.ts.map +1 -0
- package/dist/routes/playlist.js +7 -2
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/root/content.d.ts +8 -5
- package/dist/routes/root/content.d.ts.map +1 -0
- package/dist/routes/root/content.js +29 -26
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/index.d.ts +2 -1
- package/dist/routes/root/index.d.ts.map +1 -0
- package/dist/routes/root/index.js +26 -21
- package/dist/routes/root/index.js.map +1 -1
- package/dist/routes/root/scripts/channels.d.ts +6 -0
- package/dist/routes/root/scripts/channels.d.ts.map +1 -0
- package/dist/routes/root/scripts/channels.js +197 -118
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/clientEscape.d.ts +22 -0
- package/dist/routes/root/scripts/clientEscape.d.ts.map +1 -0
- package/dist/routes/root/scripts/clientEscape.js +41 -0
- package/dist/routes/root/scripts/clientEscape.js.map +1 -0
- package/dist/routes/root/scripts/clientUrl.d.ts +23 -0
- package/dist/routes/root/scripts/clientUrl.d.ts.map +1 -0
- package/dist/routes/root/scripts/clientUrl.js +44 -0
- package/dist/routes/root/scripts/clientUrl.js.map +1 -0
- package/dist/routes/root/scripts/config.d.ts +6 -0
- package/dist/routes/root/scripts/config.d.ts.map +1 -0
- package/dist/routes/root/scripts/config.js +110 -24
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/index.d.ts +1 -0
- package/dist/routes/root/scripts/index.d.ts.map +1 -0
- package/dist/routes/root/scripts/shared.d.ts +1 -0
- package/dist/routes/root/scripts/shared.d.ts.map +1 -0
- package/dist/routes/root/scripts/shared.js +112 -26
- package/dist/routes/root/scripts/shared.js.map +1 -1
- package/dist/routes/root/scripts/status.d.ts +1 -0
- package/dist/routes/root/scripts/status.d.ts.map +1 -0
- package/dist/routes/root/scripts/status.handlers.d.ts +23 -33
- package/dist/routes/root/scripts/status.handlers.d.ts.map +1 -0
- package/dist/routes/root/scripts/status.handlers.js +46 -92
- package/dist/routes/root/scripts/status.handlers.js.map +1 -1
- package/dist/routes/root/scripts/status.js +21 -8
- package/dist/routes/root/scripts/status.js.map +1 -1
- package/dist/routes/root/styles.d.ts +1 -0
- package/dist/routes/root/styles.d.ts.map +1 -0
- package/dist/routes/root/styles.js +7 -4
- package/dist/routes/root/styles.js.map +1 -1
- package/dist/routes/services.d.ts +13 -1
- package/dist/routes/services.d.ts.map +1 -0
- package/dist/routes/services.js +81 -68
- package/dist/routes/services.js.map +1 -1
- package/dist/routes/sse.d.ts +1 -0
- package/dist/routes/sse.d.ts.map +1 -0
- package/dist/routes/sse.js +1 -1
- package/dist/routes/sse.js.map +1 -1
- package/dist/routes/streams.d.ts +2 -1
- package/dist/routes/streams.d.ts.map +1 -0
- package/dist/routes/streams.js +6 -4
- package/dist/routes/streams.js.map +1 -1
- package/dist/routes/theme.d.ts +3 -2
- package/dist/routes/theme.d.ts.map +1 -0
- package/dist/routes/theme.js +6 -5
- package/dist/routes/theme.js.map +1 -1
- package/dist/routes/ui.d.ts +3 -1
- package/dist/routes/ui.d.ts.map +1 -0
- package/dist/routes/ui.js +16 -4
- package/dist/routes/ui.js.map +1 -1
- package/dist/routes/upgrade.d.ts +1 -0
- package/dist/routes/upgrade.d.ts.map +1 -0
- package/dist/routes/upgrade.js +6 -2
- package/dist/routes/upgrade.js.map +1 -1
- package/dist/service/commands.context.d.ts +1 -0
- package/dist/service/commands.context.d.ts.map +1 -0
- package/dist/service/commands.context.js +4 -3
- package/dist/service/commands.context.js.map +1 -1
- package/dist/service/commands.d.ts +1 -0
- package/dist/service/commands.d.ts.map +1 -0
- package/dist/service/commands.js +10 -13
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.context.d.ts +1 -0
- package/dist/service/generators.context.d.ts.map +1 -0
- package/dist/service/generators.context.js +1 -1
- package/dist/service/generators.context.js.map +1 -1
- package/dist/service/generators.d.ts +4 -3
- package/dist/service/generators.d.ts.map +1 -0
- package/dist/service/generators.js +111 -31
- package/dist/service/generators.js.map +1 -1
- package/dist/service/index.d.ts +1 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/streaming/captureLock.d.ts +44 -0
- package/dist/streaming/captureLock.d.ts.map +1 -0
- package/dist/streaming/captureLock.js +95 -0
- package/dist/streaming/captureLock.js.map +1 -0
- package/dist/streaming/captureSession.d.ts +31 -0
- package/dist/streaming/captureSession.d.ts.map +1 -0
- package/dist/streaming/captureSession.js +54 -0
- package/dist/streaming/captureSession.js.map +1 -0
- package/dist/streaming/clients.d.ts +1 -0
- package/dist/streaming/clients.d.ts.map +1 -0
- package/dist/streaming/codec.d.ts +1 -0
- package/dist/streaming/codec.d.ts.map +1 -0
- package/dist/streaming/fmp4Segmenter.d.ts +29 -2
- package/dist/streaming/fmp4Segmenter.d.ts.map +1 -0
- package/dist/streaming/fmp4Segmenter.js +79 -26
- package/dist/streaming/fmp4Segmenter.js.map +1 -1
- package/dist/streaming/hls.d.ts +18 -7
- package/dist/streaming/hls.d.ts.map +1 -0
- package/dist/streaming/hls.js +220 -120
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsResume.d.ts +1 -0
- package/dist/streaming/hlsResume.d.ts.map +1 -0
- package/dist/streaming/hlsResume.js +1 -1
- package/dist/streaming/hlsResume.js.map +1 -1
- package/dist/streaming/hlsSegments.d.ts +59 -2
- package/dist/streaming/hlsSegments.d.ts.map +1 -0
- package/dist/streaming/hlsSegments.js +147 -17
- package/dist/streaming/hlsSegments.js.map +1 -1
- package/dist/streaming/lifecycle.d.ts +4 -1
- package/dist/streaming/lifecycle.d.ts.map +1 -0
- package/dist/streaming/lifecycle.js +65 -85
- package/dist/streaming/lifecycle.js.map +1 -1
- package/dist/streaming/monitor.d.ts +6 -4
- package/dist/streaming/monitor.d.ts.map +1 -0
- package/dist/streaming/monitor.js +343 -145
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +5 -4
- package/dist/streaming/mp4Parser.d.ts.map +1 -0
- package/dist/streaming/mp4Parser.js +36 -13
- package/dist/streaming/mp4Parser.js.map +1 -1
- package/dist/streaming/mpegts.d.ts +16 -0
- package/dist/streaming/mpegts.d.ts.map +1 -0
- package/dist/streaming/mpegts.js +61 -17
- package/dist/streaming/mpegts.js.map +1 -1
- package/dist/streaming/playlistBuilder.d.ts +1 -0
- package/dist/streaming/playlistBuilder.d.ts.map +1 -0
- package/dist/streaming/preroll.d.ts +32 -5
- package/dist/streaming/preroll.d.ts.map +1 -0
- package/dist/streaming/preroll.js +70 -32
- package/dist/streaming/preroll.js.map +1 -1
- package/dist/streaming/pretune.d.ts +26 -1
- package/dist/streaming/pretune.d.ts.map +1 -0
- package/dist/streaming/pretune.js +22 -24
- package/dist/streaming/pretune.js.map +1 -1
- package/dist/streaming/pretuneTimers.d.ts +24 -0
- package/dist/streaming/pretuneTimers.d.ts.map +1 -0
- package/dist/streaming/pretuneTimers.js +56 -0
- package/dist/streaming/pretuneTimers.js.map +1 -0
- package/dist/streaming/recovery.d.ts +139 -5
- package/dist/streaming/recovery.d.ts.map +1 -0
- package/dist/streaming/recovery.js +160 -16
- package/dist/streaming/recovery.js.map +1 -1
- package/dist/streaming/registry.d.ts +27 -9
- package/dist/streaming/registry.d.ts.map +1 -0
- package/dist/streaming/registry.js +21 -3
- package/dist/streaming/registry.js.map +1 -1
- package/dist/streaming/setup.d.ts +157 -29
- package/dist/streaming/setup.d.ts.map +1 -0
- package/dist/streaming/setup.js +1034 -458
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.d.ts +21 -1
- package/dist/streaming/showInfo.d.ts.map +1 -0
- package/dist/streaming/showInfo.js +31 -16
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +10 -10
- package/dist/streaming/statusEmitter.d.ts.map +1 -0
- package/dist/streaming/statusEmitter.js +5 -8
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/channels.d.ts +16 -4
- package/dist/types/channels.d.ts.map +1 -0
- package/dist/types/channels.js +4 -2
- package/dist/types/channels.js.map +1 -1
- package/dist/types/config.d.ts +16 -5
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/profiles.d.ts +6 -4
- package/dist/types/profiles.d.ts.map +1 -0
- package/dist/types/selection.d.ts +31 -3
- package/dist/types/selection.d.ts.map +1 -0
- package/dist/types/selection.js +4 -2
- package/dist/types/selection.js.map +1 -1
- package/dist/types/shared.d.ts +1 -0
- package/dist/types/shared.d.ts.map +1 -0
- package/dist/types/streaming.d.ts +8 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/upgrade/commands.context.d.ts +1 -0
- package/dist/upgrade/commands.context.d.ts.map +1 -0
- package/dist/upgrade/commands.context.js +14 -10
- package/dist/upgrade/commands.context.js.map +1 -1
- package/dist/upgrade/commands.d.ts +8 -15
- package/dist/upgrade/commands.d.ts.map +1 -0
- package/dist/upgrade/commands.js +27 -28
- package/dist/upgrade/commands.js.map +1 -1
- package/dist/upgrade/detection.context.d.ts +1 -0
- package/dist/upgrade/detection.context.d.ts.map +1 -0
- package/dist/upgrade/detection.context.js +4 -1
- package/dist/upgrade/detection.context.js.map +1 -1
- package/dist/upgrade/detection.d.ts +9 -7
- package/dist/upgrade/detection.d.ts.map +1 -0
- package/dist/upgrade/detection.js +23 -54
- package/dist/upgrade/detection.js.map +1 -1
- package/dist/upgrade/index.d.ts +2 -0
- package/dist/upgrade/index.d.ts.map +1 -0
- package/dist/upgrade/index.js +1 -0
- package/dist/upgrade/index.js.map +1 -1
- package/dist/upgrade/lifecycle.context.d.ts +20 -0
- package/dist/upgrade/lifecycle.context.d.ts.map +1 -0
- package/dist/upgrade/lifecycle.context.js +47 -0
- package/dist/upgrade/lifecycle.context.js.map +1 -0
- package/dist/upgrade/lifecycle.d.ts +72 -0
- package/dist/upgrade/lifecycle.d.ts.map +1 -0
- package/dist/upgrade/lifecycle.js +175 -0
- package/dist/upgrade/lifecycle.js.map +1 -0
- package/dist/upgrade/pathHandle.d.ts +30 -0
- package/dist/upgrade/pathHandle.d.ts.map +1 -0
- package/dist/upgrade/pathHandle.js +102 -0
- package/dist/upgrade/pathHandle.js.map +1 -0
- package/dist/utils/bootSession.context.d.ts +16 -0
- package/dist/utils/bootSession.context.d.ts.map +1 -0
- package/dist/utils/bootSession.context.js +60 -0
- package/dist/utils/bootSession.context.js.map +1 -0
- package/dist/utils/bootSession.d.ts +17 -0
- package/dist/utils/bootSession.d.ts.map +1 -0
- package/dist/utils/bootSession.js +20 -0
- package/dist/utils/bootSession.js.map +1 -0
- package/dist/utils/chromeFetch.d.ts +1 -0
- package/dist/utils/chromeFetch.d.ts.map +1 -0
- package/dist/utils/cliOutput.d.ts +1 -0
- package/dist/utils/cliOutput.d.ts.map +1 -0
- package/dist/utils/clock.d.ts +5 -4
- package/dist/utils/clock.d.ts.map +1 -0
- package/dist/utils/clock.js +19 -16
- package/dist/utils/clock.js.map +1 -1
- package/dist/utils/debugFilter.d.ts +9 -1
- package/dist/utils/debugFilter.d.ts.map +1 -0
- package/dist/utils/debugFilter.js +60 -33
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/delay.d.ts +48 -15
- package/dist/utils/delay.d.ts.map +1 -0
- package/dist/utils/delay.js +73 -20
- package/dist/utils/delay.js.map +1 -1
- package/dist/utils/errors.d.ts +32 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +45 -4
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/evaluate.d.ts +1 -0
- package/dist/utils/evaluate.d.ts.map +1 -0
- package/dist/utils/evaluate.js +29 -23
- package/dist/utils/evaluate.js.map +1 -1
- package/dist/utils/ffmpeg.context.d.ts +1 -0
- package/dist/utils/ffmpeg.context.d.ts.map +1 -0
- package/dist/utils/ffmpeg.context.js.map +1 -1
- package/dist/utils/ffmpeg.d.ts +29 -7
- package/dist/utils/ffmpeg.d.ts.map +1 -0
- package/dist/utils/ffmpeg.js +32 -14
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/fileLogger.d.ts +3 -1
- package/dist/utils/fileLogger.d.ts.map +1 -0
- package/dist/utils/fileLogger.js +64 -29
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/format.d.ts +14 -1
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +19 -5
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logEmitter.d.ts +1 -0
- package/dist/utils/logEmitter.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +10 -6
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/m3u.d.ts +3 -2
- package/dist/utils/m3u.d.ts.map +1 -0
- package/dist/utils/m3u.js +4 -3
- package/dist/utils/m3u.js.map +1 -1
- package/dist/utils/markup.d.ts +13 -1
- package/dist/utils/markup.d.ts.map +1 -0
- package/dist/utils/markup.js +28 -4
- package/dist/utils/markup.js.map +1 -1
- package/dist/utils/memo.d.ts +3 -2
- package/dist/utils/memo.d.ts.map +1 -0
- package/dist/utils/memo.js +3 -3
- package/dist/utils/morganStream.d.ts +1 -0
- package/dist/utils/morganStream.d.ts.map +1 -0
- package/dist/utils/network.d.ts +1 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +2 -2
- package/dist/utils/pid.d.ts +3 -25
- package/dist/utils/pid.d.ts.map +1 -0
- package/dist/utils/pid.js +10 -49
- package/dist/utils/pid.js.map +1 -1
- package/dist/utils/platform.d.ts +3 -1
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +2 -1
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/processInspector.context.d.ts +8 -0
- package/dist/utils/processInspector.context.d.ts.map +1 -0
- package/dist/utils/processInspector.context.js +106 -0
- package/dist/utils/processInspector.context.js.map +1 -0
- package/dist/utils/processInspector.d.ts +55 -0
- package/dist/utils/processInspector.d.ts.map +1 -0
- package/dist/utils/processInspector.js +127 -0
- package/dist/utils/processInspector.js.map +1 -0
- package/dist/utils/retry.d.ts +25 -2
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +33 -6
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/runtimeIdentity.context.d.ts +7 -0
- package/dist/utils/runtimeIdentity.context.d.ts.map +1 -0
- package/dist/utils/runtimeIdentity.context.js +43 -0
- package/dist/utils/runtimeIdentity.context.js.map +1 -0
- package/dist/utils/runtimeIdentity.d.ts +98 -0
- package/dist/utils/runtimeIdentity.d.ts.map +1 -0
- package/dist/utils/runtimeIdentity.js +181 -0
- package/dist/utils/runtimeIdentity.js.map +1 -0
- package/dist/utils/sanitize.d.ts +1 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/streamContext.d.ts +2 -1
- package/dist/utils/streamContext.d.ts.map +1 -0
- package/dist/utils/streamContext.js +1 -1
- package/dist/utils/timing.d.ts +2 -1
- package/dist/utils/timing.d.ts.map +1 -0
- package/dist/utils/timing.js +0 -5
- package/dist/utils/timing.js.map +1 -1
- package/dist/utils/version.d.ts +1 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +47 -13
- package/dist/utils/version.js.map +1 -1
- package/package.json +26 -20
|
@@ -2,3 +2,4 @@ export { generateChannelsSubtabScript } from "./channels.ts";
|
|
|
2
2
|
export { generateConfigSubtabScript } from "./config.ts";
|
|
3
3
|
export { generateSharedUtilitiesScript } from "./shared.ts";
|
|
4
4
|
export { generateStatusScript } from "./status.ts";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/routes/root/scripts/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/routes/root/scripts/shared.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CAmzBtD"}
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
* shared.ts: Shared client-side utilities for all tabs. This script runs before any tab-specific script so that cross-tab functions (toast notifications,
|
|
4
4
|
* dropdown menus, channel display rendering) are available during both initialization and event handling.
|
|
5
5
|
*/
|
|
6
|
+
import { ACTIONS } from "../../clientActions.js";
|
|
7
|
+
import { generateClientEscapeAssignment } from "./clientEscape.js";
|
|
8
|
+
import { generateClientSafeUrlAssignment } from "./clientUrl.js";
|
|
6
9
|
/**
|
|
7
10
|
* Generates the shared utilities script block containing cross-tab client-side functions. Runs before all tab-specific scripts to eliminate execution order
|
|
8
11
|
* dependencies. Functions are exposed on window for access from any script context or inline event handler.
|
|
@@ -12,6 +15,68 @@ export function generateSharedUtilitiesScript() {
|
|
|
12
15
|
return [
|
|
13
16
|
"<script>",
|
|
14
17
|
"(function() {",
|
|
18
|
+
/* Client-side render-safety single sources of truth, installed first in the shared utilities IIFE so window.escapeHtml and window.safeUrl are defined before any
|
|
19
|
+
* client script runs: shared.ts's own channel/service renderers below, the status display, the channels wizards, the config changelog, and the inline log viewer
|
|
20
|
+
* all route their escaping through them. escapeHtml encodes a value for an HTML text or attribute context (generated from clientEscapeHtml, which a byte-parity
|
|
21
|
+
* guard pins identical to the server-side markup.escapeHtml); safeUrl vets a URL's scheme before it is placed in a URL-bearing attribute (generated from
|
|
22
|
+
* clientSafeUrl). They are independent and composable - escapeHtml(safeUrl(url)) for a URL attribute. The local const bindings let the renderers in this IIFE
|
|
23
|
+
* call them without a global property lookup.
|
|
24
|
+
*/
|
|
25
|
+
generateClientEscapeAssignment(),
|
|
26
|
+
generateClientSafeUrlAssignment(),
|
|
27
|
+
/* Action dispatcher. The single project-wide primitive for event handling. Subsystems register named handlers via window.registerAction(name, handler), and
|
|
28
|
+
* one document-level delegated listener routes click / change / keydown / submit events to the registered handler. Triggers declare their intent on the
|
|
29
|
+
* element via data-<event>-action="name" (with optional sibling data-* attributes for per-instance arguments).
|
|
30
|
+
*
|
|
31
|
+
* Event mechanics are also declarative AND event-type-scoped, symmetric with actions: data-<event>-prevent-default calls event.preventDefault(),
|
|
32
|
+
* data-<event>-stop-propagation calls event.stopPropagation(), data-<event>-close-dropdown closes any open dropdown menus. Each modifier fires only for
|
|
33
|
+
* the event type encoded in its attribute name, so a <form data-submit-prevent-default> prevents the form's submit default without affecting keydown
|
|
34
|
+
* events on input fields inside the form. The event-type-in-the-name shape is self-documenting and uniform with data-<event>-action: one mental model
|
|
35
|
+
* for "when does this fire", expressed entirely in the attribute name.
|
|
36
|
+
*
|
|
37
|
+
* The registration API enforces uniqueness - a second registerAction call for an already-registered name throws, so silent overwrites are impossible.
|
|
38
|
+
* When a click/change/etc. lands on an element carrying a data-<event>-action whose value is not registered, the dispatcher logs a console warning
|
|
39
|
+
* naming the missing action - typos surface fast.
|
|
40
|
+
*/
|
|
41
|
+
" const actionHandlers = new Map();",
|
|
42
|
+
" window.registerAction = (name, handler) => {",
|
|
43
|
+
" if(actionHandlers.has(name)) {",
|
|
44
|
+
" throw new Error('Action \"' + name + '\" is already registered. Action names must be globally unique.');",
|
|
45
|
+
" }",
|
|
46
|
+
" actionHandlers.set(name, handler);",
|
|
47
|
+
" };",
|
|
48
|
+
/* Modifier handling runs in the capture phase so stopPropagation actually stops further propagation. Capture phase fires from document down to target -
|
|
49
|
+
* before any element-level listener between the document and the trigger - so stopPropagation called here prevents intermediate bubble-phase listeners
|
|
50
|
+
* from firing. preventDefault and close-dropdown are side-effect modifiers that work equally well in either phase but live here for cohesion: every
|
|
51
|
+
* declarative modifier flows through one listener. The selector is built from event.type so each modifier fires only for its own event type.
|
|
52
|
+
*/
|
|
53
|
+
" const dispatchModifiers = (event) => {",
|
|
54
|
+
" const prefix = 'data-' + event.type + '-';",
|
|
55
|
+
" const modTarget = event.target.closest('[' + prefix + 'prevent-default], [' + prefix + 'stop-propagation], [' + prefix + 'close-dropdown]');",
|
|
56
|
+
" if(!modTarget) return;",
|
|
57
|
+
" if(modTarget.hasAttribute(prefix + 'prevent-default')) event.preventDefault();",
|
|
58
|
+
" if(modTarget.hasAttribute(prefix + 'stop-propagation')) event.stopPropagation();",
|
|
59
|
+
" if(modTarget.hasAttribute(prefix + 'close-dropdown') && window.dropdowns) window.dropdowns.close();",
|
|
60
|
+
" };",
|
|
61
|
+
/* Action dispatch runs in the bubble phase so element-level listeners get a chance to fire first. Action handlers see the event after the element-level
|
|
62
|
+
* processing has run. Missing handlers log a console warning so typos surface fast.
|
|
63
|
+
*/
|
|
64
|
+
" const dispatchAction = (event) => {",
|
|
65
|
+
" const attrName = 'data-' + event.type + '-action';",
|
|
66
|
+
" const target = event.target.closest('[' + attrName + ']');",
|
|
67
|
+
" if(!target) return;",
|
|
68
|
+
" const action = target.getAttribute(attrName);",
|
|
69
|
+
" const handler = actionHandlers.get(action);",
|
|
70
|
+
" if(handler) {",
|
|
71
|
+
" handler(target, event);",
|
|
72
|
+
" } else {",
|
|
73
|
+
" console.warn('No handler registered for ' + attrName + '=\"' + action + '\".');",
|
|
74
|
+
" }",
|
|
75
|
+
" };",
|
|
76
|
+
" for(const type of [ 'click', 'change', 'keydown', 'submit' ]) {",
|
|
77
|
+
" document.addEventListener(type, dispatchModifiers, { capture: true });",
|
|
78
|
+
" document.addEventListener(type, dispatchAction);",
|
|
79
|
+
" }",
|
|
15
80
|
// Show a toast notification. Auto-dismiss durations: success/info = 5s, warning = 8s, error = no auto-dismiss. Optional action: { label, onclick } appends an
|
|
16
81
|
// inline button between the message text and the close button.
|
|
17
82
|
" function showToast(message, type, duration, action) {",
|
|
@@ -41,10 +106,11 @@ export function generateSharedUtilitiesScript() {
|
|
|
41
106
|
" if(ms > 0) { setTimeout(() => { dismissToast(toast); }, ms); }",
|
|
42
107
|
" }",
|
|
43
108
|
" window.showToast = showToast;",
|
|
44
|
-
/* Single source of truth for extracting a user-facing error message from a server error response. The envelope emits two shapes:
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
109
|
+
/* Single source of truth for extracting a user-facing error message from a server error response. The envelope emits two shapes: a top-level message,
|
|
110
|
+
* carried as either { error: string } or { message: string } for failures (validation, not-found, conflict, server error), and { errors: Record<field,
|
|
111
|
+
* message> } for form submissions that surface multiple field errors at once. The helper reads errors first, then error, then message, so it consults
|
|
112
|
+
* all three fields. Callers pass a fallback string for the rare case where none of them is present. Every client that handles a !success response flows
|
|
113
|
+
* through this helper so error-reading logic lives in one place instead of drifting per call site.
|
|
48
114
|
*/
|
|
49
115
|
" window.extractErrorMessage = (response, fallback) => {",
|
|
50
116
|
" if(response && response.errors) {",
|
|
@@ -191,7 +257,8 @@ export function generateSharedUtilitiesScript() {
|
|
|
191
257
|
" window.positionPortal = positionPortal;",
|
|
192
258
|
// Layer 2: Dropdown toggle with lifecycle hooks. Manages portal append, toggle state, scroll/resize dismissal, and optional lifecycle callbacks. The
|
|
193
259
|
// zero-argument form (toggleDropdown(btn)) works unchanged for standard dropdowns. The options form adds: menu (explicit menu element), onOpen (called
|
|
194
|
-
// after show but before positioning so content can be set and measured correctly for viewport clamping).
|
|
260
|
+
// after show but before positioning so content can be set and measured correctly for viewport clamping). btn._portalMenu caches the resolved menu on
|
|
261
|
+
// first open because once the menu is portaled to document.body, btn.nextElementSibling no longer points to it.
|
|
195
262
|
" window.toggleDropdown = (btn, opts) => {",
|
|
196
263
|
" const o = opts || {};",
|
|
197
264
|
" const menu = btn._portalMenu || o.menu || btn.nextElementSibling;",
|
|
@@ -213,20 +280,24 @@ export function generateSharedUtilitiesScript() {
|
|
|
213
280
|
" window.addEventListener('resize', closeAllDropdowns);",
|
|
214
281
|
" };",
|
|
215
282
|
// Shared channel display renderer with three modes. The mode parameter controls presentation: 'logo' (default) shows the logo with text as an onerror
|
|
216
|
-
// fallback, 'both' shows the logo and text side by side with onerror hiding the broken image, 'text' shows only the text and ignores the logo URL.
|
|
283
|
+
// fallback, 'both' shows the logo and text side by side with onerror hiding the broken image, 'text' shows only the text and ignores the logo URL. The name is
|
|
284
|
+
// escaped once through the shared escapeHtml SSOT and reused for both the text span and the title/alt attributes, so callers pass raw names and this is the one
|
|
285
|
+
// escape boundary for channel names regardless of the call site (status popover, channels table logos, browse wizard).
|
|
217
286
|
" window.channelDisplayHtml = (logoUrl, name, logoClass, textClass, mode) => {",
|
|
218
287
|
" const m = mode || 'logo';",
|
|
288
|
+
" const safeName = escapeHtml(name);",
|
|
219
289
|
" if((m === 'text') || !logoUrl) {",
|
|
220
|
-
" return '<span class=\"' + textClass + '\">' +
|
|
290
|
+
" return '<span class=\"' + textClass + '\">' + safeName + '</span>';",
|
|
221
291
|
" }",
|
|
292
|
+
" const safeLogo = escapeHtml(safeUrl(logoUrl));",
|
|
222
293
|
" if(m === 'both') {",
|
|
223
|
-
" return '<img src=\"' +
|
|
294
|
+
" return '<img src=\"' + safeLogo + '\" class=\"' + logoClass + '\" alt=\"\" title=\"' + safeName + '\" ' +",
|
|
224
295
|
" 'onerror=\"imgFallback(this)\">' +",
|
|
225
|
-
" '<span class=\"' + textClass + '\">' +
|
|
296
|
+
" '<span class=\"' + textClass + '\">' + safeName + '</span>';",
|
|
226
297
|
" }",
|
|
227
|
-
" return '<img src=\"' +
|
|
298
|
+
" return '<img src=\"' + safeLogo + '\" class=\"' + logoClass + '\" alt=\"' + safeName + '\" title=\"' + safeName + '\" ' +",
|
|
228
299
|
" 'onerror=\"imgFallback(this)\">' +",
|
|
229
|
-
" '<span class=\"' + textClass + '\" style=\"display:none\">' +
|
|
300
|
+
" '<span class=\"' + textClass + '\" style=\"display:none\">' + safeName + '</span>';",
|
|
230
301
|
" };",
|
|
231
302
|
// Image fallback handler. Reads pipe-separated fallback URLs from a data-fallbacks attribute and tries each in sequence on error. When all fallbacks are
|
|
232
303
|
// exhausted, hides the image and reveals the text sibling if it was hidden (logo mode).
|
|
@@ -243,24 +314,31 @@ export function generateSharedUtilitiesScript() {
|
|
|
243
314
|
" }",
|
|
244
315
|
" };",
|
|
245
316
|
// Service icon renderer with three modes, mirroring channelDisplayHtml. The icon source chain is: iconUrl (if specified) -> Apple touch icon -> favicon.
|
|
246
|
-
// Fallback URLs are stored in a data-fallbacks attribute and processed by the shared imgFallback handler.
|
|
317
|
+
// Fallback URLs are stored in a data-fallbacks attribute and processed by the shared imgFallback handler. As with channelDisplayHtml, the name is escaped once
|
|
318
|
+
// through the shared escapeHtml SSOT and reused for the text span and the title/alt attributes, so callers pass raw service names.
|
|
247
319
|
" window.serviceIconHtml = (domain, name, iconClass, textClass, mode, iconUrl) => {",
|
|
248
320
|
" const m = mode || 'logo';",
|
|
321
|
+
" const safeName = escapeHtml(name);",
|
|
249
322
|
" if((m === 'text') || !domain) {",
|
|
250
|
-
" return '<span class=\"' + textClass + '\">' +
|
|
323
|
+
" return '<span class=\"' + textClass + '\">' + safeName + '</span>';",
|
|
251
324
|
" }",
|
|
252
325
|
" const touchIcon = 'https://' + domain + '/apple-touch-icon.png';",
|
|
253
326
|
" const favicon = 'https://' + domain + '/favicon.ico';",
|
|
254
327
|
" const src = iconUrl || touchIcon;",
|
|
255
328
|
" const fallbacks = (iconUrl ? [ touchIcon, favicon ] : [ favicon ]).join('|');",
|
|
329
|
+
// The src is scheme-vetted (an iconUrl can be an arbitrary configured URL) and then escaped; the fallback list is built from the domain over a hardcoded https
|
|
330
|
+
// scheme so it only needs escaping for the attribute. imgFallback reads the decoded data-fallbacks values back into img.src, so escaping here keeps the attribute
|
|
331
|
+
// safe without altering the URLs imgFallback ultimately loads.
|
|
332
|
+
" const safeSrc = escapeHtml(safeUrl(src));",
|
|
333
|
+
" const safeFallbacks = escapeHtml(fallbacks);",
|
|
256
334
|
" if(m === 'both') {",
|
|
257
|
-
" return '<img src=\"' +
|
|
258
|
-
" 'data-fallbacks=\"' +
|
|
259
|
-
" '<span class=\"' + textClass + '\">' +
|
|
335
|
+
" return '<img src=\"' + safeSrc + '\" class=\"' + iconClass + '\" alt=\"\" title=\"' + safeName + '\" ' +",
|
|
336
|
+
" 'data-fallbacks=\"' + safeFallbacks + '\" onerror=\"imgFallback(this)\">' +",
|
|
337
|
+
" '<span class=\"' + textClass + '\">' + safeName + '</span>';",
|
|
260
338
|
" }",
|
|
261
|
-
" return '<img src=\"' +
|
|
262
|
-
" 'data-fallbacks=\"' +
|
|
263
|
-
" '<span class=\"' + textClass + '\" style=\"display:none\">' +
|
|
339
|
+
" return '<img src=\"' + safeSrc + '\" class=\"' + iconClass + '\" alt=\"' + safeName + '\" title=\"' + safeName + '\" ' +",
|
|
340
|
+
" 'data-fallbacks=\"' + safeFallbacks + '\" onerror=\"imgFallback(this)\">' +",
|
|
341
|
+
" '<span class=\"' + textClass + '\" style=\"display:none\">' + safeName + '</span>';",
|
|
264
342
|
" };",
|
|
265
343
|
// Process service display spans. Finds all .provider-display elements and renders them via serviceIconHtml in 'both' mode. Called on page load and after
|
|
266
344
|
// any DOM mutation that introduces new service display elements (chip rebuild, filter updates).
|
|
@@ -282,7 +360,7 @@ export function generateSharedUtilitiesScript() {
|
|
|
282
360
|
// a state object for the caller to store wizard-specific data (e.g., selected providers, form values). State is reset to {} on close.
|
|
283
361
|
//
|
|
284
362
|
// Config shape: { contentId, errorId?, modalId, onClose?, onRender, onValidate, stepCount, stepsId?, titleId? }
|
|
285
|
-
// - contentId: ID of the wizard-content div.
|
|
363
|
+
// - contentId: ID of the wizard-content div. Accepted for shape parity with the server-side wizard shell but not read by this controller.
|
|
286
364
|
// - errorId: ID of the wizard-error div (optional, omit for modals without validation).
|
|
287
365
|
// - modalId: ID of the wizard-modal root div.
|
|
288
366
|
// - onClose: Optional callback invoked when close() is called, before hiding the modal.
|
|
@@ -359,7 +437,8 @@ export function generateSharedUtilitiesScript() {
|
|
|
359
437
|
" return currentStep;",
|
|
360
438
|
" },",
|
|
361
439
|
// Navigate to a specific step by clicking the step indicator. Going backward is always allowed for visited steps. Going forward validates the current step
|
|
362
|
-
// and only allows jumps to previously visited steps.
|
|
440
|
+
// and only allows jumps to previously visited steps. Always returns a Promise, since validateAndAdvance is itself async; it resolves to false if validation
|
|
441
|
+
// failed, regardless of whether onValidate is sync or async.
|
|
363
442
|
" goToStep(n) {",
|
|
364
443
|
" if(n === currentStep) return;",
|
|
365
444
|
" if(n > highestStep) return;",
|
|
@@ -374,7 +453,8 @@ export function generateSharedUtilitiesScript() {
|
|
|
374
453
|
" const el = document.getElementById(id);",
|
|
375
454
|
" if(el) el.style.display = 'none';",
|
|
376
455
|
" },",
|
|
377
|
-
// Navigate forward one step. Validates the current step first.
|
|
456
|
+
// Navigate forward one step. Validates the current step first. Always returns a Promise, since validateAndAdvance is itself async; it resolves to false
|
|
457
|
+
// if validation failed, regardless of whether onValidate is sync or async.
|
|
378
458
|
" next() {",
|
|
379
459
|
" if(currentStep >= config.stepCount) return true;",
|
|
380
460
|
" return validateAndAdvance(currentStep + 1);",
|
|
@@ -432,9 +512,9 @@ export function generateSharedUtilitiesScript() {
|
|
|
432
512
|
*/
|
|
433
513
|
" window.channelTable = {",
|
|
434
514
|
/* Cached column index map for _getSortValue. Built lazily on first access by scanning the table header row's data-sort-field attributes, then held for
|
|
435
|
-
* the page lifetime with no invalidation path.
|
|
436
|
-
* never rebuilt client-side - only CSS visibility classes are toggled by toggleColumn, never DOM
|
|
437
|
-
*
|
|
515
|
+
* the page lifetime with no invalidation path. Do not introduce dynamic thead mutation without also adding cache invalidation - the column-index cache
|
|
516
|
+
* assumes the header is rendered once by the server and never rebuilt client-side - only CSS visibility classes are toggled by toggleColumn, never DOM
|
|
517
|
+
* structure. If that assumption changes, set _colIndexCache = null after rewriting the header row.
|
|
438
518
|
*/
|
|
439
519
|
" _colIndexCache: null,",
|
|
440
520
|
// Read the server-stamped sort value from a row's cell for a given field. Private helper used by sort() and insertRow() to compute insertion order.
|
|
@@ -569,7 +649,7 @@ export function generateSharedUtilitiesScript() {
|
|
|
569
649
|
*
|
|
570
650
|
* Cache lifecycle: _allOptions is attached to the DOM select element itself, so its lifetime is tied to that element. Row replacement via insertRow() drops
|
|
571
651
|
* the old row (and its select) and inserts fresh server-rendered HTML, which transparently resets the cache with whatever option set the server just sent.
|
|
572
|
-
*
|
|
652
|
+
* Refactoring insertRow() into an in-place row update would silently keep the stale _allOptions cache - add explicit invalidation if you do.
|
|
573
653
|
*/
|
|
574
654
|
" filter(enabledTags) {",
|
|
575
655
|
" const rows = document.querySelectorAll('tr[data-provider-tags]');",
|
|
@@ -678,6 +758,12 @@ export function generateSharedUtilitiesScript() {
|
|
|
678
758
|
" }",
|
|
679
759
|
" }",
|
|
680
760
|
" };",
|
|
761
|
+
/* Action registrations. The cross-cutting actions bound to functions defined in this same script (toggleDropdown, channelTable.sort). Each subsystem
|
|
762
|
+
* registers its own actions in its corresponding script file; this block keeps shared-utility actions colocated with their definitions. Event mechanics
|
|
763
|
+
* (preventDefault, stopPropagation, close-dropdown) live declaratively on the trigger element, not in these handler bodies.
|
|
764
|
+
*/
|
|
765
|
+
" window.registerAction('" + ACTIONS.channelTableSort + "', (target) => channelTable.sort(target.dataset.field));",
|
|
766
|
+
" window.registerAction('" + ACTIONS.toggleDropdown + "', (target) => toggleDropdown(target));",
|
|
681
767
|
"})();",
|
|
682
768
|
"</script>"
|
|
683
769
|
].join("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/routes/root/scripts/shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/routes/root/scripts/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../src/routes/root/scripts/status.ts"],"names":[],"mappings":"AAwBA;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CA4F7C"}
|
|
@@ -43,10 +43,12 @@ export interface SystemSummary {
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
* The shape of the snapshot SSE payload. snapshot is the only event that delivers the full state in one message; subsequent events are deltas.
|
|
46
|
+
* The shape of the snapshot SSE payload. snapshot is the only event that delivers the full state in one message; subsequent events are deltas. The channel
|
|
47
|
+
* table catch-up patch is opaque at this layer - the server composes it via buildSnapshotChannelPatch and the client routes it through channelTable.applyPatch
|
|
48
|
+
* without inspecting its shape.
|
|
47
49
|
*/
|
|
48
50
|
export interface SnapshotPayload {
|
|
49
|
-
readonly
|
|
51
|
+
readonly channelPatch?: unknown;
|
|
50
52
|
readonly streams: readonly StreamSummary[];
|
|
51
53
|
readonly system: SystemSummary;
|
|
52
54
|
}
|
|
@@ -56,26 +58,6 @@ export interface SnapshotPayload {
|
|
|
56
58
|
export interface StreamRemovedPayload {
|
|
57
59
|
readonly id: number | string;
|
|
58
60
|
}
|
|
59
|
-
/**
|
|
60
|
-
* The shape of the healthChanged SSE payload. Carries the per-channel update plus the domain that owns the auth context.
|
|
61
|
-
*/
|
|
62
|
-
export interface HealthChangedPayload {
|
|
63
|
-
readonly channelKey: string;
|
|
64
|
-
readonly domain?: string;
|
|
65
|
-
readonly status: "failed" | "success";
|
|
66
|
-
readonly timestamp: number;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Health snapshot delivered inside the snapshot event. Channels and domains are independent maps keyed by their respective identifiers.
|
|
70
|
-
*/
|
|
71
|
-
export interface HealthSnapshot {
|
|
72
|
-
readonly channels: Readonly<Record<string, {
|
|
73
|
-
readonly domain?: string;
|
|
74
|
-
readonly status: "failed" | "success";
|
|
75
|
-
readonly timestamp: number;
|
|
76
|
-
}>>;
|
|
77
|
-
readonly domains: Readonly<Record<string, number>>;
|
|
78
|
-
}
|
|
79
61
|
/**
|
|
80
62
|
* Mutable client state. The IIFE shell constructs one of these at startup; every handler reads and writes it via ctx.state. Handlers mutate ctx.state fields
|
|
81
63
|
* directly; mutation methods would add no value over field assignment.
|
|
@@ -91,7 +73,16 @@ export interface ClientState {
|
|
|
91
73
|
}
|
|
92
74
|
/**
|
|
93
75
|
* Readonly handle to sibling-script window.* APIs. Resolved at IIFE construction time; tests pass stub literals. updateRestartDialogStatus is read via a getter
|
|
94
|
-
* in the IIFE
|
|
76
|
+
* in the IIFE because config.ts's script loads before status.ts's, so the function is already registered by the time this script runs; the typeof guard
|
|
77
|
+
* behind the getter is defensive in case that load order ever changes.
|
|
78
|
+
*
|
|
79
|
+
* What belongs here versus a bare global: ClientExternals holds the collaborators tests need to stub or observe - the channelTable patch sink, the channelDisplayHtml
|
|
80
|
+
* renderer (asserted for delegation), dropdowns.close, copyToClipboard, the optional config.ts trampoline. The shared client-escape SSOT (window.escapeHtml,
|
|
81
|
+
* installed by shared.ts) is deliberately NOT here: it is a pure, stateless primitive that is always used for real, never stubbed, and it is needed by the pure
|
|
82
|
+
* formatters below (renderDetailCodec, formatLastIssue, formatClients) which take only their StreamSummary - threading a context into them just to reach an escaper
|
|
83
|
+
* would violate the "pure formatters, literal inputs, no externals plumbing" rule. So escapeHtml is referenced as a bare browser global, exactly like Date, Math,
|
|
84
|
+
* and requestAnimationFrame; production resolves it to window.escapeHtml and the test seeds globalThis.escapeHtml. This keeps one access path for the escaper across
|
|
85
|
+
* both renderers and formatters.
|
|
95
86
|
*/
|
|
96
87
|
export interface ClientExternals {
|
|
97
88
|
readonly channelDisplayHtml: (logoUrl: string | undefined, name: string, logoClass: string, textClass: string) => string;
|
|
@@ -114,9 +105,10 @@ export interface HandlerContext {
|
|
|
114
105
|
readonly state: ClientState;
|
|
115
106
|
}
|
|
116
107
|
/**
|
|
117
|
-
* Builds an empty client state.
|
|
118
|
-
*
|
|
119
|
-
*
|
|
108
|
+
* Builds an empty client state. This is the test-fixture seed; the production IIFE in status.ts does NOT call it - it constructs the initial state as an inline
|
|
109
|
+
* object literal whose shape must be kept in sync with this function by hand (the two are parallel definitions, not a shared call). Defaults to "no streams, no
|
|
110
|
+
* system data, watchdog timestamps zeroed, rAF gates open." lastStatusEventTime is zeroed here; the IIFE sets it to Date.now() directly in its own literal right
|
|
111
|
+
* before opening the EventSource so the staleness watchdog has a meaningful baseline. Tests that exercise the watchdog seed it explicitly.
|
|
120
112
|
*/
|
|
121
113
|
export declare function createInitialState(): ClientState;
|
|
122
114
|
/**
|
|
@@ -150,15 +142,11 @@ declare function renderStreamsTable(ctx: HandlerContext): void;
|
|
|
150
142
|
declare function updateStreamRow(s: StreamSummary, ctx: HandlerContext): void;
|
|
151
143
|
declare function toggleStreamDetails(id: number | string, ctx: HandlerContext): void;
|
|
152
144
|
declare function updateDurations(ctx: HandlerContext): void;
|
|
153
|
-
declare function updateChannelHealth(channelKey: string, status: "failed" | "success", timestamp: number, domain: string | undefined, ctx: HandlerContext): void;
|
|
154
|
-
declare function updateDomainAuth(domain: string, timestamp: number, ctx: HandlerContext): void;
|
|
155
|
-
declare function applyHealthSnapshot(data: HealthSnapshot, ctx: HandlerContext): void;
|
|
156
145
|
declare function handleSnapshot(data: SnapshotPayload, ctx: HandlerContext): void;
|
|
157
146
|
declare function handleStreamAdded(data: StreamSummary, ctx: HandlerContext): void;
|
|
158
147
|
declare function handleStreamRemoved(data: StreamRemovedPayload, ctx: HandlerContext): void;
|
|
159
148
|
declare function handleStreamHealthChanged(data: StreamSummary, ctx: HandlerContext): void;
|
|
160
149
|
declare function handleSystemStatusChanged(data: SystemSummary, ctx: HandlerContext): void;
|
|
161
|
-
declare function handleHealthChanged(data: HealthChangedPayload, ctx: HandlerContext): void;
|
|
162
150
|
declare function handleChannelUpdate(data: unknown, ctx: HandlerContext): void;
|
|
163
151
|
declare function handleSseError(ctx: HandlerContext): void;
|
|
164
152
|
declare function toggleStreamPopover(ctx: HandlerContext): void;
|
|
@@ -173,10 +161,12 @@ declare function initIPadTooltips(ctx: HandlerContext): void;
|
|
|
173
161
|
type EmittableFn = (...args: never[]) => unknown;
|
|
174
162
|
/**
|
|
175
163
|
* The script-side function registry. generateStatusScript() emits each entry's .toString() output in order. Order is hoisting-irrelevant for function
|
|
176
|
-
* declarations but reflects the logical groups: pure formatters, state-derived renderers, DOM mutators
|
|
177
|
-
*
|
|
164
|
+
* declarations but reflects the logical groups: pure formatters, state-derived renderers, DOM mutators (updateSystemStatus / buildStreamPopoverContent /
|
|
165
|
+
* updateStreamPopover), the render-scheduler pair, more DOM mutators (renderStreamsTable / updateStreamRow / toggleStreamDetails / updateDurations), SSE
|
|
166
|
+
* handlers, then trampolines and lifecycle helpers. Adding a new function means appending here and using its identifier in the IIFE; nothing else changes.
|
|
178
167
|
*
|
|
179
168
|
* The exported individual functions remain importable for tests; this registry is just the emission order for the script body.
|
|
180
169
|
*/
|
|
181
170
|
export declare const HANDLER_FUNCTIONS: readonly EmittableFn[];
|
|
182
|
-
export {
|
|
171
|
+
export { buildStreamPopoverContent, copyOverviewPlaylistUrl, formatAutoRecovery, formatBytes, formatClients, formatDuration, formatLastIssue, formatTime, formatTimeAgo, getDomain, getHealthBadge, getRecoveringLabel, handleChannelUpdate, handleSnapshot, handleSseError, handleStreamAdded, handleStreamHealthChanged, handleStreamRemoved, handleSystemStatusChanged, handleVisibilityChange, initIPadTooltips, renderDetailCodec, renderDetailStarted, renderHealthCellContent, renderStreamsTable, schedulePopoverRender, scheduleTableRender, toggleStreamDetails, toggleStreamPopover, updateDurations, updateStreamPopover, updateStreamRow, updateSystemStatus };
|
|
172
|
+
//# sourceMappingURL=status.handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.handlers.d.ts","sourceRoot":"","sources":["../../../../src/routes/root/scripts/status.handlers.ts"],"names":[],"mappings":"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"}
|