prismcast 1.4.2 → 1.5.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 (178) hide show
  1. package/dist/app.js +18 -1
  2. package/dist/app.js.map +1 -1
  3. package/dist/browser/cdp.d.ts +2 -1
  4. package/dist/browser/cdp.js +44 -23
  5. package/dist/browser/cdp.js.map +1 -1
  6. package/dist/browser/channelSelection.d.ts +45 -1
  7. package/dist/browser/channelSelection.js +164 -27
  8. package/dist/browser/channelSelection.js.map +1 -1
  9. package/dist/browser/display.d.ts +0 -4
  10. package/dist/browser/display.js +0 -7
  11. package/dist/browser/display.js.map +1 -1
  12. package/dist/browser/index.d.ts +5 -0
  13. package/dist/browser/index.js +14 -0
  14. package/dist/browser/index.js.map +1 -1
  15. package/dist/browser/precaching.d.ts +5 -0
  16. package/dist/browser/precaching.js +112 -0
  17. package/dist/browser/precaching.js.map +1 -0
  18. package/dist/browser/tuning/directv.d.ts +2 -0
  19. package/dist/browser/tuning/directv.js +723 -0
  20. package/dist/browser/tuning/directv.js.map +1 -0
  21. package/dist/browser/tuning/fox.d.ts +2 -2
  22. package/dist/browser/tuning/fox.js +141 -22
  23. package/dist/browser/tuning/fox.js.map +1 -1
  24. package/dist/browser/tuning/hbo.d.ts +2 -2
  25. package/dist/browser/tuning/hbo.js +110 -41
  26. package/dist/browser/tuning/hbo.js.map +1 -1
  27. package/dist/browser/tuning/hulu.d.ts +2 -2
  28. package/dist/browser/tuning/hulu.js +442 -168
  29. package/dist/browser/tuning/hulu.js.map +1 -1
  30. package/dist/browser/tuning/sling.d.ts +2 -2
  31. package/dist/browser/tuning/sling.js +200 -56
  32. package/dist/browser/tuning/sling.js.map +1 -1
  33. package/dist/browser/tuning/youtubeTv.d.ts +2 -2
  34. package/dist/browser/tuning/youtubeTv.js +243 -57
  35. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  36. package/dist/browser/video.d.ts +1 -1
  37. package/dist/browser/video.js +4 -2
  38. package/dist/browser/video.js.map +1 -1
  39. package/dist/channels/index.js +280 -34
  40. package/dist/channels/index.js.map +1 -1
  41. package/dist/config/health.d.ts +78 -0
  42. package/dist/config/health.js +202 -0
  43. package/dist/config/health.js.map +1 -0
  44. package/dist/config/paths.d.ts +10 -0
  45. package/dist/config/paths.js +14 -0
  46. package/dist/config/paths.js.map +1 -1
  47. package/dist/config/profiles.d.ts +6 -4
  48. package/dist/config/profiles.js +65 -14
  49. package/dist/config/profiles.js.map +1 -1
  50. package/dist/config/providerPacks.d.ts +46 -0
  51. package/dist/config/providerPacks.js +200 -0
  52. package/dist/config/providerPacks.js.map +1 -0
  53. package/dist/config/providers.d.ts +36 -3
  54. package/dist/config/providers.js +168 -8
  55. package/dist/config/providers.js.map +1 -1
  56. package/dist/config/sites.d.ts +1 -12
  57. package/dist/config/sites.js +38 -5
  58. package/dist/config/sites.js.map +1 -1
  59. package/dist/config/userChannels.d.ts +12 -0
  60. package/dist/config/userChannels.js +81 -14
  61. package/dist/config/userChannels.js.map +1 -1
  62. package/dist/config/userConfig.d.ts +5 -1
  63. package/dist/config/userConfig.js +58 -6
  64. package/dist/config/userConfig.js.map +1 -1
  65. package/dist/config/userProfiles.d.ts +81 -0
  66. package/dist/config/userProfiles.js +424 -0
  67. package/dist/config/userProfiles.js.map +1 -0
  68. package/dist/routes/config/channels/index.d.ts +3 -0
  69. package/dist/routes/config/channels/index.js +3 -0
  70. package/dist/routes/config/channels/index.js.map +1 -0
  71. package/dist/routes/config/channels/routes.d.ts +6 -0
  72. package/dist/routes/config/channels/routes.js +797 -0
  73. package/dist/routes/config/channels/routes.js.map +1 -0
  74. package/dist/routes/config/channels/table.d.ts +46 -0
  75. package/dist/routes/config/channels/table.js +811 -0
  76. package/dist/routes/config/channels/table.js.map +1 -0
  77. package/dist/routes/config/index.d.ts +37 -0
  78. package/dist/routes/config/index.js +81 -0
  79. package/dist/routes/config/index.js.map +1 -0
  80. package/dist/routes/config/providers.d.ts +18 -0
  81. package/dist/routes/config/providers.js +573 -0
  82. package/dist/routes/config/providers.js.map +1 -0
  83. package/dist/routes/config/settings.d.ts +39 -0
  84. package/dist/routes/config/settings.js +820 -0
  85. package/dist/routes/config/settings.js.map +1 -0
  86. package/dist/routes/index.d.ts +3 -2
  87. package/dist/routes/index.js +7 -4
  88. package/dist/routes/index.js.map +1 -1
  89. package/dist/routes/playlist.d.ts +5 -1
  90. package/dist/routes/playlist.js +32 -7
  91. package/dist/routes/playlist.js.map +1 -1
  92. package/dist/routes/providers.d.ts +6 -0
  93. package/dist/routes/providers.js +166 -0
  94. package/dist/routes/providers.js.map +1 -0
  95. package/dist/routes/root/content.d.ts +32 -0
  96. package/dist/routes/root/content.js +857 -0
  97. package/dist/routes/root/content.js.map +1 -0
  98. package/dist/routes/root/index.js +197 -0
  99. package/dist/routes/root/index.js.map +1 -0
  100. package/dist/routes/root/scripts/channels.d.ts +1 -0
  101. package/dist/routes/root/scripts/channels.js +745 -0
  102. package/dist/routes/root/scripts/channels.js.map +1 -0
  103. package/dist/routes/root/scripts/config.d.ts +1 -0
  104. package/dist/routes/root/scripts/config.js +1662 -0
  105. package/dist/routes/root/scripts/config.js.map +1 -0
  106. package/dist/routes/root/scripts/index.d.ts +3 -0
  107. package/dist/routes/root/scripts/index.js +8 -0
  108. package/dist/routes/root/scripts/index.js.map +1 -0
  109. package/dist/routes/root/scripts/status.d.ts +1 -0
  110. package/dist/routes/root/scripts/status.js +436 -0
  111. package/dist/routes/root/scripts/status.js.map +1 -0
  112. package/dist/routes/root/styles.d.ts +5 -0
  113. package/dist/routes/root/styles.js +447 -0
  114. package/dist/routes/root/styles.js.map +1 -0
  115. package/dist/routes/ui.js +8 -3
  116. package/dist/routes/ui.js.map +1 -1
  117. package/dist/service/commands.d.ts +5 -3
  118. package/dist/service/commands.js +117 -33
  119. package/dist/service/commands.js.map +1 -1
  120. package/dist/service/generators.d.ts +27 -0
  121. package/dist/service/generators.js +97 -6
  122. package/dist/service/generators.js.map +1 -1
  123. package/dist/streaming/hls.js +18 -1
  124. package/dist/streaming/hls.js.map +1 -1
  125. package/dist/streaming/lifecycle.js +1 -1
  126. package/dist/streaming/lifecycle.js.map +1 -1
  127. package/dist/streaming/monitor.d.ts +1 -38
  128. package/dist/streaming/monitor.js +2 -289
  129. package/dist/streaming/monitor.js.map +1 -1
  130. package/dist/streaming/recovery.d.ts +143 -0
  131. package/dist/streaming/recovery.js +286 -0
  132. package/dist/streaming/recovery.js.map +1 -0
  133. package/dist/streaming/registry.d.ts +1 -1
  134. package/dist/streaming/setup.d.ts +1 -1
  135. package/dist/streaming/setup.js +3 -1
  136. package/dist/streaming/setup.js.map +1 -1
  137. package/dist/streaming/statusEmitter.d.ts +4 -2
  138. package/dist/streaming/statusEmitter.js +5 -0
  139. package/dist/streaming/statusEmitter.js.map +1 -1
  140. package/dist/types/channels.d.ts +68 -0
  141. package/dist/types/channels.js +2 -0
  142. package/dist/types/channels.js.map +1 -0
  143. package/dist/types/config.d.ts +127 -0
  144. package/dist/types/config.js +2 -0
  145. package/dist/types/config.js.map +1 -0
  146. package/dist/types/index.d.ts +7 -429
  147. package/dist/types/index.js +1 -5
  148. package/dist/types/index.js.map +1 -1
  149. package/dist/types/profiles.d.ts +141 -0
  150. package/dist/types/profiles.js +2 -0
  151. package/dist/types/profiles.js.map +1 -0
  152. package/dist/types/selection.d.ts +101 -0
  153. package/dist/types/selection.js +6 -0
  154. package/dist/types/selection.js.map +1 -0
  155. package/dist/types/shared.d.ts +7 -0
  156. package/dist/types/shared.js +6 -0
  157. package/dist/types/shared.js.map +1 -0
  158. package/dist/types/streaming.d.ts +96 -0
  159. package/dist/types/streaming.js +2 -0
  160. package/dist/types/streaming.js.map +1 -0
  161. package/dist/utils/debugFilter.js +3 -1
  162. package/dist/utils/debugFilter.js.map +1 -1
  163. package/dist/utils/format.d.ts +7 -0
  164. package/dist/utils/format.js +22 -0
  165. package/dist/utils/format.js.map +1 -1
  166. package/dist/utils/index.d.ts +1 -0
  167. package/dist/utils/index.js +1 -0
  168. package/dist/utils/index.js.map +1 -1
  169. package/dist/utils/sanitize.d.ts +14 -0
  170. package/dist/utils/sanitize.js +37 -0
  171. package/dist/utils/sanitize.js.map +1 -0
  172. package/package.json +5 -3
  173. package/dist/routes/config.d.ts +0 -76
  174. package/dist/routes/config.js +0 -2187
  175. package/dist/routes/config.js.map +0 -1
  176. package/dist/routes/root.js +0 -3158
  177. package/dist/routes/root.js.map +0 -1
  178. /package/dist/routes/{root.d.ts → root/index.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"sling.js","sourceRoot":"","sources":["../../../src/browser/tuning/sling.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,4JAA4J;AAC5J,mKAAmK;AACnK,gGAAgG;AAChG,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEhD,8JAA8J;AAC9J,oHAAoH;AACpH,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAExD,8JAA8J;AAC9J,8JAA8J;AAC9J,4DAA4D;AAC5D,IAAI,qBAAqB,GAAqB,IAAI,CAAC;AAEnD,uGAAuG;AACvG,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAE/C,+GAA+G;AAC/G,MAAM,iBAAiB,GAAG,iCAAiC,CAAC;AAE5D,gKAAgK;AAChK,6FAA6F;AAC7F,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,4JAA4J;AAC5J,8JAA8J;AAC9J,qGAAqG;AACrG,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B;;;GAGG;AACH,SAAS,eAAe;IAEtB,aAAa,CAAC,KAAK,EAAE,CAAC;IACtB,qBAAqB,CAAC,KAAK,EAAE,CAAC;IAC9B,qBAAqB,GAAG,IAAI,CAAC;AAC/B,CAAC;AAoBD;;;;;;;;;GASG;AACH,KAAK,UAAU,0BAA0B,CAAC,IAAU,EAAE,UAA4B;IAEhF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAwB,EAItD,EAAE;QAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;QAE5E,IAAG,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAE3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC;QAC1B,MAAM,QAAQ,GAAyC,EAAE,CAAC;QAC1D,IAAI,WAAW,GAAuC,IAAI,CAAC;QAC3D,IAAI,WAAW,GAAqB,IAAI,CAAC;QAEzC,KAAI,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAEvC,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAEnF,2HAA2H;YAC3H,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;YAClB,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAExD,IAAG,YAAY,EAAE,CAAC;gBAEhB,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAErE,IAAG,UAAU,EAAE,CAAC;oBAEd,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAElC,4JAA4J;YAC5J,2JAA2J;YAC3J,yEAAyE;YACzE,IAAG,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;gBAEnF,WAAW,GAAG,IAAI,CAAC;gBAEnB,IAAG,YAAY,EAAE,CAAC;oBAEhB,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,qCAAqC,CAA0B,CAAC;oBAEzG,IAAG,KAAK,EAAE,CAAC;wBAET,KAAK,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;wBAEjF,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;wBAE3C,IAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;4BAEzC,WAAW,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;wBAChF,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IAChD,CAAC,EAAE,UAAU,CAAC,CAAC;IAEf,IAAG,CAAC,GAAG,EAAE,CAAC;QAER,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAClE,CAAC;IAED,yDAAyD;IACzD,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAI,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE7B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAExD,IAAG,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YAEpB,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;AAC5F,CAAC;AAED,mKAAmK;AACnK,8DAA8D;AAC9D,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,0IAA0I;AAC1I,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAEtC,gKAAgK;AAChK,kJAAkJ;AAClJ,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,mCAAmC,CAChD,IAAU,EAAE,MAAmB,EAAE,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,iBAAiB;IAG7E,IAAI,CAAC;QAEH,gJAAgJ;QAChJ,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;SACrC,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,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;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,cAAc,CAC3B,IAAU,EAAE,aAA0B,EAAE,cAAsB,EAAE,WAAmB;IAGnF,IAAI,MAAM,GAAG,aAAa,CAAC;IAC3B,IAAI,UAAU,GAA0B,EAAE,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAE9F,KAAI,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAAC;QAE7D,yJAAyJ;QACzJ,IAAG,OAAO,GAAG,CAAC,EAAE,CAAC;YAEf,kJAAkJ;YAClJ,mGAAmG;YACnG,IAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAE1C,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,0FAA0F,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;gBAE5I,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;YAED,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,sCAAsC,EAAE,OAAO,GAAG,CAAC,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;YAEhH,4JAA4J;YAC5J,0JAA0J;YAC1J,iCAAiC;YACjC,IAAI,CAAC;gBAEH,4CAA4C;gBAC5C,MAAM,WAAW,GAAG,MAAM,0BAA0B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;gBAE3E,IAAG,WAAW,CAAC,WAAW,EAAE,CAAC;oBAE3B,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC;gBACnC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBAEP,sFAAsF;YACxF,CAAC;QACH,CAAC;QAED,sIAAsI;QACtI,MAAM,OAAO,GAAG,CAAC,OAAO,GAAG,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC;QAEhH,4CAA4C;QAC5C,UAAU,GAAG,MAAM,mCAAmC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9E,IAAG,UAAU,CAAC,OAAO,EAAE,CAAC;YAEtB,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,cAAsB;IAE7C,IAAI,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IAEpE,IAAG,CAAC,WAAW,EAAE,CAAC;QAEhB,KAAI,MAAM,CAAE,GAAG,EAAE,IAAI,CAAE,IAAI,qBAAqB,EAAE,CAAC;YAEjD,IAAG,GAAG,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC;gBAEzC,WAAW,GAAG,IAAI,CAAC;gBAEnB,wDAAwD;gBACxD,qBAAqB,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;gBAEhD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB;IAEvB,IAAI,GAAG,GAAqB,IAAI,CAAC;IAEjC,KAAI,MAAM,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC;QAE9C,IAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;YAEvB,GAAG,GAAG,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IAElD,IAAG,CAAC,qBAAqB,EAAE,CAAC;QAE1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,qBAAqB,GAAG,GAAG,GAAG,WAAW,GAAG,iCAAiC,CAAC,CAAC;IAE5G,IAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAEhB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAuD,CAAC;IAExF,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;AACjD,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,gBAAgB,CAAC,cAAsB;IAEpD,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAEpD,IAAG,CAAC,WAAW,EAAE,CAAC;QAEhB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAErD,IAAG,CAAC,OAAO,EAAE,CAAC;QAEZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,iBAAiB,GAAG,GAAG,GAAG,OAAO,GAAG,QAAQ,CAAC;AACtD,CAAC;AAmBD;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,IAA0B;IAExD,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAEjB,OAAO;IACT,CAAC;IAED,KAAI,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAEjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;QACnE,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;QACrC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC;QAE7C,qJAAqJ;QACrJ,qJAAqJ;QACrJ,yBAAyB;QACzB,IAAG,WAAW,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;YAExC,qBAAqB,CAAC,GAAG,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;QAC5E,CAAC;QAED,oJAAoJ;QACpJ,6IAA6I;QAC7I,IAAG,CAAC,qBAAqB,EAAE,CAAC;YAE1B,MAAM,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,CAAC;YAEpE,IAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAE3E,qBAAqB,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC;IACH,CAAC;AAEH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,6BAA6B,CAAC,IAAU;IAE/C,IAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAEhC,OAAO;IACT,CAAC;IAED,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;QAE/B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;QAE3B,IAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;YAEvE,OAAO;QACT,CAAC;QAED,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAA0B,EAAE,EAAE;YAEvD,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAEZ,+DAA+D;QACjE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,qBAAqB,CAAC,eAAuB,EAAE,IAAU;IAEtE,MAAM,cAAc,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAE7D,wGAAwG;IACxG,IAAI,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAEzD,IAAG,SAAS,EAAE,CAAC;YAEb,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,uCAAuC,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;YAE/F,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,8CAA8C,EAAE,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/G,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wJAAwJ;IACxJ,qGAAqG;IACrG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAEpC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB,CAAC,eAAuB;IAEvD,qBAAqB,CAAC,MAAM,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,UAAU,iBAAiB,CAAC,IAAU,EAAE,OAAgC;IAE3E,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAC5C,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEzD,2IAA2I;IAC3I,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,EAAE,MAAM,EAAE,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;IAED,6JAA6J;IAC7J,2JAA2J;IAC3J,wJAAwJ;IACxJ,2JAA2J;IAC3J,kEAAkE;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,iBAAiB,EAAE,CAAC;QAEnD,IAAG,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;YAEnC,MAAM;QACR,CAAC;QAED,mJAAmJ;QACnJ,mHAAmH;QACnH,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;QAEpC,IAAG,QAAQ,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,EAAE,CAAC;YAE3C,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,0EAA0E,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YAEhI,MAAM;QACR,CAAC;QAED,4CAA4C;QAC5C,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IAED,4GAA4G;IAC5G,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAE3E,IAAG,SAAS,EAAE,CAAC;QAEb,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,wCAAwC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC;QAEpH,IAAI,CAAC;YAEH,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAE3G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAM,KAAK,EAAE,CAAC;YAEd,OAAO,EAAE,MAAM,EAAE,4CAA4C,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC7G,CAAC;IACH,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,wFAAwF,EAChH,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEzG,8JAA8J;IAC9J,0CAA0C;IAC1C,MAAM,UAAU,GAAG,GAAG,CAAC;IACvB,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAiB,EAAmC,EAAE;QAE1F,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAExD,IAAG,CAAC,SAAS,EAAE,CAAC;YAEd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;QAEjE,IAAG,SAAS,IAAI,CAAC,EAAE,CAAC;YAElB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC,EAAE,UAAU,CAAC,CAAC;IAEf,IAAG,CAAC,QAAQ,EAAE,CAAC;QAEb,OAAO,EAAE,MAAM,EAAE,wDAAwD,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9F,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;IAE/B,2GAA2G;IAC3G,MAAM,WAAW,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;QAE5D,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAgB,EAAQ,EAAE;YAE7C,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YAExD,IAAG,SAAS,EAAE,CAAC;gBAEb,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC;YACjC,CAAC;QACH,CAAC,EAAE,UAAU,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC;QAEzC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,wIAAwI;IACxI,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEpD,IAAG,SAAS,KAAK,SAAS,EAAE,CAAC;QAE3B,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,uCAAuC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAE3F,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;QAE7B,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,0BAA0B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAEzF,IAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;YAE3B,OAAO,MAAM,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAC9E,CAAC;QAED,4GAA4G;QAC5G,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,yDAAyD,EAAE,WAAW,CAAC,CAAC;QAElG,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IAED,iKAAiK;IACjK,+JAA+J;IAC/J,uHAAuH;IACvH,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC;IACzB,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,IAAI,gBAAgB,GAA0B,IAAI,CAAC;IACnD,IAAI,gBAAgB,GAAqB,IAAI,CAAC;IAE9C,KAAI,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC;QAE9D,IAAG,GAAG,GAAG,IAAI,EAAE,CAAC;YAEd,MAAM;QACR,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzC,4CAA4C;QAC5C,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QAEvB,4CAA4C;QAC5C,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,0BAA0B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAEtG,IAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAExC,SAAS;QACX,CAAC;QAED,kGAAkG;QAClG,IAAG,WAAW,EAAE,CAAC;YAEf,gBAAgB,GAAG,WAAW,CAAC;YAC/B,gBAAgB,GAAG,WAAW,CAAC;YAE/B,MAAM;QACR,CAAC;QAED,4JAA4J;QAC5J,yFAAyF;QACzF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtD,oGAAoG;QACpG,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhD,IAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAE3C,6DAA6D;YAC7D,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;YAEf,SAAS;QACX,CAAC;QAED,IAAG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAE1C,6DAA6D;YAC7D,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAEd,SAAS;QACX,CAAC;QAED,qHAAqH;QACrH,MAAM;IACR,CAAC;IAED,IAAG,CAAC,gBAAgB,EAAE,CAAC;QAErB,4JAA4J;QAC5J,kIAAkI;QAClI,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAElE,IAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAEhC,oBAAoB,CAAC;gBAEnB,iBAAiB;gBACjB,WAAW;gBACX,QAAQ,EAAE,6DAA6D;gBACvE,YAAY,EAAE,UAAU;aACzB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,yBAAyB,GAAG,WAAW,GAAG,0BAA0B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC1G,CAAC;IAED,sJAAsJ;IACtJ,mBAAmB;IACnB,IAAG,gBAAgB,IAAI,CAAC,gBAAgB,KAAK,cAAc,CAAC,EAAE,CAAC;QAE7D,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEzD,IAAG,YAAY,KAAK,SAAS,EAAE,CAAC;YAE9B,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,iKAAiK;IACjK,wEAAwE;IACxE,OAAO,MAAM,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAyB;IAEjD,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,iBAAiB;IAC1B,mBAAmB,EAAE,wBAAwB;IAC7C,gBAAgB,EAAE,qBAAqB;CACxC,CAAC"}
1
+ {"version":3,"file":"sling.js","sourceRoot":"","sources":["../../../src/browser/tuning/sling.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import type { ChannelStrategyEntry } from "../../types/index.js";
2
- export declare const yttvStrategy: ChannelStrategyEntry;
1
+ import type { ProviderModule } from "../../types/index.js";
2
+ export declare const yttvProvider: ProviderModule;
@@ -3,11 +3,16 @@ import { CONFIG } from "../../config/index.js";
3
3
  import { logAvailableChannels } from "../channelSelection.js";
4
4
  // Base URL for YouTube TV watch page navigation.
5
5
  const YOUTUBE_TV_BASE_URL = "https://tv.youtube.com";
6
- // Module-level cache for watch URLs discovered during channel selection. On the first tune to any YTTV channel, the strategy performs a bulk scrape of all ~256
7
- // channels in the non-virtualized EPG grid, populating this cache with every channel's watch URL keyed by its lowercased guide name (e.g., "cnn", "nbc 5", "espn").
8
- // Subsequent tunes to any YTTV channel resolve via findWatchUrl() in resolveDirectUrl, skipping guide navigation entirely. Cleared on browser disconnect via
9
- // clearYttvCache().
10
- const yttvWatchUrlCache = new Map();
6
+ // Unified channel cache for YouTube TV. Maps lowercased guide names (e.g., "cnn", "nbc 5", "espn") to their combined discovery and tuning data. Populated during
7
+ // the first tune (when the strategy enumerates all ~256 channels from the non-virtualized EPG grid) or the first discovery call. Both tuning (via findWatchUrl) and
8
+ // discovery (via getCachedChannels / discoverYttvChannels) read from this single cache. Cleared on browser disconnect via clearYttvCache().
9
+ const yttvChannelCache = new Map();
10
+ // Tracks consecutive guide page loads that discover zero channels. When this reaches the recovery threshold, the strategy clears YTTV site data (service workers
11
+ // and cache 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.
12
+ // Reset to zero on any successful discovery (> 0 channels found) or on browser restart (via clearYttvCache).
13
+ let consecutiveEmptyDiscoveries = 0;
14
+ // Number of consecutive empty discoveries before attempting site data recovery via CDP.
15
+ const EMPTY_DISCOVERY_RECOVERY_THRESHOLD = 3;
11
16
  // Known alternate channel names for affiliates that vary by market. CW appears as "WGN" in some markets. PBS affiliates appear under local call letters (e.g.,
12
17
  // WTTW, KQED) or branded names (e.g., "Cascade PBS", "Lakeshore PBS") rather than "PBS", so we list the major market call letters and branded names to cover most
13
18
  // users. Each alternate is tried after the primary name fails both exact and prefix+digit matching. Users in smaller markets override via custom channel entries with
@@ -20,8 +25,8 @@ const CHANNEL_ALTERNATES = {
20
25
  ]
21
26
  };
22
27
  /**
23
- * Looks up a watch URL in the cache using the same three-tier matching logic as the guide grid DOM query. The tiers are tried in order for each name in the
24
- * candidate list (primary channelSelector first, then any CHANNEL_ALTERNATES):
28
+ * Looks up a watch URL in the unified cache using three-tier matching logic. The tiers are tried in order for each name in the candidate list (primary
29
+ * channelSelector first, then any CHANNEL_ALTERNATES):
25
30
  *
26
31
  * 1. Exact match: cache key equals the lowercased name (e.g., "cnn" matches "cnn").
27
32
  * 2. Prefix+digit: cache key starts with the name followed by a space and a digit. Catches local affiliates displayed as "{Network} {Number}" (e.g., "nbc 5",
@@ -29,7 +34,8 @@ const CHANNEL_ALTERNATES = {
29
34
  * 3. Parenthetical suffix: cache key starts with the name followed by " (". Catches timezone/region variants like "magnolia network (pacific)".
30
35
  *
31
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
32
- * the resolveDirectUrl hook — after the first tune populates the cache via bulk scrape, every subsequent YTTV tune resolves here without loading the guide page.
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
+ * page.
33
39
  * @param channelName - The channelSelector value (e.g., "CNN", "NBC", "CW").
34
40
  * @returns The full watch URL or null if no match is found.
35
41
  */
@@ -42,28 +48,28 @@ function findWatchUrl(channelName) {
42
48
  const namesToTry = alternates ? [lower, ...alternates.map((a) => a.toLowerCase())] : [lower];
43
49
  for (const name of namesToTry) {
44
50
  // Tier 1: Exact match.
45
- const exact = yttvWatchUrlCache.get(name);
51
+ const exact = yttvChannelCache.get(name);
46
52
  if (exact) {
47
53
  // Cache under the primary channelSelector key if we matched via an alternate name, so subsequent lookups are O(1).
48
54
  if (name !== lower) {
49
- yttvWatchUrlCache.set(lower, exact);
55
+ yttvChannelCache.set(lower, exact);
50
56
  }
51
- return exact;
57
+ return exact.watchUrl;
52
58
  }
53
59
  // Tier 2: Prefix+digit match for local affiliates. Iterate all cache entries to find one whose key starts with "{name} " followed by a digit, matching the
54
60
  // "{Network} {Number}" pattern (e.g., "nbc 5", "abc 7") while excluding unrelated channels that share the prefix (e.g., "nbc sports").
55
- for (const [key, url] of yttvWatchUrlCache) {
61
+ for (const [key, entry] of yttvChannelCache) {
56
62
  if (key.startsWith(name + " ") && (key.length > name.length + 1) && (key.charCodeAt(name.length + 1) >= 48) && (key.charCodeAt(name.length + 1) <= 57)) {
57
- yttvWatchUrlCache.set(lower, url);
58
- return url;
63
+ yttvChannelCache.set(lower, entry);
64
+ return entry.watchUrl;
59
65
  }
60
66
  }
61
67
  // Tier 3: Parenthetical suffix match for timezone/region variants. Find a cache entry whose key starts with "{name} (" to catch channels like
62
68
  // "magnolia network (pacific)" or "the filipino channel (pacific)".
63
- for (const [key, url] of yttvWatchUrlCache) {
69
+ for (const [key, entry] of yttvChannelCache) {
64
70
  if (key.startsWith(name + " (")) {
65
- yttvWatchUrlCache.set(lower, url);
66
- return url;
71
+ yttvChannelCache.set(lower, entry);
72
+ return entry.watchUrl;
67
73
  }
68
74
  }
69
75
  }
@@ -71,29 +77,165 @@ function findWatchUrl(channelName) {
71
77
  }
72
78
  /**
73
79
  * 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
74
- * channelSelector key — the bulk-scraped guide-name entries are left intact and will be refreshed on the next strategy run when the guide page is reloaded.
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
81
+ * reloaded.
75
82
  * @param channelSelector - The channel selector string to invalidate.
76
83
  */
77
84
  function invalidateYttvDirectUrl(channelSelector) {
78
- yttvWatchUrlCache.delete(channelSelector.toLowerCase());
85
+ yttvChannelCache.delete(channelSelector.toLowerCase());
79
86
  }
80
87
  /**
81
- * Clears all cached YouTube TV watch URLs. Called by clearChannelSelectionCaches() in the coordinator when the browser restarts.
88
+ * Clears all YouTube TV caches: the unified channel cache and the empty discovery counter. Called by clearChannelSelectionCaches() in the coordinator when the
89
+ * browser restarts, since a fresh browser session resolves the degraded guide state that the counter tracks.
82
90
  */
83
91
  function clearYttvCache() {
84
- yttvWatchUrlCache.clear();
92
+ consecutiveEmptyDiscoveries = 0;
93
+ yttvChannelCache.clear();
85
94
  }
86
95
  /**
87
- * YouTube TV grid strategy: scrapes all watch URLs from the non-virtualized EPG grid at tv.youtube.com/live in a single pass, populating the module-level cache so
88
- * that subsequent tunes to any YTTV channel resolve via findWatchUrl() without loading the guide page. All ~256 channel rows are present in the DOM simultaneously,
89
- * so one querySelectorAll captures every channel's name and watch URL.
96
+ * Discovers all channels from the YouTube TV EPG grid in a single evaluate round-trip. For each thumbnail endpoint with a valid watch/ href, extracts the channel
97
+ * name (from the aria-label, stripping the "watch " prefix) and the watch path. Channels with "live" or "browse/" hrefs are premium add-ons or info pages and are
98
+ * excluded. Returns an empty array if no channels are found (e.g., guide in a degraded state) or if the evaluate is aborted.
99
+ * @param page - The Puppeteer page object positioned on the YouTube TV live guide.
100
+ * @returns Array of discovered channel names and watch paths.
101
+ */
102
+ async function discoverGuideChannels(page) {
103
+ return await evaluateWithAbort(page, () => {
104
+ const results = [];
105
+ for (const thumb of Array.from(document.querySelectorAll("ytu-endpoint.tenx-thumb[aria-label]"))) {
106
+ const label = thumb.getAttribute("aria-label") ?? "";
107
+ if (!label.startsWith("watch ")) {
108
+ continue;
109
+ }
110
+ const anchor = thumb.querySelector("a");
111
+ const href = anchor?.getAttribute("href") ?? "";
112
+ // Only include channels with streamable watch URLs. Channels with "live" or "browse/" hrefs are premium add-ons or info pages.
113
+ if (href.startsWith("watch/")) {
114
+ results.push({ name: label.slice(6), watchPath: href });
115
+ }
116
+ }
117
+ return results;
118
+ }, []);
119
+ }
120
+ /**
121
+ * 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
+ * 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.
124
+ * @param page - The Puppeteer page object.
125
+ * @returns Discovered channels after recovery, or an empty array if recovery failed.
126
+ */
127
+ async function attemptGuideRecovery(page) {
128
+ 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
130
+ // state are deliberately preserved to avoid forcing re-authentication.
131
+ try {
132
+ const client = await page.createCDPSession();
133
+ await client.send("Storage.clearDataForOrigin", { origin: YOUTUBE_TV_BASE_URL, storageTypes: "cache_storage,service_workers" });
134
+ await client.detach();
135
+ }
136
+ catch (error) {
137
+ LOG.warn("Failed to clear YouTube TV site data: %s.", formatError(error));
138
+ return [];
139
+ }
140
+ // Reload the guide page with fresh state.
141
+ try {
142
+ await page.goto(YOUTUBE_TV_BASE_URL + "/live", { timeout: CONFIG.streaming.navigationTimeout, waitUntil: "load" });
143
+ }
144
+ catch (error) {
145
+ LOG.warn("Failed to reload YouTube TV guide after clearing site data: %s.", formatError(error));
146
+ return [];
147
+ }
148
+ // Wait for the EPG grid to render after reload.
149
+ try {
150
+ await page.waitForSelector("ytu-epg-row", { timeout: CONFIG.streaming.videoTimeout });
151
+ }
152
+ catch {
153
+ LOG.warn("YouTube TV guide grid did not load after clearing site data.");
154
+ return [];
155
+ }
156
+ // Re-attempt channel discovery on the reloaded page.
157
+ const channels = await discoverGuideChannels(page);
158
+ if (channels.length > 0) {
159
+ LOG.info("YouTube TV guide recovery succeeded — discovered %s channels after clearing site data.", channels.length);
160
+ }
161
+ else {
162
+ LOG.warn("YouTube TV guide still empty after clearing site data.");
163
+ }
164
+ return channels;
165
+ }
166
+ // Broadcast network names that have local affiliates displayed as "{Network} {Number}" (e.g., "NBC 5", "ABC 7") in the YouTube TV guide. Used to constrain
167
+ // prefix+digit affiliate detection to actual broadcast networks and avoid false positives like "ESPN 2" or "Fox Sports 1".
168
+ const YTTV_BROADCAST_NETWORKS = new Set(["abc", "cbs", "cw", "fox", "nbc", "pbs"]);
169
+ // Pattern for detecting local affiliate channels displayed as "{Network} {Number}" (e.g., "NBC 5", "ABC 7"). The prefix is validated against
170
+ // YTTV_BROADCAST_NETWORKS before tagging as an affiliate.
171
+ const YTTV_AFFILIATE_PATTERN = /^(.+?) \d/;
172
+ /**
173
+ * Derives a DiscoveredChannel array from the unified channel cache, deduplicating alias entries via Set reference equality. Aliases are created by findWatchUrl
174
+ * when a prefix+digit, parenthetical, or CHANNEL_ALTERNATES match caches the same YttvChannelEntry under the primary channelSelector key. Without deduplication,
175
+ * iterating cache values would produce duplicate entries in the discovery output. Sorts by name before returning.
176
+ * @returns Sorted, deduplicated array of discovered channels.
177
+ */
178
+ function buildYttvDiscoveredChannels() {
179
+ const channels = [];
180
+ const seen = new Set();
181
+ for (const entry of yttvChannelCache.values()) {
182
+ if (seen.has(entry)) {
183
+ continue;
184
+ }
185
+ seen.add(entry);
186
+ channels.push(entry.discovered);
187
+ }
188
+ channels.sort((a, b) => a.name.localeCompare(b.name));
189
+ return channels;
190
+ }
191
+ /**
192
+ * 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
195
+ * (tuning-time population) and discoverYttvChannels (discovery endpoint).
196
+ * @param rawChannels - Array of channel names and watch paths from discoverGuideChannels().
197
+ */
198
+ function populateYttvChannelCache(rawChannels) {
199
+ // Build a reverse lookup from alternate names to their parent network for affiliate detection.
200
+ const alternateToNetwork = new Map();
201
+ for (const [network, alts] of Object.entries(CHANNEL_ALTERNATES)) {
202
+ for (const alt of alts) {
203
+ alternateToNetwork.set(alt.toLowerCase(), network.toUpperCase());
204
+ }
205
+ }
206
+ for (const ch of rawChannels) {
207
+ const entry = { channelSelector: ch.name, name: ch.name };
208
+ // Detect affiliates via prefix+digit pattern, but only for known broadcast networks. This prevents false positives like "ESPN 2" or "Fox Sports 1"
209
+ // 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();
213
+ entry.channelSelector = entry.affiliate;
214
+ }
215
+ else {
216
+ // Detect affiliates via CHANNEL_ALTERNATES (e.g., "WGN" → affiliate of "CW", "WTTW" → affiliate of "PBS"). Only checked when prefix+digit didn't
217
+ // match, since the two mechanisms target different affiliate naming patterns.
218
+ const altNetwork = alternateToNetwork.get(ch.name.toLowerCase());
219
+ if (altNetwork) {
220
+ entry.affiliate = altNetwork;
221
+ entry.channelSelector = altNetwork;
222
+ }
223
+ }
224
+ yttvChannelCache.set(ch.name.toLowerCase(), { discovered: entry, watchUrl: YOUTUBE_TV_BASE_URL + "/" + ch.watchPath });
225
+ }
226
+ }
227
+ /**
228
+ * YouTube TV grid strategy: discovers all channels from the non-virtualized EPG grid at tv.youtube.com/live in a single pass, populating the unified channel cache
229
+ * so that subsequent tunes to any YTTV channel resolve via findWatchUrl() without loading the guide page. All ~256 channel rows are present in the DOM
230
+ * simultaneously, so one querySelectorAll captures every channel's name and watch URL.
90
231
  *
91
232
  * The selection process:
92
233
  * 1. Wait for ytu-epg-row elements to confirm the guide grid has loaded.
93
- * 2. Bulk scrape all channels: extract aria-label names and watch/ hrefs from every thumbnail endpoint.
94
- * 3. Populate the watch URL cache with all discovered channels.
95
- * 4. Look up the target channel using tiered matching (exact, prefix+digit, parenthetical, alternates) against the cache.
96
- * 5. Navigate to the matched watch URL via page.goto().
234
+ * 2. Discover all channels: extract aria-label names and watch/ hrefs from every thumbnail endpoint.
235
+ * 3. If no channels are discovered (degraded guide state), attempt recovery by clearing cached site data via CDP and reloading.
236
+ * 4. Populate the unified channel cache with all discovered channels (discovery metadata + watch URLs).
237
+ * 5. Look up the target channel using tiered matching (exact, prefix+digit, parenthetical, alternates) against the cache.
238
+ * 6. Navigate to the matched watch URL via page.goto().
97
239
  * @param page - The Puppeteer page object.
98
240
  * @param profile - The resolved site profile with a non-null channelSelector (channel name, e.g., "CNN", "ESPN", "NBC").
99
241
  * @returns Result object with success status and optional failure reason.
@@ -107,31 +249,28 @@ async function youtubeGridStrategy(page, profile) {
107
249
  catch {
108
250
  return { reason: "YouTube TV guide grid did not load.", success: false };
109
251
  }
110
- // Bulk scrape all channels from the grid in a single evaluate round-trip. For each thumbnail endpoint with a valid watch/ href, extract the channel name (from
111
- // the aria-label, stripping the "watch " prefix) and the watch path. Channels with "live" or "browse/" hrefs are premium add-ons or info pages and are excluded.
112
- const allChannels = await evaluateWithAbort(page, () => {
113
- const results = [];
114
- for (const thumb of Array.from(document.querySelectorAll("ytu-endpoint.tenx-thumb[aria-label]"))) {
115
- const label = thumb.getAttribute("aria-label") ?? "";
116
- if (!label.startsWith("watch ")) {
117
- continue;
118
- }
119
- const anchor = thumb.querySelector("a");
120
- const href = anchor?.getAttribute("href") ?? "";
121
- // Only include channels with streamable watch URLs. Channels with "live" or "browse/" hrefs are premium add-ons or info pages.
122
- if (href.startsWith("watch/")) {
123
- results.push({ name: label.slice(6), watchPath: href });
124
- }
252
+ // Discover all channels from the guide grid.
253
+ 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.
255
+ // This can happen when stale browser session state (service workers, cached SPA code) becomes inconsistent after a Chrome update. Track consecutive occurrences
256
+ // and attempt recovery by clearing cached site data once the threshold is reached.
257
+ if (allChannels.length === 0) {
258
+ consecutiveEmptyDiscoveries++;
259
+ LOG.warn("YouTube TV guide loaded but no channels were discovered (%s consecutive). The guide may be in a degraded state.", consecutiveEmptyDiscoveries);
260
+ if (consecutiveEmptyDiscoveries >= EMPTY_DISCOVERY_RECOVERY_THRESHOLD) {
261
+ allChannels = await attemptGuideRecovery(page);
125
262
  }
126
- return results;
127
- }, []);
128
- // Populate the watch URL cache with all discovered channels. This makes every subsequent YTTV tune a cache hit via resolveDirectUrl, skipping guide navigation
129
- // entirely. Cache keys are lowercased guide names (e.g., "cnn", "nbc 5", "espn"). The tiered matching in findWatchUrl() handles channelSelector-to-guide-name
130
- // resolution (e.g., "NBC" finds "nbc 5" via prefix+digit matching, "CW" finds the local affiliate via CHANNEL_ALTERNATES).
131
- for (const ch of allChannels) {
132
- yttvWatchUrlCache.set(ch.name.toLowerCase(), YOUTUBE_TV_BASE_URL + "/" + ch.watchPath);
133
263
  }
134
- LOG.debug("tuning:yttv", "Cached %s YouTube TV watch URLs.", yttvWatchUrlCache.size);
264
+ // 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
+ // 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
+ if (allChannels.length === 0) {
267
+ return { reason: "YouTube TV guide is empty — no channels were discovered.", success: false };
268
+ }
269
+ // Successful discovery — reset the consecutive empty counter and repopulate the unified channel cache. Always repopulate rather than skipping when the cache has
270
+ // entries, because invalidated entries (deleted by invalidateYttvDirectUrl) need to be restored with fresh watch URLs from the guide.
271
+ consecutiveEmptyDiscoveries = 0;
272
+ populateYttvChannelCache(allChannels);
273
+ LOG.debug("tuning:yttv", "Discovered %s YouTube TV channels.", allChannels.length);
135
274
  // Look up the target channel using tiered matching against the populated cache.
136
275
  const watchUrl = findWatchUrl(channelName);
137
276
  if (!watchUrl) {
@@ -164,7 +303,7 @@ async function youtubeGridStrategy(page, profile) {
164
303
  }
165
304
  /**
166
305
  * Async wrapper around findWatchUrl for the ChannelStrategyEntry.resolveDirectUrl contract. The page parameter is unused because YTTV watch URLs are resolved
167
- * purely from the in-memory cache populated during the first guide page scrape.
306
+ * purely from the in-memory cache populated during the initial guide page discovery.
168
307
  * @param channelSelector - The channel selector string (e.g., "CNN", "ESPN", "NBC").
169
308
  * @param _page - Unused. Present to satisfy the async resolveDirectUrl signature.
170
309
  * @returns The cached watch URL or null.
@@ -173,10 +312,57 @@ async function youtubeGridStrategy(page, profile) {
173
312
  async function resolveYttvDirectUrl(channelSelector, _page) {
174
313
  return findWatchUrl(channelSelector);
175
314
  }
176
- export const yttvStrategy = {
177
- clearCache: clearYttvCache,
178
- execute: youtubeGridStrategy,
179
- invalidateDirectUrl: invalidateYttvDirectUrl,
180
- resolveDirectUrl: resolveYttvDirectUrl
315
+ /**
316
+ * Discovers all channels from the YouTube TV EPG grid. Returns cached results if the unified channel cache is populated from a prior tune or discovery call.
317
+ * Otherwise, waits for the first grid row to confirm the guide has rendered (the route handler's networkidle2 navigation ensures all API data has arrived before
318
+ * this function is called), then extracts all ~256 channels via discoverGuideChannels() and populates the cache (unless empty, to allow retries on transient
319
+ * failures).
320
+ * @param page - The Puppeteer page object.
321
+ * @returns Array of discovered channels with affiliate tagging.
322
+ */
323
+ async function discoverYttvChannels(page) {
324
+ // Return from the unified cache if already populated.
325
+ if (yttvChannelCache.size > 0) {
326
+ return buildYttvDiscoveredChannels();
327
+ }
328
+ // 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.
330
+ try {
331
+ await page.waitForSelector("ytu-epg-row", { timeout: CONFIG.streaming.videoTimeout });
332
+ }
333
+ catch {
334
+ return [];
335
+ }
336
+ 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.
338
+ if (allChannels.length === 0) {
339
+ return [];
340
+ }
341
+ populateYttvChannelCache(allChannels);
342
+ return buildYttvDiscoveredChannels();
343
+ }
344
+ /**
345
+ * 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).
346
+ * @returns Sorted array of discovered channels or null.
347
+ */
348
+ function getYttvCachedChannels() {
349
+ if (yttvChannelCache.size === 0) {
350
+ return null;
351
+ }
352
+ return buildYttvDiscoveredChannels();
353
+ }
354
+ export const yttvProvider = {
355
+ discoverChannels: discoverYttvChannels,
356
+ getCachedChannels: getYttvCachedChannels,
357
+ guideUrl: "https://tv.youtube.com/live",
358
+ label: "YouTube TV",
359
+ slug: "yttv",
360
+ strategy: {
361
+ clearCache: clearYttvCache,
362
+ execute: youtubeGridStrategy,
363
+ invalidateDirectUrl: invalidateYttvDirectUrl,
364
+ resolveDirectUrl: resolveYttvDirectUrl
365
+ },
366
+ strategyName: "youtubeGrid"
181
367
  };
182
368
  //# sourceMappingURL=youtubeTv.js.map
@@ -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":"AAKA,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,iDAAiD;AACjD,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAWrD,iKAAiK;AACjK,oKAAoK;AACpK,4IAA4I;AAC5I,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA4B,CAAC;AAE7D,iKAAiK;AACjK,kKAAkK;AAClK,6GAA6G;AAC7G,IAAI,2BAA2B,GAAG,CAAC,CAAC;AAEpC,wFAAwF;AACxF,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAE7C,+JAA+J;AAC/J,kKAAkK;AAClK,sKAAsK;AACtK,mDAAmD;AACnD,MAAM,kBAAkB,GAA6B;IAEnD,IAAI,EAAE,CAAC,KAAK,CAAC;IACb,KAAK,EAAE;QACL,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ;QACtJ,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;KAClH;CACF,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,SAAS,YAAY,CAAC,WAAmB;IAEvC,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAExC,8JAA8J;IAC9J,8FAA8F;IAC9F,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAE7C,uEAAuE;IACvE,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAE,KAAK,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE/F,KAAI,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAE7B,uBAAuB;QACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAG,KAAK,EAAE,CAAC;YAET,mHAAmH;YACnH,IAAG,IAAI,KAAK,KAAK,EAAE,CAAC;gBAElB,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;YAED,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QAED,2JAA2J;QAC3J,uIAAuI;QACvI,KAAI,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,gBAAgB,EAAE,CAAC;YAE7C,IAAG,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAEtJ,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAEnC,OAAO,KAAK,CAAC,QAAQ,CAAC;YACxB,CAAC;QACH,CAAC;QAED,8IAA8I;QAC9I,oEAAoE;QACpE,KAAI,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,gBAAgB,EAAE,CAAC;YAE7C,IAAG,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBAE/B,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAEnC,OAAO,KAAK,CAAC,QAAQ,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,eAAuB;IAEtD,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc;IAErB,2BAA2B,GAAG,CAAC,CAAC;IAChC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,qBAAqB,CAAC,IAAU;IAE7C,OAAO,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAA0C,EAAE;QAE/E,MAAM,OAAO,GAA0C,EAAE,CAAC;QAE1D,KAAI,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,qCAAqC,CAAC,CAAC,EAAE,CAAC;YAEhG,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAErD,IAAG,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAE/B,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAEhD,+HAA+H;YAC/H,IAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAE7B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,oBAAoB,CAAC,IAAU;IAE5C,GAAG,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAE9E,6JAA6J;IAC7J,uEAAuE;IACvE,IAAI,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE7C,MAAM,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,+BAA+B,EAAE,CAAC,CAAC;QAChI,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,GAAG,CAAC,IAAI,CAAC,2CAA2C,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAE1E,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAG,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACrH,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,GAAG,CAAC,IAAI,CAAC,iEAAiE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhG,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,gDAAgD;IAChD,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QAEP,GAAG,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAEzE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qDAAqD;IACrD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAEnD,IAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAEvB,GAAG,CAAC,IAAI,CAAC,wFAAwF,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtH,CAAC;SAAM,CAAC;QAEN,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,2JAA2J;AAC3J,2HAA2H;AAC3H,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE,CAAC,CAAC;AAErF,6IAA6I;AAC7I,0DAA0D;AAC1D,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAE3C;;;;;GAKG;AACH,SAAS,2BAA2B;IAElC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEzC,KAAI,MAAM,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAE7C,IAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAEnB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,WAAkD;IAElF,+FAA+F;IAC/F,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAErD,KAAI,MAAM,CAAE,OAAO,EAAE,IAAI,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAElE,KAAI,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAEtB,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,KAAI,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAE5B,MAAM,KAAK,GAAsB,EAAE,eAAe,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAE7E,mJAAmJ;QACnJ,mCAAmC;QACnC,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAEzD,IAAG,WAAW,IAAI,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAE5E,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/C,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;QAC1C,CAAC;aAAM,CAAC;YAEN,iJAAiJ;YACjJ,8EAA8E;YAC9E,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAEjE,IAAG,UAAU,EAAE,CAAC;gBAEd,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;gBAC7B,KAAK,CAAC,eAAe,GAAG,UAAU,CAAC;YACrC,CAAC;QACH,CAAC;QAED,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;IACzH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,mBAAmB,CAAC,IAAU,EAAE,OAAgC;IAE7E,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAE5C,8IAA8I;IAC9I,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,EAAE,MAAM,EAAE,qCAAqC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3E,CAAC;IAED,6CAA6C;IAC7C,IAAI,WAAW,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAEpD,8JAA8J;IAC9J,gKAAgK;IAChK,mFAAmF;IACnF,IAAG,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE5B,2BAA2B,EAAE,CAAC;QAE9B,GAAG,CAAC,IAAI,CAAC,iHAAiH,EACxH,2BAA2B,CAAC,CAAC;QAE/B,IAAG,2BAA2B,IAAI,kCAAkC,EAAE,CAAC;YAErE,WAAW,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,6JAA6J;IAC7J,kKAAkK;IAClK,IAAG,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE5B,OAAO,EAAE,MAAM,EAAE,0DAA0D,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChG,CAAC;IAED,iKAAiK;IACjK,sIAAsI;IACtI,2BAA2B,GAAG,CAAC,CAAC;IAChC,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAEtC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,oCAAoC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEnF,gFAAgF;IAChF,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAE3C,IAAG,CAAC,QAAQ,EAAE,CAAC;QAEb,0JAA0J;QAC1J,mJAAmJ;QACnJ,MAAM,oBAAoB,GAAa,EAAE,CAAC;QAE1C,KAAI,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAEpD,KAAI,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBAEtB,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,oBAAoB,CAAC;YAEnB,oBAAoB;YACpB,iBAAiB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;YAC1D,WAAW;YACX,QAAQ,EAAE,6BAA6B;YACvC,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACtG,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,4CAA4C,EAAE,WAAW,CAAC,CAAC;IAEpF,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAChG,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,OAAO,EAAE,MAAM,EAAE,+CAA+C,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,+FAA+F;AAC/F,KAAK,UAAU,oBAAoB,CAAC,eAAuB,EAAE,KAAW;IAEtE,OAAO,YAAY,CAAC,eAAe,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,oBAAoB,CAAC,IAAU;IAE5C,sDAAsD;IACtD,IAAG,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAE7B,OAAO,2BAA2B,EAAE,CAAC;IACvC,CAAC;IAED,8JAA8J;IAC9J,mFAAmF;IACnF,IAAI,CAAC;QAEH,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IACxF,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,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAEtC,OAAO,2BAA2B,EAAE,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB;IAE5B,IAAG,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAE/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,2BAA2B,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAmB;IAE1C,gBAAgB,EAAE,oBAAoB;IACtC,iBAAiB,EAAE,qBAAqB;IACxC,QAAQ,EAAE,6BAA6B;IACvC,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE;QAER,UAAU,EAAE,cAAc;QAC1B,OAAO,EAAE,mBAAmB;QAC5B,mBAAmB,EAAE,uBAAuB;QAC5C,gBAAgB,EAAE,oBAAoB;KACvC;IACD,YAAY,EAAE,aAAa;CAC5B,CAAC"}
@@ -254,7 +254,7 @@ export declare function ensurePlayback(page: Page, context: Frame | Page, profil
254
254
  * @param profile - The site profile containing all behavior flags.
255
255
  * @param skipChannelSelection - When true, skip the channel selection phase entirely. Used when navigating directly to a cached watch URL that already targets
256
256
  * the correct channel — only video detection, playback, and fullscreen setup are needed.
257
- * @returns The video context (frame or page) for subsequent monitoring.
257
+ * @returns The video context (frame or page) for subsequent monitoring, and a directTune flag when the channel was tuned via API interception.
258
258
  */
259
259
  export declare function initializePlayback(page: Page, profile: ResolvedSiteProfile, skipChannelSelection?: boolean): Promise<TuneResult>;
260
260
  /**
@@ -974,7 +974,7 @@ async function dismissGuideOverlay(page) {
974
974
  * @param profile - The site profile containing all behavior flags.
975
975
  * @param skipChannelSelection - When true, skip the channel selection phase entirely. Used when navigating directly to a cached watch URL that already targets
976
976
  * the correct channel — only video detection, playback, and fullscreen setup are needed.
977
- * @returns The video context (frame or page) for subsequent monitoring.
977
+ * @returns The video context (frame or page) for subsequent monitoring, and a directTune flag when the channel was tuned via API interception.
978
978
  */
979
979
  export async function initializePlayback(page, profile, skipChannelSelection = false) {
980
980
  const elapsed = startTimer();
@@ -985,6 +985,7 @@ export async function initializePlayback(page, profile, skipChannelSelection = f
985
985
  // For multi-channel players (like usanetwork.com/live with multiple channels), select the desired channel from the UI. The selectChannel function checks the
986
986
  // profile's channelSelection strategy and channelSelector to determine if/how to select a channel. Skipped when navigating directly to a cached watch URL,
987
987
  // since the URL already targets the correct channel.
988
+ let directTune = false;
988
989
  if (!skipChannelSelection) {
989
990
  let channelResult = await selectChannel(page, profile);
990
991
  if (!channelResult.success) {
@@ -998,6 +999,7 @@ export async function initializePlayback(page, profile, skipChannelSelection = f
998
999
  throw new Error("Channel selection failed: " + (channelResult.reason ?? "Unknown reason."));
999
1000
  }
1000
1001
  }
1002
+ directTune = channelResult.directTune ?? false;
1001
1003
  LOG.debug("timing:tune", "Channel selection complete. (+%sms)", elapsed());
1002
1004
  }
1003
1005
  // Find the video context, which may be an iframe for embedded players. Some streaming sites embed their video player in an iframe, requiring us to search
@@ -1024,7 +1026,7 @@ export async function initializePlayback(page, profile, skipChannelSelection = f
1024
1026
  // Ensure playback is started, unmuted, and fullscreen. This applies CSS styling, triggers native fullscreen, and enforces volume settings.
1025
1027
  await ensurePlayback(page, context, profile);
1026
1028
  LOG.debug("timing:tune", "Playback ensured. (+%sms)", elapsed());
1027
- return { context };
1029
+ return { context, directTune };
1028
1030
  }
1029
1031
  /**
1030
1032
  * 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