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
@@ -2,3 +2,4 @@ export { generateChannelsSubtabScript } from "./channels.ts";
2
2
  export { generateConfigSubtabScript } from "./config.ts";
3
3
  export { generateSharedUtilitiesScript } from "./shared.ts";
4
4
  export { generateStatusScript } from "./status.ts";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/routes/root/scripts/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -4,3 +4,4 @@
4
4
  * @returns HTML script block with shared utility functions.
5
5
  */
6
6
  export declare function generateSharedUtilitiesScript(): string;
7
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/routes/root/scripts/shared.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CAmzBtD"}
@@ -3,6 +3,9 @@
3
3
  * shared.ts: Shared client-side utilities for all tabs. This script runs before any tab-specific script so that cross-tab functions (toast notifications,
4
4
  * dropdown menus, channel display rendering) are available during both initialization and event handling.
5
5
  */
6
+ import { ACTIONS } from "../../clientActions.js";
7
+ import { generateClientEscapeAssignment } from "./clientEscape.js";
8
+ import { generateClientSafeUrlAssignment } from "./clientUrl.js";
6
9
  /**
7
10
  * Generates the shared utilities script block containing cross-tab client-side functions. Runs before all tab-specific scripts to eliminate execution order
8
11
  * dependencies. Functions are exposed on window for access from any script context or inline event handler.
@@ -12,6 +15,68 @@ export function generateSharedUtilitiesScript() {
12
15
  return [
13
16
  "<script>",
14
17
  "(function() {",
18
+ /* Client-side render-safety single sources of truth, installed first in the shared utilities IIFE so window.escapeHtml and window.safeUrl are defined before any
19
+ * client script runs: shared.ts's own channel/service renderers below, the status display, the channels wizards, the config changelog, and the inline log viewer
20
+ * all route their escaping through them. escapeHtml encodes a value for an HTML text or attribute context (generated from clientEscapeHtml, which a byte-parity
21
+ * guard pins identical to the server-side markup.escapeHtml); safeUrl vets a URL's scheme before it is placed in a URL-bearing attribute (generated from
22
+ * clientSafeUrl). They are independent and composable - escapeHtml(safeUrl(url)) for a URL attribute. The local const bindings let the renderers in this IIFE
23
+ * call them without a global property lookup.
24
+ */
25
+ generateClientEscapeAssignment(),
26
+ generateClientSafeUrlAssignment(),
27
+ /* Action dispatcher. The single project-wide primitive for event handling. Subsystems register named handlers via window.registerAction(name, handler), and
28
+ * one document-level delegated listener routes click / change / keydown / submit events to the registered handler. Triggers declare their intent on the
29
+ * element via data-<event>-action="name" (with optional sibling data-* attributes for per-instance arguments).
30
+ *
31
+ * Event mechanics are also declarative AND event-type-scoped, symmetric with actions: data-<event>-prevent-default calls event.preventDefault(),
32
+ * data-<event>-stop-propagation calls event.stopPropagation(), data-<event>-close-dropdown closes any open dropdown menus. Each modifier fires only for
33
+ * the event type encoded in its attribute name, so a <form data-submit-prevent-default> prevents the form's submit default without affecting keydown
34
+ * events on input fields inside the form. The event-type-in-the-name shape is self-documenting and uniform with data-<event>-action: one mental model
35
+ * for "when does this fire", expressed entirely in the attribute name.
36
+ *
37
+ * The registration API enforces uniqueness - a second registerAction call for an already-registered name throws, so silent overwrites are impossible.
38
+ * When a click/change/etc. lands on an element carrying a data-<event>-action whose value is not registered, the dispatcher logs a console warning
39
+ * naming the missing action - typos surface fast.
40
+ */
41
+ " const actionHandlers = new Map();",
42
+ " window.registerAction = (name, handler) => {",
43
+ " if(actionHandlers.has(name)) {",
44
+ " throw new Error('Action \"' + name + '\" is already registered. Action names must be globally unique.');",
45
+ " }",
46
+ " actionHandlers.set(name, handler);",
47
+ " };",
48
+ /* Modifier handling runs in the capture phase so stopPropagation actually stops further propagation. Capture phase fires from document down to target -
49
+ * before any element-level listener between the document and the trigger - so stopPropagation called here prevents intermediate bubble-phase listeners
50
+ * from firing. preventDefault and close-dropdown are side-effect modifiers that work equally well in either phase but live here for cohesion: every
51
+ * declarative modifier flows through one listener. The selector is built from event.type so each modifier fires only for its own event type.
52
+ */
53
+ " const dispatchModifiers = (event) => {",
54
+ " const prefix = 'data-' + event.type + '-';",
55
+ " const modTarget = event.target.closest('[' + prefix + 'prevent-default], [' + prefix + 'stop-propagation], [' + prefix + 'close-dropdown]');",
56
+ " if(!modTarget) return;",
57
+ " if(modTarget.hasAttribute(prefix + 'prevent-default')) event.preventDefault();",
58
+ " if(modTarget.hasAttribute(prefix + 'stop-propagation')) event.stopPropagation();",
59
+ " if(modTarget.hasAttribute(prefix + 'close-dropdown') && window.dropdowns) window.dropdowns.close();",
60
+ " };",
61
+ /* Action dispatch runs in the bubble phase so element-level listeners get a chance to fire first. Action handlers see the event after the element-level
62
+ * processing has run. Missing handlers log a console warning so typos surface fast.
63
+ */
64
+ " const dispatchAction = (event) => {",
65
+ " const attrName = 'data-' + event.type + '-action';",
66
+ " const target = event.target.closest('[' + attrName + ']');",
67
+ " if(!target) return;",
68
+ " const action = target.getAttribute(attrName);",
69
+ " const handler = actionHandlers.get(action);",
70
+ " if(handler) {",
71
+ " handler(target, event);",
72
+ " } else {",
73
+ " console.warn('No handler registered for ' + attrName + '=\"' + action + '\".');",
74
+ " }",
75
+ " };",
76
+ " for(const type of [ 'click', 'change', 'keydown', 'submit' ]) {",
77
+ " document.addEventListener(type, dispatchModifiers, { capture: true });",
78
+ " document.addEventListener(type, dispatchAction);",
79
+ " }",
15
80
  // Show a toast notification. Auto-dismiss durations: success/info = 5s, warning = 8s, error = no auto-dismiss. Optional action: { label, onclick } appends an
16
81
  // inline button between the message text and the close button.
17
82
  " function showToast(message, type, duration, action) {",
@@ -41,10 +106,11 @@ export function generateSharedUtilitiesScript() {
41
106
  " if(ms > 0) { setTimeout(() => { dismissToast(toast); }, ms); }",
42
107
  " }",
43
108
  " window.showToast = showToast;",
44
- /* Single source of truth for extracting a user-facing error message from a server error response. The envelope emits two shapes: { error: string } for
45
- * top-level failures (validation, not-found, conflict, server error) and { errors: Record<field, message> } for form submissions that surface multiple
46
- * field errors at once. Callers pass a fallback string for the rare case where neither field is present. Every client that handles a !success response
47
- * flows through this helper so error-reading logic lives in one place instead of drifting per call site.
109
+ /* Single source of truth for extracting a user-facing error message from a server error response. The envelope emits two shapes: a top-level message,
110
+ * carried as either { error: string } or { message: string } for failures (validation, not-found, conflict, server error), and { errors: Record<field,
111
+ * message> } for form submissions that surface multiple field errors at once. The helper reads errors first, then error, then message, so it consults
112
+ * all three fields. Callers pass a fallback string for the rare case where none of them is present. Every client that handles a !success response flows
113
+ * through this helper so error-reading logic lives in one place instead of drifting per call site.
48
114
  */
49
115
  " window.extractErrorMessage = (response, fallback) => {",
50
116
  " if(response && response.errors) {",
@@ -191,7 +257,8 @@ export function generateSharedUtilitiesScript() {
191
257
  " window.positionPortal = positionPortal;",
192
258
  // Layer 2: Dropdown toggle with lifecycle hooks. Manages portal append, toggle state, scroll/resize dismissal, and optional lifecycle callbacks. The
193
259
  // zero-argument form (toggleDropdown(btn)) works unchanged for standard dropdowns. The options form adds: menu (explicit menu element), onOpen (called
194
- // after show but before positioning so content can be set and measured correctly for viewport clamping).
260
+ // after show but before positioning so content can be set and measured correctly for viewport clamping). btn._portalMenu caches the resolved menu on
261
+ // first open because once the menu is portaled to document.body, btn.nextElementSibling no longer points to it.
195
262
  " window.toggleDropdown = (btn, opts) => {",
196
263
  " const o = opts || {};",
197
264
  " const menu = btn._portalMenu || o.menu || btn.nextElementSibling;",
@@ -213,20 +280,24 @@ export function generateSharedUtilitiesScript() {
213
280
  " window.addEventListener('resize', closeAllDropdowns);",
214
281
  " };",
215
282
  // Shared channel display renderer with three modes. The mode parameter controls presentation: 'logo' (default) shows the logo with text as an onerror
216
- // fallback, 'both' shows the logo and text side by side with onerror hiding the broken image, 'text' shows only the text and ignores the logo URL.
283
+ // fallback, 'both' shows the logo and text side by side with onerror hiding the broken image, 'text' shows only the text and ignores the logo URL. The name is
284
+ // escaped once through the shared escapeHtml SSOT and reused for both the text span and the title/alt attributes, so callers pass raw names and this is the one
285
+ // escape boundary for channel names regardless of the call site (status popover, channels table logos, browse wizard).
217
286
  " window.channelDisplayHtml = (logoUrl, name, logoClass, textClass, mode) => {",
218
287
  " const m = mode || 'logo';",
288
+ " const safeName = escapeHtml(name);",
219
289
  " if((m === 'text') || !logoUrl) {",
220
- " return '<span class=\"' + textClass + '\">' + name + '</span>';",
290
+ " return '<span class=\"' + textClass + '\">' + safeName + '</span>';",
221
291
  " }",
292
+ " const safeLogo = escapeHtml(safeUrl(logoUrl));",
222
293
  " if(m === 'both') {",
223
- " return '<img src=\"' + logoUrl + '\" class=\"' + logoClass + '\" alt=\"\" title=\"' + name + '\" ' +",
294
+ " return '<img src=\"' + safeLogo + '\" class=\"' + logoClass + '\" alt=\"\" title=\"' + safeName + '\" ' +",
224
295
  " 'onerror=\"imgFallback(this)\">' +",
225
- " '<span class=\"' + textClass + '\">' + name + '</span>';",
296
+ " '<span class=\"' + textClass + '\">' + safeName + '</span>';",
226
297
  " }",
227
- " return '<img src=\"' + logoUrl + '\" class=\"' + logoClass + '\" alt=\"' + name + '\" title=\"' + name + '\" ' +",
298
+ " return '<img src=\"' + safeLogo + '\" class=\"' + logoClass + '\" alt=\"' + safeName + '\" title=\"' + safeName + '\" ' +",
228
299
  " 'onerror=\"imgFallback(this)\">' +",
229
- " '<span class=\"' + textClass + '\" style=\"display:none\">' + name + '</span>';",
300
+ " '<span class=\"' + textClass + '\" style=\"display:none\">' + safeName + '</span>';",
230
301
  " };",
231
302
  // Image fallback handler. Reads pipe-separated fallback URLs from a data-fallbacks attribute and tries each in sequence on error. When all fallbacks are
232
303
  // exhausted, hides the image and reveals the text sibling if it was hidden (logo mode).
@@ -243,24 +314,31 @@ export function generateSharedUtilitiesScript() {
243
314
  " }",
244
315
  " };",
245
316
  // Service icon renderer with three modes, mirroring channelDisplayHtml. The icon source chain is: iconUrl (if specified) -> Apple touch icon -> favicon.
246
- // Fallback URLs are stored in a data-fallbacks attribute and processed by the shared imgFallback handler.
317
+ // Fallback URLs are stored in a data-fallbacks attribute and processed by the shared imgFallback handler. As with channelDisplayHtml, the name is escaped once
318
+ // through the shared escapeHtml SSOT and reused for the text span and the title/alt attributes, so callers pass raw service names.
247
319
  " window.serviceIconHtml = (domain, name, iconClass, textClass, mode, iconUrl) => {",
248
320
  " const m = mode || 'logo';",
321
+ " const safeName = escapeHtml(name);",
249
322
  " if((m === 'text') || !domain) {",
250
- " return '<span class=\"' + textClass + '\">' + name + '</span>';",
323
+ " return '<span class=\"' + textClass + '\">' + safeName + '</span>';",
251
324
  " }",
252
325
  " const touchIcon = 'https://' + domain + '/apple-touch-icon.png';",
253
326
  " const favicon = 'https://' + domain + '/favicon.ico';",
254
327
  " const src = iconUrl || touchIcon;",
255
328
  " const fallbacks = (iconUrl ? [ touchIcon, favicon ] : [ favicon ]).join('|');",
329
+ // The src is scheme-vetted (an iconUrl can be an arbitrary configured URL) and then escaped; the fallback list is built from the domain over a hardcoded https
330
+ // scheme so it only needs escaping for the attribute. imgFallback reads the decoded data-fallbacks values back into img.src, so escaping here keeps the attribute
331
+ // safe without altering the URLs imgFallback ultimately loads.
332
+ " const safeSrc = escapeHtml(safeUrl(src));",
333
+ " const safeFallbacks = escapeHtml(fallbacks);",
256
334
  " if(m === 'both') {",
257
- " return '<img src=\"' + src + '\" class=\"' + iconClass + '\" alt=\"\" title=\"' + name + '\" ' +",
258
- " 'data-fallbacks=\"' + fallbacks + '\" onerror=\"imgFallback(this)\">' +",
259
- " '<span class=\"' + textClass + '\">' + name + '</span>';",
335
+ " return '<img src=\"' + safeSrc + '\" class=\"' + iconClass + '\" alt=\"\" title=\"' + safeName + '\" ' +",
336
+ " 'data-fallbacks=\"' + safeFallbacks + '\" onerror=\"imgFallback(this)\">' +",
337
+ " '<span class=\"' + textClass + '\">' + safeName + '</span>';",
260
338
  " }",
261
- " return '<img src=\"' + src + '\" class=\"' + iconClass + '\" alt=\"' + name + '\" title=\"' + name + '\" ' +",
262
- " 'data-fallbacks=\"' + fallbacks + '\" onerror=\"imgFallback(this)\">' +",
263
- " '<span class=\"' + textClass + '\" style=\"display:none\">' + name + '</span>';",
339
+ " return '<img src=\"' + safeSrc + '\" class=\"' + iconClass + '\" alt=\"' + safeName + '\" title=\"' + safeName + '\" ' +",
340
+ " 'data-fallbacks=\"' + safeFallbacks + '\" onerror=\"imgFallback(this)\">' +",
341
+ " '<span class=\"' + textClass + '\" style=\"display:none\">' + safeName + '</span>';",
264
342
  " };",
265
343
  // Process service display spans. Finds all .provider-display elements and renders them via serviceIconHtml in 'both' mode. Called on page load and after
266
344
  // any DOM mutation that introduces new service display elements (chip rebuild, filter updates).
@@ -282,7 +360,7 @@ export function generateSharedUtilitiesScript() {
282
360
  // a state object for the caller to store wizard-specific data (e.g., selected providers, form values). State is reset to {} on close.
283
361
  //
284
362
  // Config shape: { contentId, errorId?, modalId, onClose?, onRender, onValidate, stepCount, stepsId?, titleId? }
285
- // - contentId: ID of the wizard-content div.
363
+ // - contentId: ID of the wizard-content div. Accepted for shape parity with the server-side wizard shell but not read by this controller.
286
364
  // - errorId: ID of the wizard-error div (optional, omit for modals without validation).
287
365
  // - modalId: ID of the wizard-modal root div.
288
366
  // - onClose: Optional callback invoked when close() is called, before hiding the modal.
@@ -359,7 +437,8 @@ export function generateSharedUtilitiesScript() {
359
437
  " return currentStep;",
360
438
  " },",
361
439
  // Navigate to a specific step by clicking the step indicator. Going backward is always allowed for visited steps. Going forward validates the current step
362
- // and only allows jumps to previously visited steps. Supports async validation - returns a Promise when onValidate is async.
440
+ // and only allows jumps to previously visited steps. Always returns a Promise, since validateAndAdvance is itself async; it resolves to false if validation
441
+ // failed, regardless of whether onValidate is sync or async.
363
442
  " goToStep(n) {",
364
443
  " if(n === currentStep) return;",
365
444
  " if(n > highestStep) return;",
@@ -374,7 +453,8 @@ export function generateSharedUtilitiesScript() {
374
453
  " const el = document.getElementById(id);",
375
454
  " if(el) el.style.display = 'none';",
376
455
  " },",
377
- // Navigate forward one step. Validates the current step first. Returns false (sync) or a Promise resolving to false (async) if validation failed.
456
+ // Navigate forward one step. Validates the current step first. Always returns a Promise, since validateAndAdvance is itself async; it resolves to false
457
+ // if validation failed, regardless of whether onValidate is sync or async.
378
458
  " next() {",
379
459
  " if(currentStep >= config.stepCount) return true;",
380
460
  " return validateAndAdvance(currentStep + 1);",
@@ -432,9 +512,9 @@ export function generateSharedUtilitiesScript() {
432
512
  */
433
513
  " window.channelTable = {",
434
514
  /* Cached column index map for _getSortValue. Built lazily on first access by scanning the table header row's data-sort-field attributes, then held for
435
- * the page lifetime with no invalidation path. This relies on a load-bearing invariant: the channel table header is rendered once by the server and
436
- * never rebuilt client-side - only CSS visibility classes are toggled by toggleColumn, never DOM structure. Do not introduce dynamic thead mutation
437
- * without also adding an explicit cache invalidation (e.g., set _colIndexCache = null after rewriting the header row).
515
+ * the page lifetime with no invalidation path. Do not introduce dynamic thead mutation without also adding cache invalidation - the column-index cache
516
+ * assumes the header is rendered once by the server and never rebuilt client-side - only CSS visibility classes are toggled by toggleColumn, never DOM
517
+ * structure. If that assumption changes, set _colIndexCache = null after rewriting the header row.
438
518
  */
439
519
  " _colIndexCache: null,",
440
520
  // Read the server-stamped sort value from a row's cell for a given field. Private helper used by sort() and insertRow() to compute insertion order.
@@ -569,7 +649,7 @@ export function generateSharedUtilitiesScript() {
569
649
  *
570
650
  * Cache lifecycle: _allOptions is attached to the DOM select element itself, so its lifetime is tied to that element. Row replacement via insertRow() drops
571
651
  * the old row (and its select) and inserts fresh server-rendered HTML, which transparently resets the cache with whatever option set the server just sent.
572
- * This invariant is load-bearing - do not refactor insertRow() into an in-place row update without also adding an explicit cache invalidation path here.
652
+ * Refactoring insertRow() into an in-place row update would silently keep the stale _allOptions cache - add explicit invalidation if you do.
573
653
  */
574
654
  " filter(enabledTags) {",
575
655
  " const rows = document.querySelectorAll('tr[data-provider-tags]');",
@@ -678,6 +758,12 @@ export function generateSharedUtilitiesScript() {
678
758
  " }",
679
759
  " }",
680
760
  " };",
761
+ /* Action registrations. The cross-cutting actions bound to functions defined in this same script (toggleDropdown, channelTable.sort). Each subsystem
762
+ * registers its own actions in its corresponding script file; this block keeps shared-utility actions colocated with their definitions. Event mechanics
763
+ * (preventDefault, stopPropagation, close-dropdown) live declaratively on the trigger element, not in these handler bodies.
764
+ */
765
+ " window.registerAction('" + ACTIONS.channelTableSort + "', (target) => channelTable.sort(target.dataset.field));",
766
+ " window.registerAction('" + ACTIONS.toggleDropdown + "', (target) => toggleDropdown(target));",
681
767
  "})();",
682
768
  "</script>"
683
769
  ].join("\n");
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/routes/root/scripts/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/routes/root/scripts/shared.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,4 @@
3
3
  * @returns The script string.
4
4
  */
5
5
  export declare function generateStatusScript(): string;
6
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../src/routes/root/scripts/status.ts"],"names":[],"mappings":"AAwBA;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CA4F7C"}
@@ -43,10 +43,12 @@ export interface SystemSummary {
43
43
  };
44
44
  }
45
45
  /**
46
- * The shape of the snapshot SSE payload. snapshot is the only event that delivers the full state in one message; subsequent events are deltas.
46
+ * The shape of the snapshot SSE payload. snapshot is the only event that delivers the full state in one message; subsequent events are deltas. The channel
47
+ * table catch-up patch is opaque at this layer - the server composes it via buildSnapshotChannelPatch and the client routes it through channelTable.applyPatch
48
+ * without inspecting its shape.
47
49
  */
48
50
  export interface SnapshotPayload {
49
- readonly health?: HealthSnapshot;
51
+ readonly channelPatch?: unknown;
50
52
  readonly streams: readonly StreamSummary[];
51
53
  readonly system: SystemSummary;
52
54
  }
@@ -56,26 +58,6 @@ export interface SnapshotPayload {
56
58
  export interface StreamRemovedPayload {
57
59
  readonly id: number | string;
58
60
  }
59
- /**
60
- * The shape of the healthChanged SSE payload. Carries the per-channel update plus the domain that owns the auth context.
61
- */
62
- export interface HealthChangedPayload {
63
- readonly channelKey: string;
64
- readonly domain?: string;
65
- readonly status: "failed" | "success";
66
- readonly timestamp: number;
67
- }
68
- /**
69
- * Health snapshot delivered inside the snapshot event. Channels and domains are independent maps keyed by their respective identifiers.
70
- */
71
- export interface HealthSnapshot {
72
- readonly channels: Readonly<Record<string, {
73
- readonly domain?: string;
74
- readonly status: "failed" | "success";
75
- readonly timestamp: number;
76
- }>>;
77
- readonly domains: Readonly<Record<string, number>>;
78
- }
79
61
  /**
80
62
  * Mutable client state. The IIFE shell constructs one of these at startup; every handler reads and writes it via ctx.state. Handlers mutate ctx.state fields
81
63
  * directly; mutation methods would add no value over field assignment.
@@ -91,7 +73,16 @@ export interface ClientState {
91
73
  }
92
74
  /**
93
75
  * Readonly handle to sibling-script window.* APIs. Resolved at IIFE construction time; tests pass stub literals. updateRestartDialogStatus is read via a getter
94
- * in the IIFE so the streamRemoved handler picks up later registration from config.ts (the script that defines it loads after status.ts in the page).
76
+ * in the IIFE because config.ts's script loads before status.ts's, so the function is already registered by the time this script runs; the typeof guard
77
+ * behind the getter is defensive in case that load order ever changes.
78
+ *
79
+ * What belongs here versus a bare global: ClientExternals holds the collaborators tests need to stub or observe - the channelTable patch sink, the channelDisplayHtml
80
+ * renderer (asserted for delegation), dropdowns.close, copyToClipboard, the optional config.ts trampoline. The shared client-escape SSOT (window.escapeHtml,
81
+ * installed by shared.ts) is deliberately NOT here: it is a pure, stateless primitive that is always used for real, never stubbed, and it is needed by the pure
82
+ * formatters below (renderDetailCodec, formatLastIssue, formatClients) which take only their StreamSummary - threading a context into them just to reach an escaper
83
+ * would violate the "pure formatters, literal inputs, no externals plumbing" rule. So escapeHtml is referenced as a bare browser global, exactly like Date, Math,
84
+ * and requestAnimationFrame; production resolves it to window.escapeHtml and the test seeds globalThis.escapeHtml. This keeps one access path for the escaper across
85
+ * both renderers and formatters.
95
86
  */
96
87
  export interface ClientExternals {
97
88
  readonly channelDisplayHtml: (logoUrl: string | undefined, name: string, logoClass: string, textClass: string) => string;
@@ -114,9 +105,10 @@ export interface HandlerContext {
114
105
  readonly state: ClientState;
115
106
  }
116
107
  /**
117
- * Builds an empty client state. The IIFE calls this at startup; tests call it for fixtures. Defaults to "no streams, no system data, watchdog timestamps zeroed,
118
- * rAF gates open." lastStatusEventTime is zeroed here; the IIFE reseeds it to Date.now() right before opening the EventSource so the staleness watchdog has a
119
- * meaningful baseline. Tests that exercise the watchdog seed it explicitly.
108
+ * Builds an empty client state. This is the test-fixture seed; the production IIFE in status.ts does NOT call it - it constructs the initial state as an inline
109
+ * object literal whose shape must be kept in sync with this function by hand (the two are parallel definitions, not a shared call). Defaults to "no streams, no
110
+ * system data, watchdog timestamps zeroed, rAF gates open." lastStatusEventTime is zeroed here; the IIFE sets it to Date.now() directly in its own literal right
111
+ * before opening the EventSource so the staleness watchdog has a meaningful baseline. Tests that exercise the watchdog seed it explicitly.
120
112
  */
121
113
  export declare function createInitialState(): ClientState;
122
114
  /**
@@ -150,15 +142,11 @@ declare function renderStreamsTable(ctx: HandlerContext): void;
150
142
  declare function updateStreamRow(s: StreamSummary, ctx: HandlerContext): void;
151
143
  declare function toggleStreamDetails(id: number | string, ctx: HandlerContext): void;
152
144
  declare function updateDurations(ctx: HandlerContext): void;
153
- declare function updateChannelHealth(channelKey: string, status: "failed" | "success", timestamp: number, domain: string | undefined, ctx: HandlerContext): void;
154
- declare function updateDomainAuth(domain: string, timestamp: number, ctx: HandlerContext): void;
155
- declare function applyHealthSnapshot(data: HealthSnapshot, ctx: HandlerContext): void;
156
145
  declare function handleSnapshot(data: SnapshotPayload, ctx: HandlerContext): void;
157
146
  declare function handleStreamAdded(data: StreamSummary, ctx: HandlerContext): void;
158
147
  declare function handleStreamRemoved(data: StreamRemovedPayload, ctx: HandlerContext): void;
159
148
  declare function handleStreamHealthChanged(data: StreamSummary, ctx: HandlerContext): void;
160
149
  declare function handleSystemStatusChanged(data: SystemSummary, ctx: HandlerContext): void;
161
- declare function handleHealthChanged(data: HealthChangedPayload, ctx: HandlerContext): void;
162
150
  declare function handleChannelUpdate(data: unknown, ctx: HandlerContext): void;
163
151
  declare function handleSseError(ctx: HandlerContext): void;
164
152
  declare function toggleStreamPopover(ctx: HandlerContext): void;
@@ -173,10 +161,12 @@ declare function initIPadTooltips(ctx: HandlerContext): void;
173
161
  type EmittableFn = (...args: never[]) => unknown;
174
162
  /**
175
163
  * The script-side function registry. generateStatusScript() emits each entry's .toString() output in order. Order is hoisting-irrelevant for function
176
- * declarations but reflects the logical groups: pure formatters, state-derived renderers, DOM mutators, render schedulers, SSE handlers, then trampolines and
177
- * lifecycle helpers. Adding a new function means appending here and using its identifier in the IIFE; nothing else changes.
164
+ * declarations but reflects the logical groups: pure formatters, state-derived renderers, DOM mutators (updateSystemStatus / buildStreamPopoverContent /
165
+ * updateStreamPopover), the render-scheduler pair, more DOM mutators (renderStreamsTable / updateStreamRow / toggleStreamDetails / updateDurations), SSE
166
+ * handlers, then trampolines and lifecycle helpers. Adding a new function means appending here and using its identifier in the IIFE; nothing else changes.
178
167
  *
179
168
  * The exported individual functions remain importable for tests; this registry is just the emission order for the script body.
180
169
  */
181
170
  export declare const HANDLER_FUNCTIONS: readonly EmittableFn[];
182
- export { applyHealthSnapshot, buildStreamPopoverContent, copyOverviewPlaylistUrl, formatAutoRecovery, formatBytes, formatClients, formatDuration, formatLastIssue, formatTime, formatTimeAgo, getDomain, getHealthBadge, getRecoveringLabel, handleChannelUpdate, handleHealthChanged, handleSnapshot, handleSseError, handleStreamAdded, handleStreamHealthChanged, handleStreamRemoved, handleSystemStatusChanged, handleVisibilityChange, initIPadTooltips, renderDetailCodec, renderDetailStarted, renderHealthCellContent, renderStreamsTable, schedulePopoverRender, scheduleTableRender, toggleStreamDetails, toggleStreamPopover, updateChannelHealth, updateDomainAuth, updateDurations, updateStreamPopover, updateStreamRow, updateSystemStatus };
171
+ export { buildStreamPopoverContent, copyOverviewPlaylistUrl, formatAutoRecovery, formatBytes, formatClients, formatDuration, formatLastIssue, formatTime, formatTimeAgo, getDomain, getHealthBadge, getRecoveringLabel, handleChannelUpdate, handleSnapshot, handleSseError, handleStreamAdded, handleStreamHealthChanged, handleStreamRemoved, handleSystemStatusChanged, handleVisibilityChange, initIPadTooltips, renderDetailCodec, renderDetailStarted, renderHealthCellContent, renderStreamsTable, schedulePopoverRender, scheduleTableRender, toggleStreamDetails, toggleStreamPopover, updateDurations, updateStreamPopover, updateStreamRow, updateSystemStatus };
172
+ //# sourceMappingURL=status.handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.handlers.d.ts","sourceRoot":"","sources":["../../../../src/routes/root/scripts/status.handlers.ts"],"names":[],"mappings":"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"}