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.
- package/dist/app.d.ts +6 -3
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +140 -86
- package/dist/app.js.map +1 -1
- package/dist/browser/blockedPage.d.ts +80 -0
- package/dist/browser/blockedPage.d.ts.map +1 -0
- package/dist/browser/blockedPage.js +209 -0
- package/dist/browser/blockedPage.js.map +1 -0
- package/dist/browser/browserSupervisor.d.ts +80 -0
- package/dist/browser/browserSupervisor.d.ts.map +1 -0
- package/dist/browser/browserSupervisor.js +186 -0
- package/dist/browser/browserSupervisor.js.map +1 -0
- package/dist/browser/cdp.d.ts +1 -0
- package/dist/browser/cdp.d.ts.map +1 -0
- package/dist/browser/cdp.js +6 -5
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +45 -14
- package/dist/browser/channelSelection.d.ts.map +1 -0
- package/dist/browser/channelSelection.js +81 -18
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/consent.d.ts +152 -0
- package/dist/browser/consent.d.ts.map +1 -0
- package/dist/browser/consent.js +418 -0
- package/dist/browser/consent.js.map +1 -0
- package/dist/browser/display.d.ts +1 -0
- package/dist/browser/display.d.ts.map +1 -0
- package/dist/browser/hlsPlaylistObserver.d.ts +55 -0
- package/dist/browser/hlsPlaylistObserver.d.ts.map +1 -0
- package/dist/browser/hlsPlaylistObserver.js +132 -0
- package/dist/browser/hlsPlaylistObserver.js.map +1 -0
- package/dist/browser/index.d.ts +67 -40
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +508 -300
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/launchGovernor.d.ts +89 -0
- package/dist/browser/launchGovernor.d.ts.map +1 -0
- package/dist/browser/launchGovernor.js +96 -0
- package/dist/browser/launchGovernor.js.map +1 -0
- package/dist/browser/login.d.ts +10 -2
- package/dist/browser/login.d.ts.map +1 -0
- package/dist/browser/login.js +36 -5
- package/dist/browser/login.js.map +1 -1
- package/dist/browser/manifestInterceptor.d.ts +102 -49
- package/dist/browser/manifestInterceptor.d.ts.map +1 -0
- package/dist/browser/manifestInterceptor.js +219 -237
- package/dist/browser/manifestInterceptor.js.map +1 -1
- package/dist/browser/pageStaleness.d.ts +30 -0
- package/dist/browser/pageStaleness.d.ts.map +1 -0
- package/dist/browser/pageStaleness.js +76 -0
- package/dist/browser/pageStaleness.js.map +1 -0
- package/dist/browser/precaching.d.ts +95 -3
- package/dist/browser/precaching.d.ts.map +1 -0
- package/dist/browser/precaching.js +499 -65
- package/dist/browser/precaching.js.map +1 -1
- package/dist/browser/tabNetworkObserver.d.ts +49 -0
- package/dist/browser/tabNetworkObserver.d.ts.map +1 -0
- package/dist/browser/tabNetworkObserver.js +144 -0
- package/dist/browser/tabNetworkObserver.js.map +1 -0
- package/dist/browser/tuning/cache.d.ts +61 -0
- package/dist/browser/tuning/cache.d.ts.map +1 -0
- package/dist/browser/tuning/cache.js +62 -0
- package/dist/browser/tuning/cache.js.map +1 -0
- package/dist/browser/tuning/comcastPolymer.d.ts +3 -2
- package/dist/browser/tuning/comcastPolymer.d.ts.map +1 -0
- package/dist/browser/tuning/comcastPolymer.js +79 -102
- package/dist/browser/tuning/comcastPolymer.js.map +1 -1
- package/dist/browser/tuning/cox.d.ts +1 -0
- package/dist/browser/tuning/cox.d.ts.map +1 -0
- package/dist/browser/tuning/directv.d.ts +1 -0
- package/dist/browser/tuning/directv.d.ts.map +1 -0
- package/dist/browser/tuning/directv.js +52 -46
- package/dist/browser/tuning/directv.js.map +1 -1
- package/dist/browser/tuning/fox.d.ts +1 -0
- package/dist/browser/tuning/fox.d.ts.map +1 -0
- package/dist/browser/tuning/fox.js +13 -12
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/gridSearch.d.ts +68 -0
- package/dist/browser/tuning/gridSearch.d.ts.map +1 -0
- package/dist/browser/tuning/gridSearch.js +85 -0
- package/dist/browser/tuning/gridSearch.js.map +1 -0
- package/dist/browser/tuning/hbo.d.ts +1 -0
- package/dist/browser/tuning/hbo.d.ts.map +1 -0
- package/dist/browser/tuning/hbo.js +73 -45
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.d.ts +1 -0
- package/dist/browser/tuning/hulu.d.ts.map +1 -0
- package/dist/browser/tuning/hulu.js +128 -173
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/shared.d.ts +75 -5
- package/dist/browser/tuning/shared.d.ts.map +1 -0
- package/dist/browser/tuning/shared.js +216 -6
- package/dist/browser/tuning/shared.js.map +1 -1
- package/dist/browser/tuning/sling.d.ts +1 -0
- package/dist/browser/tuning/sling.d.ts.map +1 -0
- package/dist/browser/tuning/sling.js +105 -126
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/spectrum.d.ts +1 -0
- package/dist/browser/tuning/spectrum.d.ts.map +1 -0
- package/dist/browser/tuning/spectrum.js +80 -125
- package/dist/browser/tuning/spectrum.js.map +1 -1
- package/dist/browser/tuning/thumbnailRow.d.ts +1 -0
- package/dist/browser/tuning/thumbnailRow.d.ts.map +1 -0
- package/dist/browser/tuning/thumbnailRow.js +8 -2
- package/dist/browser/tuning/thumbnailRow.js.map +1 -1
- package/dist/browser/tuning/tileClick.d.ts +1 -0
- package/dist/browser/tuning/tileClick.d.ts.map +1 -0
- package/dist/browser/tuning/tileClick.js +3 -2
- package/dist/browser/tuning/tileClick.js.map +1 -1
- package/dist/browser/tuning/xfinity.d.ts +1 -0
- package/dist/browser/tuning/xfinity.d.ts.map +1 -0
- package/dist/browser/tuning/youtubeTv.d.ts +1 -0
- package/dist/browser/tuning/youtubeTv.d.ts.map +1 -0
- package/dist/browser/tuning/youtubeTv.js +74 -127
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +54 -14
- package/dist/browser/video.d.ts.map +1 -0
- package/dist/browser/video.js +296 -138
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.d.ts +1 -0
- package/dist/channels/index.d.ts.map +1 -0
- package/dist/channels/index.js +12 -9
- package/dist/channels/index.js.map +1 -1
- package/dist/config/channelForm.d.ts +15 -1
- package/dist/config/channelForm.d.ts.map +1 -0
- package/dist/config/channelForm.js +28 -12
- package/dist/config/channelForm.js.map +1 -1
- package/dist/config/consistencyProbe.d.ts +1 -0
- package/dist/config/consistencyProbe.d.ts.map +1 -0
- package/dist/config/consistencyProbe.js +27 -21
- package/dist/config/consistencyProbe.js.map +1 -1
- package/dist/config/health.d.ts +41 -8
- package/dist/config/health.d.ts.map +1 -0
- package/dist/config/health.js +189 -38
- package/dist/config/health.js.map +1 -1
- package/dist/config/index.d.ts +55 -3
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +320 -69
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +10 -9
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +11 -11
- package/dist/config/paths.js.map +1 -1
- package/dist/config/persistence.context.d.ts +1 -0
- package/dist/config/persistence.context.d.ts.map +1 -0
- package/dist/config/persistence.d.ts +13 -10
- package/dist/config/persistence.d.ts.map +1 -0
- package/dist/config/persistence.js +40 -21
- package/dist/config/persistence.js.map +1 -1
- package/dist/config/presets.d.ts +1 -0
- package/dist/config/presets.d.ts.map +1 -0
- package/dist/config/profiles.d.ts +22 -15
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/config/profiles.js +81 -47
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/providerLineups.d.ts +47 -0
- package/dist/config/providerLineups.d.ts.map +1 -0
- package/dist/config/providerLineups.js +137 -0
- package/dist/config/providerLineups.js.map +1 -0
- package/dist/config/reactivity.d.ts +84 -0
- package/dist/config/reactivity.d.ts.map +1 -0
- package/dist/config/reactivity.js +226 -0
- package/dist/config/reactivity.js.map +1 -0
- package/dist/config/servicePacks.d.ts +18 -2
- package/dist/config/servicePacks.d.ts.map +1 -0
- package/dist/config/servicePacks.js +53 -11
- package/dist/config/servicePacks.js.map +1 -1
- package/dist/config/services.d.ts +21 -15
- package/dist/config/services.d.ts.map +1 -0
- package/dist/config/services.js +35 -24
- package/dist/config/services.js.map +1 -1
- package/dist/config/sites.d.ts +6 -4
- package/dist/config/sites.d.ts.map +1 -0
- package/dist/config/sites.js +15 -11
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +129 -30
- package/dist/config/userChannels.d.ts.map +1 -0
- package/dist/config/userChannels.js +333 -68
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +14 -9
- package/dist/config/userConfig.d.ts.map +1 -0
- package/dist/config/userConfig.js +87 -25
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +10 -6
- package/dist/config/userProfiles.d.ts.map +1 -0
- package/dist/config/userProfiles.js +64 -39
- package/dist/config/userProfiles.js.map +1 -1
- package/dist/hdhr/channelMap.d.ts +1 -0
- package/dist/hdhr/channelMap.d.ts.map +1 -0
- package/dist/hdhr/deviceId.d.ts +1 -0
- package/dist/hdhr/deviceId.d.ts.map +1 -0
- package/dist/hdhr/discover.d.ts +1 -0
- package/dist/hdhr/discover.d.ts.map +1 -0
- package/dist/hdhr/discover.js +48 -47
- package/dist/hdhr/discover.js.map +1 -1
- package/dist/hdhr/getHandlers.d.ts +29 -0
- package/dist/hdhr/getHandlers.d.ts.map +1 -0
- package/dist/hdhr/getHandlers.js +196 -0
- package/dist/hdhr/getHandlers.js.map +1 -0
- package/dist/hdhr/identity.d.ts +36 -0
- package/dist/hdhr/identity.d.ts.map +1 -0
- package/dist/hdhr/identity.js +51 -0
- package/dist/hdhr/identity.js.map +1 -0
- package/dist/hdhr/index.d.ts +22 -4
- package/dist/hdhr/index.d.ts.map +1 -0
- package/dist/hdhr/index.js +229 -54
- package/dist/hdhr/index.js.map +1 -1
- package/dist/hdhr/protocol.d.ts +75 -0
- package/dist/hdhr/protocol.d.ts.map +1 -0
- package/dist/hdhr/protocol.js +264 -0
- package/dist/hdhr/protocol.js.map +1 -0
- package/dist/hdhr/tunerState.d.ts +24 -0
- package/dist/hdhr/tunerState.d.ts.map +1 -0
- package/dist/hdhr/tunerState.js +67 -0
- package/dist/hdhr/tunerState.js.map +1 -0
- package/dist/hdhr/udp.d.ts +43 -0
- package/dist/hdhr/udp.d.ts.map +1 -0
- package/dist/hdhr/udp.js +277 -0
- package/dist/hdhr/udp.js.map +1 -0
- package/dist/identity.d.ts +1 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +13 -11
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -12
- package/dist/index.js.map +1 -1
- package/dist/native/codecInference.d.ts +1 -0
- package/dist/native/codecInference.d.ts.map +1 -0
- package/dist/native/codecInference.js +50 -5
- package/dist/native/codecInference.js.map +1 -1
- package/dist/native/decrypt.d.ts +6 -2
- package/dist/native/decrypt.d.ts.map +1 -0
- package/dist/native/decrypt.js +15 -8
- package/dist/native/decrypt.js.map +1 -1
- package/dist/native/index.d.ts +40 -17
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/index.js +281 -120
- package/dist/native/index.js.map +1 -1
- package/dist/native/probe.d.ts +114 -18
- package/dist/native/probe.d.ts.map +1 -0
- package/dist/native/probe.js +452 -115
- package/dist/native/probe.js.map +1 -1
- package/dist/native/proxy.d.ts +57 -5
- package/dist/native/proxy.d.ts.map +1 -0
- package/dist/native/proxy.js +604 -170
- package/dist/native/proxy.js.map +1 -1
- package/dist/native/tokenExpiry.d.ts +1 -0
- package/dist/native/tokenExpiry.d.ts.map +1 -0
- package/dist/native/tokenExpiry.js +1 -1
- package/dist/routes/assets.d.ts +1 -0
- package/dist/routes/assets.d.ts.map +1 -0
- package/dist/routes/assets.js +4 -2
- package/dist/routes/assets.js.map +1 -1
- package/dist/routes/auth.d.ts +1 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +0 -1
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/cdp.d.ts +5 -5
- package/dist/routes/cdp.d.ts.map +1 -0
- package/dist/routes/cdp.js +59 -20
- package/dist/routes/cdp.js.map +1 -1
- package/dist/routes/channels.d.ts +1 -0
- package/dist/routes/channels.d.ts.map +1 -0
- package/dist/routes/channels.js +2 -1
- package/dist/routes/channels.js.map +1 -1
- package/dist/routes/clientActions.d.ts +98 -0
- package/dist/routes/clientActions.d.ts.map +1 -0
- package/dist/routes/clientActions.js +113 -0
- package/dist/routes/clientActions.js.map +1 -0
- package/dist/routes/components.d.ts +5 -3
- package/dist/routes/components.d.ts.map +1 -0
- package/dist/routes/components.js +36 -39
- package/dist/routes/components.js.map +1 -1
- package/dist/routes/config/channels/endpoints/browse.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/browse.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/browse.js +23 -10
- package/dist/routes/config/channels/endpoints/browse.js.map +1 -1
- package/dist/routes/config/channels/endpoints/bulk.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/bulk.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/bulk.js +5 -3
- package/dist/routes/config/channels/endpoints/bulk.js.map +1 -1
- package/dist/routes/config/channels/endpoints/crud.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/crud.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/crud.js +85 -93
- package/dist/routes/config/channels/endpoints/crud.js.map +1 -1
- package/dist/routes/config/channels/endpoints/importExport.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/importExport.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/importExport.js +6 -3
- package/dist/routes/config/channels/endpoints/importExport.js.map +1 -1
- package/dist/routes/config/channels/endpoints/predefined.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/predefined.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/prefs.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/prefs.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/prefs.js +2 -1
- package/dist/routes/config/channels/endpoints/prefs.js.map +1 -1
- package/dist/routes/config/channels/endpoints/service.d.ts +2 -1
- package/dist/routes/config/channels/endpoints/service.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/service.js +3 -1
- package/dist/routes/config/channels/endpoints/service.js.map +1 -1
- package/dist/routes/config/channels/endpoints/tags.d.ts +1 -0
- package/dist/routes/config/channels/endpoints/tags.d.ts.map +1 -0
- package/dist/routes/config/channels/endpoints/tags.js +13 -7
- package/dist/routes/config/channels/endpoints/tags.js.map +1 -1
- package/dist/routes/config/channels/healthBridge.d.ts +24 -0
- package/dist/routes/config/channels/healthBridge.d.ts.map +1 -0
- package/dist/routes/config/channels/healthBridge.js +71 -0
- package/dist/routes/config/channels/healthBridge.js.map +1 -0
- package/dist/routes/config/channels/http/handler.d.ts +1 -0
- package/dist/routes/config/channels/http/handler.d.ts.map +1 -0
- package/dist/routes/config/channels/http/playlistHint.d.ts +2 -1
- package/dist/routes/config/channels/http/playlistHint.d.ts.map +1 -0
- package/dist/routes/config/channels/http/playlistHint.js +16 -2
- package/dist/routes/config/channels/http/playlistHint.js.map +1 -1
- package/dist/routes/config/channels/http/serviceWarning.d.ts +4 -2
- package/dist/routes/config/channels/http/serviceWarning.d.ts.map +1 -0
- package/dist/routes/config/channels/http/serviceWarning.js +3 -2
- package/dist/routes/config/channels/http/serviceWarning.js.map +1 -1
- package/dist/routes/config/channels/index.d.ts +1 -0
- package/dist/routes/config/channels/index.d.ts.map +1 -0
- package/dist/routes/config/channels/setup.d.ts +1 -0
- package/dist/routes/config/channels/setup.d.ts.map +1 -0
- package/dist/routes/config/channels/table.d.ts +3 -3
- package/dist/routes/config/channels/table.d.ts.map +1 -0
- package/dist/routes/config/channels/table.js +148 -107
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/http/envelope.d.ts +1 -0
- package/dist/routes/config/http/envelope.d.ts.map +1 -0
- package/dist/routes/config/index.d.ts +35 -3
- package/dist/routes/config/index.d.ts.map +1 -0
- package/dist/routes/config/index.js +51 -2
- package/dist/routes/config/index.js.map +1 -1
- package/dist/routes/config/services.d.ts +5 -4
- package/dist/routes/config/services.d.ts.map +1 -0
- package/dist/routes/config/services.js +57 -43
- package/dist/routes/config/services.js.map +1 -1
- package/dist/routes/config/settings.d.ts +1 -0
- package/dist/routes/config/settings.d.ts.map +1 -0
- package/dist/routes/config/settings.js +98 -49
- package/dist/routes/config/settings.js.map +1 -1
- package/dist/routes/debug.d.ts +1 -0
- package/dist/routes/debug.d.ts.map +1 -0
- package/dist/routes/debug.js +277 -139
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/health.d.ts +39 -1
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +33 -27
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/hls.d.ts +1 -0
- package/dist/routes/hls.d.ts.map +1 -0
- package/dist/routes/icons.d.ts +1 -0
- package/dist/routes/icons.d.ts.map +1 -0
- package/dist/routes/icons.js +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/logs.d.ts +1 -0
- package/dist/routes/logs.d.ts.map +1 -0
- package/dist/routes/logs.js +14 -4
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/mpegts.d.ts +1 -0
- package/dist/routes/mpegts.d.ts.map +1 -0
- package/dist/routes/play.d.ts +1 -0
- package/dist/routes/play.d.ts.map +1 -0
- package/dist/routes/playlist.d.ts +1 -0
- package/dist/routes/playlist.d.ts.map +1 -0
- package/dist/routes/playlist.js +7 -2
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/root/content.d.ts +8 -5
- package/dist/routes/root/content.d.ts.map +1 -0
- package/dist/routes/root/content.js +29 -26
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/index.d.ts +2 -1
- package/dist/routes/root/index.d.ts.map +1 -0
- package/dist/routes/root/index.js +26 -21
- package/dist/routes/root/index.js.map +1 -1
- package/dist/routes/root/scripts/channels.d.ts +6 -0
- package/dist/routes/root/scripts/channels.d.ts.map +1 -0
- package/dist/routes/root/scripts/channels.js +197 -118
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/clientEscape.d.ts +22 -0
- package/dist/routes/root/scripts/clientEscape.d.ts.map +1 -0
- package/dist/routes/root/scripts/clientEscape.js +41 -0
- package/dist/routes/root/scripts/clientEscape.js.map +1 -0
- package/dist/routes/root/scripts/clientUrl.d.ts +23 -0
- package/dist/routes/root/scripts/clientUrl.d.ts.map +1 -0
- package/dist/routes/root/scripts/clientUrl.js +44 -0
- package/dist/routes/root/scripts/clientUrl.js.map +1 -0
- package/dist/routes/root/scripts/config.d.ts +6 -0
- package/dist/routes/root/scripts/config.d.ts.map +1 -0
- package/dist/routes/root/scripts/config.js +110 -24
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/index.d.ts +1 -0
- package/dist/routes/root/scripts/index.d.ts.map +1 -0
- package/dist/routes/root/scripts/shared.d.ts +1 -0
- package/dist/routes/root/scripts/shared.d.ts.map +1 -0
- package/dist/routes/root/scripts/shared.js +112 -26
- package/dist/routes/root/scripts/shared.js.map +1 -1
- package/dist/routes/root/scripts/status.d.ts +1 -0
- package/dist/routes/root/scripts/status.d.ts.map +1 -0
- package/dist/routes/root/scripts/status.handlers.d.ts +23 -33
- package/dist/routes/root/scripts/status.handlers.d.ts.map +1 -0
- package/dist/routes/root/scripts/status.handlers.js +46 -92
- package/dist/routes/root/scripts/status.handlers.js.map +1 -1
- package/dist/routes/root/scripts/status.js +21 -8
- package/dist/routes/root/scripts/status.js.map +1 -1
- package/dist/routes/root/styles.d.ts +1 -0
- package/dist/routes/root/styles.d.ts.map +1 -0
- package/dist/routes/root/styles.js +7 -4
- package/dist/routes/root/styles.js.map +1 -1
- package/dist/routes/services.d.ts +13 -1
- package/dist/routes/services.d.ts.map +1 -0
- package/dist/routes/services.js +81 -68
- package/dist/routes/services.js.map +1 -1
- package/dist/routes/sse.d.ts +1 -0
- package/dist/routes/sse.d.ts.map +1 -0
- package/dist/routes/sse.js +1 -1
- package/dist/routes/sse.js.map +1 -1
- package/dist/routes/streams.d.ts +2 -1
- package/dist/routes/streams.d.ts.map +1 -0
- package/dist/routes/streams.js +6 -4
- package/dist/routes/streams.js.map +1 -1
- package/dist/routes/theme.d.ts +3 -2
- package/dist/routes/theme.d.ts.map +1 -0
- package/dist/routes/theme.js +6 -5
- package/dist/routes/theme.js.map +1 -1
- package/dist/routes/ui.d.ts +3 -1
- package/dist/routes/ui.d.ts.map +1 -0
- package/dist/routes/ui.js +16 -4
- package/dist/routes/ui.js.map +1 -1
- package/dist/routes/upgrade.d.ts +1 -0
- package/dist/routes/upgrade.d.ts.map +1 -0
- package/dist/routes/upgrade.js +6 -2
- package/dist/routes/upgrade.js.map +1 -1
- package/dist/service/commands.context.d.ts +1 -0
- package/dist/service/commands.context.d.ts.map +1 -0
- package/dist/service/commands.context.js +4 -3
- package/dist/service/commands.context.js.map +1 -1
- package/dist/service/commands.d.ts +1 -0
- package/dist/service/commands.d.ts.map +1 -0
- package/dist/service/commands.js +10 -13
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.context.d.ts +1 -0
- package/dist/service/generators.context.d.ts.map +1 -0
- package/dist/service/generators.context.js +1 -1
- package/dist/service/generators.context.js.map +1 -1
- package/dist/service/generators.d.ts +4 -3
- package/dist/service/generators.d.ts.map +1 -0
- package/dist/service/generators.js +111 -31
- package/dist/service/generators.js.map +1 -1
- package/dist/service/index.d.ts +1 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/streaming/captureLock.d.ts +44 -0
- package/dist/streaming/captureLock.d.ts.map +1 -0
- package/dist/streaming/captureLock.js +95 -0
- package/dist/streaming/captureLock.js.map +1 -0
- package/dist/streaming/captureSession.d.ts +31 -0
- package/dist/streaming/captureSession.d.ts.map +1 -0
- package/dist/streaming/captureSession.js +54 -0
- package/dist/streaming/captureSession.js.map +1 -0
- package/dist/streaming/clients.d.ts +1 -0
- package/dist/streaming/clients.d.ts.map +1 -0
- package/dist/streaming/codec.d.ts +1 -0
- package/dist/streaming/codec.d.ts.map +1 -0
- package/dist/streaming/fmp4Segmenter.d.ts +29 -2
- package/dist/streaming/fmp4Segmenter.d.ts.map +1 -0
- package/dist/streaming/fmp4Segmenter.js +79 -26
- package/dist/streaming/fmp4Segmenter.js.map +1 -1
- package/dist/streaming/hls.d.ts +18 -7
- package/dist/streaming/hls.d.ts.map +1 -0
- package/dist/streaming/hls.js +220 -120
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsResume.d.ts +1 -0
- package/dist/streaming/hlsResume.d.ts.map +1 -0
- package/dist/streaming/hlsResume.js +1 -1
- package/dist/streaming/hlsResume.js.map +1 -1
- package/dist/streaming/hlsSegments.d.ts +59 -2
- package/dist/streaming/hlsSegments.d.ts.map +1 -0
- package/dist/streaming/hlsSegments.js +147 -17
- package/dist/streaming/hlsSegments.js.map +1 -1
- package/dist/streaming/lifecycle.d.ts +4 -1
- package/dist/streaming/lifecycle.d.ts.map +1 -0
- package/dist/streaming/lifecycle.js +65 -85
- package/dist/streaming/lifecycle.js.map +1 -1
- package/dist/streaming/monitor.d.ts +6 -4
- package/dist/streaming/monitor.d.ts.map +1 -0
- package/dist/streaming/monitor.js +343 -145
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +5 -4
- package/dist/streaming/mp4Parser.d.ts.map +1 -0
- package/dist/streaming/mp4Parser.js +36 -13
- package/dist/streaming/mp4Parser.js.map +1 -1
- package/dist/streaming/mpegts.d.ts +16 -0
- package/dist/streaming/mpegts.d.ts.map +1 -0
- package/dist/streaming/mpegts.js +61 -17
- package/dist/streaming/mpegts.js.map +1 -1
- package/dist/streaming/playlistBuilder.d.ts +1 -0
- package/dist/streaming/playlistBuilder.d.ts.map +1 -0
- package/dist/streaming/preroll.d.ts +32 -5
- package/dist/streaming/preroll.d.ts.map +1 -0
- package/dist/streaming/preroll.js +70 -32
- package/dist/streaming/preroll.js.map +1 -1
- package/dist/streaming/pretune.d.ts +26 -1
- package/dist/streaming/pretune.d.ts.map +1 -0
- package/dist/streaming/pretune.js +22 -24
- package/dist/streaming/pretune.js.map +1 -1
- package/dist/streaming/pretuneTimers.d.ts +24 -0
- package/dist/streaming/pretuneTimers.d.ts.map +1 -0
- package/dist/streaming/pretuneTimers.js +56 -0
- package/dist/streaming/pretuneTimers.js.map +1 -0
- package/dist/streaming/recovery.d.ts +139 -5
- package/dist/streaming/recovery.d.ts.map +1 -0
- package/dist/streaming/recovery.js +160 -16
- package/dist/streaming/recovery.js.map +1 -1
- package/dist/streaming/registry.d.ts +27 -9
- package/dist/streaming/registry.d.ts.map +1 -0
- package/dist/streaming/registry.js +21 -3
- package/dist/streaming/registry.js.map +1 -1
- package/dist/streaming/setup.d.ts +157 -29
- package/dist/streaming/setup.d.ts.map +1 -0
- package/dist/streaming/setup.js +1034 -458
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.d.ts +21 -1
- package/dist/streaming/showInfo.d.ts.map +1 -0
- package/dist/streaming/showInfo.js +31 -16
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +10 -10
- package/dist/streaming/statusEmitter.d.ts.map +1 -0
- package/dist/streaming/statusEmitter.js +5 -8
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/channels.d.ts +16 -4
- package/dist/types/channels.d.ts.map +1 -0
- package/dist/types/channels.js +4 -2
- package/dist/types/channels.js.map +1 -1
- package/dist/types/config.d.ts +16 -5
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/profiles.d.ts +6 -4
- package/dist/types/profiles.d.ts.map +1 -0
- package/dist/types/selection.d.ts +31 -3
- package/dist/types/selection.d.ts.map +1 -0
- package/dist/types/selection.js +4 -2
- package/dist/types/selection.js.map +1 -1
- package/dist/types/shared.d.ts +1 -0
- package/dist/types/shared.d.ts.map +1 -0
- package/dist/types/streaming.d.ts +8 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/upgrade/commands.context.d.ts +1 -0
- package/dist/upgrade/commands.context.d.ts.map +1 -0
- package/dist/upgrade/commands.context.js +14 -10
- package/dist/upgrade/commands.context.js.map +1 -1
- package/dist/upgrade/commands.d.ts +8 -15
- package/dist/upgrade/commands.d.ts.map +1 -0
- package/dist/upgrade/commands.js +27 -28
- package/dist/upgrade/commands.js.map +1 -1
- package/dist/upgrade/detection.context.d.ts +1 -0
- package/dist/upgrade/detection.context.d.ts.map +1 -0
- package/dist/upgrade/detection.context.js +4 -1
- package/dist/upgrade/detection.context.js.map +1 -1
- package/dist/upgrade/detection.d.ts +9 -7
- package/dist/upgrade/detection.d.ts.map +1 -0
- package/dist/upgrade/detection.js +23 -54
- package/dist/upgrade/detection.js.map +1 -1
- package/dist/upgrade/index.d.ts +2 -0
- package/dist/upgrade/index.d.ts.map +1 -0
- package/dist/upgrade/index.js +1 -0
- package/dist/upgrade/index.js.map +1 -1
- package/dist/upgrade/lifecycle.context.d.ts +20 -0
- package/dist/upgrade/lifecycle.context.d.ts.map +1 -0
- package/dist/upgrade/lifecycle.context.js +47 -0
- package/dist/upgrade/lifecycle.context.js.map +1 -0
- package/dist/upgrade/lifecycle.d.ts +72 -0
- package/dist/upgrade/lifecycle.d.ts.map +1 -0
- package/dist/upgrade/lifecycle.js +175 -0
- package/dist/upgrade/lifecycle.js.map +1 -0
- package/dist/upgrade/pathHandle.d.ts +30 -0
- package/dist/upgrade/pathHandle.d.ts.map +1 -0
- package/dist/upgrade/pathHandle.js +102 -0
- package/dist/upgrade/pathHandle.js.map +1 -0
- package/dist/utils/bootSession.context.d.ts +16 -0
- package/dist/utils/bootSession.context.d.ts.map +1 -0
- package/dist/utils/bootSession.context.js +60 -0
- package/dist/utils/bootSession.context.js.map +1 -0
- package/dist/utils/bootSession.d.ts +17 -0
- package/dist/utils/bootSession.d.ts.map +1 -0
- package/dist/utils/bootSession.js +20 -0
- package/dist/utils/bootSession.js.map +1 -0
- package/dist/utils/chromeFetch.d.ts +1 -0
- package/dist/utils/chromeFetch.d.ts.map +1 -0
- package/dist/utils/cliOutput.d.ts +1 -0
- package/dist/utils/cliOutput.d.ts.map +1 -0
- package/dist/utils/clock.d.ts +5 -4
- package/dist/utils/clock.d.ts.map +1 -0
- package/dist/utils/clock.js +19 -16
- package/dist/utils/clock.js.map +1 -1
- package/dist/utils/debugFilter.d.ts +9 -1
- package/dist/utils/debugFilter.d.ts.map +1 -0
- package/dist/utils/debugFilter.js +60 -33
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/delay.d.ts +48 -15
- package/dist/utils/delay.d.ts.map +1 -0
- package/dist/utils/delay.js +73 -20
- package/dist/utils/delay.js.map +1 -1
- package/dist/utils/errors.d.ts +32 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +45 -4
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/evaluate.d.ts +1 -0
- package/dist/utils/evaluate.d.ts.map +1 -0
- package/dist/utils/evaluate.js +29 -23
- package/dist/utils/evaluate.js.map +1 -1
- package/dist/utils/ffmpeg.context.d.ts +1 -0
- package/dist/utils/ffmpeg.context.d.ts.map +1 -0
- package/dist/utils/ffmpeg.context.js.map +1 -1
- package/dist/utils/ffmpeg.d.ts +29 -7
- package/dist/utils/ffmpeg.d.ts.map +1 -0
- package/dist/utils/ffmpeg.js +32 -14
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/fileLogger.d.ts +3 -1
- package/dist/utils/fileLogger.d.ts.map +1 -0
- package/dist/utils/fileLogger.js +64 -29
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/format.d.ts +14 -1
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +19 -5
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logEmitter.d.ts +1 -0
- package/dist/utils/logEmitter.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +10 -6
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/m3u.d.ts +3 -2
- package/dist/utils/m3u.d.ts.map +1 -0
- package/dist/utils/m3u.js +4 -3
- package/dist/utils/m3u.js.map +1 -1
- package/dist/utils/markup.d.ts +13 -1
- package/dist/utils/markup.d.ts.map +1 -0
- package/dist/utils/markup.js +28 -4
- package/dist/utils/markup.js.map +1 -1
- package/dist/utils/memo.d.ts +3 -2
- package/dist/utils/memo.d.ts.map +1 -0
- package/dist/utils/memo.js +3 -3
- package/dist/utils/morganStream.d.ts +1 -0
- package/dist/utils/morganStream.d.ts.map +1 -0
- package/dist/utils/network.d.ts +1 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +2 -2
- package/dist/utils/pid.d.ts +3 -25
- package/dist/utils/pid.d.ts.map +1 -0
- package/dist/utils/pid.js +10 -49
- package/dist/utils/pid.js.map +1 -1
- package/dist/utils/platform.d.ts +3 -1
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +2 -1
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/processInspector.context.d.ts +8 -0
- package/dist/utils/processInspector.context.d.ts.map +1 -0
- package/dist/utils/processInspector.context.js +106 -0
- package/dist/utils/processInspector.context.js.map +1 -0
- package/dist/utils/processInspector.d.ts +55 -0
- package/dist/utils/processInspector.d.ts.map +1 -0
- package/dist/utils/processInspector.js +127 -0
- package/dist/utils/processInspector.js.map +1 -0
- package/dist/utils/retry.d.ts +25 -2
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +33 -6
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/runtimeIdentity.context.d.ts +7 -0
- package/dist/utils/runtimeIdentity.context.d.ts.map +1 -0
- package/dist/utils/runtimeIdentity.context.js +43 -0
- package/dist/utils/runtimeIdentity.context.js.map +1 -0
- package/dist/utils/runtimeIdentity.d.ts +98 -0
- package/dist/utils/runtimeIdentity.d.ts.map +1 -0
- package/dist/utils/runtimeIdentity.js +181 -0
- package/dist/utils/runtimeIdentity.js.map +1 -0
- package/dist/utils/sanitize.d.ts +1 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/streamContext.d.ts +2 -1
- package/dist/utils/streamContext.d.ts.map +1 -0
- package/dist/utils/streamContext.js +1 -1
- package/dist/utils/timing.d.ts +2 -1
- package/dist/utils/timing.d.ts.map +1 -0
- package/dist/utils/timing.js +0 -5
- package/dist/utils/timing.js.map +1 -1
- package/dist/utils/version.d.ts +1 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +47 -13
- package/dist/utils/version.js.map +1 -1
- package/package.json +26 -20
package/dist/utils/m3u.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"m3u.js","sourceRoot":"","sources":["../../src/utils/m3u.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AAEH,6CAA6C;AAC7C,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAE9C,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACrF,CAAC;AA6BD;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAE7C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AACjJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"m3u.js","sourceRoot":"","sources":["../../src/utils/m3u.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/markup.d.ts
CHANGED
|
@@ -5,8 +5,20 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export declare function escapeHtml(value: string): string;
|
|
7
7
|
/**
|
|
8
|
-
* Escapes XML special characters in a string for safe embedding in XML documents.
|
|
8
|
+
* Escapes XML special characters in a string for safe embedding in XML documents. Every XML surface PrismCast emits, the macOS launchd plist and the HDHomeRun
|
|
9
|
+
* UPnP device description among them, escapes at each interpolation point rather than trusting the shape of any particular value.
|
|
9
10
|
* @param value - The text to escape.
|
|
10
11
|
* @returns The escaped text safe for XML embedding.
|
|
11
12
|
*/
|
|
12
13
|
export declare function escapeXml(value: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Serializes a record of HTML attribute names to values into the inline fragment suitable for embedding in an opening tag. Value semantics keep this tied
|
|
16
|
+
* to the way HTML actually shapes attributes: undefined and boolean false are omitted entirely; boolean true emits the attribute name alone (HTML5 boolean
|
|
17
|
+
* attribute form, e.g. {@code <input disabled>}); string values are HTML-escaped via {@link escapeHtml} and emitted as {@code name="value"}. The returned
|
|
18
|
+
* fragment begins with a leading space when non-empty, so callers concatenate it directly after a preceding attribute without any spacing arithmetic of their
|
|
19
|
+
* own. Renderers therefore pass raw values - boolean predicates and untrusted strings alike - and the encoding contract lives in exactly one place.
|
|
20
|
+
* @param attrs - Attribute name/value pairs. Keys are emitted in insertion order.
|
|
21
|
+
* @returns The serialized attribute fragment, or the empty string when no attribute would be emitted.
|
|
22
|
+
*/
|
|
23
|
+
export declare function serializeAttrs(attrs: Readonly<Record<string, string | boolean | undefined>>): string;
|
|
24
|
+
//# sourceMappingURL=markup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markup.d.ts","sourceRoot":"","sources":["../../src/utils/markup.ts"],"names":[],"mappings":"AA8CA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAsBpG"}
|
package/dist/utils/markup.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* markup.ts: HTML and XML escape utilities for PrismCast.
|
|
4
4
|
*/
|
|
5
5
|
/* This module is the single source of truth for escape-style markup encoding. HTML escaping (used pervasively across the routes layer to embed user-provided
|
|
6
|
-
* values in server-rendered pages) and XML escaping (used by the macOS launchd plist generator
|
|
7
|
-
* differs - HTML5 spells it ' and XML spells it '. Centralizing both surfaces over a shared regex and a
|
|
8
|
-
* in one place so adding
|
|
6
|
+
* values in server-rendered pages) and XML escaping (used by the macOS launchd plist generator and the HDHomeRun device description) cover the same reserved
|
|
7
|
+
* characters; only the apostrophe entity differs - HTML5 spells it ' and XML spells it '. Centralizing both surfaces over a shared regex and a
|
|
8
|
+
* Readonly entity map keeps the character class in one place so adding an entity to one flavor can't silently desync the other.
|
|
9
9
|
*/
|
|
10
10
|
// The shared character class for both HTML and XML escape sweeps. Defined once so the two escape variants never disagree about which characters they encode.
|
|
11
11
|
const MARKUP_ENTITY_REGEX = /[&<>"']/g;
|
|
@@ -44,11 +44,35 @@ export function escapeHtml(value) {
|
|
|
44
44
|
return escapeMarkup(value, HTML_ENTITIES);
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
|
-
* Escapes XML special characters in a string for safe embedding in XML documents.
|
|
47
|
+
* Escapes XML special characters in a string for safe embedding in XML documents. Every XML surface PrismCast emits, the macOS launchd plist and the HDHomeRun
|
|
48
|
+
* UPnP device description among them, escapes at each interpolation point rather than trusting the shape of any particular value.
|
|
48
49
|
* @param value - The text to escape.
|
|
49
50
|
* @returns The escaped text safe for XML embedding.
|
|
50
51
|
*/
|
|
51
52
|
export function escapeXml(value) {
|
|
52
53
|
return escapeMarkup(value, XML_ENTITIES);
|
|
53
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Serializes a record of HTML attribute names to values into the inline fragment suitable for embedding in an opening tag. Value semantics keep this tied
|
|
57
|
+
* to the way HTML actually shapes attributes: undefined and boolean false are omitted entirely; boolean true emits the attribute name alone (HTML5 boolean
|
|
58
|
+
* attribute form, e.g. {@code <input disabled>}); string values are HTML-escaped via {@link escapeHtml} and emitted as {@code name="value"}. The returned
|
|
59
|
+
* fragment begins with a leading space when non-empty, so callers concatenate it directly after a preceding attribute without any spacing arithmetic of their
|
|
60
|
+
* own. Renderers therefore pass raw values - boolean predicates and untrusted strings alike - and the encoding contract lives in exactly one place.
|
|
61
|
+
* @param attrs - Attribute name/value pairs. Keys are emitted in insertion order.
|
|
62
|
+
* @returns The serialized attribute fragment, or the empty string when no attribute would be emitted.
|
|
63
|
+
*/
|
|
64
|
+
export function serializeAttrs(attrs) {
|
|
65
|
+
const fragments = [];
|
|
66
|
+
for (const [name, value] of Object.entries(attrs)) {
|
|
67
|
+
if ((value === undefined) || (value === false)) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (value === true) {
|
|
71
|
+
fragments.push(name);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
fragments.push(name + "=\"" + escapeHtml(value) + "\"");
|
|
75
|
+
}
|
|
76
|
+
return (fragments.length > 0) ? (" " + fragments.join(" ")) : "";
|
|
77
|
+
}
|
|
54
78
|
//# sourceMappingURL=markup.js.map
|
package/dist/utils/markup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markup.js","sourceRoot":"","sources":["../../src/utils/markup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,6JAA6J;AAC7J,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAEvC,gKAAgK;AAChK,MAAM,aAAa,GAAqC;IAEtD,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF,wIAAwI;AACxI,MAAM,YAAY,GAAqC;IAErD,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAa,EAAE,QAA0C;IAE7E,OAAO,KAAK,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IAEtC,OAAO,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"markup.js","sourceRoot":"","sources":["../../src/utils/markup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,6JAA6J;AAC7J,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAEvC,gKAAgK;AAChK,MAAM,aAAa,GAAqC;IAEtD,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF,wIAAwI;AACxI,MAAM,YAAY,GAAqC;IAErD,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,KAAa,EAAE,QAA0C;IAE7E,OAAO,KAAK,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IAEtC,OAAO,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IAErC,OAAO,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,KAA6D;IAE1F,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAI,MAAM,CAAE,IAAI,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAEnD,IAAG,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;YAE9C,SAAS;QACX,CAAC;QAED,IAAG,KAAK,KAAK,IAAI,EAAE,CAAC;YAElB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErB,SAAS;QACX,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC"}
|
package/dist/utils/memo.d.ts
CHANGED
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
* rather than have memoizeAsync silently retry. (Production-cached resolveFFmpegPath has no rejection path - probeFFmpegPath returns undefined for "not
|
|
11
11
|
* found" rather than throwing - so this branch never fires in the ffmpeg use case.)
|
|
12
12
|
*
|
|
13
|
-
* The cache and pending state are closure-scoped: there is no test
|
|
14
|
-
* invalidation are doing a different thing (TTL cache, refresh-on-event cache) and should not use this primitive.
|
|
13
|
+
* The cache and pending state are closure-scoped: there is no way to reach into the closure from a test, no reset method, and no way for callers to
|
|
14
|
+
* invalidate the cache. Callers that need invalidation are doing a different thing (TTL cache, refresh-on-event cache) and should not use this primitive.
|
|
15
15
|
*
|
|
16
16
|
* @param probe - The async function to memoize. Invoked at most once on success, or once per process on rejection.
|
|
17
17
|
* @returns A function that returns the same Promise<T> on every call.
|
|
18
18
|
*/
|
|
19
19
|
export declare function memoizeAsync<T>(probe: () => Promise<T>): () => Promise<T>;
|
|
20
|
+
//# sourceMappingURL=memo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memo.d.ts","sourceRoot":"","sources":["../../src/utils/memo.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAwCzE"}
|
package/dist/utils/memo.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
*
|
|
3
3
|
* memo.ts: Async memoization primitives. The single primitive here is memoizeAsync - a one-shot async cache that runs its probe at most once across the
|
|
4
4
|
* lifetime of the returned function and shares the in-flight promise across concurrent first-callers. Used to lazily compute values that are expensive on
|
|
5
|
-
* first call and cheap
|
|
5
|
+
* first call and cheap on subsequent calls (e.g., resolveFFmpegPath probing the filesystem).
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
8
|
* Wraps an async probe in a one-shot memoization closure. The returned function:
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
* rather than have memoizeAsync silently retry. (Production-cached resolveFFmpegPath has no rejection path - probeFFmpegPath returns undefined for "not
|
|
17
17
|
* found" rather than throwing - so this branch never fires in the ffmpeg use case.)
|
|
18
18
|
*
|
|
19
|
-
* The cache and pending state are closure-scoped: there is no test
|
|
20
|
-
* invalidation are doing a different thing (TTL cache, refresh-on-event cache) and should not use this primitive.
|
|
19
|
+
* The cache and pending state are closure-scoped: there is no way to reach into the closure from a test, no reset method, and no way for callers to
|
|
20
|
+
* invalidate the cache. Callers that need invalidation are doing a different thing (TTL cache, refresh-on-event cache) and should not use this primitive.
|
|
21
21
|
*
|
|
22
22
|
* @param probe - The async function to memoize. Invoked at most once on success, or once per process on rejection.
|
|
23
23
|
* @returns A function that returns the same Promise<T> on every call.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"morganStream.d.ts","sourceRoot":"","sources":["../../src/utils/morganStream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAY5C;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAuBlD"}
|
package/dist/utils/network.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/utils/network.ts"],"names":[],"mappings":"AAcA;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG9D"}
|
package/dist/utils/network.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* network.ts: Network address utilities for PrismCast.
|
|
4
4
|
*/
|
|
5
5
|
/* Helpers for normalizing and inspecting the network addresses PrismCast exchanges with clients. The functions here operate on raw address strings as supplied by
|
|
6
|
-
* Node and Express - they do not parse URLs or query DNS, so the rest of the codebase has a single,
|
|
7
|
-
* decisions
|
|
6
|
+
* Node and Express - they do not parse URLs or query DNS, so the rest of the codebase has a single, shared function for "give me a canonical client address"
|
|
7
|
+
* decisions, instead of scattering copies of the same one-liner across call sites.
|
|
8
8
|
*/
|
|
9
9
|
// The IPv6-mapped IPv4 prefix that Node and Express emit when a dual-stack listener serves an IPv4 client. Stripping it produces the human-recognizable IPv4
|
|
10
10
|
// form that Channels DVR clients log and that HDHomeRun's TargetIP field is expected to carry.
|
package/dist/utils/pid.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Nullable } from "../types/index.ts";
|
|
2
1
|
/**
|
|
3
2
|
* Checks whether a process with the given PID is still running. Uses the signal 0 technique: process.kill(pid, 0) throws ESRCH if the process does not exist,
|
|
4
3
|
* returns successfully if it does. EPERM (permission denied) means the process exists but belongs to another user - treated as "still running" since we cannot
|
|
@@ -8,33 +7,12 @@ import type { Nullable } from "../types/index.ts";
|
|
|
8
7
|
*/
|
|
9
8
|
export declare function isProcessRunning(pid: number): boolean;
|
|
10
9
|
/**
|
|
11
|
-
*
|
|
12
|
-
* clean shutdown and is silently ignored.
|
|
10
|
+
* Removes a PID file from disk. ENOENT is expected when the file has already been removed and is silently ignored.
|
|
13
11
|
* @param filePath - The absolute path to the PID file.
|
|
14
|
-
* @param label - A descriptive label for log messages (e.g., "
|
|
15
|
-
* @param log - Optional logger for non-ENOENT read errors. When omitted (e.g., before the logger is initialized), errors are silently ignored.
|
|
16
|
-
* @returns The stored process ID, or null if unavailable.
|
|
17
|
-
*/
|
|
18
|
-
export declare function readPidFile(filePath: string, label: string, log?: {
|
|
19
|
-
warn: (message: string, ...args: unknown[]) => void;
|
|
20
|
-
}): Nullable<number>;
|
|
21
|
-
/**
|
|
22
|
-
* Writes a PID to a file on disk. Used to persist the current process ID so that the next startup can detect a running instance or clean up an orphaned process.
|
|
23
|
-
* @param filePath - The absolute path to the PID file.
|
|
24
|
-
* @param pid - The process ID to write.
|
|
25
|
-
* @param label - A descriptive label for log messages (e.g., "Chrome", "server").
|
|
26
|
-
* @param log - Optional logger for write errors. When omitted, errors are silently ignored.
|
|
27
|
-
*/
|
|
28
|
-
export declare function writePidFile(filePath: string, pid: number, label: string, log?: {
|
|
29
|
-
warn: (message: string, ...args: unknown[]) => void;
|
|
30
|
-
}): void;
|
|
31
|
-
/**
|
|
32
|
-
* Removes a PID file from disk. Called during graceful shutdown and from exit handlers as a fallback. ENOENT is expected when the file has already been removed and
|
|
33
|
-
* is silently ignored.
|
|
34
|
-
* @param filePath - The absolute path to the PID file.
|
|
35
|
-
* @param label - A descriptive label for log messages (e.g., "Chrome", "server").
|
|
12
|
+
* @param label - A descriptive label for log messages (e.g., "identity", "server").
|
|
36
13
|
* @param log - Optional logger for non-ENOENT removal errors. When omitted, errors are silently ignored.
|
|
37
14
|
*/
|
|
38
15
|
export declare function clearPidFile(filePath: string, label: string, log?: {
|
|
39
16
|
warn: (message: string, ...args: unknown[]) => void;
|
|
40
17
|
}): void;
|
|
18
|
+
//# sourceMappingURL=pid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pid.d.ts","sourceRoot":"","sources":["../../src/utils/pid.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAYrD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CAAE,GAAG,IAAI,CAYjI"}
|
package/dist/utils/pid.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
*
|
|
1
|
+
/* Copyright(C) 2024-2026, HJD (https://github.com/hjdhjd). All rights reserved.
|
|
2
|
+
*
|
|
3
|
+
* pid.ts: Cross-platform PID liveness check and silent file removal. This module holds the low-level OS primitives that the PID-file layer builds on: a
|
|
4
|
+
* liveness check via the signal-0 technique, and file removal that treats ENOENT as success. Structured PID-file lifecycle (write the record, parse it
|
|
5
|
+
* on read, detect a stale boot session) lives in utils/runtimeIdentity.ts; this module is its low-level dependency.
|
|
5
6
|
*
|
|
6
|
-
* This module is intentionally synchronous. PID
|
|
7
|
-
* I/O uses the synchronous fs API and process.kill() for signaling.
|
|
7
|
+
* This module is intentionally synchronous. PID-file operations run in contexts where the event loop may not be available (process.on("exit") handlers), so
|
|
8
|
+
* all I/O uses the synchronous fs API and process.kill() for signaling.
|
|
8
9
|
*/
|
|
10
|
+
import fs from "node:fs";
|
|
9
11
|
/**
|
|
10
12
|
* Checks whether a process with the given PID is still running. Uses the signal 0 technique: process.kill(pid, 0) throws ESRCH if the process does not exist,
|
|
11
13
|
* returns successfully if it does. EPERM (permission denied) means the process exists but belongs to another user - treated as "still running" since we cannot
|
|
@@ -24,50 +26,9 @@ export function isProcessRunning(pid) {
|
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
27
|
-
*
|
|
28
|
-
* clean shutdown and is silently ignored.
|
|
29
|
-
* @param filePath - The absolute path to the PID file.
|
|
30
|
-
* @param label - A descriptive label for log messages (e.g., "Chrome", "server").
|
|
31
|
-
* @param log - Optional logger for non-ENOENT read errors. When omitted (e.g., before the logger is initialized), errors are silently ignored.
|
|
32
|
-
* @returns The stored process ID, or null if unavailable.
|
|
33
|
-
*/
|
|
34
|
-
export function readPidFile(filePath, label, log) {
|
|
35
|
-
try {
|
|
36
|
-
const content = fs.readFileSync(filePath, "utf-8").trim();
|
|
37
|
-
const pid = parseInt(content, 10);
|
|
38
|
-
if (!isNaN(pid)) {
|
|
39
|
-
return pid;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
if ((error.code !== "ENOENT") && log) {
|
|
44
|
-
log.warn("Failed to read %s PID file: %s.", label, error.message);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Writes a PID to a file on disk. Used to persist the current process ID so that the next startup can detect a running instance or clean up an orphaned process.
|
|
51
|
-
* @param filePath - The absolute path to the PID file.
|
|
52
|
-
* @param pid - The process ID to write.
|
|
53
|
-
* @param label - A descriptive label for log messages (e.g., "Chrome", "server").
|
|
54
|
-
* @param log - Optional logger for write errors. When omitted, errors are silently ignored.
|
|
55
|
-
*/
|
|
56
|
-
export function writePidFile(filePath, pid, label, log) {
|
|
57
|
-
try {
|
|
58
|
-
fs.writeFileSync(filePath, String(pid), "utf-8");
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
if (log) {
|
|
62
|
-
log.warn("Failed to write %s PID file: %s.", label, error.message);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Removes a PID file from disk. Called during graceful shutdown and from exit handlers as a fallback. ENOENT is expected when the file has already been removed and
|
|
68
|
-
* is silently ignored.
|
|
29
|
+
* Removes a PID file from disk. ENOENT is expected when the file has already been removed and is silently ignored.
|
|
69
30
|
* @param filePath - The absolute path to the PID file.
|
|
70
|
-
* @param label - A descriptive label for log messages (e.g., "
|
|
31
|
+
* @param label - A descriptive label for log messages (e.g., "identity", "server").
|
|
71
32
|
* @param log - Optional logger for non-ENOENT removal errors. When omitted, errors are silently ignored.
|
|
72
33
|
*/
|
|
73
34
|
export function clearPidFile(filePath, label, log) {
|
package/dist/utils/pid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pid.js","sourceRoot":"","sources":["../../src/utils/pid.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pid.js","sourceRoot":"","sources":["../../src/utils/pid.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAE1C,IAAI,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAM,KAAc,EAAE,CAAC;QAEvB,wFAAwF;QACxF,OAAQ,KAA+B,CAAC,IAAI,KAAK,OAAO,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,KAAa,EAAE,GAA6D;IAEzH,IAAI,CAAC;QAEH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAM,KAAc,EAAE,CAAC;QAEvB,IAAG,CAAE,KAA+B,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;YAE/D,GAAG,CAAC,IAAI,CAAC,mCAAmC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/utils/platform.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ export type ServiceManager = "launchd" | "systemd" | "windows-scheduler";
|
|
|
8
8
|
export declare function getPlatform(): Platform;
|
|
9
9
|
/**
|
|
10
10
|
* Returns the appropriate service manager for the current platform.
|
|
11
|
-
* @returns The service manager
|
|
11
|
+
* @returns The service manager for the current platform. Every member of the Platform union maps to a concrete service manager, so the trailing null is
|
|
12
|
+
* unreachable unless the union gains a member without a corresponding case; it is retained to satisfy the Nullable return type.
|
|
12
13
|
*/
|
|
13
14
|
export declare function getServiceManager(): Nullable<ServiceManager>;
|
|
14
15
|
/**
|
|
@@ -41,3 +42,4 @@ export declare function getPrismCastEntryPoint(): string;
|
|
|
41
42
|
* @returns The absolute path to the PrismCast working directory.
|
|
42
43
|
*/
|
|
43
44
|
export declare function getPrismCastWorkingDirectory(): string;
|
|
45
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAWlD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,mBAAmB,CAAC;AAQzE;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAmBtC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,QAAQ,CAAC,cAAc,CAAC,CAwB5D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAe9C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA+B9C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAS/C;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAKrD"}
|
package/dist/utils/platform.js
CHANGED
|
@@ -24,7 +24,8 @@ export function getPlatform() {
|
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
26
|
* Returns the appropriate service manager for the current platform.
|
|
27
|
-
* @returns The service manager
|
|
27
|
+
* @returns The service manager for the current platform. Every member of the Platform union maps to a concrete service manager, so the trailing null is
|
|
28
|
+
* unreachable unless the union gains a member without a corresponding case; it is retained to satisfy the Nullable return type.
|
|
28
29
|
*/
|
|
29
30
|
export function getServiceManager() {
|
|
30
31
|
switch (getPlatform()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAY3B,2DAA2D;AAC3D,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEhD,yDAAyD;AACzD,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,WAAW;IAEzB,QAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;QAExB,KAAK,QAAQ,CAAC,CAAC,CAAC;YAEd,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YAEb,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YAER,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProcessInspectorContext } from "./processInspector.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Builds the default ProcessInspectorContext from real runtime I/O. Dispatches to the platform-appropriate enumerator at adapter-creation time so the chosen
|
|
4
|
+
* branch is captured in a closure for every subsequent enumerate() call.
|
|
5
|
+
* @returns A ProcessInspectorContext wired to the current platform's process table reader.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createDefaultProcessInspectorContext(): ProcessInspectorContext;
|
|
8
|
+
//# sourceMappingURL=processInspector.context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processInspector.context.d.ts","sourceRoot":"","sources":["../../src/utils/processInspector.context.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAe,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAMlF;;;;GAIG;AACH,wBAAgB,oCAAoC,IAAI,uBAAuB,CAG9E"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { parseLinuxProcCmdline, parseLinuxProcStat, parseMacOsPsOutput, parseWindowsFormatListOutput } from "./processInspector.js";
|
|
2
|
+
import { execFileSync } from "node:child_process";
|
|
3
|
+
import fs from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
/**
|
|
6
|
+
* Builds the default ProcessInspectorContext from real runtime I/O. Dispatches to the platform-appropriate enumerator at adapter-creation time so the chosen
|
|
7
|
+
* branch is captured in a closure for every subsequent enumerate() call.
|
|
8
|
+
* @returns A ProcessInspectorContext wired to the current platform's process table reader.
|
|
9
|
+
*/
|
|
10
|
+
export function createDefaultProcessInspectorContext() {
|
|
11
|
+
return { enumerate: pickEnumeratorForPlatform() };
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Selects the platform-appropriate enumerator. Linux uses /proc; macOS and Windows shell out to their native process listing utilities.
|
|
15
|
+
* @returns The enumerator function for the current platform.
|
|
16
|
+
*/
|
|
17
|
+
function pickEnumeratorForPlatform() {
|
|
18
|
+
switch (process.platform) {
|
|
19
|
+
case "linux": {
|
|
20
|
+
return enumerateLinux;
|
|
21
|
+
}
|
|
22
|
+
case "darwin": {
|
|
23
|
+
return enumerateMacOs;
|
|
24
|
+
}
|
|
25
|
+
case "win32": {
|
|
26
|
+
return enumerateWindows;
|
|
27
|
+
}
|
|
28
|
+
default: {
|
|
29
|
+
// Unsupported platforms return an empty snapshot. Domain code that filters this list (e.g., looking for Chrome) will simply find no matches, which is
|
|
30
|
+
// the safe default - we never SIGTERM anything we did not actually discover.
|
|
31
|
+
return () => [];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Enumerates processes on Linux by walking /proc. Each numeric directory under /proc corresponds to a PID; reading its cmdline file yields the command line.
|
|
37
|
+
* Processes that exit between readdir and readFile produce ENOENT, which we silently skip.
|
|
38
|
+
* @returns The current process table.
|
|
39
|
+
*/
|
|
40
|
+
function enumerateLinux() {
|
|
41
|
+
const results = [];
|
|
42
|
+
let entries;
|
|
43
|
+
try {
|
|
44
|
+
entries = fs.readdirSync("/proc");
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return results;
|
|
48
|
+
}
|
|
49
|
+
for (const entry of entries) {
|
|
50
|
+
const pid = parseInt(entry, 10);
|
|
51
|
+
if (Number.isNaN(pid)) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
let cmdlineRaw;
|
|
55
|
+
let statRaw;
|
|
56
|
+
try {
|
|
57
|
+
cmdlineRaw = fs.readFileSync(path.join("/proc", entry, "cmdline"), "utf-8");
|
|
58
|
+
statRaw = fs.readFileSync(path.join("/proc", entry, "stat"), "utf-8");
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// ENOENT (process exited between readdir and readFile), EACCES (permission denied for some PIDs as a non-root user), and similar are all expected during
|
|
62
|
+
// a /proc walk. Skip silently rather than aborting the whole enumeration.
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const ppid = parseLinuxProcStat(statRaw);
|
|
66
|
+
if (ppid === null) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
results.push({ commandLine: parseLinuxProcCmdline(cmdlineRaw), pid, ppid });
|
|
70
|
+
}
|
|
71
|
+
return results;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Enumerates processes on macOS via `ps -axww -o pid=,ppid=,command=`. The -ax flags select every process on the system; -ww disables column truncation so long
|
|
75
|
+
* command lines (Chrome's are frequently very long) survive intact; the trailing `=` on each -o spec suppresses the column headers.
|
|
76
|
+
* @returns The current process table.
|
|
77
|
+
*/
|
|
78
|
+
function enumerateMacOs() {
|
|
79
|
+
try {
|
|
80
|
+
// maxBuffer is bumped to 16MB to accommodate hosts with thousands of processes and Chrome's long --flag-soup command lines.
|
|
81
|
+
const raw = execFileSync("/bin/ps", ["-axww", "-o", "pid=,ppid=,command="], { encoding: "utf-8", maxBuffer: 16 * 1024 * 1024 });
|
|
82
|
+
return parseMacOsPsOutput(raw);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Enumerates processes on Windows via PowerShell's Get-CimInstance Win32_Process pipeline. We choose Format-List output over Format-Table because the latter
|
|
90
|
+
* truncates the CommandLine column, and choose CIM over the legacy wmic.exe because wmic is being deprecated by Microsoft and is absent from Windows Server
|
|
91
|
+
* Core / minimal SKUs.
|
|
92
|
+
* @returns The current process table.
|
|
93
|
+
*/
|
|
94
|
+
function enumerateWindows() {
|
|
95
|
+
try {
|
|
96
|
+
// -NoProfile skips loading the user's PowerShell profile (saves hundreds of milliseconds); -Command is the parameter form most resilient to quoting.
|
|
97
|
+
// The same 16MB maxBuffer used for the macOS enumerator comfortably covers Format-List's output here too, since its multi-line, one-property-per-row
|
|
98
|
+
// rendering is more verbose per process than a single ps line but still stays well within that ceiling even on hosts with thousands of processes.
|
|
99
|
+
const raw = execFileSync("powershell.exe", ["-NoProfile", "-Command", "Get-CimInstance Win32_Process | Format-List ProcessId,ParentProcessId,CommandLine"], { encoding: "utf-8", maxBuffer: 16 * 1024 * 1024 });
|
|
100
|
+
return parseWindowsFormatListOutput(raw);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return [];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=processInspector.context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processInspector.context.js","sourceRoot":"","sources":["../../src/utils/processInspector.context.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACpI,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,oCAAoC;IAElD,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,EAAE,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB;IAEhC,QAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;QAExB,KAAK,OAAO,CAAC,CAAC,CAAC;YAEb,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YAEd,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YAEb,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YAER,sJAAsJ;YACtJ,6EAA6E;YAC7E,OAAO,GAAkB,EAAE,CAAC,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc;IAErB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,IAAI,OAAiB,CAAC;IAEtB,IAAI,CAAC;QAEH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAI,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAE3B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEhC,IAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAErB,SAAS;QACX,CAAC;QAED,IAAI,UAAkB,CAAC;QACvB,IAAI,OAAe,CAAC;QAEpB,IAAI,CAAC;YAEH,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5E,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YAEP,yJAAyJ;YACzJ,0EAA0E;YAC1E,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAG,IAAI,KAAK,IAAI,EAAE,CAAC;YAEjB,SAAS;QACX,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,qBAAqB,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc;IAErB,IAAI,CAAC;QAEH,4HAA4H;QAC5H,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,CAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,CAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;QAElI,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB;IAEvB,IAAI,CAAC;QAEH,qJAAqJ;QACrJ,qJAAqJ;QACrJ,kJAAkJ;QAClJ,MAAM,GAAG,GAAG,YAAY,CAAC,gBAAgB,EACvC,CAAE,YAAY,EAAE,UAAU,EAAE,mFAAmF,CAAE,EACjH,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;QAEtD,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Nullable } from "../types/index.ts";
|
|
2
|
+
/**
|
|
3
|
+
* One row of the OS process table. The fields let domain code identify a process by intent and verify its ownership via the parent-child relationship. The
|
|
4
|
+
* ppid in particular is what lets killStaleChrome safely run from any context: a process whose Chrome is matched by profile but whose ppid points at a live
|
|
5
|
+
* unrelated parent is owned by that parent, not by us, and we must leave it alone.
|
|
6
|
+
*/
|
|
7
|
+
export interface ProcessInfo {
|
|
8
|
+
readonly commandLine: string;
|
|
9
|
+
readonly pid: number;
|
|
10
|
+
readonly ppid: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The runtime capability set listProcesses consumes. Production wires it from real I/O via createDefaultProcessInspectorContext; tests pass a context literal
|
|
14
|
+
* holding the desired ProcessInfo[].
|
|
15
|
+
*/
|
|
16
|
+
export interface ProcessInspectorContext {
|
|
17
|
+
readonly enumerate: () => ProcessInfo[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Returns a snapshot of every visible process. Callers filter the result for the processes they care about.
|
|
21
|
+
* @param ctx - The process inspector context. Defaults to real I/O wiring.
|
|
22
|
+
* @returns The current process table.
|
|
23
|
+
*/
|
|
24
|
+
export declare function listProcesses(ctx?: ProcessInspectorContext): ProcessInfo[];
|
|
25
|
+
/**
|
|
26
|
+
* Parses a single /proc/<pid>/cmdline payload. The on-disk format separates argv entries with NUL bytes and may or may not include a trailing NUL. Empty
|
|
27
|
+
* payloads (kernel threads, zombie processes) yield an empty command line - callers decide whether to drop those entries.
|
|
28
|
+
* @param raw - The /proc/<pid>/cmdline payload.
|
|
29
|
+
* @returns The decoded command line.
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseLinuxProcCmdline(raw: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Parses the ppid (field 4) from a /proc/<pid>/stat payload. The format embeds the executable name in parentheses at field 2; that name can contain
|
|
34
|
+
* whitespace and parentheses itself, so we anchor on the last closing paren before splitting. After the closing paren, the first field is field 3 (state) and
|
|
35
|
+
* the second is field 4 (ppid).
|
|
36
|
+
* @param raw - The /proc/<pid>/stat payload.
|
|
37
|
+
* @returns The parent process ID, or null when the payload is malformed.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseLinuxProcStat(raw: string): Nullable<number>;
|
|
40
|
+
/**
|
|
41
|
+
* Parses the output of `ps -axww -o pid=,ppid=,command=` (or equivalent shape). Each non-empty line begins with leading whitespace, then the PID and PPID as
|
|
42
|
+
* integers, then whitespace, then the full command. Lines that do not match this shape are silently dropped.
|
|
43
|
+
* @param raw - The raw ps output.
|
|
44
|
+
* @returns The parsed process table.
|
|
45
|
+
*/
|
|
46
|
+
export declare function parseMacOsPsOutput(raw: string): ProcessInfo[];
|
|
47
|
+
/**
|
|
48
|
+
* Parses the output of PowerShell's `Get-CimInstance Win32_Process | Format-List ProcessId,ParentProcessId,CommandLine` (or equivalent shape). The format
|
|
49
|
+
* places each property on its own line as "Name : Value", with blank lines separating records. CommandLine may be blank (system processes) or contain
|
|
50
|
+
* embedded colons - we split on the first " : " separator only.
|
|
51
|
+
* @param raw - The raw Format-List output.
|
|
52
|
+
* @returns The parsed process table.
|
|
53
|
+
*/
|
|
54
|
+
export declare function parseWindowsFormatListOutput(raw: string): ProcessInfo[];
|
|
55
|
+
//# sourceMappingURL=processInspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processInspector.d.ts","sourceRoot":"","sources":["../../src/utils/processInspector.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAI1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAG7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAIrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IAGtC,QAAQ,CAAC,SAAS,EAAE,MAAM,WAAW,EAAE,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,uBAAgE,GAAG,WAAW,EAAE,CAGlH;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAoBhE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAkC7D;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAgFvE"}
|