prismcast 1.12.0 → 1.13.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 +41 -1
- package/dist/app.js +164 -76
- package/dist/app.js.map +1 -1
- package/dist/browser/blockedPage.d.ts +0 -1
- package/dist/browser/browserSupervisor.d.ts +34 -5
- package/dist/browser/browserSupervisor.js +39 -12
- package/dist/browser/browserSupervisor.js.map +1 -1
- package/dist/browser/cdp.d.ts +58 -6
- package/dist/browser/cdp.js +147 -9
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +18 -6
- package/dist/browser/channelSelection.js +47 -36
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/consent.d.ts +33 -4
- package/dist/browser/consent.js +87 -50
- package/dist/browser/consent.js.map +1 -1
- package/dist/browser/display.d.ts +0 -1
- package/dist/browser/hlsPlaylistObserver.d.ts +3 -2
- package/dist/browser/hlsPlaylistObserver.js +11 -6
- package/dist/browser/hlsPlaylistObserver.js.map +1 -1
- package/dist/browser/index.d.ts +273 -59
- package/dist/browser/index.js +768 -255
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/launchGovernor.d.ts +0 -1
- package/dist/browser/login.d.ts +11 -10
- package/dist/browser/login.js +42 -33
- package/dist/browser/login.js.map +1 -1
- package/dist/browser/manifestInterceptor.d.ts +14 -5
- package/dist/browser/manifestInterceptor.js +26 -13
- package/dist/browser/manifestInterceptor.js.map +1 -1
- package/dist/browser/navigation.d.ts +28 -0
- package/dist/browser/navigation.js +57 -0
- package/dist/browser/navigation.js.map +1 -0
- package/dist/browser/pageStaleness.d.ts +1 -2
- package/dist/browser/pageStaleness.js +9 -9
- package/dist/browser/pageStaleness.js.map +1 -1
- package/dist/browser/precaching.d.ts +27 -13
- package/dist/browser/precaching.js +219 -73
- package/dist/browser/precaching.js.map +1 -1
- package/dist/browser/tabCapture.d.ts +97 -0
- package/dist/browser/tabCapture.js +314 -0
- package/dist/browser/tabCapture.js.map +1 -0
- package/dist/browser/tabNetworkObserver.d.ts +0 -1
- package/dist/browser/tabSelection.d.ts +117 -0
- package/dist/browser/tabSelection.js +547 -0
- package/dist/browser/tabSelection.js.map +1 -0
- package/dist/browser/tuning/cache.d.ts +0 -1
- package/dist/browser/tuning/comcastPolymer.d.ts +0 -1
- package/dist/browser/tuning/comcastPolymer.js +18 -19
- package/dist/browser/tuning/comcastPolymer.js.map +1 -1
- package/dist/browser/tuning/cox.d.ts +0 -1
- package/dist/browser/tuning/directv.d.ts +0 -1
- package/dist/browser/tuning/directv.js +12 -13
- package/dist/browser/tuning/directv.js.map +1 -1
- package/dist/browser/tuning/fox.d.ts +0 -1
- package/dist/browser/tuning/fox.js +2 -2
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/gridSearch.d.ts +0 -1
- package/dist/browser/tuning/hbo.d.ts +0 -1
- package/dist/browser/tuning/hbo.js +2 -2
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.d.ts +14 -2
- package/dist/browser/tuning/hulu.js +150 -24
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/shared.d.ts +1 -2
- package/dist/browser/tuning/shared.js +1 -1
- package/dist/browser/tuning/sling.d.ts +0 -1
- package/dist/browser/tuning/sling.js +17 -22
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/spectrum.d.ts +0 -1
- package/dist/browser/tuning/thumbnailRow.d.ts +0 -1
- package/dist/browser/tuning/tileClick.d.ts +0 -1
- package/dist/browser/tuning/xfinity.d.ts +0 -1
- package/dist/browser/tuning/youtubeTv.d.ts +0 -1
- package/dist/browser/tuning/youtubeTv.js +1 -2
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +55 -33
- package/dist/browser/video.js +213 -169
- package/dist/browser/video.js.map +1 -1
- package/dist/browser/windowSync.d.ts +45 -0
- package/dist/browser/windowSync.js +153 -0
- package/dist/browser/windowSync.js.map +1 -0
- package/dist/channels/index.d.ts +7 -1
- package/dist/channels/index.js +24 -8
- package/dist/channels/index.js.map +1 -1
- package/dist/config/channelForm.d.ts +0 -1
- package/dist/config/channelIdentity.d.ts +27 -0
- package/dist/config/channelIdentity.js +72 -0
- package/dist/config/channelIdentity.js.map +1 -0
- package/dist/config/channelSort.d.ts +25 -0
- package/dist/config/channelSort.js +101 -0
- package/dist/config/channelSort.js.map +1 -0
- package/dist/config/consistencyProbe.d.ts +0 -1
- package/dist/config/consistencyProbe.js +1 -1
- package/dist/config/consistencyProbe.js.map +1 -1
- package/dist/config/health.d.ts +3 -2
- package/dist/config/health.js +41 -31
- package/dist/config/health.js.map +1 -1
- package/dist/config/index.d.ts +12 -1
- package/dist/config/index.js +77 -31
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +17 -2
- package/dist/config/paths.js +21 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/persistence.context.d.ts +0 -1
- package/dist/config/persistence.d.ts +8 -4
- package/dist/config/persistence.js +143 -82
- package/dist/config/persistence.js.map +1 -1
- package/dist/config/presets.d.ts +0 -1
- package/dist/config/profiles.d.ts +9 -4
- package/dist/config/profiles.js +39 -6
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/providerLineups.d.ts +0 -1
- package/dist/config/providerLineups.js +0 -3
- package/dist/config/providerLineups.js.map +1 -1
- package/dist/config/reactivity.d.ts +0 -1
- package/dist/config/servicePacks.d.ts +0 -1
- package/dist/config/services.d.ts +1 -47
- package/dist/config/services.js +4 -135
- package/dist/config/services.js.map +1 -1
- package/dist/config/sites.d.ts +0 -9
- package/dist/config/sites.js +82 -98
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +22 -29
- package/dist/config/userChannels.js +47 -65
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +19 -4
- package/dist/config/userConfig.js +123 -25
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +2 -3
- package/dist/config/userProfiles.js +16 -13
- package/dist/config/userProfiles.js.map +1 -1
- package/dist/hdhr/channelMap.d.ts +0 -1
- package/dist/hdhr/deviceId.d.ts +0 -1
- package/dist/hdhr/discover.d.ts +0 -1
- package/dist/hdhr/getHandlers.d.ts +0 -1
- package/dist/hdhr/identity.d.ts +0 -1
- package/dist/hdhr/index.d.ts +0 -1
- package/dist/hdhr/protocol.d.ts +1 -2
- package/dist/hdhr/protocol.js +1 -1
- package/dist/hdhr/tunerState.d.ts +0 -1
- package/dist/hdhr/udp.d.ts +0 -1
- package/dist/hdhr/udp.js +16 -4
- package/dist/hdhr/udp.js.map +1 -1
- package/dist/identity.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/native/codecInference.d.ts +5 -4
- package/dist/native/codecInference.js +12 -7
- package/dist/native/codecInference.js.map +1 -1
- package/dist/native/decrypt.d.ts +10 -3
- package/dist/native/decrypt.js +9 -5
- package/dist/native/decrypt.js.map +1 -1
- package/dist/native/index.d.ts +26 -24
- package/dist/native/index.js +26 -20
- package/dist/native/index.js.map +1 -1
- package/dist/native/probe.d.ts +7 -10
- package/dist/native/probe.js +41 -37
- package/dist/native/probe.js.map +1 -1
- package/dist/native/proxy.d.ts +3 -4
- package/dist/native/proxy.js +91 -69
- package/dist/native/proxy.js.map +1 -1
- package/dist/native/tokenExpiry.d.ts +0 -1
- package/dist/routes/assets.d.ts +0 -1
- package/dist/routes/auth.d.ts +0 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/cdp.d.ts +11 -5
- package/dist/routes/cdp.js +91 -63
- package/dist/routes/cdp.js.map +1 -1
- package/dist/routes/channels.d.ts +0 -1
- package/dist/routes/clientActions.d.ts +0 -1
- package/dist/routes/components.d.ts +0 -1
- package/dist/routes/config/channels/endpoints/browse.d.ts +0 -1
- package/dist/routes/config/channels/endpoints/bulk.d.ts +0 -1
- package/dist/routes/config/channels/endpoints/bulk.js +3 -3
- package/dist/routes/config/channels/endpoints/bulk.js.map +1 -1
- package/dist/routes/config/channels/endpoints/crud.d.ts +0 -1
- package/dist/routes/config/channels/endpoints/crud.js +4 -3
- package/dist/routes/config/channels/endpoints/crud.js.map +1 -1
- package/dist/routes/config/channels/endpoints/importExport.d.ts +0 -1
- package/dist/routes/config/channels/endpoints/importExport.js +7 -3
- package/dist/routes/config/channels/endpoints/importExport.js.map +1 -1
- package/dist/routes/config/channels/endpoints/predefined.d.ts +0 -1
- package/dist/routes/config/channels/endpoints/prefs.d.ts +0 -1
- package/dist/routes/config/channels/endpoints/prefs.js +1 -1
- package/dist/routes/config/channels/endpoints/prefs.js.map +1 -1
- package/dist/routes/config/channels/endpoints/service.d.ts +0 -1
- package/dist/routes/config/channels/endpoints/service.js +8 -5
- package/dist/routes/config/channels/endpoints/service.js.map +1 -1
- package/dist/routes/config/channels/endpoints/tags.d.ts +0 -1
- package/dist/routes/config/channels/endpoints/tags.js +3 -3
- package/dist/routes/config/channels/endpoints/tags.js.map +1 -1
- package/dist/routes/config/channels/healthBridge.d.ts +4 -1
- package/dist/routes/config/channels/healthBridge.js +9 -5
- package/dist/routes/config/channels/healthBridge.js.map +1 -1
- package/dist/routes/config/channels/http/handler.d.ts +0 -1
- package/dist/routes/config/channels/http/playlistHint.d.ts +0 -1
- package/dist/routes/config/channels/http/serviceWarning.d.ts +0 -1
- package/dist/routes/config/channels/http/serviceWarning.js +1 -1
- package/dist/routes/config/channels/http/serviceWarning.js.map +1 -1
- package/dist/routes/config/channels/index.d.ts +0 -1
- package/dist/routes/config/channels/setup.d.ts +0 -1
- package/dist/routes/config/channels/table.d.ts +0 -1
- package/dist/routes/config/channels/table.js +66 -134
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/http/envelope.d.ts +1 -2
- package/dist/routes/config/index.d.ts +5 -5
- package/dist/routes/config/index.js +7 -5
- package/dist/routes/config/index.js.map +1 -1
- package/dist/routes/config/services.d.ts +0 -1
- package/dist/routes/config/services.js +17 -19
- package/dist/routes/config/services.js.map +1 -1
- package/dist/routes/config/settings.d.ts +6 -15
- package/dist/routes/config/settings.js +16 -35
- package/dist/routes/config/settings.js.map +1 -1
- package/dist/routes/debug.d.ts +0 -1
- package/dist/routes/debug.js +1 -1
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/health.d.ts +16 -8
- package/dist/routes/health.js +27 -12
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/hls.d.ts +0 -1
- package/dist/routes/icons.d.ts +0 -1
- package/dist/routes/index.d.ts +0 -1
- package/dist/routes/logs.d.ts +3 -2
- package/dist/routes/logs.js +54 -14
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/mpegts.d.ts +0 -1
- package/dist/routes/play.d.ts +0 -1
- package/dist/routes/playlist.d.ts +0 -1
- package/dist/routes/playlist.js +2 -1
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/root/content.d.ts +0 -1
- package/dist/routes/root/content.js +32 -11
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/index.d.ts +10 -1
- package/dist/routes/root/index.js +17 -7
- package/dist/routes/root/index.js.map +1 -1
- package/dist/routes/root/scripts/channels.d.ts +0 -1
- package/dist/routes/root/scripts/channels.js +10 -20
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/clientEscape.d.ts +0 -1
- package/dist/routes/root/scripts/clientEscape.js +1 -1
- package/dist/routes/root/scripts/clientUrl.d.ts +0 -1
- package/dist/routes/root/scripts/config.d.ts +0 -1
- package/dist/routes/root/scripts/config.js +8 -29
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/index.d.ts +0 -1
- package/dist/routes/root/scripts/shared.d.ts +0 -1
- package/dist/routes/root/scripts/shared.js +16 -13
- package/dist/routes/root/scripts/shared.js.map +1 -1
- package/dist/routes/root/scripts/status.d.ts +0 -1
- package/dist/routes/root/scripts/status.handlers.d.ts +3 -1
- package/dist/routes/root/scripts/status.handlers.js +52 -26
- package/dist/routes/root/scripts/status.handlers.js.map +1 -1
- package/dist/routes/root/styles.d.ts +0 -1
- package/dist/routes/root/styles.js +10 -18
- package/dist/routes/root/styles.js.map +1 -1
- package/dist/routes/services.d.ts +0 -1
- package/dist/routes/services.js +1 -1
- package/dist/routes/services.js.map +1 -1
- package/dist/routes/sse.d.ts +3 -2
- package/dist/routes/sse.js +7 -3
- package/dist/routes/sse.js.map +1 -1
- package/dist/routes/streams.d.ts +4 -2
- package/dist/routes/streams.js +8 -5
- package/dist/routes/streams.js.map +1 -1
- package/dist/routes/theme.d.ts +0 -1
- package/dist/routes/theme.js +3 -3
- package/dist/routes/theme.js.map +1 -1
- package/dist/routes/ui.d.ts +0 -1
- package/dist/routes/ui.js +5 -5
- package/dist/routes/ui.js.map +1 -1
- package/dist/routes/upgrade.d.ts +0 -1
- package/dist/routes/upgrade.js +2 -1
- package/dist/routes/upgrade.js.map +1 -1
- package/dist/service/commands.context.d.ts +0 -1
- package/dist/service/commands.context.js +7 -1
- package/dist/service/commands.context.js.map +1 -1
- package/dist/service/commands.d.ts +0 -1
- package/dist/service/generators.context.d.ts +0 -1
- package/dist/service/generators.d.ts +0 -1
- package/dist/service/index.d.ts +0 -1
- package/dist/streaming/captureLock.d.ts +1 -2
- package/dist/streaming/captureLock.js +8 -7
- package/dist/streaming/captureLock.js.map +1 -1
- package/dist/streaming/captureSession.d.ts +0 -1
- package/dist/streaming/clients.d.ts +4 -3
- package/dist/streaming/clients.js +5 -4
- package/dist/streaming/clients.js.map +1 -1
- package/dist/streaming/codec.d.ts +0 -1
- package/dist/streaming/fmp4Segmenter.d.ts +11 -6
- package/dist/streaming/fmp4Segmenter.js +39 -17
- package/dist/streaming/fmp4Segmenter.js.map +1 -1
- package/dist/streaming/hls.d.ts +96 -3
- package/dist/streaming/hls.js +282 -171
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsResume.d.ts +8 -5
- package/dist/streaming/hlsResume.js +10 -8
- package/dist/streaming/hlsResume.js.map +1 -1
- package/dist/streaming/hlsSegments.d.ts +11 -8
- package/dist/streaming/hlsSegments.js +38 -18
- package/dist/streaming/hlsSegments.js.map +1 -1
- package/dist/streaming/lifecycle.d.ts +5 -4
- package/dist/streaming/lifecycle.js +43 -13
- package/dist/streaming/lifecycle.js.map +1 -1
- package/dist/streaming/monitor.d.ts +14 -3
- package/dist/streaming/monitor.js +447 -234
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +0 -1
- package/dist/streaming/mpegts.d.ts +11 -1
- package/dist/streaming/mpegts.js +92 -28
- package/dist/streaming/mpegts.js.map +1 -1
- package/dist/streaming/playlistBuilder.d.ts +0 -1
- package/dist/streaming/preroll.d.ts +34 -15
- package/dist/streaming/preroll.js +32 -30
- package/dist/streaming/preroll.js.map +1 -1
- package/dist/streaming/pretune.d.ts +2 -3
- package/dist/streaming/pretune.js +45 -45
- package/dist/streaming/pretune.js.map +1 -1
- package/dist/streaming/pretuneTimers.d.ts +16 -12
- package/dist/streaming/pretuneTimers.js +27 -37
- package/dist/streaming/pretuneTimers.js.map +1 -1
- package/dist/streaming/recovery.d.ts +97 -9
- package/dist/streaming/recovery.js +96 -18
- package/dist/streaming/recovery.js.map +1 -1
- package/dist/streaming/registry.d.ts +102 -15
- package/dist/streaming/registry.js +90 -5
- package/dist/streaming/registry.js.map +1 -1
- package/dist/streaming/setup.d.ts +90 -32
- package/dist/streaming/setup.js +379 -248
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.d.ts +8 -4
- package/dist/streaming/showInfo.js +54 -45
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +5 -3
- package/dist/streaming/statusEmitter.js +20 -8
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/channels.d.ts +0 -1
- package/dist/types/channels.js +0 -4
- package/dist/types/channels.js.map +1 -1
- package/dist/types/config.d.ts +0 -1
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.js +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +51 -9
- package/dist/types/profiles.js +35 -1
- package/dist/types/profiles.js.map +1 -1
- package/dist/types/selection.d.ts +10 -1
- package/dist/types/shared.d.ts +0 -1
- package/dist/types/streaming.d.ts +8 -1
- package/dist/types/streaming.js +7 -0
- package/dist/types/streaming.js.map +1 -1
- package/dist/upgrade/commands.context.d.ts +0 -1
- package/dist/upgrade/commands.d.ts +0 -1
- package/dist/upgrade/commands.js +1 -1
- package/dist/upgrade/commands.js.map +1 -1
- package/dist/upgrade/detection.context.d.ts +0 -1
- package/dist/upgrade/detection.d.ts +1 -2
- package/dist/upgrade/index.d.ts +0 -1
- package/dist/upgrade/lifecycle.context.d.ts +2 -1
- package/dist/upgrade/lifecycle.context.js +9 -4
- package/dist/upgrade/lifecycle.context.js.map +1 -1
- package/dist/upgrade/lifecycle.d.ts +0 -1
- package/dist/upgrade/pathHandle.d.ts +0 -1
- package/dist/utils/bootSession.context.d.ts +0 -1
- package/dist/utils/bootSession.context.js +3 -2
- package/dist/utils/bootSession.context.js.map +1 -1
- package/dist/utils/bootSession.d.ts +0 -1
- package/dist/utils/chromeFetch.d.ts +0 -1
- package/dist/utils/cliOutput.d.ts +0 -1
- package/dist/utils/debugFilter.d.ts +0 -1
- package/dist/utils/debugFilter.js +5 -3
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/delay.d.ts +65 -13
- package/dist/utils/delay.js +96 -23
- package/dist/utils/delay.js.map +1 -1
- package/dist/utils/errors.d.ts +0 -11
- package/dist/utils/errors.js +3 -14
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/evaluate.d.ts +11 -3
- package/dist/utils/evaluate.js +4 -3
- package/dist/utils/evaluate.js.map +1 -1
- package/dist/utils/ffmpeg.context.d.ts +0 -1
- package/dist/utils/ffmpeg.d.ts +1 -1
- package/dist/utils/ffmpeg.js +2 -1
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/fileLogger.d.ts +26 -7
- package/dist/utils/fileLogger.js +241 -102
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/format.d.ts +36 -4
- package/dist/utils/format.js +66 -12
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/index.d.ts +1 -2
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logEmitter.d.ts +0 -1
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/m3u.d.ts +0 -1
- package/dist/utils/markup.d.ts +0 -1
- package/dist/utils/memo.d.ts +0 -1
- package/dist/utils/morganStream.d.ts +2 -3
- package/dist/utils/morganStream.js +6 -8
- package/dist/utils/morganStream.js.map +1 -1
- package/dist/utils/network.d.ts +0 -1
- package/dist/utils/never.d.ts +8 -0
- package/dist/utils/never.js +20 -0
- package/dist/utils/never.js.map +1 -0
- package/dist/utils/pid.d.ts +0 -1
- package/dist/utils/platform.d.ts +0 -1
- package/dist/utils/processInspector.context.d.ts +32 -2
- package/dist/utils/processInspector.context.js +117 -1
- package/dist/utils/processInspector.context.js.map +1 -1
- package/dist/utils/processInspector.d.ts +0 -32
- package/dist/utils/processInspector.js +10 -117
- package/dist/utils/processInspector.js.map +1 -1
- package/dist/utils/retry.d.ts +5 -4
- package/dist/utils/retry.js +43 -33
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/runtimeIdentity.context.d.ts +0 -1
- package/dist/utils/runtimeIdentity.context.js +3 -1
- package/dist/utils/runtimeIdentity.context.js.map +1 -1
- package/dist/utils/runtimeIdentity.d.ts +1 -1
- package/dist/utils/runtimeIdentity.js +1 -1
- package/dist/utils/runtimeIdentity.js.map +1 -1
- package/dist/utils/sanitize.d.ts +8 -1
- package/dist/utils/sanitize.js +19 -0
- package/dist/utils/sanitize.js.map +1 -1
- package/dist/utils/streamContext.d.ts +0 -1
- package/dist/utils/timing.d.ts +3 -4
- package/dist/utils/timing.js +4 -4
- package/dist/utils/timing.js.map +1 -1
- package/dist/utils/version.d.ts +14 -8
- package/dist/utils/version.js +35 -24
- package/dist/utils/version.js.map +1 -1
- package/package.json +7 -7
- package/dist/app.d.ts.map +0 -1
- package/dist/browser/blockedPage.d.ts.map +0 -1
- package/dist/browser/browserSupervisor.d.ts.map +0 -1
- package/dist/browser/cdp.d.ts.map +0 -1
- package/dist/browser/channelSelection.d.ts.map +0 -1
- package/dist/browser/consent.d.ts.map +0 -1
- package/dist/browser/display.d.ts.map +0 -1
- package/dist/browser/hlsPlaylistObserver.d.ts.map +0 -1
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/launchGovernor.d.ts.map +0 -1
- package/dist/browser/login.d.ts.map +0 -1
- package/dist/browser/manifestInterceptor.d.ts.map +0 -1
- package/dist/browser/pageStaleness.d.ts.map +0 -1
- package/dist/browser/precaching.d.ts.map +0 -1
- package/dist/browser/tabNetworkObserver.d.ts.map +0 -1
- package/dist/browser/tuning/cache.d.ts.map +0 -1
- package/dist/browser/tuning/comcastPolymer.d.ts.map +0 -1
- package/dist/browser/tuning/cox.d.ts.map +0 -1
- package/dist/browser/tuning/directv.d.ts.map +0 -1
- package/dist/browser/tuning/fox.d.ts.map +0 -1
- package/dist/browser/tuning/gridSearch.d.ts.map +0 -1
- package/dist/browser/tuning/hbo.d.ts.map +0 -1
- package/dist/browser/tuning/hulu.d.ts.map +0 -1
- package/dist/browser/tuning/shared.d.ts.map +0 -1
- package/dist/browser/tuning/sling.d.ts.map +0 -1
- package/dist/browser/tuning/spectrum.d.ts.map +0 -1
- package/dist/browser/tuning/thumbnailRow.d.ts.map +0 -1
- package/dist/browser/tuning/tileClick.d.ts.map +0 -1
- package/dist/browser/tuning/xfinity.d.ts.map +0 -1
- package/dist/browser/tuning/youtubeTv.d.ts.map +0 -1
- package/dist/browser/video.d.ts.map +0 -1
- package/dist/channels/index.d.ts.map +0 -1
- package/dist/config/channelForm.d.ts.map +0 -1
- package/dist/config/consistencyProbe.d.ts.map +0 -1
- package/dist/config/health.d.ts.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/paths.d.ts.map +0 -1
- package/dist/config/persistence.context.d.ts.map +0 -1
- package/dist/config/persistence.d.ts.map +0 -1
- package/dist/config/presets.d.ts.map +0 -1
- package/dist/config/profiles.d.ts.map +0 -1
- package/dist/config/providerLineups.d.ts.map +0 -1
- package/dist/config/reactivity.d.ts.map +0 -1
- package/dist/config/servicePacks.d.ts.map +0 -1
- package/dist/config/services.d.ts.map +0 -1
- package/dist/config/sites.d.ts.map +0 -1
- package/dist/config/userChannels.d.ts.map +0 -1
- package/dist/config/userConfig.d.ts.map +0 -1
- package/dist/config/userProfiles.d.ts.map +0 -1
- package/dist/hdhr/channelMap.d.ts.map +0 -1
- package/dist/hdhr/deviceId.d.ts.map +0 -1
- package/dist/hdhr/discover.d.ts.map +0 -1
- package/dist/hdhr/getHandlers.d.ts.map +0 -1
- package/dist/hdhr/identity.d.ts.map +0 -1
- package/dist/hdhr/index.d.ts.map +0 -1
- package/dist/hdhr/protocol.d.ts.map +0 -1
- package/dist/hdhr/tunerState.d.ts.map +0 -1
- package/dist/hdhr/udp.d.ts.map +0 -1
- package/dist/identity.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/native/codecInference.d.ts.map +0 -1
- package/dist/native/decrypt.d.ts.map +0 -1
- package/dist/native/index.d.ts.map +0 -1
- package/dist/native/probe.d.ts.map +0 -1
- package/dist/native/proxy.d.ts.map +0 -1
- package/dist/native/tokenExpiry.d.ts.map +0 -1
- package/dist/routes/assets.d.ts.map +0 -1
- package/dist/routes/auth.d.ts.map +0 -1
- package/dist/routes/cdp.d.ts.map +0 -1
- package/dist/routes/channels.d.ts.map +0 -1
- package/dist/routes/clientActions.d.ts.map +0 -1
- package/dist/routes/components.d.ts.map +0 -1
- package/dist/routes/config/channels/endpoints/browse.d.ts.map +0 -1
- package/dist/routes/config/channels/endpoints/bulk.d.ts.map +0 -1
- package/dist/routes/config/channels/endpoints/crud.d.ts.map +0 -1
- package/dist/routes/config/channels/endpoints/importExport.d.ts.map +0 -1
- package/dist/routes/config/channels/endpoints/predefined.d.ts.map +0 -1
- package/dist/routes/config/channels/endpoints/prefs.d.ts.map +0 -1
- package/dist/routes/config/channels/endpoints/service.d.ts.map +0 -1
- package/dist/routes/config/channels/endpoints/tags.d.ts.map +0 -1
- package/dist/routes/config/channels/healthBridge.d.ts.map +0 -1
- package/dist/routes/config/channels/http/handler.d.ts.map +0 -1
- package/dist/routes/config/channels/http/playlistHint.d.ts.map +0 -1
- package/dist/routes/config/channels/http/serviceWarning.d.ts.map +0 -1
- package/dist/routes/config/channels/index.d.ts.map +0 -1
- package/dist/routes/config/channels/setup.d.ts.map +0 -1
- package/dist/routes/config/channels/table.d.ts.map +0 -1
- package/dist/routes/config/http/envelope.d.ts.map +0 -1
- package/dist/routes/config/index.d.ts.map +0 -1
- package/dist/routes/config/services.d.ts.map +0 -1
- package/dist/routes/config/settings.d.ts.map +0 -1
- package/dist/routes/debug.d.ts.map +0 -1
- package/dist/routes/health.d.ts.map +0 -1
- package/dist/routes/hls.d.ts.map +0 -1
- package/dist/routes/icons.d.ts.map +0 -1
- package/dist/routes/index.d.ts.map +0 -1
- package/dist/routes/logs.d.ts.map +0 -1
- package/dist/routes/mpegts.d.ts.map +0 -1
- package/dist/routes/play.d.ts.map +0 -1
- package/dist/routes/playlist.d.ts.map +0 -1
- package/dist/routes/root/content.d.ts.map +0 -1
- package/dist/routes/root/index.d.ts.map +0 -1
- package/dist/routes/root/scripts/channels.d.ts.map +0 -1
- package/dist/routes/root/scripts/clientEscape.d.ts.map +0 -1
- package/dist/routes/root/scripts/clientUrl.d.ts.map +0 -1
- package/dist/routes/root/scripts/config.d.ts.map +0 -1
- package/dist/routes/root/scripts/index.d.ts.map +0 -1
- package/dist/routes/root/scripts/shared.d.ts.map +0 -1
- package/dist/routes/root/scripts/status.d.ts.map +0 -1
- package/dist/routes/root/scripts/status.handlers.d.ts.map +0 -1
- package/dist/routes/root/styles.d.ts.map +0 -1
- package/dist/routes/services.d.ts.map +0 -1
- package/dist/routes/sse.d.ts.map +0 -1
- package/dist/routes/streams.d.ts.map +0 -1
- package/dist/routes/theme.d.ts.map +0 -1
- package/dist/routes/ui.d.ts.map +0 -1
- package/dist/routes/upgrade.d.ts.map +0 -1
- package/dist/service/commands.context.d.ts.map +0 -1
- package/dist/service/commands.d.ts.map +0 -1
- package/dist/service/generators.context.d.ts.map +0 -1
- package/dist/service/generators.d.ts.map +0 -1
- package/dist/service/index.d.ts.map +0 -1
- package/dist/streaming/captureLock.d.ts.map +0 -1
- package/dist/streaming/captureSession.d.ts.map +0 -1
- package/dist/streaming/clients.d.ts.map +0 -1
- package/dist/streaming/codec.d.ts.map +0 -1
- package/dist/streaming/fmp4Segmenter.d.ts.map +0 -1
- package/dist/streaming/hls.d.ts.map +0 -1
- package/dist/streaming/hlsResume.d.ts.map +0 -1
- package/dist/streaming/hlsSegments.d.ts.map +0 -1
- package/dist/streaming/lifecycle.d.ts.map +0 -1
- package/dist/streaming/monitor.d.ts.map +0 -1
- package/dist/streaming/mp4Parser.d.ts.map +0 -1
- package/dist/streaming/mpegts.d.ts.map +0 -1
- package/dist/streaming/playlistBuilder.d.ts.map +0 -1
- package/dist/streaming/preroll.d.ts.map +0 -1
- package/dist/streaming/pretune.d.ts.map +0 -1
- package/dist/streaming/pretuneTimers.d.ts.map +0 -1
- package/dist/streaming/recovery.d.ts.map +0 -1
- package/dist/streaming/registry.d.ts.map +0 -1
- package/dist/streaming/setup.d.ts.map +0 -1
- package/dist/streaming/showInfo.d.ts.map +0 -1
- package/dist/streaming/statusEmitter.d.ts.map +0 -1
- package/dist/types/channels.d.ts.map +0 -1
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/profiles.d.ts.map +0 -1
- package/dist/types/selection.d.ts.map +0 -1
- package/dist/types/shared.d.ts.map +0 -1
- package/dist/types/streaming.d.ts.map +0 -1
- package/dist/upgrade/commands.context.d.ts.map +0 -1
- package/dist/upgrade/commands.d.ts.map +0 -1
- package/dist/upgrade/detection.context.d.ts.map +0 -1
- package/dist/upgrade/detection.d.ts.map +0 -1
- package/dist/upgrade/index.d.ts.map +0 -1
- package/dist/upgrade/lifecycle.context.d.ts.map +0 -1
- package/dist/upgrade/lifecycle.d.ts.map +0 -1
- package/dist/upgrade/pathHandle.d.ts.map +0 -1
- package/dist/utils/bootSession.context.d.ts.map +0 -1
- package/dist/utils/bootSession.d.ts.map +0 -1
- package/dist/utils/chromeFetch.d.ts.map +0 -1
- package/dist/utils/cliOutput.d.ts.map +0 -1
- package/dist/utils/clock.d.ts +0 -15
- package/dist/utils/clock.d.ts.map +0 -1
- package/dist/utils/clock.js +0 -31
- package/dist/utils/clock.js.map +0 -1
- package/dist/utils/debugFilter.d.ts.map +0 -1
- package/dist/utils/delay.d.ts.map +0 -1
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/evaluate.d.ts.map +0 -1
- package/dist/utils/ffmpeg.context.d.ts.map +0 -1
- package/dist/utils/ffmpeg.d.ts.map +0 -1
- package/dist/utils/fileLogger.d.ts.map +0 -1
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/logEmitter.d.ts.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/m3u.d.ts.map +0 -1
- package/dist/utils/markup.d.ts.map +0 -1
- package/dist/utils/memo.d.ts.map +0 -1
- package/dist/utils/morganStream.d.ts.map +0 -1
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/pid.d.ts.map +0 -1
- package/dist/utils/platform.d.ts.map +0 -1
- package/dist/utils/processInspector.context.d.ts.map +0 -1
- package/dist/utils/processInspector.d.ts.map +0 -1
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/runtimeIdentity.context.d.ts.map +0 -1
- package/dist/utils/runtimeIdentity.d.ts.map +0 -1
- package/dist/utils/sanitize.d.ts.map +0 -1
- package/dist/utils/streamContext.d.ts.map +0 -1
- package/dist/utils/timing.d.ts.map +0 -1
- package/dist/utils/version.d.ts.map +0 -1
package/dist/hdhr/udp.d.ts
CHANGED
|
@@ -40,4 +40,3 @@ export declare function createUdpSurface(): UdpSurface;
|
|
|
40
40
|
* @returns The selected local IPv4 address.
|
|
41
41
|
*/
|
|
42
42
|
export declare function selectLanAddress(targetAddress: string, interfaces?: NodeJS.Dict<NetworkInterfaceInfo[]>): string;
|
|
43
|
-
//# sourceMappingURL=udp.d.ts.map
|
package/dist/hdhr/udp.js
CHANGED
|
@@ -15,13 +15,12 @@
|
|
|
15
15
|
* HDHR or another emulator on the same host) is logged at warn level and treated as graceful "discovery not available" rather than a startup failure - the HTTP
|
|
16
16
|
* HDHR surface keeps working in that scenario, only LAN auto-detect is lost.
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
18
|
+
import { HDHR_WILDCARD, PACKET_UPGRADE_REQUEST, buildDiscoverReply, buildErrorReply, buildGetReply, parsePacket } from "./protocol.js";
|
|
19
|
+
import { LOG, getPackageVersion, isCategoryEnabled } from "../utils/index.js";
|
|
20
20
|
import { CONFIG } from "../config/index.js";
|
|
21
21
|
import { HDHR_DEVICE_TYPE_TUNER } from "./identity.js";
|
|
22
22
|
import { createSocket } from "node:dgram";
|
|
23
23
|
import { formatError } from "../utils/errors.js";
|
|
24
|
-
import { getPackageVersion } from "../utils/index.js";
|
|
25
24
|
import { getTunerStates } from "./tunerState.js";
|
|
26
25
|
import { networkInterfaces } from "node:os";
|
|
27
26
|
import { resolveGet } from "./getHandlers.js";
|
|
@@ -135,13 +134,26 @@ function handlePacket(socket, msg, rinfo, httpPortProvider) {
|
|
|
135
134
|
}
|
|
136
135
|
switch (parsed.type) {
|
|
137
136
|
case "discover": {
|
|
137
|
+
const deviceId = parseDeviceId(CONFIG.hdhr.deviceId);
|
|
138
|
+
/* Answer only a request this device is actually addressed by. A Discover request carries a device-type filter and a device-id filter, each defaulting to the
|
|
139
|
+
* wildcard when the client sends neither, and a reply to a request aimed at another device type or another device would enrol PrismCast in a lineup the
|
|
140
|
+
* client never asked for - a client discovering a specific tuner would see two answers and could bind to the wrong one.
|
|
141
|
+
*
|
|
142
|
+
* The zero fallback in parseDeviceId cannot make a foreign request match here: ensureDeviceId writes a checksum-valid id into CONFIG before the UDP surface
|
|
143
|
+
* comes up, so a request targeting id zero matches no live device.
|
|
144
|
+
*/
|
|
145
|
+
if (((parsed.requestedDeviceType !== HDHR_WILDCARD) && (parsed.requestedDeviceType !== HDHR_DEVICE_TYPE_TUNER)) ||
|
|
146
|
+
((parsed.requestedDeviceId !== HDHR_WILDCARD) && (parsed.requestedDeviceId !== deviceId))) {
|
|
147
|
+
logDispatch("discover-ignored", rinfo, { requestedDeviceId: parsed.requestedDeviceId, requestedDeviceType: parsed.requestedDeviceType });
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
138
150
|
// Advertise the HTTP server's live bound port when known, falling back to CONFIG.hdhr.port. The provider reflects reality even when a rejected port
|
|
139
151
|
// change has left HTTP on its prior port while CONFIG holds the new value.
|
|
140
152
|
const advertisedPort = httpPortProvider?.() ?? CONFIG.hdhr.port;
|
|
141
153
|
const baseUrl = "http://" + selectLanAddress(rinfo.address) + ":" + String(advertisedPort);
|
|
142
154
|
const reply = buildDiscoverReply({
|
|
143
155
|
baseUrl,
|
|
144
|
-
deviceId
|
|
156
|
+
deviceId,
|
|
145
157
|
deviceType: HDHR_DEVICE_TYPE_TUNER,
|
|
146
158
|
tunerCount: CONFIG.streaming.maxConcurrentStreams
|
|
147
159
|
});
|
package/dist/hdhr/udp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"udp.js","sourceRoot":"","sources":["../../src/hdhr/udp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"udp.js","sourceRoot":"","sources":["../../src/hdhr/udp.ts"],"names":[],"mappings":"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"}
|
package/dist/identity.d.ts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
// the background-services stack in app.ts and the resource stacks in the stream setup path - reads a global that exists. It must be the first import here, before
|
|
8
8
|
// any module that constructs one evaluates, and every launch path (the bin wrapper, the Docker entrypoint, the platform services) funnels through this file.
|
|
9
9
|
import "homebridge-plugin-utils/polyfills";
|
|
10
|
-
import { CONFIG_METADATA, DEFAULTS, getNestedValue } from "./config/userConfig.js";
|
|
10
|
+
import { CONFIG_METADATA, DEFAULTS, getEnvOverrideValue, getNestedValue } from "./config/userConfig.js";
|
|
11
11
|
import { LOG, formatError, getPackageVersion, initDebugFilter, setDebugLogging } from "./utils/index.js";
|
|
12
|
-
import { getDebugEnv, initializeDataDir } from "./config/paths.js";
|
|
12
|
+
import { getDebugEnv, getStartupLogFilePath, initializeDataDir } from "./config/paths.js";
|
|
13
13
|
import { isGracefulShutdown, killStaleChrome } from "./browser/index.js";
|
|
14
14
|
import { releaseInstanceSlot, startServer } from "./app.js";
|
|
15
15
|
import { flushLogBufferSync } from "./utils/fileLogger.js";
|
|
@@ -280,6 +280,10 @@ else {
|
|
|
280
280
|
else if (parsedArgs.debugLogging) {
|
|
281
281
|
setDebugLogging(true);
|
|
282
282
|
}
|
|
283
|
+
// The environment's contribution to the log path, read once here rather than inside a handler that must stay synchronous. The path arm of the environment
|
|
284
|
+
// parser yields a string or null and never another type, so anything else is the absence of an override.
|
|
285
|
+
const override = getEnvOverrideValue("paths.logFile");
|
|
286
|
+
const envLogFile = (typeof override === "string") ? override : null;
|
|
283
287
|
/* Safety net for server exit paths. When the process exits - whether via process.exit(1) from a fatal startup error, an unrecoverable exception, or any other
|
|
284
288
|
* termination - we ensure Chrome processes are cleaned up and buffered log entries are flushed to disk. Without this, fatal exits during startup (e.g., capture
|
|
285
289
|
* probe timeout) silently orphan Chrome processes and lose diagnostic messages that are still in the file logger's write buffer.
|
|
@@ -290,11 +294,14 @@ else {
|
|
|
290
294
|
*
|
|
291
295
|
* This is registered only in the server branch - not for service subcommands like `prismcast service status`. Running killStaleChrome() from a service
|
|
292
296
|
* subcommand would kill Chrome belonging to the running PrismCast server instance.
|
|
297
|
+
*
|
|
298
|
+
* An exit before the file logger initialized lands the startup lines it buffered at the command line's log file, else the environment's, else the data
|
|
299
|
+
* directory's default; console mode passes no path at all, because its lines go straight to the console and never enter the buffer.
|
|
293
300
|
*/
|
|
294
301
|
process.on("exit", () => {
|
|
295
302
|
// Flush logs first - this is the critical operation. The error messages from a failed startup are sitting in the write buffer and must reach disk before the
|
|
296
303
|
// process terminates. Chrome will die when its pipes break since the parent is exiting; killing it explicitly is belt-and-suspenders.
|
|
297
|
-
flushLogBufferSync();
|
|
304
|
+
flushLogBufferSync(parsedArgs.consoleLogging ? undefined : getStartupLogFilePath(parsedArgs.logFile, envLogFile));
|
|
298
305
|
try {
|
|
299
306
|
releaseInstanceSlot();
|
|
300
307
|
// killStaleChrome is safe to call unconditionally now: the ownership filter inside it (parent-pid match or parent-pid dead) excludes Chrome belonging to
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,kKAAkK;AAClK,mKAAmK;AACnK,kKAAkK;AAClK,6JAA6J;AAC7J,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import type { Clock } from "homebridge-plugin-utils";
|
|
1
2
|
import type { Nullable } from "../types/index.ts";
|
|
2
3
|
/**
|
|
3
4
|
* Options for inferring codec metadata from a media playlist.
|
|
4
5
|
*/
|
|
5
6
|
export interface InferMediaCodecOptions {
|
|
6
|
-
baseUrl: string;
|
|
7
|
-
|
|
7
|
+
readonly baseUrl: string;
|
|
8
|
+
readonly clock?: Clock;
|
|
9
|
+
readonly playlistBody: string;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
12
|
* Inferred codec metadata from a media playlist's first segment.
|
|
@@ -38,8 +40,7 @@ export declare function inferCodecFromTsBuffer(buffer: Buffer): Nullable<string>
|
|
|
38
40
|
* playlist has no segments, the segment cannot be fetched, or the segment format is unrecognized. Currently supports MPEG-TS segments via PAT/PMT walk; fMP4
|
|
39
41
|
* segment inference (via #EXT-X-MAP and parseMoovCodecConfig) is a future extension.
|
|
40
42
|
*
|
|
41
|
-
* @param options - The playlist body
|
|
43
|
+
* @param options - The playlist body, its base URL, and the clock the segment-prefix fetch's bound arms on.
|
|
42
44
|
* @returns The inferred codec metadata.
|
|
43
45
|
*/
|
|
44
46
|
export declare function inferMediaCodec(options: InferMediaCodecOptions): Promise<InferredCodec>;
|
|
45
|
-
//# sourceMappingURL=codecInference.d.ts.map
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
*
|
|
3
3
|
* codecInference.ts: Inference of the video codec carried by an HLS media playlist by parsing the first segment.
|
|
4
4
|
*/
|
|
5
|
-
import { LOG, chromeFetch } from "../utils/index.js";
|
|
6
|
-
import {
|
|
5
|
+
import { LOG, chromeFetch, resolveUrl, timeoutSignal } from "../utils/index.js";
|
|
6
|
+
import { systemClock } from "homebridge-plugin-utils";
|
|
7
7
|
/* Media-only HLS playlists do not declare codec information - that lives in the master playlist's #EXT-X-STREAM-INF CODECS attribute, which the master-playlist
|
|
8
8
|
* resolver consumes today. For media-only feeds (no master playlist exists), the codec must be inferred from the segments themselves so the MediaFeed surfaces
|
|
9
9
|
* the same codec/resolution metadata regardless of which playlist kind arrived. This module provides the inference path for media-only playlists.
|
|
@@ -311,13 +311,15 @@ async function readStreamPrefix(response, limit) {
|
|
|
311
311
|
* fetch error so the inference can fail gracefully back to a null codec label.
|
|
312
312
|
*
|
|
313
313
|
* @param url - The absolute segment URL.
|
|
314
|
+
* @param clock - The clock this fetch's bound arms on.
|
|
314
315
|
* @returns The fetched prefix, or null on failure.
|
|
315
316
|
*/
|
|
316
|
-
async function fetchSegmentPrefix(url) {
|
|
317
|
+
async function fetchSegmentPrefix(url, clock) {
|
|
318
|
+
const bound = timeoutSignal(SEGMENT_PROBE_TIMEOUT_MS, { clock });
|
|
317
319
|
try {
|
|
318
320
|
const response = await chromeFetch(url, {
|
|
319
321
|
headers: { Range: "bytes=0-" + String(MAX_SEGMENT_PROBE_BYTES - 1) },
|
|
320
|
-
signal:
|
|
322
|
+
signal: bound.signal
|
|
321
323
|
});
|
|
322
324
|
// Accept both 206 Partial Content (Range honored) and 200 OK (Range ignored or unsupported); both deliver bytes the parser can use.
|
|
323
325
|
if (!response.ok && (response.status !== 206)) {
|
|
@@ -334,17 +336,20 @@ async function fetchSegmentPrefix(url) {
|
|
|
334
336
|
LOG.debug("native:codec", "Segment prefix fetch error: %s.", String(error));
|
|
335
337
|
return null;
|
|
336
338
|
}
|
|
339
|
+
finally {
|
|
340
|
+
bound.cancel();
|
|
341
|
+
}
|
|
337
342
|
}
|
|
338
343
|
/**
|
|
339
344
|
* Infers codec metadata from a media playlist by fetching the prefix of the first segment and parsing it. Returns an InferredCodec with codec=null when the
|
|
340
345
|
* playlist has no segments, the segment cannot be fetched, or the segment format is unrecognized. Currently supports MPEG-TS segments via PAT/PMT walk; fMP4
|
|
341
346
|
* segment inference (via #EXT-X-MAP and parseMoovCodecConfig) is a future extension.
|
|
342
347
|
*
|
|
343
|
-
* @param options - The playlist body
|
|
348
|
+
* @param options - The playlist body, its base URL, and the clock the segment-prefix fetch's bound arms on.
|
|
344
349
|
* @returns The inferred codec metadata.
|
|
345
350
|
*/
|
|
346
351
|
export async function inferMediaCodec(options) {
|
|
347
|
-
const { baseUrl, playlistBody } = options;
|
|
352
|
+
const { baseUrl, clock = systemClock, playlistBody } = options;
|
|
348
353
|
const segUrl = findFirstSegmentUrl(playlistBody, baseUrl);
|
|
349
354
|
if (!segUrl) {
|
|
350
355
|
return { codec: null };
|
|
@@ -356,7 +361,7 @@ export async function inferMediaCodec(options) {
|
|
|
356
361
|
LOG.debug("native:codec", "Skipping codec inference for non-TS segment: %s.", segPath.slice(0, 120));
|
|
357
362
|
return { codec: null };
|
|
358
363
|
}
|
|
359
|
-
const buffer = await fetchSegmentPrefix(segUrl);
|
|
364
|
+
const buffer = await fetchSegmentPrefix(segUrl, clock);
|
|
360
365
|
if (!buffer) {
|
|
361
366
|
return { codec: null };
|
|
362
367
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codecInference.js","sourceRoot":"","sources":["../../src/native/codecInference.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"codecInference.js","sourceRoot":"","sources":["../../src/native/codecInference.ts"],"names":[],"mappings":"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"}
|
package/dist/native/decrypt.d.ts
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
+
import type { Clock } from "homebridge-plugin-utils";
|
|
1
2
|
import type { Nullable } from "../types/index.ts";
|
|
3
|
+
/**
|
|
4
|
+
* What a key fetch needs beyond the key's own URL: the time source its bound arms on, and the caller's own cancellation.
|
|
5
|
+
*/
|
|
6
|
+
export interface KeyFetchOptions {
|
|
7
|
+
readonly clock?: Clock;
|
|
8
|
+
readonly signal?: AbortSignal;
|
|
9
|
+
}
|
|
2
10
|
/**
|
|
3
11
|
* Fetches an AES-128 decryption key from the given URL. The caller may supply a cancellation signal, which is composed with this fetch's own timeout so the key
|
|
4
12
|
* ends on whichever arrives first - the caller's teardown or the timeout. Cancellation is the caller's policy and the timeout is this fetcher's, so neither has
|
|
5
13
|
* to know about the other: a caller with nothing to cancel simply omits the signal and gets the timeout alone.
|
|
6
14
|
*
|
|
7
15
|
* @param keyUrl - The key URL from the #EXT-X-KEY URI attribute.
|
|
8
|
-
* @param
|
|
16
|
+
* @param options - The clock the key fetch's bound arms on and the caller's cancellation signal, composed with that bound.
|
|
9
17
|
* @returns The 16-byte decryption key, or null if the fetch fails.
|
|
10
18
|
*/
|
|
11
|
-
export declare function fetchDecryptionKey(keyUrl: string,
|
|
19
|
+
export declare function fetchDecryptionKey(keyUrl: string, options?: KeyFetchOptions): Promise<Nullable<Buffer>>;
|
|
12
20
|
/**
|
|
13
21
|
* Decrypts an AES-128-CBC encrypted HLS segment.
|
|
14
22
|
*
|
|
@@ -33,4 +41,3 @@ export declare function deriveIvFromSequence(mediaSequence: number): Buffer;
|
|
|
33
41
|
* @returns The 16-byte IV Buffer, or null if parsing fails.
|
|
34
42
|
*/
|
|
35
43
|
export declare function parseExplicitIv(ivHex: string): Nullable<Buffer>;
|
|
36
|
-
//# sourceMappingURL=decrypt.d.ts.map
|
package/dist/native/decrypt.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
*
|
|
3
3
|
* decrypt.ts: AES-128 key fetching and segment decryption for native HLS streaming.
|
|
4
4
|
*/
|
|
5
|
-
import { LOG, chromeFetch } from "../utils/index.js";
|
|
5
|
+
import { LOG, chromeFetch, timeoutSignal } from "../utils/index.js";
|
|
6
6
|
import { createDecipheriv } from "node:crypto";
|
|
7
7
|
/* AES-128-CBC decryption for HLS segments. The HLS spec defines AES-128 encryption where each segment is encrypted with a 16-byte key using AES-128-CBC mode. The
|
|
8
8
|
* initialization vector (IV) is either explicitly provided in the #EXT-X-KEY tag or derived from the media sequence number per the HLS specification (RFC 8216
|
|
@@ -19,13 +19,14 @@ const KEY_FETCH_TIMEOUT = 10000;
|
|
|
19
19
|
* to know about the other: a caller with nothing to cancel simply omits the signal and gets the timeout alone.
|
|
20
20
|
*
|
|
21
21
|
* @param keyUrl - The key URL from the #EXT-X-KEY URI attribute.
|
|
22
|
-
* @param
|
|
22
|
+
* @param options - The clock the key fetch's bound arms on and the caller's cancellation signal, composed with that bound.
|
|
23
23
|
* @returns The 16-byte decryption key, or null if the fetch fails.
|
|
24
24
|
*/
|
|
25
|
-
export async function fetchDecryptionKey(keyUrl,
|
|
25
|
+
export async function fetchDecryptionKey(keyUrl, options = {}) {
|
|
26
|
+
const { clock, signal } = options;
|
|
27
|
+
const bound = timeoutSignal(KEY_FETCH_TIMEOUT, { clock });
|
|
26
28
|
try {
|
|
27
|
-
const
|
|
28
|
-
const response = await chromeFetch(keyUrl, { signal: abortSignal ? AbortSignal.any([abortSignal, timeout]) : timeout });
|
|
29
|
+
const response = await chromeFetch(keyUrl, { signal: signal ? AbortSignal.any([signal, bound.signal]) : bound.signal });
|
|
29
30
|
if (!response.ok) {
|
|
30
31
|
LOG.debug("native:decrypt", "Decryption key fetch failed with HTTP %s.", response.status);
|
|
31
32
|
return null;
|
|
@@ -42,6 +43,9 @@ export async function fetchDecryptionKey(keyUrl, abortSignal) {
|
|
|
42
43
|
LOG.debug("native:decrypt", "Decryption key fetch error: %s.", String(error));
|
|
43
44
|
return null;
|
|
44
45
|
}
|
|
46
|
+
finally {
|
|
47
|
+
bound.cancel();
|
|
48
|
+
}
|
|
45
49
|
}
|
|
46
50
|
/**
|
|
47
51
|
* Decrypts an AES-128-CBC encrypted HLS segment.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decrypt.js","sourceRoot":"","sources":["../../src/native/decrypt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"decrypt.js","sourceRoot":"","sources":["../../src/native/decrypt.ts"],"names":[],"mappings":"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"}
|
package/dist/native/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { MediaContainer, Nullable } from "../types/index.ts";
|
|
2
2
|
import type { ProbeCacheIdentity } from "./probe.ts";
|
|
3
3
|
import type { CaptureCodec } from "../streaming/codec.ts";
|
|
4
|
+
import type { Clock } from "homebridge-plugin-utils";
|
|
4
5
|
import type { ManifestInterceptionResult } from "../browser/manifestInterceptor.ts";
|
|
5
6
|
import type { NativeProxy } from "./proxy.ts";
|
|
6
7
|
import type { Page } from "puppeteer-core";
|
|
@@ -8,19 +9,20 @@ import type { Page } from "puppeteer-core";
|
|
|
8
9
|
* Options for attempting native streaming.
|
|
9
10
|
*/
|
|
10
11
|
export interface AttemptNativeStreamingOptions {
|
|
11
|
-
channelName: string;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
readonly channelName: string;
|
|
13
|
+
readonly clock?: Clock;
|
|
14
|
+
readonly interceptionPromise: Promise<Nullable<ManifestInterceptionResult>>;
|
|
15
|
+
readonly mpegTsClient?: boolean;
|
|
16
|
+
readonly onError: (error: string) => void;
|
|
17
|
+
readonly onFeedApplied?: (metadata: RefreshedFeedMetadata) => void;
|
|
18
|
+
readonly page: Page;
|
|
19
|
+
readonly prerollCodec?: CaptureCodec;
|
|
20
|
+
readonly prerollSegmentCount?: number;
|
|
21
|
+
readonly probeIdentity: ProbeCacheIdentity;
|
|
22
|
+
readonly reestablishManifest: (page: Page) => Promise<Nullable<ManifestInterceptionResult>>;
|
|
23
|
+
readonly streamId: number;
|
|
24
|
+
readonly streamIdStr: string;
|
|
25
|
+
readonly url: string;
|
|
24
26
|
}
|
|
25
27
|
/**
|
|
26
28
|
* Result of a successful native streaming attempt.
|
|
@@ -54,15 +56,16 @@ export declare function attemptNativeStreaming(options: AttemptNativeStreamingOp
|
|
|
54
56
|
* Options for refreshing a native stream's manifest.
|
|
55
57
|
*/
|
|
56
58
|
interface ManifestRefreshOptions {
|
|
57
|
-
channelName: string;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
readonly channelName: string;
|
|
60
|
+
readonly clock: Clock;
|
|
61
|
+
readonly masterUrl?: string;
|
|
62
|
+
readonly onFeedApplied?: (metadata: RefreshedFeedMetadata) => void;
|
|
63
|
+
readonly page: Page;
|
|
64
|
+
readonly probeIdentity: ProbeCacheIdentity;
|
|
65
|
+
readonly proxy: NativeProxy;
|
|
66
|
+
readonly reestablishManifest: (page: Page) => Promise<Nullable<ManifestInterceptionResult>>;
|
|
67
|
+
readonly streamIdStr: string;
|
|
68
|
+
readonly url: string;
|
|
66
69
|
}
|
|
67
70
|
/**
|
|
68
71
|
* Refreshes a native stream's manifest to obtain fresh auth tokens, serialized across callers and re-armed when an attempt fails.
|
|
@@ -73,7 +76,7 @@ interface ManifestRefreshOptions {
|
|
|
73
76
|
* back here.
|
|
74
77
|
*
|
|
75
78
|
* A failed refresh on a live proxy warns and re-arms itself with a doubling delay bounded by the refresh margin, so one transient failure cannot leave a stream
|
|
76
|
-
* with no proactive refresh for the rest of its life. The retry
|
|
79
|
+
* with no proactive refresh for the rest of its life. The retry uses the proxy's single timer slot, the same one the boundary schedule uses.
|
|
77
80
|
*
|
|
78
81
|
* @param options - Refresh options. masterUrl is optional - when provided, direct fetch is attempted first. probeIdentity is the stream's own, so the probe on
|
|
79
82
|
* either strategy reads and writes the cache under the identity the tune established.
|
|
@@ -81,4 +84,3 @@ interface ManifestRefreshOptions {
|
|
|
81
84
|
*/
|
|
82
85
|
export declare function refreshNativeManifest(options: ManifestRefreshOptions): Promise<boolean>;
|
|
83
86
|
export {};
|
|
84
|
-
//# sourceMappingURL=index.d.ts.map
|