prismcast 1.10.2 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/dist/app.d.ts +6 -3
  2. package/dist/app.d.ts.map +1 -0
  3. package/dist/app.js +140 -86
  4. package/dist/app.js.map +1 -1
  5. package/dist/browser/blockedPage.d.ts +80 -0
  6. package/dist/browser/blockedPage.d.ts.map +1 -0
  7. package/dist/browser/blockedPage.js +209 -0
  8. package/dist/browser/blockedPage.js.map +1 -0
  9. package/dist/browser/browserSupervisor.d.ts +80 -0
  10. package/dist/browser/browserSupervisor.d.ts.map +1 -0
  11. package/dist/browser/browserSupervisor.js +186 -0
  12. package/dist/browser/browserSupervisor.js.map +1 -0
  13. package/dist/browser/cdp.d.ts +1 -0
  14. package/dist/browser/cdp.d.ts.map +1 -0
  15. package/dist/browser/cdp.js +6 -5
  16. package/dist/browser/cdp.js.map +1 -1
  17. package/dist/browser/channelSelection.d.ts +45 -14
  18. package/dist/browser/channelSelection.d.ts.map +1 -0
  19. package/dist/browser/channelSelection.js +81 -18
  20. package/dist/browser/channelSelection.js.map +1 -1
  21. package/dist/browser/consent.d.ts +152 -0
  22. package/dist/browser/consent.d.ts.map +1 -0
  23. package/dist/browser/consent.js +418 -0
  24. package/dist/browser/consent.js.map +1 -0
  25. package/dist/browser/display.d.ts +1 -0
  26. package/dist/browser/display.d.ts.map +1 -0
  27. package/dist/browser/hlsPlaylistObserver.d.ts +55 -0
  28. package/dist/browser/hlsPlaylistObserver.d.ts.map +1 -0
  29. package/dist/browser/hlsPlaylistObserver.js +132 -0
  30. package/dist/browser/hlsPlaylistObserver.js.map +1 -0
  31. package/dist/browser/index.d.ts +67 -40
  32. package/dist/browser/index.d.ts.map +1 -0
  33. package/dist/browser/index.js +508 -300
  34. package/dist/browser/index.js.map +1 -1
  35. package/dist/browser/launchGovernor.d.ts +89 -0
  36. package/dist/browser/launchGovernor.d.ts.map +1 -0
  37. package/dist/browser/launchGovernor.js +96 -0
  38. package/dist/browser/launchGovernor.js.map +1 -0
  39. package/dist/browser/login.d.ts +10 -2
  40. package/dist/browser/login.d.ts.map +1 -0
  41. package/dist/browser/login.js +36 -5
  42. package/dist/browser/login.js.map +1 -1
  43. package/dist/browser/manifestInterceptor.d.ts +102 -49
  44. package/dist/browser/manifestInterceptor.d.ts.map +1 -0
  45. package/dist/browser/manifestInterceptor.js +219 -237
  46. package/dist/browser/manifestInterceptor.js.map +1 -1
  47. package/dist/browser/pageStaleness.d.ts +30 -0
  48. package/dist/browser/pageStaleness.d.ts.map +1 -0
  49. package/dist/browser/pageStaleness.js +76 -0
  50. package/dist/browser/pageStaleness.js.map +1 -0
  51. package/dist/browser/precaching.d.ts +95 -3
  52. package/dist/browser/precaching.d.ts.map +1 -0
  53. package/dist/browser/precaching.js +499 -65
  54. package/dist/browser/precaching.js.map +1 -1
  55. package/dist/browser/tabNetworkObserver.d.ts +49 -0
  56. package/dist/browser/tabNetworkObserver.d.ts.map +1 -0
  57. package/dist/browser/tabNetworkObserver.js +144 -0
  58. package/dist/browser/tabNetworkObserver.js.map +1 -0
  59. package/dist/browser/tuning/cache.d.ts +61 -0
  60. package/dist/browser/tuning/cache.d.ts.map +1 -0
  61. package/dist/browser/tuning/cache.js +62 -0
  62. package/dist/browser/tuning/cache.js.map +1 -0
  63. package/dist/browser/tuning/comcastPolymer.d.ts +3 -2
  64. package/dist/browser/tuning/comcastPolymer.d.ts.map +1 -0
  65. package/dist/browser/tuning/comcastPolymer.js +79 -102
  66. package/dist/browser/tuning/comcastPolymer.js.map +1 -1
  67. package/dist/browser/tuning/cox.d.ts +1 -0
  68. package/dist/browser/tuning/cox.d.ts.map +1 -0
  69. package/dist/browser/tuning/directv.d.ts +1 -0
  70. package/dist/browser/tuning/directv.d.ts.map +1 -0
  71. package/dist/browser/tuning/directv.js +52 -46
  72. package/dist/browser/tuning/directv.js.map +1 -1
  73. package/dist/browser/tuning/fox.d.ts +1 -0
  74. package/dist/browser/tuning/fox.d.ts.map +1 -0
  75. package/dist/browser/tuning/fox.js +13 -12
  76. package/dist/browser/tuning/fox.js.map +1 -1
  77. package/dist/browser/tuning/gridSearch.d.ts +68 -0
  78. package/dist/browser/tuning/gridSearch.d.ts.map +1 -0
  79. package/dist/browser/tuning/gridSearch.js +85 -0
  80. package/dist/browser/tuning/gridSearch.js.map +1 -0
  81. package/dist/browser/tuning/hbo.d.ts +1 -0
  82. package/dist/browser/tuning/hbo.d.ts.map +1 -0
  83. package/dist/browser/tuning/hbo.js +73 -45
  84. package/dist/browser/tuning/hbo.js.map +1 -1
  85. package/dist/browser/tuning/hulu.d.ts +1 -0
  86. package/dist/browser/tuning/hulu.d.ts.map +1 -0
  87. package/dist/browser/tuning/hulu.js +128 -173
  88. package/dist/browser/tuning/hulu.js.map +1 -1
  89. package/dist/browser/tuning/shared.d.ts +75 -5
  90. package/dist/browser/tuning/shared.d.ts.map +1 -0
  91. package/dist/browser/tuning/shared.js +216 -6
  92. package/dist/browser/tuning/shared.js.map +1 -1
  93. package/dist/browser/tuning/sling.d.ts +1 -0
  94. package/dist/browser/tuning/sling.d.ts.map +1 -0
  95. package/dist/browser/tuning/sling.js +105 -126
  96. package/dist/browser/tuning/sling.js.map +1 -1
  97. package/dist/browser/tuning/spectrum.d.ts +1 -0
  98. package/dist/browser/tuning/spectrum.d.ts.map +1 -0
  99. package/dist/browser/tuning/spectrum.js +80 -125
  100. package/dist/browser/tuning/spectrum.js.map +1 -1
  101. package/dist/browser/tuning/thumbnailRow.d.ts +1 -0
  102. package/dist/browser/tuning/thumbnailRow.d.ts.map +1 -0
  103. package/dist/browser/tuning/thumbnailRow.js +8 -2
  104. package/dist/browser/tuning/thumbnailRow.js.map +1 -1
  105. package/dist/browser/tuning/tileClick.d.ts +1 -0
  106. package/dist/browser/tuning/tileClick.d.ts.map +1 -0
  107. package/dist/browser/tuning/tileClick.js +3 -2
  108. package/dist/browser/tuning/tileClick.js.map +1 -1
  109. package/dist/browser/tuning/xfinity.d.ts +1 -0
  110. package/dist/browser/tuning/xfinity.d.ts.map +1 -0
  111. package/dist/browser/tuning/youtubeTv.d.ts +1 -0
  112. package/dist/browser/tuning/youtubeTv.d.ts.map +1 -0
  113. package/dist/browser/tuning/youtubeTv.js +74 -127
  114. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  115. package/dist/browser/video.d.ts +54 -14
  116. package/dist/browser/video.d.ts.map +1 -0
  117. package/dist/browser/video.js +296 -138
  118. package/dist/browser/video.js.map +1 -1
  119. package/dist/channels/index.d.ts +1 -0
  120. package/dist/channels/index.d.ts.map +1 -0
  121. package/dist/channels/index.js +12 -9
  122. package/dist/channels/index.js.map +1 -1
  123. package/dist/config/channelForm.d.ts +15 -1
  124. package/dist/config/channelForm.d.ts.map +1 -0
  125. package/dist/config/channelForm.js +28 -12
  126. package/dist/config/channelForm.js.map +1 -1
  127. package/dist/config/consistencyProbe.d.ts +1 -0
  128. package/dist/config/consistencyProbe.d.ts.map +1 -0
  129. package/dist/config/consistencyProbe.js +27 -21
  130. package/dist/config/consistencyProbe.js.map +1 -1
  131. package/dist/config/health.d.ts +41 -8
  132. package/dist/config/health.d.ts.map +1 -0
  133. package/dist/config/health.js +189 -38
  134. package/dist/config/health.js.map +1 -1
  135. package/dist/config/index.d.ts +55 -3
  136. package/dist/config/index.d.ts.map +1 -0
  137. package/dist/config/index.js +320 -69
  138. package/dist/config/index.js.map +1 -1
  139. package/dist/config/paths.d.ts +10 -9
  140. package/dist/config/paths.d.ts.map +1 -0
  141. package/dist/config/paths.js +11 -11
  142. package/dist/config/paths.js.map +1 -1
  143. package/dist/config/persistence.context.d.ts +1 -0
  144. package/dist/config/persistence.context.d.ts.map +1 -0
  145. package/dist/config/persistence.d.ts +13 -10
  146. package/dist/config/persistence.d.ts.map +1 -0
  147. package/dist/config/persistence.js +40 -21
  148. package/dist/config/persistence.js.map +1 -1
  149. package/dist/config/presets.d.ts +1 -0
  150. package/dist/config/presets.d.ts.map +1 -0
  151. package/dist/config/profiles.d.ts +22 -15
  152. package/dist/config/profiles.d.ts.map +1 -0
  153. package/dist/config/profiles.js +81 -47
  154. package/dist/config/profiles.js.map +1 -1
  155. package/dist/config/providerLineups.d.ts +47 -0
  156. package/dist/config/providerLineups.d.ts.map +1 -0
  157. package/dist/config/providerLineups.js +137 -0
  158. package/dist/config/providerLineups.js.map +1 -0
  159. package/dist/config/reactivity.d.ts +84 -0
  160. package/dist/config/reactivity.d.ts.map +1 -0
  161. package/dist/config/reactivity.js +226 -0
  162. package/dist/config/reactivity.js.map +1 -0
  163. package/dist/config/servicePacks.d.ts +18 -2
  164. package/dist/config/servicePacks.d.ts.map +1 -0
  165. package/dist/config/servicePacks.js +53 -11
  166. package/dist/config/servicePacks.js.map +1 -1
  167. package/dist/config/services.d.ts +21 -15
  168. package/dist/config/services.d.ts.map +1 -0
  169. package/dist/config/services.js +35 -24
  170. package/dist/config/services.js.map +1 -1
  171. package/dist/config/sites.d.ts +6 -4
  172. package/dist/config/sites.d.ts.map +1 -0
  173. package/dist/config/sites.js +15 -11
  174. package/dist/config/sites.js.map +1 -1
  175. package/dist/config/userChannels.d.ts +129 -30
  176. package/dist/config/userChannels.d.ts.map +1 -0
  177. package/dist/config/userChannels.js +333 -68
  178. package/dist/config/userChannels.js.map +1 -1
  179. package/dist/config/userConfig.d.ts +14 -9
  180. package/dist/config/userConfig.d.ts.map +1 -0
  181. package/dist/config/userConfig.js +87 -25
  182. package/dist/config/userConfig.js.map +1 -1
  183. package/dist/config/userProfiles.d.ts +10 -6
  184. package/dist/config/userProfiles.d.ts.map +1 -0
  185. package/dist/config/userProfiles.js +64 -39
  186. package/dist/config/userProfiles.js.map +1 -1
  187. package/dist/hdhr/channelMap.d.ts +1 -0
  188. package/dist/hdhr/channelMap.d.ts.map +1 -0
  189. package/dist/hdhr/deviceId.d.ts +1 -0
  190. package/dist/hdhr/deviceId.d.ts.map +1 -0
  191. package/dist/hdhr/discover.d.ts +1 -0
  192. package/dist/hdhr/discover.d.ts.map +1 -0
  193. package/dist/hdhr/discover.js +48 -47
  194. package/dist/hdhr/discover.js.map +1 -1
  195. package/dist/hdhr/getHandlers.d.ts +29 -0
  196. package/dist/hdhr/getHandlers.d.ts.map +1 -0
  197. package/dist/hdhr/getHandlers.js +196 -0
  198. package/dist/hdhr/getHandlers.js.map +1 -0
  199. package/dist/hdhr/identity.d.ts +36 -0
  200. package/dist/hdhr/identity.d.ts.map +1 -0
  201. package/dist/hdhr/identity.js +51 -0
  202. package/dist/hdhr/identity.js.map +1 -0
  203. package/dist/hdhr/index.d.ts +22 -4
  204. package/dist/hdhr/index.d.ts.map +1 -0
  205. package/dist/hdhr/index.js +229 -54
  206. package/dist/hdhr/index.js.map +1 -1
  207. package/dist/hdhr/protocol.d.ts +75 -0
  208. package/dist/hdhr/protocol.d.ts.map +1 -0
  209. package/dist/hdhr/protocol.js +264 -0
  210. package/dist/hdhr/protocol.js.map +1 -0
  211. package/dist/hdhr/tunerState.d.ts +24 -0
  212. package/dist/hdhr/tunerState.d.ts.map +1 -0
  213. package/dist/hdhr/tunerState.js +67 -0
  214. package/dist/hdhr/tunerState.js.map +1 -0
  215. package/dist/hdhr/udp.d.ts +43 -0
  216. package/dist/hdhr/udp.d.ts.map +1 -0
  217. package/dist/hdhr/udp.js +277 -0
  218. package/dist/hdhr/udp.js.map +1 -0
  219. package/dist/identity.d.ts +1 -0
  220. package/dist/identity.d.ts.map +1 -0
  221. package/dist/identity.js +13 -11
  222. package/dist/identity.js.map +1 -1
  223. package/dist/index.d.ts +1 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +11 -12
  226. package/dist/index.js.map +1 -1
  227. package/dist/native/codecInference.d.ts +1 -0
  228. package/dist/native/codecInference.d.ts.map +1 -0
  229. package/dist/native/codecInference.js +50 -5
  230. package/dist/native/codecInference.js.map +1 -1
  231. package/dist/native/decrypt.d.ts +6 -2
  232. package/dist/native/decrypt.d.ts.map +1 -0
  233. package/dist/native/decrypt.js +15 -8
  234. package/dist/native/decrypt.js.map +1 -1
  235. package/dist/native/index.d.ts +40 -17
  236. package/dist/native/index.d.ts.map +1 -0
  237. package/dist/native/index.js +281 -120
  238. package/dist/native/index.js.map +1 -1
  239. package/dist/native/probe.d.ts +114 -18
  240. package/dist/native/probe.d.ts.map +1 -0
  241. package/dist/native/probe.js +452 -115
  242. package/dist/native/probe.js.map +1 -1
  243. package/dist/native/proxy.d.ts +57 -5
  244. package/dist/native/proxy.d.ts.map +1 -0
  245. package/dist/native/proxy.js +604 -170
  246. package/dist/native/proxy.js.map +1 -1
  247. package/dist/native/tokenExpiry.d.ts +1 -0
  248. package/dist/native/tokenExpiry.d.ts.map +1 -0
  249. package/dist/native/tokenExpiry.js +1 -1
  250. package/dist/routes/assets.d.ts +1 -0
  251. package/dist/routes/assets.d.ts.map +1 -0
  252. package/dist/routes/assets.js +4 -2
  253. package/dist/routes/assets.js.map +1 -1
  254. package/dist/routes/auth.d.ts +1 -0
  255. package/dist/routes/auth.d.ts.map +1 -0
  256. package/dist/routes/auth.js +0 -1
  257. package/dist/routes/auth.js.map +1 -1
  258. package/dist/routes/cdp.d.ts +5 -5
  259. package/dist/routes/cdp.d.ts.map +1 -0
  260. package/dist/routes/cdp.js +59 -20
  261. package/dist/routes/cdp.js.map +1 -1
  262. package/dist/routes/channels.d.ts +1 -0
  263. package/dist/routes/channels.d.ts.map +1 -0
  264. package/dist/routes/channels.js +2 -1
  265. package/dist/routes/channels.js.map +1 -1
  266. package/dist/routes/clientActions.d.ts +98 -0
  267. package/dist/routes/clientActions.d.ts.map +1 -0
  268. package/dist/routes/clientActions.js +113 -0
  269. package/dist/routes/clientActions.js.map +1 -0
  270. package/dist/routes/components.d.ts +5 -3
  271. package/dist/routes/components.d.ts.map +1 -0
  272. package/dist/routes/components.js +36 -39
  273. package/dist/routes/components.js.map +1 -1
  274. package/dist/routes/config/channels/endpoints/browse.d.ts +1 -0
  275. package/dist/routes/config/channels/endpoints/browse.d.ts.map +1 -0
  276. package/dist/routes/config/channels/endpoints/browse.js +23 -10
  277. package/dist/routes/config/channels/endpoints/browse.js.map +1 -1
  278. package/dist/routes/config/channels/endpoints/bulk.d.ts +1 -0
  279. package/dist/routes/config/channels/endpoints/bulk.d.ts.map +1 -0
  280. package/dist/routes/config/channels/endpoints/bulk.js +5 -3
  281. package/dist/routes/config/channels/endpoints/bulk.js.map +1 -1
  282. package/dist/routes/config/channels/endpoints/crud.d.ts +1 -0
  283. package/dist/routes/config/channels/endpoints/crud.d.ts.map +1 -0
  284. package/dist/routes/config/channels/endpoints/crud.js +85 -93
  285. package/dist/routes/config/channels/endpoints/crud.js.map +1 -1
  286. package/dist/routes/config/channels/endpoints/importExport.d.ts +1 -0
  287. package/dist/routes/config/channels/endpoints/importExport.d.ts.map +1 -0
  288. package/dist/routes/config/channels/endpoints/importExport.js +6 -3
  289. package/dist/routes/config/channels/endpoints/importExport.js.map +1 -1
  290. package/dist/routes/config/channels/endpoints/predefined.d.ts +1 -0
  291. package/dist/routes/config/channels/endpoints/predefined.d.ts.map +1 -0
  292. package/dist/routes/config/channels/endpoints/prefs.d.ts +1 -0
  293. package/dist/routes/config/channels/endpoints/prefs.d.ts.map +1 -0
  294. package/dist/routes/config/channels/endpoints/prefs.js +2 -1
  295. package/dist/routes/config/channels/endpoints/prefs.js.map +1 -1
  296. package/dist/routes/config/channels/endpoints/service.d.ts +2 -1
  297. package/dist/routes/config/channels/endpoints/service.d.ts.map +1 -0
  298. package/dist/routes/config/channels/endpoints/service.js +3 -1
  299. package/dist/routes/config/channels/endpoints/service.js.map +1 -1
  300. package/dist/routes/config/channels/endpoints/tags.d.ts +1 -0
  301. package/dist/routes/config/channels/endpoints/tags.d.ts.map +1 -0
  302. package/dist/routes/config/channels/endpoints/tags.js +13 -7
  303. package/dist/routes/config/channels/endpoints/tags.js.map +1 -1
  304. package/dist/routes/config/channels/healthBridge.d.ts +24 -0
  305. package/dist/routes/config/channels/healthBridge.d.ts.map +1 -0
  306. package/dist/routes/config/channels/healthBridge.js +71 -0
  307. package/dist/routes/config/channels/healthBridge.js.map +1 -0
  308. package/dist/routes/config/channels/http/handler.d.ts +1 -0
  309. package/dist/routes/config/channels/http/handler.d.ts.map +1 -0
  310. package/dist/routes/config/channels/http/playlistHint.d.ts +2 -1
  311. package/dist/routes/config/channels/http/playlistHint.d.ts.map +1 -0
  312. package/dist/routes/config/channels/http/playlistHint.js +16 -2
  313. package/dist/routes/config/channels/http/playlistHint.js.map +1 -1
  314. package/dist/routes/config/channels/http/serviceWarning.d.ts +4 -2
  315. package/dist/routes/config/channels/http/serviceWarning.d.ts.map +1 -0
  316. package/dist/routes/config/channels/http/serviceWarning.js +3 -2
  317. package/dist/routes/config/channels/http/serviceWarning.js.map +1 -1
  318. package/dist/routes/config/channels/index.d.ts +1 -0
  319. package/dist/routes/config/channels/index.d.ts.map +1 -0
  320. package/dist/routes/config/channels/setup.d.ts +1 -0
  321. package/dist/routes/config/channels/setup.d.ts.map +1 -0
  322. package/dist/routes/config/channels/table.d.ts +3 -3
  323. package/dist/routes/config/channels/table.d.ts.map +1 -0
  324. package/dist/routes/config/channels/table.js +148 -107
  325. package/dist/routes/config/channels/table.js.map +1 -1
  326. package/dist/routes/config/http/envelope.d.ts +1 -0
  327. package/dist/routes/config/http/envelope.d.ts.map +1 -0
  328. package/dist/routes/config/index.d.ts +35 -3
  329. package/dist/routes/config/index.d.ts.map +1 -0
  330. package/dist/routes/config/index.js +51 -2
  331. package/dist/routes/config/index.js.map +1 -1
  332. package/dist/routes/config/services.d.ts +5 -4
  333. package/dist/routes/config/services.d.ts.map +1 -0
  334. package/dist/routes/config/services.js +57 -43
  335. package/dist/routes/config/services.js.map +1 -1
  336. package/dist/routes/config/settings.d.ts +1 -0
  337. package/dist/routes/config/settings.d.ts.map +1 -0
  338. package/dist/routes/config/settings.js +98 -49
  339. package/dist/routes/config/settings.js.map +1 -1
  340. package/dist/routes/debug.d.ts +1 -0
  341. package/dist/routes/debug.d.ts.map +1 -0
  342. package/dist/routes/debug.js +277 -139
  343. package/dist/routes/debug.js.map +1 -1
  344. package/dist/routes/health.d.ts +39 -1
  345. package/dist/routes/health.d.ts.map +1 -0
  346. package/dist/routes/health.js +33 -27
  347. package/dist/routes/health.js.map +1 -1
  348. package/dist/routes/hls.d.ts +1 -0
  349. package/dist/routes/hls.d.ts.map +1 -0
  350. package/dist/routes/icons.d.ts +1 -0
  351. package/dist/routes/icons.d.ts.map +1 -0
  352. package/dist/routes/icons.js +1 -1
  353. package/dist/routes/index.d.ts +1 -0
  354. package/dist/routes/index.d.ts.map +1 -0
  355. package/dist/routes/logs.d.ts +1 -0
  356. package/dist/routes/logs.d.ts.map +1 -0
  357. package/dist/routes/logs.js +14 -4
  358. package/dist/routes/logs.js.map +1 -1
  359. package/dist/routes/mpegts.d.ts +1 -0
  360. package/dist/routes/mpegts.d.ts.map +1 -0
  361. package/dist/routes/play.d.ts +1 -0
  362. package/dist/routes/play.d.ts.map +1 -0
  363. package/dist/routes/playlist.d.ts +1 -0
  364. package/dist/routes/playlist.d.ts.map +1 -0
  365. package/dist/routes/playlist.js +7 -2
  366. package/dist/routes/playlist.js.map +1 -1
  367. package/dist/routes/root/content.d.ts +8 -5
  368. package/dist/routes/root/content.d.ts.map +1 -0
  369. package/dist/routes/root/content.js +29 -26
  370. package/dist/routes/root/content.js.map +1 -1
  371. package/dist/routes/root/index.d.ts +2 -1
  372. package/dist/routes/root/index.d.ts.map +1 -0
  373. package/dist/routes/root/index.js +26 -21
  374. package/dist/routes/root/index.js.map +1 -1
  375. package/dist/routes/root/scripts/channels.d.ts +6 -0
  376. package/dist/routes/root/scripts/channels.d.ts.map +1 -0
  377. package/dist/routes/root/scripts/channels.js +197 -118
  378. package/dist/routes/root/scripts/channels.js.map +1 -1
  379. package/dist/routes/root/scripts/clientEscape.d.ts +22 -0
  380. package/dist/routes/root/scripts/clientEscape.d.ts.map +1 -0
  381. package/dist/routes/root/scripts/clientEscape.js +41 -0
  382. package/dist/routes/root/scripts/clientEscape.js.map +1 -0
  383. package/dist/routes/root/scripts/clientUrl.d.ts +23 -0
  384. package/dist/routes/root/scripts/clientUrl.d.ts.map +1 -0
  385. package/dist/routes/root/scripts/clientUrl.js +44 -0
  386. package/dist/routes/root/scripts/clientUrl.js.map +1 -0
  387. package/dist/routes/root/scripts/config.d.ts +6 -0
  388. package/dist/routes/root/scripts/config.d.ts.map +1 -0
  389. package/dist/routes/root/scripts/config.js +110 -24
  390. package/dist/routes/root/scripts/config.js.map +1 -1
  391. package/dist/routes/root/scripts/index.d.ts +1 -0
  392. package/dist/routes/root/scripts/index.d.ts.map +1 -0
  393. package/dist/routes/root/scripts/shared.d.ts +1 -0
  394. package/dist/routes/root/scripts/shared.d.ts.map +1 -0
  395. package/dist/routes/root/scripts/shared.js +112 -26
  396. package/dist/routes/root/scripts/shared.js.map +1 -1
  397. package/dist/routes/root/scripts/status.d.ts +1 -0
  398. package/dist/routes/root/scripts/status.d.ts.map +1 -0
  399. package/dist/routes/root/scripts/status.handlers.d.ts +23 -33
  400. package/dist/routes/root/scripts/status.handlers.d.ts.map +1 -0
  401. package/dist/routes/root/scripts/status.handlers.js +46 -92
  402. package/dist/routes/root/scripts/status.handlers.js.map +1 -1
  403. package/dist/routes/root/scripts/status.js +21 -8
  404. package/dist/routes/root/scripts/status.js.map +1 -1
  405. package/dist/routes/root/styles.d.ts +1 -0
  406. package/dist/routes/root/styles.d.ts.map +1 -0
  407. package/dist/routes/root/styles.js +7 -4
  408. package/dist/routes/root/styles.js.map +1 -1
  409. package/dist/routes/services.d.ts +13 -1
  410. package/dist/routes/services.d.ts.map +1 -0
  411. package/dist/routes/services.js +81 -68
  412. package/dist/routes/services.js.map +1 -1
  413. package/dist/routes/sse.d.ts +1 -0
  414. package/dist/routes/sse.d.ts.map +1 -0
  415. package/dist/routes/sse.js +1 -1
  416. package/dist/routes/sse.js.map +1 -1
  417. package/dist/routes/streams.d.ts +2 -1
  418. package/dist/routes/streams.d.ts.map +1 -0
  419. package/dist/routes/streams.js +6 -4
  420. package/dist/routes/streams.js.map +1 -1
  421. package/dist/routes/theme.d.ts +3 -2
  422. package/dist/routes/theme.d.ts.map +1 -0
  423. package/dist/routes/theme.js +6 -5
  424. package/dist/routes/theme.js.map +1 -1
  425. package/dist/routes/ui.d.ts +3 -1
  426. package/dist/routes/ui.d.ts.map +1 -0
  427. package/dist/routes/ui.js +16 -4
  428. package/dist/routes/ui.js.map +1 -1
  429. package/dist/routes/upgrade.d.ts +1 -0
  430. package/dist/routes/upgrade.d.ts.map +1 -0
  431. package/dist/routes/upgrade.js +6 -2
  432. package/dist/routes/upgrade.js.map +1 -1
  433. package/dist/service/commands.context.d.ts +1 -0
  434. package/dist/service/commands.context.d.ts.map +1 -0
  435. package/dist/service/commands.context.js +4 -3
  436. package/dist/service/commands.context.js.map +1 -1
  437. package/dist/service/commands.d.ts +1 -0
  438. package/dist/service/commands.d.ts.map +1 -0
  439. package/dist/service/commands.js +10 -13
  440. package/dist/service/commands.js.map +1 -1
  441. package/dist/service/generators.context.d.ts +1 -0
  442. package/dist/service/generators.context.d.ts.map +1 -0
  443. package/dist/service/generators.context.js +1 -1
  444. package/dist/service/generators.context.js.map +1 -1
  445. package/dist/service/generators.d.ts +4 -3
  446. package/dist/service/generators.d.ts.map +1 -0
  447. package/dist/service/generators.js +111 -31
  448. package/dist/service/generators.js.map +1 -1
  449. package/dist/service/index.d.ts +1 -0
  450. package/dist/service/index.d.ts.map +1 -0
  451. package/dist/streaming/captureLock.d.ts +44 -0
  452. package/dist/streaming/captureLock.d.ts.map +1 -0
  453. package/dist/streaming/captureLock.js +95 -0
  454. package/dist/streaming/captureLock.js.map +1 -0
  455. package/dist/streaming/captureSession.d.ts +31 -0
  456. package/dist/streaming/captureSession.d.ts.map +1 -0
  457. package/dist/streaming/captureSession.js +54 -0
  458. package/dist/streaming/captureSession.js.map +1 -0
  459. package/dist/streaming/clients.d.ts +1 -0
  460. package/dist/streaming/clients.d.ts.map +1 -0
  461. package/dist/streaming/codec.d.ts +1 -0
  462. package/dist/streaming/codec.d.ts.map +1 -0
  463. package/dist/streaming/fmp4Segmenter.d.ts +29 -2
  464. package/dist/streaming/fmp4Segmenter.d.ts.map +1 -0
  465. package/dist/streaming/fmp4Segmenter.js +79 -26
  466. package/dist/streaming/fmp4Segmenter.js.map +1 -1
  467. package/dist/streaming/hls.d.ts +18 -7
  468. package/dist/streaming/hls.d.ts.map +1 -0
  469. package/dist/streaming/hls.js +220 -120
  470. package/dist/streaming/hls.js.map +1 -1
  471. package/dist/streaming/hlsResume.d.ts +1 -0
  472. package/dist/streaming/hlsResume.d.ts.map +1 -0
  473. package/dist/streaming/hlsResume.js +1 -1
  474. package/dist/streaming/hlsResume.js.map +1 -1
  475. package/dist/streaming/hlsSegments.d.ts +59 -2
  476. package/dist/streaming/hlsSegments.d.ts.map +1 -0
  477. package/dist/streaming/hlsSegments.js +147 -17
  478. package/dist/streaming/hlsSegments.js.map +1 -1
  479. package/dist/streaming/lifecycle.d.ts +4 -1
  480. package/dist/streaming/lifecycle.d.ts.map +1 -0
  481. package/dist/streaming/lifecycle.js +65 -85
  482. package/dist/streaming/lifecycle.js.map +1 -1
  483. package/dist/streaming/monitor.d.ts +6 -4
  484. package/dist/streaming/monitor.d.ts.map +1 -0
  485. package/dist/streaming/monitor.js +343 -145
  486. package/dist/streaming/monitor.js.map +1 -1
  487. package/dist/streaming/mp4Parser.d.ts +5 -4
  488. package/dist/streaming/mp4Parser.d.ts.map +1 -0
  489. package/dist/streaming/mp4Parser.js +36 -13
  490. package/dist/streaming/mp4Parser.js.map +1 -1
  491. package/dist/streaming/mpegts.d.ts +16 -0
  492. package/dist/streaming/mpegts.d.ts.map +1 -0
  493. package/dist/streaming/mpegts.js +61 -17
  494. package/dist/streaming/mpegts.js.map +1 -1
  495. package/dist/streaming/playlistBuilder.d.ts +1 -0
  496. package/dist/streaming/playlistBuilder.d.ts.map +1 -0
  497. package/dist/streaming/preroll.d.ts +32 -5
  498. package/dist/streaming/preroll.d.ts.map +1 -0
  499. package/dist/streaming/preroll.js +70 -32
  500. package/dist/streaming/preroll.js.map +1 -1
  501. package/dist/streaming/pretune.d.ts +26 -1
  502. package/dist/streaming/pretune.d.ts.map +1 -0
  503. package/dist/streaming/pretune.js +22 -24
  504. package/dist/streaming/pretune.js.map +1 -1
  505. package/dist/streaming/pretuneTimers.d.ts +24 -0
  506. package/dist/streaming/pretuneTimers.d.ts.map +1 -0
  507. package/dist/streaming/pretuneTimers.js +56 -0
  508. package/dist/streaming/pretuneTimers.js.map +1 -0
  509. package/dist/streaming/recovery.d.ts +139 -5
  510. package/dist/streaming/recovery.d.ts.map +1 -0
  511. package/dist/streaming/recovery.js +160 -16
  512. package/dist/streaming/recovery.js.map +1 -1
  513. package/dist/streaming/registry.d.ts +27 -9
  514. package/dist/streaming/registry.d.ts.map +1 -0
  515. package/dist/streaming/registry.js +21 -3
  516. package/dist/streaming/registry.js.map +1 -1
  517. package/dist/streaming/setup.d.ts +157 -29
  518. package/dist/streaming/setup.d.ts.map +1 -0
  519. package/dist/streaming/setup.js +1034 -458
  520. package/dist/streaming/setup.js.map +1 -1
  521. package/dist/streaming/showInfo.d.ts +21 -1
  522. package/dist/streaming/showInfo.d.ts.map +1 -0
  523. package/dist/streaming/showInfo.js +31 -16
  524. package/dist/streaming/showInfo.js.map +1 -1
  525. package/dist/streaming/statusEmitter.d.ts +10 -10
  526. package/dist/streaming/statusEmitter.d.ts.map +1 -0
  527. package/dist/streaming/statusEmitter.js +5 -8
  528. package/dist/streaming/statusEmitter.js.map +1 -1
  529. package/dist/types/channels.d.ts +16 -4
  530. package/dist/types/channels.d.ts.map +1 -0
  531. package/dist/types/channels.js +4 -2
  532. package/dist/types/channels.js.map +1 -1
  533. package/dist/types/config.d.ts +16 -5
  534. package/dist/types/config.d.ts.map +1 -0
  535. package/dist/types/index.d.ts +3 -2
  536. package/dist/types/index.d.ts.map +1 -0
  537. package/dist/types/profiles.d.ts +6 -4
  538. package/dist/types/profiles.d.ts.map +1 -0
  539. package/dist/types/selection.d.ts +31 -3
  540. package/dist/types/selection.d.ts.map +1 -0
  541. package/dist/types/selection.js +4 -2
  542. package/dist/types/selection.js.map +1 -1
  543. package/dist/types/shared.d.ts +1 -0
  544. package/dist/types/shared.d.ts.map +1 -0
  545. package/dist/types/streaming.d.ts +8 -0
  546. package/dist/types/streaming.d.ts.map +1 -0
  547. package/dist/upgrade/commands.context.d.ts +1 -0
  548. package/dist/upgrade/commands.context.d.ts.map +1 -0
  549. package/dist/upgrade/commands.context.js +14 -10
  550. package/dist/upgrade/commands.context.js.map +1 -1
  551. package/dist/upgrade/commands.d.ts +8 -15
  552. package/dist/upgrade/commands.d.ts.map +1 -0
  553. package/dist/upgrade/commands.js +27 -28
  554. package/dist/upgrade/commands.js.map +1 -1
  555. package/dist/upgrade/detection.context.d.ts +1 -0
  556. package/dist/upgrade/detection.context.d.ts.map +1 -0
  557. package/dist/upgrade/detection.context.js +4 -1
  558. package/dist/upgrade/detection.context.js.map +1 -1
  559. package/dist/upgrade/detection.d.ts +9 -7
  560. package/dist/upgrade/detection.d.ts.map +1 -0
  561. package/dist/upgrade/detection.js +23 -54
  562. package/dist/upgrade/detection.js.map +1 -1
  563. package/dist/upgrade/index.d.ts +2 -0
  564. package/dist/upgrade/index.d.ts.map +1 -0
  565. package/dist/upgrade/index.js +1 -0
  566. package/dist/upgrade/index.js.map +1 -1
  567. package/dist/upgrade/lifecycle.context.d.ts +20 -0
  568. package/dist/upgrade/lifecycle.context.d.ts.map +1 -0
  569. package/dist/upgrade/lifecycle.context.js +47 -0
  570. package/dist/upgrade/lifecycle.context.js.map +1 -0
  571. package/dist/upgrade/lifecycle.d.ts +72 -0
  572. package/dist/upgrade/lifecycle.d.ts.map +1 -0
  573. package/dist/upgrade/lifecycle.js +175 -0
  574. package/dist/upgrade/lifecycle.js.map +1 -0
  575. package/dist/upgrade/pathHandle.d.ts +30 -0
  576. package/dist/upgrade/pathHandle.d.ts.map +1 -0
  577. package/dist/upgrade/pathHandle.js +102 -0
  578. package/dist/upgrade/pathHandle.js.map +1 -0
  579. package/dist/utils/bootSession.context.d.ts +16 -0
  580. package/dist/utils/bootSession.context.d.ts.map +1 -0
  581. package/dist/utils/bootSession.context.js +60 -0
  582. package/dist/utils/bootSession.context.js.map +1 -0
  583. package/dist/utils/bootSession.d.ts +17 -0
  584. package/dist/utils/bootSession.d.ts.map +1 -0
  585. package/dist/utils/bootSession.js +20 -0
  586. package/dist/utils/bootSession.js.map +1 -0
  587. package/dist/utils/chromeFetch.d.ts +1 -0
  588. package/dist/utils/chromeFetch.d.ts.map +1 -0
  589. package/dist/utils/cliOutput.d.ts +1 -0
  590. package/dist/utils/cliOutput.d.ts.map +1 -0
  591. package/dist/utils/clock.d.ts +5 -4
  592. package/dist/utils/clock.d.ts.map +1 -0
  593. package/dist/utils/clock.js +19 -16
  594. package/dist/utils/clock.js.map +1 -1
  595. package/dist/utils/debugFilter.d.ts +9 -1
  596. package/dist/utils/debugFilter.d.ts.map +1 -0
  597. package/dist/utils/debugFilter.js +60 -33
  598. package/dist/utils/debugFilter.js.map +1 -1
  599. package/dist/utils/delay.d.ts +48 -15
  600. package/dist/utils/delay.d.ts.map +1 -0
  601. package/dist/utils/delay.js +73 -20
  602. package/dist/utils/delay.js.map +1 -1
  603. package/dist/utils/errors.d.ts +32 -0
  604. package/dist/utils/errors.d.ts.map +1 -0
  605. package/dist/utils/errors.js +45 -4
  606. package/dist/utils/errors.js.map +1 -1
  607. package/dist/utils/evaluate.d.ts +1 -0
  608. package/dist/utils/evaluate.d.ts.map +1 -0
  609. package/dist/utils/evaluate.js +29 -23
  610. package/dist/utils/evaluate.js.map +1 -1
  611. package/dist/utils/ffmpeg.context.d.ts +1 -0
  612. package/dist/utils/ffmpeg.context.d.ts.map +1 -0
  613. package/dist/utils/ffmpeg.context.js.map +1 -1
  614. package/dist/utils/ffmpeg.d.ts +29 -7
  615. package/dist/utils/ffmpeg.d.ts.map +1 -0
  616. package/dist/utils/ffmpeg.js +32 -14
  617. package/dist/utils/ffmpeg.js.map +1 -1
  618. package/dist/utils/fileLogger.d.ts +3 -1
  619. package/dist/utils/fileLogger.d.ts.map +1 -0
  620. package/dist/utils/fileLogger.js +64 -29
  621. package/dist/utils/fileLogger.js.map +1 -1
  622. package/dist/utils/format.d.ts +14 -1
  623. package/dist/utils/format.d.ts.map +1 -0
  624. package/dist/utils/format.js +19 -5
  625. package/dist/utils/format.js.map +1 -1
  626. package/dist/utils/index.d.ts +4 -0
  627. package/dist/utils/index.d.ts.map +1 -0
  628. package/dist/utils/index.js +3 -0
  629. package/dist/utils/index.js.map +1 -1
  630. package/dist/utils/logEmitter.d.ts +1 -0
  631. package/dist/utils/logEmitter.d.ts.map +1 -0
  632. package/dist/utils/logger.d.ts +1 -0
  633. package/dist/utils/logger.d.ts.map +1 -0
  634. package/dist/utils/logger.js +10 -6
  635. package/dist/utils/logger.js.map +1 -1
  636. package/dist/utils/m3u.d.ts +3 -2
  637. package/dist/utils/m3u.d.ts.map +1 -0
  638. package/dist/utils/m3u.js +4 -3
  639. package/dist/utils/m3u.js.map +1 -1
  640. package/dist/utils/markup.d.ts +13 -1
  641. package/dist/utils/markup.d.ts.map +1 -0
  642. package/dist/utils/markup.js +28 -4
  643. package/dist/utils/markup.js.map +1 -1
  644. package/dist/utils/memo.d.ts +3 -2
  645. package/dist/utils/memo.d.ts.map +1 -0
  646. package/dist/utils/memo.js +3 -3
  647. package/dist/utils/morganStream.d.ts +1 -0
  648. package/dist/utils/morganStream.d.ts.map +1 -0
  649. package/dist/utils/network.d.ts +1 -0
  650. package/dist/utils/network.d.ts.map +1 -0
  651. package/dist/utils/network.js +2 -2
  652. package/dist/utils/pid.d.ts +3 -25
  653. package/dist/utils/pid.d.ts.map +1 -0
  654. package/dist/utils/pid.js +10 -49
  655. package/dist/utils/pid.js.map +1 -1
  656. package/dist/utils/platform.d.ts +3 -1
  657. package/dist/utils/platform.d.ts.map +1 -0
  658. package/dist/utils/platform.js +2 -1
  659. package/dist/utils/platform.js.map +1 -1
  660. package/dist/utils/processInspector.context.d.ts +8 -0
  661. package/dist/utils/processInspector.context.d.ts.map +1 -0
  662. package/dist/utils/processInspector.context.js +106 -0
  663. package/dist/utils/processInspector.context.js.map +1 -0
  664. package/dist/utils/processInspector.d.ts +55 -0
  665. package/dist/utils/processInspector.d.ts.map +1 -0
  666. package/dist/utils/processInspector.js +127 -0
  667. package/dist/utils/processInspector.js.map +1 -0
  668. package/dist/utils/retry.d.ts +25 -2
  669. package/dist/utils/retry.d.ts.map +1 -0
  670. package/dist/utils/retry.js +33 -6
  671. package/dist/utils/retry.js.map +1 -1
  672. package/dist/utils/runtimeIdentity.context.d.ts +7 -0
  673. package/dist/utils/runtimeIdentity.context.d.ts.map +1 -0
  674. package/dist/utils/runtimeIdentity.context.js +43 -0
  675. package/dist/utils/runtimeIdentity.context.js.map +1 -0
  676. package/dist/utils/runtimeIdentity.d.ts +98 -0
  677. package/dist/utils/runtimeIdentity.d.ts.map +1 -0
  678. package/dist/utils/runtimeIdentity.js +181 -0
  679. package/dist/utils/runtimeIdentity.js.map +1 -0
  680. package/dist/utils/sanitize.d.ts +1 -0
  681. package/dist/utils/sanitize.d.ts.map +1 -0
  682. package/dist/utils/streamContext.d.ts +2 -1
  683. package/dist/utils/streamContext.d.ts.map +1 -0
  684. package/dist/utils/streamContext.js +1 -1
  685. package/dist/utils/timing.d.ts +2 -1
  686. package/dist/utils/timing.d.ts.map +1 -0
  687. package/dist/utils/timing.js +0 -5
  688. package/dist/utils/timing.js.map +1 -1
  689. package/dist/utils/version.d.ts +1 -0
  690. package/dist/utils/version.d.ts.map +1 -0
  691. package/dist/utils/version.js +47 -13
  692. package/dist/utils/version.js.map +1 -1
  693. package/package.json +26 -20
@@ -1,19 +1,18 @@
1
1
  import { LOG, evaluateWithAbort, formatError } from "../../utils/index.js";
2
+ import { attemptGuideRecovery, createEmptyDiscoveryGuard, logAvailableChannels } from "./shared.js";
3
+ import { createProviderChannelCache, dedupeCacheEntries } from "./cache.js";
2
4
  import { CONFIG } from "../../config/index.js";
3
- import { logAvailableChannels } from "./shared.js";
4
5
  // Base URL for Spectrum TV watch page navigation.
5
6
  const SPECTRUM_BASE_URL = "https://watch.spectrum.net";
6
7
  // Unified channel cache for Spectrum TV. Maps lowercased lookup keys (callsigns like "espnhd", stripped display names like "espn", and network names like "nbc")
7
8
  // to their combined discovery and tuning data. Multiple keys may reference the same entry. Populated during the first tune (when the strategy enumerates all
8
9
  // streamable channels from the non-virtualized guide grid) or the first discovery call. Both tuning (via findSpectrumChannel) and discovery (via
9
10
  // getCachedChannels / discoverSpectrumChannels) read from this single cache. Cleared on browser disconnect via clearSpectrumCache().
10
- const spectrumChannelCache = new Map();
11
- // Tracks consecutive guide page loads that discover zero channels. When this reaches the recovery threshold, the strategy clears Spectrum site data (cache
12
- // storage) via CDP and reloads the guide to break out of a degraded state where the guide grid container renders but channel entries are not populated. Reset
13
- // to zero on any successful discovery (> 0 channels found) or on browser restart (via clearSpectrumCache).
14
- let consecutiveEmptyDiscoveries = 0;
15
- // Number of consecutive empty discoveries before attempting site data recovery via CDP.
16
- const EMPTY_DISCOVERY_RECOVERY_THRESHOLD = 3;
11
+ const spectrumCache = createProviderChannelCache((entry) => entry.discovered);
12
+ // Recovery guard for the degraded guide state where the grid container renders but channel entries are not populated, which stale AngularJS template or API
13
+ // response caches produce. The guard counts the empty loads and signals when clearing Spectrum site data (cache storage) via CDP is warranted. Reset on any
14
+ // successful discovery (> 0 channels found) and on browser restart (via clearSpectrumCache).
15
+ const emptyDiscoveryGuard = createEmptyDiscoveryGuard("Spectrum TV");
17
16
  // Regex pattern for detecting local affiliates and subchannels. Matches "{Name} ({CallSign})" with optional trailing " HD"/" DT" suffix and optional
18
17
  // "East"/"West" direction.
19
18
  const PARENTHETICAL_PATTERN = /^(.+?) \(([^)]+)\)(?: (?:HD|DT)(?: (?:East|West))?)?$/;
@@ -66,8 +65,8 @@ async function discoverGuideChannels(page) {
66
65
  if (!tmsid) {
67
66
  continue;
68
67
  }
69
- // Deduplicate by tmsid - first occurrence wins (lowest channel number). This eliminates legacy mirror ranges (1000+/1200+) that share the same tmsid
70
- // with primary entries but have no program listing data.
68
+ // Deduplicate by tmsid - first occurrence in DOM order wins. The guide renders rows in ascending channel-number order, so this keeps the primary
69
+ // (lowest-numbered) entry and eliminates legacy mirror ranges (1000+/1200+) that share the same tmsid with primary entries but have no program listing data.
71
70
  if (seenTmsids.has(tmsid)) {
72
71
  continue;
73
72
  }
@@ -84,51 +83,6 @@ async function discoverGuideChannels(page) {
84
83
  return results;
85
84
  }, []);
86
85
  }
87
- /**
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
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
90
- * login session state are preserved - only caching layers are cleared.
91
- * @param page - The Puppeteer page object.
92
- * @returns Discovered channels after recovery, or an empty array if recovery failed.
93
- */
94
- async function attemptGuideRecovery(page) {
95
- LOG.warn("Clearing Spectrum TV cached site data to recover from empty guide.");
96
- // Clear cache storage for the Spectrum origin. Cookies and login session state are deliberately preserved to avoid forcing re-authentication.
97
- try {
98
- const client = await page.createCDPSession();
99
- await client.send("Storage.clearDataForOrigin", { origin: SPECTRUM_BASE_URL, storageTypes: "cache_storage" });
100
- await client.detach();
101
- }
102
- catch (error) {
103
- LOG.warn("Failed to clear Spectrum TV site data: %s.", formatError(error));
104
- return [];
105
- }
106
- // Reload the guide page with fresh state.
107
- try {
108
- await page.goto(SPECTRUM_BASE_URL + "/guide", { timeout: CONFIG.streaming.navigationTimeout, waitUntil: "load" });
109
- }
110
- catch (error) {
111
- LOG.warn("Failed to reload Spectrum TV guide after clearing site data: %s.", formatError(error));
112
- return [];
113
- }
114
- // Wait for the guide grid to render after reload.
115
- try {
116
- await page.waitForSelector("li.channel-header-row", { timeout: CONFIG.streaming.videoTimeout });
117
- }
118
- catch {
119
- LOG.warn("Spectrum TV guide grid did not load after clearing site data.");
120
- return [];
121
- }
122
- // Re-attempt channel discovery on the reloaded page.
123
- const channels = await discoverGuideChannels(page);
124
- if (channels.length > 0) {
125
- LOG.info("Spectrum TV guide recovery succeeded - discovered %s channels after clearing site data.", channels.length);
126
- }
127
- else {
128
- LOG.warn("Spectrum TV guide still empty after clearing site data.");
129
- }
130
- return channels;
131
- }
132
86
  /**
133
87
  * Populates the unified channel cache from raw guide channel data. For each channel, builds a DiscoveredChannel with affiliate detection and pairs it with the
134
88
  * tmsid for watch URL construction. Creates multiple cache keys per channel: (a) lowercased callsign, (b) lowercased display name stripped of " HD"/" DT"
@@ -138,7 +92,7 @@ async function attemptGuideRecovery(page) {
138
92
  * @param rawChannels - Array of raw channel data from discoverGuideChannels().
139
93
  */
140
94
  function populateSpectrumChannelCache(rawChannels) {
141
- spectrumChannelCache.clear();
95
+ spectrumCache.clear();
142
96
  // First pass: build all entries and store under callsign key. Track network name keys separately to avoid overwriting cable channels in the second pass.
143
97
  const entries = [];
144
98
  for (const ch of rawChannels) {
@@ -172,21 +126,51 @@ function populateSpectrumChannelCache(rawChannels) {
172
126
  };
173
127
  const spectrumEntry = { discovered, tmsid: ch.tmsid };
174
128
  // Store under lowercased callsign (primary key).
175
- spectrumChannelCache.set(ch.callsign.toLowerCase(), spectrumEntry);
129
+ spectrumCache.map.set(ch.callsign.toLowerCase(), spectrumEntry);
176
130
  entries.push({ entry: spectrumEntry, networkKey, strippedKey: stripped.toLowerCase() });
177
131
  }
178
132
  // 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.,
179
133
  // a cable channel named "Fox" would keep its key over a "FOX (WTVT)" affiliate entry).
180
134
  for (const { entry, networkKey, strippedKey } of entries) {
181
135
  // 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.
182
- if (!spectrumChannelCache.has(strippedKey)) {
183
- spectrumChannelCache.set(strippedKey, entry);
136
+ if (!spectrumCache.map.has(strippedKey)) {
137
+ spectrumCache.map.set(strippedKey, entry);
184
138
  }
185
139
  // Add network name key for affiliates if not already taken by a cable channel or another affiliate.
186
- if (networkKey && !spectrumChannelCache.has(networkKey)) {
187
- spectrumChannelCache.set(networkKey, entry);
140
+ if (networkKey && !spectrumCache.map.has(networkKey)) {
141
+ spectrumCache.map.set(networkKey, entry);
188
142
  }
189
143
  }
144
+ // The guide pass this was built from covered every streamable row, so what sits in the cache at this point is the complete lineup and warm reads can be
145
+ // served from it.
146
+ spectrumCache.markComplete();
147
+ }
148
+ /**
149
+ * Builds the Spectrum watch address for a channel's Gracenote station ID. This is the one place the /livetv?tmsid= form is written: the strategy's direct
150
+ * navigation, the cached-URL resolver, and the durable-lineup export all read it here, so a change to Spectrum's watch-page shape is a one-line edit rather than
151
+ * a hunt for every place the string was assembled.
152
+ * @param tmsid - The channel's Gracenote station ID.
153
+ * @returns The full Spectrum watch URL.
154
+ */
155
+ function spectrumWatchUrl(tmsid) {
156
+ return SPECTRUM_BASE_URL + "/livetv?tmsid=" + tmsid;
157
+ }
158
+ /**
159
+ * Returns Spectrum TV's durable lineup for the persisted lineup store: each cached channel's identity paired with the watch URL built from its Gracenote station
160
+ * ID. The station ID is a stable channel identifier rather than session state, so the address it builds survives a restart and lets a boot whose guide read failed
161
+ * still tune directly. The tiered matching below files one entry object under several alias keys, so the entries are reduced to one occurrence per object before
162
+ * projection.
163
+ * @returns The durable lineup rows, or null when the cache is cold.
164
+ */
165
+ function exportSpectrumLineup() {
166
+ if (spectrumCache.map.size === 0) {
167
+ return null;
168
+ }
169
+ return dedupeCacheEntries(spectrumCache.map.values()).map((entry) => ({
170
+ channelSelector: entry.discovered.channelSelector,
171
+ name: entry.discovered.name,
172
+ watchUrl: spectrumWatchUrl(entry.tmsid)
173
+ }));
190
174
  }
191
175
  /**
192
176
  * Looks up a channel in the unified cache using tiered matching logic:
@@ -196,79 +180,53 @@ function populateSpectrumChannelCache(rawChannels) {
196
180
  * 3. Display name iteration: iterate all cache entries, check if discovered.name (lowercased) equals input. Catches long display names like "Discovery Channel"
197
181
  * when only the callsign-derived key was cached.
198
182
  *
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
200
- * hook - after the first tune populates the cache via channel discovery, every subsequent Spectrum tune resolves here without loading the guide page.
183
+ * When a non-exact match succeeds, the result is cached under the input key for O(1) lookup on subsequent calls. This function is the cache-lookup core behind
184
+ * the resolveDirectUrl hook (resolveSpectrumDirectUrl) - after the first tune populates the cache, every subsequent Spectrum tune resolves through here without
185
+ * loading the guide page.
201
186
  * @param channelName - The channelSelector value (e.g., "ESPN", "NBC", "Discovery Channel").
202
187
  * @returns The matching cache entry or null if no match is found.
203
188
  */
204
189
  function findSpectrumChannel(channelName) {
205
190
  const lower = channelName.toLowerCase();
206
191
  // Tier 1: Exact match on any cache key (callsigns, stripped names, network names).
207
- const exact = spectrumChannelCache.get(lower);
192
+ const exact = spectrumCache.map.get(lower);
208
193
  if (exact) {
209
194
  return exact;
210
195
  }
211
196
  // Tier 2: HD/DT suffix tolerance. Try appending common technology suffixes.
212
- const hdMatch = spectrumChannelCache.get(lower + "hd");
197
+ const hdMatch = spectrumCache.map.get(lower + "hd");
213
198
  if (hdMatch) {
214
- spectrumChannelCache.set(lower, hdMatch);
199
+ spectrumCache.map.set(lower, hdMatch);
215
200
  return hdMatch;
216
201
  }
217
- const dtMatch = spectrumChannelCache.get(lower + "dt");
202
+ const dtMatch = spectrumCache.map.get(lower + "dt");
218
203
  if (dtMatch) {
219
- spectrumChannelCache.set(lower, dtMatch);
204
+ spectrumCache.map.set(lower, dtMatch);
220
205
  return dtMatch;
221
206
  }
222
207
  // Tier 3: Display name iteration. Check if any entry's discovered.name matches the input. This catches channels with long display names (e.g.,
223
208
  // "Discovery Channel") that may not have a matching cache key because the callsign was "DSCHD" and the stripped key "discovery channel" was already checked
224
209
  // in tier 1. This tier is the fallback for any names not covered by the first two tiers.
225
210
  const seen = new Set();
226
- for (const entry of spectrumChannelCache.values()) {
211
+ for (const entry of spectrumCache.map.values()) {
227
212
  if (seen.has(entry)) {
228
213
  continue;
229
214
  }
230
215
  seen.add(entry);
231
216
  if (entry.discovered.name.toLowerCase() === lower) {
232
- spectrumChannelCache.set(lower, entry);
217
+ spectrumCache.map.set(lower, entry);
233
218
  return entry;
234
219
  }
235
220
  }
236
221
  return null;
237
222
  }
238
- /**
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
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.
241
- * @param channelSelector - The channel selector string to invalidate.
242
- */
243
- function invalidateSpectrumDirectUrl(channelSelector) {
244
- spectrumChannelCache.delete(channelSelector.toLowerCase());
245
- }
246
223
  /**
247
224
  * Clears the Spectrum channel cache. Called by clearChannelSelectionCaches() in the coordinator when the browser restarts, since a fresh browser session
248
225
  * may have different channel availability.
249
226
  */
250
227
  function clearSpectrumCache() {
251
- spectrumChannelCache.clear();
252
- consecutiveEmptyDiscoveries = 0;
253
- }
254
- /**
255
- * Derives a DiscoveredChannel array from the unified channel cache, deduplicating alias entries via Set reference equality. Multiple cache keys may point to
256
- * the same SpectrumChannelEntry (callsign key, stripped name key, network name key, and any alias keys created by findSpectrumChannel). Without deduplication,
257
- * iterating cache values would produce duplicate entries. Sorts by name before returning.
258
- * @returns Sorted, deduplicated array of discovered channels.
259
- */
260
- function buildSpectrumDiscoveredChannels() {
261
- const channels = [];
262
- const seen = new Set();
263
- for (const entry of spectrumChannelCache.values()) {
264
- if (seen.has(entry)) {
265
- continue;
266
- }
267
- seen.add(entry);
268
- channels.push(entry.discovered);
269
- }
270
- channels.sort((a, b) => a.name.localeCompare(b.name));
271
- return channels;
228
+ spectrumCache.clear();
229
+ emptyDiscoveryGuard.reset();
272
230
  }
273
231
  /**
274
232
  * Spectrum TV grid strategy: discovers all streamable channels from the non-virtualized guide at watch.spectrum.net/guide in a single evaluate pass, populating
@@ -295,7 +253,7 @@ async function spectrumGridStrategy(page, profile) {
295
253
  await page.waitForSelector("li.channel-header-row", { timeout: CONFIG.streaming.videoTimeout });
296
254
  }
297
255
  catch {
298
- return { reason: "Spectrum guide grid did not load.", success: false };
256
+ return { guideUnavailable: true, reason: "Spectrum guide grid did not load.", success: false };
299
257
  }
300
258
  // Discover all channels from the guide grid.
301
259
  let allChannels = await discoverGuideChannels(page);
@@ -303,10 +261,15 @@ async function spectrumGridStrategy(page, profile) {
303
261
  // This can happen when stale AngularJS template or API response caches become inconsistent. Track consecutive occurrences and attempt recovery by clearing
304
262
  // cached site data once the threshold is reached.
305
263
  if (allChannels.length === 0) {
306
- consecutiveEmptyDiscoveries++;
307
- LOG.warn("Spectrum TV guide loaded but no channels were discovered (%s consecutive). The guide may be in a degraded state.", consecutiveEmptyDiscoveries);
308
- if (consecutiveEmptyDiscoveries >= EMPTY_DISCOVERY_RECOVERY_THRESHOLD) {
309
- allChannels = await attemptGuideRecovery(page);
264
+ if (emptyDiscoveryGuard.recordEmpty()) {
265
+ allChannels = await attemptGuideRecovery(page, {
266
+ discover: discoverGuideChannels,
267
+ origin: SPECTRUM_BASE_URL,
268
+ providerName: "Spectrum TV",
269
+ reloadUrl: SPECTRUM_BASE_URL + "/guide",
270
+ storageTypes: "cache_storage",
271
+ waitSelector: "li.channel-header-row"
272
+ });
310
273
  }
311
274
  }
312
275
  // If we still have no channels after the initial discovery and any recovery attempt, there is nothing to search or cache.
@@ -315,7 +278,7 @@ async function spectrumGridStrategy(page, profile) {
315
278
  }
316
279
  // Successful discovery - reset the consecutive empty counter and repopulate the unified channel cache. Always repopulate rather than skipping when the cache
317
280
  // has entries, because invalidated entries need to be restored with fresh data from the guide.
318
- consecutiveEmptyDiscoveries = 0;
281
+ emptyDiscoveryGuard.reset();
319
282
  populateSpectrumChannelCache(allChannels);
320
283
  LOG.debug("tuning:spectrum", "Discovered %s Spectrum channels.", allChannels.length);
321
284
  // Look up the target channel using tiered matching against the populated cache.
@@ -323,7 +286,7 @@ async function spectrumGridStrategy(page, profile) {
323
286
  if (!entry) {
324
287
  // Channel not found. Log available channels as a diagnostic to help users identify their market's channel names.
325
288
  logAvailableChannels({
326
- availableChannels: buildSpectrumDiscoveredChannels().map((ch) => ch.name).sort(),
289
+ availableChannels: spectrumCache.discovered().map((ch) => ch.name).sort(),
327
290
  channelName,
328
291
  guideUrl: "https://watch.spectrum.net/guide",
329
292
  presetSuffix: "-spectrum",
@@ -333,7 +296,7 @@ async function spectrumGridStrategy(page, profile) {
333
296
  }
334
297
  LOG.debug("tuning:spectrum", "Navigating to Spectrum watch URL for %s (tmsid: %s).", channelName, entry.tmsid);
335
298
  try {
336
- await page.goto(SPECTRUM_BASE_URL + "/livetv?tmsid=" + entry.tmsid, { timeout: CONFIG.streaming.navigationTimeout, waitUntil: "load" });
299
+ await page.goto(spectrumWatchUrl(entry.tmsid), { timeout: CONFIG.streaming.navigationTimeout, waitUntil: "load" });
337
300
  }
338
301
  catch (error) {
339
302
  return { reason: "Failed to navigate to Spectrum watch page: " + formatError(error) + ".", success: false };
@@ -347,13 +310,12 @@ async function spectrumGridStrategy(page, profile) {
347
310
  * @param _page - Unused. Present to satisfy the async resolveDirectUrl signature.
348
311
  * @returns The cached watch URL or null.
349
312
  */
350
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/require-await
351
313
  async function resolveSpectrumDirectUrl(channelSelector, _page) {
352
314
  const entry = findSpectrumChannel(channelSelector);
353
315
  if (!entry) {
354
316
  return null;
355
317
  }
356
- return SPECTRUM_BASE_URL + "/livetv?tmsid=" + entry.tmsid;
318
+ return spectrumWatchUrl(entry.tmsid);
357
319
  }
358
320
  /**
359
321
  * Discovers all channels from the Spectrum TV guide. Returns cached results if the unified channel cache is populated from a prior tune or discovery call.
@@ -363,9 +325,10 @@ async function resolveSpectrumDirectUrl(channelSelector, _page) {
363
325
  * @returns Array of discovered channels with affiliate tagging and Gracenote station IDs.
364
326
  */
365
327
  async function discoverSpectrumChannels(page) {
366
- // Return from the unified cache if already populated.
367
- if (spectrumChannelCache.size > 0) {
368
- return buildSpectrumDiscoveredChannels();
328
+ // Return from the unified cache if a prior tune or discovery call already enumerated the lineup.
329
+ const cached = spectrumCache.cached();
330
+ if (cached) {
331
+ return cached;
369
332
  }
370
333
  // Wait for at least one channel header row to confirm the guide grid has rendered.
371
334
  try {
@@ -380,21 +343,12 @@ async function discoverSpectrumChannels(page) {
380
343
  return [];
381
344
  }
382
345
  populateSpectrumChannelCache(allChannels);
383
- return buildSpectrumDiscoveredChannels();
384
- }
385
- /**
386
- * Returns cached discovered channels from the unified channel cache, or null if the cache is empty (no prior tune or discovery call has enumerated the lineup).
387
- * @returns Sorted array of discovered channels or null.
388
- */
389
- function getSpectrumCachedChannels() {
390
- if (spectrumChannelCache.size === 0) {
391
- return null;
392
- }
393
- return buildSpectrumDiscoveredChannels();
346
+ return spectrumCache.discovered();
394
347
  }
395
348
  export const spectrumProvider = {
396
349
  discoverChannels: discoverSpectrumChannels,
397
- getCachedChannels: getSpectrumCachedChannels,
350
+ exportDurableLineup: exportSpectrumLineup,
351
+ getCachedChannels: spectrumCache.cached,
398
352
  guideUrl: "https://watch.spectrum.net/guide",
399
353
  label: "Spectrum TV",
400
354
  // 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
@@ -413,7 +367,8 @@ export const spectrumProvider = {
413
367
  strategy: {
414
368
  clearCache: clearSpectrumCache,
415
369
  execute: spectrumGridStrategy,
416
- invalidateDirectUrl: invalidateSpectrumDirectUrl,
370
+ // Only the failing selector's own key is dropped. The keys channel discovery wrote stay put, and the next strategy run reloads the guide and rebuilds them.
371
+ invalidateDirectUrl: spectrumCache.invalidate,
417
372
  resolveDirectUrl: resolveSpectrumDirectUrl
418
373
  },
419
374
  strategyName: "spectrumGrid"
@@ -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":"AAKA,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI/C,kDAAkD;AAClD,MAAM,iBAAiB,GAAG,4BAA4B,CAAC;AAWvD,iKAAiK;AACjK,6JAA6J;AAC7J,iJAAiJ;AACjJ,qIAAqI;AACrI,MAAM,aAAa,GAAG,0BAA0B,CAAuB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAEpG,4JAA4J;AAC5J,4JAA4J;AAC5J,6FAA6F;AAC7F,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;AAErE,qJAAqJ;AACrJ,2BAA2B;AAC3B,MAAM,qBAAqB,GAAG,uDAAuD,CAAC;AAEtF,mKAAmK;AACnK,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAExD,6JAA6J;AAC7J,+JAA+J;AAC/J,yDAAyD;AACzD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CACxC,CAAC,CAAC;AAcH;;;;;;GAMG;AACH,KAAK,UAAU,qBAAqB,CAAC,IAAU;IAE7C,OAAO,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAyB,EAAE;QAE9D,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QAErC,sJAAsJ;QACtJ,qFAAqF;QACrF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE/C,KAAI,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC;YAEpF,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAErC,uGAAuG;YACvG,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEpD,IAAG,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAEpB,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,sHAAsH;QACtH,KAAI,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,2CAA2C,CAAC,CAAC,EAAE,CAAC;YAEnG,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YAE5D,IAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;gBAExC,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAElD,2HAA2H;YAC3H,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEhD,IAAG,CAAC,KAAK,EAAE,CAAC;gBAEV,SAAS;YACX,CAAC;YAED,iJAAiJ;YACjJ,6JAA6J;YAC7J,IAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAEzB,SAAS;YACX,CAAC;YAED,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEtB,6IAA6I;YAC7I,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC;YAE/D,oJAAoJ;YACpJ,kJAAkJ;YAClJ,IAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAElE,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,4BAA4B,CAAC,WAAiC;IAErE,aAAa,CAAC,KAAK,EAAE,CAAC;IAEtB,yJAAyJ;IACzJ,MAAM,OAAO,GAAgF,EAAE,CAAC;IAEhG,KAAI,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAE5B,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,eAAuB,CAAC;QAC5B,IAAI,SAA6B,CAAC;QAClC,IAAI,UAA8B,CAAC;QAEnC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnC,IAAG,OAAO,EAAE,CAAC;YAEX,yGAAyG;YACzG,IAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAEjD,eAAe,GAAG,OAAO,CAAC;gBAC1B,SAAS,GAAG,OAAO,CAAC;gBACpB,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACrC,CAAC;iBAAM,CAAC;gBAEN,iGAAiG;gBACjG,eAAe,GAAG,OAAO,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,oEAAoE;YACpE,eAAe,GAAG,QAAQ,CAAC;QAC7B,CAAC;QAED,MAAM,UAAU,GAAsB;YAEpC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,eAAe;YACf,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,EAAE,CAAC,KAAK;SACpB,CAAC;QAEF,MAAM,aAAa,GAAyB,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;QAE5E,iDAAiD;QACjD,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;QAEhE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,+JAA+J;IAC/J,uFAAuF;IACvF,KAAI,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,OAAO,EAAE,CAAC;QAExD,4JAA4J;QAC5J,IAAG,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAEvC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,oGAAoG;QACpG,IAAG,UAAU,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAEpD,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,wJAAwJ;IACxJ,kBAAkB;IAClB,aAAa,CAAC,YAAY,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAa;IAErC,OAAO,iBAAiB,GAAG,gBAAgB,GAAG,KAAK,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB;IAE3B,IAAG,aAAa,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEpE,eAAe,EAAE,KAAK,CAAC,UAAU,CAAC,eAAe;QACjD,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI;QAC3B,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;KACxC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,mBAAmB,CAAC,WAAmB;IAE9C,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAExC,mFAAmF;IACnF,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE3C,IAAG,KAAK,EAAE,CAAC;QAET,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAEpD,IAAG,OAAO,EAAE,CAAC;QAEX,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAEpD,IAAG,OAAO,EAAE,CAAC;QAEX,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+IAA+I;IAC/I,4JAA4J;IAC5J,yFAAyF;IACzF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE7C,KAAI,MAAM,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QAE9C,IAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAEnB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEhB,IAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;YAEjD,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEpC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB;IAEzB,aAAa,CAAC,KAAK,EAAE,CAAC;IACtB,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,UAAU,oBAAoB,CAAC,IAAU,EAAE,OAAgC;IAE9E,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAE5C,uJAAuJ;IACvJ,aAAa;IACb,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IAClG,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACjG,CAAC;IAED,6CAA6C;IAC7C,IAAI,WAAW,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAEpD,8JAA8J;IAC9J,2JAA2J;IAC3J,kDAAkD;IAClD,IAAG,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE5B,IAAG,mBAAmB,CAAC,WAAW,EAAE,EAAE,CAAC;YAErC,WAAW,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE;gBAE7C,QAAQ,EAAE,qBAAqB;gBAC/B,MAAM,EAAE,iBAAiB;gBACzB,YAAY,EAAE,aAAa;gBAC3B,SAAS,EAAE,iBAAiB,GAAG,QAAQ;gBACvC,YAAY,EAAE,eAAe;gBAC7B,YAAY,EAAE,uBAAuB;aACtC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,0HAA0H;IAC1H,IAAG,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE5B,OAAO,EAAE,MAAM,EAAE,wDAAwD,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9F,CAAC;IAED,6JAA6J;IAC7J,+FAA+F;IAC/F,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAC5B,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAE1C,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,kCAAkC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAErF,gFAAgF;IAChF,MAAM,KAAK,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAE/C,IAAG,CAAC,KAAK,EAAE,CAAC;QAEV,iHAAiH;QACjH,oBAAoB,CAAC;YAEnB,iBAAiB,EAAE,aAAa,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;YACzE,WAAW;YACX,QAAQ,EAAE,kCAAkC;YAC5C,YAAY,EAAE,WAAW;YACzB,YAAY,EAAE,aAAa;SAC5B,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,iCAAiC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACpG,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,sDAAsD,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAE/G,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACrH,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,OAAO,EAAE,MAAM,EAAE,6CAA6C,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9G,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,wBAAwB,CAAC,eAAuB,EAAE,KAAW;IAE1E,MAAM,KAAK,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAEnD,IAAG,CAAC,KAAK,EAAE,CAAC;QAEV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,wBAAwB,CAAC,IAAU;IAEhD,iGAAiG;IACjG,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;IAEtC,IAAG,MAAM,EAAE,CAAC;QAEV,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mFAAmF;IACnF,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IAClG,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAEtD,gKAAgK;IAChK,IAAG,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAE1C,OAAO,aAAa,CAAC,UAAU,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAE9C,gBAAgB,EAAE,wBAAwB;IAC1C,mBAAmB,EAAE,oBAAoB;IACzC,iBAAiB,EAAE,aAAa,CAAC,MAAM;IACvC,QAAQ,EAAE,kCAAkC;IAC5C,KAAK,EAAE,aAAa;IAEpB,8JAA8J;IAC9J,gKAAgK;IAChK,oKAAoK;IACpK,yIAAyI;IACzI,OAAO,EAAE;QAEP,QAAQ,EAAE,cAAc;QACxB,gBAAgB,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE;QAC9C,WAAW,EAAE,iHAAiH;QAC9H,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,0CAA0C;KACpD;IACD,WAAW,EAAE,UAAU;IACvB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QAER,UAAU,EAAE,kBAAkB;QAC9B,OAAO,EAAE,oBAAoB;QAE7B,4JAA4J;QAC5J,mBAAmB,EAAE,aAAa,CAAC,UAAU;QAC7C,gBAAgB,EAAE,wBAAwB;KAC3C;IACD,YAAY,EAAE,cAAc;CAC7B,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import type { ChannelStrategyEntry } from "../../types/index.ts";
2
2
  export declare const thumbnailRowStrategy: ChannelStrategyEntry;
3
+ //# sourceMappingURL=thumbnailRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thumbnailRow.d.ts","sourceRoot":"","sources":["../../../src/browser/tuning/thumbnailRow.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkD,oBAAoB,EAAyB,MAAM,sBAAsB,CAAC;AAgKxI,eAAO,MAAM,oBAAoB,EAAE,oBAA0D,CAAC"}
@@ -11,7 +11,8 @@ import { evaluateWithAbort } from "../../utils/index.js";
11
11
  * 3. Walk up the DOM to find a container wide enough to hold both the channel element and guide entries
12
12
  * 4. Search for clickable elements (links, buttons, cards) to the right of the channel element on the same row
13
13
  * 5. Fall back to divs with cursor:pointer if no semantic clickables found
14
- * 6. Click the found element to switch to the channel
14
+ * 6. As an ultimate fallback, when no container yields a semantic or cursor:pointer target, blind-click a fixed offset to the right of the channel element
15
+ * 7. Click the found element to switch to the channel
15
16
  * @param page - The Puppeteer page object.
16
17
  * @param profile - The resolved site profile with a non-null channelSelector.
17
18
  * @returns Result object with success status and optional failure reason.
@@ -25,7 +26,8 @@ async function thumbnailRowStrategyFn(page, profile) {
25
26
  for (const el of Array.from(elements)) {
26
27
  const htmlEl = el;
27
28
  const elRect = htmlEl.getBoundingClientRect();
28
- // Verify the element has dimensions (is actually rendered and visible).
29
+ // Verify the element has layout dimensions (is laid out rather than collapsed). Non-zero dimensions confirm layout but not full visibility, since
30
+ // visibility:hidden, opacity:0, or an overlaying element still report non-zero size; this is a reasonable laid-out heuristic for the row.
29
31
  if ((elRect.width > 0) && (elRect.height > 0)) {
30
32
  // Found the channel element. Now walk up the DOM tree to find a container that holds both the element and the guide entries for this row.
31
33
  let rowContainer = htmlEl.parentElement;
@@ -62,6 +64,8 @@ async function thumbnailRowStrategyFn(page, profile) {
62
64
  const divCenterY = divRect.y + (divRect.height / 2);
63
65
  const style = window.getComputedStyle(div);
64
66
  const isRightOfElement = divRect.x > (elRect.x + elRect.width - 10);
67
+ // The 20px floor filters out tiny decorative or spacer divs that carry cursor:pointer but are not real click targets. This is stricter than the
68
+ // semantic-clickable path above, which trusts the element's role and only requires non-zero dimensions.
65
69
  const hasDimensions = (divRect.width > 20) && (divRect.height > 20);
66
70
  const isClickable = style.cursor === "pointer";
67
71
  const isSameRow = Math.abs(divCenterY - elCenterY) < elRect.height;
@@ -78,6 +82,8 @@ async function thumbnailRowStrategyFn(page, profile) {
78
82
  // expectations.
79
83
  htmlEl.scrollIntoView({ behavior: "instant", block: "center", inline: "center" });
80
84
  const newElRect = htmlEl.getBoundingClientRect();
85
+ // The 50px offset lands just past the channel element's right edge, inside the first guide entry for typical row layouts, without overshooting far
86
+ // enough to risk landing in a second column or the row gutter.
81
87
  return { x: newElRect.x + newElRect.width + 50, y: newElRect.y + (newElRect.height / 2) };
82
88
  }
83
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"thumbnailRow.js","sourceRoot":"","sources":["../../../src/browser/tuning/thumbnailRow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thumbnailRow.js","sourceRoot":"","sources":["../../../src/browser/tuning/thumbnailRow.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import type { ChannelStrategyEntry } from "../../types/index.ts";
2
2
  export declare const tileClickStrategy: ChannelStrategyEntry;
3
+ //# sourceMappingURL=tileClick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileClick.d.ts","sourceRoot":"","sources":["../../../src/browser/tuning/tileClick.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkD,oBAAoB,EAAyB,MAAM,sBAAsB,CAAC;AAqMxI,eAAO,MAAM,iBAAiB,EAAE,oBAAuD,CAAC"}
@@ -104,8 +104,9 @@ 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
108
- // against a slow modal dismissal animation.
107
+ // Play button no longer resolves to a clickable target between attempts - either it was removed (the previous click likely worked and the SPA
108
+ // transitioned), or it is still present but reports no rendered size, which can happen when the verification timeout races against a slow modal
109
+ // dismissal animation.
109
110
  if (attempt > 0) {
110
111
  LOG.debug("tuning:tileClick", "Play button disappeared before attempt %s. Previous click likely succeeded.", attempt + 1);
111
112
  return { success: true };
@@ -1 +1 @@
1
- {"version":3,"file":"tileClick.js","sourceRoot":"","sources":["../../../src/browser/tuning/tileClick.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tileClick.js","sourceRoot":"","sources":["../../../src/browser/tuning/tileClick.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import type { ProviderModule } from "../../types/index.ts";
2
2
  export declare const xfinityProvider: ProviderModule;
3
+ //# sourceMappingURL=xfinity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xfinity.d.ts","sourceRoot":"","sources":["../../../src/browser/tuning/xfinity.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,eAAO,MAAM,eAAe,EAAE,cAY5B,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import type { ProviderModule } from "../../types/index.ts";
2
2
  export declare const yttvProvider: ProviderModule;
3
+ //# sourceMappingURL=youtubeTv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"youtubeTv.d.ts","sourceRoot":"","sources":["../../../src/browser/tuning/youtubeTv.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA+E,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAsZxI,eAAO,MAAM,YAAY,EAAE,cAoC1B,CAAC"}