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,5 +1,6 @@
1
1
  import { endLoginMode, getLoginStatus, startLoginMode } from "../browser/index.js";
2
2
  import { getResolvedChannel, resolveServiceKey } from "../config/services.js";
3
+ import { sendConflictError, sendNotFoundError, sendSuccess, sendValidationError } from "./config/http/envelope.js";
3
4
  import { getDomainConfig } from "../config/sites.js";
4
5
  /**
5
6
  * Sets up authentication routes for channel login.
@@ -24,8 +25,7 @@ export function setupAuthEndpoint(app) {
24
25
  const resolvedKey = resolveServiceKey(body.channel);
25
26
  const channel = getResolvedChannel(resolvedKey);
26
27
  if (!channel) {
27
- const response = { error: "Channel not found.", success: false };
28
- res.status(404).json(response);
28
+ sendNotFoundError(res, "Channel not found.");
29
29
  return;
30
30
  }
31
31
  url = channel.url;
@@ -34,8 +34,7 @@ export function setupAuthEndpoint(app) {
34
34
  url = body.url;
35
35
  }
36
36
  if (!url) {
37
- const response = { error: "Either channel or url must be provided.", success: false };
38
- res.status(400).json(response);
37
+ sendValidationError(res, "Either channel or url must be provided.");
39
38
  return;
40
39
  }
41
40
  // Check if the domain has a login URL override. Some sites (e.g., Fox.com) show different authentication options on their homepage vs their player page.
@@ -46,12 +45,10 @@ export function setupAuthEndpoint(app) {
46
45
  // Start login mode.
47
46
  const result = await startLoginMode(url);
48
47
  if (result.success) {
49
- const response = { message: "Login mode started. Complete authentication in the browser window.", success: true };
50
- res.json(response);
48
+ sendSuccess(res, { message: "Login mode started. Complete authentication in the browser window." });
51
49
  }
52
50
  else {
53
- const response = { error: result.error, success: false };
54
- res.status(409).json(response);
51
+ sendConflictError(res, result.error ?? "Login mode could not be started.");
55
52
  }
56
53
  });
57
54
  /**
@@ -61,8 +58,7 @@ export function setupAuthEndpoint(app) {
61
58
  */
62
59
  app.post("/auth/done", async (_req, res) => {
63
60
  await endLoginMode();
64
- const response = { message: "Login mode ended.", success: true };
65
- res.json(response);
61
+ sendSuccess(res, { message: "Login mode ended." });
66
62
  });
67
63
  /**
68
64
  * GET /auth/status - Get current login status.
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA2CrD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAE5C;;;;;;;;OAQG;IACH,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAE3E,MAAM,IAAI,GAAG,GAAG,CAAC,IAAoB,CAAC;QAEtC,gDAAgD;QAChD,IAAI,GAAuB,CAAC;QAE5B,IAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAEhB,uJAAuJ;YACvJ,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAEhD,IAAG,CAAC,OAAO,EAAE,CAAC;gBAEZ,MAAM,QAAQ,GAAkB,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAEhF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAE/B,OAAO;YACT,CAAC;YAED,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACpB,CAAC;aAAM,IAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEnB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACjB,CAAC;QAED,IAAG,CAAC,GAAG,EAAE,CAAC;YAER,MAAM,QAAQ,GAAkB,EAAE,KAAK,EAAE,yCAAyC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAErG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE/B,OAAO;QACT,CAAC;QAED,yJAAyJ;QACzJ,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAG,YAAY,EAAE,QAAQ,EAAE,CAAC;YAE1B,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC;QAC9B,CAAC;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAEzC,IAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAElB,MAAM,QAAQ,GAAkB,EAAE,OAAO,EAAE,oEAAoE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAEjI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YAEN,MAAM,QAAQ,GAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAExE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH;;;;OAIG;IACH,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAiB,EAAE;QAE3E,MAAM,YAAY,EAAE,CAAC;QAErB,MAAM,QAAQ,GAAkB,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAEhF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH;;;;OAIG;IACH,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;QAE7D,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAEhC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA4BrD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAE5C;;;;;;;;OAQG;IACH,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAE3E,MAAM,IAAI,GAAG,GAAG,CAAC,IAAoB,CAAC;QAEtC,gDAAgD;QAChD,IAAI,GAAuB,CAAC;QAE5B,IAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAEhB,uJAAuJ;YACvJ,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAEhD,IAAG,CAAC,OAAO,EAAE,CAAC;gBAEZ,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;gBAE7C,OAAO;YACT,CAAC;YAED,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACpB,CAAC;aAAM,IAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEnB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACjB,CAAC;QAED,IAAG,CAAC,GAAG,EAAE,CAAC;YAER,mBAAmB,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAC;YAEpE,OAAO;QACT,CAAC;QAED,yJAAyJ;QACzJ,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAG,YAAY,EAAE,QAAQ,EAAE,CAAC;YAE1B,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC;QAC9B,CAAC;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAEzC,IAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAElB,WAAW,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,oEAAoE,EAAE,CAAC,CAAC;QACtG,CAAC;aAAM,CAAC;YAEN,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,IAAI,kCAAkC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH;;;;OAIG;IACH,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAiB,EAAE;QAE3E,MAAM,YAAY,EAAE,CAAC;QAErB,WAAW,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH;;;;OAIG;IACH,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;QAE7D,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAEhC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -233,11 +233,11 @@ export function generateWizardModal(options) {
233
233
  // manages active/completed/clickable states during navigation.
234
234
  if (steps && (steps.length > 0)) {
235
235
  lines.push("<div class=\"wizard-steps\" id=\"" + escapeHtml(resolvedStepsId) + "\">");
236
- for (let i = 0; i < steps.length; i++) {
236
+ for (const [i, step] of steps.entries()) {
237
237
  const stepClass = (i === 0) ? "wizard-step active" : "wizard-step";
238
238
  lines.push("<div class=\"" + stepClass + "\" data-step=\"" + String(i + 1) + "\">" +
239
239
  "<span class=\"step-circle\">" + String(i + 1) + "</span>" +
240
- "<span class=\"step-label\">" + escapeHtml(steps[i]) + "</span></div>");
240
+ "<span class=\"step-label\">" + escapeHtml(step) + "</span></div>");
241
241
  // Connecting line between steps. Omitted after the last step.
242
242
  if (i < steps.length - 1) {
243
243
  lines.push("<div class=\"wizard-step-line\"></div>");
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/routes/components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/routes/components.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Express } from "express";
2
+ /**
3
+ * Registers the /config/channels/modify endpoint on the Express application.
4
+ * @param app - The Express application.
5
+ */
6
+ export declare function registerBrowseRoutes(app: Express): void;
@@ -0,0 +1,195 @@
1
+ import { LOG, generateChannelKey, sanitizeString } from "../../../../utils/index.js";
2
+ import { disablePredefinedChannels, enablePredefinedChannels, isPredefinedChannel, mutateChannels, validateChannelUrl } from "../../../../config/userChannels.js";
3
+ import { getServiceTagForChannel, resolveServiceKey } from "../../../../config/services.js";
4
+ import { sendSuccess, sendValidationError } from "../../http/envelope.js";
5
+ import { PREDEFINED_CHANNELS } from "../../../../channels/index.js";
6
+ import { buildServiceFilterWarning } from "../http/serviceWarning.js";
7
+ import { route } from "../http/handler.js";
8
+ /**
9
+ * Builds a UserChannel object from a modify-request entry. When canonicalKey is set, the result is a service variant carrying only the binding fields needed
10
+ * to tune the channel via that service (canonicalKey, url, channelSelector). Identity comes from the canonical at resolution time per the architectural
11
+ * principle - variants are pure tuning data. When canonicalKey is absent, the result is a standalone canonical channel that owns its own identity (name,
12
+ * stationId, etc.).
13
+ *
14
+ * Per-affiliate identity (e.g., a local Chicago Fox affiliate that needs its own station ID) is modeled as a separate canonical channel rather than as a
15
+ * variant carrying override identity. The browse modal's "add" action (no canonicalKey) is the path for that case; "switch"/"enable" actions create variants
16
+ * which inherit identity from their canonical.
17
+ * @param entry - The raw entry fields as submitted by the browse modal.
18
+ * @param name - The sanitized display name (used for standalone canonicals only; variants inherit the name from the canonical).
19
+ * @param url - The sanitized URL.
20
+ * @param selector - The sanitized channelSelector.
21
+ * @param canonicalKey - The canonical channel key when this is a service variant, otherwise undefined.
22
+ * @returns The constructed UserChannel with only the relevant fields populated.
23
+ */
24
+ function buildUserChannel(entry, name, url, selector, canonicalKey) {
25
+ if (canonicalKey) {
26
+ // Service variant: binding fields only. stationId from the modify entry (often supplied by service-side discovery) is intentionally ignored - identity is
27
+ // canonical-only per the architectural principle. If a user wants per-affiliate identity, they create the affiliate as a separate canonical via the "add"
28
+ // action of the browse modal.
29
+ return {
30
+ canonicalKey,
31
+ channelSelector: selector || undefined,
32
+ url
33
+ };
34
+ }
35
+ // Standalone canonical: carries its own identity. stationId from the modify entry is preserved here because the standalone is the identity authority for
36
+ // this channel.
37
+ const channel = {
38
+ channelSelector: selector || undefined,
39
+ name,
40
+ url
41
+ };
42
+ if (entry.stationId) {
43
+ channel.stationId = sanitizeString(entry.stationId);
44
+ }
45
+ return channel;
46
+ }
47
+ /**
48
+ * Registers the /config/channels/modify endpoint on the Express application.
49
+ * @param app - The Express application.
50
+ */
51
+ export function registerBrowseRoutes(app) {
52
+ // POST /config/channels/modify - Apply channel modifications from the browse modal. Handles four action types: 'add' creates new user channels, 'enable'
53
+ // re-enables a disabled predefined channel and sets its service, 'switch' changes the service selection for an existing channel, and 'remove' reverts a channel
54
+ // to its canonical service (disabling it if no alternative service is available). Channel writes and service selection changes are batched into single saves to
55
+ // avoid redundant file I/O.
56
+ app.post("/config/channels/modify", route("apply changes", async (req, res) => {
57
+ const body = req.body;
58
+ const entries = body.channels;
59
+ if (!Array.isArray(entries) || (entries.length === 0)) {
60
+ sendValidationError(res, "No channels provided.");
61
+ return;
62
+ }
63
+ const affectedKeys = new Set();
64
+ const keysToDisable = new Set();
65
+ const errors = [];
66
+ let added = 0;
67
+ let removed = 0;
68
+ let switched = 0;
69
+ // Process all entries inside a single transactional mutation. Both channel changes and service-selection changes go through data.* directly so the entire
70
+ // batch lands as one atomic write - the framework persists exactly what the fn produced.
71
+ await mutateChannels((data) => {
72
+ const allKeys = new Set([...Object.keys(PREDEFINED_CHANNELS), ...Object.keys(data.channels)]);
73
+ for (const entry of entries) {
74
+ const action = entry.action ?? "add";
75
+ const name = sanitizeString(entry.name?.trim() ?? "");
76
+ const serviceSlug = entry.serviceSlug?.trim() ?? "";
77
+ // Enable re-enables a disabled predefined channel, then falls through to switch logic to set the service selection. Switch changes the service selection to
78
+ // point to the browsed service's variant, creating the variant as a user channel if needed.
79
+ if ((action === "switch") || (action === "enable")) {
80
+ const canonicalKey = entry.canonicalKey?.trim() ?? "";
81
+ if (!canonicalKey) {
82
+ errors.push("Entry for '" + name + "' missing canonical key.");
83
+ continue;
84
+ }
85
+ const variantKey = canonicalKey + "-" + serviceSlug;
86
+ // If no variant exists for this service, create one as a user channel. The canonicalKey parameter tells buildUserChannel to produce a variant (service-
87
+ // specific fields only, no identity fields).
88
+ if (!allKeys.has(variantKey)) {
89
+ data.channels[variantKey] = buildUserChannel(entry, name, sanitizeString(entry.url?.trim() ?? ""), sanitizeString(entry.channelSelector?.trim() ?? ""), canonicalKey);
90
+ allKeys.add(variantKey);
91
+ }
92
+ // Selecting a variant: store the explicit selection. variantKey is canonicalKey + "-" + serviceSlug, so it's never equal to canonicalKey here.
93
+ data.serviceSelections[canonicalKey] = variantKey;
94
+ switched++;
95
+ affectedKeys.add(canonicalKey);
96
+ continue;
97
+ }
98
+ // Service removal. Three-tier fallback: clear the selection and let resolveServiceKey find the next enabled variant or canonical; if the resolved service is
99
+ // still this service (no alternative exists), disable the predefined channel or delete the user channel.
100
+ if (action === "remove") {
101
+ const canonicalKey = entry.canonicalKey?.trim() ?? "";
102
+ if (!canonicalKey) {
103
+ errors.push("Remove entry for '" + name + "' missing canonical key.");
104
+ continue;
105
+ }
106
+ // Clear the selection by deleting it (selecting the canonical default is represented as no entry).
107
+ Reflect.deleteProperty(data.serviceSelections, canonicalKey);
108
+ const resolvedKey = resolveServiceKey(canonicalKey);
109
+ const resolvedTag = getServiceTagForChannel(resolvedKey);
110
+ if (resolvedTag === serviceSlug) {
111
+ // No alternative service exists. Disable predefined channels or delete user channels.
112
+ if (isPredefinedChannel(canonicalKey)) {
113
+ keysToDisable.add(canonicalKey);
114
+ }
115
+ else {
116
+ Reflect.deleteProperty(data.channels, canonicalKey);
117
+ }
118
+ }
119
+ removed++;
120
+ affectedKeys.add(canonicalKey);
121
+ continue;
122
+ }
123
+ // Add. Creates a new user channel for channels not yet in the lineup. The browse modal sends 'add' only for genuinely new channels (no existing
124
+ // canonical). Channels that match existing canonicals appear as 'switch' state in the modal.
125
+ const url = sanitizeString(entry.url?.trim() ?? "");
126
+ const channelSelector = sanitizeString(entry.channelSelector?.trim() ?? "");
127
+ if (!name) {
128
+ errors.push("Channel entry missing name.");
129
+ continue;
130
+ }
131
+ if (!url) {
132
+ errors.push("Channel '" + name + "' missing URL.");
133
+ continue;
134
+ }
135
+ const urlError = validateChannelUrl(url);
136
+ if (urlError) {
137
+ errors.push("Channel '" + name + "': " + urlError);
138
+ continue;
139
+ }
140
+ const baseKey = generateChannelKey(name);
141
+ if (!baseKey) {
142
+ errors.push("Could not generate key for channel '" + name + "'.");
143
+ continue;
144
+ }
145
+ const canonicalExists = allKeys.has(baseKey);
146
+ const key = (canonicalExists && serviceSlug) ? baseKey + "-" + serviceSlug : baseKey;
147
+ if (allKeys.has(key)) {
148
+ continue;
149
+ }
150
+ // When the key differs from baseKey, this is a service variant - pass baseKey as canonicalKey so buildUserChannel produces a variant with only service-
151
+ // specific fields. Standalone channels (key === baseKey) get the full channel object with identity fields.
152
+ const newChannel = buildUserChannel(entry, name, url, channelSelector, (key !== baseKey) ? baseKey : undefined);
153
+ data.channels[key] = newChannel;
154
+ allKeys.add(key);
155
+ added++;
156
+ affectedKeys.add(canonicalExists ? baseKey : key);
157
+ }
158
+ });
159
+ // Enable predefined channels that had the "enable" action. Runs after the mutation since the config write makes the channel visible in the lineup.
160
+ const enableKeys = entries
161
+ .filter((e) => (e.action === "enable") && Boolean(e.canonicalKey?.trim()))
162
+ .map((e) => e.canonicalKey.trim());
163
+ if (enableKeys.length > 0) {
164
+ await enablePredefinedChannels(enableKeys);
165
+ }
166
+ await disablePredefinedChannels([...keysToDisable]);
167
+ for (const disabledKey of keysToDisable) {
168
+ affectedKeys.add(disabledKey);
169
+ }
170
+ const parts = [];
171
+ if (added > 0) {
172
+ parts.push("Added " + String(added) + " channel" + (added === 1 ? "" : "s") + ".");
173
+ }
174
+ if (switched > 0) {
175
+ parts.push("Switched " + String(switched) + " channel" + (switched === 1 ? "" : "s") + ".");
176
+ }
177
+ if (removed > 0) {
178
+ parts.push("Reverted " + String(removed) + " channel" + (removed === 1 ? "" : "s") + ".");
179
+ }
180
+ // Append the playlist-reload hint only when the batch actually produced changes. "No changes made." needs no reload, and the envelope's playlistHint option
181
+ // is the canonical append path - matches bulk.ts and crud.ts no-change responses which also skip the hint.
182
+ const hasChanges = (added + switched + removed) > 0;
183
+ LOG.info("Browse channels completed: %d added, %d switched, %d removed.", added, switched, removed);
184
+ // Check if the browsed service isn't in the active filter. All channels in a browse batch share the same service - derive the tag from the first add entry.
185
+ const firstAddUrl = (added > 0) ? entries.find((e) => (e.action === "add"))?.url : undefined;
186
+ const serviceWarning = firstAddUrl ? buildServiceFilterWarning(firstAddUrl) : undefined;
187
+ sendSuccess(res, {
188
+ affectedKeys: [...affectedKeys],
189
+ message: hasChanges ? parts.join(" ") : "No changes made.",
190
+ playlistHint: hasChanges,
191
+ serviceWarning
192
+ });
193
+ }));
194
+ }
195
+ //# sourceMappingURL=browse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browse.js","sourceRoot":"","sources":["../../../../../src/routes/config/channels/endpoints/browse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Express } from "express";
2
+ /**
3
+ * Registers the bulk channel-operation endpoints on the Express application.
4
+ * @param app - The Express application.
5
+ */
6
+ export declare function registerBulkRoutes(app: Express): void;
@@ -0,0 +1,128 @@
1
+ import { VALID_SORT_FIELDS, compareChannelSort } from "../../../../config/services.js";
2
+ import { applyChannelDelta, getEffectiveHdhrEnabled, getVisibleChannels, isInVocabulary, isVisibleChannel, mutateChannels, tagsMatch, transformChannelTags } from "../../../../config/userChannels.js";
3
+ import { sendError, sendSuccess, sendValidationError } from "../../http/envelope.js";
4
+ import { LOG } from "../../../../utils/index.js";
5
+ import { route } from "../http/handler.js";
6
+ /**
7
+ * Registers the bulk channel-operation endpoints on the Express application.
8
+ * @param app - The Express application.
9
+ */
10
+ export function registerBulkRoutes(app) {
11
+ // POST /config/channels/auto-number - Assign sequential channel numbers to visible channels in the current sort order, or clear all channel numbers when
12
+ // start is 0. Overwrites existing channel numbers for affected channels.
13
+ app.post("/config/channels/auto-number", route("auto-number channels", async (req, res) => {
14
+ const body = req.body;
15
+ const start = (typeof body.start === "number") ? body.start : 1;
16
+ const clearMode = (start === 0);
17
+ const sortField = body.sortField ?? "name";
18
+ const sortDir = (body.sortDirection === "desc") ? "desc" : "asc";
19
+ if (!clearMode && ((start < 1) || (start > 99999))) {
20
+ sendValidationError(res, "Starting number must be between 1 and 99999.");
21
+ return;
22
+ }
23
+ if (!VALID_SORT_FIELDS.has(sortField)) {
24
+ sendValidationError(res, "Invalid sort field.");
25
+ return;
26
+ }
27
+ const listing = getVisibleChannels();
28
+ listing.sort((a, b) => compareChannelSort(a.channel, a.key, b.channel, b.key, sortField, sortDir));
29
+ const affectedKeys = [];
30
+ await mutateChannels((data) => {
31
+ // Bulk channelNumber operations target canonical entries: channelNumber is identity (canonical-only by architectural principle), and getVisibleChannels
32
+ // filters out variants so listing entries are always canonical keys. applyChannelDelta merges the partial delta with any existing stored entry, handling
33
+ // both the "no entry exists yet" and "entry exists with prior overrides" cases without per-call casts.
34
+ if (clearMode) {
35
+ // Clear channel numbers from all visible channels. Null signals "clear this field" - the normalizer handles the storage conventions.
36
+ for (const entry of listing) {
37
+ data.channels[entry.key] = applyChannelDelta(data.channels[entry.key], { channelNumber: null });
38
+ affectedKeys.push(entry.key);
39
+ }
40
+ return;
41
+ }
42
+ // Assign sequential numbers starting from the requested start value. Cap at 99999 to match the validation range.
43
+ for (const [i, entry] of listing.entries()) {
44
+ const num = start + i;
45
+ if (num > 99999) {
46
+ break;
47
+ }
48
+ data.channels[entry.key] = applyChannelDelta(data.channels[entry.key], { channelNumber: num });
49
+ affectedKeys.push(entry.key);
50
+ }
51
+ });
52
+ const action = clearMode ? "Cleared" : "Numbered";
53
+ LOG.info("%s channel numbers for %d channels.", action, affectedKeys.length);
54
+ const message = clearMode ?
55
+ ("Cleared channel numbers from " + String(affectedKeys.length) + " channels.") :
56
+ ("Numbered " + String(affectedKeys.length) + " channels.");
57
+ sendSuccess(res, { affectedKeys, message, playlistHint: true });
58
+ }));
59
+ // POST /config/channels/hdhr-bulk - Toggle HDHomeRun lineup inclusion for all visible channels.
60
+ app.post("/config/channels/hdhr-bulk", route("toggle HDHR settings", async (req, res) => {
61
+ const body = req.body;
62
+ const enable = body.enable === true;
63
+ const listing = getVisibleChannels();
64
+ const affectedKeys = [];
65
+ // Pre-compute which channels need updating. The listing snapshot is consistent since no concurrent mutation can change it before we enter the lock.
66
+ for (const entry of listing) {
67
+ const current = getEffectiveHdhrEnabled(entry.channel);
68
+ if (current === enable) {
69
+ continue;
70
+ }
71
+ affectedKeys.push(entry.key);
72
+ }
73
+ if (affectedKeys.length === 0) {
74
+ sendSuccess(res, { message: "No changes needed." });
75
+ return;
76
+ }
77
+ await mutateChannels((data) => {
78
+ // Same canonical-only narrowing as the channel-number bulk endpoint: hdhrEnabled is identity (canonical-only), and getVisibleChannels filters out
79
+ // variants so listing keys are always canonical. applyChannelDelta handles the merge with any existing stored entry.
80
+ for (const key of affectedKeys) {
81
+ data.channels[key] = applyChannelDelta(data.channels[key], { hdhrEnabled: enable ? null : false });
82
+ }
83
+ });
84
+ const action = enable ? "included in" : "excluded from";
85
+ LOG.info("Bulk HDHR toggle: %d channels %s HDHR lineup.", affectedKeys.length, action);
86
+ const message = String(affectedKeys.length) + " channel(s) " + action + " the HDHomeRun lineup.";
87
+ sendSuccess(res, { affectedKeys, message });
88
+ }));
89
+ // POST /config/channels/bulk-tags - Add or remove a tag on all enabled, service-available channels. Reuses the same visibility filter as the other bulk actions.
90
+ // transformChannelTags handles loading, delta normalization, and persistence. Returns a channel table patch for affected rows plus the tag UI bundle so the
91
+ // filter dropdown and tag manager modal stay in sync.
92
+ app.post("/config/channels/bulk-tags", route("update tags", async (req, res) => {
93
+ const body = req.body;
94
+ const action = body.action;
95
+ const tag = typeof body.tag === "string" ? body.tag.trim() : "";
96
+ if ((action !== "add") && (action !== "remove")) {
97
+ sendValidationError(res, "Action must be 'add' or 'remove'.");
98
+ return;
99
+ }
100
+ if (!tag) {
101
+ sendValidationError(res, "Tag is required.");
102
+ return;
103
+ }
104
+ if (!isInVocabulary(tag)) {
105
+ sendValidationError(res, "Unknown tag: " + tag + ".");
106
+ return;
107
+ }
108
+ // Use tagsMatch for case-insensitive membership so submitting "News" doesn't duplicate an existing "news" entry and removing "News" also clears a "news" entry.
109
+ // Tag identity is case-insensitive throughout the system (per tagsMatch); mutation paths must honor that.
110
+ const { affectedKeys, error } = await transformChannelTags(isVisibleChannel, (tags) => (action === "add") ?
111
+ (tags.some((t) => tagsMatch(t, tag)) ? tags : [...tags, tag]) :
112
+ tags.filter((t) => !tagsMatch(t, tag)));
113
+ if (error) {
114
+ sendError(res, 400, { error });
115
+ return;
116
+ }
117
+ if (affectedKeys.length === 0) {
118
+ sendSuccess(res, { message: "No changes needed." });
119
+ return;
120
+ }
121
+ const verb = (action === "add") ? "added to" : "removed from";
122
+ LOG.info("Bulk tag %s: %s on %d channels.", action, tag, affectedKeys.length);
123
+ const message = "Tag '" + tag + "' " + verb + " " + String(affectedKeys.length) + " channel(s).";
124
+ // Include the full tag UI bundle so the filter dropdown and tag manager modal stay in sync. Tag changes don't affect the M3U playlist, so no playlist hint.
125
+ sendSuccess(res, { affectedKeys, message, tags: true });
126
+ }));
127
+ }
128
+ //# sourceMappingURL=bulk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk.js","sourceRoot":"","sources":["../../../../../src/routes/config/channels/endpoints/bulk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Express } from "express";
2
+ /**
3
+ * Registers the RESTful CRUD endpoints on the Express application.
4
+ * @param app - The Express application.
5
+ */
6
+ export declare function registerCrudRoutes(app: Express): void;