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.
- package/dist/app.d.ts +88 -6
- package/dist/app.js +287 -154
- package/dist/app.js.map +1 -1
- package/dist/browser/cdp.d.ts +6 -17
- package/dist/browser/cdp.js +6 -57
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/index.d.ts +106 -23
- package/dist/browser/index.js +292 -225
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/precaching.d.ts +25 -11
- package/dist/browser/precaching.js +245 -97
- package/dist/browser/precaching.js.map +1 -1
- package/dist/browser/tabCapture.js +3 -10
- package/dist/browser/tabCapture.js.map +1 -1
- package/dist/browser/tuning/comcastPolymer.js +13 -14
- package/dist/browser/tuning/comcastPolymer.js.map +1 -1
- package/dist/browser/tuning/hbo.js +34 -17
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/video.d.ts +1 -1
- package/dist/browser/video.js +3 -3
- package/dist/channels/index.js +5 -5
- package/dist/channels/index.js.map +1 -1
- package/dist/cliHelp.d.ts +11 -0
- package/dist/cliHelp.js +148 -0
- package/dist/cliHelp.js.map +1 -0
- package/dist/config/channelForm.js +5 -4
- package/dist/config/channelForm.js.map +1 -1
- package/dist/config/consistencyProbe.d.ts +2 -4
- package/dist/config/consistencyProbe.js +8 -51
- package/dist/config/consistencyProbe.js.map +1 -1
- package/dist/config/index.d.ts +107 -55
- package/dist/config/index.js +499 -267
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +13 -8
- package/dist/config/paths.js +21 -25
- package/dist/config/paths.js.map +1 -1
- package/dist/config/persistence.d.ts +57 -11
- package/dist/config/persistence.js +127 -44
- package/dist/config/persistence.js.map +1 -1
- package/dist/config/reactivity.d.ts +60 -36
- package/dist/config/reactivity.js +89 -116
- package/dist/config/reactivity.js.map +1 -1
- package/dist/config/services.d.ts +61 -26
- package/dist/config/services.js +137 -68
- package/dist/config/services.js.map +1 -1
- package/dist/config/streamSettings.d.ts +24 -0
- package/dist/config/streamSettings.js +17 -0
- package/dist/config/streamSettings.js.map +1 -0
- package/dist/config/userChannels.d.ts +60 -52
- package/dist/config/userChannels.js +138 -188
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +224 -61
- package/dist/config/userConfig.js +351 -134
- package/dist/config/userConfig.js.map +1 -1
- package/dist/hdhr/discover.d.ts +7 -1
- package/dist/hdhr/discover.js +12 -6
- package/dist/hdhr/discover.js.map +1 -1
- package/dist/hdhr/index.d.ts +51 -10
- package/dist/hdhr/index.js +108 -112
- package/dist/hdhr/index.js.map +1 -1
- package/dist/hdhr/udp.d.ts +11 -4
- package/dist/hdhr/udp.js +25 -20
- package/dist/hdhr/udp.js.map +1 -1
- package/dist/index.js +16 -143
- package/dist/index.js.map +1 -1
- package/dist/native/index.d.ts +1 -1
- package/dist/native/index.js +4 -3
- package/dist/native/index.js.map +1 -1
- package/dist/native/proxy.d.ts +1 -1
- package/dist/native/proxy.js +36 -28
- package/dist/native/proxy.js.map +1 -1
- package/dist/routes/cdp.d.ts +7 -6
- package/dist/routes/cdp.js +9 -8
- package/dist/routes/cdp.js.map +1 -1
- package/dist/routes/components.d.ts +23 -5
- package/dist/routes/components.js +21 -4
- package/dist/routes/components.js.map +1 -1
- package/dist/routes/config/channels/endpoints/browse.js +39 -29
- package/dist/routes/config/channels/endpoints/browse.js.map +1 -1
- package/dist/routes/config/channels/endpoints/bulk.js +2 -6
- package/dist/routes/config/channels/endpoints/bulk.js.map +1 -1
- package/dist/routes/config/channels/endpoints/predefined.js +5 -15
- package/dist/routes/config/channels/endpoints/predefined.js.map +1 -1
- package/dist/routes/config/channels/endpoints/prefs.js +7 -6
- package/dist/routes/config/channels/endpoints/prefs.js.map +1 -1
- package/dist/routes/config/channels/endpoints/service.js +6 -5
- package/dist/routes/config/channels/endpoints/service.js.map +1 -1
- package/dist/routes/config/channels/endpoints/tags.js +4 -16
- package/dist/routes/config/channels/endpoints/tags.js.map +1 -1
- package/dist/routes/config/channels/table.d.ts +2 -1
- package/dist/routes/config/channels/table.js +11 -13
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/http/envelope.d.ts +6 -3
- package/dist/routes/config/http/envelope.js +18 -5
- package/dist/routes/config/http/envelope.js.map +1 -1
- package/dist/routes/config/index.d.ts +21 -13
- package/dist/routes/config/index.js +47 -34
- package/dist/routes/config/index.js.map +1 -1
- package/dist/routes/config/settings.d.ts +43 -6
- package/dist/routes/config/settings.js +225 -125
- package/dist/routes/config/settings.js.map +1 -1
- package/dist/routes/config/vocabulary.d.ts +24 -0
- package/dist/routes/config/vocabulary.js +33 -0
- package/dist/routes/config/vocabulary.js.map +1 -0
- package/dist/routes/debug.js +28 -13
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/root/content.js +33 -26
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/scripts/channels.js +23 -11
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/config.d.ts +1 -1
- package/dist/routes/root/scripts/config.js +127 -79
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/shared.js +34 -23
- package/dist/routes/root/scripts/shared.js.map +1 -1
- package/dist/routes/root/scripts/status.handlers.d.ts +8 -13
- package/dist/routes/root/scripts/status.handlers.js +35 -21
- package/dist/routes/root/scripts/status.handlers.js.map +1 -1
- package/dist/routes/root/styles.js +13 -16
- package/dist/routes/root/styles.js.map +1 -1
- package/dist/routes/services.js +12 -16
- package/dist/routes/services.js.map +1 -1
- package/dist/routes/theme.js +12 -12
- package/dist/routes/theme.js.map +1 -1
- package/dist/routes/ui.d.ts +4 -3
- package/dist/routes/ui.js +17 -13
- package/dist/routes/ui.js.map +1 -1
- package/dist/service/generators.js +12 -9
- package/dist/service/generators.js.map +1 -1
- package/dist/streaming/captureSession.d.ts +4 -4
- package/dist/streaming/captureSession.js +6 -7
- package/dist/streaming/captureSession.js.map +1 -1
- package/dist/streaming/codec.d.ts +12 -2
- package/dist/streaming/codec.js +40 -28
- package/dist/streaming/codec.js.map +1 -1
- package/dist/streaming/fmp4Segmenter.d.ts +14 -4
- package/dist/streaming/fmp4Segmenter.js +99 -79
- package/dist/streaming/fmp4Segmenter.js.map +1 -1
- package/dist/streaming/hls.d.ts +21 -14
- package/dist/streaming/hls.js +148 -122
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsResume.d.ts +36 -13
- package/dist/streaming/hlsResume.js +68 -37
- package/dist/streaming/hlsResume.js.map +1 -1
- package/dist/streaming/monitor.d.ts +5 -3
- package/dist/streaming/monitor.js +47 -37
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +29 -4
- package/dist/streaming/mp4Parser.js +49 -7
- package/dist/streaming/mp4Parser.js.map +1 -1
- package/dist/streaming/playlistBuilder.d.ts +1 -2
- package/dist/streaming/playlistBuilder.js +2 -3
- package/dist/streaming/playlistBuilder.js.map +1 -1
- package/dist/streaming/preroll.d.ts +43 -16
- package/dist/streaming/preroll.js +112 -62
- package/dist/streaming/preroll.js.map +1 -1
- package/dist/streaming/pretune.d.ts +2 -2
- package/dist/streaming/pretune.js +11 -7
- package/dist/streaming/pretune.js.map +1 -1
- package/dist/streaming/recovery.d.ts +29 -2
- package/dist/streaming/recovery.js +43 -4
- package/dist/streaming/recovery.js.map +1 -1
- package/dist/streaming/registry.d.ts +13 -10
- package/dist/streaming/registry.js +6 -5
- package/dist/streaming/registry.js.map +1 -1
- package/dist/streaming/setup.d.ts +29 -20
- package/dist/streaming/setup.js +181 -170
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.d.ts +24 -12
- package/dist/streaming/showInfo.js +120 -113
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +15 -10
- package/dist/streaming/statusEmitter.js +24 -20
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/config.d.ts +24 -13
- package/dist/types/config.js +5 -1
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.js +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +2 -2
- package/dist/types/selection.d.ts +12 -10
- package/dist/types/streaming.d.ts +12 -5
- package/dist/types/streaming.js +12 -5
- package/dist/types/streaming.js.map +1 -1
- package/dist/utils/debugFilter.d.ts +3 -2
- package/dist/utils/debugFilter.js +7 -5
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/{hdhr → utils}/deviceId.d.ts +1 -1
- package/dist/{hdhr → utils}/deviceId.js +11 -29
- package/dist/utils/deviceId.js.map +1 -0
- package/dist/utils/errors.d.ts +7 -0
- package/dist/utils/errors.js +12 -3
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/fileLogger.d.ts +23 -12
- package/dist/utils/fileLogger.js +73 -41
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/httpErrors.d.ts +13 -0
- package/dist/utils/httpErrors.js +22 -0
- package/dist/utils/httpErrors.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts +9 -8
- package/dist/utils/logger.js +64 -20
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/markup.js +8 -3
- package/dist/utils/markup.js.map +1 -1
- package/dist/utils/plainObject.d.ts +6 -0
- package/dist/utils/plainObject.js +18 -0
- package/dist/utils/plainObject.js.map +1 -0
- package/dist/utils/runtimeIdentity.context.js +1 -29
- package/dist/utils/runtimeIdentity.context.js.map +1 -1
- package/dist/utils/runtimeIdentity.d.ts +17 -6
- package/dist/utils/runtimeIdentity.js +50 -17
- package/dist/utils/runtimeIdentity.js.map +1 -1
- package/package.json +5 -5
- 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
|
-
//
|
|
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
|
|
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
|
|
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":"AAMA,OAAO,EAAE,kCAAkC,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA4D5C,iKAAiK;AACjK,oKAAoK;AACpK,mKAAmK;AACnK,gGAAgG;AAChG,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAE9B,cAAc,EAAE,iBAAiB;IACjC,UAAU,EAAE,aAAa;IACzB,YAAY,EAAE,eAAe;IAC7B,cAAc,EAAE,iBAAiB;CACzB,CAAC;AAKX;;;GAGG;AAEH,mEAAmE;AACnE,MAAM,cAAc,GAAuD;IAEzE,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,wBAAwB;IAC3D,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,oBAAoB;IACnD,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,sBAAsB;IACvD,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,wBAAwB;CAC5D,CAAC;AAEF,mEAAmE;AACnE,MAAM,cAAc,GAAuD;IAEzE,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,yBAAyB;IAC5D,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,qBAAqB;IACpD,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,uBAAuB;IACxD,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,yBAAyB;CAC7D,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IAEnC,OAAO;QAEL,qBAAqB,EAAE,IAAI;QAC3B,wBAAwB,EAAE,IAAI;QAC9B,sBAAsB,EAAE,CAAC;QACzB,uBAAuB,EAAE,CAAC;QAC1B,kBAAkB,EAAE,CAAC;QACrB,mBAAmB,EAAE,CAAC;QACtB,oBAAoB,EAAE,CAAC;QACvB,qBAAqB,EAAE,CAAC;QACxB,sBAAsB,EAAE,CAAC;QACzB,uBAAuB,EAAE,CAAC;QAC1B,mBAAmB,EAAE,CAAC;KACvB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAwB;IAE/D,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAI,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAErD,KAAK,IAAI,OAAO,CAAC,SAAS,CAAW,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAAC,OAAwB;IAEzD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAI,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAErD,KAAK,IAAI,OAAO,CAAC,SAAS,CAAW,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,GAAW;IAEnE,MAAM,UAAU,GAAG,GAAG,GAAG,SAAS,CAAC;IAEnC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAA0C;IAE5E,QAAO,QAAQ,EAAE,CAAC;QAEhB,KAAK,QAAQ,CAAC,CAAC,CAAC;YAEd,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YAEjB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YAER,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAE7C,QAAO,KAAK,EAAE,CAAC;QAEb,KAAK,CAAC,CAAC,CAAC,CAAC;YAEP,OAAO,gBAAgB,CAAC,UAAU,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,CAAC,CAAC,CAAC;YAEP,OAAO,gBAAgB,CAAC,YAAY,CAAC;QACvC,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YAER,OAAO,gBAAgB,CAAC,cAAc,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAwB,EAAE,MAAc,EAAE,GAAW;IAEzF,oJAAoJ;IACpJ,MAAM,KAAK,GAAG,cAAc,CAAC,MAA6B,CAAsC,CAAC;IAEjG,IAAG,KAAK,KAAK,SAAS,EAAE,CAAC;QAEtB,OAAO,CAAC,KAAK,CAAY,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,wBAAwB,GAAG,GAAG,CAAC;IACvC,OAAO,CAAC,qBAAqB,GAAG,MAAM,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAwB,EAAE,MAAc,EAAE,GAAW;IAEzF,oJAAoJ;IACpJ,MAAM,KAAK,GAAG,cAAc,CAAC,MAA6B,CAAsC,CAAC;IAEjG,IAAG,KAAK,KAAK,SAAS,EAAE,CAAC;QAEtB,OAAO,CAAC,KAAK,CAAY,EAAE,CAAC;IAC/B,CAAC;IAED,IAAG,OAAO,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;QAE7C,OAAO,CAAC,mBAAmB,IAAI,GAAG,GAAG,OAAO,CAAC,wBAAwB,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACxC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAwB;IAEnE,MAAM,aAAa,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAExD,IAAG,aAAa,KAAK,CAAC,EAAE,CAAC;QAEvB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,MAAM,cAAc,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAE1D,8JAA8J;IAC9J,mDAAmD;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAI,MAAM,CAAE,UAAU,EAAE,SAAS,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAEtE,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAW,CAAC;QAE3C,IAAG,KAAK,GAAG,CAAC,EAAE,CAAC;YAEb,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAEvD,4EAA4E;IAC5E,IAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAEpB,OAAO,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;IAC1G,CAAC;IAED,sFAAsF;IACtF,OAAO,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,0BAA0B,CAAC;AAC7E,CAAC;AA6CD;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB,EAAE,GAAW,EAAE,OAA6B;IAEjG,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC1B,KAAK,CAAC,gBAAgB,KAAK,GAAG,CAAC;IAE/B,MAAM,YAAY,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IACvE,MAAM,OAAO,GAAG,YAAY,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAE/E,uGAAuG;IACvG,IAAG,CAAC,YAAY,EAAE,CAAC;QAEjB,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC5B,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAE1D,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC9B,CAAC;AAuBD;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA0B,EAAE,GAAW;IAEzE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAEjJ,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;AAC1G,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA0B;IAE5D,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAeD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAAiB,EAAE,SAAkB,EAAE,WAAoB;IAEzF,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,IAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAEf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,IAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAEf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,kKAAkK;IAClK,8CAA8C;IAC9C,IAAG,SAAS,IAAI,WAAW,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IAED,IAAG,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAiB,EAAE,SAAkB,EAAE,WAAoB;IAE1F,yEAAyE;IACzE,IAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAE9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uFAAuF;IACvF,IAAG,WAAW,EAAE,CAAC;QAEf,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,wDAAwD;IACxD,IAAG,SAAS,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;QAEvC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,+DAA+D;IAC/D,IAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAEhB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,sEAAsE;IACtE,IAAG,SAAS,EAAE,CAAC;QAEb,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,+BAA+B,GAAG,CAAE,gBAAgB,EAAE,eAAe,EAAE,kCAAkC,EAAE,eAAe,EAAE,mBAAmB;IACnJ,WAAW,CAAW,CAAC;AAEzB;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAc;IAEzD,MAAM,OAAO,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEzE,OAAO,+BAA+B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,sBAAsB;AAEtB;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAgG;IAEjI,yGAAyG;IACzG,IAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,EAAE,CAAC;QAEpD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+DAA+D;IAC/D,IAAG,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;QAE9B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,qCAAqC;IACrC,IAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAEtB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,qEAAqE;IACrE,IAAG,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QAEzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAWrC;IAEC,6IAA6I;IAC7I,IAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAE9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8IAA8I;IAC9I,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE5H,yGAAyG;IACzG,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAElI,OAAO,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,eAAe,IAAI,eAAe,IAAI,MAAM,CAAC,iBAAiB,CAAC;AAC9G,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAIxC;IAEC,uHAAuH;IACvH,IAAG,CAAC,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,CAAC,CAAC,EAAE,CAAC;QAEhF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,6GAA6G;IAC7G,IAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAEjC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,qEAAqE;IACrE,OAAO,CAAC,CAAC;AACX,CAAC;AA8BD;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAM3C;IAEC,4HAA4H;IAC5H,IAAG,MAAM,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;IAC7E,CAAC;IAED,4EAA4E;IAC5E,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;IAErG,IAAG,CAAC,OAAO,EAAE,CAAC;QAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,mKAAmK;IACnK,mKAAmK;IACnK,kIAAkI;IAClI,MAAM,uBAAuB,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IAEnF,IAAG,uBAAuB,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;QAE9D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;IACzE,CAAC;IAED,IAAG,uBAAuB,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC;QAE5D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;IACzE,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA0B,EAAE,SAA2B,EAAE,GAAW;IAExG,IAAG,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAE7D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC;AAkBD;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAuC;IAE7D,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAsF;IAEzH,IAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAElF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzF,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA4E;IAE9G,OAAO,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA+F;IAElI,OAAO,mBAAmB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAA4E;IAEpH,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;AACnG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,MAAM,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAC;AAEpD,iKAAiK;AACjK,sHAAsH;AACtH,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAI/C;IAEC,MAAM,mBAAmB,GAAG,CAAC,gCAAgC,GAAG,CAAC,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC;IAE/H,OAAO,IAAI,CAAC,GAAG,CAAC,uCAAuC,EAAE,mBAAmB,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC;AACjH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAAsF;IAElI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC1F,CAAC"}
|
|
@@ -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
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
121
|
-
|
|
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.
|
|
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
|
|
200
|
-
* hls.ts
|
|
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
|
|
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.
|
|
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
|
|
104
|
-
* hls.ts
|
|
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
|
|
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
|
-
|
|
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":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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
|
-
*
|
|
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
|
|
174
|
-
*
|
|
175
|
-
* @returns The page, context, and capture session (which owns the raw capture stream and
|
|
176
|
-
* @throws
|
|
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,
|
|
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
|
|
247
|
-
* defaultCreatePageWithCaptureDeps. Threaded for the same reason createPageWithCapture takes them: a test drives
|
|
248
|
-
*
|
|
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
|
|
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
|
*/
|