prismcast 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/dist/app.d.ts +1 -1
  2. package/dist/app.js +27 -9
  3. package/dist/app.js.map +1 -1
  4. package/dist/browser/cdp.js +7 -7
  5. package/dist/browser/cdp.js.map +1 -1
  6. package/dist/browser/channelSelection.d.ts +41 -11
  7. package/dist/browser/channelSelection.js +75 -24
  8. package/dist/browser/channelSelection.js.map +1 -1
  9. package/dist/browser/display.d.ts +1 -1
  10. package/dist/browser/index.d.ts +8 -8
  11. package/dist/browser/index.js +42 -43
  12. package/dist/browser/index.js.map +1 -1
  13. package/dist/browser/login.d.ts +2 -2
  14. package/dist/browser/login.js +1 -1
  15. package/dist/browser/manifestInterceptor.d.ts +77 -0
  16. package/dist/browser/manifestInterceptor.js +323 -0
  17. package/dist/browser/manifestInterceptor.js.map +1 -0
  18. package/dist/browser/precaching.js +4 -4
  19. package/dist/browser/tuning/comcastPolymer.d.ts +1 -1
  20. package/dist/browser/tuning/cox.d.ts +1 -1
  21. package/dist/browser/tuning/directv.d.ts +1 -1
  22. package/dist/browser/tuning/directv.js +61 -62
  23. package/dist/browser/tuning/directv.js.map +1 -1
  24. package/dist/browser/tuning/fox.d.ts +1 -1
  25. package/dist/browser/tuning/fox.js +171 -14
  26. package/dist/browser/tuning/fox.js.map +1 -1
  27. package/dist/browser/tuning/hbo.d.ts +1 -1
  28. package/dist/browser/tuning/hbo.js +6 -6
  29. package/dist/browser/tuning/hbo.js.map +1 -1
  30. package/dist/browser/tuning/hulu.d.ts +1 -1
  31. package/dist/browser/tuning/hulu.js +117 -110
  32. package/dist/browser/tuning/hulu.js.map +1 -1
  33. package/dist/browser/tuning/shared.d.ts +3 -3
  34. package/dist/browser/tuning/shared.js +5 -5
  35. package/dist/browser/tuning/sling.d.ts +1 -1
  36. package/dist/browser/tuning/sling.js +28 -28
  37. package/dist/browser/tuning/sling.js.map +1 -1
  38. package/dist/browser/tuning/spectrum.d.ts +1 -1
  39. package/dist/browser/tuning/spectrum.js +21 -22
  40. package/dist/browser/tuning/spectrum.js.map +1 -1
  41. package/dist/browser/tuning/thumbnailRow.d.ts +1 -1
  42. package/dist/browser/tuning/thumbnailRow.js +1 -1
  43. package/dist/browser/tuning/tileClick.d.ts +1 -1
  44. package/dist/browser/tuning/tileClick.js +5 -5
  45. package/dist/browser/tuning/xfinity.d.ts +1 -1
  46. package/dist/browser/tuning/youtubeTv.d.ts +1 -1
  47. package/dist/browser/tuning/youtubeTv.js +17 -18
  48. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  49. package/dist/browser/video.d.ts +20 -6
  50. package/dist/browser/video.js +30 -38
  51. package/dist/browser/video.js.map +1 -1
  52. package/dist/channels/index.d.ts +1 -2
  53. package/dist/channels/index.js +73 -40
  54. package/dist/channels/index.js.map +1 -1
  55. package/dist/config/channelForm.d.ts +58 -0
  56. package/dist/config/channelForm.js +129 -0
  57. package/dist/config/channelForm.js.map +1 -0
  58. package/dist/config/consistencyProbe.d.ts +7 -0
  59. package/dist/config/consistencyProbe.js +143 -0
  60. package/dist/config/consistencyProbe.js.map +1 -0
  61. package/dist/config/health.d.ts +4 -3
  62. package/dist/config/health.js +75 -62
  63. package/dist/config/health.js.map +1 -1
  64. package/dist/config/index.d.ts +1 -1
  65. package/dist/config/index.js +19 -12
  66. package/dist/config/index.js.map +1 -1
  67. package/dist/config/paths.d.ts +9 -3
  68. package/dist/config/paths.js +12 -4
  69. package/dist/config/paths.js.map +1 -1
  70. package/dist/config/persistence.context.d.ts +8 -0
  71. package/dist/config/persistence.context.js +30 -0
  72. package/dist/config/persistence.context.js.map +1 -0
  73. package/dist/config/persistence.d.ts +110 -12
  74. package/dist/config/persistence.js +351 -32
  75. package/dist/config/persistence.js.map +1 -1
  76. package/dist/config/presets.d.ts +14 -4
  77. package/dist/config/presets.js +84 -75
  78. package/dist/config/presets.js.map +1 -1
  79. package/dist/config/profiles.d.ts +2 -2
  80. package/dist/config/profiles.js +7 -9
  81. package/dist/config/profiles.js.map +1 -1
  82. package/dist/config/servicePacks.d.ts +2 -2
  83. package/dist/config/servicePacks.js +28 -28
  84. package/dist/config/servicePacks.js.map +1 -1
  85. package/dist/config/services.d.ts +62 -36
  86. package/dist/config/services.js +150 -136
  87. package/dist/config/services.js.map +1 -1
  88. package/dist/config/sites.d.ts +3 -3
  89. package/dist/config/sites.js +16 -16
  90. package/dist/config/sites.js.map +1 -1
  91. package/dist/config/userChannels.d.ts +500 -41
  92. package/dist/config/userChannels.js +1201 -312
  93. package/dist/config/userChannels.js.map +1 -1
  94. package/dist/config/userConfig.d.ts +103 -10
  95. package/dist/config/userConfig.js +277 -117
  96. package/dist/config/userConfig.js.map +1 -1
  97. package/dist/config/userProfiles.d.ts +4 -2
  98. package/dist/config/userProfiles.js +72 -26
  99. package/dist/config/userProfiles.js.map +1 -1
  100. package/dist/hdhr/channelMap.js +8 -11
  101. package/dist/hdhr/channelMap.js.map +1 -1
  102. package/dist/hdhr/deviceId.js +10 -9
  103. package/dist/hdhr/deviceId.js.map +1 -1
  104. package/dist/hdhr/discover.js +4 -5
  105. package/dist/hdhr/discover.js.map +1 -1
  106. package/dist/hdhr/index.js +6 -10
  107. package/dist/hdhr/index.js.map +1 -1
  108. package/dist/index.js +12 -12
  109. package/dist/index.js.map +1 -1
  110. package/dist/native/codecInference.d.ts +44 -0
  111. package/dist/native/codecInference.js +327 -0
  112. package/dist/native/codecInference.js.map +1 -0
  113. package/dist/native/decrypt.d.ts +1 -1
  114. package/dist/native/index.d.ts +5 -5
  115. package/dist/native/index.js +42 -64
  116. package/dist/native/index.js.map +1 -1
  117. package/dist/native/probe.d.ts +27 -9
  118. package/dist/native/probe.js +158 -67
  119. package/dist/native/probe.js.map +1 -1
  120. package/dist/native/proxy.d.ts +4 -2
  121. package/dist/native/proxy.js +52 -49
  122. package/dist/native/proxy.js.map +1 -1
  123. package/dist/native/tokenExpiry.d.ts +22 -0
  124. package/dist/native/tokenExpiry.js +153 -0
  125. package/dist/native/tokenExpiry.js.map +1 -0
  126. package/dist/routes/auth.js +6 -10
  127. package/dist/routes/auth.js.map +1 -1
  128. package/dist/routes/components.js +2 -2
  129. package/dist/routes/components.js.map +1 -1
  130. package/dist/routes/config/channels/endpoints/browse.d.ts +6 -0
  131. package/dist/routes/config/channels/endpoints/browse.js +195 -0
  132. package/dist/routes/config/channels/endpoints/browse.js.map +1 -0
  133. package/dist/routes/config/channels/endpoints/bulk.d.ts +6 -0
  134. package/dist/routes/config/channels/endpoints/bulk.js +128 -0
  135. package/dist/routes/config/channels/endpoints/bulk.js.map +1 -0
  136. package/dist/routes/config/channels/endpoints/crud.d.ts +6 -0
  137. package/dist/routes/config/channels/endpoints/crud.js +504 -0
  138. package/dist/routes/config/channels/endpoints/crud.js.map +1 -0
  139. package/dist/routes/config/channels/endpoints/importExport.d.ts +6 -0
  140. package/dist/routes/config/channels/endpoints/importExport.js +131 -0
  141. package/dist/routes/config/channels/endpoints/importExport.js.map +1 -0
  142. package/dist/routes/config/channels/endpoints/predefined.d.ts +6 -0
  143. package/dist/routes/config/channels/endpoints/predefined.js +78 -0
  144. package/dist/routes/config/channels/endpoints/predefined.js.map +1 -0
  145. package/dist/routes/config/channels/endpoints/prefs.d.ts +6 -0
  146. package/dist/routes/config/channels/endpoints/prefs.js +58 -0
  147. package/dist/routes/config/channels/endpoints/prefs.js.map +1 -0
  148. package/dist/routes/config/channels/endpoints/service.d.ts +6 -0
  149. package/dist/routes/config/channels/endpoints/service.js +149 -0
  150. package/dist/routes/config/channels/endpoints/service.js.map +1 -0
  151. package/dist/routes/config/channels/endpoints/tags.d.ts +6 -0
  152. package/dist/routes/config/channels/endpoints/tags.js +185 -0
  153. package/dist/routes/config/channels/endpoints/tags.js.map +1 -0
  154. package/dist/routes/config/channels/http/handler.d.ts +10 -0
  155. package/dist/routes/config/channels/http/handler.js +20 -0
  156. package/dist/routes/config/channels/http/handler.js.map +1 -0
  157. package/dist/routes/config/channels/http/playlistHint.d.ts +25 -0
  158. package/dist/routes/config/channels/http/playlistHint.js +40 -0
  159. package/dist/routes/config/channels/http/playlistHint.js.map +1 -0
  160. package/dist/routes/config/channels/http/serviceWarning.d.ts +10 -0
  161. package/dist/routes/config/channels/http/serviceWarning.js +28 -0
  162. package/dist/routes/config/channels/http/serviceWarning.js.map +1 -0
  163. package/dist/routes/config/channels/index.d.ts +3 -3
  164. package/dist/routes/config/channels/index.js +1 -1
  165. package/dist/routes/config/channels/index.js.map +1 -1
  166. package/dist/routes/config/channels/{routes.d.ts → setup.d.ts} +1 -1
  167. package/dist/routes/config/channels/setup.js +23 -0
  168. package/dist/routes/config/channels/setup.js.map +1 -0
  169. package/dist/routes/config/channels/table.d.ts +9 -9
  170. package/dist/routes/config/channels/table.js +124 -76
  171. package/dist/routes/config/channels/table.js.map +1 -1
  172. package/dist/routes/config/http/envelope.d.ts +111 -0
  173. package/dist/routes/config/http/envelope.js +103 -0
  174. package/dist/routes/config/http/envelope.js.map +1 -0
  175. package/dist/routes/config/index.d.ts +9 -9
  176. package/dist/routes/config/index.js +2 -2
  177. package/dist/routes/config/index.js.map +1 -1
  178. package/dist/routes/config/services.js +69 -68
  179. package/dist/routes/config/services.js.map +1 -1
  180. package/dist/routes/config/settings.d.ts +1 -1
  181. package/dist/routes/config/settings.js +45 -38
  182. package/dist/routes/config/settings.js.map +1 -1
  183. package/dist/routes/debug.js +12 -11
  184. package/dist/routes/debug.js.map +1 -1
  185. package/dist/routes/icons.js +2 -2
  186. package/dist/routes/icons.js.map +1 -1
  187. package/dist/routes/logs.js +19 -30
  188. package/dist/routes/logs.js.map +1 -1
  189. package/dist/routes/mpegts.js +1 -1
  190. package/dist/routes/playlist.d.ts +1 -1
  191. package/dist/routes/playlist.js +37 -26
  192. package/dist/routes/playlist.js.map +1 -1
  193. package/dist/routes/root/content.js +27 -6
  194. package/dist/routes/root/content.js.map +1 -1
  195. package/dist/routes/root/index.js +2 -5
  196. package/dist/routes/root/index.js.map +1 -1
  197. package/dist/routes/root/scripts/channels.js +16 -16
  198. package/dist/routes/root/scripts/channels.js.map +1 -1
  199. package/dist/routes/root/scripts/config.js +59 -59
  200. package/dist/routes/root/scripts/config.js.map +1 -1
  201. package/dist/routes/root/scripts/index.d.ts +4 -4
  202. package/dist/routes/root/scripts/shared.js +24 -10
  203. package/dist/routes/root/scripts/shared.js.map +1 -1
  204. package/dist/routes/root/scripts/status.d.ts +4 -0
  205. package/dist/routes/root/scripts/status.handlers.d.ts +182 -0
  206. package/dist/routes/root/scripts/status.handlers.js +713 -0
  207. package/dist/routes/root/scripts/status.handlers.js.map +1 -0
  208. package/dist/routes/root/scripts/status.js +86 -488
  209. package/dist/routes/root/scripts/status.js.map +1 -1
  210. package/dist/routes/root/styles.js +5 -5
  211. package/dist/routes/services.js +18 -15
  212. package/dist/routes/services.js.map +1 -1
  213. package/dist/routes/sse.d.ts +16 -0
  214. package/dist/routes/sse.js +29 -0
  215. package/dist/routes/sse.js.map +1 -0
  216. package/dist/routes/streams.js +10 -23
  217. package/dist/routes/streams.js.map +1 -1
  218. package/dist/routes/ui.d.ts +2 -2
  219. package/dist/routes/upgrade.js +6 -7
  220. package/dist/routes/upgrade.js.map +1 -1
  221. package/dist/service/commands.context.d.ts +6 -0
  222. package/dist/service/commands.context.js +47 -0
  223. package/dist/service/commands.context.js.map +1 -0
  224. package/dist/service/commands.d.ts +53 -8
  225. package/dist/service/commands.js +171 -188
  226. package/dist/service/commands.js.map +1 -1
  227. package/dist/service/generators.context.d.ts +6 -0
  228. package/dist/service/generators.context.js +45 -0
  229. package/dist/service/generators.context.js.map +1 -0
  230. package/dist/service/generators.d.ts +56 -16
  231. package/dist/service/generators.js +499 -383
  232. package/dist/service/generators.js.map +1 -1
  233. package/dist/service/index.d.ts +2 -2
  234. package/dist/streaming/clients.d.ts +2 -2
  235. package/dist/streaming/clients.js +2 -2
  236. package/dist/streaming/codec.d.ts +2 -2
  237. package/dist/streaming/codec.js +0 -1
  238. package/dist/streaming/codec.js.map +1 -1
  239. package/dist/streaming/fmp4Segmenter.d.ts +2 -2
  240. package/dist/streaming/fmp4Segmenter.js +12 -12
  241. package/dist/streaming/hls.d.ts +3 -3
  242. package/dist/streaming/hls.js +81 -70
  243. package/dist/streaming/hls.js.map +1 -1
  244. package/dist/streaming/hlsResume.d.ts +3 -3
  245. package/dist/streaming/hlsResume.js +5 -5
  246. package/dist/streaming/hlsSegments.d.ts +5 -2
  247. package/dist/streaming/hlsSegments.js +14 -9
  248. package/dist/streaming/hlsSegments.js.map +1 -1
  249. package/dist/streaming/monitor.d.ts +12 -12
  250. package/dist/streaming/monitor.js +80 -54
  251. package/dist/streaming/monitor.js.map +1 -1
  252. package/dist/streaming/mp4Parser.d.ts +34 -4
  253. package/dist/streaming/mp4Parser.js +111 -29
  254. package/dist/streaming/mp4Parser.js.map +1 -1
  255. package/dist/streaming/mpegts.d.ts +1 -1
  256. package/dist/streaming/mpegts.js +13 -10
  257. package/dist/streaming/mpegts.js.map +1 -1
  258. package/dist/streaming/playlistBuilder.d.ts +1 -1
  259. package/dist/streaming/playlistBuilder.js +2 -2
  260. package/dist/streaming/preroll.d.ts +9 -9
  261. package/dist/streaming/preroll.js +39 -41
  262. package/dist/streaming/preroll.js.map +1 -1
  263. package/dist/streaming/pretune.js +4 -4
  264. package/dist/streaming/pretune.js.map +1 -1
  265. package/dist/streaming/recovery.d.ts +3 -3
  266. package/dist/streaming/recovery.js +4 -4
  267. package/dist/streaming/registry.d.ts +6 -6
  268. package/dist/streaming/setup.d.ts +9 -8
  269. package/dist/streaming/setup.js +97 -49
  270. package/dist/streaming/setup.js.map +1 -1
  271. package/dist/streaming/showInfo.d.ts +9 -3
  272. package/dist/streaming/showInfo.js +26 -18
  273. package/dist/streaming/showInfo.js.map +1 -1
  274. package/dist/streaming/statusEmitter.d.ts +4 -4
  275. package/dist/streaming/statusEmitter.js +2 -2
  276. package/dist/types/channels.d.ts +133 -34
  277. package/dist/types/channels.js +39 -1
  278. package/dist/types/channels.js.map +1 -1
  279. package/dist/types/config.d.ts +20 -1
  280. package/dist/types/index.d.ts +9 -8
  281. package/dist/types/index.js +1 -0
  282. package/dist/types/index.js.map +1 -1
  283. package/dist/types/profiles.d.ts +5 -4
  284. package/dist/types/selection.d.ts +48 -4
  285. package/dist/types/streaming.d.ts +1 -1
  286. package/dist/upgrade/commands.context.d.ts +6 -0
  287. package/dist/upgrade/commands.context.js +29 -0
  288. package/dist/upgrade/commands.context.js.map +1 -0
  289. package/dist/upgrade/commands.d.ts +29 -2
  290. package/dist/upgrade/commands.js +87 -134
  291. package/dist/upgrade/commands.js.map +1 -1
  292. package/dist/upgrade/detection.context.d.ts +6 -0
  293. package/dist/upgrade/detection.context.js +24 -0
  294. package/dist/upgrade/detection.context.js.map +1 -0
  295. package/dist/upgrade/detection.d.ts +140 -10
  296. package/dist/upgrade/detection.js +153 -66
  297. package/dist/upgrade/detection.js.map +1 -1
  298. package/dist/upgrade/index.d.ts +2 -2
  299. package/dist/utils/chromeFetch.d.ts +1 -1
  300. package/dist/utils/chromeFetch.js +1 -1
  301. package/dist/utils/clock.d.ts +14 -0
  302. package/dist/utils/clock.js +28 -0
  303. package/dist/utils/clock.js.map +1 -0
  304. package/dist/utils/debugFilter.d.ts +1 -1
  305. package/dist/utils/debugFilter.js +6 -4
  306. package/dist/utils/debugFilter.js.map +1 -1
  307. package/dist/utils/delay.d.ts +2 -3
  308. package/dist/utils/delay.js +10 -16
  309. package/dist/utils/delay.js.map +1 -1
  310. package/dist/utils/evaluate.js +12 -14
  311. package/dist/utils/evaluate.js.map +1 -1
  312. package/dist/utils/ffmpeg.context.d.ts +6 -0
  313. package/dist/utils/ffmpeg.context.js +31 -0
  314. package/dist/utils/ffmpeg.context.js.map +1 -0
  315. package/dist/utils/ffmpeg.d.ts +85 -29
  316. package/dist/utils/ffmpeg.js +126 -129
  317. package/dist/utils/ffmpeg.js.map +1 -1
  318. package/dist/utils/fileLogger.d.ts +18 -2
  319. package/dist/utils/fileLogger.js +58 -30
  320. package/dist/utils/fileLogger.js.map +1 -1
  321. package/dist/utils/format.d.ts +1 -1
  322. package/dist/utils/format.js +2 -2
  323. package/dist/utils/format.js.map +1 -1
  324. package/dist/utils/html.js +1 -3
  325. package/dist/utils/html.js.map +1 -1
  326. package/dist/utils/index.d.ts +21 -20
  327. package/dist/utils/index.js +1 -0
  328. package/dist/utils/index.js.map +1 -1
  329. package/dist/utils/logger.js +16 -20
  330. package/dist/utils/logger.js.map +1 -1
  331. package/dist/utils/m3u.d.ts +18 -3
  332. package/dist/utils/m3u.js +28 -14
  333. package/dist/utils/m3u.js.map +1 -1
  334. package/dist/utils/memo.d.ts +19 -0
  335. package/dist/utils/memo.js +53 -0
  336. package/dist/utils/memo.js.map +1 -0
  337. package/dist/utils/morganStream.js +2 -2
  338. package/dist/utils/morganStream.js.map +1 -1
  339. package/dist/utils/pid.d.ts +2 -2
  340. package/dist/utils/pid.js +2 -2
  341. package/dist/utils/platform.d.ts +1 -1
  342. package/dist/utils/platform.js +3 -3
  343. package/dist/utils/platform.js.map +1 -1
  344. package/dist/utils/retry.d.ts +2 -0
  345. package/dist/utils/retry.js +9 -7
  346. package/dist/utils/retry.js.map +1 -1
  347. package/dist/utils/sanitize.d.ts +2 -2
  348. package/dist/utils/sanitize.js +4 -4
  349. package/dist/utils/timing.d.ts +6 -3
  350. package/dist/utils/timing.js +10 -6
  351. package/dist/utils/timing.js.map +1 -1
  352. package/dist/utils/version.d.ts +3 -2
  353. package/dist/utils/version.js +14 -27
  354. package/dist/utils/version.js.map +1 -1
  355. package/package.json +13 -7
  356. package/dist/native/intercept.d.ts +0 -35
  357. package/dist/native/intercept.js +0 -181
  358. package/dist/native/intercept.js.map +0 -1
  359. package/dist/routes/config/channels/routes.js +0 -1505
  360. package/dist/routes/config/channels/routes.js.map +0 -1
@@ -12,7 +12,7 @@ import { emitCurrentSystemStatus, isLoginModeActive, unregisterManagedPage } fro
12
12
  import { generatePrerollPlaylist, getPrerollCodec, getPrerollSegmentCount, isPrerollReady } from "./preroll.js";
13
13
  import { getAllChannels, getChannelLogo, isPredefinedChannelDisabled } from "../config/userChannels.js";
14
14
  import { getAudioPlaylist, getAudioSegment, getInitSegment, getPlaylist, getSegment, getVideoPlaylist, waitForPlaylist } from "./hlsSegments.js";
15
- import { getAuthDomainForChannel, getResolvedChannel, getServiceTagForChannel, resolveServiceKey } from "../config/services.js";
15
+ import { getAuthDomainForChannel, getResolvedChannel, getServiceTagForChannel, isChannelAvailableByService, resolveServiceKey } from "../config/services.js";
16
16
  import { getChannelStreamId, isTerminationInitiated, setChannelStreamId, terminateStream } from "./lifecycle.js";
17
17
  import { markChannelFailure, markChannelSuccess } from "../config/health.js";
18
18
  import { CONFIG } from "../config/index.js";
@@ -27,16 +27,16 @@ import { triggerShowNameUpdate } from "./showInfo.js";
27
27
  /* This module handles HLS (HTTP Live Streaming) output using fMP4 (fragmented MP4) segments. HLS mode uses MP4/AAC capture from puppeteer-stream, which is then
28
28
  * segmented natively without any external dependencies. The stream initialization flow has three phases:
29
29
  *
30
- * Phase 1 — Registration (synchronous, in the request handler):
30
+ * Phase 1 - Registration (synchronous, in the request handler):
31
31
  * The client requests a playlist. If no stream exists and preroll is available, a pending registry entry is registered immediately with a deferred preroll timer.
32
- * The client receives a valid, playable playlist on the first request — no blocking wait for the real stream. If preroll is unavailable, the request blocks until
32
+ * The client receives a valid, playable playlist on the first request - no blocking wait for the real stream. If preroll is unavailable, the request blocks until
33
33
  * stream setup completes (fallback path).
34
34
  *
35
- * Phase 2 — Browser setup (async, fire-and-forget from the request handler):
35
+ * Phase 2 - Browser setup (async, fire-and-forget from the request handler):
36
36
  * setupStream() creates the browser page, navigates to the URL, initializes playback, and starts capture. This produces the StreamSetupResult with the capture
37
37
  * stream, page, profile, and monitor. The pending registry entry is filled in with these references.
38
38
  *
39
- * Phase 3 — Streaming pipeline (async, after browser setup):
39
+ * Phase 3 - Streaming pipeline (async, after browser setup):
40
40
  * If the service's manifest is interceptable, native HLS streaming is attempted via startNativeProxy(). If native is viable, the capture pipeline is stopped and
41
41
  * the proxy takes over. Otherwise, createCaptureSegmenter() creates the fMP4 segmenter and pipes the capture stream. When the first real playlist arrives
42
42
  * (from either the segmenter or native proxy), the preroll timer is cancelled and the client receives live content on the next poll.
@@ -49,6 +49,37 @@ import { triggerShowNameUpdate } from "./showInfo.js";
49
49
  // content directly. This ensures fast-tuning services (native HLS at 2-3s, most capture services at 4-7s) never see preroll, while slow services (Xfinity/Cox at
50
50
  // 13-15s) get preroll content after the delay to prevent HTTP timeouts.
51
51
  const PREROLL_DELAY_MS = 9_000;
52
+ /**
53
+ * Builds the onError/onStop callbacks for createFMP4Segmenter. Both callbacks share the same termination chain (skip-if-already-terminating guard, log error,
54
+ * terminate stream, emit current system status); the only differences between callsites are the log-message and termination-reason suffixes used to mark the
55
+ * post-tab-replacement scenario. Centralizing the shape prevents drift if the termination contract evolves.
56
+ * @param streamId - The numeric stream id.
57
+ * @param channelName - The channel name for log messages.
58
+ * @param options - Optional logSuffix appended to the log message; optional reasonSuffix appended to the termination reason. Both default to no suffix.
59
+ * @returns onError and onStop callbacks ready to spread into createFMP4Segmenter options.
60
+ */
61
+ function buildSegmenterTerminationHandlers(streamId, channelName, options = {}) {
62
+ const logSfx = options.logSuffix ? " " + options.logSuffix : "";
63
+ const reasonSfx = options.reasonSuffix ? " " + options.reasonSuffix : "";
64
+ return {
65
+ onError: (error) => {
66
+ if (isTerminationInitiated(streamId)) {
67
+ return;
68
+ }
69
+ LOG.error("Segmenter error" + logSfx + " for %s: %s.", channelName, formatError(error));
70
+ terminateStream(streamId, channelName, "stream processing error" + reasonSfx);
71
+ void emitCurrentSystemStatus();
72
+ },
73
+ onStop: () => {
74
+ if (isTerminationInitiated(streamId)) {
75
+ return;
76
+ }
77
+ LOG.error("Segmenter stopped unexpectedly" + logSfx + " for %s.", channelName);
78
+ terminateStream(streamId, channelName, "stream ended unexpectedly" + reasonSfx);
79
+ void emitCurrentSystemStatus();
80
+ }
81
+ };
82
+ }
52
83
  // Login mode error body used by both validateChannel() and handlePlayStream() to ensure consistent response format.
53
84
  const LOGIN_MODE_BODY = { error: "Login in progress", message: "Please complete authentication before starting new streams." };
54
85
  /**
@@ -77,10 +108,18 @@ export function validateChannel(channelName) {
77
108
  LOG.warn("Service '%s' not found for channel '%s'. Using default service.", resolvedKey, channelName);
78
109
  }
79
110
  // Runtime check needed even though TypeScript thinks channel is always defined (Record indexing quirk).
80
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
81
111
  if (!effectiveChannel) {
82
112
  return { body: "Channel not found.", statusCode: 404, valid: false };
83
113
  }
114
+ // Enforce the user's active service filter at the streaming boundary. A channel whose every variant tag is excluded by enabledServices is structurally hidden
115
+ // from the M3U playlist (built from getVisibleChannels), from the HDHomeRun lineup (iterates getAllChannels which filters through the same predicate), and
116
+ // from getAllChannels itself. Letting a stream request through here would diverge from those views: capture a browser tab for a service the user explicitly
117
+ // excluded, increment recovery budget on that service, and surface confusing logs for a channel the user cannot see. The predicate takes the canonical key
118
+ // (channelName here is the URL-supplied canonical, not the post-resolveServiceKey variant) and is the single source of truth for service-filter visibility -
119
+ // the same predicate already used by getVisibleChannels, the channel table renderer, and the bulk-action allowlist builders.
120
+ if (!isChannelAvailableByService(channelName)) {
121
+ return { body: "Channel not available.", statusCode: 404, valid: false };
122
+ }
84
123
  // Block new stream requests while login mode is active. This prevents the browser from being disrupted during authentication.
85
124
  if (isLoginModeActive()) {
86
125
  return { body: LOGIN_MODE_BODY, statusCode: 503, valid: false };
@@ -124,7 +163,7 @@ export async function ensureChannelStream(channelName, req, res) {
124
163
  if (streamId !== undefined) {
125
164
  return streamId;
126
165
  }
127
- // No existing stream — validate the channel and start a new one. Channel validation is only needed for new streams because existing streams were already validated
166
+ // No existing stream - validate the channel and start a new one. Channel validation is only needed for new streams because existing streams were already validated
128
167
  // at startup time.
129
168
  const validation = validateChannel(channelName);
130
169
  if (!validation.valid) {
@@ -136,7 +175,7 @@ export async function ensureChannelStream(channelName, req, res) {
136
175
  const prerollCodec = getPrerollCodec();
137
176
  if (isPrerollReady(prerollCodec)) {
138
177
  // Check capacity before registering the pending entry. The pending entry occupies a registry slot, so registering it at max capacity would cause setupStream's
139
- // capacity check to reject — after we've already returned a preroll playlist to the client. By gating here, we can still send a proper 503 error response.
178
+ // capacity check to reject - after we've already returned a preroll playlist to the client. By gating here, we can still send a proper 503 error response.
140
179
  if (getStreamCount() >= CONFIG.streaming.maxConcurrentStreams) {
141
180
  if (!reclaimIdleStream()) {
142
181
  res.setHeader("Retry-After", "10");
@@ -153,7 +192,7 @@ export async function ensureChannelStream(channelName, req, res) {
153
192
  channelName,
154
193
  clientAddress,
155
194
  numericStreamId: pending.numericStreamId,
156
- profileOverride: req.query.profile,
195
+ profileOverride: req.query["profile"],
157
196
  streamIdStr: pending.streamIdStr,
158
197
  url: validation.channel.url
159
198
  }).catch((error) => {
@@ -280,15 +319,15 @@ export function handleHLSVariantPlaylist(req, res) {
280
319
  * @param res - Express response object.
281
320
  */
282
321
  export async function handlePlayStream(req, res) {
283
- const url = req.query.url?.trim();
322
+ const url = req.query["url"]?.trim();
284
323
  if (!url) {
285
324
  res.status(400).send("The url query parameter is required.");
286
325
  return;
287
326
  }
288
- const clickSelector = req.query.clickSelector;
289
- const clickToPlay = req.query.clickToPlay === "true";
290
- const profileOverride = req.query.profile;
291
- const selector = req.query.selector;
327
+ const clickSelector = req.query["clickSelector"];
328
+ const clickToPlay = req.query["clickToPlay"] === "true";
329
+ const profileOverride = req.query["profile"];
330
+ const selector = req.query["selector"];
292
331
  // Generate a deterministic synthetic key from the trimmed URL, profile, selector, clickToPlay, and clickSelector. Including these ensures that the same URL with
293
332
  // different options produces separate streams. The newline delimiter is safe since URLs cannot contain literal newlines.
294
333
  const channelName = "play-" + createHash("sha256").update(url + "\n" + (profileOverride ?? "") + "\n" + (selector ?? "") + "\n" + (clickToPlay ? "1" : "") + "\n" + (clickSelector ?? "")).digest("hex").slice(0, 8);
@@ -329,7 +368,7 @@ export async function handlePlayStream(req, res) {
329
368
  }
330
369
  // Response Helpers.
331
370
  /**
332
- * Sends the playlist for a stream. With the deferred preroll timer, the playlist may not be available immediately after stream registration — it arrives when either
371
+ * Sends the playlist for a stream. With the deferred preroll timer, the playlist may not be available immediately after stream registration - it arrives when either
333
372
  * the timer fires (seeding preroll) or the segmenter produces real content, whichever comes first. This function awaits the playlistReady promise to handle that
334
373
  * window. For the blocking fallback path (no FFmpeg / no preroll), the playlist is guaranteed to exist because initializeStream blocks until the segmenter produces
335
374
  * it. Returns 404 only if the stream was terminated or the playlist wait timed out.
@@ -354,7 +393,7 @@ async function sendPlaylistResponse(streamId, clientAddress, res) {
354
393
  updateLastAccess(streamId);
355
394
  registerClient(streamId, clientAddress, "hls");
356
395
  // When still serving preroll, regenerate the progressive playlist on each poll so the sliding window advances based on elapsed wall-clock time. This simulates a
357
- // live stream — the client sees new segments appear on each poll and keeps playing without stalling. Once real content arrives, hasRealPlaylist becomes true and
396
+ // live stream - the client sees new segments appear on each poll and keeps playing without stalling. Once real content arrives, hasRealPlaylist becomes true and
358
397
  // the segmenter's playlist takes over.
359
398
  const stream = getStream(streamId);
360
399
  if (stream && !stream.hls.hasRealPlaylist) {
@@ -404,7 +443,7 @@ function cleanupOrphanedSetup(segmenter) {
404
443
  LOG.debug("streaming:setup", "Stream was terminated during setup. Stopping orphaned segmenter.");
405
444
  segmenter.stop();
406
445
  }
407
- // Maps vertical resolution heights to standard display labels. Used by formatNativeQuality() to convert "1920x1080" → "1080p".
446
+ // Maps vertical resolution heights to standard display labels. Used by formatNativeQuality() to convert "1920x1080" -> "1080p".
408
447
  const RESOLUTION_LABELS = { "1080": "1080p", "2160": "4K", "360": "360p", "480": "480p", "720": "720p" };
409
448
  /**
410
449
  * Formats the native HLS quality string for the "Streaming..." log line. Combines codec, bandwidth (as Mbps), and resolution (as standard label like "1080p")
@@ -425,7 +464,7 @@ function formatNativeQuality(bandwidth, codec, resolution) {
425
464
  if (resolution) {
426
465
  // Map the vertical resolution to a standard label. Parse the height from "WIDTHxHEIGHT" format.
427
466
  const height = resolution.split("x")[1];
428
- parts.push(RESOLUTION_LABELS[height] ?? resolution);
467
+ parts.push((height ? RESOLUTION_LABELS[height] : undefined) ?? resolution);
429
468
  }
430
469
  if (parts.length === 0) {
431
470
  return "";
@@ -524,22 +563,7 @@ function createTabReplacementHandler(numericStreamId, streamId, channelName, url
524
563
  // for monotonic baseMediaDecodeTime, and mark the first segment with a discontinuity tag so clients know the stream parameters may have changed.
525
564
  const newSegmenter = createFMP4Segmenter({
526
565
  initialTrackTimestamps: currentTrackTimestamps,
527
- onError: (error) => {
528
- if (isTerminationInitiated(numericStreamId)) {
529
- return;
530
- }
531
- LOG.error("Segmenter error after tab replacement for %s: %s.", channelName, formatError(error));
532
- terminateStream(numericStreamId, channelName, "stream processing error after recovery");
533
- void emitCurrentSystemStatus();
534
- },
535
- onStop: () => {
536
- if (isTerminationInitiated(numericStreamId)) {
537
- return;
538
- }
539
- LOG.error("Segmenter stopped unexpectedly after tab replacement for %s.", channelName);
540
- terminateStream(numericStreamId, channelName, "stream ended unexpectedly after recovery");
541
- void emitCurrentSystemStatus();
542
- },
566
+ ...buildSegmenterTerminationHandlers(numericStreamId, channelName, { logSuffix: "after tab replacement", reasonSuffix: "after recovery" }),
543
567
  pendingDiscontinuity: true,
544
568
  previousInitSegment: currentInitSegment,
545
569
  priorSessionStats: currentSessionStats,
@@ -584,14 +608,14 @@ export async function initializeStream(options) {
584
608
  return await completeStreamSetup({ ...options, numericStreamId, streamIdStr });
585
609
  }
586
610
  catch (error) {
587
- // Skip logging — callers (startHLSStream, handlePlayStream, handleMpegTsStream) handle the re-thrown error with their own error responses and logging.
611
+ // Skip logging - callers (startHLSStream, handlePlayStream, handleMpegTsStream) handle the re-thrown error with their own error responses and logging.
588
612
  handleSetupFailure(numericStreamId, channelName, channel, error, false);
589
613
  throw error;
590
614
  }
591
615
  }
592
616
  /**
593
617
  * Registers a pending stream entry in the registry with deferred preroll. This is the synchronous Phase 1 of the two-phase stream initialization used by the HLS
594
- * playlist handler. The pending entry has a real stream ID but no playlist yet — the response is held until either the preroll timer fires (after PREROLL_DELAY_MS)
618
+ * playlist handler. The pending entry has a real stream ID but no playlist yet - the response is held until either the preroll timer fires (after PREROLL_DELAY_MS)
595
619
  * or real content arrives from the segmenter/native proxy. This ensures that fast-tuning streams (native, most capture services) skip preroll entirely, while slow
596
620
  * streams (Xfinity/Cox at 13-15s) get preroll content after the delay.
597
621
  * @param channelName - The channel key for registration and deduplication.
@@ -607,10 +631,10 @@ function registerPendingStream(channelName, channel, clientAddress, req, codec)
607
631
  // Derive the base URL from the request for absolute preroll segment URLs.
608
632
  const protocol = req.protocol;
609
633
  const forwardedHost = req.get("x-forwarded-host");
610
- const host = forwardedHost ? forwardedHost.split(",")[0].trim() : req.get("host");
634
+ const host = forwardedHost ? (forwardedHost.split(",")[0] ?? "").trim() : req.get("host");
611
635
  const fallbackHost = CONFIG.server.host + ":" + String(CONFIG.server.port);
612
636
  const baseUrl = protocol + "://" + (host ?? fallbackHost);
613
- // Create HLS state with a deferred preroll timer. The timer fires after PREROLL_DELAY_MS — if stream setup hasn't completed by then, preroll is seeded and the
637
+ // Create HLS state with a deferred preroll timer. The timer fires after PREROLL_DELAY_MS - if stream setup hasn't completed by then, preroll is seeded and the
614
638
  // playlist response is unblocked. For resume streams, the preroll's MEDIA-SEQUENCE is offset by the saved segment index so it continues from the prior session's
615
639
  // sequence range. The timer is cancelled by completeStreamSetup() when the segmenter or native proxy is created, preventing races.
616
640
  const hls = createHLSState();
@@ -621,7 +645,7 @@ function registerPendingStream(channelName, channel, clientAddress, req, codec)
621
645
  const streamStartTime = new Date();
622
646
  if (isPrerollReady(codec)) {
623
647
  // Set preroll metadata immediately at registration so the segmenter and native proxy can read it regardless of whether the deferred timer has fired. The segment
624
- // count, codec, and base URL are structural properties of the preroll system — they determine segment index offsets, codec-aware URL paths, and composite playlist
648
+ // count, codec, and base URL are structural properties of the preroll system - they determine segment index offsets, codec-aware URL paths, and composite playlist
625
649
  // behavior. The timer controls only the client-facing timing (when the standalone preroll playlist begins serving). Decoupling these ensures correct behavior for
626
650
  // fast-tune/slow-proxy scenarios (e.g., Fox native at 5s tune but 15s proxy first poll) where setup completes before the timer fires.
627
651
  hls.prerollBaseUrl = baseUrl;
@@ -719,7 +743,8 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
719
743
  if (!setup.manifestInterception) {
720
744
  return null;
721
745
  }
722
- setup.manifestInterception.finalize(setup.directTune);
746
+ // The manifest interception was finalized and verified during setupStream(). By the time we get here, setup.manifestInterception.promise has already resolved
747
+ // (or is about to) with the URL setupStream verified. We just consume it.
723
748
  // Read the preroll segment count from the pending entry to pass to the native coordinator. This value is set at registration time (not in the timer callback),
724
749
  // so it's available regardless of whether the deferred preroll timer has fired. The proxy uses it for segment index offset. The base URL for composite playlists
725
750
  // is read dynamically from the stream's HLS state at playlist generation time.
@@ -753,14 +778,14 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
753
778
  nativeResult.proxy.stop();
754
779
  return null;
755
780
  }
756
- // Stop the capture pipeline — native streaming replaces it entirely.
781
+ // Stop the capture pipeline - native streaming replaces it entirely.
757
782
  if (!setup.rawCaptureStream.destroyed) {
758
783
  setup.rawCaptureStream.destroy();
759
784
  }
760
785
  if (setup.ffmpegProcess) {
761
786
  setup.ffmpegProcess.kill();
762
787
  }
763
- // Update the registry entry to reflect native mode. For streams with separate audio, clear preroll state — preroll is muxed video+audio and can't be
788
+ // Update the registry entry to reflect native mode. For streams with separate audio, clear preroll state - preroll is muxed video+audio and can't be
764
789
  // split into separate renditions. For muxed-audio streams, preserve preroll state so the proxy can build composite playlists with preroll entries.
765
790
  currentStream.ffmpegProcess = null;
766
791
  currentStream.hls.hasAudio = nativeResult.hasAudio;
@@ -776,12 +801,12 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
776
801
  currentStream.nativeResolution = nativeResult.resolution;
777
802
  currentStream.rawCaptureStream = null;
778
803
  currentStream.streamingMode = "native";
779
- // Start the native proxy. Signal init segment readiness immediately — native MPEG-TS segments carry their own PAT/PMT codec configuration in every
804
+ // Start the native proxy. Signal init segment readiness immediately - native MPEG-TS segments carry their own PAT/PMT codec configuration in every
780
805
  // segment, so there is no separate init segment to wait for. Without this, MPEG-TS clients block on waitForInitSegment() and time out before the proxy's
781
806
  // first poll cycle completes.
782
807
  nativeResult.proxy.start();
783
808
  currentStream.hls.signalInitSegmentReady();
784
- // Suppress audio on the browser page. The page stays alive for token refresh but the video element's audio is not part of the native stream — without
809
+ // Suppress audio on the browser page. The page stays alive for token refresh but the video element's audio is not part of the native stream - without
785
810
  // suppression, it plays audibly on the local machine.
786
811
  await suppressPageAudio(setup.page);
787
812
  LOG.debug("native:coordinator", "Capture pipeline stopped for %s. Native proxy active.", channelName);
@@ -797,16 +822,16 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
797
822
  */
798
823
  function createCaptureSegmenter(setup, numericStreamId, channelName) {
799
824
  // Peek at resume data from a previous shutdown without consuming it. The data is consumed (deleted) only after the segmenter is successfully created and
800
- // stored in the registry. This ensures resume data survives if segmenter creation fails — the next stream start retries with the same resume state instead
825
+ // stored in the registry. This ensures resume data survives if segmenter creation fails - the next stream start retries with the same resume state instead
801
826
  // of losing it and causing an HLS sequence reset.
802
827
  const resumeData = peekResumeData(channelName);
803
828
  const currentStream = getStream(numericStreamId);
804
829
  const prerollSegmentCount = currentStream?.hls.prerollSegmentCount ?? 0;
805
830
  // When preroll is active, use the snapshotted resume index (stored on HLS state at registration) so the segmenter's starting index is guaranteed to match
806
- // the preroll playlist's MEDIA-SEQUENCE offset. When preroll is inactive, use the resume data directly — no preroll playlist to be consistent with.
831
+ // the preroll playlist's MEDIA-SEQUENCE offset. When preroll is inactive, use the resume data directly - no preroll playlist to be consistent with.
807
832
  const baseSegmentIndex = (prerollSegmentCount > 0) ? (currentStream?.hls.resumeSegmentIndex ?? 0) : (resumeData?.segmentIndex ?? 0);
808
833
  // Create the fMP4 segmenter. The starting segment index accounts for both the resume offset and the preroll segment range. When preroll is active, the
809
- // segmenter includes preroll entries in its sliding window via the compositor. The pending discontinuity at the preroll-to-real boundary is always needed —
834
+ // segmenter includes preroll entries in its sliding window via the compositor. The pending discontinuity at the preroll-to-real boundary is always needed -
810
835
  // previousInitSegment is only passed without preroll, because the preroll init segment differs from the real init and the discontinuity must not be
811
836
  // suppressed by an init-match comparison against the prior session.
812
837
  const segmenter = createFMP4Segmenter({
@@ -824,24 +849,7 @@ function createCaptureSegmenter(setup, numericStreamId, channelName) {
824
849
  pendingDiscontinuity: true,
825
850
  startingSegmentIndex: baseSegmentIndex + prerollSegmentCount
826
851
  } : {}),
827
- onError: (error) => {
828
- // Skip error handling if termination was already initiated.
829
- if (isTerminationInitiated(numericStreamId)) {
830
- return;
831
- }
832
- LOG.error("Segmenter error for %s: %s.", channelName, formatError(error));
833
- terminateStream(numericStreamId, channelName, "stream processing error");
834
- void emitCurrentSystemStatus();
835
- },
836
- onStop: () => {
837
- // Skip handling if termination was already initiated.
838
- if (isTerminationInitiated(numericStreamId)) {
839
- return;
840
- }
841
- LOG.error("Segmenter stopped unexpectedly for %s.", channelName);
842
- terminateStream(numericStreamId, channelName, "stream ended unexpectedly");
843
- void emitCurrentSystemStatus();
844
- },
852
+ ...buildSegmenterTerminationHandlers(numericStreamId, channelName),
845
853
  streamId: numericStreamId
846
854
  });
847
855
  // Pipe the capture stream to the segmenter.
@@ -873,7 +881,7 @@ function createCaptureSegmenter(setup, numericStreamId, channelName) {
873
881
  */
874
882
  async function completeStreamSetup(options) {
875
883
  const { channel, channelName, channelSelector, clickSelector, clickToPlay, mpegTsClient, numericStreamId, profileOverride, streamIdStr, url } = options;
876
- // Circuit breaker callback — terminate the stream on unrecoverable errors.
884
+ // Circuit breaker callback - terminate the stream on unrecoverable errors.
877
885
  const onCircuitBreak = () => {
878
886
  const currentStreamId = getChannelStreamId(channelName);
879
887
  if (currentStreamId !== undefined) {
@@ -890,7 +898,7 @@ async function completeStreamSetup(options) {
890
898
  reclaimIdleStream();
891
899
  }
892
900
  // Pass the pre-allocated IDs to setupStream so it uses them instead of generating new ones. This ensures the abort controller, health monitor, and tab replacement
893
- // handler all reference the same stream identity as the pending registry entry. Pass channelName only for predefined channels — for ad-hoc streams, omitting it
901
+ // handler all reference the same stream identity as the pending registry entry. Pass channelName only for predefined channels - for ad-hoc streams, omitting it
894
902
  // causes generateStreamId to derive the stream ID string from the URL (e.g., "foxsports-abc123"), which is more informative in logs.
895
903
  const setup = await setupStream({
896
904
  channel,
@@ -924,7 +932,7 @@ async function completeStreamSetup(options) {
924
932
  return runWithStreamContext({ channelName: channel?.name, streamId: setup.streamId, url: setup.url }, async () => {
925
933
  // The deferred preroll timer is NOT cancelled here. It continues running until the first real playlist arrives (cancelled in updatePlaylist() in
926
934
  // hlsSegments.ts). This is critical for native streams where the browser setup completes quickly but the native proxy's first poll cycle can take 10-15+
927
- // seconds. If we cancelled the timer at setup completion, the client would have no playlist during the proxy's first poll — the preroll timer fires after
935
+ // seconds. If we cancelled the timer at setup completion, the client would have no playlist during the proxy's first poll - the preroll timer fires after
928
936
  // PREROLL_DELAY_MS and provides content during that gap. For the capture path, the segmenter produces its first playlist within ~2 seconds of creation, so
929
937
  // the timer is cancelled almost immediately after setup anyway.
930
938
  // Attempt native streaming if a manifest interception handle is available. If native is viable, the capture pipeline is stopped and the proxy takes over.
@@ -1000,7 +1008,7 @@ async function completeStreamSetup(options) {
1000
1008
  * @returns The stream ID if successful, null if an error occurred (error response already sent).
1001
1009
  */
1002
1010
  async function startHLSStream(channelName, url, req, res, channel) {
1003
- const profileOverride = req.query.profile;
1011
+ const profileOverride = req.query["profile"];
1004
1012
  const clientAddress = req.ip ?? req.socket.remoteAddress ?? null;
1005
1013
  try {
1006
1014
  return await initializeStream({ channel, channelName, clientAddress, profileOverride, url });
@@ -1021,7 +1029,7 @@ async function startHLSStream(channelName, url, req, res, channel) {
1021
1029
  }
1022
1030
  // Idle Detection.
1023
1031
  /**
1024
- * Returns all streams that have exceeded the idle timeout and have no active MPEG-TS clients. Pretuned streams are excluded — they have no clients by design and
1032
+ * Returns all streams that have exceeded the idle timeout and have no active MPEG-TS clients. Pretuned streams are excluded - they have no clients by design and
1025
1033
  * the pretune module manages their lifecycle via a safety timeout. The result is sorted by last access time (oldest first) so callers can efficiently pick the
1026
1034
  * longest-idle stream for reclamation.
1027
1035
  * @returns Idle streams sorted by last access time ascending (oldest first).
@@ -1056,6 +1064,9 @@ function reclaimIdleStream() {
1056
1064
  return false;
1057
1065
  }
1058
1066
  const oldest = idle[0];
1067
+ if (!oldest) {
1068
+ return false;
1069
+ }
1059
1070
  LOG.info("Reclaiming idle stream %s (%s) to free capacity.", oldest.id, oldest.info.storeKey);
1060
1071
  terminateStream(oldest.id, oldest.info.storeKey, "reclaimed for new stream");
1061
1072
  void emitCurrentSystemStatus();
@@ -1 +1 @@
1
- {"version":3,"file":"hls.js","sourceRoot":"","sources":["../../src/streaming/hls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hls.js","sourceRoot":"","sources":["../../src/streaming/hls.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Nullable } from "../types/index.js";
1
+ import type { Nullable } from "../types/index.ts";
2
2
  /**
3
3
  * Data collected from an active stream at shutdown, passed in by the shutdown handler.
4
4
  */
@@ -19,7 +19,7 @@ export interface ResumeData {
19
19
  trackTimestamps: Map<number, bigint>;
20
20
  }
21
21
  /**
22
- * Loads resume state from disk into memory. Called once at startup after config loading. The file is deleted immediately after reading — it only needs to exist
22
+ * Loads resume state from disk into memory. Called once at startup after config loading. The file is deleted immediately after reading - it only needs to exist
23
23
  * between shutdown and the next startup. If the file is missing or corrupt, the map stays empty and all streams start at 0 (today's behavior).
24
24
  */
25
25
  export declare function loadResumeState(): void;
@@ -33,7 +33,7 @@ export declare function getResumeSegmentIndex(channelName: string): Nullable<num
33
33
  /**
34
34
  * Reads resume data for a channel without removing it from the map. Returns the seeding parameters if the entry exists and is within TTL, or null if no resume data
35
35
  * is available. The caller must call deleteResumeData() after successfully using the data to prevent double-consumption. This two-step pattern ensures resume data
36
- * survives if segmenter creation fails — the next stream start can retry with the same resume state instead of starting from scratch.
36
+ * survives if segmenter creation fails - the next stream start can retry with the same resume state instead of starting from scratch.
37
37
  * @param channelName - The channel key to look up.
38
38
  * @returns Resume data for seeding the segmenter, or null.
39
39
  */
@@ -10,7 +10,7 @@ import { getResumeFilePath } from "../config/paths.js";
10
10
  /* When PrismCast restarts mid-recording, HLS media sequences reset to 0. Channels DVR detects "Playlist reset to a lower sequence" and produces unpredictable
11
11
  * timestamps in the recording. This module persists final sequence numbers at shutdown and seeds from them on restart so sequences always move forward.
12
12
  *
13
- * The data is only relevant for ~90 seconds after shutdown — just long enough for Channels DVR to reconnect. The file is written once at shutdown and deleted
13
+ * The data is only relevant for ~90 seconds after shutdown - just long enough for Channels DVR to reconnect. The file is written once at shutdown and deleted
14
14
  * immediately after loading at the next startup.
15
15
  */
16
16
  // TTL for resume entries. Entries older than this are discarded on load.
@@ -18,7 +18,7 @@ const RESUME_TTL = 90_000;
18
18
  // In-memory map of channel name to resume entry. Populated at startup, consumed as streams reconnect.
19
19
  const resumeMap = new Map();
20
20
  /**
21
- * Loads resume state from disk into memory. Called once at startup after config loading. The file is deleted immediately after reading — it only needs to exist
21
+ * Loads resume state from disk into memory. Called once at startup after config loading. The file is deleted immediately after reading - it only needs to exist
22
22
  * between shutdown and the next startup. If the file is missing or corrupt, the map stays empty and all streams start at 0 (today's behavior).
23
23
  */
24
24
  export function loadResumeState() {
@@ -28,7 +28,7 @@ export function loadResumeState() {
28
28
  raw = fs.readFileSync(filePath, "utf-8");
29
29
  }
30
30
  catch {
31
- // File does not exist — clean start.
31
+ // File does not exist - clean start.
32
32
  return;
33
33
  }
34
34
  // Delete the file immediately. It has served its purpose.
@@ -36,7 +36,7 @@ export function loadResumeState() {
36
36
  fs.unlinkSync(filePath);
37
37
  }
38
38
  catch {
39
- // Non-fatal — the file will be overwritten on next shutdown.
39
+ // Non-fatal - the file will be overwritten on next shutdown.
40
40
  }
41
41
  let parsed;
42
42
  try {
@@ -92,7 +92,7 @@ export function getResumeSegmentIndex(channelName) {
92
92
  /**
93
93
  * Reads resume data for a channel without removing it from the map. Returns the seeding parameters if the entry exists and is within TTL, or null if no resume data
94
94
  * is available. The caller must call deleteResumeData() after successfully using the data to prevent double-consumption. This two-step pattern ensures resume data
95
- * survives if segmenter creation fails — the next stream start can retry with the same resume state instead of starting from scratch.
95
+ * survives if segmenter creation fails - the next stream start can retry with the same resume state instead of starting from scratch.
96
96
  * @param channelName - The channel key to look up.
97
97
  * @returns Resume data for seeding the segmenter, or null.
98
98
  */
@@ -1,3 +1,4 @@
1
+ import { type Clock } from "../utils/index.ts";
1
2
  /**
2
3
  * Stores a media segment. Enforces the segment count limit by removing the oldest segment when necessary. Handles both capture-mode .m4s segments from the fMP4
3
4
  * segmenter and native-mode .ts segments from the HLS proxy.
@@ -87,13 +88,15 @@ export declare function getPlaylist(streamId: number): string | undefined;
87
88
  * Waits for the first playlist to be available for a stream.
88
89
  * @param streamId - The numeric stream ID.
89
90
  * @param timeout - Maximum time to wait in milliseconds.
91
+ * @param clock - Clock used for the timeout race. Defaults to realClock; tests inject a fake to drive the race deterministically.
90
92
  * @returns True if playlist is ready, false if timeout or stream not found.
91
93
  */
92
- export declare function waitForPlaylist(streamId: number, timeout: number): Promise<boolean>;
94
+ export declare function waitForPlaylist(streamId: number, timeout: number, clock?: Clock): Promise<boolean>;
93
95
  /**
94
96
  * Waits for the first init segment to be available for a stream. Used by MPEG-TS consumers to wait for codec configuration before starting their FFmpeg remuxer.
95
97
  * @param streamId - The numeric stream ID.
96
98
  * @param timeout - Maximum time to wait in milliseconds.
99
+ * @param clock - Clock used for the timeout race. Defaults to realClock; tests inject a fake to drive the race deterministically.
97
100
  * @returns True if init segment is ready, false if timeout or stream not found.
98
101
  */
99
- export declare function waitForInitSegment(streamId: number, timeout: number): Promise<boolean>;
102
+ export declare function waitForInitSegment(streamId: number, timeout: number, clock?: Clock): Promise<boolean>;