prismcast 1.8.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.
Files changed (392) hide show
  1. package/README.md +6 -6
  2. package/dist/app.d.ts +1 -1
  3. package/dist/app.js +41 -13
  4. package/dist/app.js.map +1 -1
  5. package/dist/browser/cdp.d.ts +4 -6
  6. package/dist/browser/cdp.js +18 -22
  7. package/dist/browser/cdp.js.map +1 -1
  8. package/dist/browser/channelSelection.d.ts +41 -11
  9. package/dist/browser/channelSelection.js +75 -24
  10. package/dist/browser/channelSelection.js.map +1 -1
  11. package/dist/browser/display.d.ts +1 -1
  12. package/dist/browser/index.d.ts +8 -8
  13. package/dist/browser/index.js +44 -45
  14. package/dist/browser/index.js.map +1 -1
  15. package/dist/browser/login.d.ts +2 -2
  16. package/dist/browser/login.js +1 -1
  17. package/dist/browser/manifestInterceptor.d.ts +77 -0
  18. package/dist/browser/manifestInterceptor.js +323 -0
  19. package/dist/browser/manifestInterceptor.js.map +1 -0
  20. package/dist/browser/precaching.d.ts +1 -1
  21. package/dist/browser/precaching.js +23 -23
  22. package/dist/browser/precaching.js.map +1 -1
  23. package/dist/browser/tuning/comcastPolymer.d.ts +1 -1
  24. package/dist/browser/tuning/cox.d.ts +1 -1
  25. package/dist/browser/tuning/directv.d.ts +1 -1
  26. package/dist/browser/tuning/directv.js +65 -69
  27. package/dist/browser/tuning/directv.js.map +1 -1
  28. package/dist/browser/tuning/fox.d.ts +1 -1
  29. package/dist/browser/tuning/fox.js +172 -15
  30. package/dist/browser/tuning/fox.js.map +1 -1
  31. package/dist/browser/tuning/hbo.d.ts +1 -1
  32. package/dist/browser/tuning/hbo.js +7 -7
  33. package/dist/browser/tuning/hbo.js.map +1 -1
  34. package/dist/browser/tuning/hulu.d.ts +1 -1
  35. package/dist/browser/tuning/hulu.js +120 -113
  36. package/dist/browser/tuning/hulu.js.map +1 -1
  37. package/dist/browser/tuning/shared.d.ts +3 -3
  38. package/dist/browser/tuning/shared.js +5 -5
  39. package/dist/browser/tuning/sling.d.ts +1 -1
  40. package/dist/browser/tuning/sling.js +30 -30
  41. package/dist/browser/tuning/sling.js.map +1 -1
  42. package/dist/browser/tuning/spectrum.d.ts +1 -1
  43. package/dist/browser/tuning/spectrum.js +21 -22
  44. package/dist/browser/tuning/spectrum.js.map +1 -1
  45. package/dist/browser/tuning/thumbnailRow.d.ts +1 -1
  46. package/dist/browser/tuning/thumbnailRow.js +1 -1
  47. package/dist/browser/tuning/tileClick.d.ts +1 -1
  48. package/dist/browser/tuning/tileClick.js +5 -5
  49. package/dist/browser/tuning/xfinity.d.ts +1 -1
  50. package/dist/browser/tuning/youtubeTv.d.ts +1 -1
  51. package/dist/browser/tuning/youtubeTv.js +17 -18
  52. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  53. package/dist/browser/video.d.ts +20 -6
  54. package/dist/browser/video.js +30 -38
  55. package/dist/browser/video.js.map +1 -1
  56. package/dist/channels/index.d.ts +1 -2
  57. package/dist/channels/index.js +475 -442
  58. package/dist/channels/index.js.map +1 -1
  59. package/dist/config/channelForm.d.ts +58 -0
  60. package/dist/config/channelForm.js +129 -0
  61. package/dist/config/channelForm.js.map +1 -0
  62. package/dist/config/consistencyProbe.d.ts +7 -0
  63. package/dist/config/consistencyProbe.js +143 -0
  64. package/dist/config/consistencyProbe.js.map +1 -0
  65. package/dist/config/health.d.ts +7 -6
  66. package/dist/config/health.js +78 -65
  67. package/dist/config/health.js.map +1 -1
  68. package/dist/config/index.d.ts +1 -1
  69. package/dist/config/index.js +21 -14
  70. package/dist/config/index.js.map +1 -1
  71. package/dist/config/paths.d.ts +9 -3
  72. package/dist/config/paths.js +12 -4
  73. package/dist/config/paths.js.map +1 -1
  74. package/dist/config/persistence.context.d.ts +8 -0
  75. package/dist/config/persistence.context.js +30 -0
  76. package/dist/config/persistence.context.js.map +1 -0
  77. package/dist/config/persistence.d.ts +157 -0
  78. package/dist/config/persistence.js +446 -0
  79. package/dist/config/persistence.js.map +1 -0
  80. package/dist/config/presets.d.ts +14 -4
  81. package/dist/config/presets.js +84 -75
  82. package/dist/config/presets.js.map +1 -1
  83. package/dist/config/profiles.d.ts +2 -2
  84. package/dist/config/profiles.js +7 -9
  85. package/dist/config/profiles.js.map +1 -1
  86. package/dist/config/servicePacks.d.ts +46 -0
  87. package/dist/config/{providerPacks.js → servicePacks.js} +50 -53
  88. package/dist/config/servicePacks.js.map +1 -0
  89. package/dist/config/services.d.ts +228 -0
  90. package/dist/config/services.js +772 -0
  91. package/dist/config/services.js.map +1 -0
  92. package/dist/config/sites.d.ts +3 -3
  93. package/dist/config/sites.js +75 -75
  94. package/dist/config/sites.js.map +1 -1
  95. package/dist/config/userChannels.d.ts +522 -54
  96. package/dist/config/userChannels.js +1343 -366
  97. package/dist/config/userChannels.js.map +1 -1
  98. package/dist/config/userConfig.d.ts +108 -13
  99. package/dist/config/userConfig.js +296 -143
  100. package/dist/config/userConfig.js.map +1 -1
  101. package/dist/config/userProfiles.d.ts +34 -16
  102. package/dist/config/userProfiles.js +189 -100
  103. package/dist/config/userProfiles.js.map +1 -1
  104. package/dist/hdhr/channelMap.d.ts +1 -1
  105. package/dist/hdhr/channelMap.js +10 -16
  106. package/dist/hdhr/channelMap.js.map +1 -1
  107. package/dist/hdhr/deviceId.js +10 -9
  108. package/dist/hdhr/deviceId.js.map +1 -1
  109. package/dist/hdhr/discover.js +4 -5
  110. package/dist/hdhr/discover.js.map +1 -1
  111. package/dist/hdhr/index.js +12 -19
  112. package/dist/hdhr/index.js.map +1 -1
  113. package/dist/index.js +12 -12
  114. package/dist/index.js.map +1 -1
  115. package/dist/native/codecInference.d.ts +44 -0
  116. package/dist/native/codecInference.js +327 -0
  117. package/dist/native/codecInference.js.map +1 -0
  118. package/dist/native/decrypt.d.ts +1 -1
  119. package/dist/native/index.d.ts +5 -5
  120. package/dist/native/index.js +45 -67
  121. package/dist/native/index.js.map +1 -1
  122. package/dist/native/probe.d.ts +27 -9
  123. package/dist/native/probe.js +159 -68
  124. package/dist/native/probe.js.map +1 -1
  125. package/dist/native/proxy.d.ts +4 -2
  126. package/dist/native/proxy.js +56 -53
  127. package/dist/native/proxy.js.map +1 -1
  128. package/dist/native/tokenExpiry.d.ts +22 -0
  129. package/dist/native/tokenExpiry.js +153 -0
  130. package/dist/native/tokenExpiry.js.map +1 -0
  131. package/dist/routes/assets.js +3 -3
  132. package/dist/routes/assets.js.map +1 -1
  133. package/dist/routes/auth.js +9 -13
  134. package/dist/routes/auth.js.map +1 -1
  135. package/dist/routes/components.js +2 -2
  136. package/dist/routes/components.js.map +1 -1
  137. package/dist/routes/config/channels/endpoints/browse.d.ts +6 -0
  138. package/dist/routes/config/channels/endpoints/browse.js +195 -0
  139. package/dist/routes/config/channels/endpoints/browse.js.map +1 -0
  140. package/dist/routes/config/channels/endpoints/bulk.d.ts +6 -0
  141. package/dist/routes/config/channels/endpoints/bulk.js +128 -0
  142. package/dist/routes/config/channels/endpoints/bulk.js.map +1 -0
  143. package/dist/routes/config/channels/endpoints/crud.d.ts +6 -0
  144. package/dist/routes/config/channels/endpoints/crud.js +504 -0
  145. package/dist/routes/config/channels/endpoints/crud.js.map +1 -0
  146. package/dist/routes/config/channels/endpoints/importExport.d.ts +6 -0
  147. package/dist/routes/config/channels/endpoints/importExport.js +131 -0
  148. package/dist/routes/config/channels/endpoints/importExport.js.map +1 -0
  149. package/dist/routes/config/channels/endpoints/predefined.d.ts +6 -0
  150. package/dist/routes/config/channels/endpoints/predefined.js +78 -0
  151. package/dist/routes/config/channels/endpoints/predefined.js.map +1 -0
  152. package/dist/routes/config/channels/endpoints/prefs.d.ts +6 -0
  153. package/dist/routes/config/channels/endpoints/prefs.js +58 -0
  154. package/dist/routes/config/channels/endpoints/prefs.js.map +1 -0
  155. package/dist/routes/config/channels/endpoints/service.d.ts +6 -0
  156. package/dist/routes/config/channels/endpoints/service.js +149 -0
  157. package/dist/routes/config/channels/endpoints/service.js.map +1 -0
  158. package/dist/routes/config/channels/endpoints/tags.d.ts +6 -0
  159. package/dist/routes/config/channels/endpoints/tags.js +185 -0
  160. package/dist/routes/config/channels/endpoints/tags.js.map +1 -0
  161. package/dist/routes/config/channels/http/handler.d.ts +10 -0
  162. package/dist/routes/config/channels/http/handler.js +20 -0
  163. package/dist/routes/config/channels/http/handler.js.map +1 -0
  164. package/dist/routes/config/channels/http/playlistHint.d.ts +25 -0
  165. package/dist/routes/config/channels/http/playlistHint.js +40 -0
  166. package/dist/routes/config/channels/http/playlistHint.js.map +1 -0
  167. package/dist/routes/config/channels/http/serviceWarning.d.ts +10 -0
  168. package/dist/routes/config/channels/http/serviceWarning.js +28 -0
  169. package/dist/routes/config/channels/http/serviceWarning.js.map +1 -0
  170. package/dist/routes/config/channels/index.d.ts +3 -3
  171. package/dist/routes/config/channels/index.js +2 -2
  172. package/dist/routes/config/channels/index.js.map +1 -1
  173. package/dist/routes/config/channels/{routes.d.ts → setup.d.ts} +1 -1
  174. package/dist/routes/config/channels/setup.js +23 -0
  175. package/dist/routes/config/channels/setup.js.map +1 -0
  176. package/dist/routes/config/channels/table.d.ts +13 -13
  177. package/dist/routes/config/channels/table.js +291 -184
  178. package/dist/routes/config/channels/table.js.map +1 -1
  179. package/dist/routes/config/http/envelope.d.ts +111 -0
  180. package/dist/routes/config/http/envelope.js +103 -0
  181. package/dist/routes/config/http/envelope.js.map +1 -0
  182. package/dist/routes/config/index.d.ts +9 -9
  183. package/dist/routes/config/index.js +5 -5
  184. package/dist/routes/config/index.js.map +1 -1
  185. package/dist/routes/config/{providers.js → services.js} +105 -99
  186. package/dist/routes/config/services.js.map +1 -0
  187. package/dist/routes/config/settings.d.ts +1 -1
  188. package/dist/routes/config/settings.js +85 -60
  189. package/dist/routes/config/settings.js.map +1 -1
  190. package/dist/routes/debug.js +17 -18
  191. package/dist/routes/debug.js.map +1 -1
  192. package/dist/routes/health.js +1 -1
  193. package/dist/routes/health.js.map +1 -1
  194. package/dist/routes/icons.js +2 -2
  195. package/dist/routes/icons.js.map +1 -1
  196. package/dist/routes/index.js +2 -2
  197. package/dist/routes/index.js.map +1 -1
  198. package/dist/routes/logs.js +23 -34
  199. package/dist/routes/logs.js.map +1 -1
  200. package/dist/routes/mpegts.js +1 -1
  201. package/dist/routes/playlist.d.ts +5 -5
  202. package/dist/routes/playlist.js +84 -61
  203. package/dist/routes/playlist.js.map +1 -1
  204. package/dist/routes/root/content.js +82 -61
  205. package/dist/routes/root/content.js.map +1 -1
  206. package/dist/routes/root/index.js +2 -5
  207. package/dist/routes/root/index.js.map +1 -1
  208. package/dist/routes/root/scripts/channels.js +538 -581
  209. package/dist/routes/root/scripts/channels.js.map +1 -1
  210. package/dist/routes/root/scripts/config.js +868 -1022
  211. package/dist/routes/root/scripts/config.js.map +1 -1
  212. package/dist/routes/root/scripts/index.d.ts +4 -4
  213. package/dist/routes/root/scripts/shared.js +445 -197
  214. package/dist/routes/root/scripts/shared.js.map +1 -1
  215. package/dist/routes/root/scripts/status.d.ts +4 -0
  216. package/dist/routes/root/scripts/status.handlers.d.ts +182 -0
  217. package/dist/routes/root/scripts/status.handlers.js +713 -0
  218. package/dist/routes/root/scripts/status.handlers.js.map +1 -0
  219. package/dist/routes/root/scripts/status.js +85 -436
  220. package/dist/routes/root/scripts/status.js.map +1 -1
  221. package/dist/routes/root/styles.js +16 -8
  222. package/dist/routes/root/styles.js.map +1 -1
  223. package/dist/routes/services.d.ts +6 -0
  224. package/dist/routes/{providers.js → services.js} +58 -55
  225. package/dist/routes/services.js.map +1 -0
  226. package/dist/routes/sse.d.ts +16 -0
  227. package/dist/routes/sse.js +29 -0
  228. package/dist/routes/sse.js.map +1 -0
  229. package/dist/routes/streams.js +10 -23
  230. package/dist/routes/streams.js.map +1 -1
  231. package/dist/routes/ui.d.ts +2 -2
  232. package/dist/routes/ui.js +2 -0
  233. package/dist/routes/ui.js.map +1 -1
  234. package/dist/routes/upgrade.js +6 -7
  235. package/dist/routes/upgrade.js.map +1 -1
  236. package/dist/service/commands.context.d.ts +6 -0
  237. package/dist/service/commands.context.js +47 -0
  238. package/dist/service/commands.context.js.map +1 -0
  239. package/dist/service/commands.d.ts +53 -8
  240. package/dist/service/commands.js +172 -192
  241. package/dist/service/commands.js.map +1 -1
  242. package/dist/service/generators.context.d.ts +6 -0
  243. package/dist/service/generators.context.js +45 -0
  244. package/dist/service/generators.context.js.map +1 -0
  245. package/dist/service/generators.d.ts +56 -16
  246. package/dist/service/generators.js +509 -291
  247. package/dist/service/generators.js.map +1 -1
  248. package/dist/service/index.d.ts +2 -2
  249. package/dist/streaming/clients.d.ts +2 -2
  250. package/dist/streaming/clients.js +2 -2
  251. package/dist/streaming/codec.d.ts +2 -2
  252. package/dist/streaming/codec.js +0 -1
  253. package/dist/streaming/codec.js.map +1 -1
  254. package/dist/streaming/fmp4Segmenter.d.ts +2 -2
  255. package/dist/streaming/fmp4Segmenter.js +12 -12
  256. package/dist/streaming/hls.d.ts +7 -7
  257. package/dist/streaming/hls.js +104 -92
  258. package/dist/streaming/hls.js.map +1 -1
  259. package/dist/streaming/hlsResume.d.ts +3 -3
  260. package/dist/streaming/hlsResume.js +6 -6
  261. package/dist/streaming/hlsResume.js.map +1 -1
  262. package/dist/streaming/hlsSegments.d.ts +5 -2
  263. package/dist/streaming/hlsSegments.js +14 -9
  264. package/dist/streaming/hlsSegments.js.map +1 -1
  265. package/dist/streaming/monitor.d.ts +12 -12
  266. package/dist/streaming/monitor.js +98 -66
  267. package/dist/streaming/monitor.js.map +1 -1
  268. package/dist/streaming/mp4Parser.d.ts +34 -4
  269. package/dist/streaming/mp4Parser.js +111 -29
  270. package/dist/streaming/mp4Parser.js.map +1 -1
  271. package/dist/streaming/mpegts.d.ts +1 -1
  272. package/dist/streaming/mpegts.js +13 -10
  273. package/dist/streaming/mpegts.js.map +1 -1
  274. package/dist/streaming/playlistBuilder.d.ts +1 -1
  275. package/dist/streaming/playlistBuilder.js +2 -2
  276. package/dist/streaming/preroll.d.ts +9 -9
  277. package/dist/streaming/preroll.js +40 -42
  278. package/dist/streaming/preroll.js.map +1 -1
  279. package/dist/streaming/pretune.js +4 -4
  280. package/dist/streaming/pretune.js.map +1 -1
  281. package/dist/streaming/recovery.d.ts +3 -3
  282. package/dist/streaming/recovery.js +4 -4
  283. package/dist/streaming/registry.d.ts +6 -6
  284. package/dist/streaming/registry.js +4 -8
  285. package/dist/streaming/registry.js.map +1 -1
  286. package/dist/streaming/setup.d.ts +11 -10
  287. package/dist/streaming/setup.js +120 -71
  288. package/dist/streaming/setup.js.map +1 -1
  289. package/dist/streaming/showInfo.d.ts +9 -3
  290. package/dist/streaming/showInfo.js +33 -27
  291. package/dist/streaming/showInfo.js.map +1 -1
  292. package/dist/streaming/statusEmitter.d.ts +8 -7
  293. package/dist/streaming/statusEmitter.js +5 -5
  294. package/dist/streaming/statusEmitter.js.map +1 -1
  295. package/dist/types/channels.d.ts +139 -36
  296. package/dist/types/channels.js +39 -1
  297. package/dist/types/channels.js.map +1 -1
  298. package/dist/types/config.d.ts +22 -3
  299. package/dist/types/index.d.ts +9 -8
  300. package/dist/types/index.js +1 -0
  301. package/dist/types/index.js.map +1 -1
  302. package/dist/types/profiles.d.ts +14 -13
  303. package/dist/types/selection.d.ts +49 -5
  304. package/dist/types/shared.d.ts +1 -1
  305. package/dist/types/streaming.d.ts +2 -2
  306. package/dist/upgrade/commands.context.d.ts +6 -0
  307. package/dist/upgrade/commands.context.js +29 -0
  308. package/dist/upgrade/commands.context.js.map +1 -0
  309. package/dist/upgrade/commands.d.ts +29 -2
  310. package/dist/upgrade/commands.js +87 -134
  311. package/dist/upgrade/commands.js.map +1 -1
  312. package/dist/upgrade/detection.context.d.ts +6 -0
  313. package/dist/upgrade/detection.context.js +24 -0
  314. package/dist/upgrade/detection.context.js.map +1 -0
  315. package/dist/upgrade/detection.d.ts +140 -10
  316. package/dist/upgrade/detection.js +153 -66
  317. package/dist/upgrade/detection.js.map +1 -1
  318. package/dist/upgrade/index.d.ts +2 -2
  319. package/dist/utils/chromeFetch.d.ts +1 -1
  320. package/dist/utils/chromeFetch.js +2 -2
  321. package/dist/utils/clock.d.ts +14 -0
  322. package/dist/utils/clock.js +28 -0
  323. package/dist/utils/clock.js.map +1 -0
  324. package/dist/utils/debugFilter.d.ts +1 -1
  325. package/dist/utils/debugFilter.js +8 -6
  326. package/dist/utils/debugFilter.js.map +1 -1
  327. package/dist/utils/delay.d.ts +2 -3
  328. package/dist/utils/delay.js +10 -16
  329. package/dist/utils/delay.js.map +1 -1
  330. package/dist/utils/evaluate.js +12 -14
  331. package/dist/utils/evaluate.js.map +1 -1
  332. package/dist/utils/ffmpeg.context.d.ts +6 -0
  333. package/dist/utils/ffmpeg.context.js +31 -0
  334. package/dist/utils/ffmpeg.context.js.map +1 -0
  335. package/dist/utils/ffmpeg.d.ts +85 -29
  336. package/dist/utils/ffmpeg.js +126 -129
  337. package/dist/utils/ffmpeg.js.map +1 -1
  338. package/dist/utils/fileLogger.d.ts +18 -2
  339. package/dist/utils/fileLogger.js +60 -31
  340. package/dist/utils/fileLogger.js.map +1 -1
  341. package/dist/utils/format.d.ts +7 -1
  342. package/dist/utils/format.js +22 -2
  343. package/dist/utils/format.js.map +1 -1
  344. package/dist/utils/html.js +1 -3
  345. package/dist/utils/html.js.map +1 -1
  346. package/dist/utils/index.d.ts +21 -20
  347. package/dist/utils/index.js +1 -0
  348. package/dist/utils/index.js.map +1 -1
  349. package/dist/utils/logger.js +31 -45
  350. package/dist/utils/logger.js.map +1 -1
  351. package/dist/utils/m3u.d.ts +18 -3
  352. package/dist/utils/m3u.js +28 -14
  353. package/dist/utils/m3u.js.map +1 -1
  354. package/dist/utils/memo.d.ts +19 -0
  355. package/dist/utils/memo.js +53 -0
  356. package/dist/utils/memo.js.map +1 -0
  357. package/dist/utils/morganStream.js +4 -4
  358. package/dist/utils/morganStream.js.map +1 -1
  359. package/dist/utils/pid.d.ts +2 -2
  360. package/dist/utils/pid.js +2 -2
  361. package/dist/utils/platform.d.ts +1 -1
  362. package/dist/utils/platform.js +3 -2
  363. package/dist/utils/platform.js.map +1 -1
  364. package/dist/utils/retry.d.ts +2 -0
  365. package/dist/utils/retry.js +9 -7
  366. package/dist/utils/retry.js.map +1 -1
  367. package/dist/utils/sanitize.d.ts +2 -2
  368. package/dist/utils/sanitize.js +4 -4
  369. package/dist/utils/streamContext.d.ts +7 -0
  370. package/dist/utils/streamContext.js +10 -1
  371. package/dist/utils/streamContext.js.map +1 -1
  372. package/dist/utils/timing.d.ts +6 -3
  373. package/dist/utils/timing.js +10 -6
  374. package/dist/utils/timing.js.map +1 -1
  375. package/dist/utils/version.d.ts +3 -2
  376. package/dist/utils/version.js +15 -28
  377. package/dist/utils/version.js.map +1 -1
  378. package/package.json +14 -10
  379. package/dist/config/providerPacks.d.ts +0 -46
  380. package/dist/config/providerPacks.js.map +0 -1
  381. package/dist/config/providers.d.ts +0 -175
  382. package/dist/config/providers.js +0 -691
  383. package/dist/config/providers.js.map +0 -1
  384. package/dist/native/intercept.d.ts +0 -35
  385. package/dist/native/intercept.js +0 -184
  386. package/dist/native/intercept.js.map +0 -1
  387. package/dist/routes/config/channels/routes.js +0 -1477
  388. package/dist/routes/config/channels/routes.js.map +0 -1
  389. package/dist/routes/config/providers.js.map +0 -1
  390. package/dist/routes/providers.d.ts +0 -6
  391. package/dist/routes/providers.js.map +0 -1
  392. /package/dist/routes/config/{providers.d.ts → services.d.ts} +0 -0
@@ -36,7 +36,7 @@ async function discoverGuideChannels(page) {
36
36
  return await evaluateWithAbort(page, () => {
37
37
  const results = [];
38
38
  const seenTmsids = new Set();
39
- // Build a channel-index to rowheader display name map from the program grid section. Rowheaders use the format "Channel {number} {display name}" — we
39
+ // Build a channel-index to rowheader display name map from the program grid section. Rowheaders use the format "Channel {number} {display name}" - we
40
40
  // extract just the display name portion by stripping the "Channel {number} " prefix.
41
41
  const rowheaderMap = new Map();
42
42
  for (const span of Array.from(document.querySelectorAll("span[id^=\"rowheader-\"]"))) {
@@ -45,7 +45,7 @@ async function discoverGuideChannels(page) {
45
45
  const text = span.textContent.trim();
46
46
  // Strip the "Channel {number} " prefix to get the display name. The prefix always follows this format.
47
47
  const prefixMatch = /^Channel \d+ (.+)$/.exec(text);
48
- if (prefixMatch) {
48
+ if (prefixMatch?.[1]) {
49
49
  rowheaderMap.set(index, prefixMatch[1]);
50
50
  }
51
51
  }
@@ -62,12 +62,11 @@ async function discoverGuideChannels(page) {
62
62
  const channelNumber = numberEl.textContent.trim();
63
63
  // Extract the Gracenote station ID from the logo image URL. The format is: /guide/{tmsid}?width=50&sourceType=colorhybrid.
64
64
  const src = logoImg.getAttribute("src") ?? "";
65
- const tmsidMatch = /\/guide\/(\d+)\?/.exec(src);
66
- if (!tmsidMatch) {
65
+ const tmsid = /\/guide\/(\d+)\?/.exec(src)?.[1];
66
+ if (!tmsid) {
67
67
  continue;
68
68
  }
69
- const tmsid = tmsidMatch[1];
70
- // Deduplicate by tmsid — first occurrence wins (lowest channel number). This eliminates legacy mirror ranges (1000+/1200+) that share the same tmsid
69
+ // Deduplicate by tmsid - first occurrence wins (lowest channel number). This eliminates legacy mirror ranges (1000+/1200+) that share the same tmsid
71
70
  // with primary entries but have no program listing data.
72
71
  if (seenTmsids.has(tmsid)) {
73
72
  continue;
@@ -88,7 +87,7 @@ async function discoverGuideChannels(page) {
88
87
  /**
89
88
  * Attempts to recover from a degraded Spectrum guide state by clearing cached site data via CDP and reloading the guide page. This targets a failure mode where
90
89
  * the guide grid container renders but channel entries are not populated, which can be caused by stale AngularJS template or API response caches. Cookies and
91
- * login session state are preserved — only caching layers are cleared.
90
+ * login session state are preserved - only caching layers are cleared.
92
91
  * @param page - The Puppeteer page object.
93
92
  * @returns Discovered channels after recovery, or an empty array if recovery failed.
94
93
  */
@@ -123,7 +122,7 @@ async function attemptGuideRecovery(page) {
123
122
  // Re-attempt channel discovery on the reloaded page.
124
123
  const channels = await discoverGuideChannels(page);
125
124
  if (channels.length > 0) {
126
- LOG.info("Spectrum TV guide recovery succeeded — discovered %s channels after clearing site data.", channels.length);
125
+ LOG.info("Spectrum TV guide recovery succeeded - discovered %s channels after clearing site data.", channels.length);
127
126
  }
128
127
  else {
129
128
  LOG.warn("Spectrum TV guide still empty after clearing site data.");
@@ -148,8 +147,8 @@ function populateSpectrumChannelCache(rawChannels) {
148
147
  let channelSelector;
149
148
  let affiliate;
150
149
  let networkKey;
151
- if (parenthetical) {
152
- const preName = parenthetical[1];
150
+ const preName = parenthetical?.[1];
151
+ if (preName) {
153
152
  // Check if this is a broadcast affiliate (e.g., "NBC (WFLA) HD") or a subchannel (e.g., "Buzzr (WTVT)").
154
153
  if (BROADCAST_NETWORKS.has(preName.toLowerCase())) {
155
154
  channelSelector = preName;
@@ -157,12 +156,12 @@ function populateSpectrumChannelCache(rawChannels) {
157
156
  networkKey = preName.toLowerCase();
158
157
  }
159
158
  else {
160
- // Subchannel or non-broadcast parenthetical — use the pre-parenthetical name as channelSelector.
159
+ // Subchannel or non-broadcast parenthetical - use the pre-parenthetical name as channelSelector.
161
160
  channelSelector = preName;
162
161
  }
163
162
  }
164
163
  else {
165
- // Cable channel — use the stripped display name as channelSelector.
164
+ // Cable channel - use the stripped display name as channelSelector.
166
165
  channelSelector = stripped;
167
166
  }
168
167
  const discovered = {
@@ -179,7 +178,7 @@ function populateSpectrumChannelCache(rawChannels) {
179
178
  // Second pass: add stripped display name keys and network name keys. Cable channel names take precedence over affiliate network names when keys collide (e.g.,
180
179
  // a cable channel named "Fox" would keep its key over a "FOX (WTVT)" affiliate entry).
181
180
  for (const { entry, networkKey, strippedKey } of entries) {
182
- // Add stripped display name key if not already taken. First-write wins — if two channels strip to the same name, the first (lower channel number) keeps it.
181
+ // Add stripped display name key if not already taken. First-write wins - if two channels strip to the same name, the first (lower channel number) keeps it.
183
182
  if (!spectrumChannelCache.has(strippedKey)) {
184
183
  spectrumChannelCache.set(strippedKey, entry);
185
184
  }
@@ -193,12 +192,12 @@ function populateSpectrumChannelCache(rawChannels) {
193
192
  * Looks up a channel in the unified cache using tiered matching logic:
194
193
  *
195
194
  * 1. Exact match: cache key equals the lowercased input (matches callsigns like "espnhd" and stripped names like "espn" and network names like "nbc").
196
- * 2. HD/DT suffix tolerance: input + "hd" or input + "dt" matches a cache key (e.g., "espn" → "espnhd", "wfla" → "wfladt").
195
+ * 2. HD/DT suffix tolerance: input + "hd" or input + "dt" matches a cache key (e.g., "espn" -> "espnhd", "wfla" -> "wfladt").
197
196
  * 3. Display name iteration: iterate all cache entries, check if discovered.name (lowercased) equals input. Catches long display names like "Discovery Channel"
198
197
  * when only the callsign-derived key was cached.
199
198
  *
200
199
  * When a non-exact match succeeds, the result is cached under the input key for O(1) lookup on subsequent calls. This function doubles as the resolveDirectUrl
201
- * hook — after the first tune populates the cache via channel discovery, every subsequent Spectrum tune resolves here without loading the guide page.
200
+ * hook - after the first tune populates the cache via channel discovery, every subsequent Spectrum tune resolves here without loading the guide page.
202
201
  * @param channelName - The channelSelector value (e.g., "ESPN", "NBC", "Discovery Channel").
203
202
  * @returns The matching cache entry or null if no match is found.
204
203
  */
@@ -238,7 +237,7 @@ function findSpectrumChannel(channelName) {
238
237
  }
239
238
  /**
240
239
  * Invalidates the cached Spectrum channel entry for the given channel selector. Called when a cached URL fails to produce a working stream. Deletes the
241
- * channelSelector key — the original keys from channel discovery are left intact and will be refreshed on the next strategy run when the guide page is reloaded.
240
+ * channelSelector key - the original keys from channel discovery are left intact and will be refreshed on the next strategy run when the guide page is reloaded.
242
241
  * @param channelSelector - The channel selector string to invalidate.
243
242
  */
244
243
  function invalidateSpectrumDirectUrl(channelSelector) {
@@ -283,7 +282,7 @@ function buildSpectrumDiscoveredChannels() {
283
282
  * 3. If no channels are discovered (degraded guide state), attempt recovery by clearing cached site data via CDP and reloading.
284
283
  * 4. Populate the unified channel cache with all discovered channels.
285
284
  * 5. Look up the target channel using tiered matching (exact, suffix tolerance, display name) against the cache.
286
- * 6. Navigate to the matched watch URL via page.goto() — direct URL navigation with no clicking.
285
+ * 6. Navigate to the matched watch URL via page.goto() - direct URL navigation with no clicking.
287
286
  * @param page - The Puppeteer page object.
288
287
  * @param profile - The resolved site profile with a non-null channelSelector (channel name, e.g., "ESPN", "CNN", "NBC").
289
288
  * @returns Result object with success status and optional failure reason.
@@ -300,7 +299,7 @@ async function spectrumGridStrategy(page, profile) {
300
299
  }
301
300
  // Discover all channels from the guide grid.
302
301
  let allChannels = await discoverGuideChannels(page);
303
- // If the guide loaded but no channels were discovered, the guide is in a degraded state — the grid container rendered but channel entries were not populated.
302
+ // If the guide loaded but no channels were discovered, the guide is in a degraded state - the grid container rendered but channel entries were not populated.
304
303
  // This can happen when stale AngularJS template or API response caches become inconsistent. Track consecutive occurrences and attempt recovery by clearing
305
304
  // cached site data once the threshold is reached.
306
305
  if (allChannels.length === 0) {
@@ -312,9 +311,9 @@ async function spectrumGridStrategy(page, profile) {
312
311
  }
313
312
  // If we still have no channels after the initial discovery and any recovery attempt, there is nothing to search or cache.
314
313
  if (allChannels.length === 0) {
315
- return { reason: "Spectrum guide is empty — no channels were discovered.", success: false };
314
+ return { reason: "Spectrum guide is empty - no channels were discovered.", success: false };
316
315
  }
317
- // Successful discovery — reset the consecutive empty counter and repopulate the unified channel cache. Always repopulate rather than skipping when the cache
316
+ // Successful discovery - reset the consecutive empty counter and repopulate the unified channel cache. Always repopulate rather than skipping when the cache
318
317
  // has entries, because invalidated entries need to be restored with fresh data from the guide.
319
318
  consecutiveEmptyDiscoveries = 0;
320
319
  populateSpectrumChannelCache(allChannels);
@@ -376,7 +375,7 @@ async function discoverSpectrumChannels(page) {
376
375
  return [];
377
376
  }
378
377
  const allChannels = await discoverGuideChannels(page);
379
- // Do not cache empty results — leave the cache empty so subsequent calls retry the full walk. Empty results can indicate no subscription or transient failures.
378
+ // Do not cache empty results - leave the cache empty so subsequent calls retry the full walk. Empty results can indicate no subscription or transient failures.
380
379
  if (allChannels.length === 0) {
381
380
  return [];
382
381
  }
@@ -400,7 +399,7 @@ export const spectrumProvider = {
400
399
  label: "Spectrum TV",
401
400
  // Profile for Spectrum TV (watch.spectrum.net) live guide grid. The guide page at /guide presents all ~442 streamable channels in a non-virtualized AngularJS
402
401
  // DOM. Channel headers provide callsigns, channel numbers, and Gracenote station IDs (tmsid from logo image URLs). The spectrumGrid strategy reads all channels
403
- // in a single evaluate pass, caches them, and navigates directly to /livetv?tmsid={stationId} — no clicking, no SPA state changes, no overlays. The channelSelector
402
+ // in a single evaluate pass, caches them, and navigates directly to /livetv?tmsid={stationId} - no clicking, no SPA state changes, no overlays. The channelSelector
404
403
  // matches against clean channel names (e.g., "ESPN", "CNN", "NBC") with callsign suffix tolerance and affiliate network name resolution.
405
404
  profile: {
406
405
  category: "multiChannel",
@@ -1 +1 @@
1
- {"version":3,"file":"spectrum.js","sourceRoot":"","sources":["../../../src/browser/tuning/spectrum.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spectrum.js","sourceRoot":"","sources":["../../../src/browser/tuning/spectrum.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import type { ChannelStrategyEntry } from "../../types/index.js";
1
+ import type { ChannelStrategyEntry } from "../../types/index.ts";
2
2
  export declare const thumbnailRowStrategy: ChannelStrategyEntry;
@@ -96,7 +96,7 @@ async function thumbnailRowStrategyFn(page, profile) {
96
96
  }, { timeout: CONFIG.playback.channelSwitchDelay });
97
97
  }
98
98
  catch {
99
- // Timeout — readyState never dropped. Proceed normally.
99
+ // Timeout - readyState never dropped. Proceed normally.
100
100
  }
101
101
  return { success: true };
102
102
  }
@@ -1,2 +1,2 @@
1
- import type { ChannelStrategyEntry } from "../../types/index.js";
1
+ import type { ChannelStrategyEntry } from "../../types/index.ts";
2
2
  export declare const tileClickStrategy: ChannelStrategyEntry;
@@ -2,7 +2,7 @@ import { LOG, evaluateWithAbort } from "../../utils/index.js";
2
2
  import { resolveMatchSelector, scrollAndClick } from "./shared.js";
3
3
  import { CONFIG } from "../../config/index.js";
4
4
  // Maximum number of play button click attempts before giving up. The first click sometimes misses due to coordinate shifts from SPA animations or overlay
5
- // interference — retrying with fresh coordinates resolves most transient failures.
5
+ // interference - retrying with fresh coordinates resolves most transient failures.
6
6
  const MAX_PLAY_CLICK_ATTEMPTS = 3;
7
7
  // Timeout in milliseconds to wait for the play button to disappear after clicking it. This is the verification signal that the SPA transitioned to the player view.
8
8
  // Kept short so retries happen quickly rather than burning the full videoTimeout on a silent miss.
@@ -17,7 +17,7 @@ const PLAY_CLICK_VERIFY_TIMEOUT = 3000;
17
17
  * 1. Find channel elements matching the resolved matchSelector CSS selector
18
18
  * 2. Walk up the DOM from the first visible match to find the nearest clickable ancestor (the tile container)
19
19
  * 3. Scroll the tile into view and click it
20
- * 4. If `playSelector` is configured: wait for the play button, click it, and verify the modal dismissed — retrying up to 3 times on silent failures
20
+ * 4. If `playSelector` is configured: wait for the play button, click it, and verify the modal dismissed - retrying up to 3 times on silent failures
21
21
  * @param page - The Puppeteer page object.
22
22
  * @param profile - The resolved site profile with a non-null channelSelector.
23
23
  * @returns Result object with success status and optional failure reason.
@@ -87,7 +87,7 @@ async function tileClickStrategyFn(page, profile) {
87
87
  }
88
88
  // Click the play button with retry. Coordinate-based clicks can silently miss due to SPA animations, overlay interference, or stale coordinates. We verify each
89
89
  // click by checking whether the play button disappears (indicating the modal dismissed and the SPA transitioned to the player). On failure, we re-read
90
- // coordinates and retry — the same pattern used by Sling's clickWithRetry.
90
+ // coordinates and retry - the same pattern used by Sling's clickWithRetry.
91
91
  for (let attempt = 0; attempt < MAX_PLAY_CLICK_ATTEMPTS; attempt++) {
92
92
  // Get the play button coordinates. Re-read on every attempt because SPA animations or layout shifts may have moved the button since the last read.
93
93
  // eslint-disable-next-line no-await-in-loop
@@ -104,7 +104,7 @@ async function tileClickStrategyFn(page, profile) {
104
104
  return null;
105
105
  }, [playButtonSelector]);
106
106
  if (!playTarget) {
107
- // Play button disappeared between attempts — the previous click likely worked and the SPA transitioned. This can happen when the verification timeout races
107
+ // Play button disappeared between attempts - the previous click likely worked and the SPA transitioned. This can happen when the verification timeout races
108
108
  // against a slow modal dismissal animation.
109
109
  if (attempt > 0) {
110
110
  LOG.debug("tuning:tileClick", "Play button disappeared before attempt %s. Previous click likely succeeded.", attempt + 1);
@@ -123,7 +123,7 @@ async function tileClickStrategyFn(page, profile) {
123
123
  return { success: true };
124
124
  }
125
125
  catch {
126
- // Play button still visible — the click had no effect. Log and retry.
126
+ // Play button still visible - the click had no effect. Log and retry.
127
127
  if (attempt < (MAX_PLAY_CLICK_ATTEMPTS - 1)) {
128
128
  LOG.info("Play button click attempt %s of %s did not dismiss the modal. Retrying with fresh coordinates.", attempt + 1, MAX_PLAY_CLICK_ATTEMPTS);
129
129
  }
@@ -1,2 +1,2 @@
1
- import type { ProviderModule } from "../../types/index.js";
1
+ import type { ProviderModule } from "../../types/index.ts";
2
2
  export declare const xfinityProvider: ProviderModule;
@@ -1,2 +1,2 @@
1
- import type { ProviderModule } from "../../types/index.js";
1
+ import type { ProviderModule } from "../../types/index.ts";
2
2
  export declare const yttvProvider: ProviderModule;
@@ -34,7 +34,7 @@ const CHANNEL_ALTERNATES = {
34
34
  * 3. Parenthetical suffix: cache key starts with the name followed by " (". Catches timezone/region variants like "magnolia network (pacific)".
35
35
  *
36
36
  * When a non-exact match succeeds, the result is also cached under the primary channelSelector key for O(1) lookup on subsequent calls. This function doubles as
37
- * the resolveDirectUrl hook — after the first tune populates the cache via channel discovery, every subsequent YTTV tune resolves here without loading the guide
37
+ * the resolveDirectUrl hook - after the first tune populates the cache via channel discovery, every subsequent YTTV tune resolves here without loading the guide
38
38
  * page.
39
39
  * @param channelName - The channelSelector value (e.g., "CNN", "NBC", "CW").
40
40
  * @returns The full watch URL or null if no match is found.
@@ -44,7 +44,6 @@ function findWatchUrl(channelName) {
44
44
  // Build the candidate list: primary name first, then any known alternates for markets where the affiliate uses a different name. The eslint disable is needed
45
45
  // because TypeScript's Record indexing doesn't capture that the key may not exist at runtime.
46
46
  const alternates = CHANNEL_ALTERNATES[lower];
47
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
48
47
  const namesToTry = alternates ? [lower, ...alternates.map((a) => a.toLowerCase())] : [lower];
49
48
  for (const name of namesToTry) {
50
49
  // Tier 1: Exact match.
@@ -77,7 +76,7 @@ function findWatchUrl(channelName) {
77
76
  }
78
77
  /**
79
78
  * Invalidates the cached YouTube TV watch URL for the given channel selector. Called when a cached URL fails to produce a working stream. Deletes the
80
- * channelSelector key — the guide-name entries from channel discovery are left intact and will be refreshed on the next strategy run when the guide page is
79
+ * channelSelector key - the guide-name entries from channel discovery are left intact and will be refreshed on the next strategy run when the guide page is
81
80
  * reloaded.
82
81
  * @param channelSelector - The channel selector string to invalidate.
83
82
  */
@@ -120,13 +119,13 @@ async function discoverGuideChannels(page) {
120
119
  /**
121
120
  * Attempts to recover from a degraded YouTube TV guide state by clearing cached site data (service workers and cache storage) via CDP and reloading the guide page.
122
121
  * This targets the specific failure mode where the guide grid container renders but channel entries are not populated, typically caused by stale browser session
123
- * state after a Chrome update. Cookies and login session are preserved — only caching layers are cleared.
122
+ * state after a Chrome update. Cookies and login session are preserved - only caching layers are cleared.
124
123
  * @param page - The Puppeteer page object.
125
124
  * @returns Discovered channels after recovery, or an empty array if recovery failed.
126
125
  */
127
126
  async function attemptGuideRecovery(page) {
128
127
  LOG.warn("Clearing YouTube TV cached site data to recover from empty guide.");
129
- // Clear service workers and cache storage for the YouTube TV origin. These are caching layers that will be repopulated on reload — cookies and login session
128
+ // Clear service workers and cache storage for the YouTube TV origin. These are caching layers that will be repopulated on reload - cookies and login session
130
129
  // state are deliberately preserved to avoid forcing re-authentication.
131
130
  try {
132
131
  const client = await page.createCDPSession();
@@ -156,7 +155,7 @@ async function attemptGuideRecovery(page) {
156
155
  // Re-attempt channel discovery on the reloaded page.
157
156
  const channels = await discoverGuideChannels(page);
158
157
  if (channels.length > 0) {
159
- LOG.info("YouTube TV guide recovery succeeded — discovered %s channels after clearing site data.", channels.length);
158
+ LOG.info("YouTube TV guide recovery succeeded - discovered %s channels after clearing site data.", channels.length);
160
159
  }
161
160
  else {
162
161
  LOG.warn("YouTube TV guide still empty after clearing site data.");
@@ -190,8 +189,8 @@ function buildYttvDiscoveredChannels() {
190
189
  }
191
190
  /**
192
191
  * Populates the unified channel cache from raw guide channel data. For each channel, builds a DiscoveredChannel with affiliate detection and pairs it with the
193
- * full watch URL. Detects affiliates via two mechanisms: (1) prefix+digit pattern constrained to known broadcast networks (e.g., "NBC 5" → affiliate of "NBC"),
194
- * and (2) CHANNEL_ALTERNATES entries for affiliates that use different names entirely (e.g., "WGN" → affiliate of "CW"). Shared by youtubeGridStrategy
192
+ * full watch URL. Detects affiliates via two mechanisms: (1) prefix+digit pattern constrained to known broadcast networks (e.g., "NBC 5" -> affiliate of "NBC"),
193
+ * and (2) CHANNEL_ALTERNATES entries for affiliates that use different names entirely (e.g., "WGN" -> affiliate of "CW"). Shared by youtubeGridStrategy
195
194
  * (tuning-time population) and discoverYttvChannels (discovery endpoint).
196
195
  * @param rawChannels - Array of channel names and watch paths from discoverGuideChannels().
197
196
  */
@@ -207,13 +206,13 @@ function populateYttvChannelCache(rawChannels) {
207
206
  const entry = { channelSelector: ch.name, name: ch.name };
208
207
  // Detect affiliates via prefix+digit pattern, but only for known broadcast networks. This prevents false positives like "ESPN 2" or "Fox Sports 1"
209
208
  // from being tagged as affiliates.
210
- const prefixMatch = YTTV_AFFILIATE_PATTERN.exec(ch.name);
211
- if (prefixMatch && YTTV_BROADCAST_NETWORKS.has(prefixMatch[1].toLowerCase())) {
212
- entry.affiliate = prefixMatch[1].toUpperCase();
209
+ const prefixMatch = YTTV_AFFILIATE_PATTERN.exec(ch.name)?.[1];
210
+ if (prefixMatch && YTTV_BROADCAST_NETWORKS.has(prefixMatch.toLowerCase())) {
211
+ entry.affiliate = prefixMatch.toUpperCase();
213
212
  entry.channelSelector = entry.affiliate;
214
213
  }
215
214
  else {
216
- // Detect affiliates via CHANNEL_ALTERNATES (e.g., "WGN" → affiliate of "CW", "WTTW" → affiliate of "PBS"). Only checked when prefix+digit didn't
215
+ // Detect affiliates via CHANNEL_ALTERNATES (e.g., "WGN" -> affiliate of "CW", "WTTW" -> affiliate of "PBS"). Only checked when prefix+digit didn't
217
216
  // match, since the two mechanisms target different affiliate naming patterns.
218
217
  const altNetwork = alternateToNetwork.get(ch.name.toLowerCase());
219
218
  if (altNetwork) {
@@ -251,7 +250,7 @@ async function youtubeGridStrategy(page, profile) {
251
250
  }
252
251
  // Discover all channels from the guide grid.
253
252
  let allChannels = await discoverGuideChannels(page);
254
- // If the guide loaded but no channels were discovered, the guide is in a degraded state — the grid container rendered but channel entries were not populated.
253
+ // If the guide loaded but no channels were discovered, the guide is in a degraded state - the grid container rendered but channel entries were not populated.
255
254
  // This can happen when stale browser session state (service workers, cached SPA code) becomes inconsistent after a Chrome update. Track consecutive occurrences
256
255
  // and attempt recovery by clearing cached site data once the threshold is reached.
257
256
  if (allChannels.length === 0) {
@@ -264,9 +263,9 @@ async function youtubeGridStrategy(page, profile) {
264
263
  // If we still have no channels after the initial discovery and any recovery attempt, there is nothing to search or cache. This error message is deliberately
265
264
  // distinct from the name-mismatch "not found" message below so users can immediately tell the guide itself is broken rather than suspecting a wrong channel name.
266
265
  if (allChannels.length === 0) {
267
- return { reason: "YouTube TV guide is empty — no channels were discovered.", success: false };
266
+ return { reason: "YouTube TV guide is empty - no channels were discovered.", success: false };
268
267
  }
269
- // Successful discovery — reset the consecutive empty counter and repopulate the unified channel cache. Always repopulate rather than skipping when the cache has
268
+ // Successful discovery - reset the consecutive empty counter and repopulate the unified channel cache. Always repopulate rather than skipping when the cache has
270
269
  // entries, because invalidated entries (deleted by invalidateYttvDirectUrl) need to be restored with fresh watch URLs from the guide.
271
270
  consecutiveEmptyDiscoveries = 0;
272
271
  populateYttvChannelCache(allChannels);
@@ -326,7 +325,7 @@ async function discoverYttvChannels(page) {
326
325
  return buildYttvDiscoveredChannels();
327
326
  }
328
327
  // Wait for at least one EPG row to confirm the guide grid has rendered. The route handler navigates with networkidle2, which ensures all API data has arrived
329
- // before this function is called — no additional network idle wait is needed here.
328
+ // before this function is called - no additional network idle wait is needed here.
330
329
  try {
331
330
  await page.waitForSelector("ytu-epg-row", { timeout: CONFIG.streaming.videoTimeout });
332
331
  }
@@ -334,7 +333,7 @@ async function discoverYttvChannels(page) {
334
333
  return [];
335
334
  }
336
335
  const allChannels = await discoverGuideChannels(page);
337
- // Do not cache empty results — leave the cache empty so subsequent calls retry the full walk. Empty results can indicate no subscription or transient failures.
336
+ // Do not cache empty results - leave the cache empty so subsequent calls retry the full walk. Empty results can indicate no subscription or transient failures.
338
337
  if (allChannels.length === 0) {
339
338
  return [];
340
339
  }
@@ -358,7 +357,7 @@ export const yttvProvider = {
358
357
  label: "YouTube TV",
359
358
  // Profile for YouTube TV (tv.youtube.com/live). The guide grid renders all ~256 channel rows in the DOM simultaneously (no virtualization), each containing a
360
359
  // direct watch URL. The youtubeGrid strategy performs a single querySelector to find the target channel's watch link via aria-label, extracts the URL, and
361
- // navigates directly — no scrolling, clicking, or timing workarounds needed. Uses selectReadyVideo because the watch page has ~36 video elements (live preview
360
+ // navigates directly - no scrolling, clicking, or timing workarounds needed. Uses selectReadyVideo because the watch page has ~36 video elements (live preview
362
361
  // thumbnails from the guide) but only one active stream with readyState >= 3 and videoWidth > 0. Extends fullscreenApi because requestFullscreen() works
363
362
  // directly on the active video element without gesture requirements.
364
363
  profile: {
@@ -1 +1 @@
1
- {"version":3,"file":"youtubeTv.js","sourceRoot":"","sources":["../../../src/browser/tuning/youtubeTv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"youtubeTv.js","sourceRoot":"","sources":["../../../src/browser/tuning/youtubeTv.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Frame, Page } from "puppeteer-core";
2
- import type { Nullable, ResolvedSiteProfile, TuneResult, VideoSelectorType } from "../types/index.js";
2
+ import type { Nullable, ResolvedSiteProfile, TuneResult, VideoSelectorType } from "../types/index.ts";
3
3
  /**
4
4
  * Builds a selector type identifier for the video element based on the site profile. This returns a string that browser context code interprets to select the
5
5
  * appropriate video element. Using a string identifier instead of passing functions avoids serialization issues with page.evaluate() and is more secure than
@@ -44,7 +44,7 @@ export declare function getVideoState(context: Frame | Page, selectorType: Video
44
44
  */
45
45
  export declare function enforceVideoVolume(context: Frame | Page, selectorType: VideoSelectorType): Promise<void>;
46
46
  /**
47
- * 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
47
+ * 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
48
48
  * for content delivery, but the page stays alive for token refresh. Without suppression, the video continues playing audibly on the local machine.
49
49
  *
50
50
  * Uses two complementary mechanisms: (1) an immediate evaluate() to mute all currently playing video elements, and (2) an evaluateOnNewDocument() prototype override
@@ -213,7 +213,7 @@ export declare function triggerFullscreen(page: Page, context: Frame | Page, pro
213
213
  export declare function verifyFullscreen(context: Frame | Page, selectorType: VideoSelectorType): Promise<Nullable<boolean>>;
214
214
  /**
215
215
  * Ensures the video is displayed fullscreen with verification and retry logic. For profiles that use the native Fullscreen API, this serializes through a
216
- * 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
216
+ * 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
217
217
  * concurrent tabs would steal foreground from each other. When skipNativeFullscreen is true (monitor recovery), the mutex is bypassed entirely.
218
218
  * @param page - The Puppeteer page object for keyboard input.
219
219
  * @param context - The frame or page containing the video element.
@@ -261,6 +261,21 @@ interface EnsurePlaybackOptions {
261
261
  * @param options - Optional recovery configuration. Omit for initial tune (full fullscreen behavior, level 1).
262
262
  */
263
263
  export declare function ensurePlayback(page: Page, context: Frame | Page, profile: ResolvedSiteProfile, options?: EnsurePlaybackOptions): Promise<void>;
264
+ /**
265
+ * Optional behaviors for initializePlayback(). All fields are optional; an empty options object preserves the default tune flow.
266
+ */
267
+ export interface InitializePlaybackOptions {
268
+ /**
269
+ * Forwarded to selectChannel() so the resolution layer can persist a resolved category selector (e.g., Fox "FOXD2C" -> "WFLD") back to the user's channel
270
+ * store. The streaming setup layer constructs this closure with the channel key and service tag in scope.
271
+ */
272
+ persistResolution?: (resolvedSelector: string) => Promise<void>;
273
+ /**
274
+ * When true, skip the channel selection phase entirely. Used when navigating directly to a cached watch URL that already targets the correct channel - only
275
+ * video detection, playback, and fullscreen setup are needed.
276
+ */
277
+ skipChannelSelection?: boolean;
278
+ }
264
279
  /**
265
280
  * Performs all post-navigation channel initialization: selects the channel, finds the video context, clicks to play if needed, waits for video readiness, and
266
281
  * ensures playback with fullscreen styling. This function is separated from navigateToPage() so that retryOperation() in setup.ts can wrap only navigation with a
@@ -272,11 +287,10 @@ export declare function ensurePlayback(page: Page, context: Frame | Page, profil
272
287
  *
273
288
  * @param page - The Puppeteer page object.
274
289
  * @param profile - The site profile containing all behavior flags.
275
- * @param skipChannelSelection - When true, skip the channel selection phase entirely. Used when navigating directly to a cached watch URL that already targets
276
- * the correct channel — only video detection, playback, and fullscreen setup are needed.
290
+ * @param options - Optional behaviors. See InitializePlaybackOptions.
277
291
  * @returns The video context (frame or page) for subsequent monitoring, and a directTune flag when the channel was tuned via API interception.
278
292
  */
279
- export declare function initializePlayback(page: Page, profile: ResolvedSiteProfile, skipChannelSelection?: boolean): Promise<TuneResult>;
293
+ export declare function initializePlayback(page: Page, profile: ResolvedSiteProfile, options?: InitializePlaybackOptions): Promise<TuneResult>;
280
294
  /**
281
295
  * Tunes to a channel by navigating to the URL and initializing video playback. This is the single source of truth for channel initialization, used by both initial
282
296
  * stream setup and recovery. Having one authoritative function ensures consistent behavior and prevents code divergence between setup and recovery paths.