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 @@
1
+ {"version":3,"file":"channelForm.d.ts","sourceRoot":"","sources":["../../src/config/channelForm.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKvE;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAQ7E;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAaxH;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAEpC,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,qBAAqB,CA8CrJ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CA0BpI"}
@@ -2,13 +2,14 @@ import { PREDEFINED_SUFFIX, getServiceGroup, resolvePredefinedVariant } from "./
2
2
  import { getChannelEffectiveTags, getEffectiveHdhrEnabled, sortTags } from "./userChannels.js";
3
3
  import { isDeepStrictEqual } from "node:util";
4
4
  /**
5
- * Case-insensitive order-independent comparison of two tag arrays. Delegates ordering to sortTags so the case-insensitive locale-aware sort policy lives in
6
- * exactly one place - this function is about equality, not ordering, and stays out of the "how do we sort tags" decision.
5
+ * Order-independent equality of two tag arrays. Ordering is delegated to sortTags (case-insensitive locale-aware sort) so that policy lives in exactly one place;
6
+ * the resulting arrays are then compared for exact, case-sensitive content equality. Only the ordering step is case-insensitive... value equality is case-sensitive,
7
+ * so ["abc"] and ["ABC"] are not equal here. This function is about equality, not ordering, and stays out of the "how do we sort tags" decision.
7
8
  * @param a - The first tag array.
8
9
  * @param b - The second tag array.
9
- * @returns True when the arrays contain the same tags under case-insensitive ordering.
10
+ * @returns True when the arrays contain the same tags, compared order-independently with case-sensitive value equality.
10
11
  */
11
- function tagsEqual(a, b) {
12
+ export function tagsEqual(a, b) {
12
13
  if (a.length !== b.length) {
13
14
  return false;
14
15
  }
@@ -16,16 +17,17 @@ function tagsEqual(a, b) {
16
17
  }
17
18
  /* Scalar field list shared by channelMatches and computePredefinedDelta. Keeping these in one const ensures both functions iterate the same field set, so adding
18
19
  * a new scalar field to ChannelFormValues requires a single-line addition here and nothing else. The `satisfies` constraint validates every entry is a real key
19
- * on both Channel (for reads via channelScalar) and ChannelDelta (for writes in computePredefinedDelta), so renaming or removing a field surfaces here at compile
20
+ * on both ResolvedChannel (for reads via channelScalar) and ChannelDelta (for writes in computePredefinedDelta), so renaming or removing a field surfaces here at compile
20
21
  * time rather than silently orphaning the iteration.
21
22
  */
22
23
  const FORM_SCALAR_FIELDS = [
23
- "channelNumber", "channelSelector", "guideTitle", "hdhrEnabled", "logoUrl", "name", "profile", "stationId", "url"
24
+ "channelNumber", "channelSelector", "forceCapture", "guideTitle", "hdhrEnabled", "logoUrl", "name", "profile", "stationId", "url"
24
25
  ];
25
26
  /**
26
27
  * Reads the comparable value for a scalar form field from a channel record. String fields default to "" when absent (matching the form's empty representation).
27
- * hdhrEnabled is derived as (value !== false), matching the form's default-true semantics. channelNumber stays number | undefined, matching the form's empty
28
- * representation. This normalization lets us compare form values against channel records with strict equality.
28
+ * hdhrEnabled is derived as (value !== false), matching the form's default-true semantics. forceCapture is derived as (value === true), matching its opposite
29
+ * default-false semantics. channelNumber stays number | undefined, matching the form's empty representation. This normalization lets us compare form values
30
+ * against channel records with strict equality.
29
31
  * @param channel - The channel to read from.
30
32
  * @param field - The scalar field name.
31
33
  * @returns The comparable value as a boolean, number, string, or undefined.
@@ -35,6 +37,10 @@ function channelScalar(channel, field) {
35
37
  case "channelNumber": {
36
38
  return channel.channelNumber;
37
39
  }
40
+ case "forceCapture": {
41
+ // Absent means the channel uses native extraction where it is eligible, so anything other than an explicit true reads as unchecked.
42
+ return channel.forceCapture === true;
43
+ }
38
44
  case "hdhrEnabled": {
39
45
  return getEffectiveHdhrEnabled(channel);
40
46
  }
@@ -66,7 +72,8 @@ export function channelMatches(channel, formValues, tags) {
66
72
  /**
67
73
  * Computes a ChannelDelta representing the difference between submitted form values and the predefined base. Fields that differ from the base are stored in the
68
74
  * delta; fields that are cleared (empty string or undefined) are stored as null so the normalizer preserves the explicit clear (absent field means inherit;
69
- * null means override to "no value"). Tags are compared separately against the base's effective tags and stored as null when cleared.
75
+ * null means override to "no value"). Tags are compared separately against the base's effective tags and stored as null when cleared. forceCapture is the one
76
+ * exception to the clearing rule: it stores only its enabled state, and leaving it out of the delta is what turns it off.
70
77
  * @param predefinedBase - The canonical predefined channel to diff against.
71
78
  * @param formValues - The normalized form values.
72
79
  * @param tags - The tag array submitted with the form. Internal comparison via tagsEqual sorts defensively; caller does not need to pre-sort.
@@ -82,14 +89,23 @@ export function computePredefinedDelta(predefinedBase, formValues, tags) {
82
89
  if (formValues[field] === channelScalar(predefinedBase, field)) {
83
90
  continue;
84
91
  }
92
+ hasChanges = true;
93
+ /* forceCapture stores only the enabled state and never a clearing null. No catalog entry declares the field, so the comparison base always reads false and
94
+ * the only way to reach this write is a checked box. Turning it off is expressed by leaving the field out of the delta: every save path through here
95
+ * replaces the stored entry wholesale, so omission is what clears it. The null-clearing idiom the other fields use matters in PATCH's merge-into-existing
96
+ * path, which this field deliberately does not join.
97
+ */
98
+ if (field === "forceCapture") {
99
+ deltaWrite[field] = true;
100
+ continue;
101
+ }
85
102
  const formVal = formValues[field];
86
103
  // Empty string or undefined means "clear this field" - store null so the normalizer preserves the explicit clear through the delta model.
87
104
  deltaWrite[field] = ((formVal === "") || (formVal === undefined)) ? null : formVal;
88
- hasChanges = true;
89
105
  }
90
106
  // Tags delta: compare against the base's effective (vocabulary-filtered) tags. Using effective tags prevents editing an unrelated field from baking a
91
- // vocabulary deletion into the stored delta. sortTags on the stored value mirrors PATCH and transformChannelTags, keeping the storage-order invariant that the
92
- // channels normalizer's JSON.stringify equality relies on.
107
+ // vocabulary deletion into the stored delta. sortTags on the stored value mirrors PATCH and transformChannelTags, keeping the storage order that the channels
108
+ // normalizer's JSON.stringify equality relies on.
93
109
  if (!tagsEqual(tags, getChannelEffectiveTags(predefinedBase))) {
94
110
  delta.tags = (tags.length > 0) ? sortTags(tags) : null;
95
111
  hasChanges = true;
@@ -1 +1 @@
1
- {"version":3,"file":"channelForm.js","sourceRoot":"","sources":["../../src/config/channelForm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channelForm.js","sourceRoot":"","sources":["../../src/config/channelForm.ts"],"names":[],"mappings":"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"}
@@ -5,3 +5,4 @@
5
5
  * Auto-fix failures are themselves logged but do not propagate. The probe is best-effort hygiene; a failure here must not bring down the server.
6
6
  */
7
7
  export declare function runConsistencyProbeAtStartup(): Promise<void>;
8
+ //# sourceMappingURL=consistencyProbe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consistencyProbe.d.ts","sourceRoot":"","sources":["../../src/config/consistencyProbe.ts"],"names":[],"mappings":"AAmKA;;;;;GAKG;AACH,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAgDlE"}
@@ -2,29 +2,30 @@
2
2
  *
3
3
  * consistencyProbe.ts: Cross-store consistency probe for PrismCast persistence.
4
4
  *
5
- * The probe runs once at startup after every initialize* function has loaded its store. It validates "foreign-key-style" invariants that span multiple stores
5
+ * The probe runs once at startup after every initialize* function has loaded its store. It validates "foreign-key-style" constraints that span multiple stores
6
6
  * - things the per-store schema migrations cannot enforce because they only see one file at a time:
7
7
  *
8
- * - Service selections (in channels.json) reference variants that exist in the rebuilt service group taxonomy.
9
8
  * - Variant entries with a canonicalKey (in channels.json) reference a canonical that exists in PREDEFINED_CHANNELS or the user's stored channels.
10
- * - User domain mappings (in profiles.json) reference profiles that exist as built-in or user-defined.
9
+ * - User domain mappings (in profiles.json) reference profiles that exist as builtin or user-defined.
11
10
  * - The service tag filter (in config.json's channels.enabledServices) contains only recognized service tags.
12
11
  *
13
12
  * Each issue is logged loudly and, when an auto-fix is provided, applied immediately. Auto-fixes that need to mutate persistent state go through the same
14
13
  * mutate* functions as user code so the integrity validators and snapshot machinery cover them too.
15
14
  *
16
- * Adding a new check is a single function returning ConsistencyIssue[]; collectConsistencyIssues fans out to every check in parallel.
15
+ * Adding a new check is a single function returning ConsistencyIssue[]; collectConsistencyIssues calls each registered check function and aggregates the
16
+ * results into one array.
17
17
  */
18
+ import { LOG, formatError } from "../utils/index.js";
18
19
  import { getAllServiceTags, mutateEnabledServices } from "./services.js";
20
+ import { getUserDomains, getUserProfiles } from "./userProfiles.js";
19
21
  import { CONFIG } from "./index.js";
20
- import { LOG } from "../utils/index.js";
21
22
  import { PREDEFINED_CHANNELS } from "../channels/index.js";
22
23
  import { getBuiltinProfile } from "./sites.js";
23
24
  import { getStoredUserChannels } from "./userChannels.js";
24
- import { getUserDomains } from "./userProfiles.js";
25
25
  /**
26
- * Validates that every service tag in CONFIG.channels.enabledServices is recognized. Strips and persists unknown tags. Mirrors the runtime cleanup that
27
- * already happens in initializeUserChannels, but persists the cleanup so the on-disk file no longer carries stale tags between boots.
26
+ * Validates that every service tag in CONFIG.channels.enabledServices is recognized, and when unknown tags remain its auto-fix persists the cleaned list through
27
+ * mutateEnabledServices. In practice initializeUserChannels already strips unrecognized tags from the in-memory CONFIG.channels.enabledServices before the probe
28
+ * runs - a memory-only cleanup that does not rewrite config.json - so the probe usually sees a clean list and the persisting auto-fix does not fire.
28
29
  */
29
30
  function checkServiceTagFilter() {
30
31
  if (CONFIG.channels.enabledServices.length === 0) {
@@ -71,17 +72,20 @@ function checkVariantCanonicals() {
71
72
  return issues;
72
73
  }
73
74
  /**
74
- * Validates that every user domain mapping references a profile that exists either as a built-in or user-defined profile.
75
+ * Validates that every user domain mapping references a profile that exists - either a builtin profile (getBuiltinProfile) or a user-defined one (getUserProfiles).
75
76
  */
76
77
  function checkDomainProfiles() {
77
78
  const issues = [];
78
79
  const userDomains = getUserDomains();
80
+ const userProfiles = getUserProfiles();
79
81
  for (const [domain, config] of Object.entries(userDomains)) {
80
82
  const profileKey = config.profile;
81
83
  if (!profileKey) {
82
84
  continue;
83
85
  }
84
- if (getBuiltinProfile(profileKey)) {
86
+ // A domain mapping may target either a builtin profile or a user-defined one - the save-path validator (validateDomain) accepts both - so we consult both
87
+ // tables here. Checking only builtins would raise a false "missing profile" warning for a perfectly valid mapping onto a user-created profile.
88
+ if (getBuiltinProfile(profileKey) || userProfiles[profileKey]) {
85
89
  continue;
86
90
  }
87
91
  issues.push({
@@ -93,7 +97,7 @@ function checkDomainProfiles() {
93
97
  return issues;
94
98
  }
95
99
  /**
96
- * Aggregates issues from every consistency check. New checks should be added here as additional collector calls.
100
+ * Aggregates issues from each registered check function. New checks are added here as an additional call in the same list.
97
101
  */
98
102
  function collectConsistencyIssues() {
99
103
  return [
@@ -115,8 +119,8 @@ export async function runConsistencyProbeAtStartup() {
115
119
  }
116
120
  for (const issue of issues) {
117
121
  const message = "Consistency probe (" + issue.category + ", " + issue.severity + "): " + issue.description;
118
- // Defensive: no current checker emits severity:"error" - all three checks return "warning" issues. The branch exists so a future check that needs operator
119
- // attention rather than auto-cleanup can mark itself error and surface accordingly. Pin via a future test seam if/when an error-severity check is added.
122
+ // Defensive: no current checker emits severity:"error" - every check returns "warning" issues. The branch exists so a future check that needs operator
123
+ // attention rather than auto-cleanup can mark itself error and surface accordingly. Add a test to pin this behavior once an error-severity check exists.
120
124
  if (issue.severity === "error") {
121
125
  LOG.error(message);
122
126
  }
@@ -124,15 +128,17 @@ export async function runConsistencyProbeAtStartup() {
124
128
  LOG.warn(message);
125
129
  }
126
130
  }
127
- // Run auto-fixes in parallel. Each fix is independent and a failure on one does not block the others.
128
- await Promise.all(issues.filter((issue) => (issue.severity === "warning") && issue.autoFix).map(async (issue) => {
129
- try {
130
- await issue.autoFix?.();
131
+ // Run auto-fixes in parallel via Promise.allSettled - each fix is independent and a failure on one must not block the others. We iterate the eligible issues
132
+ // and look up each settlement by index (length-paired by construction; Promise.allSettled preserves input order and arity), logging rejected reasons as
133
+ // warnings while leaving successful fixes intact.
134
+ const eligible = issues.filter((issue) => (issue.severity === "warning") && issue.autoFix);
135
+ const results = await Promise.allSettled(eligible.map(async (issue) => issue.autoFix?.()));
136
+ for (const [index, issue] of eligible.entries()) {
137
+ const result = results[index];
138
+ if (result?.status === "rejected") {
139
+ LOG.warn("Consistency probe auto-fix failed for %s: %s.", issue.category, formatError(result.reason));
131
140
  }
132
- catch (error) {
133
- LOG.warn("Consistency probe auto-fix failed for %s: %s.", issue.category, (error instanceof Error) ? error.message : String(error));
134
- }
135
- }));
141
+ }
136
142
  // Defensive: paired with the per-issue severity dispatch above. No checker currently emits severity:"error", so this aggregate report is unreachable today;
137
143
  // it remains in place so a future error-severity check produces the operator-visible summary line without any further wiring.
138
144
  const errors = issues.filter((issue) => issue.severity === "error").length;
@@ -1 +1 @@
1
- {"version":3,"file":"consistencyProbe.js","sourceRoot":"","sources":["../../src/config/consistencyProbe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consistencyProbe.js","sourceRoot":"","sources":["../../src/config/consistencyProbe.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,24 @@
1
1
  import type { Nullable } from "../types/index.ts";
2
2
  type HealthStatus = "failed" | "success";
3
+ /**
4
+ * Authentication status for a domain. "verified" means success evidence exists within the TTL window; "needsLogin" means a confirmed provider auth wall was observed
5
+ * and the user must sign in. The unknown state is represented by the absence of an entry.
6
+ */
7
+ export type DomainAuthStatus = "needsLogin" | "verified";
8
+ /**
9
+ * A domain's authentication state entry.
10
+ */
11
+ export interface DomainAuthEntry {
12
+ status: DomainAuthStatus;
13
+ timestamp: number;
14
+ }
3
15
  /**
4
16
  * Event payload emitted when channel health or domain auth state changes.
5
17
  */
6
18
  export interface HealthEvent {
7
19
  channelKey: string;
8
20
  domain: string;
9
- status: HealthStatus;
21
+ status: HealthStatus | "needsLogin";
10
22
  timestamp: number;
11
23
  }
12
24
  /**
@@ -18,13 +30,20 @@ export interface HealthSnapshot {
18
30
  status: HealthStatus;
19
31
  timestamp: number;
20
32
  }>;
21
- domains: Record<string, number>;
33
+ domains: Record<string, DomainAuthEntry>;
22
34
  }
23
35
  /**
24
- * Loads the health state from health.json into memory. Entries older than HEALTH_TTL are pruned during loading. Called once at startup from app.ts. Captures
25
- * a versioned snapshot of the file before reading so a release-introduced regression has a guaranteed restore point.
36
+ * Loads the health state from health.json into memory. Expired entries are pruned during loading. Called once at startup from app.ts. Loading is also what arms
37
+ * persistence - writeHealthState serializes the in-memory maps only once this function has hydrated them from disk.
26
38
  */
27
39
  export declare function loadHealthState(): Promise<void>;
40
+ /**
41
+ * Flushes the health state to disk immediately, cancelling any pending debounced write and awaiting the on-disk write. Called during graceful shutdown so the final
42
+ * health update is durably written even when the process exits inside the FLUSH_DELAY debounce window. Writing unconditionally (rather than only when a debounce is
43
+ * pending) also drains any in-flight mutation behind the store's serialization queue, guaranteeing the on-disk record matches the final in-memory state.
44
+ * @returns A promise that resolves when the final health-state write has committed.
45
+ */
46
+ export declare function flushHealthStateNow(): Promise<void>;
28
47
  /**
29
48
  * Records a successful tune for a channel. Sets the channel's health to "success" and optionally marks the domain as verified (authenticated). Triggers a debounced
30
49
  * flush. The markAuth parameter allows callers to skip domain auth marking when a successful tune does not prove paid access (e.g., Sling Freestream channels succeed
@@ -40,6 +59,19 @@ export declare function markChannelSuccess(channelKey: string, domain: string, m
40
59
  * @param domain - The domain to mark as authenticated.
41
60
  */
42
61
  export declare function markDomainAuth(domain: string): void;
62
+ /**
63
+ * Records that a domain needs sign-in. Used when a confirmed provider authentication wall is observed during channel discovery. Overwrites any existing entry for
64
+ * the domain, triggers a debounced flush, and emits a health event with an empty channelKey and the "needsLogin" status.
65
+ * @param domain - The domain that needs sign-in.
66
+ */
67
+ export declare function markDomainAuthRequired(domain: string): void;
68
+ /**
69
+ * Clears a domain's needs-sign-in entry, returning the domain to the unknown state. Used when a non-empty discovery proves the auth wall is gone but the provider's
70
+ * validation cannot prove paid access (e.g., Sling's free-tier lineup appears without a subscription) - the red state must not outlive the wall it reported, but the
71
+ * domain has not earned verified either. A no-op unless the domain's current state is needs-sign-in: verified entries are never deleted by unproven-access evidence.
72
+ * @param domain - The domain whose needs-sign-in entry should be cleared.
73
+ */
74
+ export declare function clearDomainAuthRequirement(domain: string): void;
43
75
  /**
44
76
  * Records a failed tune for a channel. Sets the channel's health to "failed". Does not affect domain auth - a single channel failure doesn't prove the domain is
45
77
  * unauthenticated. Triggers a debounced flush.
@@ -59,12 +91,12 @@ export declare function getChannelHealth(channelKey: string, domain: string): Nu
59
91
  timestamp: number;
60
92
  }>;
61
93
  /**
62
- * Returns the timestamp when a domain was last verified as authenticated, or null if unknown. Verification is proven by at least one successful tune within the TTL
63
- * window. A non-null return means the domain is verified; the value is the Unix millisecond timestamp of the most recent successful tune.
94
+ * Returns a domain's authentication state entry, or null when the domain is unknown (no entry, or a verified entry older than the TTL). Needs-sign-in entries are
95
+ * exempt from the TTL per the module's status-aware expiry rule.
64
96
  * @param domain - The domain to check.
65
- * @returns Timestamp of last verification, or null if unknown (no entry or stale).
97
+ * @returns The domain's auth entry, or null if unknown.
66
98
  */
67
- export declare function getDomainAuth(domain: string): Nullable<number>;
99
+ export declare function getDomainAuthState(domain: string): Nullable<DomainAuthEntry>;
68
100
  /**
69
101
  * Returns a snapshot of current health state for SSE initial payloads. Stale entries (older than HEALTH_TTL) are excluded.
70
102
  * @returns Snapshot with channel health and domain auth maps.
@@ -77,3 +109,4 @@ export declare function getHealthSnapshot(): HealthSnapshot;
77
109
  */
78
110
  export declare function subscribeToHealth(callback: (event: HealthEvent) => void): () => void;
79
111
  export {};
112
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/config/health.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA+BlD,KAAK,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,UAAU,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,eAAe;IAG9B,MAAM,EAAE,gBAAgB,CAAC;IAGzB,SAAS,EAAE,MAAM,CAAC;CACnB;AA4BD;;GAEG;AACH,MAAM,WAAW,WAAW;IAE1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,GAAG,YAAY,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1C;AA0KD;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA0CrD;AAsDD;;;;;GAKG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBzD;AAgCD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,IAAI,CAgB5F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGnD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ3D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ/D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ3E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB1H;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,CAmB5E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAoBlD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAUpF"}