prismcast 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/dist/app.d.ts +1 -1
  2. package/dist/app.js +27 -9
  3. package/dist/app.js.map +1 -1
  4. package/dist/browser/cdp.js +7 -7
  5. package/dist/browser/cdp.js.map +1 -1
  6. package/dist/browser/channelSelection.d.ts +41 -11
  7. package/dist/browser/channelSelection.js +75 -24
  8. package/dist/browser/channelSelection.js.map +1 -1
  9. package/dist/browser/display.d.ts +1 -1
  10. package/dist/browser/index.d.ts +8 -8
  11. package/dist/browser/index.js +42 -43
  12. package/dist/browser/index.js.map +1 -1
  13. package/dist/browser/login.d.ts +2 -2
  14. package/dist/browser/login.js +1 -1
  15. package/dist/browser/manifestInterceptor.d.ts +77 -0
  16. package/dist/browser/manifestInterceptor.js +323 -0
  17. package/dist/browser/manifestInterceptor.js.map +1 -0
  18. package/dist/browser/precaching.js +4 -4
  19. package/dist/browser/tuning/comcastPolymer.d.ts +1 -1
  20. package/dist/browser/tuning/cox.d.ts +1 -1
  21. package/dist/browser/tuning/directv.d.ts +1 -1
  22. package/dist/browser/tuning/directv.js +61 -62
  23. package/dist/browser/tuning/directv.js.map +1 -1
  24. package/dist/browser/tuning/fox.d.ts +1 -1
  25. package/dist/browser/tuning/fox.js +171 -14
  26. package/dist/browser/tuning/fox.js.map +1 -1
  27. package/dist/browser/tuning/hbo.d.ts +1 -1
  28. package/dist/browser/tuning/hbo.js +6 -6
  29. package/dist/browser/tuning/hbo.js.map +1 -1
  30. package/dist/browser/tuning/hulu.d.ts +1 -1
  31. package/dist/browser/tuning/hulu.js +117 -110
  32. package/dist/browser/tuning/hulu.js.map +1 -1
  33. package/dist/browser/tuning/shared.d.ts +3 -3
  34. package/dist/browser/tuning/shared.js +5 -5
  35. package/dist/browser/tuning/sling.d.ts +1 -1
  36. package/dist/browser/tuning/sling.js +28 -28
  37. package/dist/browser/tuning/sling.js.map +1 -1
  38. package/dist/browser/tuning/spectrum.d.ts +1 -1
  39. package/dist/browser/tuning/spectrum.js +21 -22
  40. package/dist/browser/tuning/spectrum.js.map +1 -1
  41. package/dist/browser/tuning/thumbnailRow.d.ts +1 -1
  42. package/dist/browser/tuning/thumbnailRow.js +1 -1
  43. package/dist/browser/tuning/tileClick.d.ts +1 -1
  44. package/dist/browser/tuning/tileClick.js +5 -5
  45. package/dist/browser/tuning/xfinity.d.ts +1 -1
  46. package/dist/browser/tuning/youtubeTv.d.ts +1 -1
  47. package/dist/browser/tuning/youtubeTv.js +17 -18
  48. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  49. package/dist/browser/video.d.ts +20 -6
  50. package/dist/browser/video.js +30 -38
  51. package/dist/browser/video.js.map +1 -1
  52. package/dist/channels/index.d.ts +1 -2
  53. package/dist/channels/index.js +73 -40
  54. package/dist/channels/index.js.map +1 -1
  55. package/dist/config/channelForm.d.ts +58 -0
  56. package/dist/config/channelForm.js +129 -0
  57. package/dist/config/channelForm.js.map +1 -0
  58. package/dist/config/consistencyProbe.d.ts +7 -0
  59. package/dist/config/consistencyProbe.js +143 -0
  60. package/dist/config/consistencyProbe.js.map +1 -0
  61. package/dist/config/health.d.ts +4 -3
  62. package/dist/config/health.js +75 -62
  63. package/dist/config/health.js.map +1 -1
  64. package/dist/config/index.d.ts +1 -1
  65. package/dist/config/index.js +19 -12
  66. package/dist/config/index.js.map +1 -1
  67. package/dist/config/paths.d.ts +9 -3
  68. package/dist/config/paths.js +12 -4
  69. package/dist/config/paths.js.map +1 -1
  70. package/dist/config/persistence.context.d.ts +8 -0
  71. package/dist/config/persistence.context.js +30 -0
  72. package/dist/config/persistence.context.js.map +1 -0
  73. package/dist/config/persistence.d.ts +110 -12
  74. package/dist/config/persistence.js +351 -32
  75. package/dist/config/persistence.js.map +1 -1
  76. package/dist/config/presets.d.ts +14 -4
  77. package/dist/config/presets.js +84 -75
  78. package/dist/config/presets.js.map +1 -1
  79. package/dist/config/profiles.d.ts +2 -2
  80. package/dist/config/profiles.js +7 -9
  81. package/dist/config/profiles.js.map +1 -1
  82. package/dist/config/servicePacks.d.ts +2 -2
  83. package/dist/config/servicePacks.js +28 -28
  84. package/dist/config/servicePacks.js.map +1 -1
  85. package/dist/config/services.d.ts +62 -36
  86. package/dist/config/services.js +150 -136
  87. package/dist/config/services.js.map +1 -1
  88. package/dist/config/sites.d.ts +3 -3
  89. package/dist/config/sites.js +16 -16
  90. package/dist/config/sites.js.map +1 -1
  91. package/dist/config/userChannels.d.ts +500 -41
  92. package/dist/config/userChannels.js +1201 -312
  93. package/dist/config/userChannels.js.map +1 -1
  94. package/dist/config/userConfig.d.ts +103 -10
  95. package/dist/config/userConfig.js +277 -117
  96. package/dist/config/userConfig.js.map +1 -1
  97. package/dist/config/userProfiles.d.ts +4 -2
  98. package/dist/config/userProfiles.js +72 -26
  99. package/dist/config/userProfiles.js.map +1 -1
  100. package/dist/hdhr/channelMap.js +8 -11
  101. package/dist/hdhr/channelMap.js.map +1 -1
  102. package/dist/hdhr/deviceId.js +10 -9
  103. package/dist/hdhr/deviceId.js.map +1 -1
  104. package/dist/hdhr/discover.js +4 -5
  105. package/dist/hdhr/discover.js.map +1 -1
  106. package/dist/hdhr/index.js +6 -10
  107. package/dist/hdhr/index.js.map +1 -1
  108. package/dist/index.js +12 -12
  109. package/dist/index.js.map +1 -1
  110. package/dist/native/codecInference.d.ts +44 -0
  111. package/dist/native/codecInference.js +327 -0
  112. package/dist/native/codecInference.js.map +1 -0
  113. package/dist/native/decrypt.d.ts +1 -1
  114. package/dist/native/index.d.ts +5 -5
  115. package/dist/native/index.js +42 -64
  116. package/dist/native/index.js.map +1 -1
  117. package/dist/native/probe.d.ts +27 -9
  118. package/dist/native/probe.js +158 -67
  119. package/dist/native/probe.js.map +1 -1
  120. package/dist/native/proxy.d.ts +4 -2
  121. package/dist/native/proxy.js +52 -49
  122. package/dist/native/proxy.js.map +1 -1
  123. package/dist/native/tokenExpiry.d.ts +22 -0
  124. package/dist/native/tokenExpiry.js +153 -0
  125. package/dist/native/tokenExpiry.js.map +1 -0
  126. package/dist/routes/auth.js +6 -10
  127. package/dist/routes/auth.js.map +1 -1
  128. package/dist/routes/components.js +2 -2
  129. package/dist/routes/components.js.map +1 -1
  130. package/dist/routes/config/channels/endpoints/browse.d.ts +6 -0
  131. package/dist/routes/config/channels/endpoints/browse.js +195 -0
  132. package/dist/routes/config/channels/endpoints/browse.js.map +1 -0
  133. package/dist/routes/config/channels/endpoints/bulk.d.ts +6 -0
  134. package/dist/routes/config/channels/endpoints/bulk.js +128 -0
  135. package/dist/routes/config/channels/endpoints/bulk.js.map +1 -0
  136. package/dist/routes/config/channels/endpoints/crud.d.ts +6 -0
  137. package/dist/routes/config/channels/endpoints/crud.js +504 -0
  138. package/dist/routes/config/channels/endpoints/crud.js.map +1 -0
  139. package/dist/routes/config/channels/endpoints/importExport.d.ts +6 -0
  140. package/dist/routes/config/channels/endpoints/importExport.js +131 -0
  141. package/dist/routes/config/channels/endpoints/importExport.js.map +1 -0
  142. package/dist/routes/config/channels/endpoints/predefined.d.ts +6 -0
  143. package/dist/routes/config/channels/endpoints/predefined.js +78 -0
  144. package/dist/routes/config/channels/endpoints/predefined.js.map +1 -0
  145. package/dist/routes/config/channels/endpoints/prefs.d.ts +6 -0
  146. package/dist/routes/config/channels/endpoints/prefs.js +58 -0
  147. package/dist/routes/config/channels/endpoints/prefs.js.map +1 -0
  148. package/dist/routes/config/channels/endpoints/service.d.ts +6 -0
  149. package/dist/routes/config/channels/endpoints/service.js +149 -0
  150. package/dist/routes/config/channels/endpoints/service.js.map +1 -0
  151. package/dist/routes/config/channels/endpoints/tags.d.ts +6 -0
  152. package/dist/routes/config/channels/endpoints/tags.js +185 -0
  153. package/dist/routes/config/channels/endpoints/tags.js.map +1 -0
  154. package/dist/routes/config/channels/http/handler.d.ts +10 -0
  155. package/dist/routes/config/channels/http/handler.js +20 -0
  156. package/dist/routes/config/channels/http/handler.js.map +1 -0
  157. package/dist/routes/config/channels/http/playlistHint.d.ts +25 -0
  158. package/dist/routes/config/channels/http/playlistHint.js +40 -0
  159. package/dist/routes/config/channels/http/playlistHint.js.map +1 -0
  160. package/dist/routes/config/channels/http/serviceWarning.d.ts +10 -0
  161. package/dist/routes/config/channels/http/serviceWarning.js +28 -0
  162. package/dist/routes/config/channels/http/serviceWarning.js.map +1 -0
  163. package/dist/routes/config/channels/index.d.ts +3 -3
  164. package/dist/routes/config/channels/index.js +1 -1
  165. package/dist/routes/config/channels/index.js.map +1 -1
  166. package/dist/routes/config/channels/{routes.d.ts → setup.d.ts} +1 -1
  167. package/dist/routes/config/channels/setup.js +23 -0
  168. package/dist/routes/config/channels/setup.js.map +1 -0
  169. package/dist/routes/config/channels/table.d.ts +9 -9
  170. package/dist/routes/config/channels/table.js +124 -76
  171. package/dist/routes/config/channels/table.js.map +1 -1
  172. package/dist/routes/config/http/envelope.d.ts +111 -0
  173. package/dist/routes/config/http/envelope.js +103 -0
  174. package/dist/routes/config/http/envelope.js.map +1 -0
  175. package/dist/routes/config/index.d.ts +9 -9
  176. package/dist/routes/config/index.js +2 -2
  177. package/dist/routes/config/index.js.map +1 -1
  178. package/dist/routes/config/services.js +69 -68
  179. package/dist/routes/config/services.js.map +1 -1
  180. package/dist/routes/config/settings.d.ts +1 -1
  181. package/dist/routes/config/settings.js +45 -38
  182. package/dist/routes/config/settings.js.map +1 -1
  183. package/dist/routes/debug.js +12 -11
  184. package/dist/routes/debug.js.map +1 -1
  185. package/dist/routes/icons.js +2 -2
  186. package/dist/routes/icons.js.map +1 -1
  187. package/dist/routes/logs.js +19 -30
  188. package/dist/routes/logs.js.map +1 -1
  189. package/dist/routes/mpegts.js +1 -1
  190. package/dist/routes/playlist.d.ts +1 -1
  191. package/dist/routes/playlist.js +37 -26
  192. package/dist/routes/playlist.js.map +1 -1
  193. package/dist/routes/root/content.js +27 -6
  194. package/dist/routes/root/content.js.map +1 -1
  195. package/dist/routes/root/index.js +2 -5
  196. package/dist/routes/root/index.js.map +1 -1
  197. package/dist/routes/root/scripts/channels.js +16 -16
  198. package/dist/routes/root/scripts/channels.js.map +1 -1
  199. package/dist/routes/root/scripts/config.js +59 -59
  200. package/dist/routes/root/scripts/config.js.map +1 -1
  201. package/dist/routes/root/scripts/index.d.ts +4 -4
  202. package/dist/routes/root/scripts/shared.js +24 -10
  203. package/dist/routes/root/scripts/shared.js.map +1 -1
  204. package/dist/routes/root/scripts/status.d.ts +4 -0
  205. package/dist/routes/root/scripts/status.handlers.d.ts +182 -0
  206. package/dist/routes/root/scripts/status.handlers.js +713 -0
  207. package/dist/routes/root/scripts/status.handlers.js.map +1 -0
  208. package/dist/routes/root/scripts/status.js +86 -488
  209. package/dist/routes/root/scripts/status.js.map +1 -1
  210. package/dist/routes/root/styles.js +5 -5
  211. package/dist/routes/services.js +18 -15
  212. package/dist/routes/services.js.map +1 -1
  213. package/dist/routes/sse.d.ts +16 -0
  214. package/dist/routes/sse.js +29 -0
  215. package/dist/routes/sse.js.map +1 -0
  216. package/dist/routes/streams.js +10 -23
  217. package/dist/routes/streams.js.map +1 -1
  218. package/dist/routes/ui.d.ts +2 -2
  219. package/dist/routes/upgrade.js +6 -7
  220. package/dist/routes/upgrade.js.map +1 -1
  221. package/dist/service/commands.context.d.ts +6 -0
  222. package/dist/service/commands.context.js +47 -0
  223. package/dist/service/commands.context.js.map +1 -0
  224. package/dist/service/commands.d.ts +53 -8
  225. package/dist/service/commands.js +171 -188
  226. package/dist/service/commands.js.map +1 -1
  227. package/dist/service/generators.context.d.ts +6 -0
  228. package/dist/service/generators.context.js +45 -0
  229. package/dist/service/generators.context.js.map +1 -0
  230. package/dist/service/generators.d.ts +56 -16
  231. package/dist/service/generators.js +499 -383
  232. package/dist/service/generators.js.map +1 -1
  233. package/dist/service/index.d.ts +2 -2
  234. package/dist/streaming/clients.d.ts +2 -2
  235. package/dist/streaming/clients.js +2 -2
  236. package/dist/streaming/codec.d.ts +2 -2
  237. package/dist/streaming/codec.js +0 -1
  238. package/dist/streaming/codec.js.map +1 -1
  239. package/dist/streaming/fmp4Segmenter.d.ts +2 -2
  240. package/dist/streaming/fmp4Segmenter.js +12 -12
  241. package/dist/streaming/hls.d.ts +3 -3
  242. package/dist/streaming/hls.js +81 -70
  243. package/dist/streaming/hls.js.map +1 -1
  244. package/dist/streaming/hlsResume.d.ts +3 -3
  245. package/dist/streaming/hlsResume.js +5 -5
  246. package/dist/streaming/hlsSegments.d.ts +5 -2
  247. package/dist/streaming/hlsSegments.js +14 -9
  248. package/dist/streaming/hlsSegments.js.map +1 -1
  249. package/dist/streaming/monitor.d.ts +12 -12
  250. package/dist/streaming/monitor.js +80 -54
  251. package/dist/streaming/monitor.js.map +1 -1
  252. package/dist/streaming/mp4Parser.d.ts +34 -4
  253. package/dist/streaming/mp4Parser.js +111 -29
  254. package/dist/streaming/mp4Parser.js.map +1 -1
  255. package/dist/streaming/mpegts.d.ts +1 -1
  256. package/dist/streaming/mpegts.js +13 -10
  257. package/dist/streaming/mpegts.js.map +1 -1
  258. package/dist/streaming/playlistBuilder.d.ts +1 -1
  259. package/dist/streaming/playlistBuilder.js +2 -2
  260. package/dist/streaming/preroll.d.ts +9 -9
  261. package/dist/streaming/preroll.js +39 -41
  262. package/dist/streaming/preroll.js.map +1 -1
  263. package/dist/streaming/pretune.js +4 -4
  264. package/dist/streaming/pretune.js.map +1 -1
  265. package/dist/streaming/recovery.d.ts +3 -3
  266. package/dist/streaming/recovery.js +4 -4
  267. package/dist/streaming/registry.d.ts +6 -6
  268. package/dist/streaming/setup.d.ts +9 -8
  269. package/dist/streaming/setup.js +97 -49
  270. package/dist/streaming/setup.js.map +1 -1
  271. package/dist/streaming/showInfo.d.ts +9 -3
  272. package/dist/streaming/showInfo.js +26 -18
  273. package/dist/streaming/showInfo.js.map +1 -1
  274. package/dist/streaming/statusEmitter.d.ts +4 -4
  275. package/dist/streaming/statusEmitter.js +2 -2
  276. package/dist/types/channels.d.ts +133 -34
  277. package/dist/types/channels.js +39 -1
  278. package/dist/types/channels.js.map +1 -1
  279. package/dist/types/config.d.ts +20 -1
  280. package/dist/types/index.d.ts +9 -8
  281. package/dist/types/index.js +1 -0
  282. package/dist/types/index.js.map +1 -1
  283. package/dist/types/profiles.d.ts +5 -4
  284. package/dist/types/selection.d.ts +48 -4
  285. package/dist/types/streaming.d.ts +1 -1
  286. package/dist/upgrade/commands.context.d.ts +6 -0
  287. package/dist/upgrade/commands.context.js +29 -0
  288. package/dist/upgrade/commands.context.js.map +1 -0
  289. package/dist/upgrade/commands.d.ts +29 -2
  290. package/dist/upgrade/commands.js +87 -134
  291. package/dist/upgrade/commands.js.map +1 -1
  292. package/dist/upgrade/detection.context.d.ts +6 -0
  293. package/dist/upgrade/detection.context.js +24 -0
  294. package/dist/upgrade/detection.context.js.map +1 -0
  295. package/dist/upgrade/detection.d.ts +140 -10
  296. package/dist/upgrade/detection.js +153 -66
  297. package/dist/upgrade/detection.js.map +1 -1
  298. package/dist/upgrade/index.d.ts +2 -2
  299. package/dist/utils/chromeFetch.d.ts +1 -1
  300. package/dist/utils/chromeFetch.js +1 -1
  301. package/dist/utils/clock.d.ts +14 -0
  302. package/dist/utils/clock.js +28 -0
  303. package/dist/utils/clock.js.map +1 -0
  304. package/dist/utils/debugFilter.d.ts +1 -1
  305. package/dist/utils/debugFilter.js +6 -4
  306. package/dist/utils/debugFilter.js.map +1 -1
  307. package/dist/utils/delay.d.ts +2 -3
  308. package/dist/utils/delay.js +10 -16
  309. package/dist/utils/delay.js.map +1 -1
  310. package/dist/utils/evaluate.js +12 -14
  311. package/dist/utils/evaluate.js.map +1 -1
  312. package/dist/utils/ffmpeg.context.d.ts +6 -0
  313. package/dist/utils/ffmpeg.context.js +31 -0
  314. package/dist/utils/ffmpeg.context.js.map +1 -0
  315. package/dist/utils/ffmpeg.d.ts +85 -29
  316. package/dist/utils/ffmpeg.js +126 -129
  317. package/dist/utils/ffmpeg.js.map +1 -1
  318. package/dist/utils/fileLogger.d.ts +18 -2
  319. package/dist/utils/fileLogger.js +58 -30
  320. package/dist/utils/fileLogger.js.map +1 -1
  321. package/dist/utils/format.d.ts +1 -1
  322. package/dist/utils/format.js +2 -2
  323. package/dist/utils/format.js.map +1 -1
  324. package/dist/utils/html.js +1 -3
  325. package/dist/utils/html.js.map +1 -1
  326. package/dist/utils/index.d.ts +21 -20
  327. package/dist/utils/index.js +1 -0
  328. package/dist/utils/index.js.map +1 -1
  329. package/dist/utils/logger.js +16 -20
  330. package/dist/utils/logger.js.map +1 -1
  331. package/dist/utils/m3u.d.ts +18 -3
  332. package/dist/utils/m3u.js +28 -14
  333. package/dist/utils/m3u.js.map +1 -1
  334. package/dist/utils/memo.d.ts +19 -0
  335. package/dist/utils/memo.js +53 -0
  336. package/dist/utils/memo.js.map +1 -0
  337. package/dist/utils/morganStream.js +2 -2
  338. package/dist/utils/morganStream.js.map +1 -1
  339. package/dist/utils/pid.d.ts +2 -2
  340. package/dist/utils/pid.js +2 -2
  341. package/dist/utils/platform.d.ts +1 -1
  342. package/dist/utils/platform.js +3 -3
  343. package/dist/utils/platform.js.map +1 -1
  344. package/dist/utils/retry.d.ts +2 -0
  345. package/dist/utils/retry.js +9 -7
  346. package/dist/utils/retry.js.map +1 -1
  347. package/dist/utils/sanitize.d.ts +2 -2
  348. package/dist/utils/sanitize.js +4 -4
  349. package/dist/utils/timing.d.ts +6 -3
  350. package/dist/utils/timing.js +10 -6
  351. package/dist/utils/timing.js.map +1 -1
  352. package/dist/utils/version.d.ts +3 -2
  353. package/dist/utils/version.js +14 -27
  354. package/dist/utils/version.js.map +1 -1
  355. package/package.json +13 -7
  356. package/dist/native/intercept.d.ts +0 -35
  357. package/dist/native/intercept.js +0 -181
  358. package/dist/native/intercept.js.map +0 -1
  359. package/dist/routes/config/channels/routes.js +0 -1505
  360. package/dist/routes/config/channels/routes.js.map +0 -1
@@ -1,10 +1,12 @@
1
1
  import { VALID_SORT_FIELDS, compareChannelSort, getAllServiceTags, getServiceTagForChannel, resolveServiceKey } from "../config/services.js";
2
2
  import { getActiveTagVocabulary, getAllChannels, getChannelEffectiveTags, tagsMatch } from "../config/userChannels.js";
3
3
  import { CONFIG } from "../config/index.js";
4
+ import { escapeM3uAttribute } from "../utils/m3u.js";
4
5
  import { getProfileForChannel } from "../config/profiles.js";
6
+ import { sendValidationError } from "./config/http/envelope.js";
5
7
  /**
6
8
  * Parses and validates an include/exclude filter query parameter. The parameter is a comma-separated list of values with optional `-` prefix for exclusion mode.
7
- * All values must be either include (no prefix) or exclude (`-` prefix) — mixing is not allowed. Values are case-insensitive and validated against a known set.
9
+ * All values must be either include (no prefix) or exclude (`-` prefix) - mixing is not allowed. Values are case-insensitive and validated against a known set.
8
10
  * @param param - The raw query parameter string (e.g., "sports,news" or "-kids").
9
11
  * @param entityName - Human-readable name for error messages (e.g., "service tag", "tag").
10
12
  * @param knownValues - Array of valid values to validate against.
@@ -26,7 +28,7 @@ function parseIncludeExcludeFilter(param, entityName, knownValues) {
26
28
  includeTokens.push(token);
27
29
  }
28
30
  }
29
- // Reject mixed mode — all tokens must be either include or exclude.
31
+ // Reject mixed mode - all tokens must be either include or exclude.
30
32
  if ((excludeTokens.length > 0) && (includeTokens.length > 0)) {
31
33
  return { error: "Cannot mix include and exclude " + entityName + " filters. Use either \"a,b\" (include) or \"-a,-b\" (exclude).", validTags: [] };
32
34
  }
@@ -34,9 +36,10 @@ function parseIncludeExcludeFilter(param, entityName, knownValues) {
34
36
  const filterTags = isExclude ? excludeTokens : includeTokens;
35
37
  // Validate all values against the known set. Tokens are already lowercased, so normalize known values for case-insensitive comparison.
36
38
  const knownSet = new Set(knownValues.map((v) => v.toLowerCase()));
37
- const unknownTags = filterTags.filter((tag) => !knownSet.has(tag));
39
+ const filterSet = new Set(filterTags);
40
+ const unknownTags = [...filterSet.difference(knownSet)];
38
41
  if (unknownTags.length > 0) {
39
- return { error: "Unknown " + entityName + "(s): " + unknownTags.join(", ") + ".", validTags: knownValues.sort() };
42
+ return { error: "Unknown " + entityName + "(s): " + unknownTags.join(", ") + ".", validTags: knownValues.toSorted() };
40
43
  }
41
44
  return { filter: { exclude: isExclude, tags: filterTags } };
42
45
  }
@@ -75,7 +78,7 @@ export function resolveBaseUrl(req) {
75
78
  // Check X-Forwarded-Host first (may contain multiple hosts if proxied through multiple layers, take the first one). Then fall back to the standard Host header,
76
79
  // and finally to the configured server settings.
77
80
  const forwardedHost = req.get("x-forwarded-host");
78
- const host = forwardedHost ? forwardedHost.split(",")[0].trim() : req.get("host");
81
+ const host = forwardedHost ? (forwardedHost.split(",")[0] ?? "").trim() : req.get("host");
79
82
  const fallbackHost = CONFIG.server.host + ":" + String(CONFIG.server.port);
80
83
  const resolvedHost = host ?? fallbackHost;
81
84
  return protocol + "://" + resolvedHost;
@@ -98,10 +101,11 @@ export function generatePlaylistContent(baseUrl, serviceFilter, tagFilter, sort,
98
101
  const lines = ["#EXTM3U", ""];
99
102
  const sortField = sort ?? CONFIG.channels.channelSortField;
100
103
  const sortDir = direction ?? CONFIG.channels.channelSortDirection;
101
- // Sort channel keys using the specified (or saved) sort field and direction. Default is name ascending.
102
- const channelNames = Object.keys(channels).sort((a, b) => compareChannelSort(channels[a], a, channels[b], b, sortField, sortDir));
103
- for (const name of channelNames) {
104
- const channel = channels[name];
104
+ // Sort channel entries using the specified (or saved) sort field and direction. Default is name ascending. Iterating entries rather than keys keeps channel
105
+ // references fully typed throughout the loop, avoiding repeated Record lookups that noUncheckedIndexedAccess flags as possibly-undefined.
106
+ const channelEntries = Object.entries(channels)
107
+ .sort(([keyA, channelA], [keyB, channelB]) => compareChannelSort(channelA, keyA, channelB, keyB, sortField, sortDir));
108
+ for (const [name, channel] of channelEntries) {
105
109
  // Apply the service filter if specified.
106
110
  if (serviceFilter) {
107
111
  const selectedKey = resolveServiceKey(name);
@@ -112,7 +116,7 @@ export function generatePlaylistContent(baseUrl, serviceFilter, tagFilter, sort,
112
116
  continue;
113
117
  }
114
118
  }
115
- // Compute effective tags once per channel — used for both the tag filter check and M3U attribute generation. Tags are intersected with the active vocabulary
119
+ // Compute effective tags once per channel - used for both the tag filter check and M3U attribute generation. Tags are intersected with the active vocabulary
116
120
  // so deleted tags are invisible.
117
121
  const effectiveTags = getChannelEffectiveTags(channel);
118
122
  // Apply the tag filter if specified. Filter tags are lowercase (normalized by parseIncludeExcludeFilter), so compare case-insensitively.
@@ -128,11 +132,14 @@ export function generatePlaylistContent(baseUrl, serviceFilter, tagFilter, sort,
128
132
  const streamUrl = baseUrl + "/hls/" + name + "/stream.m3u8";
129
133
  // Build the EXTINF line with required channel-id attribute and tvg-name for the friendly display name. Include channel-number when the user has specified one,
130
134
  // tvc-guide-stationid for Gracenote guide data when a stationId is defined, tvg-shift for EPG time offset, tvg-logo for custom channel logos, and group-title
131
- // for organizational tags (semicolon-delimited for IPTV middleware compatibility).
135
+ // for organizational tags (semicolon-delimited for IPTV middleware compatibility). Every user-controlled attribute value flows through escapeM3uAttribute so
136
+ // an embedded double-quote, backslash, or line break cannot terminate the attribute early or break the EXTINF line. Structurally server-controlled values
137
+ // (the channel key, numeric channelNumber and tvgShift, and the fixed placeholders constant) skip the helper because validation guarantees they cannot carry
138
+ // those characters.
132
139
  const channelNumberAttr = channel.channelNumber ? " channel-number=\"" + String(channel.channelNumber) + "\"" : "";
133
- const groupTitleAttr = (effectiveTags.length > 0) ? " group-title=\"" + effectiveTags.join(";") + "\"" : "";
134
- const logoAttr = channel.logoUrl ? " tvg-logo=\"" + channel.logoUrl + "\"" : "";
135
- const stationIdAttr = channel.stationId ? " tvc-guide-stationid=\"" + channel.stationId + "\"" : "";
140
+ const groupTitleAttr = (effectiveTags.length > 0) ? " group-title=\"" + escapeM3uAttribute(effectiveTags.join(";")) + "\"" : "";
141
+ const logoAttr = channel.logoUrl ? " tvg-logo=\"" + escapeM3uAttribute(channel.logoUrl) + "\"" : "";
142
+ const stationIdAttr = channel.stationId ? " tvc-guide-stationid=\"" + escapeM3uAttribute(channel.stationId) + "\"" : "";
136
143
  const tvgShiftAttr = (channel.tvgShift !== undefined) ? " tvg-shift=\"" + String(channel.tvgShift) + "\"" : "";
137
144
  // For channels without EPG data, emit tvc-guide-tags so Channels DVR's Automatic Channels can filter on them. Static page channels also get
138
145
  // tvc-guide-placeholders to provide a 24-hour guide block since they display persistent content without time-based programming.
@@ -140,16 +147,20 @@ export function generatePlaylistContent(baseUrl, serviceFilter, tagFilter, sort,
140
147
  let tvcPlaceholdersAttr = "";
141
148
  if (!channel.stationId) {
142
149
  if (effectiveTags.length > 0) {
143
- tvcTagsAttr = " tvc-guide-tags=\"" + effectiveTags.join(", ") + "\"";
150
+ tvcTagsAttr = " tvc-guide-tags=\"" + escapeM3uAttribute(effectiveTags.join(", ")) + "\"";
144
151
  }
145
152
  const { profile } = getProfileForChannel(channel);
146
153
  if (profile.staticCapture) {
147
154
  tvcPlaceholdersAttr = " tvc-guide-placeholders=\"86400\"";
148
155
  }
149
156
  }
150
- const attrs = "#EXTINF:-1 channel-id=\"" + name + "\"" + channelNumberAttr + groupTitleAttr + logoAttr + " tvg-name=\"" + displayName + "\"" + stationIdAttr +
151
- tvcPlaceholdersAttr + tvcTagsAttr + tvgShiftAttr;
152
- const extinfLine = attrs + "," + displayName;
157
+ // The channel-id value is the iteration key (validated to /^[a-z0-9-]+$/ at the input boundary), so it cannot carry the structural characters that
158
+ // escapeM3uAttribute exists to neutralize. We embed it directly. The comma-suffix display name is M3U's terminator-by-end-of-line position rather than a
159
+ // quoted attribute, so backslash and double-quote are legal there and pass through verbatim - users see the original characters in their guide; only literal
160
+ // CR/LF (which would split the EXTINF across multiple lines) gets collapsed to a single space.
161
+ const attrs = "#EXTINF:-1 channel-id=\"" + name + "\"" + channelNumberAttr + groupTitleAttr + logoAttr + " tvg-name=\"" + escapeM3uAttribute(displayName) +
162
+ "\"" + stationIdAttr + tvcPlaceholdersAttr + tvcTagsAttr + tvgShiftAttr;
163
+ const extinfLine = attrs + "," + displayName.replace(/[\r\n]+/g, " ");
153
164
  lines.push(extinfLine);
154
165
  lines.push(streamUrl);
155
166
  lines.push("");
@@ -169,17 +180,17 @@ export function setupPlaylistEndpoint(app) {
169
180
  // organizational tags, ?sort= for sort field override, and ?direction= for sort direction override.
170
181
  app.get("/playlist", (req, res) => {
171
182
  const baseUrl = resolveBaseUrl(req);
172
- const serviceParam = typeof req.query.service === "string" ? req.query.service.trim() : undefined;
173
- const tagParam = typeof req.query.tag === "string" ? req.query.tag.trim() : undefined;
174
- const sortParam = typeof req.query.sort === "string" ? req.query.sort.trim() || undefined : undefined;
175
- const directionParam = typeof req.query.direction === "string" ? req.query.direction.trim().toLowerCase() || undefined : undefined;
183
+ const serviceParam = typeof req.query["service"] === "string" ? req.query["service"].trim() : undefined;
184
+ const tagParam = typeof req.query["tag"] === "string" ? req.query["tag"].trim() : undefined;
185
+ const sortParam = typeof req.query["sort"] === "string" ? req.query["sort"].trim() || undefined : undefined;
186
+ const directionParam = typeof req.query["direction"] === "string" ? req.query["direction"].trim().toLowerCase() || undefined : undefined;
176
187
  let serviceFilter;
177
188
  let tagFilter;
178
189
  // Parse and validate the service filter if specified.
179
190
  if (serviceParam) {
180
191
  const result = parseServiceFilter(serviceParam);
181
192
  if ("error" in result) {
182
- res.status(400).json({ error: result.error, validTags: result.validTags });
193
+ sendValidationError(res, { error: result.error, validTags: result.validTags });
183
194
  return;
184
195
  }
185
196
  serviceFilter = result.filter;
@@ -188,19 +199,19 @@ export function setupPlaylistEndpoint(app) {
188
199
  if (tagParam) {
189
200
  const result = parseTagFilter(tagParam);
190
201
  if ("error" in result) {
191
- res.status(400).json({ error: result.error, validTags: result.validTags });
202
+ sendValidationError(res, { error: result.error, validTags: result.validTags });
192
203
  return;
193
204
  }
194
205
  tagFilter = result.filter;
195
206
  }
196
207
  // Validate the sort field if specified.
197
208
  if (sortParam && !VALID_SORT_FIELDS.has(sortParam)) {
198
- res.status(400).json({ error: "Invalid sort field: " + sortParam + ".", validFields: [...VALID_SORT_FIELDS].toSorted() });
209
+ sendValidationError(res, { error: "Invalid sort field: " + sortParam + ".", validFields: [...VALID_SORT_FIELDS].toSorted() });
199
210
  return;
200
211
  }
201
212
  // Validate the sort direction if specified.
202
213
  if (directionParam && !VALID_SORT_DIRECTIONS.has(directionParam)) {
203
- res.status(400).json({ error: "Invalid sort direction: " + directionParam + ".", validDirections: [...VALID_SORT_DIRECTIONS] });
214
+ sendValidationError(res, { error: "Invalid sort direction: " + directionParam + ".", validDirections: [...VALID_SORT_DIRECTIONS] });
204
215
  return;
205
216
  }
206
217
  const sort = sortParam;
@@ -1 +1 @@
1
- {"version":3,"file":"playlist.js","sourceRoot":"","sources":["../../src/routes/playlist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playlist.js","sourceRoot":"","sources":["../../src/routes/playlist.ts"],"names":[],"mappings":"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"}
@@ -81,7 +81,7 @@ export function generateOverviewContent(baseUrl) {
81
81
  return [
82
82
  // Active streams table at the top.
83
83
  generateActiveStreamsSection(),
84
- // What Is PrismCast?
84
+ // What is PrismCast.
85
85
  "<div class=\"section\">",
86
86
  "<h3>What Is PrismCast?</h3>",
87
87
  "<p>PrismCast captures live video from web-based TV players by driving a real Chrome browser. It navigates to streaming sites, captures the ",
@@ -399,6 +399,8 @@ export function generateApiReferenceContent() {
399
399
  "<a href=\"#api-channels\" class=\"api-index-heading\">Channels</a>",
400
400
  "<span class=\"api-index-desc\">Add, edit, import, and toggle channel definitions.</span>",
401
401
  "<a href=\"#api-channels\"><code>POST /config/channels</code></a>",
402
+ "<a href=\"#api-channels\"><code>PUT /config/channels/:key</code></a>",
403
+ "<a href=\"#api-channels\"><code>DELETE /config/channels/:key</code></a>",
402
404
  "<a href=\"#api-channels\"><code>GET /config/channels/export</code></a>",
403
405
  "<a href=\"#api-channels\"><code>POST /config/channels/import</code></a>",
404
406
  "</div>",
@@ -406,7 +408,7 @@ export function generateApiReferenceContent() {
406
408
  "<a href=\"#api-services\" class=\"api-index-heading\">Services</a>",
407
409
  "<span class=\"api-index-desc\">Channel discovery, service selection, and playlist filtering.</span>",
408
410
  "<a href=\"#api-services\"><code>GET /services/:slug/channels</code></a>",
409
- "<a href=\"#api-services\"><code>POST /config/service</code></a>",
411
+ "<a href=\"#api-services\"><code>PUT /config/channels/:key/service</code></a>",
410
412
  "<a href=\"#api-services\"><code>POST /config/service-filter</code></a>",
411
413
  "</div>",
412
414
  "<div class=\"api-index-group\">",
@@ -503,8 +505,27 @@ export function generateApiReferenceContent() {
503
505
  "<tr><th style=\"width: 35%;\">Endpoint</th><th>Description</th></tr>",
504
506
  "<tr>",
505
507
  "<td class=\"endpoint\"><code>POST /config/channels</code></td>",
506
- "<td>Add, edit, delete, or revert user channels. Body includes <code>action</code> (add/edit/delete/revert) and channel data. " +
507
- "Revert removes a predefined channel override, restoring defaults.</td>",
508
+ "<td>Create a new user channel. Body is the channel object (<code>key</code>, <code>name</code>, <code>url</code>, and optional fields). " +
509
+ "Returns a channel table patch and a <code>serviceWarning</code> when the new channel's service isn't in the active filter.</td>",
510
+ "</tr>",
511
+ "<tr>",
512
+ "<td class=\"endpoint\"><code>PUT /config/channels/:key</code></td>",
513
+ "<td>Replace an existing channel. Body is the full channel object. For predefined channels, the handler computes a delta against the canonical " +
514
+ "definition; submitting values matching the canonical or a sibling variant implicitly reverts the override.</td>",
515
+ "</tr>",
516
+ "<tr>",
517
+ "<td class=\"endpoint\"><code>PATCH /config/channels/:key</code></td>",
518
+ "<td>Partial update from inline cell edits. Body contains exactly one of <code>channelNumber</code>, <code>hdhrEnabled</code>, <code>stationId</code>, " +
519
+ "or <code>tags</code>. A typed value sets the field; <code>null</code> clears it.</td>",
520
+ "</tr>",
521
+ "<tr>",
522
+ "<td class=\"endpoint\"><code>DELETE /config/channels/:key</code></td>",
523
+ "<td>Delete a user channel. Fails if the key is not a user-defined channel. If a predefined version exists with the same key, the returned patch " +
524
+ "replaces the row with the predefined original.</td>",
525
+ "</tr>",
526
+ "<tr>",
527
+ "<td class=\"endpoint\"><code>POST /config/channels/:key/revert</code></td>",
528
+ "<td>Remove a predefined channel override, restoring the predefined defaults.</td>",
508
529
  "</tr>",
509
530
  "<tr>",
510
531
  "<td class=\"endpoint\"><a href=\"/config/channels/export\"><code>GET /config/channels/export</code></a></td>",
@@ -552,8 +573,8 @@ export function generateApiReferenceContent() {
552
573
  "Add <code>?refresh=true</code> to clear caches and force a fresh discovery walk.</td>",
553
574
  "</tr>",
554
575
  "<tr>",
555
- "<td class=\"endpoint\"><code>POST /config/service</code></td>",
556
- "<td>Update service selection for a multi-service channel. Body: <code>{ \"channel\": \"nbc\", \"service\": \"nbc-hulu\" }</code></td>",
576
+ "<td class=\"endpoint\"><code>PUT /config/channels/:key/service</code></td>",
577
+ "<td>Update service selection for a multi-service channel. Body: <code>{ \"service\": \"nbc-hulu\" }</code></td>",
557
578
  "</tr>",
558
579
  "<tr>",
559
580
  "<td class=\"endpoint\"><code>POST /config/service-filter</code></td>",
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/routes/root/content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/routes/root/content.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { generateBaseStyles, generatePageWrapper, generateTabButton, generateTab
4
4
  import { generateChannelsSubtabScript, generateConfigSubtabScript, generateSharedUtilitiesScript, generateStatusScript } from "./scripts/index.js";
5
5
  import { generateLandingPageStyles } from "./styles.js";
6
6
  import { resolveBaseUrl } from "../playlist.js";
7
+ import { sendSuccess } from "../config/http/envelope.js";
7
8
  /* The landing page provides operators with all the information they need to integrate with Channels DVR. It features a tabbed interface with six sections:
8
9
  *
9
10
  * 1. Overview - Introduction to PrismCast and Quick Start instructions
@@ -91,11 +92,7 @@ export function setupRootEndpoint(app) {
91
92
  const currentVersion = getPackageVersion();
92
93
  await checkForUpdates(currentVersion, true);
93
94
  const versionInfo = getVersionInfo(currentVersion);
94
- res.json({
95
- currentVersion,
96
- latestVersion: versionInfo.latestVersion,
97
- updateAvailable: versionInfo.updateAvailable
98
- });
95
+ sendSuccess(res, { data: { currentVersion, latestVersion: versionInfo.latestVersion, updateAvailable: versionInfo.updateAvailable } });
99
96
  });
100
97
  // Changelog fetch endpoint. Returns changelog items for the appropriate version (latest if update available, otherwise current). Falls back to current version's
101
98
  // changelog if the latest version's changelog isn't available.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/root/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/root/index.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@ export function generateChannelsSubtabScript() {
34
34
  " if(data.success) {",
35
35
  " showToast(data.message || 'Profile deleted.', 'success');",
36
36
  " if(data.panelHtml) { applyProfilePanel(data.panelHtml); }",
37
- " } else { showToast('Failed to delete profile: ' + (data.error || 'Unknown error.'), 'error'); }",
37
+ " } else { showToast('Failed to delete profile: ' + extractErrorMessage(data, 'Unknown error.'), 'error'); }",
38
38
  " } catch(err) { console.error('Profile delete request failed.', err); showToast('Failed to delete profile.', 'error'); }",
39
39
  " };",
40
40
  // Edit an existing user profile by pre-populating the wizard.
@@ -74,7 +74,7 @@ export function generateChannelsSubtabScript() {
74
74
  " };",
75
75
  // Pending import data stored while the import preview modal is open.
76
76
  " let pendingImportData = null;",
77
- // Import a service pack via file picker — shows a preview modal before importing.
77
+ // Import a service pack via file picker - shows a preview modal before importing.
78
78
  " window.startServiceImport = () => {",
79
79
  " const input = document.createElement('input');",
80
80
  " input.type = 'file';",
@@ -144,7 +144,7 @@ export function generateChannelsSubtabScript() {
144
144
  " showToast(msg, 'success');",
145
145
  " if(result.panelHtml) { applyProfilePanel(result.panelHtml); }",
146
146
  " } else {",
147
- " showToast('Import failed: ' + (result.error || 'Unknown error.'), 'error');",
147
+ " showToast('Import failed: ' + extractErrorMessage(result, 'Unknown error.'), 'error');",
148
148
  " }",
149
149
  " } catch(err) { console.error('Service pack import request failed.', err); closeImportModal(); showToast('Import request failed.', 'error'); }",
150
150
  " };",
@@ -439,7 +439,7 @@ export function generateChannelsSubtabScript() {
439
439
  " const hideInput = document.getElementById('wizard-hide-selector');",
440
440
  " if(hideInput) hideInput.addEventListener('input', function() { s.hideSelector = this.value; });",
441
441
  // Step 4: add-domain button and domain inputs with auto-fill for service tag. Per-iteration let bindings from for...of.entries() capture the correct index
442
- // in each closure — no IIFE wrapper needed.
442
+ // in each closure - no IIFE wrapper needed.
443
443
  " const addDomainBtn = document.getElementById('wizard-add-domain-btn');",
444
444
  " if(addDomainBtn) addDomainBtn.addEventListener('click', addWizardDomain);",
445
445
  " for(const [ idx, row ] of document.querySelectorAll('.wizard-domain-row').entries()) {",
@@ -544,7 +544,7 @@ export function generateChannelsSubtabScript() {
544
544
  " startProfileTest(s.domains[0].domain);",
545
545
  " }",
546
546
  " } else {",
547
- " profileWizard.setError(data.error || 'Failed to save profile.');",
547
+ " profileWizard.setError(extractErrorMessage(data, 'Failed to save profile.'));",
548
548
  " }",
549
549
  " } catch(err) {",
550
550
  " console.error('Profile save request failed.', err);",
@@ -574,7 +574,7 @@ export function generateChannelsSubtabScript() {
574
574
  " document.getElementById('test-check-btn').style.display = ",
575
575
  " Object.keys(testSelectors).length > 0 ? '' : 'none';",
576
576
  " } else {",
577
- " showToast('Failed to start test: ' + (data.error || 'Unknown error.'), 'error');",
577
+ " showToast('Failed to start test: ' + extractErrorMessage(data, 'Unknown error.'), 'error');",
578
578
  " }",
579
579
  " } catch(e) { console.error('Profile test failed to start.', e); showToast('Failed to start test.', 'error'); }",
580
580
  " };",
@@ -716,7 +716,7 @@ export function generateChannelsSubtabScript() {
716
716
  " (async () => {",
717
717
  " try {",
718
718
  " const r = await fetch('/services/' + encodeURIComponent(slug) + '/channels?lineup=true');",
719
- " if(!r.ok) { const d = await r.json(); throw new Error(d.error || 'Discovery failed.'); }",
719
+ " if(!r.ok) { const d = await r.json(); throw new Error(extractErrorMessage(d, 'Discovery failed.')); }",
720
720
  " const channels = await r.json();",
721
721
  " if(browseWizard.state.slug !== slug) return;",
722
722
  " renderBrowseChannelList(channels, slug, label);",
@@ -800,7 +800,7 @@ export function generateChannelsSubtabScript() {
800
800
  " html += '</div>';",
801
801
  " document.getElementById('browse-content').innerHTML = html;",
802
802
  " browseWizard.setTitle('Browse Channels <span class=\"browse-header-count\">(' + esc(label) + ' \\u2014 ' + channels.length + ' channels)</span>');",
803
- // Set indeterminate state on checkboxes for channels that exist via a different service. The indeterminate property cannot be set via HTML attributes —
803
+ // Set indeterminate state on checkboxes for channels that exist via a different service. The indeterminate property cannot be set via HTML attributes -
804
804
  // it must be set via JavaScript after the elements are in the DOM.
805
805
  " const switchCbs = document.querySelectorAll('.browse-channel-cb[data-original=\"switch\"]');",
806
806
  " for(const sc of switchCbs) sc.indeterminate = true;",
@@ -945,7 +945,7 @@ export function generateChannelsSubtabScript() {
945
945
  " } else {",
946
946
  " btn.disabled = false;",
947
947
  " updateBrowseCount();",
948
- " showToast('Failed to add channels: ' + (data.error || 'Unknown error.'), 'error');",
948
+ " showToast('Failed to add channels: ' + extractErrorMessage(data, 'Unknown error.'), 'error');",
949
949
  " }",
950
950
  " } catch(err) {",
951
951
  " console.error('Browse channels request failed.', err);",
@@ -1024,7 +1024,7 @@ export function generateChannelsSubtabScript() {
1024
1024
  " });",
1025
1025
  " const data = await res.json();",
1026
1026
  " if(data.success) renderSetupAuthWaiting();",
1027
- " else showToast('Failed to start login: ' + (data.error || 'Unknown error.'), 'error');",
1027
+ " else showToast('Failed to start login: ' + extractErrorMessage(data, 'Unknown error.'), 'error');",
1028
1028
  " } catch(e) { console.error('Login start request failed.', e); showToast('Failed to start login.', 'error'); }",
1029
1029
  " }",
1030
1030
  // Mark the current service auth as done and advance to the next.
@@ -1166,7 +1166,7 @@ export function generateChannelsSubtabScript() {
1166
1166
  " });",
1167
1167
  " const data = await res.json();",
1168
1168
  " if(!data.success) {",
1169
- " errorDiv.textContent = data.error || 'Failed to create tag.';",
1169
+ " errorDiv.textContent = extractErrorMessage(data, 'Failed to create tag.');",
1170
1170
  " errorDiv.style.display = '';",
1171
1171
  " return;",
1172
1172
  " }",
@@ -1183,7 +1183,7 @@ export function generateChannelsSubtabScript() {
1183
1183
  " const res = await fetch('/config/tags/' + encodeURIComponent(tag), { method: 'DELETE' });",
1184
1184
  " const data = await res.json();",
1185
1185
  " if(!data.success) {",
1186
- " showToast(data.error || 'Failed to delete tag.', 'error');",
1186
+ " showToast(extractErrorMessage(data, 'Failed to delete tag.'), 'error');",
1187
1187
  " return;",
1188
1188
  " }",
1189
1189
  " applyTagResponse(data, 'Tag deleted: ' + tag);",
@@ -1202,7 +1202,7 @@ export function generateChannelsSubtabScript() {
1202
1202
  " });",
1203
1203
  " const data = await res.json();",
1204
1204
  " if(!data.success) {",
1205
- " showToast(data.error || 'Failed to restore tag.', 'error');",
1205
+ " showToast(extractErrorMessage(data, 'Failed to restore tag.'), 'error');",
1206
1206
  " return;",
1207
1207
  " }",
1208
1208
  " applyTagResponse(data, 'Tag restored: ' + tag);",
@@ -1211,7 +1211,7 @@ export function generateChannelsSubtabScript() {
1211
1211
  " showToast('Failed to restore tag.', 'error');",
1212
1212
  " }",
1213
1213
  " };",
1214
- // Tag Column Filter — client-side view filter that shows/hides rows based on their data-channel-tags attribute. Transient (not persisted, resets on page load).
1214
+ // Tag Column Filter - client-side view filter that shows/hides rows based on their data-channel-tags attribute. Transient (not persisted, resets on page load).
1215
1215
  // All tag checkboxes start checked (show all). Unchecking a tag hides rows that don't have ANY of the remaining checked tags.
1216
1216
  " window.applyTagColumnFilter = () => {",
1217
1217
  " const checkboxes = document.querySelectorAll('.tag-filter-checkbox');",
@@ -1280,7 +1280,7 @@ export function generateChannelsSubtabScript() {
1280
1280
  " const code = document.querySelector('.playlist-hint-content code');",
1281
1281
  " if(code) { copyToClipboard(code.textContent, 'Playlist URL copied to clipboard.'); }",
1282
1282
  " };",
1283
- // Inline tag rename — replaces the tag pill with an input field. The original span is saved so it can be restored on cancel or error without a page reload.
1283
+ // Inline tag rename - replaces the tag pill with an input field. The original span is saved so it can be restored on cancel or error without a page reload.
1284
1284
  " window.startTagRename = (span, oldTag) => {",
1285
1285
  " const originalSpan = span;",
1286
1286
  " const input = document.createElement('input');",
@@ -1304,7 +1304,7 @@ export function generateChannelsSubtabScript() {
1304
1304
  " const data = await res.json();",
1305
1305
  " if(!data.success) {",
1306
1306
  " restore();",
1307
- " showToast(data.error || 'Failed to rename tag.', 'error');",
1307
+ " showToast(extractErrorMessage(data, 'Failed to rename tag.'), 'error');",
1308
1308
  " return;",
1309
1309
  " }",
1310
1310
  " applyTagResponse(data, 'Tag renamed: ' + oldTag + ' \\u2192 ' + newTag);",