prismcast 1.13.0 → 1.14.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 (218) hide show
  1. package/dist/app.d.ts +88 -6
  2. package/dist/app.js +287 -154
  3. package/dist/app.js.map +1 -1
  4. package/dist/browser/cdp.d.ts +6 -17
  5. package/dist/browser/cdp.js +6 -57
  6. package/dist/browser/cdp.js.map +1 -1
  7. package/dist/browser/index.d.ts +106 -23
  8. package/dist/browser/index.js +292 -225
  9. package/dist/browser/index.js.map +1 -1
  10. package/dist/browser/precaching.d.ts +25 -11
  11. package/dist/browser/precaching.js +245 -97
  12. package/dist/browser/precaching.js.map +1 -1
  13. package/dist/browser/tabCapture.js +3 -10
  14. package/dist/browser/tabCapture.js.map +1 -1
  15. package/dist/browser/tuning/comcastPolymer.js +13 -14
  16. package/dist/browser/tuning/comcastPolymer.js.map +1 -1
  17. package/dist/browser/tuning/hbo.js +34 -17
  18. package/dist/browser/tuning/hbo.js.map +1 -1
  19. package/dist/browser/video.d.ts +1 -1
  20. package/dist/browser/video.js +3 -3
  21. package/dist/channels/index.js +5 -5
  22. package/dist/channels/index.js.map +1 -1
  23. package/dist/cliHelp.d.ts +11 -0
  24. package/dist/cliHelp.js +148 -0
  25. package/dist/cliHelp.js.map +1 -0
  26. package/dist/config/channelForm.js +5 -4
  27. package/dist/config/channelForm.js.map +1 -1
  28. package/dist/config/consistencyProbe.d.ts +2 -4
  29. package/dist/config/consistencyProbe.js +8 -51
  30. package/dist/config/consistencyProbe.js.map +1 -1
  31. package/dist/config/index.d.ts +107 -55
  32. package/dist/config/index.js +499 -267
  33. package/dist/config/index.js.map +1 -1
  34. package/dist/config/paths.d.ts +13 -8
  35. package/dist/config/paths.js +21 -25
  36. package/dist/config/paths.js.map +1 -1
  37. package/dist/config/persistence.d.ts +57 -11
  38. package/dist/config/persistence.js +127 -44
  39. package/dist/config/persistence.js.map +1 -1
  40. package/dist/config/reactivity.d.ts +60 -36
  41. package/dist/config/reactivity.js +89 -116
  42. package/dist/config/reactivity.js.map +1 -1
  43. package/dist/config/services.d.ts +61 -26
  44. package/dist/config/services.js +137 -68
  45. package/dist/config/services.js.map +1 -1
  46. package/dist/config/streamSettings.d.ts +24 -0
  47. package/dist/config/streamSettings.js +17 -0
  48. package/dist/config/streamSettings.js.map +1 -0
  49. package/dist/config/userChannels.d.ts +60 -52
  50. package/dist/config/userChannels.js +138 -188
  51. package/dist/config/userChannels.js.map +1 -1
  52. package/dist/config/userConfig.d.ts +224 -61
  53. package/dist/config/userConfig.js +351 -134
  54. package/dist/config/userConfig.js.map +1 -1
  55. package/dist/hdhr/discover.d.ts +7 -1
  56. package/dist/hdhr/discover.js +12 -6
  57. package/dist/hdhr/discover.js.map +1 -1
  58. package/dist/hdhr/index.d.ts +51 -10
  59. package/dist/hdhr/index.js +108 -112
  60. package/dist/hdhr/index.js.map +1 -1
  61. package/dist/hdhr/udp.d.ts +11 -4
  62. package/dist/hdhr/udp.js +25 -20
  63. package/dist/hdhr/udp.js.map +1 -1
  64. package/dist/index.js +16 -143
  65. package/dist/index.js.map +1 -1
  66. package/dist/native/index.d.ts +1 -1
  67. package/dist/native/index.js +4 -3
  68. package/dist/native/index.js.map +1 -1
  69. package/dist/native/proxy.d.ts +1 -1
  70. package/dist/native/proxy.js +36 -28
  71. package/dist/native/proxy.js.map +1 -1
  72. package/dist/routes/cdp.d.ts +7 -6
  73. package/dist/routes/cdp.js +9 -8
  74. package/dist/routes/cdp.js.map +1 -1
  75. package/dist/routes/components.d.ts +23 -5
  76. package/dist/routes/components.js +21 -4
  77. package/dist/routes/components.js.map +1 -1
  78. package/dist/routes/config/channels/endpoints/browse.js +39 -29
  79. package/dist/routes/config/channels/endpoints/browse.js.map +1 -1
  80. package/dist/routes/config/channels/endpoints/bulk.js +2 -6
  81. package/dist/routes/config/channels/endpoints/bulk.js.map +1 -1
  82. package/dist/routes/config/channels/endpoints/predefined.js +5 -15
  83. package/dist/routes/config/channels/endpoints/predefined.js.map +1 -1
  84. package/dist/routes/config/channels/endpoints/prefs.js +7 -6
  85. package/dist/routes/config/channels/endpoints/prefs.js.map +1 -1
  86. package/dist/routes/config/channels/endpoints/service.js +6 -5
  87. package/dist/routes/config/channels/endpoints/service.js.map +1 -1
  88. package/dist/routes/config/channels/endpoints/tags.js +4 -16
  89. package/dist/routes/config/channels/endpoints/tags.js.map +1 -1
  90. package/dist/routes/config/channels/table.d.ts +2 -1
  91. package/dist/routes/config/channels/table.js +11 -13
  92. package/dist/routes/config/channels/table.js.map +1 -1
  93. package/dist/routes/config/http/envelope.d.ts +6 -3
  94. package/dist/routes/config/http/envelope.js +18 -5
  95. package/dist/routes/config/http/envelope.js.map +1 -1
  96. package/dist/routes/config/index.d.ts +21 -13
  97. package/dist/routes/config/index.js +47 -34
  98. package/dist/routes/config/index.js.map +1 -1
  99. package/dist/routes/config/settings.d.ts +43 -6
  100. package/dist/routes/config/settings.js +225 -125
  101. package/dist/routes/config/settings.js.map +1 -1
  102. package/dist/routes/config/vocabulary.d.ts +24 -0
  103. package/dist/routes/config/vocabulary.js +33 -0
  104. package/dist/routes/config/vocabulary.js.map +1 -0
  105. package/dist/routes/debug.js +28 -13
  106. package/dist/routes/debug.js.map +1 -1
  107. package/dist/routes/root/content.js +33 -26
  108. package/dist/routes/root/content.js.map +1 -1
  109. package/dist/routes/root/scripts/channels.js +23 -11
  110. package/dist/routes/root/scripts/channels.js.map +1 -1
  111. package/dist/routes/root/scripts/config.d.ts +1 -1
  112. package/dist/routes/root/scripts/config.js +127 -79
  113. package/dist/routes/root/scripts/config.js.map +1 -1
  114. package/dist/routes/root/scripts/shared.js +34 -23
  115. package/dist/routes/root/scripts/shared.js.map +1 -1
  116. package/dist/routes/root/scripts/status.handlers.d.ts +8 -13
  117. package/dist/routes/root/scripts/status.handlers.js +35 -21
  118. package/dist/routes/root/scripts/status.handlers.js.map +1 -1
  119. package/dist/routes/root/styles.js +13 -16
  120. package/dist/routes/root/styles.js.map +1 -1
  121. package/dist/routes/services.js +12 -16
  122. package/dist/routes/services.js.map +1 -1
  123. package/dist/routes/theme.js +12 -12
  124. package/dist/routes/theme.js.map +1 -1
  125. package/dist/routes/ui.d.ts +4 -3
  126. package/dist/routes/ui.js +17 -13
  127. package/dist/routes/ui.js.map +1 -1
  128. package/dist/service/generators.js +12 -9
  129. package/dist/service/generators.js.map +1 -1
  130. package/dist/streaming/captureSession.d.ts +4 -4
  131. package/dist/streaming/captureSession.js +6 -7
  132. package/dist/streaming/captureSession.js.map +1 -1
  133. package/dist/streaming/codec.d.ts +12 -2
  134. package/dist/streaming/codec.js +40 -28
  135. package/dist/streaming/codec.js.map +1 -1
  136. package/dist/streaming/fmp4Segmenter.d.ts +14 -4
  137. package/dist/streaming/fmp4Segmenter.js +99 -79
  138. package/dist/streaming/fmp4Segmenter.js.map +1 -1
  139. package/dist/streaming/hls.d.ts +21 -14
  140. package/dist/streaming/hls.js +148 -122
  141. package/dist/streaming/hls.js.map +1 -1
  142. package/dist/streaming/hlsResume.d.ts +36 -13
  143. package/dist/streaming/hlsResume.js +68 -37
  144. package/dist/streaming/hlsResume.js.map +1 -1
  145. package/dist/streaming/monitor.d.ts +5 -3
  146. package/dist/streaming/monitor.js +47 -37
  147. package/dist/streaming/monitor.js.map +1 -1
  148. package/dist/streaming/mp4Parser.d.ts +29 -4
  149. package/dist/streaming/mp4Parser.js +49 -7
  150. package/dist/streaming/mp4Parser.js.map +1 -1
  151. package/dist/streaming/playlistBuilder.d.ts +1 -2
  152. package/dist/streaming/playlistBuilder.js +2 -3
  153. package/dist/streaming/playlistBuilder.js.map +1 -1
  154. package/dist/streaming/preroll.d.ts +43 -16
  155. package/dist/streaming/preroll.js +112 -62
  156. package/dist/streaming/preroll.js.map +1 -1
  157. package/dist/streaming/pretune.d.ts +2 -2
  158. package/dist/streaming/pretune.js +11 -7
  159. package/dist/streaming/pretune.js.map +1 -1
  160. package/dist/streaming/recovery.d.ts +29 -2
  161. package/dist/streaming/recovery.js +43 -4
  162. package/dist/streaming/recovery.js.map +1 -1
  163. package/dist/streaming/registry.d.ts +13 -10
  164. package/dist/streaming/registry.js +6 -5
  165. package/dist/streaming/registry.js.map +1 -1
  166. package/dist/streaming/setup.d.ts +29 -20
  167. package/dist/streaming/setup.js +181 -170
  168. package/dist/streaming/setup.js.map +1 -1
  169. package/dist/streaming/showInfo.d.ts +24 -12
  170. package/dist/streaming/showInfo.js +120 -113
  171. package/dist/streaming/showInfo.js.map +1 -1
  172. package/dist/streaming/statusEmitter.d.ts +15 -10
  173. package/dist/streaming/statusEmitter.js +24 -20
  174. package/dist/streaming/statusEmitter.js.map +1 -1
  175. package/dist/types/config.d.ts +24 -13
  176. package/dist/types/config.js +5 -1
  177. package/dist/types/config.js.map +1 -1
  178. package/dist/types/index.d.ts +3 -2
  179. package/dist/types/index.js +2 -1
  180. package/dist/types/index.js.map +1 -1
  181. package/dist/types/profiles.d.ts +2 -2
  182. package/dist/types/selection.d.ts +12 -10
  183. package/dist/types/streaming.d.ts +12 -5
  184. package/dist/types/streaming.js +12 -5
  185. package/dist/types/streaming.js.map +1 -1
  186. package/dist/utils/debugFilter.d.ts +3 -2
  187. package/dist/utils/debugFilter.js +7 -5
  188. package/dist/utils/debugFilter.js.map +1 -1
  189. package/dist/{hdhr → utils}/deviceId.d.ts +1 -1
  190. package/dist/{hdhr → utils}/deviceId.js +11 -29
  191. package/dist/utils/deviceId.js.map +1 -0
  192. package/dist/utils/errors.d.ts +7 -0
  193. package/dist/utils/errors.js +12 -3
  194. package/dist/utils/errors.js.map +1 -1
  195. package/dist/utils/fileLogger.d.ts +23 -12
  196. package/dist/utils/fileLogger.js +73 -41
  197. package/dist/utils/fileLogger.js.map +1 -1
  198. package/dist/utils/httpErrors.d.ts +13 -0
  199. package/dist/utils/httpErrors.js +22 -0
  200. package/dist/utils/httpErrors.js.map +1 -0
  201. package/dist/utils/index.d.ts +3 -0
  202. package/dist/utils/index.js +3 -0
  203. package/dist/utils/index.js.map +1 -1
  204. package/dist/utils/logger.d.ts +9 -8
  205. package/dist/utils/logger.js +64 -20
  206. package/dist/utils/logger.js.map +1 -1
  207. package/dist/utils/markup.js +8 -3
  208. package/dist/utils/markup.js.map +1 -1
  209. package/dist/utils/plainObject.d.ts +6 -0
  210. package/dist/utils/plainObject.js +18 -0
  211. package/dist/utils/plainObject.js.map +1 -0
  212. package/dist/utils/runtimeIdentity.context.js +1 -29
  213. package/dist/utils/runtimeIdentity.context.js.map +1 -1
  214. package/dist/utils/runtimeIdentity.d.ts +17 -6
  215. package/dist/utils/runtimeIdentity.js +50 -17
  216. package/dist/utils/runtimeIdentity.js.map +1 -1
  217. package/package.json +5 -5
  218. package/dist/hdhr/deviceId.js.map +0 -1
@@ -2,7 +2,8 @@ import { CAPTURE_SOURCE_UNAVAILABLE_MESSAGE } from "../types/index.js";
2
2
  import { CONFIG } from "../config/index.js";
3
3
  // Recovery method names. These are the single source of truth for recovery methods: they serve as the log labels in start, success, and failure messages, as the
4
4
  // computed keys into the ATTEMPT_FIELDS and SUCCESS_FIELDS metrics-counter maps below, and as the return values of getRecoveryMethod. Changing a value here changes
5
- // all three in lockstep, so they are not free to edit for log cosmetics - editing one silently re-routes (or breaks) the corresponding metrics counter.
5
+ // every one of those roles in lockstep, so an edit changes the log text and carries its counter key along with it. The values must stay distinct from one another,
6
+ // because two equal values would collapse into a single key in each map and merge two counters.
6
7
  export const RECOVERY_METHODS = {
7
8
  pageNavigation: "page navigation",
8
9
  playUnmute: "play/unmute",
@@ -313,14 +314,14 @@ export function getIssueCategory(state, isStalled, isBuffering) {
313
314
  * own navigation timeouts as warnings instead of throwing, and the evaluate-call timeout path (EvaluateTimeoutError) belongs to the health monitor's own call chain,
314
315
  * never this one.
315
316
  *
316
- * The refusal Chrome answers a capture start with is referenced from the module that speaks that protocol rather than re-typed here, so a wording change in the
317
- * extension's answer cannot leave the two spellings disagreeing.
317
+ * The refusal Chrome answers a capture start with is read from the shared constant both this classifier and the capture module import, rather than re-typed here,
318
+ * so a wording change in the extension's answer cannot leave the two spellings disagreeing.
318
319
  */
319
320
  const CAPTURE_INFRASTRUCTURE_PATTERNS = ["Cannot capture", "Capture queue", CAPTURE_SOURCE_UNAVAILABLE_MESSAGE, "No active tab", "capture extension",
320
321
  "timed out"];
321
322
  /**
322
323
  * Classifies whether an error originates in Chrome's capture infrastructure (the extension, the capture lock, or stream initialization) rather than in a specific
323
- * site or stream. This is the single source of truth for that judgment, and it has two readers, both on the establishment's failure paths: the acquisition
324
+ * site or stream. This is the single source of truth for that judgment, and every reader sits on the establishment's failure paths: the acquisition
324
325
  * chokepoint uses it to decide whether a failure is evidence the browser may no longer be capture-ready, and the stream-setup path uses it to decide the
325
326
  * client-facing 503 back-off. The judgment is shared; the side effect fires in exactly one of them.
326
327
  * @param error - The error or message to classify.
@@ -497,4 +498,42 @@ export function isResolutionDegraded(inputs) {
497
498
  export function describeResolutionOutcome(inputs) {
498
499
  return (resolutionArea(inputs.reading) >= resolutionArea(inputs.peak)) ? "restored" : "improved";
499
500
  }
501
+ /* The rate the floor never exceeds, in bytes per second of segment duration. A dead capture pipeline emits segments a few bytes long, and one whose video has
502
+ * died while its audio continues emits at most 64 kilobytes per second, the configuration's 512 kilobit audio ceiling. The leanest video preset, 480p at 3
503
+ * megabits, runs at about 375 kilobytes per second, and healthy static content has been measured in the field at 311 to 391. This rate sits between the audio
504
+ * ceiling and the leanest preset, and it is the one those field measurements validated...healthy output does not follow a higher bitrate target upward, so
505
+ * the floor holds here however high a stream's bitrates go, and the stream's rates can only lower it. Stating the floor as a rate draws its line at every
506
+ * segment duration the configuration allows, where a fixed byte count per segment draws it at one duration only.
507
+ */
508
+ export const TINY_SEGMENT_FLOOR_CAP_BYTES_PER_SECOND = 256000;
509
+ /* The share of a stream's total rate, video plus audio, that the floor sits at beneath its cap. At half, a capture delivering at least half the stream's rate
510
+ * is never undersized, and a capture whose video has died while its audio continues is undersized whenever the stream's video rate exceeds its audio rate,
511
+ * because half the total then sits above the audio rate that capture still delivers and the cap sits above the audio ceiling. Where the audio rate reaches
512
+ * the video rate, the floor catches a dead pipeline's few-byte segments alone.
513
+ */
514
+ export const TINY_SEGMENT_FLOOR_RATE_FRACTION = 0.5;
515
+ // The span, in seconds, of consecutive undersized segments that earns a recovery. It balances responsiveness against false positives: a dead capture is replaced
516
+ // promptly, while a brief stretch of near-static picture on a healthy capture ends before it costs a tab replacement.
517
+ export const TINY_SEGMENT_EVIDENCE_SECONDS = 20;
518
+ /**
519
+ * The size below which a segment of the given duration counts as undersized: TINY_SEGMENT_FLOOR_RATE_FRACTION of the stream's total rate, video plus audio,
520
+ * converted to bytes per second and held at or under TINY_SEGMENT_FLOOR_CAP_BYTES_PER_SECOND, then scaled to the segment. Those constants state what the floor
521
+ * guarantees. The monitor's size check reads its floor from here, so the rate and the per-segment figure cannot disagree at any duration.
522
+ * @param options - The stream's audio and video bitrates in bits per second, and its HLS segment duration in seconds.
523
+ * @returns The floor in bytes.
524
+ */
525
+ export function deriveTinySegmentThresholdBytes(options) {
526
+ const shareBytesPerSecond = (TINY_SEGMENT_FLOOR_RATE_FRACTION * (options.audioBitsPerSecond + options.videoBitsPerSecond)) / 8;
527
+ return Math.min(TINY_SEGMENT_FLOOR_CAP_BYTES_PER_SECOND, shareBytesPerSecond) * options.segmentDurationSeconds;
528
+ }
529
+ /**
530
+ * The number of consecutive undersized segments that covers an evidence window at the given segment duration. The count rounds up, because a run of whole
531
+ * segments shorter than the window would act on less evidence than the window states: at a three-second duration a twenty-second window takes seven segments,
532
+ * not six. It never falls below one, because a single segment is the least evidence there is to act on.
533
+ * @param options - The evidence window in seconds, and the stream's HLS segment duration in seconds.
534
+ * @returns The count of consecutive undersized segments that earns a recovery.
535
+ */
536
+ export function deriveTinySegmentCountTrigger(options) {
537
+ return Math.max(1, Math.ceil(options.evidenceSeconds / options.segmentDurationSeconds));
538
+ }
500
539
  //# sourceMappingURL=recovery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/streaming/recovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/streaming/recovery.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ import type { NativeProxy } from "../native/proxy.ts";
9
9
  import type { Page } from "puppeteer-core";
10
10
  import type { ProbeCacheIdentity } from "../native/probe.ts";
11
11
  import type { RefreshedFeedMetadata } from "../native/index.ts";
12
+ import type { ResumePosition } from "./hlsResume.ts";
13
+ import type { StreamSettings } from "../config/streamSettings.ts";
12
14
  /**
13
15
  * Typed event map for segment notifications. MPEG-TS consumers and lifecycle handlers subscribe to these events. Using a typed interface ensures event names and
14
16
  * argument types are checked at compile time, preventing misspelled event names or incorrect payloads.
@@ -43,8 +45,7 @@ export interface SetupFailureStatus {
43
45
  * HLS segment and playlist storage for a stream. This includes the fMP4 initialization segment (codec configuration), media segments (.m4s files), and the current
44
46
  * playlist content. The playlistReady promise allows callers to wait for the first playlist to be generated.
45
47
  *
46
- * Note: HLSState is co-located with the registry because it is part of StreamRegistryEntry. Moving it to hlsSegments.ts would create a circular dependency since
47
- * hlsSegments.ts imports getStream from registry.ts.
48
+ * HLSState lives beside StreamRegistryEntry because it is part of the entry's shape, and the registry owns that shape.
48
49
  */
49
50
  export interface HLSState {
50
51
  playlist: string;
@@ -70,7 +71,7 @@ export interface HLSState {
70
71
  prerollSegmentCount: number;
71
72
  prerollStartTime: Nullable<number>;
72
73
  prerollTimer: Nullable<Disposable>;
73
- resumeSegmentIndex: number;
74
+ resumePosition: Nullable<ResumePosition>;
74
75
  setupFailure: Nullable<SetupFailureStatus>;
75
76
  }
76
77
  /**
@@ -111,14 +112,15 @@ export interface StreamRegistryEntry {
111
112
  hls: HLSState;
112
113
  id: number;
113
114
  identity: StreamIdentity;
114
- mpegTsClientCount: number;
115
115
  info: StreamInfo;
116
+ monitor: Nullable<MonitorHandle>;
117
+ mpegTsClientCount: number;
116
118
  page: Nullable<Page>;
117
119
  preTuned: boolean;
118
120
  probeIdentity: Nullable<ProbeCacheIdentity>;
119
121
  profile: Nullable<ResolvedSiteProfile>;
120
- startTime: number;
121
- monitor: Nullable<MonitorHandle>;
122
+ readonly settings: StreamSettings;
123
+ readonly startTime: number;
122
124
  streamIdStr: string;
123
125
  url: string;
124
126
  }
@@ -128,7 +130,8 @@ export interface StreamRegistryEntry {
128
130
  */
129
131
  export declare function getNextStreamId(): number;
130
132
  /**
131
- * Registers a stream in the registry. This should be called after stream setup is complete and the stream is ready to serve data.
133
+ * Registers a stream in the registry. Callers register the pending entry before setup begins, so a concurrent request for the channel finds the stream at once
134
+ * and every later stage of the stream reads the entry it registered.
132
135
  * @param entry - The stream registry entry to add.
133
136
  */
134
137
  export declare function registerStream(entry: StreamRegistryEntry): void;
@@ -196,10 +199,10 @@ export declare function isCaptureIdentity(entry: StreamRegistryEntry): entry is
196
199
  */
197
200
  export declare function isHardwareAccelerated(entry: StreamRegistryEntry): boolean;
198
201
  /**
199
- * Records the quality a token refresh has bound this stream to. The registry owns the mechanics because two layers relay the same refresh - the native upgrade in
200
- * hls.ts and the monitor's L2 recovery - and a hand-copied guard-then-spread in each would be two chances to get it wrong.
202
+ * Records the quality a token refresh has bound this stream to. The registry owns the mechanics because more than one layer relays the same refresh (the native
203
+ * upgrade in hls.ts, the monitor's L2 recovery), and a hand-copied guard-then-spread in each would be one more chance to get it wrong.
201
204
  *
202
- * The narrow happens here, freshly, because both callers invoke this from an asynchronous callback that can fire long after any earlier check: a refresh that
205
+ * The narrow happens here, freshly, because every caller invokes this from an asynchronous callback that can fire long after any earlier check: a refresh that
203
206
  * completes while a capture fallback is mid-flight finds a capture identity and is skipped. Skipping is right in every case - quality metadata for a stream
204
207
  * midway through a fallback is moot, and a fallback that fails restores the proxy, whose next refresh writes the quality again.
205
208
  * @param entry - The stream registry entry to update.
@@ -13,7 +13,8 @@ export function getNextStreamId() {
13
13
  return ++streamIdCounter;
14
14
  }
15
15
  /**
16
- * Registers a stream in the registry. This should be called after stream setup is complete and the stream is ready to serve data.
16
+ * Registers a stream in the registry. Callers register the pending entry before setup begins, so a concurrent request for the channel finds the stream at once
17
+ * and every later stage of the stream reads the entry it registered.
17
18
  * @param entry - The stream registry entry to add.
18
19
  */
19
20
  export function registerStream(entry) {
@@ -100,10 +101,10 @@ export function isHardwareAccelerated(entry) {
100
101
  return (entry.identity.mode === "capture") && entry.identity.hardwareAccelerated;
101
102
  }
102
103
  /**
103
- * Records the quality a token refresh has bound this stream to. The registry owns the mechanics because two layers relay the same refresh - the native upgrade in
104
- * hls.ts and the monitor's L2 recovery - and a hand-copied guard-then-spread in each would be two chances to get it wrong.
104
+ * Records the quality a token refresh has bound this stream to. The registry owns the mechanics because more than one layer relays the same refresh (the native
105
+ * upgrade in hls.ts, the monitor's L2 recovery), and a hand-copied guard-then-spread in each would be one more chance to get it wrong.
105
106
  *
106
- * The narrow happens here, freshly, because both callers invoke this from an asynchronous callback that can fire long after any earlier check: a refresh that
107
+ * The narrow happens here, freshly, because every caller invokes this from an asynchronous callback that can fire long after any earlier check: a refresh that
107
108
  * completes while a capture fallback is mid-flight finds a capture identity and is skipped. Skipping is right in every case - quality metadata for a stream
108
109
  * midway through a fallback is moot, and a fallback that fails restores the proxy, whose next refresh writes the quality again.
109
110
  * @param entry - The stream registry entry to update.
@@ -157,7 +158,7 @@ export function createHLSState() {
157
158
  prerollSegmentCount: 0,
158
159
  prerollStartTime: null,
159
160
  prerollTimer: null,
160
- resumeSegmentIndex: 0,
161
+ resumePosition: null,
161
162
  segmentBytes: 0,
162
163
  segmentEmitter,
163
164
  segments: new Map(),
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/streaming/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/streaming/registry.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { Browser, Frame, Page } from "puppeteer-core";
2
- import { acquireCaptureStream, emulateCaptureSurface, getBrowserInstance, getCaptureImpairment, getCurrentBrowser, installActivationHeal, noteBrowserCaptureImpaired, syncWindowVisibility } from "../browser/index.ts";
2
+ import { acquireCaptureStream, emulateCaptureSurface, getBrowserInstance, getCaptureImpairment, getCurrentBrowser, installActivationHeal, noteBrowserCaptureImpaired, reaffirmCaptureSurface, syncWindowVisibility } from "../browser/index.ts";
3
3
  import type { CaptureStream } from "../browser/index.ts";
4
- import { spawnFFmpeg } from "../utils/index.ts";
4
+ import { resolveFFmpegPath, spawnFFmpeg } from "../utils/index.ts";
5
5
  import type { ManifestInterceptionResult, ManifestInterceptorHandle } from "../browser/manifestInterceptor.ts";
6
6
  import type { MonitorHandle, TabReplacementResult } from "./recovery.ts";
7
7
  import type { Nullable, ResolvedChannel, ResolvedSiteProfile, TuneResult, UrlValidationResult } from "../types/index.ts";
@@ -10,8 +10,8 @@ import type { CaptureSession } from "./captureSession.ts";
10
10
  import type { Clock } from "homebridge-plugin-utils";
11
11
  import type { InitializePlaybackOptions } from "../browser/video.ts";
12
12
  import type { ProbeCacheIdentity } from "../native/probe.ts";
13
+ import type { StreamSettings } from "../config/streamSettings.ts";
13
14
  import { openSharedWindowTab } from "../browser/tabSelection.ts";
14
- import { reaffirmCaptureSurface } from "../browser/cdp.ts";
15
15
  import { startOverlayHandling } from "../browser/consent.ts";
16
16
  export declare const STREAM_INIT_TIMEOUT_MESSAGE = "Stream initialization timed out.";
17
17
  export declare const CAPTURE_PROBE_TIMEOUT_MESSAGE = "Capture probe timed out.";
@@ -38,7 +38,7 @@ export declare class DirectUrlEstablishmentError extends Error {
38
38
  constructor(cause: unknown);
39
39
  }
40
40
  /**
41
- * Factory function type for creating tab replacement handlers. Called by setupStream after generating stream IDs and resolving the profile, allowing the caller to
41
+ * Factory function type for creating tab replacement handlers. Called by setupStream with the stream's ids once it has resolved the profile, allowing the caller to
42
42
  * create a handler with access to all necessary context.
43
43
  */
44
44
  export type TabReplacementHandlerFactory = (numericStreamId: number, streamId: string, profile: ResolvedSiteProfile, metadataComment: string | undefined) => () => Promise<Nullable<TabReplacementResult>>;
@@ -51,12 +51,14 @@ export interface StreamSetupOptions {
51
51
  channelSelector?: string;
52
52
  clickSelector?: string;
53
53
  clickToPlay?: boolean;
54
- numericStreamId?: number;
54
+ numericStreamId: number;
55
55
  onTabReplacementFactory?: TabReplacementHandlerFactory;
56
56
  probeIdentity: ProbeCacheIdentity;
57
57
  profileOverride?: string;
58
+ settings: StreamSettings;
59
+ startTime: number;
58
60
  staticCapture?: boolean;
59
- streamId?: string;
61
+ streamId: string;
60
62
  url: string;
61
63
  }
62
64
  /**
@@ -74,7 +76,6 @@ export interface StreamSetupResult {
74
76
  profile: ResolvedSiteProfile;
75
77
  profileName: string;
76
78
  serviceName: string;
77
- startTime: number;
78
79
  monitor: MonitorHandle;
79
80
  streamId: string;
80
81
  url: string;
@@ -108,6 +109,7 @@ export interface CreatePageWithCaptureOptions {
108
109
  onFFmpegError?: (error: Error) => void;
109
110
  persistResolution?: (resolvedSelector: string) => Promise<void>;
110
111
  profile: ResolvedSiteProfile;
112
+ settings: StreamSettings;
111
113
  skipDirectUrl?: boolean;
112
114
  skipManifestInterception?: boolean;
113
115
  streamId: string;
@@ -149,6 +151,7 @@ export interface CreatePageWithCaptureDeps {
149
151
  readonly installActivationHeal: typeof installActivationHeal;
150
152
  readonly openSharedWindowTab: typeof openSharedWindowTab;
151
153
  readonly reaffirmCaptureSurface: typeof reaffirmCaptureSurface;
154
+ readonly resolveFFmpegPath: typeof resolveFFmpegPath;
152
155
  readonly spawnFFmpeg: typeof spawnFFmpeg;
153
156
  readonly startOverlayHandling: typeof startOverlayHandling;
154
157
  readonly syncWindowVisibility: typeof syncWindowVisibility;
@@ -157,7 +160,7 @@ export interface CreatePageWithCaptureDeps {
157
160
  * Creates a browser page with media capture and navigates to the URL. This is the reusable core function used by both initial stream setup and tab replacement
158
161
  * recovery. It handles:
159
162
  * - Creating a new browser page with CSP bypass
160
- * - Initializing media capture (native fMP4 or Matroska+FFmpeg)
163
+ * - Initializing media capture (a Matroska capture that FFmpeg remuxes to fMP4)
161
164
  * - Navigating to the URL with retry
162
165
  * - Setting up video playback via navigateToPage() + initializePlayback()
163
166
  * - Re-entering itself once, on a fresh page through a freshly acquired browser, when Chrome refuses the capture start and the mid-life probe's verdict says a
@@ -167,13 +170,16 @@ export interface CreatePageWithCaptureDeps {
167
170
  * - Creating the segmenter and attaching it to the capture session via captureSession.attachSegmenter()
168
171
  * - Registering/updating the stream in the registry
169
172
  * - Starting/updating the health monitor
170
- * - Handling cleanup on failure
173
+ *
174
+ * On failure the function disposes everything it acquired, so the caller owns only what a successful return hands over.
171
175
  *
172
176
  * @param options - Options for page and capture creation.
173
- * @param deps - The injected browser and overlay-poll collaborators; defaults to defaultCreatePageWithCaptureDeps. Threaded so a test drives this function without a
174
- * live Chrome by substituting the shared-browser accessor, the capture acquisition, and the static-capture overlay poll.
175
- * @returns The page, context, and capture session (which owns the raw capture stream and any FFmpeg child).
176
- * @throws Error if page creation, capture initialization, or navigation fails.
177
+ * @param deps - The injected browser-boundary collaborators (see CreatePageWithCaptureDeps); defaults to defaultCreatePageWithCaptureDeps, so a test can drive this
178
+ * function without a live Chrome.
179
+ * @returns The page, context, and capture session (which owns the raw capture stream and its FFmpeg child).
180
+ * @throws DirectUrlEstablishmentError when a resolved direct watch URL failed on evidence against it (the hint is already evicted); the browser supervisor's own
181
+ * refusal errors from the browser accessor unchanged; a plain Error when Chrome crashed during capture initialization more times than the retry cap allows;
182
+ * otherwise the page-creation, capture-initialization, or navigation failure as it was raised.
177
183
  */
178
184
  export declare function createPageWithCapture(options: CreatePageWithCaptureOptions, deps?: CreatePageWithCaptureDeps): Promise<CreatePageWithCaptureResult>;
179
185
  export declare function verifyManifestSelection(interceptionPromise: Promise<Nullable<ManifestInterceptionResult>>, profile: ResolvedSiteProfile): Promise<Nullable<string>>;
@@ -214,7 +220,8 @@ export interface EstablishChannelPlaybackOptions {
214
220
  * only per-path policy differs.
215
221
  * @param page - The page being established.
216
222
  * @param profile - The resolved site profile whose strategy drives navigation and channel selection.
217
- * @param handle - The interceptor observing this establishment, or null when nothing is observing it (a tab replacement, or an install that failed).
223
+ * @param handle - The interceptor observing this establishment, or null when nothing is observing it (a tab replacement, a skipped interception for a
224
+ * capture-locked or DRM-cached channel, or an install that failed).
218
225
  * @param options - The caller's navigation policy, its initialization options, and an optional settlement hook. See EstablishChannelPlaybackOptions.
219
226
  * @param deps - Injected browser-boundary collaborator; defaults to the real playback initializer in production.
220
227
  * @returns The result playback initialization produced: the video context for subsequent monitoring, and the strategy's direct-tune flag where it resolved one.
@@ -243,9 +250,9 @@ export declare function adjudicateChannelSelection(handle: ManifestInterceptorHa
243
250
  *
244
251
  * @param options - Stream configuration options.
245
252
  * @param onCircuitBreak - Callback invoked when the circuit breaker trips (stream unrecoverable).
246
- * @param deps - The injected browser and overlay-poll collaborators, forwarded to every establishment attempt this function makes; defaults to
247
- * defaultCreatePageWithCaptureDeps. Threaded for the same reason createPageWithCapture takes them: a test drives the establishment sequence - including its guide
248
- * fallback - without a live Chrome by substituting the shared-browser accessor, the capture launcher, and the overlay poll.
253
+ * @param deps - The injected browser-boundary collaborators (see CreatePageWithCaptureDeps), forwarded to every establishment attempt this function makes and
254
+ * read directly by its cleanup closure; defaults to defaultCreatePageWithCaptureDeps. Threaded for the same reason createPageWithCapture takes them: a test drives
255
+ * the establishment sequence - including its guide fallback - without a live Chrome.
249
256
  * @returns Setup result with capture session, cleanup function, and metadata.
250
257
  * @throws StreamSetupError if setup fails with appropriate status code and message.
251
258
  */
@@ -274,8 +281,10 @@ export declare function reestablishChannelManifest(options: ReestablishChannelMa
274
281
  * times with a delay between attempts, giving the system time to settle before giving up. At boot this prevents a rapid restart storm where the service manager
275
282
  * relaunches PrismCast repeatedly, each attempt orphaning a Chrome process; at relaunch it provides in-launch settling before the supervisor counts a launch failure.
276
283
  * @param browser - The Chrome instance to verify (the local instance being launched, passed in rather than re-acquired to avoid re-entering the launch in flight).
284
+ * @param clock - The clock the wait between attempts and each attempt's own timing run on. Defaults to the system clock.
285
+ * @throws CaptureLaunchError when every attempt failed.
277
286
  */
278
- export declare function verifyCaptureSystem(browser: Browser): Promise<void>;
287
+ export declare function verifyCaptureSystem(browser: Browser, clock?: Clock): Promise<void>;
279
288
  /**
280
289
  * What one mid-life capture probe established about the browser. A `captured` outcome is the browser proving it can still start a capture; `failed` is the verdict
281
290
  * the mark rests on; `inconclusive` is the probe never having run, which is evidence of neither.
@@ -293,8 +302,8 @@ export type CaptureProbeOutcome = {
293
302
  * Classifies a throw from the probe's run on the capture lock into a verdict or the absence of one. A turn-wait timeout means the probe never got to run: with
294
303
  * other streams tuning at the same moment it queued behind their legitimate acquisitions, and a lock that is busy says something about load, not about the browser
295
304
  * - a holder that is genuinely hung marks the browser through its own wedge. Every other value, the outer deadline above all, means the probe held its turn and its
296
- * own acquisition did not settle, which is exactly the failure the mark exists for. Pure and total, so the distinction the detector rests on is pinnable without a
297
- * browser.
305
+ * own acquisition did not settle, which is exactly the failure the mark exists for. Pure and total, so a test can assert the distinction the detector rests on
306
+ * without a browser.
298
307
  * @param error - The value the lock run threw.
299
308
  * @returns The outcome the detector acts on.
300
309
  */