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
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"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"}
@@ -6,3 +6,4 @@ import type { StorageBackend } from "./persistence.ts";
6
6
  * @returns A StorageBackend implementation backed by the real filesystem via node:fs/promises.
7
7
  */
8
8
  export declare function createDefaultStorageBackend(): StorageBackend;
9
+ //# sourceMappingURL=persistence.context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.context.d.ts","sourceRoot":"","sources":["../../src/config/persistence.context.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,cAAc,CAiC5D"}
@@ -66,7 +66,7 @@ export interface FileStoreReadResult<T> {
66
66
  recoveredFromBackup: boolean;
67
67
  }
68
68
  /**
69
- * Options for creating a file store instance. The first three fields (defaultValue, label, parse, path) are the minimum surface required for any store. The
69
+ * Options for creating a file store instance. The required fields (defaultValue, label, parse, path) are the minimum surface required for any store. The
70
70
  * remaining fields opt in to schema versioning, migrations, and integrity validation - any store can adopt them as its data shape grows.
71
71
  * @template T - The in-memory data type that callers mutate.
72
72
  */
@@ -91,8 +91,8 @@ export interface FileStoreOptions<T> {
91
91
  */
92
92
  export interface FileStore<T> {
93
93
  /**
94
- * Verifies migrations are up-to-date and persists the upgrade if any were applied. Idempotent - when the file is already at the current schema version this
95
- * is a single read with no write. Called once per store at startup by the release boot coordinator after snapshots have been captured.
94
+ * Verifies migrations are up-to-date and persists the upgrade if any were applied. A no-op on repeat - when the file is already at the current schema
95
+ * version this is a single read with no write. Called once per store at startup by the release boot coordinator after snapshots have been captured.
96
96
  * @returns The migration result so callers can log per-store outcomes.
97
97
  */
98
98
  ensureMigrated(): Promise<MigrationResult>;
@@ -110,9 +110,10 @@ export interface FileStore<T> {
110
110
  */
111
111
  read(): Promise<FileStoreReadResult<T>>;
112
112
  /**
113
- * Creates a labeled snapshot copy of the current file inside a `snapshots/` subdirectory next to the source file (named `<file>.<label>`). Idempotent on
114
- * the label - if a snapshot with the same label already exists, this is a no-op. After a successful create, prunes older snapshots for the same file so at
115
- * most SNAPSHOT_RETENTION remain (by mtime). Used to preserve a guaranteed restore point at release boundaries before any migrations can mutate the file.
113
+ * Creates a labeled snapshot copy of the current file inside a `snapshots/` subdirectory next to the source file (named `<file>.<label>`). Safe to call more
114
+ * than once for the same label - if a snapshot with the same label already exists, this is a no-op. After a successful create, prunes older snapshots for
115
+ * the same file so at most SNAPSHOT_RETENTION remain (by mtime). Used to preserve a guaranteed restore point at release boundaries before any migrations can
116
+ * mutate the file.
116
117
  * @param label - The filename suffix appended after the source file's basename and a dot. Typically a version string like `pre-v1.10.0`.
117
118
  */
118
119
  snapshot(label: string): Promise<void>;
@@ -128,7 +129,8 @@ export interface FileStore<T> {
128
129
  export declare function snapshotAllForRelease(label: string): Promise<void>;
129
130
  /**
130
131
  * Runs ensureMigrated() on every registered store. Called once at startup after snapshotAllForRelease so that any pending migrations execute against a file
131
- * that already has its pre-version snapshot captured. Idempotent within a release - subsequent boots see no pending migrations and skip the upgrade write.
132
+ * that already has its pre-version snapshot captured. Safe to call more than once within a release - subsequent boots see no pending migrations and skip
133
+ * the upgrade write.
132
134
  */
133
135
  export declare function ensureAllMigrated(): Promise<void>;
134
136
  /**
@@ -141,10 +143,10 @@ export declare function ensureAllMigrated(): Promise<void>;
141
143
  * - **Backup rotation:** before each write, the current file is copied to `.bak`. One-deep rotation provides a recovery path for the previous good version.
142
144
  * - **Auto-recovery:** when the main file fails to parse, `read()` transparently restores from `.bak` (atomic temp+rename) and surfaces `recoveredFromBackup`
143
145
  * on the result so callers can banner the event. Only when both files are unparseable does the result fall back to defaults with `parseError: true`.
144
- * - **Versioned snapshots:** `snapshot(label)` writes a copy of the current file into a `snapshots/` subdirectory, named `<file>.<label>`, idempotent on the
145
- * label. After each successful create the directory is pruned to at most SNAPSHOT_RETENTION entries per file (by mtime).
146
+ * - **Versioned snapshots:** `snapshot(label)` writes a copy of the current file into a `snapshots/` subdirectory, named `<file>.<label>`, safe to call more
147
+ * than once for the same label. After each successful create the directory is pruned to at most SNAPSHOT_RETENTION entries per file (by mtime).
146
148
  * - **Declarative migrations:** when `migrations` and `currentSchemaVersion` are provided, `read()` runs any pending migrations in memory and returns the
147
- * upgraded data. `ensureMigrated()` persists the upgrade if any were applied. Migrations are version-keyed and idempotent across boots.
149
+ * upgraded data. `ensureMigrated()` persists the upgrade if any were applied. Migrations are version-keyed and safe to call more than once across boots.
148
150
  * - **Pre-write validation:** when `validate` is provided, `mutate()` invokes it with the pre-mutation snapshot and post-mutation state, surfacing integrity
149
151
  * issues via the log.
150
152
  * - **Post-write integrity check:** after every successful rename, the file is read back and byte-compared against what was written. On mismatch, the .bak is
@@ -155,3 +157,4 @@ export declare function ensureAllMigrated(): Promise<void>;
155
157
  * @returns A FileStore instance. Auto-registers in the global store registry so the release boot coordinator can snapshot it.
156
158
  */
157
159
  export declare function createFileStore<T>(options: FileStoreOptions<T>): FileStore<T>;
160
+ //# sourceMappingURL=persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/config/persistence.ts"],"names":[],"mappings":"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"}
@@ -57,7 +57,8 @@ export async function snapshotAllForRelease(label) {
57
57
  }
58
58
  /**
59
59
  * Runs ensureMigrated() on every registered store. Called once at startup after snapshotAllForRelease so that any pending migrations execute against a file
60
- * that already has its pre-version snapshot captured. Idempotent within a release - subsequent boots see no pending migrations and skip the upgrade write.
60
+ * that already has its pre-version snapshot captured. Safe to call more than once within a release - subsequent boots see no pending migrations and skip
61
+ * the upgrade write.
61
62
  */
62
63
  export async function ensureAllMigrated() {
63
64
  await Promise.all(registeredStores.map(async (store) => store.ensureMigrated()));
@@ -73,10 +74,10 @@ export async function ensureAllMigrated() {
73
74
  * - **Backup rotation:** before each write, the current file is copied to `.bak`. One-deep rotation provides a recovery path for the previous good version.
74
75
  * - **Auto-recovery:** when the main file fails to parse, `read()` transparently restores from `.bak` (atomic temp+rename) and surfaces `recoveredFromBackup`
75
76
  * on the result so callers can banner the event. Only when both files are unparseable does the result fall back to defaults with `parseError: true`.
76
- * - **Versioned snapshots:** `snapshot(label)` writes a copy of the current file into a `snapshots/` subdirectory, named `<file>.<label>`, idempotent on the
77
- * label. After each successful create the directory is pruned to at most SNAPSHOT_RETENTION entries per file (by mtime).
77
+ * - **Versioned snapshots:** `snapshot(label)` writes a copy of the current file into a `snapshots/` subdirectory, named `<file>.<label>`, safe to call more
78
+ * than once for the same label. After each successful create the directory is pruned to at most SNAPSHOT_RETENTION entries per file (by mtime).
78
79
  * - **Declarative migrations:** when `migrations` and `currentSchemaVersion` are provided, `read()` runs any pending migrations in memory and returns the
79
- * upgraded data. `ensureMigrated()` persists the upgrade if any were applied. Migrations are version-keyed and idempotent across boots.
80
+ * upgraded data. `ensureMigrated()` persists the upgrade if any were applied. Migrations are version-keyed and safe to call more than once across boots.
80
81
  * - **Pre-write validation:** when `validate` is provided, `mutate()` invokes it with the pre-mutation snapshot and post-mutation state, surfacing integrity
81
82
  * issues via the log.
82
83
  * - **Post-write integrity check:** after every successful rename, the file is read back and byte-compared against what was written. On mismatch, the .bak is
@@ -151,8 +152,14 @@ export function createFileStore(options) {
151
152
  }
152
153
  /**
153
154
  * Attempts to recover from .bak when the main file fails to parse. Reads .bak, parses it, and on success restores the main file from .bak via atomic temp+
154
- * rename so the next backup-and-write cycle does not rotate the corrupt main file into .bak (which would destroy the only good copy). Returns the parsed
155
- * recovered data, or null if .bak is missing or also unparseable.
155
+ * rename. Returns the parsed recovered data, or null if .bak is missing or also unparseable.
156
+ *
157
+ * The restore-write is best-effort - the in-memory recovered data is what callers act on, and a failed restore leaves the main file corrupt on disk without
158
+ * losing the good copy. The actual protection against rotating a corrupt main into .bak lives in doMutate, which skips the main->bak rotation whenever read()
159
+ * reports recoveredFromBackup; this function's restore is the convenience that lets a subsequent clean read see a non-corrupt main once the write succeeds.
160
+ *
161
+ * The restore uses a recovery-specific temp suffix (.recover.tmp) distinct from doMutate's .tmp. Because read() runs outside the mutate serialization lock,
162
+ * a read-triggered recovery can overlap an in-flight mutate; distinct suffixes guarantee the recovery never clobbers the mutate's temp before its rename.
156
163
  */
157
164
  async function tryRecoverFromBackup(filePath) {
158
165
  const bakPath = filePath + ".bak";
@@ -172,7 +179,11 @@ export function createFileStore(options) {
172
179
  }
173
180
  // Restore main from .bak via atomic temp+rename. Best-effort: if the restore write fails, we still return the recovered data so the caller can proceed
174
181
  // with valid in-memory state. A subsequent read would attempt recovery again and produce the same result.
175
- const tmpPath = filePath + ".tmp";
182
+ //
183
+ // The restore uses a recovery-specific temp suffix (.recover.tmp) rather than the .tmp suffix doMutate uses. read() does NOT acquire the mutate
184
+ // serialization lock, so a read-triggered recovery can run concurrently with an in-flight mutate. Sharing the .tmp path would let a recovery's write or
185
+ // rename clobber a mutate's in-flight temp file before the mutate renames it into place. Distinct suffixes keep the two write paths from ever colliding.
186
+ const tmpPath = filePath + ".recover.tmp";
176
187
  try {
177
188
  await backend.writeFile(tmpPath, bakContent);
178
189
  await backend.rename(tmpPath, filePath);
@@ -291,18 +302,18 @@ export function createFileStore(options) {
291
302
  }));
292
303
  }
293
304
  /**
294
- * Creates a labeled snapshot copy of the current file inside a `snapshots/` subdirectory next to the source file. Idempotent on the label so repeated calls
295
- * within the same release are no-ops after the first one. After a successful create, prunes old snapshots for this file so at most SNAPSHOT_RETENTION are
296
- * retained (by mtime). Snapshots are version-keyed safety nets that survive normal .bak rotation, intended to be the restore-of-last-resort when a release
297
- * introduces a data-shape regression that escapes the primary safeguards.
305
+ * Creates a labeled snapshot copy of the current file inside a `snapshots/` subdirectory next to the source file. Safe to call more than once for the same
306
+ * label, so repeated calls within the same release are no-ops after the first one. After a successful create, prunes old snapshots for this file so at most
307
+ * SNAPSHOT_RETENTION are retained (by mtime). Snapshots are version-keyed safety nets that survive normal .bak rotation, intended to be the restore of last
308
+ * resort when a release introduces a data-shape regression that escapes the primary safeguards.
298
309
  */
299
310
  async function snapshot(label) {
300
311
  const filePath = options.path();
301
312
  const baseName = path.basename(filePath);
302
313
  const snapshotDir = path.join(path.dirname(filePath), "snapshots");
303
314
  const snapshotPath = path.join(snapshotDir, baseName + "." + label);
304
- // Idempotent: skip if a snapshot with this label already exists. The first boot under a given release captures the snapshot; subsequent boots see it and
305
- // skip, so the snapshot reflects the file's state at first-boot of that release.
315
+ // A no-op on repeat: skip if a snapshot with this label already exists. The first boot under a given release captures the snapshot; subsequent boots see
316
+ // it and skip, so the snapshot reflects the file's state at first-boot of that release.
306
317
  try {
307
318
  await backend.access(snapshotPath);
308
319
  return;
@@ -363,13 +374,21 @@ export function createFileStore(options) {
363
374
  dataDirEnsured = true;
364
375
  }
365
376
  // Backup: copy the current file to .bak before overwriting. Swallow ENOENT (file does not exist yet on first write).
377
+ //
378
+ // We skip the rotation entirely when read() recovered the in-memory state from .bak. recoveredFromBackup being true means the main file on disk was
379
+ // unparseable and the good copy is the existing .bak - so .bak already holds the prior good state. Had tryRecoverFromBackup's restore-write to main failed,
380
+ // the main file on disk is still corrupt; copying it over .bak would destroy the only good copy. Had the restore succeeded, main now equals .bak and the
381
+ // upcoming atomic write overwrites it with the mutated good data while .bak keeps the prior good state. Either way, rotating is at best redundant and at
382
+ // worst destructive, so we leave the known-good .bak untouched and let the atomic write below replace the (recovered) main.
366
383
  const bakPath = filePath + ".bak";
367
- try {
368
- await backend.copyFile(filePath, bakPath);
369
- }
370
- catch (backupError) {
371
- if (backupError.code !== "ENOENT") {
372
- LOG.warn("Failed to back up %s: %s.", filePath, (backupError instanceof Error) ? backupError.message : String(backupError));
384
+ if (!result.recoveredFromBackup) {
385
+ try {
386
+ await backend.copyFile(filePath, bakPath);
387
+ }
388
+ catch (backupError) {
389
+ if (backupError.code !== "ENOENT") {
390
+ LOG.warn("Failed to back up %s: %s.", filePath, (backupError instanceof Error) ? backupError.message : String(backupError));
391
+ }
373
392
  }
374
393
  }
375
394
  // Atomic write: write to a temp file, then rename over the original. rename() is atomic on POSIX and NTFS filesystems.
@@ -425,8 +444,8 @@ export function createFileStore(options) {
425
444
  return operation;
426
445
  }
427
446
  /**
428
- * Verifies the file is at the current schema version, persisting any required upgrade. Idempotent - when the file is already current this is a single read
429
- * with no write. The release boot coordinator calls this on every store after snapshots have been captured.
447
+ * Verifies the file is at the current schema version, persisting any required upgrade. A no-op on repeat - when the file is already current this is a
448
+ * single read with no write. The release boot coordinator calls this on every store after snapshots have been captured.
430
449
  */
431
450
  async function ensureMigrated() {
432
451
  // Peek to determine whether migrations are needed. read() runs migrations in memory but does not persist.
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/config/persistence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/config/persistence.ts"],"names":[],"mappings":"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"}
@@ -106,3 +106,4 @@ export interface PresetOptionsResult {
106
106
  * @returns Preset options with degradation status and max viewport info.
107
107
  */
108
108
  export declare function getPresetOptionsWithDegradation(): PresetOptionsResult;
109
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/config/presets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAa1D;;;GAGG;AACH,MAAM,WAAW,YAAY;IAE3B,yBAAyB,EAAE,MAAM,CAAC;IAClC,wBAAwB,EAAE,MAAM,CAAC;IACjC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,8BAA8B,EAAE,MAAM,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAG5B,WAAW,EAAE,MAAM,CAAC;IAGpB,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,YAAY,CAAC;CACtB;AA2FD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,EAEhD,CAAC;AAQF;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAG5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAcnF;AAYD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAGpC,gBAAgB,EAAE,aAAa,CAAC;IAGhC,QAAQ,EAAE,OAAO,CAAC;IAGlB,eAAe,EAAE,aAAa,CAAC;IAG/B,WAAW,EAAE,QAAQ,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAgBlG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAuDxE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAStF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAWxE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAG3B,MAAM,EAAE,aAAa,CAAC;IAGtB,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAGlC,WAAW,EAAE,QAAQ,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAGzD,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,mBAAmB,CAkDrE"}
@@ -2,17 +2,21 @@ import { DEFAULT_SITE_PROFILE, DOMAIN_CONFIG, PROVIDER_PROFILES, SITE_PROFILES,
2
2
  import type { ProfileCategory, ProfileResolutionResult, ResolvedSiteProfile } from "../types/index.ts";
3
3
  export { DEFAULT_SITE_PROFILE, DOMAIN_CONFIG, PROVIDER_PROFILES, SITE_PROFILES, getBuiltinProfile, getDomainConfig };
4
4
  /**
5
- * Resolves a named profile from SITE_PROFILES, handling inheritance and merging with the default profile to ensure all required properties are present. Inheritance
6
- * is resolved recursively, with child profile properties overriding parent properties.
5
+ * Resolves a named profile from any builtin source or the user profile store, following its inheritance chain and merging with the default profile so that every
6
+ * behavior flag has a value.
7
7
  *
8
8
  * The resolution process:
9
9
  *
10
- * 1. Start with a copy of DEFAULT_SITE_PROFILE
11
- * 2. If the profile extends another, recursively resolve the parent and merge its properties
12
- * 3. Merge the current profile's properties, overriding any inherited values
13
- * 4. Return the fully-resolved profile with all flags set
10
+ * 1. Follow extends hops outward from the named profile, collecting each profile that resolves into an ordered chain.
11
+ * 2. Start with a copy of DEFAULT_SITE_PROFILE.
12
+ * 3. Apply the collected chain from the root ancestor forward, so that a child's values override the values of what it extends.
14
13
  *
15
- * Metadata properties (description, extends) are stripped during resolution - they exist only for documentation and inheritance specification.
14
+ * Resolution is total over any stored data: a name that resolves to nothing, whether it is unknown or is reached through a chain that closes back on itself,
15
+ * contributes nothing, and the flags collected before that point still apply over the defaults. Rule violations in stored profiles are reported by
16
+ * validateProfiles(), not here.
17
+ *
18
+ * Metadata properties (category, description, extends, summary) are stripped from every chain entry during resolution - they exist only for UI categorization,
19
+ * documentation, inheritance specification, and UI display.
16
20
  *
17
21
  * @param profileName - The name of the profile to resolve.
18
22
  * @returns The merged site profile containing all behavior flags.
@@ -51,17 +55,19 @@ export declare function getProfileForChannel(channel: {
51
55
  url?: string;
52
56
  } | undefined): ProfileResolutionResult;
53
57
  /**
54
- * Validates all profile configurations including inheritance chains, domain mappings, and channel references. Throws an error if any validation fails. This
55
- * function runs at startup before the server begins accepting connections.
58
+ * Validates all profile configurations including inheritance chains, domain mappings, and channel references. Builtin configuration errors throw and abort startup;
59
+ * user-defined profile and domain validation errors are surfaced as warnings so the server can still start and the user can fix them via the web UI. This function
60
+ * runs at startup before the server begins accepting connections.
56
61
  *
57
62
  * Validation checks:
58
63
  *
59
- * 1. Circular inheritance detection - walks the extends chain for each profile to detect cycles
60
- * 2. Invalid extends references - ensures all extends targets exist
61
- * 3. Domain mapping validation - ensures all domain profile references exist
62
- * 4. Channel profile validation - ensures all channel profile references exist
64
+ * 1. Circular inheritance detection - walks the extends chain for each profile to detect cycles.
65
+ * 2. Invalid extends references - ensures all extends targets exist.
66
+ * 3. Domain mapping validation - ensures all domain profile references exist.
67
+ * 4. Channel profile validation - ensures all channel profile references exist.
63
68
  *
64
- * @throws If any profile configuration is invalid.
69
+ * @throws If any builtin profile, domain-mapping, or channel-reference configuration is invalid. User-defined profile and domain errors are logged as warnings
70
+ * rather than thrown.
65
71
  */
66
72
  export declare function validateProfiles(): void;
67
73
  /**
@@ -75,8 +81,9 @@ export interface ProfileInfo {
75
81
  summary: string;
76
82
  }
77
83
  /**
78
- * Returns all profiles (built-in and user-defined) with their descriptions, categories, summaries, and source tags, sorted alphabetically by name. Used by the
84
+ * Returns all profiles (builtin and user-defined) with their descriptions, categories, summaries, and source tags, sorted alphabetically by name. Used by the
79
85
  * channel configuration UI to populate the profile dropdown with tooltips and the profile reference section.
80
86
  * @returns Array of profile info objects.
81
87
  */
82
88
  export declare function getProfiles(): ProfileInfo[];
89
+ //# sourceMappingURL=profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/config/profiles.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAC3E,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAgB,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,EAAe,MAAM,mBAAmB,CAAC;AAOlI,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC;AAqBrH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,CAqDnF;AA0BD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,uBAAuB,CAkBjF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CAC9J,GAAG,SAAS,GAAG,uBAAuB,CAgGtC;AAcD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAuGvC;AAKD;;GAEG;AACH,MAAM,WAAW,WAAW;IAG1B,QAAQ,EAAE,eAAe,CAAC;IAG1B,WAAW,EAAE,MAAM,CAAC;IAGpB,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAG3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,WAAW,EAAE,CAoC3C"}
@@ -14,31 +14,35 @@ export { DEFAULT_SITE_PROFILE, DOMAIN_CONFIG, PROVIDER_PROFILES, SITE_PROFILES,
14
14
  *
15
15
  * Resolution order (highest to lowest priority):
16
16
  *
17
- * 1. Channel's explicit profile property (if specified)
18
- * 2. URL-based detection via DOMAIN_CONFIG
19
- * 3. DEFAULT_SITE_PROFILE
17
+ * 1. Channel's explicit profile property (if specified).
18
+ * 2. URL-based detection via DOMAIN_CONFIG.
19
+ * 3. DEFAULT_SITE_PROFILE.
20
20
  *
21
21
  * Within a profile, inheritance works as follows:
22
22
  *
23
- * 1. Start with DEFAULT_SITE_PROFILE for base values
24
- * 2. Apply parent profile properties (if extends is set)
25
- * 3. Apply current profile properties (overriding parent)
23
+ * 1. Start with DEFAULT_SITE_PROFILE for base values.
24
+ * 2. Apply parent profile properties (if extends is set).
25
+ * 3. Apply current profile properties (overriding parent).
26
26
  *
27
27
  * This allows profiles like "embeddedDynamicMultiVideo" to inherit iframe handling from "embeddedPlayer" which inherits API fullscreen from "fullscreenApi",
28
28
  * building up the complete set of behavior flags through the inheritance chain.
29
29
  */
30
30
  /**
31
- * Resolves a named profile from SITE_PROFILES, handling inheritance and merging with the default profile to ensure all required properties are present. Inheritance
32
- * is resolved recursively, with child profile properties overriding parent properties.
31
+ * Resolves a named profile from any builtin source or the user profile store, following its inheritance chain and merging with the default profile so that every
32
+ * behavior flag has a value.
33
33
  *
34
34
  * The resolution process:
35
35
  *
36
- * 1. Start with a copy of DEFAULT_SITE_PROFILE
37
- * 2. If the profile extends another, recursively resolve the parent and merge its properties
38
- * 3. Merge the current profile's properties, overriding any inherited values
39
- * 4. Return the fully-resolved profile with all flags set
36
+ * 1. Follow extends hops outward from the named profile, collecting each profile that resolves into an ordered chain.
37
+ * 2. Start with a copy of DEFAULT_SITE_PROFILE.
38
+ * 3. Apply the collected chain from the root ancestor forward, so that a child's values override the values of what it extends.
40
39
  *
41
- * Metadata properties (description, extends) are stripped during resolution - they exist only for documentation and inheritance specification.
40
+ * Resolution is total over any stored data: a name that resolves to nothing, whether it is unknown or is reached through a chain that closes back on itself,
41
+ * contributes nothing, and the flags collected before that point still apply over the defaults. Rule violations in stored profiles are reported by
42
+ * validateProfiles(), not here.
43
+ *
44
+ * Metadata properties (category, description, extends, summary) are stripped from every chain entry during resolution - they exist only for UI categorization,
45
+ * documentation, inheritance specification, and UI display.
42
46
  *
43
47
  * @param profileName - The name of the profile to resolve.
44
48
  * @returns The merged site profile containing all behavior flags.
@@ -48,24 +52,39 @@ export function resolveProfile(profileName) {
48
52
  if (!profileName) {
49
53
  return { ...DEFAULT_SITE_PROFILE };
50
54
  }
51
- // Check all profile sources: static built-in tables (general + provider) and registered provider module profiles via getBuiltinProfile(), then user-defined
52
- // profiles. User profiles can only extend built-in profiles (not other user profiles), so the resolution chain always terminates at a built-in profile.
53
- const profile = getBuiltinProfile(profileName) ?? (getUserProfiles()[profileName]);
54
- if (!profile) {
55
- return { ...DEFAULT_SITE_PROFILE };
55
+ const chain = [];
56
+ const visited = new Set();
57
+ let userProfiles;
58
+ let current = profileName;
59
+ /* Walk the extends chain from the named profile toward its root ancestor. The visited set bounds the walk: a name already collected ends the collection, so a
60
+ * stored profile whose chain points back into itself resolves to the flags gathered before the loop closed instead of exhausting the stack.
61
+ *
62
+ * Resolution stays silent about both a name that resolves to nothing and a chain that closes on itself - it degrades to whatever it collected over the
63
+ * defaults, which is how an entirely unknown name resolves as well. Reporting a rule violation in stored data belongs to the validation layer, which runs at
64
+ * every ingress (startup, profile editor save, service pack import); a message from here would restate a fixed condition at request frequency on the playlist,
65
+ * channel table, and tune paths.
66
+ */
67
+ while (current && !visited.has(current)) {
68
+ visited.add(current);
69
+ // Check all profile sources: static builtin tables (general + provider) and registered provider module profiles via getBuiltinProfile(), then user-defined
70
+ // profiles. The user map is a snapshot copy, so it is taken at most once per resolution and only once a name misses every builtin source - resolving the
71
+ // builtin chains that the playlist, table, and tune paths ask for never copies it.
72
+ const profile = getBuiltinProfile(current) ?? ((userProfiles ??= getUserProfiles())[current]);
73
+ if (!profile) {
74
+ break;
75
+ }
76
+ chain.push(profile);
77
+ current = profile.extends;
56
78
  }
57
- // Start with default values. This ensures all flags have a value even if not specified in the profile.
79
+ // Start with default values. This ensures all flags have a value even if not specified in any profile along the chain.
58
80
  let resolved = { ...DEFAULT_SITE_PROFILE };
59
- // Apply parent profile first if inheritance exists. This allows child profiles to override parent properties while inheriting the rest.
60
- if (profile.extends) {
61
- const parent = resolveProfile(profile.extends);
62
- resolved = { ...resolved, ...parent };
81
+ // Apply the chain from the root ancestor forward, which is what gives a child profile precedence over what it extends. Every entry sheds its metadata fields
82
+ // on the way in: the category, description, extends, and summary properties are for UI categorization, documentation, inheritance specification, and UI
83
+ // display only, and belong to no resolved profile at any depth.
84
+ for (const profile of chain.toReversed()) {
85
+ const { category: _category, description: _description, extends: _extends, summary: _summary, ...profileFlags } = profile;
86
+ resolved = { ...resolved, ...profileFlags };
63
87
  }
64
- // Apply current profile properties, excluding metadata fields that should not be in the resolved profile. The category, description, extends, and summary
65
- // properties are for UI categorization, documentation, inheritance specification, and UI display only.
66
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
67
- const { category: _category, description: _description, extends: _extends, summary: _summary, ...profileFlags } = profile;
68
- resolved = { ...resolved, ...profileFlags };
69
88
  return resolved;
70
89
  }
71
90
  /**
@@ -128,8 +147,12 @@ export function getProfileForChannel(channel) {
128
147
  if (!channel) {
129
148
  return { profile: { ...DEFAULT_SITE_PROFILE }, profileName: "default" };
130
149
  }
150
+ // Whether the channel named its own profile rather than leaving resolution to the URL. Only this case can produce an override: refining a URL-detected profile
151
+ // is ordinary resolution, with no choice of the channel's to displace.
152
+ const hasExplicitProfile = Boolean(channel.profile) && (channel.profile !== "auto");
131
153
  let profile;
132
154
  let profileName;
155
+ let overriddenProfile;
133
156
  // If the channel specifies an explicit profile name, use it directly. This takes precedence over URL-based detection. The value "auto" is treated as unset,
134
157
  // falling through to URL-based detection below.
135
158
  if (channel.profile && (channel.profile !== "auto")) {
@@ -152,13 +175,19 @@ export function getProfileForChannel(channel) {
152
175
  if ((profile.channelSelection.strategy !== "none") && !channel.channelSelector && channel.url) {
153
176
  const conciseConfig = DOMAIN_CONFIG[extractDomain(channel.url)];
154
177
  if (conciseConfig?.profile && (conciseConfig.profile !== profileName)) {
178
+ // Report the displaced choice when the channel named the profile itself, capturing the name before the substitution overwrites it. Resolution only
179
+ // reports - it does not warn - because this resolver also serves per-request render paths (the playlist and the channel table) that would repeat the
180
+ // message on every fetch and every draw. The consumer that tunes decides whether the substitution is worth telling the operator about.
181
+ if (hasExplicitProfile) {
182
+ overriddenProfile = profileName;
183
+ }
155
184
  profile = resolveProfile(conciseConfig.profile);
156
185
  profileName = conciseConfig.profile;
157
186
  }
158
187
  }
159
188
  // Merge domain-level properties that apply regardless of how the profile was resolved. These represent site-specific behaviors or policies that must always be
160
189
  // applied based on the channel's URL even when the player profile is explicitly overridden. For the URL-based path above, getProfileForUrl() already merges
161
- // these - the re-application here is idempotent. For the explicit-profile path, this fills the gap.
190
+ // these - the re-application here is a no-op on repeat. For the explicit-profile path, this fills the gap.
162
191
  if (channel.url) {
163
192
  profile = mergeDomainProperties(profile, getDomainConfig(channel.url));
164
193
  }
@@ -181,31 +210,34 @@ export function getProfileForChannel(channel) {
181
210
  if (Object.keys(scrollOverrides).length > 0) {
182
211
  profile = { ...profile, channelSelection: { ...profile.channelSelection, ...scrollOverrides } };
183
212
  }
184
- return { profile, profileName };
213
+ // The override key is present only when it carries a name, so a consumer can test the field itself rather than telling an absent key apart from an undefined one.
214
+ return overriddenProfile ? { overriddenProfile, profile, profileName } : { profile, profileName };
185
215
  }
186
216
  /* Before starting the server, we validate all profile configurations to catch errors early. Invalid configurations would cause runtime failures that are difficult
187
217
  * to diagnose:
188
218
  *
189
- * - Invalid profile references (typos in extends or profile properties)
190
- * - Circular inheritance chains (A extends B extends A)
191
- * - Domain mappings pointing to non-existent profiles
192
- * - Channel definitions referencing non-existent profiles
219
+ * - Invalid profile references (typos in extends or profile properties).
220
+ * - Circular inheritance chains (A extends B extends A).
221
+ * - Domain mappings pointing to non-existent profiles.
222
+ * - Channel definitions referencing non-existent profiles.
193
223
  *
194
224
  * By validating upfront at startup, we provide clear error messages and prevent the server from starting in a misconfigured state. This is especially important
195
225
  * because profile errors might not surface until a specific channel is streamed, which could be hours after startup.
196
226
  */
197
227
  /**
198
- * Validates all profile configurations including inheritance chains, domain mappings, and channel references. Throws an error if any validation fails. This
199
- * function runs at startup before the server begins accepting connections.
228
+ * Validates all profile configurations including inheritance chains, domain mappings, and channel references. Builtin configuration errors throw and abort startup;
229
+ * user-defined profile and domain validation errors are surfaced as warnings so the server can still start and the user can fix them via the web UI. This function
230
+ * runs at startup before the server begins accepting connections.
200
231
  *
201
232
  * Validation checks:
202
233
  *
203
- * 1. Circular inheritance detection - walks the extends chain for each profile to detect cycles
204
- * 2. Invalid extends references - ensures all extends targets exist
205
- * 3. Domain mapping validation - ensures all domain profile references exist
206
- * 4. Channel profile validation - ensures all channel profile references exist
234
+ * 1. Circular inheritance detection - walks the extends chain for each profile to detect cycles.
235
+ * 2. Invalid extends references - ensures all extends targets exist.
236
+ * 3. Domain mapping validation - ensures all domain profile references exist.
237
+ * 4. Channel profile validation - ensures all channel profile references exist.
207
238
  *
208
- * @throws If any profile configuration is invalid.
239
+ * @throws If any builtin profile, domain-mapping, or channel-reference configuration is invalid. User-defined profile and domain errors are logged as warnings
240
+ * rather than thrown.
209
241
  */
210
242
  export function validateProfiles() {
211
243
  const errors = [];
@@ -239,7 +271,7 @@ export function validateProfiles() {
239
271
  }
240
272
  }
241
273
  }
242
- // Validate all channel profile references point to existing profiles (built-in or user). This catches typos in channel definitions.
274
+ // Validate all channel profile references point to existing profiles (builtin or user). This catches typos in channel definitions.
243
275
  const userProfiles = getUserProfiles();
244
276
  for (const [channelName, channel] of Object.entries(CHANNELS)) {
245
277
  const channelProfile = channel.profile;
@@ -247,21 +279,23 @@ export function validateProfiles() {
247
279
  errors.push("Channel " + channelName + " references non-existent profile: " + channelProfile);
248
280
  }
249
281
  }
250
- // If any built-in configuration errors were found, throw with all error messages for comprehensive feedback.
282
+ // If any builtin configuration errors were found, throw with all error messages for comprehensive feedback.
251
283
  if (errors.length > 0) {
252
284
  throw new Error("Profile validation failed:\n " + errors.join("\n "));
253
285
  }
254
286
  // Validate user-defined profiles and domain mappings. These are warnings, not fatal errors - broken user profiles should not prevent the server from starting.
255
287
  // The user can fix them via the web UI.
256
288
  const userWarnings = [];
257
- const allProfileNames = new Set([...allBuiltinProfiles.keys(), ...Object.keys(userProfiles)]);
289
+ // A user domain mapping may reference any builtin profile or any profile in the user store. Profile existence questions go through the single builtin lookup
290
+ // rather than an enumerated table, so a mapping onto a provider profile or a provider module's registered profile validates as known.
291
+ const isKnownProfile = (name) => Boolean(getBuiltinProfile(name)) || (name in userProfiles);
258
292
  for (const [key, profile] of Object.entries(userProfiles)) {
259
293
  const profileErrors = validateProfile(key, profile);
260
294
  userWarnings.push(...profileErrors);
261
295
  }
262
296
  const userDomains = getUserDomains();
263
297
  for (const [domain, config] of Object.entries(userDomains)) {
264
- const domainErrors = validateDomain(domain, config, allProfileNames);
298
+ const domainErrors = validateDomain(domain, config, isKnownProfile);
265
299
  userWarnings.push(...domainErrors);
266
300
  }
267
301
  if (userWarnings.length > 0) {
@@ -271,13 +305,13 @@ export function validateProfiles() {
271
305
  }
272
306
  }
273
307
  /**
274
- * Returns all profiles (built-in and user-defined) with their descriptions, categories, summaries, and source tags, sorted alphabetically by name. Used by the
308
+ * Returns all profiles (builtin and user-defined) with their descriptions, categories, summaries, and source tags, sorted alphabetically by name. Used by the
275
309
  * channel configuration UI to populate the profile dropdown with tooltips and the profile reference section.
276
310
  * @returns Array of profile info objects.
277
311
  */
278
312
  export function getProfiles() {
279
313
  const result = [];
280
- // Add built-in profiles. Iterate entries so each profile reference is fully-typed (keys from Object.keys would force a Record lookup per iteration).
314
+ // Add builtin profiles. Iterate entries so each profile reference is fully-typed (keys from Object.keys would force a Record lookup per iteration).
281
315
  for (const [name, profile] of Object.entries(SITE_PROFILES).toSorted(([a], [b]) => a.localeCompare(b))) {
282
316
  result.push({
283
317
  category: profile.category ?? "special",