prismcast 1.9.0 → 1.10.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 +1 -1
- package/dist/app.js +27 -9
- package/dist/app.js.map +1 -1
- package/dist/browser/cdp.js +7 -7
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +41 -11
- package/dist/browser/channelSelection.js +75 -24
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/display.d.ts +1 -1
- package/dist/browser/index.d.ts +8 -8
- package/dist/browser/index.js +42 -43
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/login.d.ts +2 -2
- package/dist/browser/login.js +1 -1
- package/dist/browser/manifestInterceptor.d.ts +77 -0
- package/dist/browser/manifestInterceptor.js +323 -0
- package/dist/browser/manifestInterceptor.js.map +1 -0
- package/dist/browser/precaching.js +4 -4
- package/dist/browser/tuning/comcastPolymer.d.ts +1 -1
- package/dist/browser/tuning/cox.d.ts +1 -1
- package/dist/browser/tuning/directv.d.ts +1 -1
- package/dist/browser/tuning/directv.js +61 -62
- package/dist/browser/tuning/directv.js.map +1 -1
- package/dist/browser/tuning/fox.d.ts +1 -1
- package/dist/browser/tuning/fox.js +171 -14
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/hbo.d.ts +1 -1
- package/dist/browser/tuning/hbo.js +6 -6
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.d.ts +1 -1
- package/dist/browser/tuning/hulu.js +117 -110
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/shared.d.ts +3 -3
- package/dist/browser/tuning/shared.js +5 -5
- package/dist/browser/tuning/sling.d.ts +1 -1
- package/dist/browser/tuning/sling.js +28 -28
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/spectrum.d.ts +1 -1
- package/dist/browser/tuning/spectrum.js +21 -22
- package/dist/browser/tuning/spectrum.js.map +1 -1
- package/dist/browser/tuning/thumbnailRow.d.ts +1 -1
- package/dist/browser/tuning/thumbnailRow.js +1 -1
- package/dist/browser/tuning/tileClick.d.ts +1 -1
- package/dist/browser/tuning/tileClick.js +5 -5
- package/dist/browser/tuning/xfinity.d.ts +1 -1
- package/dist/browser/tuning/youtubeTv.d.ts +1 -1
- package/dist/browser/tuning/youtubeTv.js +17 -18
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +20 -6
- package/dist/browser/video.js +30 -38
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.d.ts +1 -2
- package/dist/channels/index.js +73 -40
- package/dist/channels/index.js.map +1 -1
- package/dist/config/channelForm.d.ts +58 -0
- package/dist/config/channelForm.js +129 -0
- package/dist/config/channelForm.js.map +1 -0
- package/dist/config/consistencyProbe.d.ts +7 -0
- package/dist/config/consistencyProbe.js +143 -0
- package/dist/config/consistencyProbe.js.map +1 -0
- package/dist/config/health.d.ts +4 -3
- package/dist/config/health.js +75 -62
- package/dist/config/health.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +19 -12
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +9 -3
- package/dist/config/paths.js +12 -4
- package/dist/config/paths.js.map +1 -1
- package/dist/config/persistence.context.d.ts +8 -0
- package/dist/config/persistence.context.js +30 -0
- package/dist/config/persistence.context.js.map +1 -0
- package/dist/config/persistence.d.ts +110 -12
- package/dist/config/persistence.js +351 -32
- package/dist/config/persistence.js.map +1 -1
- package/dist/config/presets.d.ts +14 -4
- package/dist/config/presets.js +84 -75
- package/dist/config/presets.js.map +1 -1
- package/dist/config/profiles.d.ts +2 -2
- package/dist/config/profiles.js +7 -9
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/servicePacks.d.ts +2 -2
- package/dist/config/servicePacks.js +28 -28
- package/dist/config/servicePacks.js.map +1 -1
- package/dist/config/services.d.ts +62 -36
- package/dist/config/services.js +150 -136
- package/dist/config/services.js.map +1 -1
- package/dist/config/sites.d.ts +3 -3
- package/dist/config/sites.js +16 -16
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +500 -41
- package/dist/config/userChannels.js +1201 -312
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +103 -10
- package/dist/config/userConfig.js +277 -117
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +4 -2
- package/dist/config/userProfiles.js +72 -26
- package/dist/config/userProfiles.js.map +1 -1
- package/dist/hdhr/channelMap.js +8 -11
- package/dist/hdhr/channelMap.js.map +1 -1
- package/dist/hdhr/deviceId.js +10 -9
- package/dist/hdhr/deviceId.js.map +1 -1
- package/dist/hdhr/discover.js +4 -5
- package/dist/hdhr/discover.js.map +1 -1
- package/dist/hdhr/index.js +6 -10
- package/dist/hdhr/index.js.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/native/codecInference.d.ts +44 -0
- package/dist/native/codecInference.js +327 -0
- package/dist/native/codecInference.js.map +1 -0
- package/dist/native/decrypt.d.ts +1 -1
- package/dist/native/index.d.ts +5 -5
- package/dist/native/index.js +42 -64
- package/dist/native/index.js.map +1 -1
- package/dist/native/probe.d.ts +27 -9
- package/dist/native/probe.js +158 -67
- package/dist/native/probe.js.map +1 -1
- package/dist/native/proxy.d.ts +4 -2
- package/dist/native/proxy.js +52 -49
- package/dist/native/proxy.js.map +1 -1
- package/dist/native/tokenExpiry.d.ts +22 -0
- package/dist/native/tokenExpiry.js +153 -0
- package/dist/native/tokenExpiry.js.map +1 -0
- package/dist/routes/auth.js +6 -10
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/components.js +2 -2
- package/dist/routes/components.js.map +1 -1
- package/dist/routes/config/channels/endpoints/browse.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/browse.js +195 -0
- package/dist/routes/config/channels/endpoints/browse.js.map +1 -0
- package/dist/routes/config/channels/endpoints/bulk.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/bulk.js +128 -0
- package/dist/routes/config/channels/endpoints/bulk.js.map +1 -0
- package/dist/routes/config/channels/endpoints/crud.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/crud.js +504 -0
- package/dist/routes/config/channels/endpoints/crud.js.map +1 -0
- package/dist/routes/config/channels/endpoints/importExport.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/importExport.js +131 -0
- package/dist/routes/config/channels/endpoints/importExport.js.map +1 -0
- package/dist/routes/config/channels/endpoints/predefined.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/predefined.js +78 -0
- package/dist/routes/config/channels/endpoints/predefined.js.map +1 -0
- package/dist/routes/config/channels/endpoints/prefs.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/prefs.js +58 -0
- package/dist/routes/config/channels/endpoints/prefs.js.map +1 -0
- package/dist/routes/config/channels/endpoints/service.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/service.js +149 -0
- package/dist/routes/config/channels/endpoints/service.js.map +1 -0
- package/dist/routes/config/channels/endpoints/tags.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/tags.js +185 -0
- package/dist/routes/config/channels/endpoints/tags.js.map +1 -0
- package/dist/routes/config/channels/http/handler.d.ts +10 -0
- package/dist/routes/config/channels/http/handler.js +20 -0
- package/dist/routes/config/channels/http/handler.js.map +1 -0
- package/dist/routes/config/channels/http/playlistHint.d.ts +25 -0
- package/dist/routes/config/channels/http/playlistHint.js +40 -0
- package/dist/routes/config/channels/http/playlistHint.js.map +1 -0
- package/dist/routes/config/channels/http/serviceWarning.d.ts +10 -0
- package/dist/routes/config/channels/http/serviceWarning.js +28 -0
- package/dist/routes/config/channels/http/serviceWarning.js.map +1 -0
- package/dist/routes/config/channels/index.d.ts +3 -3
- package/dist/routes/config/channels/index.js +1 -1
- package/dist/routes/config/channels/index.js.map +1 -1
- package/dist/routes/config/channels/{routes.d.ts → setup.d.ts} +1 -1
- package/dist/routes/config/channels/setup.js +23 -0
- package/dist/routes/config/channels/setup.js.map +1 -0
- package/dist/routes/config/channels/table.d.ts +9 -9
- package/dist/routes/config/channels/table.js +124 -76
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/http/envelope.d.ts +111 -0
- package/dist/routes/config/http/envelope.js +103 -0
- package/dist/routes/config/http/envelope.js.map +1 -0
- package/dist/routes/config/index.d.ts +9 -9
- package/dist/routes/config/index.js +2 -2
- package/dist/routes/config/index.js.map +1 -1
- package/dist/routes/config/services.js +69 -68
- package/dist/routes/config/services.js.map +1 -1
- package/dist/routes/config/settings.d.ts +1 -1
- package/dist/routes/config/settings.js +45 -38
- package/dist/routes/config/settings.js.map +1 -1
- package/dist/routes/debug.js +12 -11
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/icons.js +2 -2
- package/dist/routes/icons.js.map +1 -1
- package/dist/routes/logs.js +19 -30
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/mpegts.js +1 -1
- package/dist/routes/playlist.d.ts +1 -1
- package/dist/routes/playlist.js +37 -26
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/root/content.js +27 -6
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/index.js +2 -5
- package/dist/routes/root/index.js.map +1 -1
- package/dist/routes/root/scripts/channels.js +16 -16
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/config.js +59 -59
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/index.d.ts +4 -4
- package/dist/routes/root/scripts/shared.js +24 -10
- package/dist/routes/root/scripts/shared.js.map +1 -1
- package/dist/routes/root/scripts/status.d.ts +4 -0
- package/dist/routes/root/scripts/status.handlers.d.ts +182 -0
- package/dist/routes/root/scripts/status.handlers.js +713 -0
- package/dist/routes/root/scripts/status.handlers.js.map +1 -0
- package/dist/routes/root/scripts/status.js +86 -488
- package/dist/routes/root/scripts/status.js.map +1 -1
- package/dist/routes/root/styles.js +5 -5
- package/dist/routes/services.js +18 -15
- package/dist/routes/services.js.map +1 -1
- package/dist/routes/sse.d.ts +16 -0
- package/dist/routes/sse.js +29 -0
- package/dist/routes/sse.js.map +1 -0
- package/dist/routes/streams.js +10 -23
- package/dist/routes/streams.js.map +1 -1
- package/dist/routes/ui.d.ts +2 -2
- package/dist/routes/upgrade.js +6 -7
- package/dist/routes/upgrade.js.map +1 -1
- package/dist/service/commands.context.d.ts +6 -0
- package/dist/service/commands.context.js +47 -0
- package/dist/service/commands.context.js.map +1 -0
- package/dist/service/commands.d.ts +53 -8
- package/dist/service/commands.js +171 -188
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.context.d.ts +6 -0
- package/dist/service/generators.context.js +45 -0
- package/dist/service/generators.context.js.map +1 -0
- package/dist/service/generators.d.ts +56 -16
- package/dist/service/generators.js +499 -383
- package/dist/service/generators.js.map +1 -1
- package/dist/service/index.d.ts +2 -2
- package/dist/streaming/clients.d.ts +2 -2
- package/dist/streaming/clients.js +2 -2
- package/dist/streaming/codec.d.ts +2 -2
- package/dist/streaming/codec.js +0 -1
- package/dist/streaming/codec.js.map +1 -1
- package/dist/streaming/fmp4Segmenter.d.ts +2 -2
- package/dist/streaming/fmp4Segmenter.js +12 -12
- package/dist/streaming/hls.d.ts +3 -3
- package/dist/streaming/hls.js +81 -70
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsResume.d.ts +3 -3
- package/dist/streaming/hlsResume.js +5 -5
- package/dist/streaming/hlsSegments.d.ts +5 -2
- package/dist/streaming/hlsSegments.js +14 -9
- package/dist/streaming/hlsSegments.js.map +1 -1
- package/dist/streaming/monitor.d.ts +12 -12
- package/dist/streaming/monitor.js +80 -54
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +34 -4
- package/dist/streaming/mp4Parser.js +111 -29
- package/dist/streaming/mp4Parser.js.map +1 -1
- package/dist/streaming/mpegts.d.ts +1 -1
- package/dist/streaming/mpegts.js +13 -10
- package/dist/streaming/mpegts.js.map +1 -1
- package/dist/streaming/playlistBuilder.d.ts +1 -1
- package/dist/streaming/playlistBuilder.js +2 -2
- package/dist/streaming/preroll.d.ts +9 -9
- package/dist/streaming/preroll.js +39 -41
- package/dist/streaming/preroll.js.map +1 -1
- package/dist/streaming/pretune.js +4 -4
- package/dist/streaming/pretune.js.map +1 -1
- package/dist/streaming/recovery.d.ts +3 -3
- package/dist/streaming/recovery.js +4 -4
- package/dist/streaming/registry.d.ts +6 -6
- package/dist/streaming/setup.d.ts +9 -8
- package/dist/streaming/setup.js +97 -49
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.d.ts +9 -3
- package/dist/streaming/showInfo.js +26 -18
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +4 -4
- package/dist/streaming/statusEmitter.js +2 -2
- package/dist/types/channels.d.ts +133 -34
- package/dist/types/channels.js +39 -1
- package/dist/types/channels.js.map +1 -1
- package/dist/types/config.d.ts +20 -1
- package/dist/types/index.d.ts +9 -8
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +5 -4
- package/dist/types/selection.d.ts +48 -4
- package/dist/types/streaming.d.ts +1 -1
- package/dist/upgrade/commands.context.d.ts +6 -0
- package/dist/upgrade/commands.context.js +29 -0
- package/dist/upgrade/commands.context.js.map +1 -0
- package/dist/upgrade/commands.d.ts +29 -2
- package/dist/upgrade/commands.js +87 -134
- package/dist/upgrade/commands.js.map +1 -1
- package/dist/upgrade/detection.context.d.ts +6 -0
- package/dist/upgrade/detection.context.js +24 -0
- package/dist/upgrade/detection.context.js.map +1 -0
- package/dist/upgrade/detection.d.ts +140 -10
- package/dist/upgrade/detection.js +153 -66
- package/dist/upgrade/detection.js.map +1 -1
- package/dist/upgrade/index.d.ts +2 -2
- package/dist/utils/chromeFetch.d.ts +1 -1
- package/dist/utils/chromeFetch.js +1 -1
- package/dist/utils/clock.d.ts +14 -0
- package/dist/utils/clock.js +28 -0
- package/dist/utils/clock.js.map +1 -0
- package/dist/utils/debugFilter.d.ts +1 -1
- package/dist/utils/debugFilter.js +6 -4
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/delay.d.ts +2 -3
- package/dist/utils/delay.js +10 -16
- package/dist/utils/delay.js.map +1 -1
- package/dist/utils/evaluate.js +12 -14
- package/dist/utils/evaluate.js.map +1 -1
- package/dist/utils/ffmpeg.context.d.ts +6 -0
- package/dist/utils/ffmpeg.context.js +31 -0
- package/dist/utils/ffmpeg.context.js.map +1 -0
- package/dist/utils/ffmpeg.d.ts +85 -29
- package/dist/utils/ffmpeg.js +126 -129
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/fileLogger.d.ts +18 -2
- package/dist/utils/fileLogger.js +58 -30
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/format.d.ts +1 -1
- package/dist/utils/format.js +2 -2
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/html.js +1 -3
- package/dist/utils/html.js.map +1 -1
- package/dist/utils/index.d.ts +21 -20
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.js +16 -20
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/m3u.d.ts +18 -3
- package/dist/utils/m3u.js +28 -14
- package/dist/utils/m3u.js.map +1 -1
- package/dist/utils/memo.d.ts +19 -0
- package/dist/utils/memo.js +53 -0
- package/dist/utils/memo.js.map +1 -0
- package/dist/utils/morganStream.js +2 -2
- package/dist/utils/morganStream.js.map +1 -1
- package/dist/utils/pid.d.ts +2 -2
- package/dist/utils/pid.js +2 -2
- package/dist/utils/platform.d.ts +1 -1
- package/dist/utils/platform.js +3 -3
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/retry.d.ts +2 -0
- package/dist/utils/retry.js +9 -7
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/sanitize.d.ts +2 -2
- package/dist/utils/sanitize.js +4 -4
- package/dist/utils/timing.d.ts +6 -3
- package/dist/utils/timing.js +10 -6
- package/dist/utils/timing.js.map +1 -1
- package/dist/utils/version.d.ts +3 -2
- package/dist/utils/version.js +14 -27
- package/dist/utils/version.js.map +1 -1
- package/package.json +13 -7
- package/dist/native/intercept.d.ts +0 -35
- package/dist/native/intercept.js +0 -181
- package/dist/native/intercept.js.map +0 -1
- package/dist/routes/config/channels/routes.js +0 -1505
- package/dist/routes/config/channels/routes.js.map +0 -1
package/dist/browser/video.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
*
|
|
3
3
|
* video.ts: Video context and playback handling for PrismCast.
|
|
4
4
|
*/
|
|
5
|
-
import { EvaluateAbortError, LOG, delay, evaluateWithAbort, formatError, startTimer } from "../utils/index.js";
|
|
5
|
+
import { EvaluateAbortError, LOG, delay, evaluateWithAbort, formatError, raceWithTimeout, startTimer } from "../utils/index.js";
|
|
6
6
|
import { invalidateDirectUrl, resolveDirectUrl, selectChannel } from "./channelSelection.js";
|
|
7
7
|
import { CONFIG } from "../config/index.js";
|
|
8
8
|
/* These functions manage the video element lifecycle for streaming capture. The key challenges we solve:
|
|
@@ -23,10 +23,9 @@ import { CONFIG } from "../config/index.js";
|
|
|
23
23
|
* Object.defineProperty to intercept and ignore attempts to change these values.
|
|
24
24
|
*
|
|
25
25
|
* 6. Recovery escalation: When playback stalls, we use increasingly aggressive recovery techniques:
|
|
26
|
-
* - Level 1: Basic play/unmute -
|
|
27
|
-
* - Level 2:
|
|
28
|
-
* - Level 3:
|
|
29
|
-
* - Level 4: Full page navigation (handled in monitor.ts, not here).
|
|
26
|
+
* - Level 1: Basic play/unmute, fullscreen reapply - call play(), ensure audio is on, and reapply CSS-based fullscreen styling and dimensions.
|
|
27
|
+
* - Level 2: Reload source - reset video.src to empty, call load(), restore the original src, and let the player reinitialize.
|
|
28
|
+
* - Level 3: Full page navigation (handled in monitor.ts, not here).
|
|
30
29
|
*
|
|
31
30
|
* The video selector system uses a string type identifier ("selectReadyVideo" or "selectFirstVideo") that's passed to page.evaluate() and interpreted in the
|
|
32
31
|
* browser context. This avoids using eval() while still allowing dynamic video selection behavior.
|
|
@@ -72,8 +71,8 @@ export async function injectVideoSelector(page) {
|
|
|
72
71
|
});
|
|
73
72
|
}
|
|
74
73
|
// Fullscreen activation queue. Chrome's Fullscreen API requires the target tab to be in the foreground (focused). When multiple streams start concurrently, each
|
|
75
|
-
// tab must call page.bringToFront() before requestFullscreen()
|
|
76
|
-
// serialize the bringToFront
|
|
74
|
+
// tab must call page.bringToFront() before requestFullscreen() - but without serialization, tabs steal foreground from each other, causing silent failures. We
|
|
75
|
+
// serialize the bringToFront -> triggerFullscreen -> verify sequence using a promise chain so each tab gets exclusive foreground access during fullscreen activation.
|
|
77
76
|
let fullscreenQueue = Promise.resolve();
|
|
78
77
|
/**
|
|
79
78
|
* Gets the current state of the video element for health monitoring. Returns null if no video element is found.
|
|
@@ -136,7 +135,7 @@ async function muteExistingVideos(page) {
|
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
/**
|
|
139
|
-
* Suppresses audio on a browser page for native HLS streaming. Native mode fetches segments directly from the provider's CDN
|
|
138
|
+
* Suppresses audio on a browser page for native HLS streaming. Native mode fetches segments directly from the provider's CDN - the page's video element is not needed
|
|
140
139
|
* for content delivery, but the page stays alive for token refresh. Without suppression, the video continues playing audibly on the local machine.
|
|
141
140
|
*
|
|
142
141
|
* Uses two complementary mechanisms: (1) an immediate evaluate() to mute all currently playing video elements, and (2) an evaluateOnNewDocument() prototype override
|
|
@@ -148,7 +147,7 @@ async function muteExistingVideos(page) {
|
|
|
148
147
|
*/
|
|
149
148
|
export async function suppressPageAudio(page) {
|
|
150
149
|
// Override HTMLMediaElement.prototype.play to mute before playback. This runs before site JavaScript on all future navigations (including token refresh via
|
|
151
|
-
// page.goto), matching the pattern established in precaching.ts. The override persists on the same page instance
|
|
150
|
+
// page.goto), matching the pattern established in precaching.ts. The override persists on the same page instance - a new page created by tab replacement won't
|
|
152
151
|
// inherit it.
|
|
153
152
|
await page.evaluateOnNewDocument(() => {
|
|
154
153
|
// eslint-disable-next-line @typescript-eslint/unbound-method -- Prototype interception: originalPlay is captured here and invoked with .call(this) below.
|
|
@@ -317,7 +316,7 @@ export async function findVideoContext(page, profile) {
|
|
|
317
316
|
await page.waitForSelector("iframe", { timeout: CONFIG.streaming.videoTimeout });
|
|
318
317
|
// Poll for a video element to appear in any iframe. Complex embedded players (Brightcove, JW Player, etc.) load additional resources and scripts after the
|
|
319
318
|
// iframe element appears, so the video may not be immediately available. We retry the search with brief pauses, using the configured delay as the overall
|
|
320
|
-
// timeout ceiling. This replaces a fixed delay with early exit
|
|
319
|
+
// timeout ceiling. This replaces a fixed delay with early exit - if the video appears quickly, we proceed immediately.
|
|
321
320
|
const deadline = Date.now() + CONFIG.playback.iframeInitDelay;
|
|
322
321
|
let iframeSearchComplete = false;
|
|
323
322
|
let lastFrameCount = 0;
|
|
@@ -340,12 +339,12 @@ export async function findVideoContext(page, profile) {
|
|
|
340
339
|
}
|
|
341
340
|
}
|
|
342
341
|
catch (error) {
|
|
343
|
-
// AbortError means stream was terminated
|
|
342
|
+
// AbortError means stream was terminated - stop polling immediately.
|
|
344
343
|
if (error instanceof EvaluateAbortError) {
|
|
345
344
|
iframeSearchComplete = true;
|
|
346
345
|
break;
|
|
347
346
|
}
|
|
348
|
-
// Other errors (cross-origin, detached frame)
|
|
347
|
+
// Other errors (cross-origin, detached frame) - skip this frame and continue searching.
|
|
349
348
|
}
|
|
350
349
|
}
|
|
351
350
|
// Brief pause before re-checking. 200ms intervals provide responsive polling without excessive CDP overhead.
|
|
@@ -545,7 +544,7 @@ export async function lockVolumeProperties(context, selectorType) {
|
|
|
545
544
|
*/
|
|
546
545
|
export async function triggerFullscreen(page, context, profile, selectorType) {
|
|
547
546
|
// Try clicking a fullscreen button if configured. This fires before keyboard and API methods because clicking the site's own fullscreen control is the most
|
|
548
|
-
// reliable approach
|
|
547
|
+
// reliable approach - it uses the site's native mechanism. The element existence check guards against toggle buttons that have changed state or disappeared
|
|
549
548
|
// (e.g., after the player is already maximized). Keyboard and API methods serve as fallbacks below.
|
|
550
549
|
if (profile.fullscreenSelector) {
|
|
551
550
|
try {
|
|
@@ -649,7 +648,7 @@ async function isNativeFullscreenActive(context) {
|
|
|
649
648
|
/**
|
|
650
649
|
* Clicks the center of the video element to establish user activation in the browser. The Fullscreen API requires a recent user gesture (transient activation)
|
|
651
650
|
* to succeed. Without it, requestFullscreen() is silently rejected. This function provides that activation by clicking the video via page.mouse.click(), which
|
|
652
|
-
* dispatches real pointer events that Chrome recognizes as user gestures. The click may toggle play/pause on some players
|
|
651
|
+
* dispatches real pointer events that Chrome recognizes as user gestures. The click may toggle play/pause on some players - the health monitor handles
|
|
653
652
|
* re-starting playback if needed.
|
|
654
653
|
*
|
|
655
654
|
* Note: page.mouse.click() uses page-level coordinates, while getBoundingClientRect() in an iframe returns iframe-relative coordinates. This function works
|
|
@@ -674,7 +673,7 @@ async function clickVideoForActivation(page, context, selectorType) {
|
|
|
674
673
|
}
|
|
675
674
|
}
|
|
676
675
|
catch {
|
|
677
|
-
// Click failure is non-fatal
|
|
676
|
+
// Click failure is non-fatal - the fullscreen retry will continue without activation.
|
|
678
677
|
}
|
|
679
678
|
}
|
|
680
679
|
/**
|
|
@@ -736,7 +735,7 @@ async function applyAggressiveFullscreen(context, selectorType) {
|
|
|
736
735
|
}
|
|
737
736
|
/**
|
|
738
737
|
* Ensures the video is displayed fullscreen with verification and retry logic. For profiles that use the native Fullscreen API, this serializes through a
|
|
739
|
-
* promise-chain mutex so only one tab activates fullscreen at a time
|
|
738
|
+
* promise-chain mutex so only one tab activates fullscreen at a time - Chrome requires the tab to be in the foreground for requestFullscreen() to succeed, and
|
|
740
739
|
* concurrent tabs would steal foreground from each other. When skipNativeFullscreen is true (monitor recovery), the mutex is bypassed entirely.
|
|
741
740
|
* @param page - The Puppeteer page object for keyboard input.
|
|
742
741
|
* @param context - The frame or page containing the video element.
|
|
@@ -748,28 +747,21 @@ async function applyAggressiveFullscreen(context, selectorType) {
|
|
|
748
747
|
export async function ensureFullscreen(page, context, profile, selectorType, skipNativeFullscreen) {
|
|
749
748
|
const useNativeFullscreen = profile.useRequestFullscreen && !skipNativeFullscreen;
|
|
750
749
|
// Inject a persistent stylesheet to hide site-specific overlay elements (e.g., player control bars, toolbars) that would otherwise appear in the captured stream.
|
|
751
|
-
// The style tag persists for the page lifetime and is idempotent
|
|
750
|
+
// The style tag persists for the page lifetime and is idempotent - duplicate injections from recovery calls are harmless since CSS rules are deduplicated.
|
|
752
751
|
if (profile.hideSelector) {
|
|
753
752
|
const css = profile.hideSelector + " { display: none !important; }";
|
|
754
753
|
await page.addStyleTag({ content: css }).catch(() => { });
|
|
755
754
|
}
|
|
756
|
-
// CSS-only path (monitor recovery or profiles without native fullscreen). No serialization needed
|
|
755
|
+
// CSS-only path (monitor recovery or profiles without native fullscreen). No serialization needed - CSS styling works fine from background tabs.
|
|
757
756
|
if (!useNativeFullscreen) {
|
|
758
757
|
return runFullscreenSequence(page, context, profile, selectorType, false);
|
|
759
758
|
}
|
|
760
|
-
// Native fullscreen path. Serialize through the fullscreen queue so only one tab at a time goes through bringToFront
|
|
759
|
+
// Native fullscreen path. Serialize through the fullscreen queue so only one tab at a time goes through bringToFront -> requestFullscreen -> verify. Without
|
|
761
760
|
// this, concurrent streams steal foreground from each other and all fullscreen attempts silently fail.
|
|
762
761
|
const FULLSCREEN_QUEUE_TIMEOUT = 10000;
|
|
763
762
|
fullscreenQueue = fullscreenQueue.then(async () => {
|
|
764
763
|
try {
|
|
765
|
-
await
|
|
766
|
-
runFullscreenSequence(page, context, profile, selectorType, true),
|
|
767
|
-
new Promise((_, reject) => {
|
|
768
|
-
setTimeout(() => {
|
|
769
|
-
reject(new Error("Fullscreen queue entry timed out."));
|
|
770
|
-
}, FULLSCREEN_QUEUE_TIMEOUT);
|
|
771
|
-
})
|
|
772
|
-
]);
|
|
764
|
+
await raceWithTimeout(runFullscreenSequence(page, context, profile, selectorType, true), FULLSCREEN_QUEUE_TIMEOUT, new Error("Fullscreen queue entry timed out."));
|
|
773
765
|
}
|
|
774
766
|
catch (error) {
|
|
775
767
|
LOG.warn("Fullscreen queue entry failed: %s", formatError(error));
|
|
@@ -801,7 +793,7 @@ async function runFullscreenSequence(page, context, profile, selectorType, useNa
|
|
|
801
793
|
const verifyDelay = 200;
|
|
802
794
|
for (let attempt = 1; attempt <= maxSimpleRetries; attempt++) {
|
|
803
795
|
// On retry for fullscreenApi profiles, click the video to provide fresh user activation. The Fullscreen API requires a recent user gesture (transient
|
|
804
|
-
// activation) to succeed
|
|
796
|
+
// activation) to succeed - without it, requestFullscreen() is silently rejected. The initial attempt relies on activation from page navigation, but retries
|
|
805
797
|
// need an explicit click.
|
|
806
798
|
if ((attempt > 1) && useNativeFullscreen) {
|
|
807
799
|
// eslint-disable-next-line no-await-in-loop
|
|
@@ -862,7 +854,7 @@ async function runFullscreenSequence(page, context, profile, selectorType, useNa
|
|
|
862
854
|
if (!profile.fullscreenKey) {
|
|
863
855
|
await page.keyboard.type("f");
|
|
864
856
|
}
|
|
865
|
-
// Re-trigger the Fullscreen API after aggressive styling
|
|
857
|
+
// Re-trigger the Fullscreen API after aggressive styling - the aggressive CSS ensures the video fills the viewport, and the API call hides site UI. Bring the
|
|
866
858
|
// tab to foreground first, since other tabs may have stolen focus while we were escalating.
|
|
867
859
|
if (useNativeFullscreen) {
|
|
868
860
|
await page.bringToFront();
|
|
@@ -967,14 +959,14 @@ const DISMISS_POLL_INTERVAL = 500;
|
|
|
967
959
|
/**
|
|
968
960
|
* Polls for an intermittent modal element and clicks it if found. Runs as a fire-and-forget background task alongside waitForVideoReady() to catch modals that
|
|
969
961
|
* render after page load but before video starts playing. The first check is immediate (zero-wait), followed by up to DISMISS_POLL_DURATION of periodic rechecks.
|
|
970
|
-
* Once the modal is found and clicked (or the poll window expires), the function resolves silently
|
|
962
|
+
* Once the modal is found and clicked (or the poll window expires), the function resolves silently - it never throws.
|
|
971
963
|
* @param page - The Puppeteer page object.
|
|
972
964
|
* @param selector - The CSS selector for the modal element to dismiss.
|
|
973
965
|
*/
|
|
974
966
|
async function dismissModalPoll(page, selector) {
|
|
975
967
|
const checks = Math.ceil(DISMISS_POLL_DURATION / DISMISS_POLL_INTERVAL);
|
|
976
968
|
for (let i = 0; i < checks; i++) {
|
|
977
|
-
// Delay between checks, but not before the first one
|
|
969
|
+
// Delay between checks, but not before the first one - the first check is immediate.
|
|
978
970
|
if (i > 0) {
|
|
979
971
|
// eslint-disable-next-line no-await-in-loop
|
|
980
972
|
await delay(DISMISS_POLL_INTERVAL);
|
|
@@ -1011,12 +1003,12 @@ async function dismissModalPoll(page, selector) {
|
|
|
1011
1003
|
*
|
|
1012
1004
|
* @param page - The Puppeteer page object.
|
|
1013
1005
|
* @param profile - The site profile containing all behavior flags.
|
|
1014
|
-
* @param
|
|
1015
|
-
* the correct channel — only video detection, playback, and fullscreen setup are needed.
|
|
1006
|
+
* @param options - Optional behaviors. See InitializePlaybackOptions.
|
|
1016
1007
|
* @returns The video context (frame or page) for subsequent monitoring, and a directTune flag when the channel was tuned via API interception.
|
|
1017
1008
|
*/
|
|
1018
|
-
export async function initializePlayback(page, profile,
|
|
1009
|
+
export async function initializePlayback(page, profile, options = {}) {
|
|
1019
1010
|
const elapsed = startTimer();
|
|
1011
|
+
const { persistResolution, skipChannelSelection = false } = options;
|
|
1020
1012
|
// Mute any existing video elements to suppress wrong-channel audio during tuning. On SPA-based providers (Hulu, Fox, USA Network, etc.), a default livestream
|
|
1021
1013
|
// auto-plays when the page loads. Since the capture pipeline is already running, this audio bleeds into the stream until channel selection completes and
|
|
1022
1014
|
// ensurePlayback() unmutes the correct channel. For providers where no video exists yet, this is a harmless no-op.
|
|
@@ -1026,13 +1018,13 @@ export async function initializePlayback(page, profile, skipChannelSelection = f
|
|
|
1026
1018
|
// since the URL already targets the correct channel.
|
|
1027
1019
|
let directTune = false;
|
|
1028
1020
|
if (!skipChannelSelection) {
|
|
1029
|
-
let channelResult = await selectChannel(page, profile);
|
|
1021
|
+
let channelResult = await selectChannel(page, profile, { persistResolution });
|
|
1030
1022
|
if (!channelResult.success) {
|
|
1031
1023
|
// For guideGrid strategy, a stale overlay from a previous failed click attempt may be covering the guide. Dismiss it and retry channel selection once.
|
|
1032
1024
|
if (profile.channelSelection.strategy === "guideGrid") {
|
|
1033
1025
|
LOG.warn("Guide grid channel selection failed: %s. Dismissing overlay and retrying.", channelResult.reason ?? "Unknown reason");
|
|
1034
1026
|
await dismissGuideOverlay(page);
|
|
1035
|
-
channelResult = await selectChannel(page, profile);
|
|
1027
|
+
channelResult = await selectChannel(page, profile, { persistResolution });
|
|
1036
1028
|
}
|
|
1037
1029
|
if (!channelResult.success) {
|
|
1038
1030
|
throw new Error("Channel selection failed: " + (channelResult.reason ?? "Unknown reason."));
|
|
@@ -1060,7 +1052,7 @@ export async function initializePlayback(page, profile, skipChannelSelection = f
|
|
|
1060
1052
|
}
|
|
1061
1053
|
}
|
|
1062
1054
|
// Wait for video to be ready (readyState >= 3). This ensures enough data is buffered for playback to begin smoothly. If a dismissSelector is configured, launch
|
|
1063
|
-
// a background poll that checks for the modal during the first 5 seconds of the video wait. The poll is fire-and-forget
|
|
1055
|
+
// a background poll that checks for the modal during the first 5 seconds of the video wait. The poll is fire-and-forget - it never blocks the video wait. If the
|
|
1064
1056
|
// modal appears and is clicked, the video becomes unblocked and waitForVideoReady resolves normally.
|
|
1065
1057
|
if (profile.dismissSelector) {
|
|
1066
1058
|
void dismissModalPoll(page, profile.dismissSelector);
|
|
@@ -1103,7 +1095,7 @@ export async function tuneToChannel(page, url, profile) {
|
|
|
1103
1095
|
LOG.debug("timing:tune", "Using cached direct URL for %s.", profile.channelSelector ?? "unknown");
|
|
1104
1096
|
await navigateToPage(page, cachedUrl, profile);
|
|
1105
1097
|
LOG.debug("timing:tune", "Direct URL navigation complete. (+%sms)", tuneElapsed());
|
|
1106
|
-
const result = await initializePlayback(page, profile, true);
|
|
1098
|
+
const result = await initializePlayback(page, profile, { skipChannelSelection: true });
|
|
1107
1099
|
LOG.debug("timing:tune", "Tune complete (cached). Total: %sms.", tuneElapsed());
|
|
1108
1100
|
return result;
|
|
1109
1101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/browser/video.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/browser/video.ts"],"names":[],"mappings":"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"}
|
package/dist/channels/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { ChannelMap } from "../types/index.
|
|
2
|
-
export declare const CHANNEL_IDENTITY_FIELDS: Set<"name" | "channelNumber" | "hdhrEnabled" | "stationId" | "tags" | "logoUrl" | "guideTitle" | "tvgShift">;
|
|
1
|
+
import type { ChannelMap } from "../types/index.ts";
|
|
3
2
|
export declare const PREDEFINED_TAGS: readonly string[];
|
|
4
3
|
declare const CHANNELS: ChannelMap;
|
|
5
4
|
export { CHANNELS, CHANNELS as PREDEFINED_CHANNELS };
|
package/dist/channels/index.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
// identity/service-specific field separation used by: (1) applyVariantInheritance in services.ts (identity fields always come from the canonical),
|
|
3
|
-
// (2) startup migration in userChannels.ts (strips legacy identity fields from variant entries), and (3) DELTA_ALLOWED_FIELDS derivation (identity +
|
|
4
|
-
// service-specific editable fields). Adding a new identity field here automatically propagates to all three consumers.
|
|
5
|
-
export const CHANNEL_IDENTITY_FIELDS = new Set(["channelNumber", "guideTitle", "hdhrEnabled", "logoUrl", "name", "stationId", "tags", "tvgShift"]);
|
|
1
|
+
import { CHANNEL_BINDING_KEYS } from "../types/index.js";
|
|
6
2
|
// Predefined tag vocabulary. These tags ship with PrismCast and are assigned to predefined channel definitions below. Users can delete predefined tags from
|
|
7
3
|
// their registry (they're tracked in channels.json deletedTags) and create their own tags. The runtime vocabulary is: (PREDEFINED_TAGS - deletedTags) + userTags.
|
|
8
4
|
export const PREDEFINED_TAGS = ["Documentary", "Entertainment", "HBO", "Kids", "Lifestyle", "Local", "Movies", "News", "Showtime", "Sports", "Starz"];
|
|
@@ -2166,7 +2162,7 @@ function generatePacificDefinitions(definitions) {
|
|
|
2166
2162
|
continue;
|
|
2167
2163
|
}
|
|
2168
2164
|
const pacificKey = key + "p";
|
|
2169
|
-
// Manual Pacific definition takes precedence
|
|
2165
|
+
// Manual Pacific definition takes precedence - don't generate.
|
|
2170
2166
|
if (pacificKey in definitions) {
|
|
2171
2167
|
continue;
|
|
2172
2168
|
}
|
|
@@ -2188,7 +2184,6 @@ function generatePacificDefinitions(definitions) {
|
|
|
2188
2184
|
}
|
|
2189
2185
|
const eastKey = pacKey.slice(0, -1);
|
|
2190
2186
|
const eastDef = definitions[eastKey];
|
|
2191
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
2192
2187
|
if (!eastDef) {
|
|
2193
2188
|
continue;
|
|
2194
2189
|
}
|
|
@@ -2220,78 +2215,116 @@ function generatePacificDefinitions(definitions) {
|
|
|
2220
2215
|
* 2. Otherwise, services are sorted alphabetically by key. The first service populates the canonical entry. No variant key is emitted for it.
|
|
2221
2216
|
* 3. All remaining services produce variant entries keyed as "{key}-{slug}".
|
|
2222
2217
|
*
|
|
2223
|
-
*
|
|
2224
|
-
*
|
|
2218
|
+
* Canonical entries carry the full identity (name, stationId, channelNumber, tags, tvgShift) from the ChannelDefinition plus the canonical service's URL and
|
|
2219
|
+
* service-specific binding fields. Variant entries carry only service-specific binding fields (url, channelSelector, profile, etc.) plus canonicalKey pointing
|
|
2220
|
+
* at the canonical - identity inherits at resolution time from the (possibly user-overridden) canonical.
|
|
2221
|
+
*
|
|
2222
|
+
* Variants are pure tuning data: how to reach the channel via this service. Identity (channelNumber, hdhrEnabled, tags, etc.) is a user preference for the
|
|
2223
|
+
* channel as a whole and is not parameterized per service. ServiceVariant carries only binding fields; identity-shaped fields on user-stored variants are
|
|
2224
|
+
* possible at the type level for legacy data tolerance but are not produced by the predefined catalog.
|
|
2225
|
+
*
|
|
2226
|
+
* This shape makes variants first-class deltas against their canonical - the same treatment user-defined variants get in storage - so canonical overrides
|
|
2227
|
+
* propagate automatically to every variant without a separate runtime inheritance pass.
|
|
2225
2228
|
*/
|
|
2226
2229
|
function flattenChannelDefinitions(definitions) {
|
|
2227
2230
|
const channels = {};
|
|
2228
2231
|
for (const [key, def] of Object.entries(definitions)) {
|
|
2229
2232
|
const slugs = Object.keys(def.services).sort();
|
|
2230
|
-
|
|
2233
|
+
// Determine the canonical service: "site" wins, otherwise first alphabetically. The undefined branch also serves as the empty-services guard - a
|
|
2234
|
+
// ChannelDefinition with no services is skipped entirely.
|
|
2235
|
+
const firstSlug = slugs[0];
|
|
2236
|
+
if (firstSlug === undefined) {
|
|
2231
2237
|
continue;
|
|
2232
2238
|
}
|
|
2233
|
-
|
|
2234
|
-
const canonicalSlug = slugs.includes(SITE_KEY) ? SITE_KEY : slugs[0];
|
|
2239
|
+
const canonicalSlug = slugs.includes(SITE_KEY) ? SITE_KEY : firstSlug;
|
|
2235
2240
|
const canonicalVariant = def.services[canonicalSlug];
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
const canonicalEntry = buildFlatEntry(def, canonicalVariant);
|
|
2239
|
-
if (def.pacificStationId) {
|
|
2240
|
-
canonicalEntry.pacificStationId = def.pacificStationId;
|
|
2241
|
+
if (canonicalVariant === undefined) {
|
|
2242
|
+
continue;
|
|
2241
2243
|
}
|
|
2242
|
-
|
|
2244
|
+
// Build the canonical entry: identity from the definition plus the canonical service's binding (URL, channelSelector, profile, etc.). pacificStationId is
|
|
2245
|
+
// set only on the canonical - it drives Pacific auto-generation and is meaningless on variants.
|
|
2246
|
+
channels[key] = buildCanonicalEntry(def, canonicalVariant);
|
|
2243
2247
|
// Build variant entries for all non-canonical services. Each variant gets canonicalKey set to the definition key so that buildServiceGroups can group
|
|
2244
|
-
// channels by a single mechanism
|
|
2248
|
+
// channels by a single mechanism (scanning canonicalKey) regardless of whether the channel is predefined or user-defined. Identity inheritance happens at
|
|
2249
|
+
// resolution time from the canonical - variants only carry binding (tuning) data here.
|
|
2245
2250
|
for (const slug of slugs) {
|
|
2246
2251
|
if (slug === canonicalSlug) {
|
|
2247
2252
|
continue;
|
|
2248
2253
|
}
|
|
2249
2254
|
const variantKey = key + "-" + slug;
|
|
2250
2255
|
const variant = def.services[slug];
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2256
|
+
if (variant === undefined) {
|
|
2257
|
+
continue;
|
|
2258
|
+
}
|
|
2259
|
+
channels[variantKey] = buildVariantEntry(variant, key);
|
|
2254
2260
|
}
|
|
2255
2261
|
}
|
|
2256
2262
|
return channels;
|
|
2257
2263
|
}
|
|
2258
2264
|
/**
|
|
2259
|
-
* Builds
|
|
2260
|
-
*
|
|
2265
|
+
* Builds the canonical entry for a channel definition: identity fields (from the definition) plus the canonical service's binding (URL, channelSelector,
|
|
2266
|
+
* profile, etc.). The canonical is the entry where identity lives; variants inherit from it at resolution time.
|
|
2261
2267
|
* @param def - The parent ChannelDefinition with identity fields.
|
|
2262
|
-
* @param variant - The ServiceVariant with service-
|
|
2263
|
-
* @returns
|
|
2268
|
+
* @param variant - The canonical ServiceVariant with service-binding fields and URL.
|
|
2269
|
+
* @returns The canonical flat entry.
|
|
2264
2270
|
*/
|
|
2265
|
-
function
|
|
2271
|
+
function buildCanonicalEntry(def, variant) {
|
|
2266
2272
|
const entry = {
|
|
2267
2273
|
name: def.name,
|
|
2268
2274
|
url: variant.url
|
|
2269
2275
|
};
|
|
2270
|
-
// Identity fields from ChannelDefinition. pacificStationId is intentionally omitted here — it is set only on the canonical entry by the flattener.
|
|
2271
2276
|
if (def.stationId) {
|
|
2272
2277
|
entry.stationId = def.stationId;
|
|
2273
2278
|
}
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2279
|
+
if (def.pacificStationId) {
|
|
2280
|
+
entry.pacificStationId = def.pacificStationId;
|
|
2281
|
+
}
|
|
2282
|
+
// channelNumber comes from the ChannelDefinition (the canonical's user preference for lineup position). It is not per-service - ServiceVariant carries no
|
|
2283
|
+
// channelNumber field because the channel's lineup position is the channel's, not the service's.
|
|
2284
|
+
if (def.channelNumber !== undefined) {
|
|
2285
|
+
entry.channelNumber = def.channelNumber;
|
|
2278
2286
|
}
|
|
2279
|
-
// Tags from definition only (identity field, inherited by all variants).
|
|
2280
2287
|
if (def.tags) {
|
|
2281
2288
|
entry.tags = def.tags.slice();
|
|
2282
2289
|
}
|
|
2283
|
-
// tvgShift from definition only (not overridable per-variant).
|
|
2284
2290
|
if (def.tvgShift !== undefined) {
|
|
2285
2291
|
entry.tvgShift = def.tvgShift;
|
|
2286
2292
|
}
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2293
|
+
applyServiceBinding(entry, variant);
|
|
2294
|
+
return entry;
|
|
2295
|
+
}
|
|
2296
|
+
/**
|
|
2297
|
+
* Builds a variant entry: service-binding fields only, plus a canonicalKey reference to the parent canonical. Identity fields (name, stationId, channelNumber,
|
|
2298
|
+
* hdhrEnabled, tags, tvgShift, etc.) are intentionally absent and inherit from the canonical at resolution time. Variants are pure tuning data; identity is a
|
|
2299
|
+
* user preference for the channel as a whole and lives only on the canonical entry.
|
|
2300
|
+
* @param variant - The ServiceVariant with service-binding fields.
|
|
2301
|
+
* @param canonicalKey - The parent definition key.
|
|
2302
|
+
* @returns A variant entry typed as VariantChannel.
|
|
2303
|
+
*/
|
|
2304
|
+
function buildVariantEntry(variant, canonicalKey) {
|
|
2305
|
+
const entry = { canonicalKey, url: variant.url };
|
|
2306
|
+
applyServiceBinding(entry, variant);
|
|
2307
|
+
return entry;
|
|
2308
|
+
}
|
|
2309
|
+
/**
|
|
2310
|
+
* Copies service-binding fields from a ServiceVariant onto a CanonicalChannel or VariantChannel entry. The set of fields is CHANNEL_BINDING_KEYS minus "url"
|
|
2311
|
+
* (which is handled directly by callers because it is required and treated specially). Both entry shapes extend ChannelServiceBinding so each binding key is
|
|
2312
|
+
* a valid optional property on the entry.
|
|
2313
|
+
* @param entry - The target entry (canonical or variant).
|
|
2314
|
+
* @param variant - The ServiceVariant source.
|
|
2315
|
+
*/
|
|
2316
|
+
function applyServiceBinding(entry, variant) {
|
|
2317
|
+
for (const field of CHANNEL_BINDING_KEYS) {
|
|
2318
|
+
// url is handled directly by the caller (required field, set during entry construction).
|
|
2319
|
+
if (field === "url") {
|
|
2320
|
+
continue;
|
|
2321
|
+
}
|
|
2322
|
+
const value = variant[field];
|
|
2323
|
+
if (value === undefined) {
|
|
2324
|
+
continue;
|
|
2292
2325
|
}
|
|
2326
|
+
entry[field] = value;
|
|
2293
2327
|
}
|
|
2294
|
-
return entry;
|
|
2295
2328
|
}
|
|
2296
2329
|
// Compile the nested definitions into flat output.
|
|
2297
2330
|
// Pacific-generated entries take precedence over base entries because Step 2 of Pacific generation produces enhanced copies of manual Pacific definitions
|