prismcast 1.10.2 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/dist/app.d.ts +6 -3
  2. package/dist/app.d.ts.map +1 -0
  3. package/dist/app.js +140 -86
  4. package/dist/app.js.map +1 -1
  5. package/dist/browser/blockedPage.d.ts +80 -0
  6. package/dist/browser/blockedPage.d.ts.map +1 -0
  7. package/dist/browser/blockedPage.js +209 -0
  8. package/dist/browser/blockedPage.js.map +1 -0
  9. package/dist/browser/browserSupervisor.d.ts +80 -0
  10. package/dist/browser/browserSupervisor.d.ts.map +1 -0
  11. package/dist/browser/browserSupervisor.js +186 -0
  12. package/dist/browser/browserSupervisor.js.map +1 -0
  13. package/dist/browser/cdp.d.ts +1 -0
  14. package/dist/browser/cdp.d.ts.map +1 -0
  15. package/dist/browser/cdp.js +6 -5
  16. package/dist/browser/cdp.js.map +1 -1
  17. package/dist/browser/channelSelection.d.ts +45 -14
  18. package/dist/browser/channelSelection.d.ts.map +1 -0
  19. package/dist/browser/channelSelection.js +81 -18
  20. package/dist/browser/channelSelection.js.map +1 -1
  21. package/dist/browser/consent.d.ts +152 -0
  22. package/dist/browser/consent.d.ts.map +1 -0
  23. package/dist/browser/consent.js +418 -0
  24. package/dist/browser/consent.js.map +1 -0
  25. package/dist/browser/display.d.ts +1 -0
  26. package/dist/browser/display.d.ts.map +1 -0
  27. package/dist/browser/hlsPlaylistObserver.d.ts +55 -0
  28. package/dist/browser/hlsPlaylistObserver.d.ts.map +1 -0
  29. package/dist/browser/hlsPlaylistObserver.js +132 -0
  30. package/dist/browser/hlsPlaylistObserver.js.map +1 -0
  31. package/dist/browser/index.d.ts +67 -40
  32. package/dist/browser/index.d.ts.map +1 -0
  33. package/dist/browser/index.js +508 -300
  34. package/dist/browser/index.js.map +1 -1
  35. package/dist/browser/launchGovernor.d.ts +89 -0
  36. package/dist/browser/launchGovernor.d.ts.map +1 -0
  37. package/dist/browser/launchGovernor.js +96 -0
  38. package/dist/browser/launchGovernor.js.map +1 -0
  39. package/dist/browser/login.d.ts +10 -2
  40. package/dist/browser/login.d.ts.map +1 -0
  41. package/dist/browser/login.js +36 -5
  42. package/dist/browser/login.js.map +1 -1
  43. package/dist/browser/manifestInterceptor.d.ts +102 -49
  44. package/dist/browser/manifestInterceptor.d.ts.map +1 -0
  45. package/dist/browser/manifestInterceptor.js +219 -237
  46. package/dist/browser/manifestInterceptor.js.map +1 -1
  47. package/dist/browser/pageStaleness.d.ts +30 -0
  48. package/dist/browser/pageStaleness.d.ts.map +1 -0
  49. package/dist/browser/pageStaleness.js +76 -0
  50. package/dist/browser/pageStaleness.js.map +1 -0
  51. package/dist/browser/precaching.d.ts +95 -3
  52. package/dist/browser/precaching.d.ts.map +1 -0
  53. package/dist/browser/precaching.js +499 -65
  54. package/dist/browser/precaching.js.map +1 -1
  55. package/dist/browser/tabNetworkObserver.d.ts +49 -0
  56. package/dist/browser/tabNetworkObserver.d.ts.map +1 -0
  57. package/dist/browser/tabNetworkObserver.js +144 -0
  58. package/dist/browser/tabNetworkObserver.js.map +1 -0
  59. package/dist/browser/tuning/cache.d.ts +61 -0
  60. package/dist/browser/tuning/cache.d.ts.map +1 -0
  61. package/dist/browser/tuning/cache.js +62 -0
  62. package/dist/browser/tuning/cache.js.map +1 -0
  63. package/dist/browser/tuning/comcastPolymer.d.ts +3 -2
  64. package/dist/browser/tuning/comcastPolymer.d.ts.map +1 -0
  65. package/dist/browser/tuning/comcastPolymer.js +79 -102
  66. package/dist/browser/tuning/comcastPolymer.js.map +1 -1
  67. package/dist/browser/tuning/cox.d.ts +1 -0
  68. package/dist/browser/tuning/cox.d.ts.map +1 -0
  69. package/dist/browser/tuning/directv.d.ts +1 -0
  70. package/dist/browser/tuning/directv.d.ts.map +1 -0
  71. package/dist/browser/tuning/directv.js +52 -46
  72. package/dist/browser/tuning/directv.js.map +1 -1
  73. package/dist/browser/tuning/fox.d.ts +1 -0
  74. package/dist/browser/tuning/fox.d.ts.map +1 -0
  75. package/dist/browser/tuning/fox.js +13 -12
  76. package/dist/browser/tuning/fox.js.map +1 -1
  77. package/dist/browser/tuning/gridSearch.d.ts +68 -0
  78. package/dist/browser/tuning/gridSearch.d.ts.map +1 -0
  79. package/dist/browser/tuning/gridSearch.js +85 -0
  80. package/dist/browser/tuning/gridSearch.js.map +1 -0
  81. package/dist/browser/tuning/hbo.d.ts +1 -0
  82. package/dist/browser/tuning/hbo.d.ts.map +1 -0
  83. package/dist/browser/tuning/hbo.js +73 -45
  84. package/dist/browser/tuning/hbo.js.map +1 -1
  85. package/dist/browser/tuning/hulu.d.ts +1 -0
  86. package/dist/browser/tuning/hulu.d.ts.map +1 -0
  87. package/dist/browser/tuning/hulu.js +128 -173
  88. package/dist/browser/tuning/hulu.js.map +1 -1
  89. package/dist/browser/tuning/shared.d.ts +75 -5
  90. package/dist/browser/tuning/shared.d.ts.map +1 -0
  91. package/dist/browser/tuning/shared.js +216 -6
  92. package/dist/browser/tuning/shared.js.map +1 -1
  93. package/dist/browser/tuning/sling.d.ts +1 -0
  94. package/dist/browser/tuning/sling.d.ts.map +1 -0
  95. package/dist/browser/tuning/sling.js +105 -126
  96. package/dist/browser/tuning/sling.js.map +1 -1
  97. package/dist/browser/tuning/spectrum.d.ts +1 -0
  98. package/dist/browser/tuning/spectrum.d.ts.map +1 -0
  99. package/dist/browser/tuning/spectrum.js +80 -125
  100. package/dist/browser/tuning/spectrum.js.map +1 -1
  101. package/dist/browser/tuning/thumbnailRow.d.ts +1 -0
  102. package/dist/browser/tuning/thumbnailRow.d.ts.map +1 -0
  103. package/dist/browser/tuning/thumbnailRow.js +8 -2
  104. package/dist/browser/tuning/thumbnailRow.js.map +1 -1
  105. package/dist/browser/tuning/tileClick.d.ts +1 -0
  106. package/dist/browser/tuning/tileClick.d.ts.map +1 -0
  107. package/dist/browser/tuning/tileClick.js +3 -2
  108. package/dist/browser/tuning/tileClick.js.map +1 -1
  109. package/dist/browser/tuning/xfinity.d.ts +1 -0
  110. package/dist/browser/tuning/xfinity.d.ts.map +1 -0
  111. package/dist/browser/tuning/youtubeTv.d.ts +1 -0
  112. package/dist/browser/tuning/youtubeTv.d.ts.map +1 -0
  113. package/dist/browser/tuning/youtubeTv.js +74 -127
  114. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  115. package/dist/browser/video.d.ts +54 -14
  116. package/dist/browser/video.d.ts.map +1 -0
  117. package/dist/browser/video.js +296 -138
  118. package/dist/browser/video.js.map +1 -1
  119. package/dist/channels/index.d.ts +1 -0
  120. package/dist/channels/index.d.ts.map +1 -0
  121. package/dist/channels/index.js +12 -9
  122. package/dist/channels/index.js.map +1 -1
  123. package/dist/config/channelForm.d.ts +15 -1
  124. package/dist/config/channelForm.d.ts.map +1 -0
  125. package/dist/config/channelForm.js +28 -12
  126. package/dist/config/channelForm.js.map +1 -1
  127. package/dist/config/consistencyProbe.d.ts +1 -0
  128. package/dist/config/consistencyProbe.d.ts.map +1 -0
  129. package/dist/config/consistencyProbe.js +27 -21
  130. package/dist/config/consistencyProbe.js.map +1 -1
  131. package/dist/config/health.d.ts +41 -8
  132. package/dist/config/health.d.ts.map +1 -0
  133. package/dist/config/health.js +189 -38
  134. package/dist/config/health.js.map +1 -1
  135. package/dist/config/index.d.ts +55 -3
  136. package/dist/config/index.d.ts.map +1 -0
  137. package/dist/config/index.js +320 -69
  138. package/dist/config/index.js.map +1 -1
  139. package/dist/config/paths.d.ts +10 -9
  140. package/dist/config/paths.d.ts.map +1 -0
  141. package/dist/config/paths.js +11 -11
  142. package/dist/config/paths.js.map +1 -1
  143. package/dist/config/persistence.context.d.ts +1 -0
  144. package/dist/config/persistence.context.d.ts.map +1 -0
  145. package/dist/config/persistence.d.ts +13 -10
  146. package/dist/config/persistence.d.ts.map +1 -0
  147. package/dist/config/persistence.js +40 -21
  148. package/dist/config/persistence.js.map +1 -1
  149. package/dist/config/presets.d.ts +1 -0
  150. package/dist/config/presets.d.ts.map +1 -0
  151. package/dist/config/profiles.d.ts +22 -15
  152. package/dist/config/profiles.d.ts.map +1 -0
  153. package/dist/config/profiles.js +81 -47
  154. package/dist/config/profiles.js.map +1 -1
  155. package/dist/config/providerLineups.d.ts +47 -0
  156. package/dist/config/providerLineups.d.ts.map +1 -0
  157. package/dist/config/providerLineups.js +137 -0
  158. package/dist/config/providerLineups.js.map +1 -0
  159. package/dist/config/reactivity.d.ts +84 -0
  160. package/dist/config/reactivity.d.ts.map +1 -0
  161. package/dist/config/reactivity.js +226 -0
  162. package/dist/config/reactivity.js.map +1 -0
  163. package/dist/config/servicePacks.d.ts +18 -2
  164. package/dist/config/servicePacks.d.ts.map +1 -0
  165. package/dist/config/servicePacks.js +53 -11
  166. package/dist/config/servicePacks.js.map +1 -1
  167. package/dist/config/services.d.ts +21 -15
  168. package/dist/config/services.d.ts.map +1 -0
  169. package/dist/config/services.js +35 -24
  170. package/dist/config/services.js.map +1 -1
  171. package/dist/config/sites.d.ts +6 -4
  172. package/dist/config/sites.d.ts.map +1 -0
  173. package/dist/config/sites.js +15 -11
  174. package/dist/config/sites.js.map +1 -1
  175. package/dist/config/userChannels.d.ts +129 -30
  176. package/dist/config/userChannels.d.ts.map +1 -0
  177. package/dist/config/userChannels.js +333 -68
  178. package/dist/config/userChannels.js.map +1 -1
  179. package/dist/config/userConfig.d.ts +14 -9
  180. package/dist/config/userConfig.d.ts.map +1 -0
  181. package/dist/config/userConfig.js +87 -25
  182. package/dist/config/userConfig.js.map +1 -1
  183. package/dist/config/userProfiles.d.ts +10 -6
  184. package/dist/config/userProfiles.d.ts.map +1 -0
  185. package/dist/config/userProfiles.js +64 -39
  186. package/dist/config/userProfiles.js.map +1 -1
  187. package/dist/hdhr/channelMap.d.ts +1 -0
  188. package/dist/hdhr/channelMap.d.ts.map +1 -0
  189. package/dist/hdhr/deviceId.d.ts +1 -0
  190. package/dist/hdhr/deviceId.d.ts.map +1 -0
  191. package/dist/hdhr/discover.d.ts +1 -0
  192. package/dist/hdhr/discover.d.ts.map +1 -0
  193. package/dist/hdhr/discover.js +48 -47
  194. package/dist/hdhr/discover.js.map +1 -1
  195. package/dist/hdhr/getHandlers.d.ts +29 -0
  196. package/dist/hdhr/getHandlers.d.ts.map +1 -0
  197. package/dist/hdhr/getHandlers.js +196 -0
  198. package/dist/hdhr/getHandlers.js.map +1 -0
  199. package/dist/hdhr/identity.d.ts +36 -0
  200. package/dist/hdhr/identity.d.ts.map +1 -0
  201. package/dist/hdhr/identity.js +51 -0
  202. package/dist/hdhr/identity.js.map +1 -0
  203. package/dist/hdhr/index.d.ts +22 -4
  204. package/dist/hdhr/index.d.ts.map +1 -0
  205. package/dist/hdhr/index.js +229 -54
  206. package/dist/hdhr/index.js.map +1 -1
  207. package/dist/hdhr/protocol.d.ts +75 -0
  208. package/dist/hdhr/protocol.d.ts.map +1 -0
  209. package/dist/hdhr/protocol.js +264 -0
  210. package/dist/hdhr/protocol.js.map +1 -0
  211. package/dist/hdhr/tunerState.d.ts +24 -0
  212. package/dist/hdhr/tunerState.d.ts.map +1 -0
  213. package/dist/hdhr/tunerState.js +67 -0
  214. package/dist/hdhr/tunerState.js.map +1 -0
  215. package/dist/hdhr/udp.d.ts +43 -0
  216. package/dist/hdhr/udp.d.ts.map +1 -0
  217. package/dist/hdhr/udp.js +277 -0
  218. package/dist/hdhr/udp.js.map +1 -0
  219. package/dist/identity.d.ts +1 -0
  220. package/dist/identity.d.ts.map +1 -0
  221. package/dist/identity.js +13 -11
  222. package/dist/identity.js.map +1 -1
  223. package/dist/index.d.ts +1 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +11 -12
  226. package/dist/index.js.map +1 -1
  227. package/dist/native/codecInference.d.ts +1 -0
  228. package/dist/native/codecInference.d.ts.map +1 -0
  229. package/dist/native/codecInference.js +50 -5
  230. package/dist/native/codecInference.js.map +1 -1
  231. package/dist/native/decrypt.d.ts +6 -2
  232. package/dist/native/decrypt.d.ts.map +1 -0
  233. package/dist/native/decrypt.js +15 -8
  234. package/dist/native/decrypt.js.map +1 -1
  235. package/dist/native/index.d.ts +40 -17
  236. package/dist/native/index.d.ts.map +1 -0
  237. package/dist/native/index.js +281 -120
  238. package/dist/native/index.js.map +1 -1
  239. package/dist/native/probe.d.ts +114 -18
  240. package/dist/native/probe.d.ts.map +1 -0
  241. package/dist/native/probe.js +452 -115
  242. package/dist/native/probe.js.map +1 -1
  243. package/dist/native/proxy.d.ts +57 -5
  244. package/dist/native/proxy.d.ts.map +1 -0
  245. package/dist/native/proxy.js +604 -170
  246. package/dist/native/proxy.js.map +1 -1
  247. package/dist/native/tokenExpiry.d.ts +1 -0
  248. package/dist/native/tokenExpiry.d.ts.map +1 -0
  249. package/dist/native/tokenExpiry.js +1 -1
  250. package/dist/routes/assets.d.ts +1 -0
  251. package/dist/routes/assets.d.ts.map +1 -0
  252. package/dist/routes/assets.js +4 -2
  253. package/dist/routes/assets.js.map +1 -1
  254. package/dist/routes/auth.d.ts +1 -0
  255. package/dist/routes/auth.d.ts.map +1 -0
  256. package/dist/routes/auth.js +0 -1
  257. package/dist/routes/auth.js.map +1 -1
  258. package/dist/routes/cdp.d.ts +5 -5
  259. package/dist/routes/cdp.d.ts.map +1 -0
  260. package/dist/routes/cdp.js +59 -20
  261. package/dist/routes/cdp.js.map +1 -1
  262. package/dist/routes/channels.d.ts +1 -0
  263. package/dist/routes/channels.d.ts.map +1 -0
  264. package/dist/routes/channels.js +2 -1
  265. package/dist/routes/channels.js.map +1 -1
  266. package/dist/routes/clientActions.d.ts +98 -0
  267. package/dist/routes/clientActions.d.ts.map +1 -0
  268. package/dist/routes/clientActions.js +113 -0
  269. package/dist/routes/clientActions.js.map +1 -0
  270. package/dist/routes/components.d.ts +5 -3
  271. package/dist/routes/components.d.ts.map +1 -0
  272. package/dist/routes/components.js +36 -39
  273. package/dist/routes/components.js.map +1 -1
  274. package/dist/routes/config/channels/endpoints/browse.d.ts +1 -0
  275. package/dist/routes/config/channels/endpoints/browse.d.ts.map +1 -0
  276. package/dist/routes/config/channels/endpoints/browse.js +23 -10
  277. package/dist/routes/config/channels/endpoints/browse.js.map +1 -1
  278. package/dist/routes/config/channels/endpoints/bulk.d.ts +1 -0
  279. package/dist/routes/config/channels/endpoints/bulk.d.ts.map +1 -0
  280. package/dist/routes/config/channels/endpoints/bulk.js +5 -3
  281. package/dist/routes/config/channels/endpoints/bulk.js.map +1 -1
  282. package/dist/routes/config/channels/endpoints/crud.d.ts +1 -0
  283. package/dist/routes/config/channels/endpoints/crud.d.ts.map +1 -0
  284. package/dist/routes/config/channels/endpoints/crud.js +85 -93
  285. package/dist/routes/config/channels/endpoints/crud.js.map +1 -1
  286. package/dist/routes/config/channels/endpoints/importExport.d.ts +1 -0
  287. package/dist/routes/config/channels/endpoints/importExport.d.ts.map +1 -0
  288. package/dist/routes/config/channels/endpoints/importExport.js +6 -3
  289. package/dist/routes/config/channels/endpoints/importExport.js.map +1 -1
  290. package/dist/routes/config/channels/endpoints/predefined.d.ts +1 -0
  291. package/dist/routes/config/channels/endpoints/predefined.d.ts.map +1 -0
  292. package/dist/routes/config/channels/endpoints/prefs.d.ts +1 -0
  293. package/dist/routes/config/channels/endpoints/prefs.d.ts.map +1 -0
  294. package/dist/routes/config/channels/endpoints/prefs.js +2 -1
  295. package/dist/routes/config/channels/endpoints/prefs.js.map +1 -1
  296. package/dist/routes/config/channels/endpoints/service.d.ts +2 -1
  297. package/dist/routes/config/channels/endpoints/service.d.ts.map +1 -0
  298. package/dist/routes/config/channels/endpoints/service.js +3 -1
  299. package/dist/routes/config/channels/endpoints/service.js.map +1 -1
  300. package/dist/routes/config/channels/endpoints/tags.d.ts +1 -0
  301. package/dist/routes/config/channels/endpoints/tags.d.ts.map +1 -0
  302. package/dist/routes/config/channels/endpoints/tags.js +13 -7
  303. package/dist/routes/config/channels/endpoints/tags.js.map +1 -1
  304. package/dist/routes/config/channels/healthBridge.d.ts +24 -0
  305. package/dist/routes/config/channels/healthBridge.d.ts.map +1 -0
  306. package/dist/routes/config/channels/healthBridge.js +71 -0
  307. package/dist/routes/config/channels/healthBridge.js.map +1 -0
  308. package/dist/routes/config/channels/http/handler.d.ts +1 -0
  309. package/dist/routes/config/channels/http/handler.d.ts.map +1 -0
  310. package/dist/routes/config/channels/http/playlistHint.d.ts +2 -1
  311. package/dist/routes/config/channels/http/playlistHint.d.ts.map +1 -0
  312. package/dist/routes/config/channels/http/playlistHint.js +16 -2
  313. package/dist/routes/config/channels/http/playlistHint.js.map +1 -1
  314. package/dist/routes/config/channels/http/serviceWarning.d.ts +4 -2
  315. package/dist/routes/config/channels/http/serviceWarning.d.ts.map +1 -0
  316. package/dist/routes/config/channels/http/serviceWarning.js +3 -2
  317. package/dist/routes/config/channels/http/serviceWarning.js.map +1 -1
  318. package/dist/routes/config/channels/index.d.ts +1 -0
  319. package/dist/routes/config/channels/index.d.ts.map +1 -0
  320. package/dist/routes/config/channels/setup.d.ts +1 -0
  321. package/dist/routes/config/channels/setup.d.ts.map +1 -0
  322. package/dist/routes/config/channels/table.d.ts +3 -3
  323. package/dist/routes/config/channels/table.d.ts.map +1 -0
  324. package/dist/routes/config/channels/table.js +148 -107
  325. package/dist/routes/config/channels/table.js.map +1 -1
  326. package/dist/routes/config/http/envelope.d.ts +1 -0
  327. package/dist/routes/config/http/envelope.d.ts.map +1 -0
  328. package/dist/routes/config/index.d.ts +35 -3
  329. package/dist/routes/config/index.d.ts.map +1 -0
  330. package/dist/routes/config/index.js +51 -2
  331. package/dist/routes/config/index.js.map +1 -1
  332. package/dist/routes/config/services.d.ts +5 -4
  333. package/dist/routes/config/services.d.ts.map +1 -0
  334. package/dist/routes/config/services.js +57 -43
  335. package/dist/routes/config/services.js.map +1 -1
  336. package/dist/routes/config/settings.d.ts +1 -0
  337. package/dist/routes/config/settings.d.ts.map +1 -0
  338. package/dist/routes/config/settings.js +98 -49
  339. package/dist/routes/config/settings.js.map +1 -1
  340. package/dist/routes/debug.d.ts +1 -0
  341. package/dist/routes/debug.d.ts.map +1 -0
  342. package/dist/routes/debug.js +277 -139
  343. package/dist/routes/debug.js.map +1 -1
  344. package/dist/routes/health.d.ts +39 -1
  345. package/dist/routes/health.d.ts.map +1 -0
  346. package/dist/routes/health.js +33 -27
  347. package/dist/routes/health.js.map +1 -1
  348. package/dist/routes/hls.d.ts +1 -0
  349. package/dist/routes/hls.d.ts.map +1 -0
  350. package/dist/routes/icons.d.ts +1 -0
  351. package/dist/routes/icons.d.ts.map +1 -0
  352. package/dist/routes/icons.js +1 -1
  353. package/dist/routes/index.d.ts +1 -0
  354. package/dist/routes/index.d.ts.map +1 -0
  355. package/dist/routes/logs.d.ts +1 -0
  356. package/dist/routes/logs.d.ts.map +1 -0
  357. package/dist/routes/logs.js +14 -4
  358. package/dist/routes/logs.js.map +1 -1
  359. package/dist/routes/mpegts.d.ts +1 -0
  360. package/dist/routes/mpegts.d.ts.map +1 -0
  361. package/dist/routes/play.d.ts +1 -0
  362. package/dist/routes/play.d.ts.map +1 -0
  363. package/dist/routes/playlist.d.ts +1 -0
  364. package/dist/routes/playlist.d.ts.map +1 -0
  365. package/dist/routes/playlist.js +7 -2
  366. package/dist/routes/playlist.js.map +1 -1
  367. package/dist/routes/root/content.d.ts +8 -5
  368. package/dist/routes/root/content.d.ts.map +1 -0
  369. package/dist/routes/root/content.js +29 -26
  370. package/dist/routes/root/content.js.map +1 -1
  371. package/dist/routes/root/index.d.ts +2 -1
  372. package/dist/routes/root/index.d.ts.map +1 -0
  373. package/dist/routes/root/index.js +26 -21
  374. package/dist/routes/root/index.js.map +1 -1
  375. package/dist/routes/root/scripts/channels.d.ts +6 -0
  376. package/dist/routes/root/scripts/channels.d.ts.map +1 -0
  377. package/dist/routes/root/scripts/channels.js +197 -118
  378. package/dist/routes/root/scripts/channels.js.map +1 -1
  379. package/dist/routes/root/scripts/clientEscape.d.ts +22 -0
  380. package/dist/routes/root/scripts/clientEscape.d.ts.map +1 -0
  381. package/dist/routes/root/scripts/clientEscape.js +41 -0
  382. package/dist/routes/root/scripts/clientEscape.js.map +1 -0
  383. package/dist/routes/root/scripts/clientUrl.d.ts +23 -0
  384. package/dist/routes/root/scripts/clientUrl.d.ts.map +1 -0
  385. package/dist/routes/root/scripts/clientUrl.js +44 -0
  386. package/dist/routes/root/scripts/clientUrl.js.map +1 -0
  387. package/dist/routes/root/scripts/config.d.ts +6 -0
  388. package/dist/routes/root/scripts/config.d.ts.map +1 -0
  389. package/dist/routes/root/scripts/config.js +110 -24
  390. package/dist/routes/root/scripts/config.js.map +1 -1
  391. package/dist/routes/root/scripts/index.d.ts +1 -0
  392. package/dist/routes/root/scripts/index.d.ts.map +1 -0
  393. package/dist/routes/root/scripts/shared.d.ts +1 -0
  394. package/dist/routes/root/scripts/shared.d.ts.map +1 -0
  395. package/dist/routes/root/scripts/shared.js +112 -26
  396. package/dist/routes/root/scripts/shared.js.map +1 -1
  397. package/dist/routes/root/scripts/status.d.ts +1 -0
  398. package/dist/routes/root/scripts/status.d.ts.map +1 -0
  399. package/dist/routes/root/scripts/status.handlers.d.ts +23 -33
  400. package/dist/routes/root/scripts/status.handlers.d.ts.map +1 -0
  401. package/dist/routes/root/scripts/status.handlers.js +46 -92
  402. package/dist/routes/root/scripts/status.handlers.js.map +1 -1
  403. package/dist/routes/root/scripts/status.js +21 -8
  404. package/dist/routes/root/scripts/status.js.map +1 -1
  405. package/dist/routes/root/styles.d.ts +1 -0
  406. package/dist/routes/root/styles.d.ts.map +1 -0
  407. package/dist/routes/root/styles.js +7 -4
  408. package/dist/routes/root/styles.js.map +1 -1
  409. package/dist/routes/services.d.ts +13 -1
  410. package/dist/routes/services.d.ts.map +1 -0
  411. package/dist/routes/services.js +81 -68
  412. package/dist/routes/services.js.map +1 -1
  413. package/dist/routes/sse.d.ts +1 -0
  414. package/dist/routes/sse.d.ts.map +1 -0
  415. package/dist/routes/sse.js +1 -1
  416. package/dist/routes/sse.js.map +1 -1
  417. package/dist/routes/streams.d.ts +2 -1
  418. package/dist/routes/streams.d.ts.map +1 -0
  419. package/dist/routes/streams.js +6 -4
  420. package/dist/routes/streams.js.map +1 -1
  421. package/dist/routes/theme.d.ts +3 -2
  422. package/dist/routes/theme.d.ts.map +1 -0
  423. package/dist/routes/theme.js +6 -5
  424. package/dist/routes/theme.js.map +1 -1
  425. package/dist/routes/ui.d.ts +3 -1
  426. package/dist/routes/ui.d.ts.map +1 -0
  427. package/dist/routes/ui.js +16 -4
  428. package/dist/routes/ui.js.map +1 -1
  429. package/dist/routes/upgrade.d.ts +1 -0
  430. package/dist/routes/upgrade.d.ts.map +1 -0
  431. package/dist/routes/upgrade.js +6 -2
  432. package/dist/routes/upgrade.js.map +1 -1
  433. package/dist/service/commands.context.d.ts +1 -0
  434. package/dist/service/commands.context.d.ts.map +1 -0
  435. package/dist/service/commands.context.js +4 -3
  436. package/dist/service/commands.context.js.map +1 -1
  437. package/dist/service/commands.d.ts +1 -0
  438. package/dist/service/commands.d.ts.map +1 -0
  439. package/dist/service/commands.js +10 -13
  440. package/dist/service/commands.js.map +1 -1
  441. package/dist/service/generators.context.d.ts +1 -0
  442. package/dist/service/generators.context.d.ts.map +1 -0
  443. package/dist/service/generators.context.js +1 -1
  444. package/dist/service/generators.context.js.map +1 -1
  445. package/dist/service/generators.d.ts +4 -3
  446. package/dist/service/generators.d.ts.map +1 -0
  447. package/dist/service/generators.js +111 -31
  448. package/dist/service/generators.js.map +1 -1
  449. package/dist/service/index.d.ts +1 -0
  450. package/dist/service/index.d.ts.map +1 -0
  451. package/dist/streaming/captureLock.d.ts +44 -0
  452. package/dist/streaming/captureLock.d.ts.map +1 -0
  453. package/dist/streaming/captureLock.js +95 -0
  454. package/dist/streaming/captureLock.js.map +1 -0
  455. package/dist/streaming/captureSession.d.ts +31 -0
  456. package/dist/streaming/captureSession.d.ts.map +1 -0
  457. package/dist/streaming/captureSession.js +54 -0
  458. package/dist/streaming/captureSession.js.map +1 -0
  459. package/dist/streaming/clients.d.ts +1 -0
  460. package/dist/streaming/clients.d.ts.map +1 -0
  461. package/dist/streaming/codec.d.ts +1 -0
  462. package/dist/streaming/codec.d.ts.map +1 -0
  463. package/dist/streaming/fmp4Segmenter.d.ts +29 -2
  464. package/dist/streaming/fmp4Segmenter.d.ts.map +1 -0
  465. package/dist/streaming/fmp4Segmenter.js +79 -26
  466. package/dist/streaming/fmp4Segmenter.js.map +1 -1
  467. package/dist/streaming/hls.d.ts +18 -7
  468. package/dist/streaming/hls.d.ts.map +1 -0
  469. package/dist/streaming/hls.js +220 -120
  470. package/dist/streaming/hls.js.map +1 -1
  471. package/dist/streaming/hlsResume.d.ts +1 -0
  472. package/dist/streaming/hlsResume.d.ts.map +1 -0
  473. package/dist/streaming/hlsResume.js +1 -1
  474. package/dist/streaming/hlsResume.js.map +1 -1
  475. package/dist/streaming/hlsSegments.d.ts +59 -2
  476. package/dist/streaming/hlsSegments.d.ts.map +1 -0
  477. package/dist/streaming/hlsSegments.js +147 -17
  478. package/dist/streaming/hlsSegments.js.map +1 -1
  479. package/dist/streaming/lifecycle.d.ts +4 -1
  480. package/dist/streaming/lifecycle.d.ts.map +1 -0
  481. package/dist/streaming/lifecycle.js +65 -85
  482. package/dist/streaming/lifecycle.js.map +1 -1
  483. package/dist/streaming/monitor.d.ts +6 -4
  484. package/dist/streaming/monitor.d.ts.map +1 -0
  485. package/dist/streaming/monitor.js +343 -145
  486. package/dist/streaming/monitor.js.map +1 -1
  487. package/dist/streaming/mp4Parser.d.ts +5 -4
  488. package/dist/streaming/mp4Parser.d.ts.map +1 -0
  489. package/dist/streaming/mp4Parser.js +36 -13
  490. package/dist/streaming/mp4Parser.js.map +1 -1
  491. package/dist/streaming/mpegts.d.ts +16 -0
  492. package/dist/streaming/mpegts.d.ts.map +1 -0
  493. package/dist/streaming/mpegts.js +61 -17
  494. package/dist/streaming/mpegts.js.map +1 -1
  495. package/dist/streaming/playlistBuilder.d.ts +1 -0
  496. package/dist/streaming/playlistBuilder.d.ts.map +1 -0
  497. package/dist/streaming/preroll.d.ts +32 -5
  498. package/dist/streaming/preroll.d.ts.map +1 -0
  499. package/dist/streaming/preroll.js +70 -32
  500. package/dist/streaming/preroll.js.map +1 -1
  501. package/dist/streaming/pretune.d.ts +26 -1
  502. package/dist/streaming/pretune.d.ts.map +1 -0
  503. package/dist/streaming/pretune.js +22 -24
  504. package/dist/streaming/pretune.js.map +1 -1
  505. package/dist/streaming/pretuneTimers.d.ts +24 -0
  506. package/dist/streaming/pretuneTimers.d.ts.map +1 -0
  507. package/dist/streaming/pretuneTimers.js +56 -0
  508. package/dist/streaming/pretuneTimers.js.map +1 -0
  509. package/dist/streaming/recovery.d.ts +139 -5
  510. package/dist/streaming/recovery.d.ts.map +1 -0
  511. package/dist/streaming/recovery.js +160 -16
  512. package/dist/streaming/recovery.js.map +1 -1
  513. package/dist/streaming/registry.d.ts +27 -9
  514. package/dist/streaming/registry.d.ts.map +1 -0
  515. package/dist/streaming/registry.js +21 -3
  516. package/dist/streaming/registry.js.map +1 -1
  517. package/dist/streaming/setup.d.ts +157 -29
  518. package/dist/streaming/setup.d.ts.map +1 -0
  519. package/dist/streaming/setup.js +1034 -458
  520. package/dist/streaming/setup.js.map +1 -1
  521. package/dist/streaming/showInfo.d.ts +21 -1
  522. package/dist/streaming/showInfo.d.ts.map +1 -0
  523. package/dist/streaming/showInfo.js +31 -16
  524. package/dist/streaming/showInfo.js.map +1 -1
  525. package/dist/streaming/statusEmitter.d.ts +10 -10
  526. package/dist/streaming/statusEmitter.d.ts.map +1 -0
  527. package/dist/streaming/statusEmitter.js +5 -8
  528. package/dist/streaming/statusEmitter.js.map +1 -1
  529. package/dist/types/channels.d.ts +16 -4
  530. package/dist/types/channels.d.ts.map +1 -0
  531. package/dist/types/channels.js +4 -2
  532. package/dist/types/channels.js.map +1 -1
  533. package/dist/types/config.d.ts +16 -5
  534. package/dist/types/config.d.ts.map +1 -0
  535. package/dist/types/index.d.ts +3 -2
  536. package/dist/types/index.d.ts.map +1 -0
  537. package/dist/types/profiles.d.ts +6 -4
  538. package/dist/types/profiles.d.ts.map +1 -0
  539. package/dist/types/selection.d.ts +31 -3
  540. package/dist/types/selection.d.ts.map +1 -0
  541. package/dist/types/selection.js +4 -2
  542. package/dist/types/selection.js.map +1 -1
  543. package/dist/types/shared.d.ts +1 -0
  544. package/dist/types/shared.d.ts.map +1 -0
  545. package/dist/types/streaming.d.ts +8 -0
  546. package/dist/types/streaming.d.ts.map +1 -0
  547. package/dist/upgrade/commands.context.d.ts +1 -0
  548. package/dist/upgrade/commands.context.d.ts.map +1 -0
  549. package/dist/upgrade/commands.context.js +14 -10
  550. package/dist/upgrade/commands.context.js.map +1 -1
  551. package/dist/upgrade/commands.d.ts +8 -15
  552. package/dist/upgrade/commands.d.ts.map +1 -0
  553. package/dist/upgrade/commands.js +27 -28
  554. package/dist/upgrade/commands.js.map +1 -1
  555. package/dist/upgrade/detection.context.d.ts +1 -0
  556. package/dist/upgrade/detection.context.d.ts.map +1 -0
  557. package/dist/upgrade/detection.context.js +4 -1
  558. package/dist/upgrade/detection.context.js.map +1 -1
  559. package/dist/upgrade/detection.d.ts +9 -7
  560. package/dist/upgrade/detection.d.ts.map +1 -0
  561. package/dist/upgrade/detection.js +23 -54
  562. package/dist/upgrade/detection.js.map +1 -1
  563. package/dist/upgrade/index.d.ts +2 -0
  564. package/dist/upgrade/index.d.ts.map +1 -0
  565. package/dist/upgrade/index.js +1 -0
  566. package/dist/upgrade/index.js.map +1 -1
  567. package/dist/upgrade/lifecycle.context.d.ts +20 -0
  568. package/dist/upgrade/lifecycle.context.d.ts.map +1 -0
  569. package/dist/upgrade/lifecycle.context.js +47 -0
  570. package/dist/upgrade/lifecycle.context.js.map +1 -0
  571. package/dist/upgrade/lifecycle.d.ts +72 -0
  572. package/dist/upgrade/lifecycle.d.ts.map +1 -0
  573. package/dist/upgrade/lifecycle.js +175 -0
  574. package/dist/upgrade/lifecycle.js.map +1 -0
  575. package/dist/upgrade/pathHandle.d.ts +30 -0
  576. package/dist/upgrade/pathHandle.d.ts.map +1 -0
  577. package/dist/upgrade/pathHandle.js +102 -0
  578. package/dist/upgrade/pathHandle.js.map +1 -0
  579. package/dist/utils/bootSession.context.d.ts +16 -0
  580. package/dist/utils/bootSession.context.d.ts.map +1 -0
  581. package/dist/utils/bootSession.context.js +60 -0
  582. package/dist/utils/bootSession.context.js.map +1 -0
  583. package/dist/utils/bootSession.d.ts +17 -0
  584. package/dist/utils/bootSession.d.ts.map +1 -0
  585. package/dist/utils/bootSession.js +20 -0
  586. package/dist/utils/bootSession.js.map +1 -0
  587. package/dist/utils/chromeFetch.d.ts +1 -0
  588. package/dist/utils/chromeFetch.d.ts.map +1 -0
  589. package/dist/utils/cliOutput.d.ts +1 -0
  590. package/dist/utils/cliOutput.d.ts.map +1 -0
  591. package/dist/utils/clock.d.ts +5 -4
  592. package/dist/utils/clock.d.ts.map +1 -0
  593. package/dist/utils/clock.js +19 -16
  594. package/dist/utils/clock.js.map +1 -1
  595. package/dist/utils/debugFilter.d.ts +9 -1
  596. package/dist/utils/debugFilter.d.ts.map +1 -0
  597. package/dist/utils/debugFilter.js +60 -33
  598. package/dist/utils/debugFilter.js.map +1 -1
  599. package/dist/utils/delay.d.ts +48 -15
  600. package/dist/utils/delay.d.ts.map +1 -0
  601. package/dist/utils/delay.js +73 -20
  602. package/dist/utils/delay.js.map +1 -1
  603. package/dist/utils/errors.d.ts +32 -0
  604. package/dist/utils/errors.d.ts.map +1 -0
  605. package/dist/utils/errors.js +45 -4
  606. package/dist/utils/errors.js.map +1 -1
  607. package/dist/utils/evaluate.d.ts +1 -0
  608. package/dist/utils/evaluate.d.ts.map +1 -0
  609. package/dist/utils/evaluate.js +29 -23
  610. package/dist/utils/evaluate.js.map +1 -1
  611. package/dist/utils/ffmpeg.context.d.ts +1 -0
  612. package/dist/utils/ffmpeg.context.d.ts.map +1 -0
  613. package/dist/utils/ffmpeg.context.js.map +1 -1
  614. package/dist/utils/ffmpeg.d.ts +29 -7
  615. package/dist/utils/ffmpeg.d.ts.map +1 -0
  616. package/dist/utils/ffmpeg.js +32 -14
  617. package/dist/utils/ffmpeg.js.map +1 -1
  618. package/dist/utils/fileLogger.d.ts +3 -1
  619. package/dist/utils/fileLogger.d.ts.map +1 -0
  620. package/dist/utils/fileLogger.js +64 -29
  621. package/dist/utils/fileLogger.js.map +1 -1
  622. package/dist/utils/format.d.ts +14 -1
  623. package/dist/utils/format.d.ts.map +1 -0
  624. package/dist/utils/format.js +19 -5
  625. package/dist/utils/format.js.map +1 -1
  626. package/dist/utils/index.d.ts +4 -0
  627. package/dist/utils/index.d.ts.map +1 -0
  628. package/dist/utils/index.js +3 -0
  629. package/dist/utils/index.js.map +1 -1
  630. package/dist/utils/logEmitter.d.ts +1 -0
  631. package/dist/utils/logEmitter.d.ts.map +1 -0
  632. package/dist/utils/logger.d.ts +1 -0
  633. package/dist/utils/logger.d.ts.map +1 -0
  634. package/dist/utils/logger.js +10 -6
  635. package/dist/utils/logger.js.map +1 -1
  636. package/dist/utils/m3u.d.ts +3 -2
  637. package/dist/utils/m3u.d.ts.map +1 -0
  638. package/dist/utils/m3u.js +4 -3
  639. package/dist/utils/m3u.js.map +1 -1
  640. package/dist/utils/markup.d.ts +13 -1
  641. package/dist/utils/markup.d.ts.map +1 -0
  642. package/dist/utils/markup.js +28 -4
  643. package/dist/utils/markup.js.map +1 -1
  644. package/dist/utils/memo.d.ts +3 -2
  645. package/dist/utils/memo.d.ts.map +1 -0
  646. package/dist/utils/memo.js +3 -3
  647. package/dist/utils/morganStream.d.ts +1 -0
  648. package/dist/utils/morganStream.d.ts.map +1 -0
  649. package/dist/utils/network.d.ts +1 -0
  650. package/dist/utils/network.d.ts.map +1 -0
  651. package/dist/utils/network.js +2 -2
  652. package/dist/utils/pid.d.ts +3 -25
  653. package/dist/utils/pid.d.ts.map +1 -0
  654. package/dist/utils/pid.js +10 -49
  655. package/dist/utils/pid.js.map +1 -1
  656. package/dist/utils/platform.d.ts +3 -1
  657. package/dist/utils/platform.d.ts.map +1 -0
  658. package/dist/utils/platform.js +2 -1
  659. package/dist/utils/platform.js.map +1 -1
  660. package/dist/utils/processInspector.context.d.ts +8 -0
  661. package/dist/utils/processInspector.context.d.ts.map +1 -0
  662. package/dist/utils/processInspector.context.js +106 -0
  663. package/dist/utils/processInspector.context.js.map +1 -0
  664. package/dist/utils/processInspector.d.ts +55 -0
  665. package/dist/utils/processInspector.d.ts.map +1 -0
  666. package/dist/utils/processInspector.js +127 -0
  667. package/dist/utils/processInspector.js.map +1 -0
  668. package/dist/utils/retry.d.ts +25 -2
  669. package/dist/utils/retry.d.ts.map +1 -0
  670. package/dist/utils/retry.js +33 -6
  671. package/dist/utils/retry.js.map +1 -1
  672. package/dist/utils/runtimeIdentity.context.d.ts +7 -0
  673. package/dist/utils/runtimeIdentity.context.d.ts.map +1 -0
  674. package/dist/utils/runtimeIdentity.context.js +43 -0
  675. package/dist/utils/runtimeIdentity.context.js.map +1 -0
  676. package/dist/utils/runtimeIdentity.d.ts +98 -0
  677. package/dist/utils/runtimeIdentity.d.ts.map +1 -0
  678. package/dist/utils/runtimeIdentity.js +181 -0
  679. package/dist/utils/runtimeIdentity.js.map +1 -0
  680. package/dist/utils/sanitize.d.ts +1 -0
  681. package/dist/utils/sanitize.d.ts.map +1 -0
  682. package/dist/utils/streamContext.d.ts +2 -1
  683. package/dist/utils/streamContext.d.ts.map +1 -0
  684. package/dist/utils/streamContext.js +1 -1
  685. package/dist/utils/timing.d.ts +2 -1
  686. package/dist/utils/timing.d.ts.map +1 -0
  687. package/dist/utils/timing.js +0 -5
  688. package/dist/utils/timing.js.map +1 -1
  689. package/dist/utils/version.d.ts +1 -0
  690. package/dist/utils/version.d.ts.map +1 -0
  691. package/dist/utils/version.js +47 -13
  692. package/dist/utils/version.js.map +1 -1
  693. package/package.json +26 -20
@@ -0,0 +1,277 @@
1
+ /* Copyright(C) 2024-2026, HJD (https://github.com/hjdhjd). All rights reserved.
2
+ *
3
+ * udp.ts: HDHomeRun UDP discovery and control transport for PrismCast.
4
+ *
5
+ * Plex locates HDHomeRun devices on the LAN by broadcasting a Discover request to UDP port 65001 and consuming the unicast replies. The same protocol surface
6
+ * can answer Get requests against this port for device and tuner state. This module owns the responder socket as a self-disposing UdpSurface node: the node
7
+ * binds the socket, dispatches incoming packets through the pure protocol codec and getHandlers dispatch table, and composes replies whose BaseURL field points
8
+ * at the correct LAN-reachable interface address for the requesting client. The pure logic lives in free functions below; the node owns the socket, the captured
9
+ * HTTP-port provider, and the bind/close lifecycle. Other HDHR-aware clients can speak the same protocol; their compatibility is incidental rather than supported
10
+ * (see hdhr/index.ts for the Channels DVR port-80 caveat in particular).
11
+ *
12
+ * Lifecycle is driven by the controller in hdhr/index.ts, which owns one UdpSurface alongside the HTTP surface. The controller calls ensureUp after the HTTP
13
+ * server is listening (so the BaseURL the reply advertises is actually live) and ensureDown during graceful shutdown and on a live toggle of hdhr.discoveryEnabled.
14
+ * ensureDown is also the node's [Symbol.asyncDispose], so the surface composes uniformly with the rest of the ownership tree. A bind collision on port 65001 (real
15
+ * HDHR or another emulator on the same host) is logged at warn level and treated as graceful "discovery not available" rather than a startup failure - the HTTP
16
+ * HDHR surface keeps working in that scenario, only LAN auto-detect is lost.
17
+ */
18
+ import { LOG, isCategoryEnabled } from "../utils/index.js";
19
+ import { PACKET_UPGRADE_REQUEST, buildDiscoverReply, buildErrorReply, buildGetReply, parsePacket } from "./protocol.js";
20
+ import { CONFIG } from "../config/index.js";
21
+ import { HDHR_DEVICE_TYPE_TUNER } from "./identity.js";
22
+ import { createSocket } from "node:dgram";
23
+ import { formatError } from "../utils/errors.js";
24
+ import { getPackageVersion } from "../utils/index.js";
25
+ import { getTunerStates } from "./tunerState.js";
26
+ import { networkInterfaces } from "node:os";
27
+ import { resolveGet } from "./getHandlers.js";
28
+ // Standard HDHomeRun discovery port. All HDHR-aware clients hard-code this value, so it is not configurable.
29
+ export const HDHR_DISCOVERY_PORT = 65001;
30
+ /**
31
+ * Creates an HDHomeRun UDP discovery surface node. The returned object fully owns its socket; nothing outside the closure touches it. ensureUp/ensureDown are the
32
+ * cycling verbs the controller drives; [Symbol.asyncDispose] aliases ensureDown so the surface is a well-formed async-disposable resource.
33
+ * @returns A UdpSurface node.
34
+ */
35
+ export function createUdpSurface() {
36
+ // The active responder socket, owned entirely by this node. Null when the surface is down.
37
+ let socket = null;
38
+ // Provider for the HTTP server's live bound port, captured at ensureUp time. The Discover reply advertises this (not CONFIG.hdhr.port) so the BaseURL always
39
+ // reflects where the HTTP server is actually listening - which matters in the rejected-port-change case, where HTTP stays on the prior port while CONFIG holds
40
+ // the new one. Null until ensureUp is called with a provider; falls back to CONFIG.hdhr.port when absent (e.g. in transport tests).
41
+ let httpPortProvider = null;
42
+ async function ensureUp(options) {
43
+ // Safe to call more than once: an already-bound surface is a no-op success. Safe to invoke from both initial startup and live config-change application.
44
+ if (socket !== null) {
45
+ return true;
46
+ }
47
+ // Capture the HTTP-port provider for the Discover reply's BaseURL. Set before the bind attempt; harmless if the bind then fails (no socket -> no packets).
48
+ httpPortProvider = options?.httpPortProvider ?? null;
49
+ const bindAddress = options?.bindAddress ?? "0.0.0.0";
50
+ const port = options?.port ?? HDHR_DISCOVERY_PORT;
51
+ // We keep reuseAddr false deliberately: a competing binder on the discovery port must surface as EADDRINUSE so the bind-failure handler below can treat it as
52
+ // graceful "discovery unavailable" fallback rather than silently double-binding. Flipping this to true (or dropping it as redundant) would defeat that
53
+ // collision detection.
54
+ const candidate = createSocket({ reuseAddr: false, type: "udp4" });
55
+ candidate.on("message", (msg, rinfo) => {
56
+ // Defensive: catch handler errors so a malformed packet from a buggy client cannot tear down the socket.
57
+ try {
58
+ handlePacket(candidate, msg, rinfo, httpPortProvider);
59
+ }
60
+ catch (error) {
61
+ LOG.debug("hdhr", "UDP responder swallowed handler error.", { error: formatError(error) });
62
+ }
63
+ });
64
+ const { promise, resolve } = Promise.withResolvers();
65
+ // Two error handlers, attached at different phases of the socket lifecycle. The bind-failure handler is short-lived: it runs once if bind fails (typically
66
+ // EADDRINUSE), resolves the bind promise with false, and is removed on bind success. The runtime-error handler is long-lived: it runs for any socket error
67
+ // that occurs after a successful bind, clears the node's socket reference so a subsequent ensureUp can rebind cleanly, and closes the socket. Splitting the
68
+ // two paths prevents the once-handler from misclassifying a post-bind error as a bind failure (with a misleading "port is already in use" log line) and keeps
69
+ // the node's socket reference from pointing at a closed socket.
70
+ const bindFailureHandler = (error) => {
71
+ if (error.code === "EADDRINUSE") {
72
+ LOG.warn("HDHomeRun LAN discovery port %d is already in use. Discovery is disabled; clients can still add PrismCast manually by IP.", port);
73
+ }
74
+ else {
75
+ LOG.warn("HDHomeRun LAN discovery failed to start: %s. Clients can still add PrismCast manually by IP.", formatError(error));
76
+ }
77
+ candidate.close();
78
+ resolve(false);
79
+ };
80
+ const runtimeErrorHandler = (error) => {
81
+ LOG.warn("HDHomeRun LAN discovery encountered a socket error and is now disabled: %s.", formatError(error));
82
+ if (socket === candidate) {
83
+ socket = null;
84
+ }
85
+ candidate.close();
86
+ };
87
+ candidate.once("error", bindFailureHandler);
88
+ candidate.bind(port, bindAddress, () => {
89
+ const address = candidate.address();
90
+ socket = candidate;
91
+ candidate.removeListener("error", bindFailureHandler);
92
+ candidate.on("error", runtimeErrorHandler);
93
+ LOG.info("HDHomeRun LAN discovery is now responding on UDP %s:%d.", bindAddress, address.port);
94
+ resolve(true);
95
+ });
96
+ return promise;
97
+ }
98
+ async function ensureDown() {
99
+ if (socket === null) {
100
+ return;
101
+ }
102
+ const current = socket;
103
+ // eslint-disable-next-line @typescript-eslint/no-invalid-void-type -- Standard pattern for signal promises.
104
+ const { promise, resolve } = Promise.withResolvers();
105
+ // Clear the reference before the asynchronous close so a concurrent ensureUp during teardown rebinds a fresh socket rather than racing the closing one.
106
+ socket = null;
107
+ current.close(() => {
108
+ LOG.info("HDHomeRun LAN discovery is now stopped.");
109
+ resolve();
110
+ });
111
+ return promise;
112
+ }
113
+ return {
114
+ get boundPort() {
115
+ return socket ? socket.address().port : null;
116
+ },
117
+ ensureDown,
118
+ ensureUp,
119
+ [Symbol.asyncDispose]: ensureDown
120
+ };
121
+ }
122
+ /**
123
+ * Handles a single incoming UDP packet. Parses it through the pure protocol codec, dispatches by packet type, and sends the appropriate reply (or drops the
124
+ * packet silently when it cannot or should not be answered). Pulled out of the socket.on("message", ...) inline body so the dispatch table reads cleanly.
125
+ * @param socket - The bound UDP socket, used to send replies.
126
+ * @param msg - The raw datagram bytes.
127
+ * @param rinfo - The sender's address info, used both to address the reply and to pick a LAN-reachable BaseURL.
128
+ * @param httpPortProvider - Accessor for the HTTP server's live bound port, used to build the Discover reply's BaseURL. Falls back to CONFIG.hdhr.port when null.
129
+ */
130
+ function handlePacket(socket, msg, rinfo, httpPortProvider) {
131
+ const parsed = parsePacket(msg);
132
+ if (parsed === null) {
133
+ LOG.debug("hdhr", "UDP responder dropped a malformed or CRC-mismatched packet.", { from: rinfo.address });
134
+ return;
135
+ }
136
+ switch (parsed.type) {
137
+ case "discover": {
138
+ // Advertise the HTTP server's live bound port when known, falling back to CONFIG.hdhr.port. The provider reflects reality even when a rejected port
139
+ // change has left HTTP on its prior port while CONFIG holds the new value.
140
+ const advertisedPort = httpPortProvider?.() ?? CONFIG.hdhr.port;
141
+ const baseUrl = "http://" + selectLanAddress(rinfo.address) + ":" + String(advertisedPort);
142
+ const reply = buildDiscoverReply({
143
+ baseUrl,
144
+ deviceId: parseDeviceId(CONFIG.hdhr.deviceId),
145
+ deviceType: HDHR_DEVICE_TYPE_TUNER,
146
+ tunerCount: CONFIG.streaming.maxConcurrentStreams
147
+ });
148
+ sendReply(socket, reply, rinfo);
149
+ logDispatch("discover", rinfo, { baseUrl });
150
+ break;
151
+ }
152
+ case "get": {
153
+ const result = resolveGet(parsed.name, { runtimeVersion: getPackageVersion(), tuners: getTunerStates() });
154
+ const reply = (result.kind === "value") ? buildGetReply(parsed.name, result.value) : buildErrorReply(parsed.name, result.error);
155
+ sendReply(socket, reply, rinfo);
156
+ logDispatch("get", rinfo, { kind: result.kind, name: parsed.name });
157
+ break;
158
+ }
159
+ case "set": {
160
+ // PrismCast's emulation model is HTTP-streaming; clients tune by fetching the lineup URL. UDP Set requests are a legacy RTP-streaming control surface we
161
+ // do not implement, but the wire convention is to reply with an explicit error rather than silently drop so the client does not block waiting for ACK.
162
+ // The wire packet type for Set is PACKET_GET_REQUEST (0x0004) - the protocol uses the same code for Get and Set, distinguished by the value TLV.
163
+ const reply = buildErrorReply(parsed.name, "ERROR: write protected");
164
+ sendReply(socket, reply, rinfo);
165
+ logDispatch("set", rinfo, { name: parsed.name });
166
+ break;
167
+ }
168
+ case "unsupported": {
169
+ // Upgrade requests and unknown packet types are dropped silently. Real HDHomeRun firmware does the same for Upgrade traffic addressed to an HDTC-2US
170
+ // (which has no upgrade endpoint); mimicking the behavior avoids surfacing "unsupported" reply spam in client logs.
171
+ logDispatch("unsupported", rinfo, { packetType: parsed.packetType, upgradeRequest: (parsed.packetType === PACKET_UPGRADE_REQUEST) });
172
+ break;
173
+ }
174
+ }
175
+ }
176
+ /**
177
+ * Sends a pre-built reply packet back to the requester. Wrapped so the send error handling lives in one place; UDP send is fire-and-forget but we still want
178
+ * to surface failures at debug level for diagnostics.
179
+ * @param socket - The bound UDP socket.
180
+ * @param packet - The wire-formatted reply bytes.
181
+ * @param rinfo - The destination address.
182
+ */
183
+ function sendReply(socket, packet, rinfo) {
184
+ socket.send(packet, rinfo.port, rinfo.address, (error) => {
185
+ if (error) {
186
+ LOG.debug("hdhr", "UDP responder failed to send a reply.", { error: formatError(error), to: rinfo.address });
187
+ }
188
+ });
189
+ }
190
+ /**
191
+ * Selects the local IPv4 address that is reachable from the requester's subnet. Walks os.networkInterfaces, computes each interface's network address via its
192
+ * netmask, and returns the matching interface's address. Falls back to the first non-loopback IPv4 address when no subnet matches (typical on hosts whose
193
+ * routing crosses a layer-3 boundary). Returns "127.0.0.1" as the last resort - clients reaching us on loopback will use it; clients on the LAN that hit this
194
+ * branch will fail to reach back, but that scenario implies a misconfigured host where LAN advertising would not help anyway.
195
+ *
196
+ * Exposed (and parameterized over network interfaces) primarily for tests; the production call site uses os.networkInterfaces() directly via the default
197
+ * parameter.
198
+ * @param targetAddress - The requester's IPv4 address (from dgram rinfo).
199
+ * @param interfaces - Map of interface name to NetworkInterfaceInfo array (defaults to os.networkInterfaces()).
200
+ * @returns The selected local IPv4 address.
201
+ */
202
+ export function selectLanAddress(targetAddress, interfaces = networkInterfaces()) {
203
+ const ipv4Interfaces = [];
204
+ for (const list of Object.values(interfaces)) {
205
+ if (!list) {
206
+ continue;
207
+ }
208
+ for (const iface of list) {
209
+ if ((iface.family === "IPv4") && !iface.internal) {
210
+ ipv4Interfaces.push(iface);
211
+ }
212
+ }
213
+ }
214
+ const targetInt = ipv4ToInt(targetAddress);
215
+ if (targetInt !== null) {
216
+ for (const iface of ipv4Interfaces) {
217
+ const maskInt = ipv4ToInt(iface.netmask);
218
+ const ifaceInt = ipv4ToInt(iface.address);
219
+ if ((maskInt === null) || (ifaceInt === null)) {
220
+ continue;
221
+ }
222
+ // Subnet match: both addresses agree under the interface's netmask.
223
+ if ((targetInt & maskInt) === (ifaceInt & maskInt)) {
224
+ return iface.address;
225
+ }
226
+ }
227
+ }
228
+ // No subnet match. Fall back to the first non-loopback IPv4 address so the BaseURL is at least plausible.
229
+ if (ipv4Interfaces.length > 0) {
230
+ return ipv4Interfaces[0]?.address ?? "127.0.0.1";
231
+ }
232
+ return "127.0.0.1";
233
+ }
234
+ /**
235
+ * Converts a dotted IPv4 string to a 32-bit unsigned integer. Returns null when the input is malformed (not four octets, octet out of range). Internal to this
236
+ * module so the bounds checking does not leak into callers.
237
+ * @param ip - The IPv4 address.
238
+ * @returns The 32-bit value or null.
239
+ */
240
+ function ipv4ToInt(ip) {
241
+ const parts = ip.split(".");
242
+ if (parts.length !== 4) {
243
+ return null;
244
+ }
245
+ let result = 0;
246
+ for (const part of parts) {
247
+ const n = Number(part);
248
+ if (!Number.isInteger(n) || (n < 0) || (n > 255)) {
249
+ return null;
250
+ }
251
+ result = ((result << 8) | n) >>> 0;
252
+ }
253
+ return result;
254
+ }
255
+ /**
256
+ * Converts the 8-hex-character device id string from CONFIG.hdhr.deviceId into the 32-bit unsigned integer the wire protocol expects. Falls back to zero for
257
+ * invalid input so a hand-edited config does not crash the responder; the integrity check at startup catches the underlying error separately.
258
+ * @param hex - The 8-character hex string from CONFIG.
259
+ * @returns The 32-bit value.
260
+ */
261
+ function parseDeviceId(hex) {
262
+ const value = parseInt(hex, 16);
263
+ return Number.isNaN(value) ? 0 : (value >>> 0);
264
+ }
265
+ /**
266
+ * Logs a dispatch event at debug level. Skipped entirely when the "hdhr" debug category is disabled so the hot path stays branch-light.
267
+ * @param kind - Short label identifying the dispatched packet type.
268
+ * @param rinfo - Sender info.
269
+ * @param extra - Additional structured context.
270
+ */
271
+ function logDispatch(kind, rinfo, extra) {
272
+ if (!isCategoryEnabled("hdhr")) {
273
+ return;
274
+ }
275
+ LOG.debug("hdhr", "UDP responder dispatched packet.", { from: rinfo.address, kind, ...extra });
276
+ }
277
+ //# sourceMappingURL=udp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"udp.js","sourceRoot":"","sources":["../../src/hdhr/udp.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare const SERVICE_ID = "com.github.hjdhjd.prismcast";
2
2
  export declare const SERVICE_NAME = "PrismCast";
3
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,UAAU,gCAAgC,CAAC;AAKxD,eAAO,MAAM,YAAY,cAAc,CAAC"}
package/dist/identity.js CHANGED
@@ -2,18 +2,20 @@
2
2
  *
3
3
  * identity.ts: Project-wide identity constants for PrismCast.
4
4
  */
5
- /* This module is the single source of truth for the values other modules need to refer to PrismCast by name: the reverse-DNS service identifier launchd plists
6
- * and systemd units carry, and the human-readable product name UI surfaces display. It sits at the root of src/ - below config, utils, service, and every other
7
- * subsystem - because both the path-resolution layer (config/paths.ts, which uses SERVICE_ID in the macOS LaunchAgents path) and the service-generation layer
8
- * (service/generators.ts, which embeds both values in plist and unit files) consume it. Placing it inside either of those subsystems would force the other to
9
- * import sideways across a boundary it otherwise respects; lifting it to a dedicated root-level identity module preserves the layering and gives the constants
10
- * a home that names what they are rather than where they happened to first be used.
5
+ /* This module is the single source of truth for the values other modules need to refer to PrismCast by name: the reverse-DNS service identifier the macOS
6
+ * launchd plist carries, and the human-readable product name the Linux systemd unit, the Windows Task Scheduler task, and UI surfaces display. It sits at the
7
+ * root of src/ - below config, utils, service, and every other subsystem - because both the path-resolution layer (config/paths.ts, which uses SERVICE_ID in
8
+ * the macOS LaunchAgents path) and the service-generation layer (service/generators.ts, which embeds SERVICE_ID in the launchd plist and SERVICE_NAME in the
9
+ * systemd unit and the Task Scheduler task) consume it. Placing it inside either of those subsystems would force the other to import sideways across a
10
+ * boundary it otherwise respects; lifting it to a dedicated root-level identity module preserves the layering and gives the constants a home that names what
11
+ * they are rather than where they happened to first be used.
11
12
  */
12
- // The reverse-DNS service identifier. macOS launchd uses this for the bundle name, the LaunchAgents plist file name, and the Label key inside the plist itself.
13
- // Linux systemd and Windows Task Scheduler do not require reverse-DNS form, but the generators still quote this value in the unit/task definitions so users see
14
- // a consistent identifier across platforms when inspecting or removing the installed service.
13
+ // The reverse-DNS service identifier. macOS launchd uses this for the bundle name, the LaunchAgents plist file name, and the Label key inside the plist itself,
14
+ // and it is also the identifier passed to launchctl start/stop/remove commands. Linux systemd and Windows Task Scheduler do not consume this value at all -
15
+ // they identify the service by SERVICE_NAME instead, since neither service manager requires reverse-DNS form for its unit or task identifiers.
15
16
  export const SERVICE_ID = "com.github.hjdhjd.prismcast";
16
- // The human-readable product name. Surfaced in UI labels, in the service-install command output, and as the display name on platforms whose service managers
17
- // distinguish "internal identifier" from "shown name" (Windows Task Scheduler being the clearest example).
17
+ // The human-readable product name. Surfaced in UI labels, in the service-install command output, in the Linux systemd unit's Description line, and as the
18
+ // task name in the Windows Task Scheduler generator. macOS is the clearest example of a platform that separates "internal identifier" from "shown name": the
19
+ // launchd plist stores only SERVICE_ID and never SERVICE_NAME, so the human-readable name exists only in this module and the CLI output that references it.
18
20
  export const SERVICE_NAME = "PrismCast";
19
21
  //# sourceMappingURL=identity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,gKAAgK;AAChK,gKAAgK;AAChK,8FAA8F;AAC9F,MAAM,CAAC,MAAM,UAAU,GAAG,6BAA6B,CAAC;AAExD,6JAA6J;AAC7J,2GAA2G;AAC3G,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAEH,gKAAgK;AAChK,4JAA4J;AAC5J,+IAA+I;AAC/I,MAAM,CAAC,MAAM,UAAU,GAAG,6BAA6B,CAAC;AAExD,0JAA0J;AAC1J,6JAA6J;AAC7J,4JAA4J;AAC5J,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC"}
package/dist/index.d.ts CHANGED
@@ -9,3 +9,4 @@ export interface ParsedArgs {
9
9
  logFile?: string;
10
10
  port?: number;
11
11
  }
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuMA;;GAEG;AACH,MAAM,WAAW,UAAU;IAEzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
package/dist/index.js CHANGED
@@ -4,9 +4,9 @@
4
4
  */
5
5
  import { CONFIG_METADATA, DEFAULTS, getNestedValue } from "./config/userConfig.js";
6
6
  import { LOG, formatError, getPackageVersion, initDebugFilter, setDebugLogging } from "./utils/index.js";
7
- import { canCleanupChrome, isGracefulShutdown, killStaleChrome } from "./browser/index.js";
8
- import { clearServerPid, startServer } from "./app.js";
9
7
  import { getDebugEnv, initializeDataDir } from "./config/paths.js";
8
+ import { isGracefulShutdown, killStaleChrome } from "./browser/index.js";
9
+ import { releaseInstanceSlot, startServer } from "./app.js";
10
10
  import { flushLogBufferSync } from "./utils/fileLogger.js";
11
11
  import { handleServiceCommand } from "./service/index.js";
12
12
  import { handleUpgradeCommand } from "./upgrade/index.js";
@@ -72,7 +72,8 @@ function printUsage() {
72
72
  /* eslint-enable no-console */
73
73
  }
74
74
  /**
75
- * Prints a complete listing of all environment variables organized by category. Generates output dynamically from CONFIG_METADATA so it is always accurate.
75
+ * Prints a complete listing of all environment variables organized by category. Generates the per-category listing dynamically from CONFIG_METADATA; the
76
+ * Special section below is hand-maintained since PRISMCAST_DATA_DIR and PRISMCAST_DEBUG are resolved outside config.json.
76
77
  */
77
78
  function printEnvironmentVariables() {
78
79
  /* eslint-disable no-console */
@@ -159,8 +160,8 @@ function printEnvironmentVariables() {
159
160
  * @param value - The path value to validate.
160
161
  */
161
162
  function requireAbsolutePath(flag, value) {
162
- // Guard against missing values when the flag is the last argument. TypeScript types array index access as `string`, but at runtime `args[++i]` returns `undefined`
163
- // when out of bounds. Checking for falsy catches both `undefined` and empty string.
163
+ // Guard against a missing value when the flag is the last argument. The caller defaults a missing `args[++i]` to an empty string via `?? ""` before calling
164
+ // this function, so checking for falsy here catches that empty-string case.
164
165
  if (!value) {
165
166
  // eslint-disable-next-line no-console
166
167
  console.error("Error: " + flag + " requires a path argument.");
@@ -199,7 +200,7 @@ function parseArgs() {
199
200
  }
200
201
  if ((arg === "-p") || (arg === "--port")) {
201
202
  const parsed = parseInt(args[++i] ?? "");
202
- if (!isNaN(parsed)) {
203
+ if (!Number.isNaN(parsed)) {
203
204
  port = parsed;
204
205
  }
205
206
  }
@@ -290,12 +291,10 @@ else {
290
291
  // process terminates. Chrome will die when its pipes break since the parent is exiting; killing it explicitly is belt-and-suspenders.
291
292
  flushLogBufferSync();
292
293
  try {
293
- clearServerPid();
294
- // Only kill Chrome if this process has taken ownership via killStaleChrome() during startup. Without this guard, a duplicate instance rejected by the
295
- // instance check would kill Chrome belonging to the running server on its way out.
296
- if (canCleanupChrome()) {
297
- killStaleChrome();
298
- }
294
+ releaseInstanceSlot();
295
+ // killStaleChrome is safe to call unconditionally now: the ownership filter inside it (parent-pid match or parent-pid dead) excludes Chrome belonging to
296
+ // another live PrismCast instance, so a rejected-duplicate startup's exit handler will not signal the legitimate holder's Chrome.
297
+ killStaleChrome();
299
298
  }
300
299
  catch {
301
300
  // Best-effort process cleanup. If signaling fails for any reason, the process is exiting anyway.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -42,3 +42,4 @@ export declare function inferCodecFromTsBuffer(buffer: Buffer): Nullable<string>
42
42
  * @returns The inferred codec metadata.
43
43
  */
44
44
  export declare function inferMediaCodec(options: InferMediaCodecOptions): Promise<InferredCodec>;
45
+ //# sourceMappingURL=codecInference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codecInference.d.ts","sourceRoot":"","sources":["../../src/native/codecInference.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAiDlD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IAGrC,OAAO,EAAE,MAAM,CAAC;IAGhB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAG5B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CA2B3F;AAuMD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CA6DvE;AAiGD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,CAwC7F"}
@@ -6,14 +6,14 @@ import { LOG, chromeFetch } from "../utils/index.js";
6
6
  import { resolveUrl } from "./probe.js";
7
7
  /* Media-only HLS playlists do not declare codec information - that lives in the master playlist's #EXT-X-STREAM-INF CODECS attribute, which the master-playlist
8
8
  * resolver consumes today. For media-only feeds (no master playlist exists), the codec must be inferred from the segments themselves so the MediaFeed surfaces
9
- * the same codec/resolution metadata regardless of which playlist kind arrived. This module provides the inference seam.
9
+ * the same codec/resolution metadata regardless of which playlist kind arrived. This module provides the inference path for media-only playlists.
10
10
  *
11
11
  * The inference path supported in this module is the MPEG-TS Program Map Table (PMT). HLS streams using TS segments expose the elementary stream's stream_type
12
12
  * directly in the PMT, which is small enough to reach within the first ~2 KB of every segment. PMT-based inference is bounded, deterministic, and avoids the
13
13
  * complexity of full codec-config parsing (SPS NALU walking) because the stream_type byte alone is sufficient to label the codec for status display.
14
14
  *
15
15
  * fMP4 segments declare codec information in the moov box of an init segment referenced by #EXT-X-MAP. That path is intentionally out of scope for this module
16
- * and lives behind a clean extension seam: future work can dispatch on the segment's file extension or content type and call parseMoovCodecConfig() from
16
+ * and lives behind a clean extension point: future work can dispatch on the segment's file extension or content type and call parseMoovCodecConfig() from
17
17
  * src/streaming/mp4Parser.ts. Resolution is not inferred from TS segments because TS PMT does not carry resolution; recovering it would require parsing the SPS
18
18
  * NALU inside a video access unit, which is significantly heavier than the PMT-only walk this module performs.
19
19
  *
@@ -264,10 +264,51 @@ export function inferCodecFromTsBuffer(buffer) {
264
264
  }
265
265
  return TS_STREAM_TYPE_TO_CODEC[streamType] ?? null;
266
266
  }
267
+ /**
268
+ * Drains a fetch Response body and returns at most limit bytes. The reader is cancelled as soon as the limit is reached, so a CDN that ignored the Range header
269
+ * and is streaming a multi-megabyte segment is stopped after the prefix rather than fully buffered. When the body is not a readable stream (some runtimes and test
270
+ * doubles expose only arrayBuffer()), we fall back to reading the whole body and truncating, which still honors the byte cap on the returned Buffer.
271
+ *
272
+ * @param response - The fetch Response whose body holds the segment bytes.
273
+ * @param limit - The maximum number of bytes to retain.
274
+ * @returns A Buffer of at most limit bytes.
275
+ */
276
+ async function readStreamPrefix(response, limit) {
277
+ const body = response.body;
278
+ // Fall back to arrayBuffer() when there is no readable stream to iterate. We still enforce the cap by truncating the result, so the returned Buffer never exceeds
279
+ // the documented bound even though the full body was buffered.
280
+ if (!body) {
281
+ return Buffer.from(await response.arrayBuffer()).subarray(0, limit);
282
+ }
283
+ const reader = body.getReader();
284
+ const chunks = [];
285
+ let total = 0;
286
+ try {
287
+ while (total < limit) {
288
+ // The body is consumed sequentially from a single reader: each read resolves the next chunk in order and depends on the prior one, so it cannot be parallelized.
289
+ // eslint-disable-next-line no-await-in-loop -- sequential single-reader stream consumption.
290
+ const { done, value } = await reader.read();
291
+ if (done) {
292
+ break;
293
+ }
294
+ // Append only as many bytes as remain under the cap. A single chunk can overshoot the limit, so we slice it to the exact remaining budget and stop reading.
295
+ const remaining = limit - total;
296
+ const slice = value.byteLength > remaining ? Buffer.from(value.subarray(0, remaining)) : Buffer.from(value);
297
+ chunks.push(slice);
298
+ total += slice.length;
299
+ }
300
+ }
301
+ finally {
302
+ // Cancel the stream so the underlying connection is released once we have the prefix. We await the cancellation so the source's cancel callback runs before we
303
+ // return - both to release the connection deterministically and to stop any further pulls. Cancellation is best-effort; ignore any rejection.
304
+ await reader.cancel().catch(() => undefined);
305
+ }
306
+ return Buffer.concat(chunks, total);
307
+ }
267
308
  /**
268
309
  * Fetches the prefix of a TS segment so the caller can parse its PAT/PMT. Sends a Range header asking the CDN for the first MAX_SEGMENT_PROBE_BYTES; CDNs that
269
- * ignore Range fall through to returning the full segment, which still works because the parser only reads the prefix. Returns null on any HTTP or fetch error
270
- * so the inference can fail gracefully back to a null codec label.
310
+ * ignore Range and return the full segment are still bounded because readStreamPrefix() drains only the prefix and cancels the rest. Returns null on any HTTP or
311
+ * fetch error so the inference can fail gracefully back to a null codec label.
271
312
  *
272
313
  * @param url - The absolute segment URL.
273
314
  * @returns The fetched prefix, or null on failure.
@@ -283,7 +324,11 @@ async function fetchSegmentPrefix(url) {
283
324
  LOG.debug("native:codec", "Segment prefix fetch returned HTTP %s.", response.status);
284
325
  return null;
285
326
  }
286
- return Buffer.from(await response.arrayBuffer());
327
+ // Read at most MAX_SEGMENT_PROBE_BYTES regardless of what the server sent. A 206 honors the Range header and returns just the prefix, but a 200 means the CDN
328
+ // ignored Range and is streaming the entire segment (often several megabytes). Buffering the whole body via arrayBuffer() would contradict the documented bound
329
+ // and waste memory and bandwidth, so we drain the response stream chunk by chunk, stop once we have the prefix the parser needs, and cancel the rest.
330
+ const prefix = await readStreamPrefix(response, MAX_SEGMENT_PROBE_BYTES);
331
+ return prefix;
287
332
  }
288
333
  catch (error) {
289
334
  LOG.debug("native:codec", "Segment prefix fetch error: %s.", String(error));
@@ -1 +1 @@
1
- {"version":3,"file":"codecInference.js","sourceRoot":"","sources":["../../src/native/codecInference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codecInference.js","sourceRoot":"","sources":["../../src/native/codecInference.ts"],"names":[],"mappings":"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"}