prismcast 1.10.2 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/dist/app.d.ts +6 -3
  2. package/dist/app.d.ts.map +1 -0
  3. package/dist/app.js +140 -86
  4. package/dist/app.js.map +1 -1
  5. package/dist/browser/blockedPage.d.ts +80 -0
  6. package/dist/browser/blockedPage.d.ts.map +1 -0
  7. package/dist/browser/blockedPage.js +209 -0
  8. package/dist/browser/blockedPage.js.map +1 -0
  9. package/dist/browser/browserSupervisor.d.ts +80 -0
  10. package/dist/browser/browserSupervisor.d.ts.map +1 -0
  11. package/dist/browser/browserSupervisor.js +186 -0
  12. package/dist/browser/browserSupervisor.js.map +1 -0
  13. package/dist/browser/cdp.d.ts +1 -0
  14. package/dist/browser/cdp.d.ts.map +1 -0
  15. package/dist/browser/cdp.js +6 -5
  16. package/dist/browser/cdp.js.map +1 -1
  17. package/dist/browser/channelSelection.d.ts +45 -14
  18. package/dist/browser/channelSelection.d.ts.map +1 -0
  19. package/dist/browser/channelSelection.js +81 -18
  20. package/dist/browser/channelSelection.js.map +1 -1
  21. package/dist/browser/consent.d.ts +152 -0
  22. package/dist/browser/consent.d.ts.map +1 -0
  23. package/dist/browser/consent.js +418 -0
  24. package/dist/browser/consent.js.map +1 -0
  25. package/dist/browser/display.d.ts +1 -0
  26. package/dist/browser/display.d.ts.map +1 -0
  27. package/dist/browser/hlsPlaylistObserver.d.ts +55 -0
  28. package/dist/browser/hlsPlaylistObserver.d.ts.map +1 -0
  29. package/dist/browser/hlsPlaylistObserver.js +132 -0
  30. package/dist/browser/hlsPlaylistObserver.js.map +1 -0
  31. package/dist/browser/index.d.ts +67 -40
  32. package/dist/browser/index.d.ts.map +1 -0
  33. package/dist/browser/index.js +508 -300
  34. package/dist/browser/index.js.map +1 -1
  35. package/dist/browser/launchGovernor.d.ts +89 -0
  36. package/dist/browser/launchGovernor.d.ts.map +1 -0
  37. package/dist/browser/launchGovernor.js +96 -0
  38. package/dist/browser/launchGovernor.js.map +1 -0
  39. package/dist/browser/login.d.ts +10 -2
  40. package/dist/browser/login.d.ts.map +1 -0
  41. package/dist/browser/login.js +36 -5
  42. package/dist/browser/login.js.map +1 -1
  43. package/dist/browser/manifestInterceptor.d.ts +102 -49
  44. package/dist/browser/manifestInterceptor.d.ts.map +1 -0
  45. package/dist/browser/manifestInterceptor.js +219 -237
  46. package/dist/browser/manifestInterceptor.js.map +1 -1
  47. package/dist/browser/pageStaleness.d.ts +30 -0
  48. package/dist/browser/pageStaleness.d.ts.map +1 -0
  49. package/dist/browser/pageStaleness.js +76 -0
  50. package/dist/browser/pageStaleness.js.map +1 -0
  51. package/dist/browser/precaching.d.ts +95 -3
  52. package/dist/browser/precaching.d.ts.map +1 -0
  53. package/dist/browser/precaching.js +499 -65
  54. package/dist/browser/precaching.js.map +1 -1
  55. package/dist/browser/tabNetworkObserver.d.ts +49 -0
  56. package/dist/browser/tabNetworkObserver.d.ts.map +1 -0
  57. package/dist/browser/tabNetworkObserver.js +144 -0
  58. package/dist/browser/tabNetworkObserver.js.map +1 -0
  59. package/dist/browser/tuning/cache.d.ts +61 -0
  60. package/dist/browser/tuning/cache.d.ts.map +1 -0
  61. package/dist/browser/tuning/cache.js +62 -0
  62. package/dist/browser/tuning/cache.js.map +1 -0
  63. package/dist/browser/tuning/comcastPolymer.d.ts +3 -2
  64. package/dist/browser/tuning/comcastPolymer.d.ts.map +1 -0
  65. package/dist/browser/tuning/comcastPolymer.js +79 -102
  66. package/dist/browser/tuning/comcastPolymer.js.map +1 -1
  67. package/dist/browser/tuning/cox.d.ts +1 -0
  68. package/dist/browser/tuning/cox.d.ts.map +1 -0
  69. package/dist/browser/tuning/directv.d.ts +1 -0
  70. package/dist/browser/tuning/directv.d.ts.map +1 -0
  71. package/dist/browser/tuning/directv.js +52 -46
  72. package/dist/browser/tuning/directv.js.map +1 -1
  73. package/dist/browser/tuning/fox.d.ts +1 -0
  74. package/dist/browser/tuning/fox.d.ts.map +1 -0
  75. package/dist/browser/tuning/fox.js +13 -12
  76. package/dist/browser/tuning/fox.js.map +1 -1
  77. package/dist/browser/tuning/gridSearch.d.ts +68 -0
  78. package/dist/browser/tuning/gridSearch.d.ts.map +1 -0
  79. package/dist/browser/tuning/gridSearch.js +85 -0
  80. package/dist/browser/tuning/gridSearch.js.map +1 -0
  81. package/dist/browser/tuning/hbo.d.ts +1 -0
  82. package/dist/browser/tuning/hbo.d.ts.map +1 -0
  83. package/dist/browser/tuning/hbo.js +73 -45
  84. package/dist/browser/tuning/hbo.js.map +1 -1
  85. package/dist/browser/tuning/hulu.d.ts +1 -0
  86. package/dist/browser/tuning/hulu.d.ts.map +1 -0
  87. package/dist/browser/tuning/hulu.js +128 -173
  88. package/dist/browser/tuning/hulu.js.map +1 -1
  89. package/dist/browser/tuning/shared.d.ts +75 -5
  90. package/dist/browser/tuning/shared.d.ts.map +1 -0
  91. package/dist/browser/tuning/shared.js +216 -6
  92. package/dist/browser/tuning/shared.js.map +1 -1
  93. package/dist/browser/tuning/sling.d.ts +1 -0
  94. package/dist/browser/tuning/sling.d.ts.map +1 -0
  95. package/dist/browser/tuning/sling.js +105 -126
  96. package/dist/browser/tuning/sling.js.map +1 -1
  97. package/dist/browser/tuning/spectrum.d.ts +1 -0
  98. package/dist/browser/tuning/spectrum.d.ts.map +1 -0
  99. package/dist/browser/tuning/spectrum.js +80 -125
  100. package/dist/browser/tuning/spectrum.js.map +1 -1
  101. package/dist/browser/tuning/thumbnailRow.d.ts +1 -0
  102. package/dist/browser/tuning/thumbnailRow.d.ts.map +1 -0
  103. package/dist/browser/tuning/thumbnailRow.js +8 -2
  104. package/dist/browser/tuning/thumbnailRow.js.map +1 -1
  105. package/dist/browser/tuning/tileClick.d.ts +1 -0
  106. package/dist/browser/tuning/tileClick.d.ts.map +1 -0
  107. package/dist/browser/tuning/tileClick.js +3 -2
  108. package/dist/browser/tuning/tileClick.js.map +1 -1
  109. package/dist/browser/tuning/xfinity.d.ts +1 -0
  110. package/dist/browser/tuning/xfinity.d.ts.map +1 -0
  111. package/dist/browser/tuning/youtubeTv.d.ts +1 -0
  112. package/dist/browser/tuning/youtubeTv.d.ts.map +1 -0
  113. package/dist/browser/tuning/youtubeTv.js +74 -127
  114. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  115. package/dist/browser/video.d.ts +54 -14
  116. package/dist/browser/video.d.ts.map +1 -0
  117. package/dist/browser/video.js +296 -138
  118. package/dist/browser/video.js.map +1 -1
  119. package/dist/channels/index.d.ts +1 -0
  120. package/dist/channels/index.d.ts.map +1 -0
  121. package/dist/channels/index.js +12 -9
  122. package/dist/channels/index.js.map +1 -1
  123. package/dist/config/channelForm.d.ts +15 -1
  124. package/dist/config/channelForm.d.ts.map +1 -0
  125. package/dist/config/channelForm.js +28 -12
  126. package/dist/config/channelForm.js.map +1 -1
  127. package/dist/config/consistencyProbe.d.ts +1 -0
  128. package/dist/config/consistencyProbe.d.ts.map +1 -0
  129. package/dist/config/consistencyProbe.js +27 -21
  130. package/dist/config/consistencyProbe.js.map +1 -1
  131. package/dist/config/health.d.ts +41 -8
  132. package/dist/config/health.d.ts.map +1 -0
  133. package/dist/config/health.js +189 -38
  134. package/dist/config/health.js.map +1 -1
  135. package/dist/config/index.d.ts +55 -3
  136. package/dist/config/index.d.ts.map +1 -0
  137. package/dist/config/index.js +320 -69
  138. package/dist/config/index.js.map +1 -1
  139. package/dist/config/paths.d.ts +10 -9
  140. package/dist/config/paths.d.ts.map +1 -0
  141. package/dist/config/paths.js +11 -11
  142. package/dist/config/paths.js.map +1 -1
  143. package/dist/config/persistence.context.d.ts +1 -0
  144. package/dist/config/persistence.context.d.ts.map +1 -0
  145. package/dist/config/persistence.d.ts +13 -10
  146. package/dist/config/persistence.d.ts.map +1 -0
  147. package/dist/config/persistence.js +40 -21
  148. package/dist/config/persistence.js.map +1 -1
  149. package/dist/config/presets.d.ts +1 -0
  150. package/dist/config/presets.d.ts.map +1 -0
  151. package/dist/config/profiles.d.ts +22 -15
  152. package/dist/config/profiles.d.ts.map +1 -0
  153. package/dist/config/profiles.js +81 -47
  154. package/dist/config/profiles.js.map +1 -1
  155. package/dist/config/providerLineups.d.ts +47 -0
  156. package/dist/config/providerLineups.d.ts.map +1 -0
  157. package/dist/config/providerLineups.js +137 -0
  158. package/dist/config/providerLineups.js.map +1 -0
  159. package/dist/config/reactivity.d.ts +84 -0
  160. package/dist/config/reactivity.d.ts.map +1 -0
  161. package/dist/config/reactivity.js +226 -0
  162. package/dist/config/reactivity.js.map +1 -0
  163. package/dist/config/servicePacks.d.ts +18 -2
  164. package/dist/config/servicePacks.d.ts.map +1 -0
  165. package/dist/config/servicePacks.js +53 -11
  166. package/dist/config/servicePacks.js.map +1 -1
  167. package/dist/config/services.d.ts +21 -15
  168. package/dist/config/services.d.ts.map +1 -0
  169. package/dist/config/services.js +35 -24
  170. package/dist/config/services.js.map +1 -1
  171. package/dist/config/sites.d.ts +6 -4
  172. package/dist/config/sites.d.ts.map +1 -0
  173. package/dist/config/sites.js +15 -11
  174. package/dist/config/sites.js.map +1 -1
  175. package/dist/config/userChannels.d.ts +129 -30
  176. package/dist/config/userChannels.d.ts.map +1 -0
  177. package/dist/config/userChannels.js +333 -68
  178. package/dist/config/userChannels.js.map +1 -1
  179. package/dist/config/userConfig.d.ts +14 -9
  180. package/dist/config/userConfig.d.ts.map +1 -0
  181. package/dist/config/userConfig.js +87 -25
  182. package/dist/config/userConfig.js.map +1 -1
  183. package/dist/config/userProfiles.d.ts +10 -6
  184. package/dist/config/userProfiles.d.ts.map +1 -0
  185. package/dist/config/userProfiles.js +64 -39
  186. package/dist/config/userProfiles.js.map +1 -1
  187. package/dist/hdhr/channelMap.d.ts +1 -0
  188. package/dist/hdhr/channelMap.d.ts.map +1 -0
  189. package/dist/hdhr/deviceId.d.ts +1 -0
  190. package/dist/hdhr/deviceId.d.ts.map +1 -0
  191. package/dist/hdhr/discover.d.ts +1 -0
  192. package/dist/hdhr/discover.d.ts.map +1 -0
  193. package/dist/hdhr/discover.js +48 -47
  194. package/dist/hdhr/discover.js.map +1 -1
  195. package/dist/hdhr/getHandlers.d.ts +29 -0
  196. package/dist/hdhr/getHandlers.d.ts.map +1 -0
  197. package/dist/hdhr/getHandlers.js +196 -0
  198. package/dist/hdhr/getHandlers.js.map +1 -0
  199. package/dist/hdhr/identity.d.ts +36 -0
  200. package/dist/hdhr/identity.d.ts.map +1 -0
  201. package/dist/hdhr/identity.js +51 -0
  202. package/dist/hdhr/identity.js.map +1 -0
  203. package/dist/hdhr/index.d.ts +22 -4
  204. package/dist/hdhr/index.d.ts.map +1 -0
  205. package/dist/hdhr/index.js +229 -54
  206. package/dist/hdhr/index.js.map +1 -1
  207. package/dist/hdhr/protocol.d.ts +75 -0
  208. package/dist/hdhr/protocol.d.ts.map +1 -0
  209. package/dist/hdhr/protocol.js +264 -0
  210. package/dist/hdhr/protocol.js.map +1 -0
  211. package/dist/hdhr/tunerState.d.ts +24 -0
  212. package/dist/hdhr/tunerState.d.ts.map +1 -0
  213. package/dist/hdhr/tunerState.js +67 -0
  214. package/dist/hdhr/tunerState.js.map +1 -0
  215. package/dist/hdhr/udp.d.ts +43 -0
  216. package/dist/hdhr/udp.d.ts.map +1 -0
  217. package/dist/hdhr/udp.js +277 -0
  218. package/dist/hdhr/udp.js.map +1 -0
  219. package/dist/identity.d.ts +1 -0
  220. package/dist/identity.d.ts.map +1 -0
  221. package/dist/identity.js +13 -11
  222. package/dist/identity.js.map +1 -1
  223. package/dist/index.d.ts +1 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +11 -12
  226. package/dist/index.js.map +1 -1
  227. package/dist/native/codecInference.d.ts +1 -0
  228. package/dist/native/codecInference.d.ts.map +1 -0
  229. package/dist/native/codecInference.js +50 -5
  230. package/dist/native/codecInference.js.map +1 -1
  231. package/dist/native/decrypt.d.ts +6 -2
  232. package/dist/native/decrypt.d.ts.map +1 -0
  233. package/dist/native/decrypt.js +15 -8
  234. package/dist/native/decrypt.js.map +1 -1
  235. package/dist/native/index.d.ts +40 -17
  236. package/dist/native/index.d.ts.map +1 -0
  237. package/dist/native/index.js +281 -120
  238. package/dist/native/index.js.map +1 -1
  239. package/dist/native/probe.d.ts +114 -18
  240. package/dist/native/probe.d.ts.map +1 -0
  241. package/dist/native/probe.js +452 -115
  242. package/dist/native/probe.js.map +1 -1
  243. package/dist/native/proxy.d.ts +57 -5
  244. package/dist/native/proxy.d.ts.map +1 -0
  245. package/dist/native/proxy.js +604 -170
  246. package/dist/native/proxy.js.map +1 -1
  247. package/dist/native/tokenExpiry.d.ts +1 -0
  248. package/dist/native/tokenExpiry.d.ts.map +1 -0
  249. package/dist/native/tokenExpiry.js +1 -1
  250. package/dist/routes/assets.d.ts +1 -0
  251. package/dist/routes/assets.d.ts.map +1 -0
  252. package/dist/routes/assets.js +4 -2
  253. package/dist/routes/assets.js.map +1 -1
  254. package/dist/routes/auth.d.ts +1 -0
  255. package/dist/routes/auth.d.ts.map +1 -0
  256. package/dist/routes/auth.js +0 -1
  257. package/dist/routes/auth.js.map +1 -1
  258. package/dist/routes/cdp.d.ts +5 -5
  259. package/dist/routes/cdp.d.ts.map +1 -0
  260. package/dist/routes/cdp.js +59 -20
  261. package/dist/routes/cdp.js.map +1 -1
  262. package/dist/routes/channels.d.ts +1 -0
  263. package/dist/routes/channels.d.ts.map +1 -0
  264. package/dist/routes/channels.js +2 -1
  265. package/dist/routes/channels.js.map +1 -1
  266. package/dist/routes/clientActions.d.ts +98 -0
  267. package/dist/routes/clientActions.d.ts.map +1 -0
  268. package/dist/routes/clientActions.js +113 -0
  269. package/dist/routes/clientActions.js.map +1 -0
  270. package/dist/routes/components.d.ts +5 -3
  271. package/dist/routes/components.d.ts.map +1 -0
  272. package/dist/routes/components.js +36 -39
  273. package/dist/routes/components.js.map +1 -1
  274. package/dist/routes/config/channels/endpoints/browse.d.ts +1 -0
  275. package/dist/routes/config/channels/endpoints/browse.d.ts.map +1 -0
  276. package/dist/routes/config/channels/endpoints/browse.js +23 -10
  277. package/dist/routes/config/channels/endpoints/browse.js.map +1 -1
  278. package/dist/routes/config/channels/endpoints/bulk.d.ts +1 -0
  279. package/dist/routes/config/channels/endpoints/bulk.d.ts.map +1 -0
  280. package/dist/routes/config/channels/endpoints/bulk.js +5 -3
  281. package/dist/routes/config/channels/endpoints/bulk.js.map +1 -1
  282. package/dist/routes/config/channels/endpoints/crud.d.ts +1 -0
  283. package/dist/routes/config/channels/endpoints/crud.d.ts.map +1 -0
  284. package/dist/routes/config/channels/endpoints/crud.js +85 -93
  285. package/dist/routes/config/channels/endpoints/crud.js.map +1 -1
  286. package/dist/routes/config/channels/endpoints/importExport.d.ts +1 -0
  287. package/dist/routes/config/channels/endpoints/importExport.d.ts.map +1 -0
  288. package/dist/routes/config/channels/endpoints/importExport.js +6 -3
  289. package/dist/routes/config/channels/endpoints/importExport.js.map +1 -1
  290. package/dist/routes/config/channels/endpoints/predefined.d.ts +1 -0
  291. package/dist/routes/config/channels/endpoints/predefined.d.ts.map +1 -0
  292. package/dist/routes/config/channels/endpoints/prefs.d.ts +1 -0
  293. package/dist/routes/config/channels/endpoints/prefs.d.ts.map +1 -0
  294. package/dist/routes/config/channels/endpoints/prefs.js +2 -1
  295. package/dist/routes/config/channels/endpoints/prefs.js.map +1 -1
  296. package/dist/routes/config/channels/endpoints/service.d.ts +2 -1
  297. package/dist/routes/config/channels/endpoints/service.d.ts.map +1 -0
  298. package/dist/routes/config/channels/endpoints/service.js +3 -1
  299. package/dist/routes/config/channels/endpoints/service.js.map +1 -1
  300. package/dist/routes/config/channels/endpoints/tags.d.ts +1 -0
  301. package/dist/routes/config/channels/endpoints/tags.d.ts.map +1 -0
  302. package/dist/routes/config/channels/endpoints/tags.js +13 -7
  303. package/dist/routes/config/channels/endpoints/tags.js.map +1 -1
  304. package/dist/routes/config/channels/healthBridge.d.ts +24 -0
  305. package/dist/routes/config/channels/healthBridge.d.ts.map +1 -0
  306. package/dist/routes/config/channels/healthBridge.js +71 -0
  307. package/dist/routes/config/channels/healthBridge.js.map +1 -0
  308. package/dist/routes/config/channels/http/handler.d.ts +1 -0
  309. package/dist/routes/config/channels/http/handler.d.ts.map +1 -0
  310. package/dist/routes/config/channels/http/playlistHint.d.ts +2 -1
  311. package/dist/routes/config/channels/http/playlistHint.d.ts.map +1 -0
  312. package/dist/routes/config/channels/http/playlistHint.js +16 -2
  313. package/dist/routes/config/channels/http/playlistHint.js.map +1 -1
  314. package/dist/routes/config/channels/http/serviceWarning.d.ts +4 -2
  315. package/dist/routes/config/channels/http/serviceWarning.d.ts.map +1 -0
  316. package/dist/routes/config/channels/http/serviceWarning.js +3 -2
  317. package/dist/routes/config/channels/http/serviceWarning.js.map +1 -1
  318. package/dist/routes/config/channels/index.d.ts +1 -0
  319. package/dist/routes/config/channels/index.d.ts.map +1 -0
  320. package/dist/routes/config/channels/setup.d.ts +1 -0
  321. package/dist/routes/config/channels/setup.d.ts.map +1 -0
  322. package/dist/routes/config/channels/table.d.ts +3 -3
  323. package/dist/routes/config/channels/table.d.ts.map +1 -0
  324. package/dist/routes/config/channels/table.js +148 -107
  325. package/dist/routes/config/channels/table.js.map +1 -1
  326. package/dist/routes/config/http/envelope.d.ts +1 -0
  327. package/dist/routes/config/http/envelope.d.ts.map +1 -0
  328. package/dist/routes/config/index.d.ts +35 -3
  329. package/dist/routes/config/index.d.ts.map +1 -0
  330. package/dist/routes/config/index.js +51 -2
  331. package/dist/routes/config/index.js.map +1 -1
  332. package/dist/routes/config/services.d.ts +5 -4
  333. package/dist/routes/config/services.d.ts.map +1 -0
  334. package/dist/routes/config/services.js +57 -43
  335. package/dist/routes/config/services.js.map +1 -1
  336. package/dist/routes/config/settings.d.ts +1 -0
  337. package/dist/routes/config/settings.d.ts.map +1 -0
  338. package/dist/routes/config/settings.js +98 -49
  339. package/dist/routes/config/settings.js.map +1 -1
  340. package/dist/routes/debug.d.ts +1 -0
  341. package/dist/routes/debug.d.ts.map +1 -0
  342. package/dist/routes/debug.js +277 -139
  343. package/dist/routes/debug.js.map +1 -1
  344. package/dist/routes/health.d.ts +39 -1
  345. package/dist/routes/health.d.ts.map +1 -0
  346. package/dist/routes/health.js +33 -27
  347. package/dist/routes/health.js.map +1 -1
  348. package/dist/routes/hls.d.ts +1 -0
  349. package/dist/routes/hls.d.ts.map +1 -0
  350. package/dist/routes/icons.d.ts +1 -0
  351. package/dist/routes/icons.d.ts.map +1 -0
  352. package/dist/routes/icons.js +1 -1
  353. package/dist/routes/index.d.ts +1 -0
  354. package/dist/routes/index.d.ts.map +1 -0
  355. package/dist/routes/logs.d.ts +1 -0
  356. package/dist/routes/logs.d.ts.map +1 -0
  357. package/dist/routes/logs.js +14 -4
  358. package/dist/routes/logs.js.map +1 -1
  359. package/dist/routes/mpegts.d.ts +1 -0
  360. package/dist/routes/mpegts.d.ts.map +1 -0
  361. package/dist/routes/play.d.ts +1 -0
  362. package/dist/routes/play.d.ts.map +1 -0
  363. package/dist/routes/playlist.d.ts +1 -0
  364. package/dist/routes/playlist.d.ts.map +1 -0
  365. package/dist/routes/playlist.js +7 -2
  366. package/dist/routes/playlist.js.map +1 -1
  367. package/dist/routes/root/content.d.ts +8 -5
  368. package/dist/routes/root/content.d.ts.map +1 -0
  369. package/dist/routes/root/content.js +29 -26
  370. package/dist/routes/root/content.js.map +1 -1
  371. package/dist/routes/root/index.d.ts +2 -1
  372. package/dist/routes/root/index.d.ts.map +1 -0
  373. package/dist/routes/root/index.js +26 -21
  374. package/dist/routes/root/index.js.map +1 -1
  375. package/dist/routes/root/scripts/channels.d.ts +6 -0
  376. package/dist/routes/root/scripts/channels.d.ts.map +1 -0
  377. package/dist/routes/root/scripts/channels.js +197 -118
  378. package/dist/routes/root/scripts/channels.js.map +1 -1
  379. package/dist/routes/root/scripts/clientEscape.d.ts +22 -0
  380. package/dist/routes/root/scripts/clientEscape.d.ts.map +1 -0
  381. package/dist/routes/root/scripts/clientEscape.js +41 -0
  382. package/dist/routes/root/scripts/clientEscape.js.map +1 -0
  383. package/dist/routes/root/scripts/clientUrl.d.ts +23 -0
  384. package/dist/routes/root/scripts/clientUrl.d.ts.map +1 -0
  385. package/dist/routes/root/scripts/clientUrl.js +44 -0
  386. package/dist/routes/root/scripts/clientUrl.js.map +1 -0
  387. package/dist/routes/root/scripts/config.d.ts +6 -0
  388. package/dist/routes/root/scripts/config.d.ts.map +1 -0
  389. package/dist/routes/root/scripts/config.js +110 -24
  390. package/dist/routes/root/scripts/config.js.map +1 -1
  391. package/dist/routes/root/scripts/index.d.ts +1 -0
  392. package/dist/routes/root/scripts/index.d.ts.map +1 -0
  393. package/dist/routes/root/scripts/shared.d.ts +1 -0
  394. package/dist/routes/root/scripts/shared.d.ts.map +1 -0
  395. package/dist/routes/root/scripts/shared.js +112 -26
  396. package/dist/routes/root/scripts/shared.js.map +1 -1
  397. package/dist/routes/root/scripts/status.d.ts +1 -0
  398. package/dist/routes/root/scripts/status.d.ts.map +1 -0
  399. package/dist/routes/root/scripts/status.handlers.d.ts +23 -33
  400. package/dist/routes/root/scripts/status.handlers.d.ts.map +1 -0
  401. package/dist/routes/root/scripts/status.handlers.js +46 -92
  402. package/dist/routes/root/scripts/status.handlers.js.map +1 -1
  403. package/dist/routes/root/scripts/status.js +21 -8
  404. package/dist/routes/root/scripts/status.js.map +1 -1
  405. package/dist/routes/root/styles.d.ts +1 -0
  406. package/dist/routes/root/styles.d.ts.map +1 -0
  407. package/dist/routes/root/styles.js +7 -4
  408. package/dist/routes/root/styles.js.map +1 -1
  409. package/dist/routes/services.d.ts +13 -1
  410. package/dist/routes/services.d.ts.map +1 -0
  411. package/dist/routes/services.js +81 -68
  412. package/dist/routes/services.js.map +1 -1
  413. package/dist/routes/sse.d.ts +1 -0
  414. package/dist/routes/sse.d.ts.map +1 -0
  415. package/dist/routes/sse.js +1 -1
  416. package/dist/routes/sse.js.map +1 -1
  417. package/dist/routes/streams.d.ts +2 -1
  418. package/dist/routes/streams.d.ts.map +1 -0
  419. package/dist/routes/streams.js +6 -4
  420. package/dist/routes/streams.js.map +1 -1
  421. package/dist/routes/theme.d.ts +3 -2
  422. package/dist/routes/theme.d.ts.map +1 -0
  423. package/dist/routes/theme.js +6 -5
  424. package/dist/routes/theme.js.map +1 -1
  425. package/dist/routes/ui.d.ts +3 -1
  426. package/dist/routes/ui.d.ts.map +1 -0
  427. package/dist/routes/ui.js +16 -4
  428. package/dist/routes/ui.js.map +1 -1
  429. package/dist/routes/upgrade.d.ts +1 -0
  430. package/dist/routes/upgrade.d.ts.map +1 -0
  431. package/dist/routes/upgrade.js +6 -2
  432. package/dist/routes/upgrade.js.map +1 -1
  433. package/dist/service/commands.context.d.ts +1 -0
  434. package/dist/service/commands.context.d.ts.map +1 -0
  435. package/dist/service/commands.context.js +4 -3
  436. package/dist/service/commands.context.js.map +1 -1
  437. package/dist/service/commands.d.ts +1 -0
  438. package/dist/service/commands.d.ts.map +1 -0
  439. package/dist/service/commands.js +10 -13
  440. package/dist/service/commands.js.map +1 -1
  441. package/dist/service/generators.context.d.ts +1 -0
  442. package/dist/service/generators.context.d.ts.map +1 -0
  443. package/dist/service/generators.context.js +1 -1
  444. package/dist/service/generators.context.js.map +1 -1
  445. package/dist/service/generators.d.ts +4 -3
  446. package/dist/service/generators.d.ts.map +1 -0
  447. package/dist/service/generators.js +111 -31
  448. package/dist/service/generators.js.map +1 -1
  449. package/dist/service/index.d.ts +1 -0
  450. package/dist/service/index.d.ts.map +1 -0
  451. package/dist/streaming/captureLock.d.ts +44 -0
  452. package/dist/streaming/captureLock.d.ts.map +1 -0
  453. package/dist/streaming/captureLock.js +95 -0
  454. package/dist/streaming/captureLock.js.map +1 -0
  455. package/dist/streaming/captureSession.d.ts +31 -0
  456. package/dist/streaming/captureSession.d.ts.map +1 -0
  457. package/dist/streaming/captureSession.js +54 -0
  458. package/dist/streaming/captureSession.js.map +1 -0
  459. package/dist/streaming/clients.d.ts +1 -0
  460. package/dist/streaming/clients.d.ts.map +1 -0
  461. package/dist/streaming/codec.d.ts +1 -0
  462. package/dist/streaming/codec.d.ts.map +1 -0
  463. package/dist/streaming/fmp4Segmenter.d.ts +29 -2
  464. package/dist/streaming/fmp4Segmenter.d.ts.map +1 -0
  465. package/dist/streaming/fmp4Segmenter.js +79 -26
  466. package/dist/streaming/fmp4Segmenter.js.map +1 -1
  467. package/dist/streaming/hls.d.ts +18 -7
  468. package/dist/streaming/hls.d.ts.map +1 -0
  469. package/dist/streaming/hls.js +220 -120
  470. package/dist/streaming/hls.js.map +1 -1
  471. package/dist/streaming/hlsResume.d.ts +1 -0
  472. package/dist/streaming/hlsResume.d.ts.map +1 -0
  473. package/dist/streaming/hlsResume.js +1 -1
  474. package/dist/streaming/hlsResume.js.map +1 -1
  475. package/dist/streaming/hlsSegments.d.ts +59 -2
  476. package/dist/streaming/hlsSegments.d.ts.map +1 -0
  477. package/dist/streaming/hlsSegments.js +147 -17
  478. package/dist/streaming/hlsSegments.js.map +1 -1
  479. package/dist/streaming/lifecycle.d.ts +4 -1
  480. package/dist/streaming/lifecycle.d.ts.map +1 -0
  481. package/dist/streaming/lifecycle.js +65 -85
  482. package/dist/streaming/lifecycle.js.map +1 -1
  483. package/dist/streaming/monitor.d.ts +6 -4
  484. package/dist/streaming/monitor.d.ts.map +1 -0
  485. package/dist/streaming/monitor.js +343 -145
  486. package/dist/streaming/monitor.js.map +1 -1
  487. package/dist/streaming/mp4Parser.d.ts +5 -4
  488. package/dist/streaming/mp4Parser.d.ts.map +1 -0
  489. package/dist/streaming/mp4Parser.js +36 -13
  490. package/dist/streaming/mp4Parser.js.map +1 -1
  491. package/dist/streaming/mpegts.d.ts +16 -0
  492. package/dist/streaming/mpegts.d.ts.map +1 -0
  493. package/dist/streaming/mpegts.js +61 -17
  494. package/dist/streaming/mpegts.js.map +1 -1
  495. package/dist/streaming/playlistBuilder.d.ts +1 -0
  496. package/dist/streaming/playlistBuilder.d.ts.map +1 -0
  497. package/dist/streaming/preroll.d.ts +32 -5
  498. package/dist/streaming/preroll.d.ts.map +1 -0
  499. package/dist/streaming/preroll.js +70 -32
  500. package/dist/streaming/preroll.js.map +1 -1
  501. package/dist/streaming/pretune.d.ts +26 -1
  502. package/dist/streaming/pretune.d.ts.map +1 -0
  503. package/dist/streaming/pretune.js +22 -24
  504. package/dist/streaming/pretune.js.map +1 -1
  505. package/dist/streaming/pretuneTimers.d.ts +24 -0
  506. package/dist/streaming/pretuneTimers.d.ts.map +1 -0
  507. package/dist/streaming/pretuneTimers.js +56 -0
  508. package/dist/streaming/pretuneTimers.js.map +1 -0
  509. package/dist/streaming/recovery.d.ts +139 -5
  510. package/dist/streaming/recovery.d.ts.map +1 -0
  511. package/dist/streaming/recovery.js +160 -16
  512. package/dist/streaming/recovery.js.map +1 -1
  513. package/dist/streaming/registry.d.ts +27 -9
  514. package/dist/streaming/registry.d.ts.map +1 -0
  515. package/dist/streaming/registry.js +21 -3
  516. package/dist/streaming/registry.js.map +1 -1
  517. package/dist/streaming/setup.d.ts +157 -29
  518. package/dist/streaming/setup.d.ts.map +1 -0
  519. package/dist/streaming/setup.js +1034 -458
  520. package/dist/streaming/setup.js.map +1 -1
  521. package/dist/streaming/showInfo.d.ts +21 -1
  522. package/dist/streaming/showInfo.d.ts.map +1 -0
  523. package/dist/streaming/showInfo.js +31 -16
  524. package/dist/streaming/showInfo.js.map +1 -1
  525. package/dist/streaming/statusEmitter.d.ts +10 -10
  526. package/dist/streaming/statusEmitter.d.ts.map +1 -0
  527. package/dist/streaming/statusEmitter.js +5 -8
  528. package/dist/streaming/statusEmitter.js.map +1 -1
  529. package/dist/types/channels.d.ts +16 -4
  530. package/dist/types/channels.d.ts.map +1 -0
  531. package/dist/types/channels.js +4 -2
  532. package/dist/types/channels.js.map +1 -1
  533. package/dist/types/config.d.ts +16 -5
  534. package/dist/types/config.d.ts.map +1 -0
  535. package/dist/types/index.d.ts +3 -2
  536. package/dist/types/index.d.ts.map +1 -0
  537. package/dist/types/profiles.d.ts +6 -4
  538. package/dist/types/profiles.d.ts.map +1 -0
  539. package/dist/types/selection.d.ts +31 -3
  540. package/dist/types/selection.d.ts.map +1 -0
  541. package/dist/types/selection.js +4 -2
  542. package/dist/types/selection.js.map +1 -1
  543. package/dist/types/shared.d.ts +1 -0
  544. package/dist/types/shared.d.ts.map +1 -0
  545. package/dist/types/streaming.d.ts +8 -0
  546. package/dist/types/streaming.d.ts.map +1 -0
  547. package/dist/upgrade/commands.context.d.ts +1 -0
  548. package/dist/upgrade/commands.context.d.ts.map +1 -0
  549. package/dist/upgrade/commands.context.js +14 -10
  550. package/dist/upgrade/commands.context.js.map +1 -1
  551. package/dist/upgrade/commands.d.ts +8 -15
  552. package/dist/upgrade/commands.d.ts.map +1 -0
  553. package/dist/upgrade/commands.js +27 -28
  554. package/dist/upgrade/commands.js.map +1 -1
  555. package/dist/upgrade/detection.context.d.ts +1 -0
  556. package/dist/upgrade/detection.context.d.ts.map +1 -0
  557. package/dist/upgrade/detection.context.js +4 -1
  558. package/dist/upgrade/detection.context.js.map +1 -1
  559. package/dist/upgrade/detection.d.ts +9 -7
  560. package/dist/upgrade/detection.d.ts.map +1 -0
  561. package/dist/upgrade/detection.js +23 -54
  562. package/dist/upgrade/detection.js.map +1 -1
  563. package/dist/upgrade/index.d.ts +2 -0
  564. package/dist/upgrade/index.d.ts.map +1 -0
  565. package/dist/upgrade/index.js +1 -0
  566. package/dist/upgrade/index.js.map +1 -1
  567. package/dist/upgrade/lifecycle.context.d.ts +20 -0
  568. package/dist/upgrade/lifecycle.context.d.ts.map +1 -0
  569. package/dist/upgrade/lifecycle.context.js +47 -0
  570. package/dist/upgrade/lifecycle.context.js.map +1 -0
  571. package/dist/upgrade/lifecycle.d.ts +72 -0
  572. package/dist/upgrade/lifecycle.d.ts.map +1 -0
  573. package/dist/upgrade/lifecycle.js +175 -0
  574. package/dist/upgrade/lifecycle.js.map +1 -0
  575. package/dist/upgrade/pathHandle.d.ts +30 -0
  576. package/dist/upgrade/pathHandle.d.ts.map +1 -0
  577. package/dist/upgrade/pathHandle.js +102 -0
  578. package/dist/upgrade/pathHandle.js.map +1 -0
  579. package/dist/utils/bootSession.context.d.ts +16 -0
  580. package/dist/utils/bootSession.context.d.ts.map +1 -0
  581. package/dist/utils/bootSession.context.js +60 -0
  582. package/dist/utils/bootSession.context.js.map +1 -0
  583. package/dist/utils/bootSession.d.ts +17 -0
  584. package/dist/utils/bootSession.d.ts.map +1 -0
  585. package/dist/utils/bootSession.js +20 -0
  586. package/dist/utils/bootSession.js.map +1 -0
  587. package/dist/utils/chromeFetch.d.ts +1 -0
  588. package/dist/utils/chromeFetch.d.ts.map +1 -0
  589. package/dist/utils/cliOutput.d.ts +1 -0
  590. package/dist/utils/cliOutput.d.ts.map +1 -0
  591. package/dist/utils/clock.d.ts +5 -4
  592. package/dist/utils/clock.d.ts.map +1 -0
  593. package/dist/utils/clock.js +19 -16
  594. package/dist/utils/clock.js.map +1 -1
  595. package/dist/utils/debugFilter.d.ts +9 -1
  596. package/dist/utils/debugFilter.d.ts.map +1 -0
  597. package/dist/utils/debugFilter.js +60 -33
  598. package/dist/utils/debugFilter.js.map +1 -1
  599. package/dist/utils/delay.d.ts +48 -15
  600. package/dist/utils/delay.d.ts.map +1 -0
  601. package/dist/utils/delay.js +73 -20
  602. package/dist/utils/delay.js.map +1 -1
  603. package/dist/utils/errors.d.ts +32 -0
  604. package/dist/utils/errors.d.ts.map +1 -0
  605. package/dist/utils/errors.js +45 -4
  606. package/dist/utils/errors.js.map +1 -1
  607. package/dist/utils/evaluate.d.ts +1 -0
  608. package/dist/utils/evaluate.d.ts.map +1 -0
  609. package/dist/utils/evaluate.js +29 -23
  610. package/dist/utils/evaluate.js.map +1 -1
  611. package/dist/utils/ffmpeg.context.d.ts +1 -0
  612. package/dist/utils/ffmpeg.context.d.ts.map +1 -0
  613. package/dist/utils/ffmpeg.context.js.map +1 -1
  614. package/dist/utils/ffmpeg.d.ts +29 -7
  615. package/dist/utils/ffmpeg.d.ts.map +1 -0
  616. package/dist/utils/ffmpeg.js +32 -14
  617. package/dist/utils/ffmpeg.js.map +1 -1
  618. package/dist/utils/fileLogger.d.ts +3 -1
  619. package/dist/utils/fileLogger.d.ts.map +1 -0
  620. package/dist/utils/fileLogger.js +64 -29
  621. package/dist/utils/fileLogger.js.map +1 -1
  622. package/dist/utils/format.d.ts +14 -1
  623. package/dist/utils/format.d.ts.map +1 -0
  624. package/dist/utils/format.js +19 -5
  625. package/dist/utils/format.js.map +1 -1
  626. package/dist/utils/index.d.ts +4 -0
  627. package/dist/utils/index.d.ts.map +1 -0
  628. package/dist/utils/index.js +3 -0
  629. package/dist/utils/index.js.map +1 -1
  630. package/dist/utils/logEmitter.d.ts +1 -0
  631. package/dist/utils/logEmitter.d.ts.map +1 -0
  632. package/dist/utils/logger.d.ts +1 -0
  633. package/dist/utils/logger.d.ts.map +1 -0
  634. package/dist/utils/logger.js +10 -6
  635. package/dist/utils/logger.js.map +1 -1
  636. package/dist/utils/m3u.d.ts +3 -2
  637. package/dist/utils/m3u.d.ts.map +1 -0
  638. package/dist/utils/m3u.js +4 -3
  639. package/dist/utils/m3u.js.map +1 -1
  640. package/dist/utils/markup.d.ts +13 -1
  641. package/dist/utils/markup.d.ts.map +1 -0
  642. package/dist/utils/markup.js +28 -4
  643. package/dist/utils/markup.js.map +1 -1
  644. package/dist/utils/memo.d.ts +3 -2
  645. package/dist/utils/memo.d.ts.map +1 -0
  646. package/dist/utils/memo.js +3 -3
  647. package/dist/utils/morganStream.d.ts +1 -0
  648. package/dist/utils/morganStream.d.ts.map +1 -0
  649. package/dist/utils/network.d.ts +1 -0
  650. package/dist/utils/network.d.ts.map +1 -0
  651. package/dist/utils/network.js +2 -2
  652. package/dist/utils/pid.d.ts +3 -25
  653. package/dist/utils/pid.d.ts.map +1 -0
  654. package/dist/utils/pid.js +10 -49
  655. package/dist/utils/pid.js.map +1 -1
  656. package/dist/utils/platform.d.ts +3 -1
  657. package/dist/utils/platform.d.ts.map +1 -0
  658. package/dist/utils/platform.js +2 -1
  659. package/dist/utils/platform.js.map +1 -1
  660. package/dist/utils/processInspector.context.d.ts +8 -0
  661. package/dist/utils/processInspector.context.d.ts.map +1 -0
  662. package/dist/utils/processInspector.context.js +106 -0
  663. package/dist/utils/processInspector.context.js.map +1 -0
  664. package/dist/utils/processInspector.d.ts +55 -0
  665. package/dist/utils/processInspector.d.ts.map +1 -0
  666. package/dist/utils/processInspector.js +127 -0
  667. package/dist/utils/processInspector.js.map +1 -0
  668. package/dist/utils/retry.d.ts +25 -2
  669. package/dist/utils/retry.d.ts.map +1 -0
  670. package/dist/utils/retry.js +33 -6
  671. package/dist/utils/retry.js.map +1 -1
  672. package/dist/utils/runtimeIdentity.context.d.ts +7 -0
  673. package/dist/utils/runtimeIdentity.context.d.ts.map +1 -0
  674. package/dist/utils/runtimeIdentity.context.js +43 -0
  675. package/dist/utils/runtimeIdentity.context.js.map +1 -0
  676. package/dist/utils/runtimeIdentity.d.ts +98 -0
  677. package/dist/utils/runtimeIdentity.d.ts.map +1 -0
  678. package/dist/utils/runtimeIdentity.js +181 -0
  679. package/dist/utils/runtimeIdentity.js.map +1 -0
  680. package/dist/utils/sanitize.d.ts +1 -0
  681. package/dist/utils/sanitize.d.ts.map +1 -0
  682. package/dist/utils/streamContext.d.ts +2 -1
  683. package/dist/utils/streamContext.d.ts.map +1 -0
  684. package/dist/utils/streamContext.js +1 -1
  685. package/dist/utils/timing.d.ts +2 -1
  686. package/dist/utils/timing.d.ts.map +1 -0
  687. package/dist/utils/timing.js +0 -5
  688. package/dist/utils/timing.js.map +1 -1
  689. package/dist/utils/version.d.ts +1 -0
  690. package/dist/utils/version.d.ts.map +1 -0
  691. package/dist/utils/version.js +47 -13
  692. package/dist/utils/version.js.map +1 -1
  693. package/package.json +26 -20
@@ -0,0 +1,102 @@
1
+ /* Copyright(C) 2024-2026, HJD (https://github.com/hjdhjd). All rights reserved.
2
+ *
3
+ * pathHandle.ts: A narrow value type that wraps an absolute filesystem path with platform-aware structural query primitives. This module is the single source of
4
+ * truth for path semantics in the upgrade-detection layer - separator selection, case-folding rules, segment splitting, and prefix containment all live here. The
5
+ * detection strategies receive a PathHandle (not a raw string) and reason about install layout exclusively through its narrow API. By construction a strategy
6
+ * cannot write `currentFile.includes("/node_modules/")` and accidentally hard-code POSIX semantics into a cross-platform code path, because PathHandle has no
7
+ * `.includes` method...the only way to test for a "node_modules/prismcast" run in the path is `hasSegmentChain("node_modules", "prismcast")`, which dispatches to
8
+ * the right separator and case-folding rule automatically.
9
+ *
10
+ * The factory accepts an explicit platform override so cross-platform tests can produce Windows-flavored handles on a Linux CI host. Internally, the factory
11
+ * dispatches every path operation to `path.win32` or `path.posix` rather than the ambient `path` module, so behavior is deterministic regardless of where the
12
+ * host process runs. macOS is treated as case-sensitive, matching Node's `path.posix` semantics; APFS volumes with case-sensitive flags work correctly, and
13
+ * macOS users on default case-insensitive volumes are unaffected because `import.meta.url` and any subprocess output agree on canonical casing in the install
14
+ * layouts PrismCast targets.
15
+ *
16
+ * The API is deliberately small. `raw` is the lone escape hatch, used for handoff to subprocess cwd (the npm-local resolver's packageDir) and for display. Every
17
+ * other operation is a structural query or platform-aware composition, so strategy authors never need to reason about separators or case-folding rules.
18
+ */
19
+ import path from "node:path";
20
+ /**
21
+ * Constructs a PathHandle from an absolute path string. The factory captures the platform once and dispatches every subsequent query through `path.win32` or
22
+ * `path.posix` accordingly, so behavior is independent of where the host process runs. The handle is logically immutable...returned fields are typed readonly
23
+ * and the closed-over state is never mutated.
24
+ *
25
+ * @param raw - The OS-native absolute path string. Empty input produces a degenerate handle whose queries return false/null; a relative input is not rejected
26
+ * (hasSegmentChain still matches its segments), so callers must supply an absolute path.
27
+ * @param options - Optional overrides; the platform override lets tests exercise cross-platform behavior deterministically.
28
+ * @returns A platform-aware PathHandle.
29
+ */
30
+ export function createPathHandle(raw, options = {}) {
31
+ const platform = options.platform ?? process.platform;
32
+ const isWindows = (platform === "win32");
33
+ const pathLib = isWindows ? path.win32 : path.posix;
34
+ // Case-folding rule. Windows is the only platform where the OS treats the filesystem as case-insensitive for path comparisons. POSIX (including macOS at the
35
+ // Node API layer) is case-sensitive. Folding both sides of every comparison consistently is sufficient; we do not need to canonicalize the raw path itself.
36
+ const fold = (segment) => isWindows ? segment.toLowerCase() : segment;
37
+ // Pre-computed segment lists. rawSegments preserves the original casing for path reconstruction (parentBefore needs to splice the original spelling back
38
+ // together so the resulting handle's raw path is byte-faithful to the input). normalized is the folded form used for every comparison.
39
+ const rawSegments = raw.split(pathLib.sep);
40
+ const normalized = rawSegments.map(fold);
41
+ // Locates the first index at which a normalized segment chain matches the path. Returns -1 when there is no match, and also when the chain is empty...we
42
+ // explicitly refuse the vacuous-truth case so an empty rest-parameter expansion never produces a surprising hit.
43
+ const findChain = (chain) => {
44
+ if (chain.length === 0) {
45
+ return -1;
46
+ }
47
+ const target = chain.map(fold);
48
+ const lastStart = normalized.length - target.length;
49
+ for (let i = 0; i <= lastStart; i++) {
50
+ if (target.every((segment, j) => normalized[i + j] === segment)) {
51
+ return i;
52
+ }
53
+ }
54
+ return -1;
55
+ };
56
+ return {
57
+ hasSegmentChain(...segments) {
58
+ return findChain(segments) !== -1;
59
+ },
60
+ isUnder(prefix) {
61
+ // Defensive guard. An empty or relative prefix is not anchorable in the install-detection sense...relative containment is undefined for absolute filesystem
62
+ // paths, and an empty prefix would trivially match every path, which is never useful here.
63
+ if (!prefix || !pathLib.isAbsolute(prefix)) {
64
+ return false;
65
+ }
66
+ // We compare segment lists rather than calling pathLib.relative because Node's relative() has implementation-defined case-handling on Windows that varies
67
+ // by version and is undocumented at the API surface. A hand-rolled split-and-compare gives us one explicit rule that we own and can test. Empty segments
68
+ // (which arise from leading separators on POSIX and the UNC double-leading on Windows) are filtered out symmetrically so the comparison is well-defined
69
+ // for every absolute layout we care about.
70
+ const prefixSegments = pathLib.normalize(prefix).split(pathLib.sep).map(fold).filter((segment) => segment.length > 0);
71
+ const haystack = normalized.filter((segment) => segment.length > 0);
72
+ if ((prefixSegments.length === 0) || (prefixSegments.length >= haystack.length)) {
73
+ return false;
74
+ }
75
+ for (let i = 0; i < prefixSegments.length; i++) {
76
+ if (haystack[i] !== prefixSegments[i]) {
77
+ return false;
78
+ }
79
+ }
80
+ return true;
81
+ },
82
+ join(...segments) {
83
+ return pathLib.join(raw, ...segments);
84
+ },
85
+ parentBefore(...segments) {
86
+ const index = findChain(segments);
87
+ // index <= 0 means no match, or a match at position zero with no parent above it. Either way there is no meaningful parent path to return.
88
+ if (index <= 0) {
89
+ return null;
90
+ }
91
+ const parentRaw = rawSegments.slice(0, index).join(pathLib.sep);
92
+ // The reconstructed parent must be a meaningful absolute path. A bare Windows drive letter ("C:") or the POSIX root with no segments above the chain
93
+ // ("") fails this check and we return null...these are degenerate install layouts (prismcast at the filesystem root) that have no usable project root.
94
+ if (!pathLib.isAbsolute(parentRaw)) {
95
+ return null;
96
+ }
97
+ return createPathHandle(parentRaw, { platform });
98
+ },
99
+ raw
100
+ };
101
+ }
102
+ //# sourceMappingURL=pathHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathHandle.js","sourceRoot":"","sources":["../../src/upgrade/pathHandle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { BootSessionContext } from "./bootSession.ts";
2
+ import type { Nullable } from "../types/index.ts";
3
+ /**
4
+ * Builds the default BootSessionContext from real runtime I/O, snapshotting every reading at construction time so subsequent accessor calls return frozen values.
5
+ * @returns A BootSessionContext whose readings are frozen at the moment of this call.
6
+ */
7
+ export declare function createDefaultBootSessionContext(): BootSessionContext;
8
+ /**
9
+ * Parses field 22 (starttime) out of a /proc/<pid>/stat payload. The format embeds the executable name in parentheses at field 2; that name can itself contain
10
+ * whitespace and parentheses, so we anchor on the last closing paren before splitting the remainder on whitespace. The first field after the closing paren is
11
+ * field 3 (state), which makes the starttime we want land at index 19 of the post-paren split. Exported for direct unit testing.
12
+ * @param raw - The /proc/<pid>/stat payload as a string.
13
+ * @returns The starttime field as a string, or null when the payload is malformed.
14
+ */
15
+ export declare function parsePid1StartTicks(raw: string): Nullable<string>;
16
+ //# sourceMappingURL=bootSession.context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootSession.context.d.ts","sourceRoot":"","sources":["../../src/utils/bootSession.context.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAKlD;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,kBAAkB,CAuBpE;AAkBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAmBjE"}
@@ -0,0 +1,60 @@
1
+ import fs from "node:fs";
2
+ import { isRunningInContainer } from "./platform.js";
3
+ import os from "node:os";
4
+ /**
5
+ * Builds the default BootSessionContext from real runtime I/O, snapshotting every reading at construction time so subsequent accessor calls return frozen values.
6
+ * @returns A BootSessionContext whose readings are frozen at the moment of this call.
7
+ */
8
+ export function createDefaultBootSessionContext() {
9
+ // Snapshot the host boot minute by computing it from system uptime. os.uptime() is sleep-inclusive on Linux (clock_gettime(CLOCK_BOOTTIME), with a /proc/uptime read
10
+ // tried first), macOS (sysctl KERN_BOOTTIME), and Windows (GetTickCount64); each of those primitives keeps counting while the system is suspended, so this value
11
+ // remains stable across sleep/wake cycles. Rounding to the nearest minute absorbs sub-minute NTP drift between writes and reads. Future upgrade: on Linux,
12
+ // /proc/sys/kernel/random/boot_id is a kernel-generated UUID that is regenerated each boot and immune to clock drift; switching this branch to read that file would
13
+ // eliminate the minute-boundary jitter entirely. macOS (sysctl kern.boottime) and Windows (Win32_OS.LastBootUpTime) have equivalent kernel facts but require a
14
+ // subprocess; deferred until a real boundary-jitter incident motivates the work.
15
+ const hostBootMinuteSnapshot = Math.round((Date.now() - (os.uptime() * 1000)) / 60000);
16
+ // Snapshot the container detection result. The project-wide helper reads PRISMCAST_CONTAINER and /.dockerenv; both are stable for the process lifetime.
17
+ const inContainerSnapshot = isRunningInContainer();
18
+ // Snapshot the container instance tag only when in a container. Outside a container /proc/1/stat is the host init, which would not distinguish container
19
+ // restarts within the same host boot; skipping the read avoids spurious work on macOS and Windows where /proc does not exist.
20
+ const containerInstanceTagSnapshot = inContainerSnapshot ? readPid1StartTicks() : null;
21
+ return {
22
+ containerInstanceTag: () => containerInstanceTagSnapshot,
23
+ hostBootMinute: () => hostBootMinuteSnapshot,
24
+ inContainer: () => inContainerSnapshot
25
+ };
26
+ }
27
+ /**
28
+ * Reads field 22 (starttime, clock ticks since boot) from /proc/1/stat. ENOENT on non-Linux platforms and any read failure resolve to null. The parsing is
29
+ * delegated to parsePid1StartTicks so it can be exercised in tests without an injectable filesystem.
30
+ * @returns The container init's starttime as a string, or null when /proc/1/stat is unavailable or malformed.
31
+ */
32
+ function readPid1StartTicks() {
33
+ try {
34
+ return parsePid1StartTicks(fs.readFileSync("/proc/1/stat", "utf-8"));
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ /**
41
+ * Parses field 22 (starttime) out of a /proc/<pid>/stat payload. The format embeds the executable name in parentheses at field 2; that name can itself contain
42
+ * whitespace and parentheses, so we anchor on the last closing paren before splitting the remainder on whitespace. The first field after the closing paren is
43
+ * field 3 (state), which makes the starttime we want land at index 19 of the post-paren split. Exported for direct unit testing.
44
+ * @param raw - The /proc/<pid>/stat payload as a string.
45
+ * @returns The starttime field as a string, or null when the payload is malformed.
46
+ */
47
+ export function parsePid1StartTicks(raw) {
48
+ const rparen = raw.lastIndexOf(")");
49
+ if (rparen === -1) {
50
+ return null;
51
+ }
52
+ const fields = raw.slice(rparen + 1).trim().split(/\s+/);
53
+ if (fields.length < 20) {
54
+ return null;
55
+ }
56
+ // Coalesce to null even though the length guard above proves the index is in range; TypeScript's noUncheckedIndexedAccess still types fields[19] as
57
+ // string | undefined and the explicit ?? null keeps the return type honest.
58
+ return fields[19] ?? null;
59
+ }
60
+ //# sourceMappingURL=bootSession.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootSession.context.js","sourceRoot":"","sources":["../../src/utils/bootSession.context.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB;;;GAGG;AACH,MAAM,UAAU,+BAA+B;IAE7C,qKAAqK;IACrK,iKAAiK;IACjK,2JAA2J;IAC3J,oKAAoK;IACpK,+JAA+J;IAC/J,iFAAiF;IACjF,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAEvF,wJAAwJ;IACxJ,MAAM,mBAAmB,GAAG,oBAAoB,EAAE,CAAC;IAEnD,yJAAyJ;IACzJ,8HAA8H;IAC9H,MAAM,4BAA4B,GAAG,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvF,OAAO;QAEL,oBAAoB,EAAE,GAAG,EAAE,CAAC,4BAA4B;QACxD,cAAc,EAAE,GAAG,EAAE,CAAC,sBAAsB;QAC5C,WAAW,EAAE,GAAG,EAAE,CAAC,mBAAmB;KACvC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB;IAEzB,IAAI,CAAC;QAEH,OAAO,mBAAmB,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAE7C,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAEpC,IAAG,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEzD,IAAG,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAEtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oJAAoJ;IACpJ,4EAA4E;IAC5E,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Nullable } from "../types/index.ts";
2
+ /**
3
+ * The runtime capability set getBootSessionId consumes. Production wires it from real I/O via createDefaultBootSessionContext; tests pass a context literal.
4
+ */
5
+ export interface BootSessionContext {
6
+ readonly containerInstanceTag: () => Nullable<string>;
7
+ readonly hostBootMinute: () => number;
8
+ readonly inContainer: () => boolean;
9
+ }
10
+ /**
11
+ * Returns the boot session identifier for the current process. Outside a container the identifier is just the host boot minute; inside, it is composed with
12
+ * the container init's instance tag so each container restart yields a distinct value even within the same host boot.
13
+ * @param ctx - The boot session context. Defaults to a module-load snapshot of real runtime I/O.
14
+ * @returns A string that is stable across calls in the same kernel/container session and differs across reboots or container restarts.
15
+ */
16
+ export declare function getBootSessionId(ctx?: BootSessionContext): string;
17
+ //# sourceMappingURL=bootSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootSession.d.ts","sourceRoot":"","sources":["../../src/utils/bootSession.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAIjC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IAGtD,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IAGtC,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC;CACrC;AAOD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,kBAAmC,GAAG,MAAM,CAYjF"}
@@ -0,0 +1,20 @@
1
+ import { createDefaultBootSessionContext } from "./bootSession.context.js";
2
+ /* The default context is created once at module load. createDefaultBootSessionContext() snapshots its readings, so this constant captures the boot identifier
3
+ * for the entire process lifetime. Tests bypass it by passing their own context literal.
4
+ */
5
+ const defaultContext = createDefaultBootSessionContext();
6
+ /**
7
+ * Returns the boot session identifier for the current process. Outside a container the identifier is just the host boot minute; inside, it is composed with
8
+ * the container init's instance tag so each container restart yields a distinct value even within the same host boot.
9
+ * @param ctx - The boot session context. Defaults to a module-load snapshot of real runtime I/O.
10
+ * @returns A string that is stable across calls in the same kernel/container session and differs across reboots or container restarts.
11
+ */
12
+ export function getBootSessionId(ctx = defaultContext) {
13
+ const host = String(ctx.hostBootMinute());
14
+ if (!ctx.inContainer()) {
15
+ return host;
16
+ }
17
+ const tag = ctx.containerInstanceTag();
18
+ return (tag === null) ? host : (host + "::" + tag);
19
+ }
20
+ //# sourceMappingURL=bootSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootSession.js","sourceRoot":"","sources":["../../src/utils/bootSession.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAkB3E;;GAEG;AACH,MAAM,cAAc,GAAG,+BAA+B,EAAE,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA0B,cAAc;IAEvE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IAE1C,IAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QAEtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,CAAC,oBAAoB,EAAE,CAAC;IAEvC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;AACrD,CAAC"}
@@ -18,3 +18,4 @@ export declare function getChromeUserAgent(): Nullable<string>;
18
18
  * @returns The fetch Response.
19
19
  */
20
20
  export declare function chromeFetch(url: string | URL, init?: RequestInit): Promise<Response>;
21
+ //# sourceMappingURL=chromeFetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromeFetch.d.ts","sourceRoot":"","sources":["../../src/utils/chromeFetch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAWlD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAG7D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAGrD;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmB1F"}
@@ -8,3 +8,4 @@ export declare const print: (message: string) => void;
8
8
  * @param message - The error message to print.
9
9
  */
10
10
  export declare const printError: (message: string) => void;
11
+ //# sourceMappingURL=cliOutput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliOutput.d.ts","sourceRoot":"","sources":["../../src/utils/cliOutput.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,KAAG,IAAiC,CAAC;AAE1E;;;GAGG;AAEH,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,KAAG,IAAmC,CAAC"}
@@ -1,14 +1,15 @@
1
1
  /**
2
- * The time-dependent capability set: sleep, race-with-timeout, and read-the-clock. Decision logic that consumes a Clock is a pure function of this shape -
2
+ * The time-dependent capability set: sleep, wait-with-timeout, and read-the-clock. Decision logic that consumes a Clock is a pure function of this shape -
3
3
  * production wires it from real I/O via realClock, tests pass a fake clock literal.
4
4
  */
5
5
  export interface Clock {
6
6
  readonly now: () => number;
7
- readonly raceWithTimeout: <T>(promise: Promise<T>, timeoutMs: number, timeoutError?: Error) => Promise<T>;
8
7
  readonly sleep: (ms: number) => Promise<void>;
8
+ readonly waitWithTimeout: <T>(promise: Promise<T>, timeoutMs: number, timeoutError?: Error) => Promise<T>;
9
9
  }
10
10
  /**
11
- * The default Clock implementation. Delegates to performance.now() for current time, to raceWithTimeout() in delay.ts for promise-vs-timeout races, and to
12
- * delay() in delay.ts for sleeps. Production callers consume this via the default-arg pattern; tests bypass it by passing a fake-clock literal.
11
+ * The default Clock implementation. Delegates to performance.now() for current time, to delay() in delay.ts for sleeps, and to waitWithTimeout() in delay.ts
12
+ * for bounded waits. Production callers consume this via the default-arg pattern; tests bypass it by passing a fake-clock literal.
13
13
  */
14
14
  export declare const realClock: Clock;
15
+ //# sourceMappingURL=clock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/utils/clock.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,MAAM,WAAW,KAAK;IAKpB,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAI3B,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAK9C,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3G;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC"}
@@ -1,28 +1,31 @@
1
1
  /* Copyright(C) 2024-2026, HJD (https://github.com/hjdhjd). All rights reserved.
2
2
  *
3
- * clock.ts: The Clock port - the project's abstraction for time-dependent operations. Production code that needs to sleep, race a promise against a timeout, or
3
+ * clock.ts: The Clock port - the project's abstraction for time-dependent operations. Production code that needs to sleep, bound a promise with a timeout, or
4
4
  * read the high-resolution clock should consume a Clock when those operations live inside an async chain that tests need to control deterministically. The
5
- * default realClock delegates to delay() and raceWithTimeout() in delay.ts and to performance.now() in the runtime; tests pass a fake-clock literal that resolves
6
- * sleeps instantly and chooses raceWithTimeout outcomes explicitly.
5
+ * default realClock delegates to delay() and waitWithTimeout() in delay.ts and to performance.now() in the runtime; tests pass a fake-clock literal that
6
+ * resolves sleeps instantly and chooses waitWithTimeout outcomes explicitly.
7
7
  *
8
- * Why this exists. Node's built-in node:test mock.timers exposes only synchronous tick() and runAll() - it has never shipped a tickAsync/runAllAsync variant on
9
- * any version. Synchronous tick advances the fake clock but does not drain microtask chains across nested Promise.race / .finally / await delay() patterns; the
10
- * promises stay pending past the tick. retryOperation is the canonical case: its internal raceWithTimeout -> Promise.race -> .finally -> await delay() chain is
11
- * exactly the shape mock.timers cannot deterministically resolve. Injecting a Clock sidesteps the runtime gap entirely - tests provide a sleep() that resolves
12
- * immediately and a raceWithTimeout() that forwards or rejects on demand.
8
+ * Why this exists. Node's builtin node:test mock.timers exposes only synchronous tick() and runAll() - it has never shipped a tickAsync/runAllAsync variant
9
+ * on any version. Synchronous tick advances the fake clock but does not drain microtask chains across the nested await and finally patterns a bounded wait
10
+ * builds on; the promises stay pending past the tick. retryOperation is the canonical case: its internal waitWithTimeout -> signal race -> finally -> await
11
+ * delay() chain is exactly the shape mock.timers cannot deterministically resolve. Injecting a Clock sidesteps the runtime gap entirely - tests provide a
12
+ * sleep() that resolves immediately and a waitWithTimeout() that forwards or throws on demand.
13
13
  *
14
- * When to use a Clock vs. a direct delay()/raceWithTimeout() import. Use the direct imports when the production code's tests can fake time with mock.timers and
15
- * the call sites are shallow enough for synchronous tick() to drain. Reach for Clock injection only when nested async chains break that pattern, or when the
16
- * test surface needs to assert on the *schedule* (number and durations of sleeps) rather than just the eventual outcome.
14
+ * When to use a Clock vs. a direct delay()/waitWithTimeout() import. Use the direct imports when the production code's tests can fake time with mock.timers
15
+ * and the call sites are shallow enough for synchronous tick() to drain. Reach for Clock injection only when nested async chains break that pattern, or when
16
+ * the test surface needs to assert on the *schedule* (number and durations of sleeps) rather than just the eventual outcome.
17
+ *
18
+ * Project setup: this file expects a sibling `delay.ts` exporting `delay(ms: number): Promise<void>` and `waitWithTimeout<T>(promise: Promise<T>, timeoutMs:
19
+ * number, timeoutError?: Error): Promise<T>`. If the project does not yet have those primitives, create them before adopting this port.
17
20
  */
18
- import { delay, raceWithTimeout } from "./delay.js";
21
+ import { delay, waitWithTimeout } from "./delay.js";
19
22
  /**
20
- * The default Clock implementation. Delegates to performance.now() for current time, to raceWithTimeout() in delay.ts for promise-vs-timeout races, and to
21
- * delay() in delay.ts for sleeps. Production callers consume this via the default-arg pattern; tests bypass it by passing a fake-clock literal.
23
+ * The default Clock implementation. Delegates to performance.now() for current time, to delay() in delay.ts for sleeps, and to waitWithTimeout() in delay.ts
24
+ * for bounded waits. Production callers consume this via the default-arg pattern; tests bypass it by passing a fake-clock literal.
22
25
  */
23
26
  export const realClock = {
24
27
  now: () => performance.now(),
25
- raceWithTimeout,
26
- sleep: delay
28
+ sleep: delay,
29
+ waitWithTimeout
27
30
  };
28
31
  //# sourceMappingURL=clock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/utils/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAuBpD;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAU;IAE9B,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;IAC5B,eAAe;IACf,KAAK,EAAE,KAAK;CACb,CAAC"}
1
+ {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/utils/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAuBpD;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAU;IAE9B,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;IAC5B,KAAK,EAAE,KAAK;IACZ,eAAe;CAChB,CAAC"}
@@ -1,8 +1,15 @@
1
1
  /**
2
- * Parses a comma-separated pattern string and configures the debug filter. Calling this function replaces any previous filter configuration.
2
+ * Parses a comma-separated pattern string and configures the runtime debug filter. Calling this function replaces any previous filter configuration.
3
3
  * @param pattern - Comma-separated list of category patterns (e.g., "tuning:hulu,recovery,-streaming:ffmpeg").
4
4
  */
5
5
  export declare function initDebugFilter(pattern: string): void;
6
+ /**
7
+ * Re-emits a pattern string in the canonical form getCurrentPattern produces - whitespace trimmed, duplicates collapsed, wildcard then excludes then includes -
8
+ * WITHOUT touching the active runtime filter. Used to normalize a persisted pattern for storage and diffing independently of applying it live.
9
+ * @param pattern - The raw pattern string to canonicalize.
10
+ * @returns The canonical pattern string.
11
+ */
12
+ export declare function canonicalizeDebugPattern(pattern: string): string;
6
13
  /**
7
14
  * Checks whether a specific debug category is enabled under the current filter configuration.
8
15
  * @param category - The category to check (e.g., "tuning:hulu", "recovery:tab").
@@ -31,3 +38,4 @@ export interface DebugCategory {
31
38
  * Parent groups (e.g., "streaming", "timing", "tuning") are derived by the UI from the colon-separated namespaces - only leaf categories are declared here.
32
39
  */
33
40
  export declare const DEBUG_CATEGORIES: readonly DebugCategory[];
41
+ //# sourceMappingURL=debugFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugFilter.d.ts","sourceRoot":"","sources":["../../src/utils/debugFilter.ts"],"names":[],"mappings":"AA4HA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQrD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAmB3D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAG3C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAID;;GAEG;AACH,MAAM,WAAW,aAAa;IAE5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAsDpD,CAAC"}
@@ -19,10 +19,10 @@
19
19
  let anyEnabled = false;
20
20
  // Whether wildcard (*) was specified - all categories pass unless explicitly excluded.
21
21
  let wildcardEnabled = false;
22
- // Categories to include (exact or prefix match).
23
- const includeSet = new Set();
24
- // Categories to exclude (exact or prefix match). Takes priority over includes and wildcard.
25
- const excludeSet = new Set();
22
+ // Categories to include (exact or prefix match). Reassigned wholesale by initDebugFilter from a freshly parsed pattern, so it is a let rather than a const.
23
+ let includeSet = new Set();
24
+ // Categories to exclude (exact or prefix match). Takes priority over includes and wildcard. Reassigned wholesale by initDebugFilter.
25
+ let excludeSet = new Set();
26
26
  /**
27
27
  * Checks whether a category matches any pattern in the given set. A pattern matches if it equals the category exactly or if the category starts with the pattern
28
28
  * followed by a colon (prefix match for sub-categories).
@@ -42,31 +42,66 @@ function matchesAny(category, patterns) {
42
42
  return false;
43
43
  }
44
44
  /**
45
- * Parses a comma-separated pattern string and configures the debug filter. Calling this function replaces any previous filter configuration.
45
+ * Parses a comma-separated pattern string into its structured form. Pure: it allocates fresh sets and never touches module state, so it is safe to call for
46
+ * canonicalization independently of applying the filter. Whitespace around commas is trimmed and empty tokens are dropped; duplicate tokens collapse via the sets.
46
47
  * @param pattern - Comma-separated list of category patterns (e.g., "tuning:hulu,recovery,-streaming:ffmpeg").
48
+ * @returns The parsed wildcard flag and include/exclude sets.
47
49
  */
48
- export function initDebugFilter(pattern) {
49
- // Reset state.
50
- includeSet.clear();
51
- excludeSet.clear();
52
- wildcardEnabled = false;
53
- anyEnabled = false;
54
- const parts = pattern.split(",").map((p) => p.trim()).filter((p) => p.length > 0);
55
- if (parts.length === 0) {
56
- return;
57
- }
58
- for (const part of parts) {
50
+ function parsePattern(pattern) {
51
+ const excludes = new Set();
52
+ const includes = new Set();
53
+ let wildcard = false;
54
+ for (const part of pattern.split(",").map((p) => p.trim()).filter((p) => p.length > 0)) {
59
55
  if (part === "*") {
60
- wildcardEnabled = true;
56
+ wildcard = true;
61
57
  }
62
58
  else if (part.startsWith("-")) {
63
- excludeSet.add(part.substring(1));
59
+ excludes.add(part.substring(1));
64
60
  }
65
61
  else {
66
- includeSet.add(part);
62
+ includes.add(part);
67
63
  }
68
64
  }
69
- anyEnabled = true;
65
+ return { excludes, includes, wildcard };
66
+ }
67
+ /**
68
+ * Re-emits a parsed pattern as its canonical string form: wildcard first, then excludes (prefixed with "-"), then includes, comma-joined. Pure inverse of
69
+ * parsePattern, shared by getCurrentPattern (formatting module state) and canonicalizeDebugPattern (formatting a freshly parsed pattern).
70
+ * @param parsed - The parsed pattern to format.
71
+ * @returns The canonical comma-separated pattern string ("" when nothing is configured).
72
+ */
73
+ function formatPattern(parsed) {
74
+ const parts = [];
75
+ if (parsed.wildcard) {
76
+ parts.push("*");
77
+ }
78
+ for (const entry of parsed.excludes) {
79
+ parts.push("-" + entry);
80
+ }
81
+ for (const entry of parsed.includes) {
82
+ parts.push(entry);
83
+ }
84
+ return parts.join(",");
85
+ }
86
+ /**
87
+ * Parses a comma-separated pattern string and configures the runtime debug filter. Calling this function replaces any previous filter configuration.
88
+ * @param pattern - Comma-separated list of category patterns (e.g., "tuning:hulu,recovery,-streaming:ffmpeg").
89
+ */
90
+ export function initDebugFilter(pattern) {
91
+ const parsed = parsePattern(pattern);
92
+ includeSet = parsed.includes;
93
+ excludeSet = parsed.excludes;
94
+ wildcardEnabled = parsed.wildcard;
95
+ anyEnabled = parsed.wildcard || (parsed.includes.size > 0) || (parsed.excludes.size > 0);
96
+ }
97
+ /**
98
+ * Re-emits a pattern string in the canonical form getCurrentPattern produces - whitespace trimmed, duplicates collapsed, wildcard then excludes then includes -
99
+ * WITHOUT touching the active runtime filter. Used to normalize a persisted pattern for storage and diffing independently of applying it live.
100
+ * @param pattern - The raw pattern string to canonicalize.
101
+ * @returns The canonical pattern string.
102
+ */
103
+ export function canonicalizeDebugPattern(pattern) {
104
+ return formatPattern(parsePattern(pattern));
70
105
  }
71
106
  /**
72
107
  * Checks whether a specific debug category is enabled under the current filter configuration.
@@ -101,29 +136,20 @@ export function getCurrentPattern() {
101
136
  if (!anyEnabled) {
102
137
  return "";
103
138
  }
104
- const parts = [];
105
- if (wildcardEnabled) {
106
- parts.push("*");
107
- }
108
- // Exclude entries are prefixed with "-".
109
- for (const entry of excludeSet) {
110
- parts.push("-" + entry);
111
- }
112
- // Include entries are bare category names.
113
- for (const entry of includeSet) {
114
- parts.push(entry);
115
- }
116
- return parts.join(",");
139
+ return formatPattern({ excludes: excludeSet, includes: includeSet, wildcard: wildcardEnabled });
117
140
  }
118
141
  /**
119
142
  * Static registry of all known debug categories with descriptions. Sorted alphabetically by category. The /debug endpoint uses this to render hierarchical checkboxes.
120
143
  * Parent groups (e.g., "streaming", "timing", "tuning") are derived by the UI from the colon-separated namespaces - only leaf categories are declared here.
121
144
  */
122
145
  export const DEBUG_CATEGORIES = [
146
+ { category: "browser:consent", description: "Automatic consent/overlay handling: cookie-banner rejects, embed-gate accepts, per-site modal dismissals." },
123
147
  { category: "browser:lifecycle", description: "Browser lifecycle: launch, close, stale page cleanup, restart." },
124
148
  { category: "browser:video", description: "Video context, fullscreen, volume locking, playback." },
125
149
  { category: "cdp", description: "Enables the Chrome DevTools Protocol proxy at /cdp. Feature gate, not a log filter - observable via its HTTP/WS surface." },
126
150
  { category: "config:general", description: "Service groups, version checking." },
151
+ { category: "config:reactivity", description: "Config-change reactivity dispatch: outcomes ignored for paths a handler was not given." },
152
+ { category: "hdhr", description: "HDHomeRun UDP responder: per-packet dispatch traces (Discover, Get, Set, malformed drops), reply send failures." },
127
153
  { category: "native:coordinator", description: "Native streaming decisions: interception result, probe result, capture teardown, proxy start." },
128
154
  { category: "native:decrypt", description: "AES-128 decryption: key fetch, IV source (explicit vs. sequence), segment sizes." },
129
155
  { category: "native:intercept", description: "CDP manifest interception: listener installed, .m3u8 URLs observed, master identified, timeout." },
@@ -158,6 +184,7 @@ export const DEBUG_CATEGORIES = [
158
184
  { category: "timing:startup", description: "Stream startup: init segment, first playlist, capture ready." },
159
185
  { category: "timing:tab", description: "Tab replacement: old tab cleanup, new page creation." },
160
186
  { category: "timing:tune", description: "Tune waterfall: navigation, channel selection, video ready." },
187
+ { category: "tuning:cache", description: "Cached direct watch URLs: retention decisions when a tune fails." },
161
188
  { category: "tuning:cox", description: "Cox Contour TV: channelmap API interception, SPA channel switching, Watch Now modal dismissal." },
162
189
  { category: "tuning:directv", description: "DirecTV Stream: interceptor tuning, cache, logo click fallback." },
163
190
  { category: "tuning:fox", description: "Fox.com guide grid: console bridge, page errors, request failures, channel-switch diagnostics." },
@@ -1 +1 @@
1
- {"version":3,"file":"debugFilter.js","sourceRoot":"","sources":["../../src/utils/debugFilter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debugFilter.js","sourceRoot":"","sources":["../../src/utils/debugFilter.ts"],"names":[],"mappings":"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"}