/** * @class * @description Object that stores the plugin settings. * @exports BalancerOptions */ export default class BalancerOptions { balancerAnalyticsEnabled?: boolean; profileName?: string; bucketName?: string; isLive?: boolean; videoId?: string; resource?: string; updateTime?: number; reportTime?: number; debug?: boolean; isDev?: boolean; timeBetweenHeads?: number; latencyProbe?: { callTimeoutMilliseconds?: number; }; host?: string; forceDecisionCall?: boolean; domainWhitelist?: string[]; domainWhitelistRegex?: string[]; urlBlacklistRegex?: string[]; probeOnlyOnBanned?: boolean; /** * Declares the stream as Low-Latency HLS, forcing the LL-safe profile without waiting for * detection: no mid-stream trials, no background probing, no manifest host rotation, and * per-request deadlines derived from the part duration. Detection sets the same profile on its * own when the playlist carries part-level tags, so this is only needed when an integrator wants * it applied from the very first request. */ /** * Query-parameter names ignored when deciding whether two manifest URLs are the same content, * both for decision-reload throttling and for detecting a new video — the URL sent on the wire is * never modified. Defaults to common cache-busters (`_`, `cb`, `rnd`, `t`); leave out any of them * that your origin uses to select content. The LL-HLS delivery directives are always ignored and * are not affected by this list. */ ephemeralQueryParams?: string[]; lowLatencyMode?: boolean; /** * Re-enables manifest host rotation during a low-latency session. Off by default there: the * playlist is the stream's clock, and consecutive blocking reloads answered by different CDN * copies of that clock can disagree about the newest part. Set to true only when every CDN * origin is known to publish playlists in lockstep. Standard streams ignore this flag — * `balanceManifests` alone governs them. */ balanceManifestsOnLowLatency?: boolean; noProbing?: boolean; probingPolicy?: 'GET' | 'HEAD' | 'GET_RETRY_HEAD'; allowSpecialDelimitersInUrl?: boolean; signManifestUsingApi?: boolean; balanceManifests?: boolean; balanceAudio?: boolean; balanceSubtitles?: boolean; dynamicRules?: dynamicRules; jwtToken?: string; jwtAuthType?: string; stripPathForDomainRegex?: string[]; stripPathRegex?: string; chunkExpirationProbingMs?: number; authData?: { [cdnName: string]: { [key: string]: any; }; }; reportSyntheticCdns?: boolean; providerSource?: 'decision' | 'decisionPlusExternal'; cdnTimeout?: { connectTimeoutMilliseconds?: number; readTimeoutMilliseconds?: number; callTimeoutMilliseconds?: number; totalTimeoutMilliseconds?: number; }; latencyTrialTrigger?: { minRelativeImprovement?: number; minAbsoluteImprovementMs?: number; }; peakSampler?: { warmupMs?: number; tickMs?: number; minReadsForEarlySample?: number; minBytesPerCall?: number; }; firstChunkProbe?: { enabled?: boolean; connectTimeoutMs?: number; totalDownloadTimeoutMs?: number; safetyFactor?: number; minSamplesBeforeAbort?: number; onlyForVideoSegments?: boolean; }; preJoinAbortGuard?: { enabled?: boolean; minMediaSegments?: number; keepClosedAfterJoin?: boolean; }; transparentRetry?: boolean; trial?: { onlyForVideoSegments?: boolean; }; /** * Constructs options object. * @param {constructionOptions} options JSON with the options to construct the balancer. */ constructor(options?: constructionOptions); }