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
|
@@ -1,26 +1,156 @@
|
|
|
1
|
+
import { LOG, evaluateWithAbort, formatError } from "../../utils/index.js";
|
|
1
2
|
import { CONFIG } from "../../config/index.js";
|
|
2
|
-
import { evaluateWithAbort } from "../../utils/index.js";
|
|
3
3
|
import { logAvailableChannels } from "./shared.js";
|
|
4
4
|
// Cached discovery results. Populated by the first discoverFoxChannels call (discovery endpoint). Fox tuning is stateless (no tuning cache exists), so only
|
|
5
5
|
// the discovery endpoint populates this cache. Cleared on browser disconnect via clearFoxCache().
|
|
6
6
|
let cachedDiscoveredChannels = null;
|
|
7
|
+
// Single source of truth for Fox's category-selector membership. Read by foxProvider.categorySelectors so the resolution layer in selectChannel() knows which
|
|
8
|
+
// selectors to route through resolveFoxCategorySelector, and read by verifyFoxManifest so it applies wildcard semantics on the same set. Adding a new Fox category
|
|
9
|
+
// selector means appending one entry here - the provider declaration and the verifier pick it up automatically.
|
|
10
|
+
const FOX_CATEGORY_SELECTORS = ["FOXD2C"];
|
|
7
11
|
/**
|
|
8
12
|
* Clears the Fox discovery cache. Called by clearChannelSelectionCaches() in the coordinator when the browser restarts.
|
|
9
13
|
*/
|
|
10
14
|
function clearFoxCache() {
|
|
11
15
|
cachedDiscoveredChannels = null;
|
|
12
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Extracts the channel call sign from a fox.com master HLS manifest URL. The URL shape is
|
|
19
|
+
*
|
|
20
|
+
* https://<host>/<auth-token>/<prefix>/<callsign>-<region>/index.m3u8?<query>
|
|
21
|
+
*
|
|
22
|
+
* where the second-to-last path segment encodes the call sign and region (e.g., "wfld-ue2", "fnc-ue2", "fbn-ue2"). The call sign is the part before the first
|
|
23
|
+
* dash. Returns null when the URL is not parseable, has fewer than two path segments, or does not match the expected shape - the caller treats null as "shape
|
|
24
|
+
* unrecognized" and fails open rather than rejecting a stream that might still be correct.
|
|
25
|
+
* @param url - The full master manifest URL.
|
|
26
|
+
* @returns The lowercase call sign, or null when not extractable.
|
|
27
|
+
*/
|
|
28
|
+
function extractCallSignFromManifestUrl(url) {
|
|
29
|
+
let pathname;
|
|
30
|
+
try {
|
|
31
|
+
pathname = new URL(url).pathname;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const segments = pathname.split("/").filter((segment) => segment.length > 0);
|
|
37
|
+
if (segments.length < 2) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
// Second-to-last segment is the channel directory; the file name is the last segment.
|
|
41
|
+
const channelSegment = segments[segments.length - 2] ?? "";
|
|
42
|
+
const dashIndex = channelSegment.indexOf("-");
|
|
43
|
+
if (dashIndex <= 0) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return channelSegment.substring(0, dashIndex).toLowerCase();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Failsafe verifier called by streaming/hls.ts after the master manifest URL has been captured for a Fox tune. Confirms the URL belongs to the channel the user
|
|
50
|
+
* asked for. The selector is compared lowercase against the call sign extracted from the URL path - both cable channels (FBN, FNC, FS1, etc.) and local affiliate
|
|
51
|
+
* call signs (WFLD, WPWRDT, etc.) follow the same lowercase convention in Fox's CDN paths. Returns null on match. Returns null when the URL shape is unrecognized
|
|
52
|
+
* (fail-open: better to accept a stream we cannot inspect than to reject a working one when Fox restructures their CDN). Returns a failure reason when the URL
|
|
53
|
+
* decodes cleanly to a different call sign - that is the unmistakable signature of a click that did not switch the player, and we want the stream to fail loudly
|
|
54
|
+
* rather than silently deliver the wrong channel.
|
|
55
|
+
* @param url - The master manifest URL captured by the interceptor.
|
|
56
|
+
* @param channelSelector - The expected channel selector for this tune.
|
|
57
|
+
* @returns Null on match or unrecognizable URL. Failure reason string when the URL belongs to a different channel.
|
|
58
|
+
*/
|
|
59
|
+
function verifyFoxManifest(url, channelSelector) {
|
|
60
|
+
const callSign = extractCallSignFromManifestUrl(url);
|
|
61
|
+
// Fail open on unparseable URLs - we cannot inspect the URL but the strategy and player gates upstream are working hard enough that we trust them when the
|
|
62
|
+
// failsafe cannot speak. Emit a debug line so a CDN-side restructure does not silently disable verification - the next tune attempt (with debug enabled) will
|
|
63
|
+
// surface the unrecognized shape, giving us a forward-warning signal rather than a missing-coverage gap that goes unnoticed until something else breaks.
|
|
64
|
+
if (!callSign) {
|
|
65
|
+
LOG.debug("tuning:fox", "Manifest URL shape unrecognized; verification fail-open. URL: %s.", url);
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const expected = channelSelector.toLowerCase();
|
|
69
|
+
// Category selector path. The resolution layer in selectChannel() converts category selectors to concrete call signs before strategy dispatch, so this branch
|
|
70
|
+
// only fires when resolution failed (cache empty AND in-line discovery yielded nothing). With cache populated we accept any call sign discovery has tagged as a
|
|
71
|
+
// member of this category; we deliberately do not allow arbitrary call signs through, so a click that landed on a non-category station still surfaces a clear
|
|
72
|
+
// mismatch. With cache empty we fail open - the resolver tried, the strategy made a best-effort match, and without discovery data we cannot prove the click was
|
|
73
|
+
// wrong. Membership is determined by ch.categorySelector rather than ch.affiliate so the test stays explicit even as more categories are introduced over time.
|
|
74
|
+
if (FOX_CATEGORY_SELECTORS.includes(channelSelector)) {
|
|
75
|
+
if (!cachedDiscoveredChannels) {
|
|
76
|
+
LOG.debug("tuning:fox", "Category selector \"%s\" reached the verifier without discovery cache; failing open. URL call sign: %s.", channelSelector, callSign);
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const isKnownCategoryMember = cachedDiscoveredChannels.some((ch) => (ch.categorySelector === channelSelector) && (ch.affiliate?.toLowerCase() === callSign));
|
|
80
|
+
if (isKnownCategoryMember) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
return "Manifest URL is for channel \"" + callSign + "\", which is not a known member of the \"" + channelSelector + "\" category in this market.";
|
|
84
|
+
}
|
|
85
|
+
if (callSign === expected) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
return "Manifest URL is for channel \"" + callSign + "\", but \"" + channelSelector + "\" was requested.";
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolves a Fox category selector to a concrete per-user call sign. Today the only category is "FOXD2C" - the title shared by every Fox-owned local affiliate
|
|
92
|
+
* Fox.com surfaces in the user's market. Resolution consults discovery: if discovery has cached results, we read the first FOXD2C-tagged entry (the entry whose
|
|
93
|
+
* affiliate field is populated, set only for FOXD2C entries during discovery). If the cache is empty, we run discovery in-line on the already-loaded page; the
|
|
94
|
+
* resolver is invoked from selectChannel() after navigation, so the guide grid is rendered or about to render. Returns null when no FOXD2C affiliate is present,
|
|
95
|
+
* which happens before the grid hydrates or when the user is not authenticated; the resolution layer treats null as "could not resolve" and falls through to a
|
|
96
|
+
* best-effort match with the original category selector.
|
|
97
|
+
*
|
|
98
|
+
* For users in markets with multiple FOXD2C affiliates (e.g., Chicago has both WFLD and WPWRDT - Fox-owned Fox and CW O&O), discovery returns them in DOM order
|
|
99
|
+
* because the in-line walk preserves it and the post-walk alphabetical sort is stable for name ties (every FOXD2C entry has name="FOXD2C"). The first entry is
|
|
100
|
+
* the primary Fox-owned Fox affiliate in nearly all markets. Users who want the secondary station can manually edit the per-channel override after the system
|
|
101
|
+
* persists the resolved selector - the override is the same delta a user-set selector produces.
|
|
102
|
+
* @param selector - The category selector value being resolved (one of the entries in foxProvider.categorySelectors).
|
|
103
|
+
* @param page - The active Fox.com page. Used to run discovery in-line when the cache is empty.
|
|
104
|
+
* @returns The resolution containing the user's call sign, or null when resolution cannot be performed.
|
|
105
|
+
*/
|
|
106
|
+
async function resolveFoxCategorySelector(selector, page) {
|
|
107
|
+
// Defensive: only resolve selectors this provider actually declares as categories. selectChannel only invokes the resolver for selectors in categorySelectors,
|
|
108
|
+
// so reaching this branch indicates a bug - either selectChannel routed wrong, or a caller bypassed selectChannel and invoked the resolver directly with the
|
|
109
|
+
// wrong value. We throw rather than returning a CategoryResolutionFailure because the resolver's `reason` field is contracted as user-facing prose for
|
|
110
|
+
// operational failures; an internal contract violation is a developer-audience event and belongs in the exception channel where it propagates to the existing
|
|
111
|
+
// unexpected-error handling path (handleSetupFailure logs at error level with a stack trace).
|
|
112
|
+
if (!FOX_CATEGORY_SELECTORS.includes(selector)) {
|
|
113
|
+
throw new Error("resolveFoxCategorySelector invoked with non-category selector \"" + selector + "\". This is a contract violation - the resolver may only " +
|
|
114
|
+
"be called with values declared in FOX_CATEGORY_SELECTORS.");
|
|
115
|
+
}
|
|
116
|
+
// Prefer cached discovery (typically populated by precaching at startup or by an earlier discovery call). Fall through to in-line discovery on the loaded page
|
|
117
|
+
// when the cache is empty - the route handler's networkidle2 navigation has already occurred by the time selectChannel runs, so the guide grid is hydrated or
|
|
118
|
+
// very close to it. Wrap in try/catch so unexpected errors (page closed, navigation aborted, Puppeteer evaluate timeout) become an articulated CategoryResolution
|
|
119
|
+
// rather than a thrown exception escaping the resolver. The technical detail goes to the debug log under the "tuning:fox" category for developer diagnosis; the
|
|
120
|
+
// user-facing reason is clean prose with actionable remediation, written for the audience that will see it.
|
|
121
|
+
let channels;
|
|
122
|
+
try {
|
|
123
|
+
channels = cachedDiscoveredChannels ?? (await discoverFoxChannels(page));
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
LOG.debug("tuning:fox", "discoverFoxChannels threw during category resolution for \"%s\": %s.", selector, formatError(error));
|
|
127
|
+
return { reason: "Fox channel discovery could not complete because the Fox.com page state is unstable. Retry the tune; if the problem persists, restart the " +
|
|
128
|
+
"browser session." };
|
|
129
|
+
}
|
|
130
|
+
if (channels.length === 0) {
|
|
131
|
+
return { reason: "Fox.com returned no channels for this session. Sign in to your TV provider on Fox One in the browser, then re-run channel discovery to " +
|
|
132
|
+
"confirm your lineup is reachable." };
|
|
133
|
+
}
|
|
134
|
+
// Iterate in discovery order and return the first member of the requested category. Discovery preserves DOM order for entries with equal names (the in-line walk
|
|
135
|
+
// is in DOM order and the post-walk sort is stable), so the first match is the primary station in the user's market for the category.
|
|
136
|
+
const member = channels.find((ch) => (ch.categorySelector === selector) && Boolean(ch.affiliate));
|
|
137
|
+
if (!member?.affiliate) {
|
|
138
|
+
return { reason: "Fox.com discovery returned no \"" + selector + "\" category members for this market. The user's account may not include a Fox-owned " +
|
|
139
|
+
"local affiliate, or the guide grid had not finished hydrating when discovery ran." };
|
|
140
|
+
}
|
|
141
|
+
return { callSign: member.affiliate };
|
|
142
|
+
}
|
|
13
143
|
/**
|
|
14
144
|
* Fox.com grid strategy: finds a channel in the non-virtualized guide grid at fox.com/live/channels by matching the station code (button title attribute) on
|
|
15
145
|
* GuideChannelLogo buttons, with fallback to internal station codes from data-content-impression-id attributes. All ~15 channels are present in the DOM
|
|
16
|
-
* simultaneously once the grid renders dynamically (~4.5s after page load). Clicking the logo button is an SPA state transition
|
|
146
|
+
* simultaneously once the grid renders dynamically (~4.5s after page load). Clicking the logo button is an SPA state transition - the Bitmovin player at the
|
|
17
147
|
* top of the page switches channels without navigation, destroying and recreating its video element with a new blob src.
|
|
18
148
|
*
|
|
19
149
|
* The selection process:
|
|
20
150
|
* 1. Poll via waitForFunction until the target appears as either a button title (e.g., FOXD2C, FNC) or an impression ID prefix (local affiliate call sign).
|
|
21
151
|
* 2. Scan all channel rows, checking button title first, then impression ID prefix for fallback matching.
|
|
22
152
|
* 3. Case-insensitive match against the channelSelector.
|
|
23
|
-
* 4. On match, call logoButton.click() directly via DOM
|
|
153
|
+
* 4. On match, call logoButton.click() directly via DOM - coordinate-based clicking is not possible because the GuideProgramHero (sticky, z-40) overlays the
|
|
24
154
|
* guide grid and intercepts all mouse events at the element's coordinates.
|
|
25
155
|
* @param page - The Puppeteer page object.
|
|
26
156
|
* @param profile - The resolved site profile with a non-null channelSelector (station code like "FOXD2C" or a local affiliate call sign).
|
|
@@ -42,7 +172,7 @@ async function foxGridStrategy(page, profile) {
|
|
|
42
172
|
// Fallback: check the first data-content-impression-id prefix. The format is "{PREFIX}-program-..." where PREFIX is the internal station code.
|
|
43
173
|
const impressionDiv = c.querySelector("[data-content-impression-id]");
|
|
44
174
|
const impressionId = impressionDiv?.getAttribute("data-content-impression-id") ?? "";
|
|
45
|
-
const prefix = impressionId.split("-program-")[0].toLowerCase();
|
|
175
|
+
const prefix = (impressionId.split("-program-")[0] ?? "").toLowerCase();
|
|
46
176
|
return (prefix.length > 0) && (prefix === codeLower);
|
|
47
177
|
});
|
|
48
178
|
}, { timeout: CONFIG.streaming.videoTimeout }, stationCode);
|
|
@@ -60,7 +190,7 @@ async function foxGridStrategy(page, profile) {
|
|
|
60
190
|
}
|
|
61
191
|
const impressionDiv = container.querySelector("[data-content-impression-id]");
|
|
62
192
|
const impressionId = (impressionDiv?.getAttribute("data-content-impression-id") ?? "");
|
|
63
|
-
const prefix = impressionId.split("-program-")[0].trim();
|
|
193
|
+
const prefix = (impressionId.split("-program-")[0] ?? "").trim();
|
|
64
194
|
if ((prefix.length > 0) && (prefix !== title)) {
|
|
65
195
|
codes.add(prefix);
|
|
66
196
|
}
|
|
@@ -81,6 +211,22 @@ async function foxGridStrategy(page, profile) {
|
|
|
81
211
|
}
|
|
82
212
|
return { reason: "Station code " + stationCode + " not found in Fox.com guide grid.", success: false };
|
|
83
213
|
}
|
|
214
|
+
// Wait for Bitmovin to finish booting its initial player session before clicking. The grid-render wait above proves React has mounted the channel logos, but
|
|
215
|
+
// Fox's React component only delegates the channel switch to Bitmovin once the player has a live, decoding session - which we observe externally as <video>
|
|
216
|
+
// having a blob: src AND readyState >= HAVE_CURRENT_DATA (2), i.e. the decoder has produced at least one frame. The combined gate avoids two failure modes:
|
|
217
|
+
// clicking before any src is assigned (player not wired up at all), and clicking during the brief window when Bitmovin is reassigning src as it transitions
|
|
218
|
+
// from a placeholder to the first MSE-backed source. Without this gate, the click registers in React (sidebar caption updates) but the player isn't ready to
|
|
219
|
+
// act on it, and the page sits on its page-default channel for the rest of the stream's lifetime. Best-effort: if the player never reaches this state we still
|
|
220
|
+
// attempt the click, and the user's symptom report will surface the failure.
|
|
221
|
+
try {
|
|
222
|
+
await page.waitForFunction(() => {
|
|
223
|
+
const video = document.querySelector("video");
|
|
224
|
+
return Boolean(video && video.src.startsWith("blob:") && (video.readyState >= 2));
|
|
225
|
+
}, { timeout: CONFIG.streaming.videoTimeout });
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
LOG.debug("tuning:fox", "Bitmovin player did not reach a decoding state within the timeout. Proceeding with click anyway.");
|
|
229
|
+
}
|
|
84
230
|
// Click the channel logo button to tune the player. We use DOM element.click() rather than coordinate-based page.mouse.click() because the GuideProgramHero
|
|
85
231
|
// section (sticky top-[64px], z-40) overlays the guide grid and intercepts all coordinate-based mouse events. DOM .click() dispatches the event directly to the
|
|
86
232
|
// element, bypassing the sticky hero's hit-testing.
|
|
@@ -109,7 +255,7 @@ async function foxGridStrategy(page, profile) {
|
|
|
109
255
|
}
|
|
110
256
|
const impressionDiv = container.querySelector("[data-content-impression-id]");
|
|
111
257
|
const impressionId = impressionDiv?.getAttribute("data-content-impression-id") ?? "";
|
|
112
|
-
const prefix = impressionId.split("-program-")[0].toLowerCase();
|
|
258
|
+
const prefix = (impressionId.split("-program-")[0] ?? "").toLowerCase();
|
|
113
259
|
if ((prefix.length > 0) && (prefix === codeLower)) {
|
|
114
260
|
logoButton.click();
|
|
115
261
|
return true;
|
|
@@ -140,7 +286,7 @@ async function readFoxChannels(page) {
|
|
|
140
286
|
// Extract the internal station code from the first data-content-impression-id. Format: "{PREFIX}-program-..." where PREFIX is the internal code.
|
|
141
287
|
const impressionDiv = container.querySelector("[data-content-impression-id]");
|
|
142
288
|
const impressionId = (impressionDiv?.getAttribute("data-content-impression-id") ?? "");
|
|
143
|
-
const internalCode = impressionId.split("-program-")[0].trim();
|
|
289
|
+
const internalCode = (impressionId.split("-program-")[0] ?? "").trim();
|
|
144
290
|
// Locked channels have a lock-icon SVG overlaid on the first program thumbnail. These require TV provider authentication (add-on tier).
|
|
145
291
|
const locked = container.querySelector("[data-testid=\"lock-icon\"]") !== null;
|
|
146
292
|
results.push({ internalCode: internalCode.length > 0 ? internalCode : stationCode, locked, stationCode });
|
|
@@ -162,7 +308,7 @@ async function discoverFoxChannels(page) {
|
|
|
162
308
|
return cachedDiscoveredChannels;
|
|
163
309
|
}
|
|
164
310
|
// Wait for at least one GuideChannelContainer to confirm the guide grid has rendered. The route handler navigates with networkidle2, which ensures all API data
|
|
165
|
-
// has arrived before this function is called
|
|
311
|
+
// has arrived before this function is called - no additional network idle wait is needed here.
|
|
166
312
|
try {
|
|
167
313
|
await page.waitForSelector("[data-testid=\"GuideChannelContainer\"]", { timeout: CONFIG.streaming.videoTimeout });
|
|
168
314
|
}
|
|
@@ -170,16 +316,19 @@ async function discoverFoxChannels(page) {
|
|
|
170
316
|
return [];
|
|
171
317
|
}
|
|
172
318
|
const foxChannels = await readFoxChannels(page);
|
|
173
|
-
// Do not cache empty results
|
|
319
|
+
// Do not cache empty results - leave null so subsequent calls retry the full walk. Empty results can indicate no TV provider login.
|
|
174
320
|
if (foxChannels.length === 0) {
|
|
175
321
|
return [];
|
|
176
322
|
}
|
|
177
323
|
cachedDiscoveredChannels = foxChannels.map((ch) => {
|
|
178
324
|
const entry = { channelSelector: ch.stationCode, name: ch.stationCode };
|
|
179
|
-
//
|
|
180
|
-
//
|
|
181
|
-
|
|
325
|
+
// Category-selector membership. When a station's title is one of the values declared in FOX_CATEGORY_SELECTORS, the entry is a member of that category and we
|
|
326
|
+
// tag it with the category name plus the affiliate (the per-market call sign) so the resolver and the verifier can both reason about category membership
|
|
327
|
+
// without needing to know which titles are categories. Use the affiliate as the entry's channelSelector so the discovery output is directly usable as a
|
|
328
|
+
// unique-per-container selector.
|
|
329
|
+
if (FOX_CATEGORY_SELECTORS.includes(ch.stationCode)) {
|
|
182
330
|
entry.affiliate = ch.internalCode;
|
|
331
|
+
entry.categorySelector = ch.stationCode;
|
|
183
332
|
entry.channelSelector = ch.internalCode;
|
|
184
333
|
}
|
|
185
334
|
if (ch.locked) {
|
|
@@ -191,13 +340,20 @@ async function discoverFoxChannels(page) {
|
|
|
191
340
|
return cachedDiscoveredChannels;
|
|
192
341
|
}
|
|
193
342
|
export const foxProvider = {
|
|
343
|
+
// Category resolution for Fox: "FOXD2C" is a category title shared across every Fox-owned local affiliate Fox.com surfaces in the user's market. Each user gets
|
|
344
|
+
// a per-market resolution (e.g., a Chicago user resolves "FOXD2C" to "WFLD"). The configuration is permissive (requireResolution omitted = false) so a failed
|
|
345
|
+
// resolution falls through to a best-effort strategy match plus wildcard verifier behavior rather than aborting the tune.
|
|
346
|
+
categoryResolution: {
|
|
347
|
+
resolve: resolveFoxCategorySelector,
|
|
348
|
+
selectors: FOX_CATEGORY_SELECTORS
|
|
349
|
+
},
|
|
194
350
|
discoverChannels: discoverFoxChannels,
|
|
195
351
|
getCachedChannels: () => cachedDiscoveredChannels,
|
|
196
352
|
guideUrl: "https://www.fox.com/live/channels",
|
|
197
353
|
label: "Fox",
|
|
198
354
|
// Profile for Fox.com live channel guide grid. The guide page presents all channels in a non-virtualized grid with station codes in the channel logo button
|
|
199
355
|
// titles (e.g., FOXD2C, FNC, FS1). The channelSelector property matches against these station codes. Clicking the channel logo button is an SPA state
|
|
200
|
-
// transition
|
|
356
|
+
// transition - the player at the top of the page switches channels without navigation. The grid renders dynamically after page load, so the strategy waits
|
|
201
357
|
// for GuideChannelContainer elements before scanning.
|
|
202
358
|
profile: {
|
|
203
359
|
category: "multiChannel",
|
|
@@ -209,6 +365,7 @@ export const foxProvider = {
|
|
|
209
365
|
profileName: "foxLive",
|
|
210
366
|
slug: "foxone",
|
|
211
367
|
strategy: { clearCache: clearFoxCache, execute: foxGridStrategy },
|
|
212
|
-
strategyName: "foxGrid"
|
|
368
|
+
strategyName: "foxGrid",
|
|
369
|
+
verifyManifestForChannel: verifyFoxManifest
|
|
213
370
|
};
|
|
214
371
|
//# sourceMappingURL=fox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fox.js","sourceRoot":"","sources":["../../../src/browser/tuning/fox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fox.js","sourceRoot":"","sources":["../../../src/browser/tuning/fox.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAYnD,4JAA4J;AAC5J,kGAAkG;AAClG,IAAI,wBAAwB,GAAkC,IAAI,CAAC;AAEnE,8JAA8J;AAC9J,mKAAmK;AACnK,gHAAgH;AAChH,MAAM,sBAAsB,GAAsB,CAAC,QAAQ,CAAC,CAAC;AAE7D;;GAEG;AACH,SAAS,aAAa;IAEpB,wBAAwB,GAAG,IAAI,CAAC;AAClC,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,8BAA8B,CAAC,GAAW;IAEjD,IAAI,QAAgB,CAAC;IAErB,IAAI,CAAC;QAEH,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7E,IAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAEvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sFAAsF;IACtF,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE9C,IAAG,SAAS,IAAI,CAAC,EAAE,CAAC;QAElB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB,CAAC,GAAW,EAAE,eAAuB;IAE7D,MAAM,QAAQ,GAAG,8BAA8B,CAAC,GAAG,CAAC,CAAC;IAErD,2JAA2J;IAC3J,8JAA8J;IAC9J,yJAAyJ;IACzJ,IAAG,CAAC,QAAQ,EAAE,CAAC;QAEb,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,mEAAmE,EAAE,GAAG,CAAC,CAAC;QAElG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IAE/C,8JAA8J;IAC9J,gKAAgK;IAChK,8JAA8J;IAC9J,gKAAgK;IAChK,+JAA+J;IAC/J,IAAG,sBAAsB,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAEpD,IAAG,CAAC,wBAAwB,EAAE,CAAC;YAE7B,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,yGAAyG,EAAE,eAAe,EAChJ,QAAQ,CAAC,CAAC;YAEZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,gBAAgB,KAAK,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC;QAE7J,IAAG,qBAAqB,EAAE,CAAC;YAEzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,gCAAgC,GAAG,QAAQ,GAAG,2CAA2C,GAAG,eAAe,GAAG,6BAA6B,CAAC;IACrJ,CAAC;IAED,IAAG,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAEzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,gCAAgC,GAAG,QAAQ,GAAG,YAAY,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAC5G,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,0BAA0B,CAAC,QAAgB,EAAE,IAAU;IAEpE,+JAA+J;IAC/J,6JAA6J;IAC7J,uJAAuJ;IACvJ,8JAA8J;IAC9J,8FAA8F;IAC9F,IAAG,CAAC,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAE9C,MAAM,IAAI,KAAK,CAAC,kEAAkE,GAAG,QAAQ,GAAG,2DAA2D;YACzJ,2DAA2D,CAAC,CAAC;IACjE,CAAC;IAED,+JAA+J;IAC/J,8JAA8J;IAC9J,kKAAkK;IAClK,gKAAgK;IAChK,4GAA4G;IAC5G,IAAI,QAA6B,CAAC;IAElC,IAAI,CAAC;QAEH,QAAQ,GAAG,wBAAwB,IAAI,CAAC,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,sEAAsE,EAAE,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9H,OAAO,EAAE,MAAM,EAAE,4IAA4I;gBAC3J,kBAAkB,EAAE,CAAC;IACzB,CAAC;IAED,IAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAEzB,OAAO,EAAE,MAAM,EAAE,yIAAyI;gBACxJ,mCAAmC,EAAE,CAAC;IAC1C,CAAC;IAED,iKAAiK;IACjK,sIAAsI;IACtI,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,gBAAgB,KAAK,QAAQ,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAElG,IAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;QAEtB,OAAO,EAAE,MAAM,EAAE,kCAAkC,GAAG,QAAQ,GAAG,sFAAsF;gBACrJ,mFAAmF,EAAE,CAAC;IAC1F,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,OAAgC;IAEzE,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAE5C,0JAA0J;IAC1J,kEAAkE;IAClE,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,CACxB,CAAC,IAAY,EAAW,EAAE;YAExB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,yCAAyC,CAAC,CAAC;YAExF,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBAEvC,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC,2CAA2C,CAAC,CAAC;gBAEzE,IAAG,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;oBAElE,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,+IAA+I;gBAC/I,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;gBACtE,MAAM,YAAY,GAAG,aAAa,EAAE,YAAY,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC;gBACrF,MAAM,MAAM,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAExE,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC,EACD,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,EAC1C,WAAW,CACZ,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QAEP,sGAAsG;QACtG,IAAI,CAAC;YAEH,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAa,EAAE;gBAErE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;gBAEhC,KAAI,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,yCAAyC,CAAC,CAAC,EAAE,CAAC;oBAExG,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,2CAA2C,CAAC,CAAC;oBACjF,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAExD,IAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAEpB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnB,CAAC;oBAED,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;oBAC9E,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC;oBACvF,MAAM,MAAM,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAEjE,IAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE,CAAC;wBAE7C,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpB,CAAC;gBACH,CAAC;gBAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,IAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAEhC,oBAAoB,CAAC;oBAEnB,iBAAiB;oBACjB,WAAW,EAAE,WAAW;oBACxB,QAAQ,EAAE,mCAAmC;oBAC7C,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YAEP,kCAAkC;QACpC,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzG,CAAC;IAED,6JAA6J;IAC7J,4JAA4J;IAC5J,4JAA4J;IAC5J,4JAA4J;IAC5J,6JAA6J;IAC7J,+JAA+J;IAC/J,6EAA6E;IAC7E,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,CACxB,GAAY,EAAE;YAEZ,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAE9C,OAAO,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC,EACD,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAC3C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QAEP,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,kGAAkG,CAAC,CAAC;IAC9H,CAAC;IAED,4JAA4J;IAC5J,gKAAgK;IAChK,oDAAoD;IACpD,EAAE;IACF,2JAA2J;IAC3J,cAAc;IACd,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC,IAAY,EAAW,EAAE;QAEtE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,yCAAyC,CAAC,CAAC;QAExF,KAAI,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAE9C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAc,2CAA2C,CAAC,CAAC;YAErG,IAAG,CAAC,UAAU,EAAE,CAAC;gBAEf,SAAS;YACX,CAAC;YAED,uDAAuD;YACvD,IAAG,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;gBAExE,UAAU,CAAC,KAAK,EAAE,CAAC;gBAEnB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,mFAAmF;QACnF,KAAI,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAE9C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAc,2CAA2C,CAAC,CAAC;YAErG,IAAG,CAAC,UAAU,EAAE,CAAC;gBAEf,SAAS;YACX,CAAC;YAED,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;YAC9E,MAAM,YAAY,GAAG,aAAa,EAAE,YAAY,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC;YACrF,MAAM,MAAM,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAExE,IAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;gBAEjD,UAAU,CAAC,KAAK,EAAE,CAAC;gBAEnB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,IAAG,CAAC,OAAO,EAAE,CAAC;QAEZ,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzG,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAAC,IAAU;IAEvC,OAAO,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAqB,EAAE;QAE1D,MAAM,OAAO,GAAqB,EAAE,CAAC;QAErC,KAAI,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,yCAAyC,CAAC,CAAC,EAAE,CAAC;YAExG,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,2CAA2C,CAAC,CAAC;YACxF,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAErE,IAAG,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAE5B,SAAS;YACX,CAAC;YAED,iJAAiJ;YACjJ,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;YAC9E,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC;YACvF,MAAM,YAAY,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAEvE,wIAAwI;YACxI,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,6BAA6B,CAAC,KAAK,IAAI,CAAC;YAE/E,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5G,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,mBAAmB,CAAC,IAAU;IAE3C,IAAG,wBAAwB,EAAE,CAAC;QAE5B,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED,gKAAgK;IAChK,+FAA+F;IAC/F,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,CAAC,yCAAyC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IACpH,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAEhD,oIAAoI;IACpI,IAAG,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,wBAAwB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAEhD,MAAM,KAAK,GAAsB,EAAE,eAAe,EAAE,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3F,8JAA8J;QAC9J,yJAAyJ;QACzJ,wJAAwJ;QACxJ,iCAAiC;QACjC,IAAG,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;YAEnD,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC;YAClC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,WAAW,CAAC;YACxC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC;QAC1C,CAAC;QAED,IAAG,EAAE,CAAC,MAAM,EAAE,CAAC;YAEb,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;QACvB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtE,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAmB;IAEzC,gKAAgK;IAChK,8JAA8J;IAC9J,0HAA0H;IAC1H,kBAAkB,EAAE;QAElB,OAAO,EAAE,0BAA0B;QACnC,SAAS,EAAE,sBAAsB;KAClC;IAED,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,GAAkC,EAAE,CAAC,wBAAwB;IAChF,QAAQ,EAAE,mCAAmC;IAC7C,KAAK,EAAE,KAAK;IAEZ,4JAA4J;IAC5J,sJAAsJ;IACtJ,2JAA2J;IAC3J,sDAAsD;IACtD,OAAO,EAAE;QAEP,QAAQ,EAAE,cAAc;QACxB,gBAAgB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;QACzC,WAAW,EAAE,gGAAgG;QAC7G,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,uCAAuC;KACjD;IACD,WAAW,EAAE,SAAS;IACtB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE;IACjE,YAAY,EAAE,SAAS;IACvB,wBAAwB,EAAE,iBAAiB;CAC5C,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { ProviderModule } from "../../types/index.
|
|
1
|
+
import type { ProviderModule } from "../../types/index.ts";
|
|
2
2
|
export declare const hboProvider: ProviderModule;
|
|
@@ -41,7 +41,7 @@ function clearHboCache() {
|
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* Derives a DiscoveredChannel array from the unified channel cache. HBO does not create alias entries (resolveHboDirectUrl does exact-match only, no
|
|
44
|
-
* prefix/alternate fallback), so deduplication is not needed
|
|
44
|
+
* prefix/alternate fallback), so deduplication is not needed - every cache value is unique. Sorts by name before returning.
|
|
45
45
|
* @returns Sorted array of discovered channels.
|
|
46
46
|
*/
|
|
47
47
|
function buildHboDiscoveredChannels() {
|
|
@@ -103,7 +103,7 @@ async function readHboChannelRail(page) {
|
|
|
103
103
|
catch {
|
|
104
104
|
return { channels: [], railFound: false };
|
|
105
105
|
}
|
|
106
|
-
// The rail uses lazy loading via IntersectionObserver
|
|
106
|
+
// The rail uses lazy loading via IntersectionObserver - tile content only populates when the rail is visible in the viewport. The rail section element appears
|
|
107
107
|
// immediately with skeleton PhantomTile placeholders, but the actual channel tiles (with names and watch URLs) are fetched asynchronously after the rail scrolls
|
|
108
108
|
// into view. We scroll the rail into view and then wait for anchor elements to appear, indicating the tiles have loaded.
|
|
109
109
|
await page.evaluate((selector) => {
|
|
@@ -147,9 +147,9 @@ async function readHboChannelRail(page) {
|
|
|
147
147
|
* without loading the tab page.
|
|
148
148
|
*
|
|
149
149
|
* The strategy handles three navigations per tune:
|
|
150
|
-
* 1. Homepage (already loaded by navigateToPage)
|
|
151
|
-
* 2. Tab page
|
|
152
|
-
* 3. Watch page
|
|
150
|
+
* 1. Homepage (already loaded by navigateToPage) -> read menu bar for tab URL (or use cache)
|
|
151
|
+
* 2. Tab page -> read channel rail for all watch URLs
|
|
152
|
+
* 3. Watch page -> video playback begins
|
|
153
153
|
*
|
|
154
154
|
* When the cached tab URL is stale (rail section not found), the strategy clears the cache, navigates back to the homepage, rediscovers the tab URL, and retries.
|
|
155
155
|
* This fallback triggers at most once per tune attempt.
|
|
@@ -295,7 +295,7 @@ export const hboProvider = {
|
|
|
295
295
|
guideUrl: "https://play.hbomax.com",
|
|
296
296
|
label: "HBO Max",
|
|
297
297
|
// Profile for HBO Max live channels (play.hbomax.com). The HBO brand page contains a "Distribution Channels" rail showing all 5 live linear channels (HBO, HBO
|
|
298
|
-
// Hits, HBO Drama, HBO Comedy, HBO Movies) as tiles. The hboGrid strategy discovers the HBO tab URL from the homepage menu bar, navigates to it, then
|
|
298
|
+
// Hits, HBO Drama, HBO Comedy, HBO Movies) as tiles. The hboGrid strategy discovers the HBO tab URL from the homepage menu bar, navigates to it, then reads the
|
|
299
299
|
// channel rail for the watch URL matching the channelSelector name. Extends fullscreenApi for requestFullscreen() behavior inherited by the watch page.
|
|
300
300
|
profile: {
|
|
301
301
|
category: "multiChannel",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hbo.js","sourceRoot":"","sources":["../../../src/browser/tuning/hbo.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,uEAAuE;AACvE,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAWnD,+JAA+J;AAC/J,gKAAgK;AAChK,2HAA2H;AAC3H,MAAM,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAC;AAE3D,2JAA2J;AAC3J,4JAA4J;AAC5J,gBAAgB;AAChB,IAAI,SAAS,GAAqB,IAAI,CAAC;AAEvC;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,eAAuB;IAElD,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;IAEjE,IAAG,KAAK,EAAE,CAAC;QAET,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,2BAA2B,EAAE,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEtF,OAAO,KAAK,CAAC,QAAQ,CAAC;IACxB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,eAAuB;IAErD,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa;IAEpB,eAAe,CAAC,KAAK,EAAE,CAAC;IACxB,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,0BAA0B;IAEjC,OAAO,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChI,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,WAAkD;IAEjF,KAAI,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAE5B,MAAM,QAAQ,GAAG,gBAAgB,GAAG,EAAE,CAAC,SAAS,CAAC;QAEjD,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAElH,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,sCAAsC,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,aAAa,CAAC,IAAU;IAErC,gKAAgK;IAChK,6HAA6H;IAC7H,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;IAEnD,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC,QAAgB,EAAoB,EAAE;QAEhF,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"hbo.js","sourceRoot":"","sources":["../../../src/browser/tuning/hbo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { ProviderModule } from "../../types/index.
|
|
1
|
+
import type { ProviderModule } from "../../types/index.ts";
|
|
2
2
|
export declare const huluProvider: ProviderModule;
|