prismcast 1.4.2 → 1.5.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.js +18 -1
- package/dist/app.js.map +1 -1
- package/dist/browser/cdp.d.ts +2 -1
- package/dist/browser/cdp.js +44 -23
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +45 -1
- package/dist/browser/channelSelection.js +164 -27
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/display.d.ts +0 -4
- package/dist/browser/display.js +0 -7
- package/dist/browser/display.js.map +1 -1
- package/dist/browser/index.d.ts +5 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/precaching.d.ts +5 -0
- package/dist/browser/precaching.js +112 -0
- package/dist/browser/precaching.js.map +1 -0
- package/dist/browser/tuning/directv.d.ts +2 -0
- package/dist/browser/tuning/directv.js +723 -0
- package/dist/browser/tuning/directv.js.map +1 -0
- package/dist/browser/tuning/fox.d.ts +2 -2
- package/dist/browser/tuning/fox.js +141 -22
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/hbo.d.ts +2 -2
- package/dist/browser/tuning/hbo.js +110 -41
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.d.ts +2 -2
- package/dist/browser/tuning/hulu.js +442 -168
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/sling.d.ts +2 -2
- package/dist/browser/tuning/sling.js +200 -56
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/youtubeTv.d.ts +2 -2
- package/dist/browser/tuning/youtubeTv.js +243 -57
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +1 -1
- package/dist/browser/video.js +4 -2
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.js +280 -34
- package/dist/channels/index.js.map +1 -1
- package/dist/config/health.d.ts +78 -0
- package/dist/config/health.js +202 -0
- package/dist/config/health.js.map +1 -0
- package/dist/config/paths.d.ts +10 -0
- package/dist/config/paths.js +14 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/profiles.d.ts +6 -4
- package/dist/config/profiles.js +65 -14
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/providerPacks.d.ts +46 -0
- package/dist/config/providerPacks.js +200 -0
- package/dist/config/providerPacks.js.map +1 -0
- package/dist/config/providers.d.ts +36 -3
- package/dist/config/providers.js +168 -8
- package/dist/config/providers.js.map +1 -1
- package/dist/config/sites.d.ts +1 -12
- package/dist/config/sites.js +38 -5
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +12 -0
- package/dist/config/userChannels.js +81 -14
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +5 -1
- package/dist/config/userConfig.js +58 -6
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +81 -0
- package/dist/config/userProfiles.js +424 -0
- package/dist/config/userProfiles.js.map +1 -0
- package/dist/routes/config/channels/index.d.ts +3 -0
- package/dist/routes/config/channels/index.js +3 -0
- package/dist/routes/config/channels/index.js.map +1 -0
- package/dist/routes/config/channels/routes.d.ts +6 -0
- package/dist/routes/config/channels/routes.js +797 -0
- package/dist/routes/config/channels/routes.js.map +1 -0
- package/dist/routes/config/channels/table.d.ts +46 -0
- package/dist/routes/config/channels/table.js +811 -0
- package/dist/routes/config/channels/table.js.map +1 -0
- package/dist/routes/config/index.d.ts +37 -0
- package/dist/routes/config/index.js +81 -0
- package/dist/routes/config/index.js.map +1 -0
- package/dist/routes/config/providers.d.ts +18 -0
- package/dist/routes/config/providers.js +573 -0
- package/dist/routes/config/providers.js.map +1 -0
- package/dist/routes/config/settings.d.ts +39 -0
- package/dist/routes/config/settings.js +820 -0
- package/dist/routes/config/settings.js.map +1 -0
- package/dist/routes/index.d.ts +3 -2
- package/dist/routes/index.js +7 -4
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/playlist.d.ts +5 -1
- package/dist/routes/playlist.js +32 -7
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/providers.d.ts +6 -0
- package/dist/routes/providers.js +166 -0
- package/dist/routes/providers.js.map +1 -0
- package/dist/routes/root/content.d.ts +32 -0
- package/dist/routes/root/content.js +857 -0
- package/dist/routes/root/content.js.map +1 -0
- package/dist/routes/root/index.js +197 -0
- package/dist/routes/root/index.js.map +1 -0
- package/dist/routes/root/scripts/channels.d.ts +1 -0
- package/dist/routes/root/scripts/channels.js +745 -0
- package/dist/routes/root/scripts/channels.js.map +1 -0
- package/dist/routes/root/scripts/config.d.ts +1 -0
- package/dist/routes/root/scripts/config.js +1662 -0
- package/dist/routes/root/scripts/config.js.map +1 -0
- package/dist/routes/root/scripts/index.d.ts +3 -0
- package/dist/routes/root/scripts/index.js +8 -0
- package/dist/routes/root/scripts/index.js.map +1 -0
- package/dist/routes/root/scripts/status.d.ts +1 -0
- package/dist/routes/root/scripts/status.js +436 -0
- package/dist/routes/root/scripts/status.js.map +1 -0
- package/dist/routes/root/styles.d.ts +5 -0
- package/dist/routes/root/styles.js +447 -0
- package/dist/routes/root/styles.js.map +1 -0
- package/dist/routes/ui.js +8 -3
- package/dist/routes/ui.js.map +1 -1
- package/dist/service/commands.d.ts +5 -3
- package/dist/service/commands.js +117 -33
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.d.ts +27 -0
- package/dist/service/generators.js +97 -6
- package/dist/service/generators.js.map +1 -1
- package/dist/streaming/hls.js +18 -1
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/lifecycle.js +1 -1
- package/dist/streaming/lifecycle.js.map +1 -1
- package/dist/streaming/monitor.d.ts +1 -38
- package/dist/streaming/monitor.js +2 -289
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/recovery.d.ts +143 -0
- package/dist/streaming/recovery.js +286 -0
- package/dist/streaming/recovery.js.map +1 -0
- package/dist/streaming/registry.d.ts +1 -1
- package/dist/streaming/setup.d.ts +1 -1
- package/dist/streaming/setup.js +3 -1
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +4 -2
- package/dist/streaming/statusEmitter.js +5 -0
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/channels.d.ts +68 -0
- package/dist/types/channels.js +2 -0
- package/dist/types/channels.js.map +1 -0
- package/dist/types/config.d.ts +127 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +7 -429
- package/dist/types/index.js +1 -5
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +141 -0
- package/dist/types/profiles.js +2 -0
- package/dist/types/profiles.js.map +1 -0
- package/dist/types/selection.d.ts +101 -0
- package/dist/types/selection.js +6 -0
- package/dist/types/selection.js.map +1 -0
- package/dist/types/shared.d.ts +7 -0
- package/dist/types/shared.js +6 -0
- package/dist/types/shared.js.map +1 -0
- package/dist/types/streaming.d.ts +96 -0
- package/dist/types/streaming.js +2 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/utils/debugFilter.js +3 -1
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/format.d.ts +7 -0
- package/dist/utils/format.js +22 -0
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/sanitize.d.ts +14 -0
- package/dist/utils/sanitize.js +37 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/package.json +5 -3
- package/dist/routes/config.d.ts +0 -76
- package/dist/routes/config.js +0 -2187
- package/dist/routes/config.js.map +0 -1
- package/dist/routes/root.js +0 -3158
- package/dist/routes/root.js.map +0 -1
- /package/dist/routes/{root.d.ts → root/index.d.ts} +0 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type { Frame, Page } from "puppeteer-core";
|
|
2
|
+
import type { Nullable, VideoState } from "../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Recovery metrics tracked throughout the stream's lifetime. Returned when the monitor stops for inclusion in termination logs.
|
|
5
|
+
*/
|
|
6
|
+
export interface RecoveryMetrics {
|
|
7
|
+
currentRecoveryStartTime: Nullable<number>;
|
|
8
|
+
currentRecoveryMethod: Nullable<string>;
|
|
9
|
+
pageNavigationAttempts: number;
|
|
10
|
+
pageNavigationSuccesses: number;
|
|
11
|
+
playUnmuteAttempts: number;
|
|
12
|
+
playUnmuteSuccesses: number;
|
|
13
|
+
sourceReloadAttempts: number;
|
|
14
|
+
sourceReloadSuccesses: number;
|
|
15
|
+
tabReplacementAttempts: number;
|
|
16
|
+
tabReplacementSuccesses: number;
|
|
17
|
+
totalRecoveryTimeMs: number;
|
|
18
|
+
}
|
|
19
|
+
export declare const RECOVERY_METHODS: {
|
|
20
|
+
readonly pageNavigation: "page navigation";
|
|
21
|
+
readonly playUnmute: "play/unmute";
|
|
22
|
+
readonly sourceReload: "source reload";
|
|
23
|
+
readonly tabReplacement: "tab replacement";
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Creates a new RecoveryMetrics object with all counters initialized to zero.
|
|
27
|
+
* @returns A fresh RecoveryMetrics object.
|
|
28
|
+
*/
|
|
29
|
+
export declare function createRecoveryMetrics(): RecoveryMetrics;
|
|
30
|
+
/**
|
|
31
|
+
* Gets the total number of recovery attempts across all methods. Iterates over ATTEMPT_FIELDS to sum all attempt counters, ensuring new recovery methods are
|
|
32
|
+
* automatically included without code changes.
|
|
33
|
+
* @param metrics - The recovery metrics object.
|
|
34
|
+
* @returns Total recovery attempts.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getTotalRecoveryAttempts(metrics: RecoveryMetrics): number;
|
|
37
|
+
/**
|
|
38
|
+
* Formats recovery duration from start time to now.
|
|
39
|
+
* @param startTime - The timestamp when recovery started.
|
|
40
|
+
* @returns Formatted duration string like "2.1s".
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatRecoveryDuration(startTime: number): string;
|
|
43
|
+
/**
|
|
44
|
+
* Maps issue category to user-friendly description for logging.
|
|
45
|
+
* @param category - The issue category from getIssueCategory().
|
|
46
|
+
* @returns User-friendly description.
|
|
47
|
+
*/
|
|
48
|
+
export declare function getIssueDescription(category: "paused" | "buffering" | "other"): string;
|
|
49
|
+
/**
|
|
50
|
+
* Maps recovery level to method name.
|
|
51
|
+
* @param level - The recovery level (1, 2, or 3).
|
|
52
|
+
* @returns The recovery method name.
|
|
53
|
+
*/
|
|
54
|
+
export declare function getRecoveryMethod(level: number): string;
|
|
55
|
+
/**
|
|
56
|
+
* Records a recovery attempt in the metrics. Uses the ATTEMPT_FIELDS mapping to find the correct counter field, eliminating the need for if/else chains. This
|
|
57
|
+
* makes adding new recovery methods trivial - just add an entry to ATTEMPT_FIELDS.
|
|
58
|
+
*
|
|
59
|
+
* Note: Tab replacement calls this once per logical attempt even though it may internally retry the onTabReplacement callback. The retry is an implementation
|
|
60
|
+
* detail of executeTabReplacement, not a separate recovery attempt from the monitor's perspective. The circuit breaker likewise records one failure per logical
|
|
61
|
+
* attempt, not per callback invocation.
|
|
62
|
+
* @param metrics - The metrics object to update.
|
|
63
|
+
* @param method - The recovery method being attempted.
|
|
64
|
+
*/
|
|
65
|
+
export declare function recordRecoveryAttempt(metrics: RecoveryMetrics, method: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* Records a successful recovery in the metrics and clears the pending recovery state. Uses the SUCCESS_FIELDS mapping to find the correct counter field,
|
|
68
|
+
* eliminating the need for if/else chains. This makes adding new recovery methods trivial - just add an entry to SUCCESS_FIELDS.
|
|
69
|
+
* @param metrics - The metrics object to update.
|
|
70
|
+
* @param method - The recovery method that succeeded.
|
|
71
|
+
*/
|
|
72
|
+
export declare function recordRecoverySuccess(metrics: RecoveryMetrics, method: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* Capitalizes the first letter of a string.
|
|
75
|
+
* @param str - The string to capitalize.
|
|
76
|
+
* @returns The string with the first letter capitalized.
|
|
77
|
+
*/
|
|
78
|
+
export declare function capitalize(str: string): string;
|
|
79
|
+
/**
|
|
80
|
+
* Formats the recovery metrics summary for the termination log. Uses the SUCCESS_FIELDS mapping to iterate over all recovery methods, eliminating hardcoded
|
|
81
|
+
* checks for each method type. This ensures new recovery methods are automatically included in the summary.
|
|
82
|
+
* @param metrics - The recovery metrics object.
|
|
83
|
+
* @returns Formatted summary string, or empty string if no recoveries occurred.
|
|
84
|
+
*/
|
|
85
|
+
export declare function formatRecoveryMetricsSummary(metrics: RecoveryMetrics): string;
|
|
86
|
+
/**
|
|
87
|
+
* Circuit breaker state for tracking failures within a time window. The circuit breaker prevents endless recovery attempts on fundamentally broken streams by
|
|
88
|
+
* terminating after a threshold of failures within a configured window.
|
|
89
|
+
*/
|
|
90
|
+
export interface CircuitBreakerState {
|
|
91
|
+
firstFailureTime: Nullable<number>;
|
|
92
|
+
totalFailureCount: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Result from checking circuit breaker state.
|
|
96
|
+
*/
|
|
97
|
+
export interface CircuitBreakerResult {
|
|
98
|
+
shouldTrip: boolean;
|
|
99
|
+
totalCount: number;
|
|
100
|
+
withinWindow: boolean;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Records a failure and checks whether the circuit breaker should trip. This centralizes the circuit breaker logic that was previously duplicated in multiple
|
|
104
|
+
* recovery paths. The function updates the state in place and returns whether the breaker should trip.
|
|
105
|
+
* @param state - The circuit breaker state to update.
|
|
106
|
+
* @param now - The current timestamp.
|
|
107
|
+
* @returns Result indicating whether the circuit breaker should trip and diagnostic info.
|
|
108
|
+
*/
|
|
109
|
+
export declare function checkCircuitBreaker(state: CircuitBreakerState, now: number): CircuitBreakerResult;
|
|
110
|
+
/**
|
|
111
|
+
* Resets the circuit breaker state. Called when sustained healthy playback is achieved.
|
|
112
|
+
* @param state - The circuit breaker state to reset.
|
|
113
|
+
*/
|
|
114
|
+
export declare function resetCircuitBreaker(state: CircuitBreakerState): void;
|
|
115
|
+
/**
|
|
116
|
+
* Result from tab replacement recovery. When a browser tab becomes unresponsive (consecutive evaluate timeouts), the recovery handler closes the old tab, creates a
|
|
117
|
+
* new one with fresh capture, and returns the new page and context. The monitor then updates its internal references to continue monitoring the new tab.
|
|
118
|
+
*/
|
|
119
|
+
export interface TabReplacementResult {
|
|
120
|
+
context: Frame | Page;
|
|
121
|
+
page: Page;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Formats the issue type for diagnostic logging. Returns a human-readable string describing what triggered the recovery. Multiple issues can occur simultaneously
|
|
125
|
+
* (e.g., "paused, stalled"), so we collect all applicable issues into a comma-separated list.
|
|
126
|
+
* @param state - The video state object containing paused, ended, hasError, etc.
|
|
127
|
+
* @param isStalled - Whether the video is stalled (not progressing).
|
|
128
|
+
* @param isBuffering - Whether the video is actively buffering.
|
|
129
|
+
* @returns A description of the issue.
|
|
130
|
+
*/
|
|
131
|
+
export declare function formatIssueType(state: VideoState, isStalled: boolean, isBuffering: boolean): string;
|
|
132
|
+
/**
|
|
133
|
+
* Determines the issue category for recovery path selection. This is separate from formatIssueType (which is for logging) because recovery decisions need a single
|
|
134
|
+
* category, not a list of all issues. The categories are:
|
|
135
|
+
* - "paused": Video is paused but not buffering. L1 (play/unmute) may help.
|
|
136
|
+
* - "buffering": Video is buffering or stalled with low readyState. Skip L1, go to L2 (source reload).
|
|
137
|
+
* - "other": Error, ended, or unknown state. Skip L1, go to L2 (source reload).
|
|
138
|
+
* @param state - The video state object.
|
|
139
|
+
* @param isStalled - Whether the video is stalled (not progressing).
|
|
140
|
+
* @param isBuffering - Whether the video is actively buffering.
|
|
141
|
+
* @returns The issue category for recovery path selection.
|
|
142
|
+
*/
|
|
143
|
+
export declare function getIssueCategory(state: VideoState, isStalled: boolean, isBuffering: boolean): "paused" | "buffering" | "other";
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { CONFIG } from "../config/index.js";
|
|
2
|
+
// Recovery method names used in logging. Centralized to ensure consistency across start, success, and failure messages.
|
|
3
|
+
export const RECOVERY_METHODS = {
|
|
4
|
+
pageNavigation: "page navigation",
|
|
5
|
+
playUnmute: "play/unmute",
|
|
6
|
+
sourceReload: "source reload",
|
|
7
|
+
tabReplacement: "tab replacement"
|
|
8
|
+
};
|
|
9
|
+
/* These mappings connect recovery method names to their corresponding counter fields in RecoveryMetrics. Using a mapping pattern instead of if/else chains reduces
|
|
10
|
+
* code duplication, makes adding new recovery methods trivial (add one entry to each map), ensures consistency between attempt and success counting, and provides
|
|
11
|
+
* type safety via the RecoveryMetrics interface.
|
|
12
|
+
*/
|
|
13
|
+
// Maps recovery method names to their attempt counter field names.
|
|
14
|
+
const ATTEMPT_FIELDS = {
|
|
15
|
+
[RECOVERY_METHODS.pageNavigation]: "pageNavigationAttempts",
|
|
16
|
+
[RECOVERY_METHODS.playUnmute]: "playUnmuteAttempts",
|
|
17
|
+
[RECOVERY_METHODS.sourceReload]: "sourceReloadAttempts",
|
|
18
|
+
[RECOVERY_METHODS.tabReplacement]: "tabReplacementAttempts"
|
|
19
|
+
};
|
|
20
|
+
// Maps recovery method names to their success counter field names.
|
|
21
|
+
const SUCCESS_FIELDS = {
|
|
22
|
+
[RECOVERY_METHODS.pageNavigation]: "pageNavigationSuccesses",
|
|
23
|
+
[RECOVERY_METHODS.playUnmute]: "playUnmuteSuccesses",
|
|
24
|
+
[RECOVERY_METHODS.sourceReload]: "sourceReloadSuccesses",
|
|
25
|
+
[RECOVERY_METHODS.tabReplacement]: "tabReplacementSuccesses"
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Creates a new RecoveryMetrics object with all counters initialized to zero.
|
|
29
|
+
* @returns A fresh RecoveryMetrics object.
|
|
30
|
+
*/
|
|
31
|
+
export function createRecoveryMetrics() {
|
|
32
|
+
return {
|
|
33
|
+
currentRecoveryMethod: null,
|
|
34
|
+
currentRecoveryStartTime: null,
|
|
35
|
+
pageNavigationAttempts: 0,
|
|
36
|
+
pageNavigationSuccesses: 0,
|
|
37
|
+
playUnmuteAttempts: 0,
|
|
38
|
+
playUnmuteSuccesses: 0,
|
|
39
|
+
sourceReloadAttempts: 0,
|
|
40
|
+
sourceReloadSuccesses: 0,
|
|
41
|
+
tabReplacementAttempts: 0,
|
|
42
|
+
tabReplacementSuccesses: 0,
|
|
43
|
+
totalRecoveryTimeMs: 0
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Gets the total number of recovery attempts across all methods. Iterates over ATTEMPT_FIELDS to sum all attempt counters, ensuring new recovery methods are
|
|
48
|
+
* automatically included without code changes.
|
|
49
|
+
* @param metrics - The recovery metrics object.
|
|
50
|
+
* @returns Total recovery attempts.
|
|
51
|
+
*/
|
|
52
|
+
export function getTotalRecoveryAttempts(metrics) {
|
|
53
|
+
let total = 0;
|
|
54
|
+
for (const fieldName of Object.values(ATTEMPT_FIELDS)) {
|
|
55
|
+
total += metrics[fieldName];
|
|
56
|
+
}
|
|
57
|
+
return total;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Gets the total number of successful recoveries across all methods. Iterates over SUCCESS_FIELDS to sum all success counters, ensuring new recovery methods
|
|
61
|
+
* are automatically included without code changes.
|
|
62
|
+
* @param metrics - The recovery metrics object.
|
|
63
|
+
* @returns Total successful recoveries.
|
|
64
|
+
*/
|
|
65
|
+
function getTotalRecoverySuccesses(metrics) {
|
|
66
|
+
let total = 0;
|
|
67
|
+
for (const fieldName of Object.values(SUCCESS_FIELDS)) {
|
|
68
|
+
total += metrics[fieldName];
|
|
69
|
+
}
|
|
70
|
+
return total;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Formats recovery duration from start time to now.
|
|
74
|
+
* @param startTime - The timestamp when recovery started.
|
|
75
|
+
* @returns Formatted duration string like "2.1s".
|
|
76
|
+
*/
|
|
77
|
+
export function formatRecoveryDuration(startTime) {
|
|
78
|
+
const durationMs = Date.now() - startTime;
|
|
79
|
+
return (durationMs / 1000).toFixed(1) + "s";
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Maps issue category to user-friendly description for logging.
|
|
83
|
+
* @param category - The issue category from getIssueCategory().
|
|
84
|
+
* @returns User-friendly description.
|
|
85
|
+
*/
|
|
86
|
+
export function getIssueDescription(category) {
|
|
87
|
+
switch (category) {
|
|
88
|
+
case "paused": {
|
|
89
|
+
return "paused";
|
|
90
|
+
}
|
|
91
|
+
case "buffering": {
|
|
92
|
+
return "buffering";
|
|
93
|
+
}
|
|
94
|
+
default: {
|
|
95
|
+
return "stalled";
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Maps recovery level to method name.
|
|
101
|
+
* @param level - The recovery level (1, 2, or 3).
|
|
102
|
+
* @returns The recovery method name.
|
|
103
|
+
*/
|
|
104
|
+
export function getRecoveryMethod(level) {
|
|
105
|
+
switch (level) {
|
|
106
|
+
case 1: {
|
|
107
|
+
return RECOVERY_METHODS.playUnmute;
|
|
108
|
+
}
|
|
109
|
+
case 2: {
|
|
110
|
+
return RECOVERY_METHODS.sourceReload;
|
|
111
|
+
}
|
|
112
|
+
default: {
|
|
113
|
+
return RECOVERY_METHODS.pageNavigation;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Records a recovery attempt in the metrics. Uses the ATTEMPT_FIELDS mapping to find the correct counter field, eliminating the need for if/else chains. This
|
|
119
|
+
* makes adding new recovery methods trivial - just add an entry to ATTEMPT_FIELDS.
|
|
120
|
+
*
|
|
121
|
+
* Note: Tab replacement calls this once per logical attempt even though it may internally retry the onTabReplacement callback. The retry is an implementation
|
|
122
|
+
* detail of executeTabReplacement, not a separate recovery attempt from the monitor's perspective. The circuit breaker likewise records one failure per logical
|
|
123
|
+
* attempt, not per callback invocation.
|
|
124
|
+
* @param metrics - The metrics object to update.
|
|
125
|
+
* @param method - The recovery method being attempted.
|
|
126
|
+
*/
|
|
127
|
+
export function recordRecoveryAttempt(metrics, method) {
|
|
128
|
+
// Cast to the specific field type to handle potential unknown methods at runtime. The mapping ensures valid methods resolve to counter field names.
|
|
129
|
+
const field = ATTEMPT_FIELDS[method];
|
|
130
|
+
if (field !== undefined) {
|
|
131
|
+
metrics[field]++;
|
|
132
|
+
}
|
|
133
|
+
metrics.currentRecoveryStartTime = Date.now();
|
|
134
|
+
metrics.currentRecoveryMethod = method;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Records a successful recovery in the metrics and clears the pending recovery state. Uses the SUCCESS_FIELDS mapping to find the correct counter field,
|
|
138
|
+
* eliminating the need for if/else chains. This makes adding new recovery methods trivial - just add an entry to SUCCESS_FIELDS.
|
|
139
|
+
* @param metrics - The metrics object to update.
|
|
140
|
+
* @param method - The recovery method that succeeded.
|
|
141
|
+
*/
|
|
142
|
+
export function recordRecoverySuccess(metrics, method) {
|
|
143
|
+
// Cast to the specific field type to handle potential unknown methods at runtime. The mapping ensures valid methods resolve to counter field names.
|
|
144
|
+
const field = SUCCESS_FIELDS[method];
|
|
145
|
+
if (field !== undefined) {
|
|
146
|
+
metrics[field]++;
|
|
147
|
+
}
|
|
148
|
+
if (metrics.currentRecoveryStartTime !== null) {
|
|
149
|
+
metrics.totalRecoveryTimeMs += Date.now() - metrics.currentRecoveryStartTime;
|
|
150
|
+
}
|
|
151
|
+
metrics.currentRecoveryStartTime = null;
|
|
152
|
+
metrics.currentRecoveryMethod = null;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Capitalizes the first letter of a string.
|
|
156
|
+
* @param str - The string to capitalize.
|
|
157
|
+
* @returns The string with the first letter capitalized.
|
|
158
|
+
*/
|
|
159
|
+
export function capitalize(str) {
|
|
160
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Formats the recovery metrics summary for the termination log. Uses the SUCCESS_FIELDS mapping to iterate over all recovery methods, eliminating hardcoded
|
|
164
|
+
* checks for each method type. This ensures new recovery methods are automatically included in the summary.
|
|
165
|
+
* @param metrics - The recovery metrics object.
|
|
166
|
+
* @returns Formatted summary string, or empty string if no recoveries occurred.
|
|
167
|
+
*/
|
|
168
|
+
export function formatRecoveryMetricsSummary(metrics) {
|
|
169
|
+
const totalAttempts = getTotalRecoveryAttempts(metrics);
|
|
170
|
+
if (totalAttempts === 0) {
|
|
171
|
+
return "No recoveries needed.";
|
|
172
|
+
}
|
|
173
|
+
const totalSuccesses = getTotalRecoverySuccesses(metrics);
|
|
174
|
+
// Build the breakdown of recovery methods used by iterating over all methods in SUCCESS_FIELDS. This automatically includes any new recovery methods added to
|
|
175
|
+
// the mapping without requiring code changes here.
|
|
176
|
+
const parts = [];
|
|
177
|
+
for (const [methodName, fieldName] of Object.entries(SUCCESS_FIELDS)) {
|
|
178
|
+
const count = metrics[fieldName];
|
|
179
|
+
if (count > 0) {
|
|
180
|
+
parts.push(String(count) + "× " + methodName);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Calculate average recovery time.
|
|
184
|
+
const avgTimeMs = totalSuccesses > 0 ? metrics.totalRecoveryTimeMs / totalSuccesses : 0;
|
|
185
|
+
const avgTimeStr = (avgTimeMs / 1000).toFixed(1) + "s";
|
|
186
|
+
// Format: "Recoveries: 8 (5× source reload, 3× page navigation), avg 4.2s."
|
|
187
|
+
if (parts.length > 0) {
|
|
188
|
+
return "Recoveries: " + String(totalSuccesses) + " (" + parts.join(", ") + "), avg " + avgTimeStr + ".";
|
|
189
|
+
}
|
|
190
|
+
// Edge case: attempts but no successes (stream terminated before recovery completed).
|
|
191
|
+
return "Recoveries: " + String(totalAttempts) + " attempted, 0 succeeded.";
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Records a failure and checks whether the circuit breaker should trip. This centralizes the circuit breaker logic that was previously duplicated in multiple
|
|
195
|
+
* recovery paths. The function updates the state in place and returns whether the breaker should trip.
|
|
196
|
+
* @param state - The circuit breaker state to update.
|
|
197
|
+
* @param now - The current timestamp.
|
|
198
|
+
* @returns Result indicating whether the circuit breaker should trip and diagnostic info.
|
|
199
|
+
*/
|
|
200
|
+
export function checkCircuitBreaker(state, now) {
|
|
201
|
+
// Record this failure.
|
|
202
|
+
state.totalFailureCount++;
|
|
203
|
+
state.firstFailureTime ??= now;
|
|
204
|
+
// Check if we're within the failure window.
|
|
205
|
+
const withinWindow = (now - state.firstFailureTime) < CONFIG.recovery.circuitBreakerWindow;
|
|
206
|
+
// Determine if we should trip.
|
|
207
|
+
const shouldTrip = withinWindow && (state.totalFailureCount >= CONFIG.recovery.circuitBreakerThreshold);
|
|
208
|
+
// Reset the window if we're outside it (start fresh count).
|
|
209
|
+
if (!withinWindow) {
|
|
210
|
+
state.totalFailureCount = 1;
|
|
211
|
+
state.firstFailureTime = now;
|
|
212
|
+
}
|
|
213
|
+
return { shouldTrip, totalCount: state.totalFailureCount, withinWindow };
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Resets the circuit breaker state. Called when sustained healthy playback is achieved.
|
|
217
|
+
* @param state - The circuit breaker state to reset.
|
|
218
|
+
*/
|
|
219
|
+
export function resetCircuitBreaker(state) {
|
|
220
|
+
state.firstFailureTime = null;
|
|
221
|
+
state.totalFailureCount = 0;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Formats the issue type for diagnostic logging. Returns a human-readable string describing what triggered the recovery. Multiple issues can occur simultaneously
|
|
225
|
+
* (e.g., "paused, stalled"), so we collect all applicable issues into a comma-separated list.
|
|
226
|
+
* @param state - The video state object containing paused, ended, hasError, etc.
|
|
227
|
+
* @param isStalled - Whether the video is stalled (not progressing).
|
|
228
|
+
* @param isBuffering - Whether the video is actively buffering.
|
|
229
|
+
* @returns A description of the issue.
|
|
230
|
+
*/
|
|
231
|
+
export function formatIssueType(state, isStalled, isBuffering) {
|
|
232
|
+
const issues = [];
|
|
233
|
+
if (state.paused) {
|
|
234
|
+
issues.push("paused");
|
|
235
|
+
}
|
|
236
|
+
if (state.ended) {
|
|
237
|
+
issues.push("ended");
|
|
238
|
+
}
|
|
239
|
+
if (state.error) {
|
|
240
|
+
issues.push("error");
|
|
241
|
+
}
|
|
242
|
+
// Distinguish between buffering (temporary, network-related) and stalled (stopped for unknown reason). Both result in no progression, but buffering indicates the
|
|
243
|
+
// player is actively trying to get more data.
|
|
244
|
+
if (isStalled && isBuffering) {
|
|
245
|
+
issues.push("buffering");
|
|
246
|
+
}
|
|
247
|
+
if (isStalled && !isBuffering) {
|
|
248
|
+
issues.push("stalled");
|
|
249
|
+
}
|
|
250
|
+
return issues.length > 0 ? issues.join(", ") : "unknown";
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Determines the issue category for recovery path selection. This is separate from formatIssueType (which is for logging) because recovery decisions need a single
|
|
254
|
+
* category, not a list of all issues. The categories are:
|
|
255
|
+
* - "paused": Video is paused but not buffering. L1 (play/unmute) may help.
|
|
256
|
+
* - "buffering": Video is buffering or stalled with low readyState. Skip L1, go to L2 (source reload).
|
|
257
|
+
* - "other": Error, ended, or unknown state. Skip L1, go to L2 (source reload).
|
|
258
|
+
* @param state - The video state object.
|
|
259
|
+
* @param isStalled - Whether the video is stalled (not progressing).
|
|
260
|
+
* @param isBuffering - Whether the video is actively buffering.
|
|
261
|
+
* @returns The issue category for recovery path selection.
|
|
262
|
+
*/
|
|
263
|
+
export function getIssueCategory(state, isStalled, isBuffering) {
|
|
264
|
+
// Error and ended states take priority - these need aggressive recovery.
|
|
265
|
+
if (state.error || state.ended) {
|
|
266
|
+
return "other";
|
|
267
|
+
}
|
|
268
|
+
// Buffering (readyState < 3 with active network) needs source reload, not play/unmute.
|
|
269
|
+
if (isBuffering) {
|
|
270
|
+
return "buffering";
|
|
271
|
+
}
|
|
272
|
+
// Stalled with low readyState is effectively buffering.
|
|
273
|
+
if (isStalled && (state.readyState < 3)) {
|
|
274
|
+
return "buffering";
|
|
275
|
+
}
|
|
276
|
+
// Paused state (without buffering) may respond to play/unmute.
|
|
277
|
+
if (state.paused) {
|
|
278
|
+
return "paused";
|
|
279
|
+
}
|
|
280
|
+
// Stalled without low readyState - unknown cause, treat as buffering.
|
|
281
|
+
if (isStalled) {
|
|
282
|
+
return "buffering";
|
|
283
|
+
}
|
|
284
|
+
return "other";
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/streaming/recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import type { FFmpegProcess } from "../utils/index.js";
|
|
|
4
4
|
import type { FMP4SegmenterResult } from "./fmp4Segmenter.js";
|
|
5
5
|
import type { Page } from "puppeteer-core";
|
|
6
6
|
import type { Readable } from "node:stream";
|
|
7
|
-
import type { RecoveryMetrics } from "./
|
|
7
|
+
import type { RecoveryMetrics } from "./recovery.js";
|
|
8
8
|
/**
|
|
9
9
|
* HLS segment and playlist storage for a stream. This includes the fMP4 initialization segment (codec configuration), media segments (.m4s files), and the current
|
|
10
10
|
* playlist content. The playlistReady promise allows callers to wait for the first playlist to be generated.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Channel, Nullable, ResolvedSiteProfile, UrlValidation } from "../types/index.js";
|
|
2
2
|
import type { Frame, Page } from "puppeteer-core";
|
|
3
|
-
import type { RecoveryMetrics, TabReplacementResult } from "./
|
|
3
|
+
import type { RecoveryMetrics, TabReplacementResult } from "./recovery.js";
|
|
4
4
|
import type { FFmpegProcess } from "../utils/index.js";
|
|
5
5
|
import type { Readable } from "node:stream";
|
|
6
6
|
/**
|
package/dist/streaming/setup.js
CHANGED
|
@@ -308,6 +308,7 @@ export async function createPageWithCapture(options) {
|
|
|
308
308
|
}
|
|
309
309
|
// Navigate and set up playback. For noVideo profiles, just navigate without video setup.
|
|
310
310
|
let context;
|
|
311
|
+
let strategyDirectTune = false;
|
|
311
312
|
let usedDirectUrl = false;
|
|
312
313
|
try {
|
|
313
314
|
if (!profile.noVideo) {
|
|
@@ -336,6 +337,7 @@ export async function createPageWithCapture(options) {
|
|
|
336
337
|
}, PLAYBACK_INIT_TIMEOUT);
|
|
337
338
|
})
|
|
338
339
|
]);
|
|
340
|
+
strategyDirectTune = tuneResult.directTune ?? false;
|
|
339
341
|
context = tuneResult.context;
|
|
340
342
|
}
|
|
341
343
|
else {
|
|
@@ -370,7 +372,7 @@ export async function createPageWithCapture(options) {
|
|
|
370
372
|
return {
|
|
371
373
|
captureStream: outputStream,
|
|
372
374
|
context,
|
|
373
|
-
directTune: usedDirectUrl || !isChannelSelectionProfile(profile),
|
|
375
|
+
directTune: usedDirectUrl || strategyDirectTune || !isChannelSelectionProfile(profile),
|
|
374
376
|
ffmpegProcess,
|
|
375
377
|
page,
|
|
376
378
|
rawCaptureStream
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/streaming/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/streaming/setup.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,uBAAuB,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEnK,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACtI,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAI5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,oFAAoF;AACpF,MAAM,qBAAqB,GAAG,iCAAiC,CAAC;AAEhE,sKAAsK;AACtK,yDAAyD;AACzD,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAE5D,mKAAmK;AACnK,iKAAiK;AACjK,kDAAkD;AAClD,IAAI,YAAY,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAEpD,iKAAiK;AACjK,0DAA0D;AAC1D,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAqGlC;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAEzB,UAAU,CAAS;IACnB,WAAW,CAAS;IAEpC,YAAY,OAAe,EAAE,UAAkB,EAAE,WAAmB;QAElE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAoDD,yBAAyB;AAEzB;;;;GAIG;AACH,SAAS,iBAAiB;IAExB,MAAM,KAAK,GAAG,sCAAsC,CAAC;IAErD,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAE1B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAA+B,EAAE,GAAuB;IAEvF,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IAEtC,iHAAiH;IACjH,IAAG,WAAW,EAAE,CAAC;QAEf,OAAO,CAAE,WAAW,EAAE,GAAG,EAAE,SAAS,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,iEAAiE;IACjE,IAAG,GAAG,EAAE,CAAC;QAEP,OAAO,CAAE,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,6IAA6I;IAC7I,OAAO,CAAE,UAAU,EAAE,SAAS,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,kBAAkB;AAElB;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IAEvD,mEAAmE;IACnE,IAAG,CAAC,GAAG,EAAE,CAAC;QAER,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5B,gJAAgJ;QAChJ,+FAA+F;QAC/F,MAAM,gBAAgB,GAAG,CAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAE,CAAC;QAE1D,IAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAE/C,OAAO,EAAE,MAAM,EAAE,CAAE,wBAAwB,EAAE,MAAM,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1F,CAAC;QAED,0JAA0J;QAC1J,mDAAmD;QACnD,IAAG,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAE/B,OAAO,EAAE,MAAM,EAAE,qCAAqC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACzE,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAM,MAAM,EAAE,CAAC;QAEf,+FAA+F;QAC/F,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzD,CAAC;AACH,CAAC;AAED,6BAA6B;AAE7B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAqC;IAE/E,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;IACpC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEnE,uBAAuB;IACvB,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAErC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE1B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAE9B,yJAAyJ;IACzJ,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,KAAK,QAAQ,CAAC;IAC5D,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAElF,6JAA6J;IAC7J,4EAA4E;IAC5E,IAAI,YAAsB,CAAC;IAC3B,IAAI,gBAAgB,GAAuB,IAAI,CAAC;IAChD,IAAI,aAAa,GAA4B,IAAI,CAAC;IAElD,6JAA6J;IAC7J,6GAA6G;IAC7G,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,mBAAmB,GAAe,GAAG,EAAE,GAAoE,CAAC,CAAC;IAEjH,MAAM,kBAAkB,GAAG,GAAS,EAAE;QAEpC,IAAG,CAAC,oBAAoB,EAAE,CAAC;YAEzB,oBAAoB,GAAG,IAAI,CAAC;YAC5B,mBAAmB,EAAE,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IAEF,mCAAmC;IACnC,IAAI,CAAC;QAEH,MAAM,aAAa,GAAG;YAEpB,KAAK,EAAE,IAAI;YACX,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,kBAAkB;YACvD,QAAQ,EAAE,eAAe;YACzB,KAAK,EAAE,IAAI;YACX,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,kBAAkB;YACvD,gBAAgB,EAAE;gBAEhB,SAAS,EAAE;oBAET,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM;oBAC9C,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK;oBAC5C,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oBACpE,SAAS,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM;oBAC9C,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK;iBAC7C;aACF;SAC4C,CAAC;QAEhD,sJAAsJ;QACtJ,0JAA0J;QAC1J,+FAA+F;QAC/F,MAAM,eAAe,GAAG,YAAY,CAAC;QAErC,YAAY,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAE3C,mBAAmB,GAAG,OAAO,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,+JAA+J;QAC/J,iIAAiI;QACjI,IAAI,CAAC;YAEH,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,eAAe;gBACf,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBAE/B,UAAU,CAAC,GAAG,EAAE;wBAEd,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;oBACrD,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;gBACzC,CAAC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAAC,OAAM,KAAK,EAAE,CAAC;YAEd,mFAAmF;YACnF,kBAAkB,EAAE,CAAC;YAErB,MAAM,KAAK,CAAC;QACd,CAAC;QAED,uJAAuJ;QACvJ,wGAAwG;QACxG,IAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAEnB,kBAAkB,EAAE,CAAC;YACrB,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE5B,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC;YAEnD,IAAG,UAAU,IAAI,uBAAuB,EAAE,CAAC;gBAEzC,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACnF,CAAC;YAED,OAAO,MAAM,qBAAqB,CAAC,EAAE,GAAG,OAAO,EAAE,kBAAkB,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAErD,uJAAuJ;QACvJ,wEAAwE;QACxE,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAA0F,CAAC,CAAC,CAAC;QAE3J,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAEtD,UAAU,CAAC,GAAG,EAAE;gBAEd,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;YACxD,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAE,aAAa,EAAE,cAAc,CAAE,CAAC,CAAC;QAErE,gFAAgF;QAChF,gBAAgB,GAAG,MAA6B,CAAC;QAEjD,qIAAqI;QACrI,IAAG,SAAS,EAAE,CAAC;YAEb,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE;gBAExE,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAE3D,IAAG,aAAa,EAAE,CAAC;oBAEjB,aAAa,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEtB,aAAa,GAAG,MAAM,CAAC;YAEvB,8EAA8E;YAC9E,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAElC,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBAExC,IAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAElC,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,gCAAgC,EAAE,YAAY,CAAC,CAAC;gBAChF,CAAC;qBAAM,CAAC;oBAEN,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC;oBACzD,MAAM,CAAC,IAAI,EAAE,CAAC;oBAEd,IAAG,aAAa,EAAE,CAAC;wBAEjB,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,6JAA6J;YAC7J,iGAAiG;YACjG,QAAQ,CAAC,MAA6B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAE7E,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBAExC,+IAA+I;gBAC/I,IAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAE1H,OAAO;gBACT,CAAC;gBAED,8CAA8C;gBAC9C,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;gBACvD,MAAM,CAAC,IAAI,EAAE,CAAC;gBAEd,IAAG,aAAa,EAAE,CAAC;oBAEjB,aAAa,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,2EAA2E;YAC3E,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/B,CAAC;aAAM,CAAC;YAEN,8HAA8H;YAC9H,YAAY,GAAG,gBAAgB,CAAC;QAClC,CAAC;IACH,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,qIAAqI;QACrI,IAAG,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAEnD,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAEpB,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAA+C,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAExC,2JAA2J;QAC3J,0JAA0J;QAC1J,oIAAoI;QACpI,IAAG,YAAY,CAAC,QAAQ,CAAC,4CAA4C,CAAC,EAAE,CAAC;YAEvE,GAAG,CAAC,KAAK,CAAC,0IAA0I;gBAClJ,uEAAuE,CAAC,CAAC;YAE3E,kBAAkB,EAAE,CAAC;YAErB,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAEvC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,qFAAqF;QACrF,kBAAkB,EAAE,CAAC;QAErB,MAAM,KAAK,CAAC;IACd,CAAC;IAED,yFAAyF;IACzF,IAAI,OAAqB,CAAC;IAC1B,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,IAAI,CAAC;QAEH,IAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAEpB,uJAAuJ;YACvJ,iIAAiI;YACjI,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAExD,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC;YAE5B,MAAM,aAAa,GAAG,SAAS,IAAI,GAAG,CAAC;YAEvC,4JAA4J;YAC5J,8JAA8J;YAC9J,oHAAoH;YACpH,MAAM,cAAc,CAClB,KAAK,IAAmB,EAAE;gBAExB,MAAM,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YACrD,CAAC,EACD,MAAM,CAAC,SAAS,CAAC,oBAAoB,EACrC,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAClC,sBAAsB,GAAG,aAAa,EACtC,SAAS,EACT,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CACtB,CAAC;YAEF,qJAAqJ;YACrJ,wJAAwJ;YACxJ,2JAA2J;YAC3J,sJAAsJ;YACtJ,uEAAuE;YACvE,MAAM,qBAAqB,GAAG,KAAK,CAAC;YAEpC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBACpC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC;gBAChD,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBAE/B,UAAU,CAAC,GAAG,EAAE;wBAEd,MAAM,CAAC,IAAI,KAAK,CAAC,0CAA0C,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACxG,CAAC,EAAE,qBAAqB,CAAC,CAAC;gBAC5B,CAAC,CAAC;aACH,CAAC,CAAC;YAEH,kBAAkB,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;YACpD,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAC/B,CAAC;aAAM,CAAC;YAEN,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,wGAAwG;QACxG,IAAG,aAAa,EAAE,CAAC;YAEjB,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,oJAAoJ;QACpJ,IAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAE/B,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,IAAG,aAAa,EAAE,CAAC;YAEjB,aAAa,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAED,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAEpB,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAA+C,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,yJAAyJ;QACzJ,8DAA8D;QAC9D,qBAAqB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAgD,CAAC,CAAC,CAAC;QAEtF,MAAM,KAAK,CAAC;IACd,CAAC;IAED,8BAA8B;IAC9B,MAAM,uBAAuB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtD,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,uCAAuC,EAAE,cAAc,EAAE,CAAC,CAAC;IAEvF,OAAO;QAEL,aAAa,EAAE,YAAY;QAC3B,OAAO;QACP,UAAU,EAAE,aAAa,IAAI,kBAAkB,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;QACtF,aAAa;QACb,IAAI;QACJ,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,2BAA2B;AAE3B;;;;;;;;GAQG;AACH,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAE3C,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEzF,OAAO,QAAQ,CAAC,GAAG,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,gBAAgB;AAEhB;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B,EAAE,cAA0B;IAEvF,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAE9I,sEAAsE;IACtE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAE7B,yJAAyJ;IACzJ,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAE9C,uBAAuB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAEnD,6JAA6J;IAC7J,kJAAkJ;IAClJ,IAAI,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEpF,IAAG,aAAa,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAE3C,MAAM,YAAY,GAAG,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC;QAEzC,IAAG,YAAY,EAAE,CAAC;YAEhB,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAE3D,IAAG,WAAW,IAAI,CAAC,WAAW,KAAK,YAAY,CAAC,EAAE,CAAC;gBAEjD,MAAM,cAAc,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAErD,IAAG,cAAc,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBAE5C,aAAa,GAAG,cAAc,CAAC;oBAE/B,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;gBAChJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;IACpC,IAAI,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IAE5C,wDAAwD;IACxD,OAAO,oBAAoB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE;QAEpF,uCAAuC;QACvC,IAAG,eAAe,EAAE,CAAC;YAEnB,MAAM,aAAa,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAG,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAE3C,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;gBAC1C,WAAW,GAAG,eAAe,CAAC;gBAE9B,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,eAAe,CAAC,CAAC;YACnG,CAAC;iBAAM,CAAC;gBAEN,GAAG,CAAC,IAAI,CAAC,wDAAwD,EAAE,eAAe,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,IAAG,OAAO,EAAE,CAAC;YAEX,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1C,CAAC;QAED,6JAA6J;QAC7J,sJAAsJ;QACtJ,IAAG,eAAe,EAAE,CAAC;YAEnB,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,CAAC;QAC5C,CAAC;QAED,2JAA2J;QAC3J,mIAAmI;QACnI,IAAG,WAAW,IAAI,aAAa,EAAE,CAAC;YAEhC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3F,CAAC;QAED,+IAA+I;QAC/I,MAAM,eAAe,GAAG,OAAO,EAAE,IAAI,IAAI,WAAW,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;QAE3E,oGAAoG;QACpG,MAAM,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAEjD,sJAAsJ;QACtJ,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE5I,gBAAgB;QAChB,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAErB,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC;YAExF,MAAM,IAAI,gBAAgB,CACxB,CAAE,eAAe,EAAE,UAAU,CAAC,MAAM,IAAI,eAAe,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAClE,GAAG,EACH,UAAU,CAAC,MAAM,IAAI,cAAc,CACpC,CAAC;QACJ,CAAC;QAED,iCAAiC;QACjC,IAAG,cAAc,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;YAE7D,GAAG,CAAC,IAAI,CAAC,6DAA6D,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAEjI,MAAM,IAAI,gBAAgB,CACxB,kCAAkC,EAClC,GAAG,EACH,CAAE,8BAA8B,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,6BAA6B,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAC1H,CAAC;QACJ,CAAC;QAED,mKAAmK;QACnK,IAAI,aAA0C,CAAC;QAE/C,IAAI,CAAC;YAEH,aAAa,GAAG,MAAM,qBAAqB,CAAC;gBAE1C,OAAO,EAAE,eAAe;gBACxB,aAAa,EAAE,cAAc;gBAC7B,OAAO;gBACP,QAAQ;gBACR,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QAAC,OAAM,KAAK,EAAE,CAAC;YAEd,wFAAwF;YACxF,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAEvH,IAAG,CAAC,QAAQ,EAAE,CAAC;gBAEb,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;YAClE,CAAC;YAED,4JAA4J;YAC5J,2GAA2G;YAC3G,MAAM,oBAAoB,GAAG,CAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,CAAE,CAAC;YAChF,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAE9F,MAAM,IAAI,gBAAgB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QACrG,CAAC;QAED,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,aAAa,CAAC;QAEpG,0CAA0C;QAC1C,MAAM,iBAAiB,GAAsB;YAE3C,WAAW,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI;YAClC,eAAe;YACf,YAAY;YACZ,SAAS;SACV,CAAC;QAEF,4CAA4C;QAC5C,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAEtI,iHAAiH;QACjH,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;YAExC,IAAG,gBAAgB,EAAE,CAAC;gBAEpB,OAAO;YACT,CAAC;YAED,gBAAgB,GAAG,IAAI,CAAC;YAExB,iCAAiC;YACjC,WAAW,EAAE,CAAC;YAEd,wJAAwJ;YACxJ,wJAAwJ;YACxJ,IAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;gBAE/B,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;YAED,qDAAqD;YACrD,IAAG,aAAa,EAAE,CAAC;gBAEjB,aAAa,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YAED,iCAAiC;YACjC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE5B,6EAA6E;YAC7E,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAEpB,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBAEpC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,sCAAsC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3F,CAAC,CAAC,CAAC;YACL,CAAC;YAED,kCAAkC;YAClC,MAAM,qBAAqB,EAAE,CAAC;QAChC,CAAC,CAAC;QAEF,2BAA2B;QAC3B,OAAO;YAEL,aAAa;YACb,WAAW,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI;YAClC,OAAO;YACP,UAAU;YACV,aAAa;YACb,eAAe;YACf,IAAI;YACJ,OAAO;YACP,WAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,SAAS;YACT,WAAW;YACX,QAAQ;YACR,GAAG;SACJ,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gCAAgC;AAEhC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IAEvC,MAAM,kBAAkB,GAAG,CAAC,CAAC;IAC7B,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAC/B,MAAM,aAAa,GAAG,IAAI,CAAC;IAE3B,KAAI,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAAC;QAE9D,8IAA8I;QAC9I,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAExD,mBAAmB;QACnB,IAAG,MAAM,KAAK,IAAI,EAAE,CAAC;YAEnB,OAAO;QACT,CAAC;QAED,yJAAyJ;QACzJ,0JAA0J;QAC1J,gCAAgC;QAChC,IAAG,MAAM,CAAC,QAAQ,CAAC,4CAA4C,CAAC,EAAE,CAAC;YAEjE,GAAG,CAAC,KAAK,CAAC,0IAA0I;gBAClJ,gDAAgD,CAAC,CAAC;YAEpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,gFAAgF;QAChF,IAAG,OAAO,GAAG,kBAAkB,EAAE,CAAC;YAEhC,GAAG,CAAC,IAAI,CAAC,6DAA6D,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAC;YAEvI,mGAAmG;YACnG,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YAEN,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,MAAM,CAAC,kBAAkB,CAAC,GAAG,aAAa,GAAG,MAAM,CAAC,CAAC;QACrH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAAC,OAAe;IAEhD,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAErC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE1B,IAAI,CAAC;QAEH,4JAA4J;QAC5J,4GAA4G;QAC5G,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,KAAK,QAAQ,CAAC;QAC5D,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAElF,MAAM,aAAa,GAAG;YAEpB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,eAAe;YACzB,KAAK,EAAE,IAAI;YACX,gBAAgB,EAAE;gBAEhB,SAAS,EAAE;oBAET,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM;oBAC9C,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK;oBAC5C,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM;oBAC9C,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK;iBAC7C;aACF;SAC4C,CAAC;QAEhD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC;YAC9B,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAE/B,UAAU,CAAC,GAAG,EAAE;oBAEd,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBAChD,CAAC,EAAE,OAAO,CAAC,CAAC;YACd,CAAC,CAAC;SACH,CAAC,CAAC;QAEH,qJAAqJ;QACrJ,MAAM,QAAQ,GAAG,MAA6B,CAAC;QAE/C,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEnB,mJAAmJ;QACnJ,0JAA0J;QAC1J,mHAAmH;QACnH,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjB,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAEpB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAExC,0BAA0B;QAC1B,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAEpB,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAA+C,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { HealthEvent, HealthSnapshot } from "../config/health.js";
|
|
1
2
|
import type { ClientTypeCount } from "./clients.js";
|
|
2
3
|
import type { Nullable } from "../types/index.js";
|
|
3
4
|
/**
|
|
@@ -53,13 +54,14 @@ export interface SystemStatus {
|
|
|
53
54
|
* Initial snapshot sent when an SSE client connects.
|
|
54
55
|
*/
|
|
55
56
|
export interface StatusSnapshot {
|
|
57
|
+
health: HealthSnapshot;
|
|
56
58
|
streams: StreamStatus[];
|
|
57
59
|
system: SystemStatus;
|
|
58
60
|
}
|
|
59
61
|
/**
|
|
60
62
|
* Event types emitted by the status emitter.
|
|
61
63
|
*/
|
|
62
|
-
export type StatusEventType = "snapshot" | "streamAdded" | "streamHealthChanged" | "streamRemoved" | "systemStatusChanged";
|
|
64
|
+
export type StatusEventType = "healthChanged" | "snapshot" | "streamAdded" | "streamHealthChanged" | "streamRemoved" | "systemStatusChanged";
|
|
63
65
|
/**
|
|
64
66
|
* Creates the initial StreamStatus object for a new stream. This provides a consistent starting state with all health metrics at their default values.
|
|
65
67
|
* @param options - The stream initialization options.
|
|
@@ -120,6 +122,6 @@ export declare function removeStreamStatus(streamId: number): void;
|
|
|
120
122
|
* @param callback - Function to call when a status event is emitted.
|
|
121
123
|
* @returns A function to unsubscribe the callback.
|
|
122
124
|
*/
|
|
123
|
-
export declare function subscribeToStatus(callback: (event: StatusEventType, data: StreamStatus | SystemStatus | StatusSnapshot | {
|
|
125
|
+
export declare function subscribeToStatus(callback: (event: StatusEventType, data: HealthEvent | StreamStatus | SystemStatus | StatusSnapshot | {
|
|
124
126
|
id: number;
|
|
125
127
|
}) => void): () => void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getHealthSnapshot, subscribeToHealth } from "../config/health.js";
|
|
1
2
|
import { EventEmitter } from "events";
|
|
2
3
|
/* A singleton EventEmitter that broadcasts status updates to all subscribed SSE clients. The emitter maintains current state for all streams, allowing new clients
|
|
3
4
|
* to receive a snapshot of current status immediately upon connecting.
|
|
@@ -91,6 +92,7 @@ export function updateSystemStatus(status) {
|
|
|
91
92
|
*/
|
|
92
93
|
export function getStatusSnapshot() {
|
|
93
94
|
return {
|
|
95
|
+
health: getHealthSnapshot(),
|
|
94
96
|
streams: Array.from(streamStatuses.values()),
|
|
95
97
|
system: cachedSystemStatus ?? {
|
|
96
98
|
browser: { connected: false, pageCount: 0 },
|
|
@@ -129,11 +131,14 @@ export function subscribeToStatus(callback) {
|
|
|
129
131
|
statusEmitter.on("streamRemoved", streamRemovedHandler);
|
|
130
132
|
statusEmitter.on("streamHealthChanged", streamHealthChangedHandler);
|
|
131
133
|
statusEmitter.on("systemStatusChanged", systemStatusChangedHandler);
|
|
134
|
+
// Forward health events from the health emitter through the same SSE connection. This avoids a separate SSE endpoint for health updates.
|
|
135
|
+
const unsubscribeHealth = subscribeToHealth((event) => { callback("healthChanged", event); });
|
|
132
136
|
return () => {
|
|
133
137
|
statusEmitter.off("streamAdded", streamAddedHandler);
|
|
134
138
|
statusEmitter.off("streamRemoved", streamRemovedHandler);
|
|
135
139
|
statusEmitter.off("streamHealthChanged", streamHealthChangedHandler);
|
|
136
140
|
statusEmitter.off("systemStatusChanged", systemStatusChangedHandler);
|
|
141
|
+
unsubscribeHealth();
|
|
137
142
|
};
|
|
138
143
|
}
|
|
139
144
|
//# sourceMappingURL=statusEmitter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusEmitter.js","sourceRoot":"","sources":["../../src/streaming/statusEmitter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"statusEmitter.js","sourceRoot":"","sources":["../../src/streaming/statusEmitter.ts"],"names":[],"mappings":"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"}
|