googlevideo 2.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/LICENSE +9 -9
  2. package/README.md +127 -66
  3. package/dist/protos/generated/misc/common.d.ts +180 -21
  4. package/dist/protos/generated/misc/common.js +277 -147
  5. package/dist/protos/generated/misc/common.js.map +1 -0
  6. package/dist/protos/generated/video_streaming/buffered_range.d.ts +10 -25
  7. package/dist/protos/generated/video_streaming/buffered_range.js +21 -166
  8. package/dist/protos/generated/video_streaming/buffered_range.js.map +1 -0
  9. package/dist/protos/generated/video_streaming/client_abr_state.d.ts +34 -45
  10. package/dist/protos/generated/video_streaming/client_abr_state.js +209 -350
  11. package/dist/protos/generated/video_streaming/client_abr_state.js.map +1 -0
  12. package/dist/protos/generated/video_streaming/crypto_params.d.ts +2 -24
  13. package/dist/protos/generated/video_streaming/crypto_params.js +2 -86
  14. package/dist/protos/generated/video_streaming/crypto_params.js.map +1 -0
  15. package/dist/protos/generated/video_streaming/format_initialization_metadata.d.ts +6 -21
  16. package/dist/protos/generated/video_streaming/format_initialization_metadata.js +32 -95
  17. package/dist/protos/generated/video_streaming/format_initialization_metadata.js.map +1 -0
  18. package/dist/protos/generated/video_streaming/format_selection_config.d.ts +12 -0
  19. package/dist/protos/generated/video_streaming/format_selection_config.js +68 -0
  20. package/dist/protos/generated/video_streaming/format_selection_config.js.map +1 -0
  21. package/dist/protos/generated/video_streaming/innertube_request.d.ts +25 -0
  22. package/dist/protos/generated/video_streaming/innertube_request.js +186 -0
  23. package/dist/protos/generated/video_streaming/innertube_request.js.map +1 -0
  24. package/dist/protos/generated/video_streaming/live_metadata.d.ts +20 -0
  25. package/dist/protos/generated/video_streaming/live_metadata.js +153 -0
  26. package/dist/protos/generated/video_streaming/live_metadata.js.map +1 -0
  27. package/dist/protos/generated/video_streaming/media_capabilities.d.ts +0 -15
  28. package/dist/protos/generated/video_streaming/media_capabilities.js +2 -122
  29. package/dist/protos/generated/video_streaming/media_capabilities.js.map +1 -0
  30. package/dist/protos/generated/video_streaming/media_header.d.ts +5 -27
  31. package/dist/protos/generated/video_streaming/media_header.js +28 -151
  32. package/dist/protos/generated/video_streaming/media_header.js.map +1 -0
  33. package/dist/protos/generated/video_streaming/next_request_policy.d.ts +3 -15
  34. package/dist/protos/generated/video_streaming/next_request_policy.js +32 -50
  35. package/dist/protos/generated/video_streaming/next_request_policy.js.map +1 -0
  36. package/dist/protos/generated/video_streaming/onesie_header.d.ts +7 -22
  37. package/dist/protos/generated/video_streaming/onesie_header.js +16 -137
  38. package/dist/protos/generated/video_streaming/onesie_header.js.map +1 -0
  39. package/dist/protos/generated/video_streaming/onesie_header_type.d.ts +9 -25
  40. package/dist/protos/generated/video_streaming/onesie_header_type.js +17 -176
  41. package/dist/protos/generated/video_streaming/onesie_header_type.js.map +1 -0
  42. package/dist/protos/generated/video_streaming/onesie_innertube_request.d.ts +15 -0
  43. package/dist/protos/generated/video_streaming/{onesie_player_request.js → onesie_innertube_request.js} +10 -54
  44. package/dist/protos/generated/video_streaming/onesie_innertube_request.js.map +1 -0
  45. package/dist/protos/generated/video_streaming/onesie_innertube_response.d.ts +15 -0
  46. package/dist/protos/generated/video_streaming/{onesie_player_response.js → onesie_innertube_response.js} +6 -58
  47. package/dist/protos/generated/video_streaming/onesie_innertube_response.js.map +1 -0
  48. package/dist/protos/generated/video_streaming/onesie_proxy_status.d.ts +18 -0
  49. package/dist/protos/generated/video_streaming/onesie_proxy_status.js +25 -0
  50. package/dist/protos/generated/video_streaming/onesie_proxy_status.js.map +1 -0
  51. package/dist/protos/generated/video_streaming/onesie_request.d.ts +7 -17
  52. package/dist/protos/generated/video_streaming/onesie_request.js +28 -89
  53. package/dist/protos/generated/video_streaming/onesie_request.js.map +1 -0
  54. package/dist/protos/generated/video_streaming/playback_cookie.d.ts +2 -17
  55. package/dist/protos/generated/video_streaming/playback_cookie.js +6 -47
  56. package/dist/protos/generated/video_streaming/playback_cookie.js.map +1 -0
  57. package/dist/protos/generated/video_streaming/playback_start_policy.d.ts +0 -15
  58. package/dist/protos/generated/video_streaming/playback_start_policy.js +2 -66
  59. package/dist/protos/generated/video_streaming/playback_start_policy.js.map +1 -0
  60. package/dist/protos/generated/video_streaming/reload_player_response.d.ts +14 -0
  61. package/dist/protos/generated/video_streaming/reload_player_response.js +73 -0
  62. package/dist/protos/generated/video_streaming/reload_player_response.js.map +1 -0
  63. package/dist/protos/generated/video_streaming/request_cancellation_policy.d.ts +0 -15
  64. package/dist/protos/generated/video_streaming/request_cancellation_policy.js +2 -66
  65. package/dist/protos/generated/video_streaming/request_cancellation_policy.js.map +1 -0
  66. package/dist/protos/generated/video_streaming/request_identifier.d.ts +10 -0
  67. package/dist/protos/generated/video_streaming/request_identifier.js +41 -0
  68. package/dist/protos/generated/video_streaming/request_identifier.js.map +1 -0
  69. package/dist/protos/generated/video_streaming/sabr_context_sending_policy.d.ts +12 -0
  70. package/dist/protos/generated/video_streaming/sabr_context_sending_policy.js +86 -0
  71. package/dist/protos/generated/video_streaming/sabr_context_sending_policy.js.map +1 -0
  72. package/dist/protos/generated/video_streaming/sabr_context_update.d.ts +48 -0
  73. package/dist/protos/generated/video_streaming/sabr_context_update.js +242 -0
  74. package/dist/protos/generated/video_streaming/sabr_context_update.js.map +1 -0
  75. package/dist/protos/generated/video_streaming/sabr_error.d.ts +0 -15
  76. package/dist/protos/generated/video_streaming/sabr_error.js +2 -29
  77. package/dist/protos/generated/video_streaming/sabr_error.js.map +1 -0
  78. package/dist/protos/generated/video_streaming/sabr_redirect.d.ts +0 -15
  79. package/dist/protos/generated/video_streaming/sabr_redirect.js +2 -22
  80. package/dist/protos/generated/video_streaming/sabr_redirect.js.map +1 -0
  81. package/dist/protos/generated/video_streaming/snackbar_message.d.ts +10 -0
  82. package/dist/protos/generated/video_streaming/snackbar_message.js +41 -0
  83. package/dist/protos/generated/video_streaming/snackbar_message.js.map +1 -0
  84. package/dist/protos/generated/video_streaming/stream_protection_status.d.ts +1 -16
  85. package/dist/protos/generated/video_streaming/stream_protection_status.js +6 -33
  86. package/dist/protos/generated/video_streaming/stream_protection_status.js.map +1 -0
  87. package/dist/protos/generated/video_streaming/streamer_context.d.ts +11 -28
  88. package/dist/protos/generated/video_streaming/streamer_context.js +33 -383
  89. package/dist/protos/generated/video_streaming/streamer_context.js.map +1 -0
  90. package/dist/protos/generated/video_streaming/time_range.d.ts +2 -17
  91. package/dist/protos/generated/video_streaming/time_range.js +9 -41
  92. package/dist/protos/generated/video_streaming/time_range.js.map +1 -0
  93. package/dist/protos/generated/video_streaming/ump_part_id.d.ts +58 -0
  94. package/dist/protos/generated/video_streaming/ump_part_id.js +89 -0
  95. package/dist/protos/generated/video_streaming/ump_part_id.js.map +1 -0
  96. package/dist/protos/generated/video_streaming/video_playback_abr_request.d.ts +21 -36
  97. package/dist/protos/generated/video_streaming/video_playback_abr_request.js +67 -343
  98. package/dist/protos/generated/video_streaming/video_playback_abr_request.js.map +1 -0
  99. package/dist/src/core/{ChunkedDataBuffer.d.ts → CompositeBuffer.d.ts} +8 -8
  100. package/dist/src/core/{ChunkedDataBuffer.js → CompositeBuffer.js} +32 -27
  101. package/dist/src/core/CompositeBuffer.js.map +1 -0
  102. package/dist/src/core/SabrStream.d.ts +356 -0
  103. package/dist/src/core/SabrStream.js +958 -0
  104. package/dist/src/core/SabrStream.js.map +1 -0
  105. package/dist/src/core/SabrStreamingAdapter.d.ts +158 -0
  106. package/dist/src/core/SabrStreamingAdapter.js +496 -0
  107. package/dist/src/core/SabrStreamingAdapter.js.map +1 -0
  108. package/dist/src/core/SabrUmpProcessor.d.ts +53 -0
  109. package/dist/src/core/SabrUmpProcessor.js +234 -0
  110. package/dist/src/core/SabrUmpProcessor.js.map +1 -0
  111. package/dist/src/core/UmpReader.d.ts +30 -0
  112. package/dist/src/core/UmpReader.js +122 -0
  113. package/dist/src/core/UmpReader.js.map +1 -0
  114. package/dist/src/core/UmpWriter.d.ts +16 -0
  115. package/dist/src/core/UmpWriter.js +56 -0
  116. package/dist/src/core/UmpWriter.js.map +1 -0
  117. package/dist/src/exports/protos.d.ts +1 -0
  118. package/dist/src/exports/protos.js +2 -0
  119. package/dist/src/exports/protos.js.map +1 -0
  120. package/dist/src/exports/sabr-stream.d.ts +2 -0
  121. package/dist/src/exports/sabr-stream.js +2 -0
  122. package/dist/src/exports/sabr-stream.js.map +1 -0
  123. package/dist/src/exports/sabr-streaming-adapter.d.ts +3 -0
  124. package/dist/src/exports/sabr-streaming-adapter.js +3 -0
  125. package/dist/src/exports/sabr-streaming-adapter.js.map +1 -0
  126. package/dist/src/exports/ump.d.ts +3 -0
  127. package/dist/src/exports/ump.js +4 -0
  128. package/dist/src/exports/ump.js.map +1 -0
  129. package/dist/src/exports/utils.d.ts +1 -0
  130. package/dist/src/exports/utils.js +2 -0
  131. package/dist/src/exports/utils.js.map +1 -0
  132. package/dist/src/types/sabrStreamTypes.d.ts +102 -0
  133. package/dist/src/types/sabrStreamTypes.js +2 -0
  134. package/dist/src/types/sabrStreamTypes.js.map +1 -0
  135. package/dist/src/types/sabrStreamingAdapterTypes.d.ts +93 -0
  136. package/dist/src/types/sabrStreamingAdapterTypes.js +2 -0
  137. package/dist/src/types/sabrStreamingAdapterTypes.js.map +1 -0
  138. package/dist/src/types/shared.d.ts +64 -0
  139. package/dist/src/types/shared.js +2 -0
  140. package/dist/src/types/shared.js.map +1 -0
  141. package/dist/src/utils/CacheManager.d.ts +32 -0
  142. package/dist/src/utils/CacheManager.js +131 -0
  143. package/dist/src/utils/CacheManager.js.map +1 -0
  144. package/dist/src/utils/EventEmitterLike.d.ts +5 -0
  145. package/dist/src/utils/EventEmitterLike.js +51 -10
  146. package/dist/src/utils/EventEmitterLike.js.map +1 -0
  147. package/dist/src/utils/Logger.d.ts +30 -0
  148. package/dist/src/utils/Logger.js +80 -0
  149. package/dist/src/utils/Logger.js.map +1 -0
  150. package/dist/src/utils/Protos.d.ts +21 -13
  151. package/dist/src/utils/Protos.js +22 -13
  152. package/dist/src/utils/Protos.js.map +1 -0
  153. package/dist/src/utils/RequestMetadataManager.d.ts +15 -0
  154. package/dist/src/utils/RequestMetadataManager.js +48 -0
  155. package/dist/src/utils/RequestMetadataManager.js.map +1 -0
  156. package/dist/src/utils/formatKeyUtils.d.ts +45 -0
  157. package/dist/src/utils/formatKeyUtils.js +77 -0
  158. package/dist/src/utils/formatKeyUtils.js.map +1 -0
  159. package/dist/src/utils/index.d.ts +5 -3
  160. package/dist/src/utils/index.js +6 -2
  161. package/dist/src/utils/index.js.map +1 -0
  162. package/dist/src/utils/sabrStreamUtils.d.ts +28 -0
  163. package/dist/src/utils/sabrStreamUtils.js +76 -0
  164. package/dist/src/utils/sabrStreamUtils.js.map +1 -0
  165. package/dist/src/utils/shared.d.ts +43 -0
  166. package/dist/src/utils/shared.js +108 -0
  167. package/dist/src/utils/shared.js.map +1 -0
  168. package/package.json +88 -61
  169. package/dist/protos/generated/video_streaming/encrypted_player_request.d.ts +0 -37
  170. package/dist/protos/generated/video_streaming/encrypted_player_request.js +0 -239
  171. package/dist/protos/generated/video_streaming/onesie_player_request.d.ts +0 -31
  172. package/dist/protos/generated/video_streaming/onesie_player_response.d.ts +0 -29
  173. package/dist/protos/generated/video_streaming/proxy_status.d.ts +0 -16
  174. package/dist/protos/generated/video_streaming/proxy_status.js +0 -86
  175. package/dist/src/core/ServerAbrStream.d.ts +0 -38
  176. package/dist/src/core/ServerAbrStream.js +0 -272
  177. package/dist/src/core/UMP.d.ts +0 -10
  178. package/dist/src/core/UMP.js +0 -109
  179. package/dist/src/core/index.d.ts +0 -3
  180. package/dist/src/core/index.js +0 -3
  181. package/dist/src/index.d.ts +0 -4
  182. package/dist/src/index.js +0 -4
  183. package/dist/src/utils/helpers.d.ts +0 -63
  184. package/dist/src/utils/helpers.js +0 -101
  185. package/dist/src/utils/types.d.ts +0 -65
  186. package/dist/src/utils/types.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sabrStreamTypes.js","sourceRoot":"","sources":["../../../src/types/sabrStreamTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,93 @@
1
+ import type { ClientInfo, FormatInitializationMetadata, MediaHeader, NextRequestPolicy, PlaybackCookie, ReloadPlaybackContext, SabrContextSendingPolicy, SabrContextUpdate, SabrError, SabrRedirect, SnackbarMessage, StreamProtectionStatus } from '../utils/Protos.js';
2
+ import type { SabrFormat } from './shared.js';
3
+ import type { CacheManager, RequestMetadataManager } from '../utils/index.js';
4
+ export interface SabrRequestMetadata {
5
+ byteRange?: {
6
+ start: number;
7
+ end: number;
8
+ };
9
+ format?: SabrFormat;
10
+ isInit?: boolean;
11
+ isUMP?: boolean;
12
+ isSABR?: boolean;
13
+ streamInfo?: {
14
+ playbackCookie?: PlaybackCookie;
15
+ nextRequestPolicy?: NextRequestPolicy;
16
+ formatInitMetadata?: FormatInitializationMetadata[];
17
+ streamProtectionStatus?: StreamProtectionStatus;
18
+ reloadPlaybackContext?: ReloadPlaybackContext;
19
+ sabrContextSendingPolicy?: SabrContextSendingPolicy;
20
+ sabrContextUpdate?: SabrContextUpdate;
21
+ snackbarMessage?: SnackbarMessage;
22
+ mediaHeader?: MediaHeader;
23
+ redirect?: SabrRedirect;
24
+ };
25
+ error?: {
26
+ sabrError?: SabrError;
27
+ };
28
+ timestamp: number;
29
+ }
30
+ export interface SabrOptions {
31
+ /**
32
+ * Whether to enable caching of SABR segments.
33
+ * @default true
34
+ */
35
+ enableCaching?: boolean;
36
+ /**
37
+ * Enables verbose logging of all SABR requests made by the player.
38
+ * @NOTE: `DEBUG` level logging must be enabled for this to take effect.
39
+ * @default false
40
+ */
41
+ enableVerboseRequestLogging?: boolean;
42
+ /**
43
+ * Maximum size of the segment cache in megabytes.
44
+ * @default 3
45
+ */
46
+ maxCacheSizeMB?: number;
47
+ /**
48
+ * Maximum age of cached segments in seconds.
49
+ * @default 300 (5 minutes)
50
+ */
51
+ maxCacheAgeSeconds?: number;
52
+ /**
53
+ * Player adapter to use for SABR streaming.
54
+ */
55
+ playerAdapter?: SabrPlayerAdapter;
56
+ /**
57
+ * Client information to send with SABR requests.
58
+ */
59
+ clientInfo?: ClientInfo;
60
+ }
61
+ export interface PlayerHttpResponse {
62
+ url: string;
63
+ method: string;
64
+ headers: Record<string, string>;
65
+ data?: ArrayBuffer | ArrayBufferView;
66
+ makeRequest: (url: string, headers: Record<string, string>) => Promise<Omit<PlayerHttpResponse, 'makeRequest'>>;
67
+ }
68
+ export interface PlayerHttpRequest {
69
+ url: string;
70
+ method: string;
71
+ headers: Record<string, string>;
72
+ segment: RequestSegment;
73
+ body?: ArrayBuffer | ArrayBufferView | null;
74
+ }
75
+ export interface RequestSegment {
76
+ getStartTime: () => number | null;
77
+ isInit: () => boolean;
78
+ }
79
+ export type RequestFilter = (request: PlayerHttpRequest) => Promise<PlayerHttpRequest | undefined> | PlayerHttpRequest | undefined;
80
+ export type ResponseFilter = (response: PlayerHttpResponse) => Promise<PlayerHttpResponse | undefined> | PlayerHttpResponse | undefined;
81
+ export interface SabrPlayerAdapter {
82
+ initialize(player: any, requestMetadataManager: RequestMetadataManager, cache: CacheManager | null): void;
83
+ getPlayerTime(): number;
84
+ getPlaybackRate(): number;
85
+ getBandwidthEstimate(): number;
86
+ getActiveTrackFormats(activeFormat: SabrFormat, sabrFormats: SabrFormat[]): {
87
+ audioFormat?: SabrFormat;
88
+ videoFormat?: SabrFormat;
89
+ };
90
+ registerRequestInterceptor(interceptor: RequestFilter): void;
91
+ registerResponseInterceptor(interceptor: ResponseFilter): void;
92
+ dispose(): void;
93
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sabrStreamingAdapterTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sabrStreamingAdapterTypes.js","sourceRoot":"","sources":["../../../src/types/sabrStreamingAdapterTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,64 @@
1
+ import type { CompositeBuffer } from '../core/CompositeBuffer.js';
2
+ export type Part = {
3
+ type: number;
4
+ size: number;
5
+ data: CompositeBuffer;
6
+ };
7
+ export interface SabrFormat {
8
+ itag: number;
9
+ lastModified: number;
10
+ xtags?: string;
11
+ width?: number;
12
+ height?: number;
13
+ contentLength?: number;
14
+ audioTrackId?: string;
15
+ mimeType?: string;
16
+ isDrc?: boolean;
17
+ quality?: string;
18
+ qualityLabel?: string;
19
+ averageBitrate?: number;
20
+ bitrate: number;
21
+ audioQuality?: string;
22
+ approxDurationMs: number;
23
+ language?: string | null;
24
+ isDubbed?: boolean;
25
+ isAutoDubbed?: boolean;
26
+ isDescriptive?: boolean;
27
+ isSecondary?: boolean;
28
+ isOriginal?: boolean;
29
+ }
30
+ export interface FormatStream {
31
+ itag: number;
32
+ last_modified_ms?: string;
33
+ lastModified?: string;
34
+ xtags?: string;
35
+ width?: number;
36
+ height?: number;
37
+ mime_type?: string;
38
+ mimeType?: string;
39
+ audio_quality?: string;
40
+ audioQuality?: string;
41
+ bitrate: number;
42
+ average_bitrate?: number;
43
+ averageBitrate?: number;
44
+ quality?: string;
45
+ quality_label?: string;
46
+ qualityLabel?: string;
47
+ audio_track?: {
48
+ id: string;
49
+ };
50
+ audioTrackId?: string;
51
+ is_drc?: boolean;
52
+ isDrc?: boolean;
53
+ approx_duration_ms?: number;
54
+ approxDurationMs?: string;
55
+ content_length?: number;
56
+ contentLength?: string;
57
+ is_auto_dubbed?: boolean;
58
+ is_descriptive?: boolean;
59
+ is_dubbed?: boolean;
60
+ language?: string | null;
61
+ is_original?: boolean;
62
+ is_secondary?: boolean;
63
+ }
64
+ export type FetchFunction = typeof fetch;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/types/shared.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ export interface CacheEntry {
2
+ data: Uint8Array;
3
+ timestamp: number;
4
+ size: number;
5
+ }
6
+ /**
7
+ * A "proper" cache for storing segments.
8
+ */
9
+ export declare class CacheManager {
10
+ private initSegmentCache;
11
+ private segmentCache;
12
+ private currentSize;
13
+ private timerId;
14
+ private readonly maxCacheSize;
15
+ private readonly maxAge;
16
+ private readonly logger;
17
+ constructor(maxSizeMB?: number, maxAgeSeconds?: number);
18
+ getCacheEntries(): {
19
+ initSegmentCache: Map<string, CacheEntry>;
20
+ segmentCache: Map<string, CacheEntry>;
21
+ };
22
+ setInitSegment(key: string, data: Uint8Array): void;
23
+ setSegment(key: string, data: Uint8Array): void;
24
+ getInitSegment(key: string): Uint8Array | undefined;
25
+ getSegment(key: string): Uint8Array | undefined;
26
+ private isExpired;
27
+ private enforceStorageLimit;
28
+ private clearExpiredEntries;
29
+ private removeOldestEntries;
30
+ private startGarbageCollection;
31
+ dispose(): void;
32
+ }
@@ -0,0 +1,131 @@
1
+ import { Logger } from './Logger.js';
2
+ const TAG = 'CacheManager';
3
+ /**
4
+ * A "proper" cache for storing segments.
5
+ */
6
+ export class CacheManager {
7
+ constructor(maxSizeMB = 50, maxAgeSeconds = 600) {
8
+ this.initSegmentCache = new Map();
9
+ this.segmentCache = new Map();
10
+ this.currentSize = 0;
11
+ this.logger = Logger.getInstance();
12
+ this.maxCacheSize = maxSizeMB * 1024 * 1024;
13
+ this.maxAge = maxAgeSeconds * 1000;
14
+ this.startGarbageCollection();
15
+ }
16
+ getCacheEntries() {
17
+ return {
18
+ initSegmentCache: this.initSegmentCache,
19
+ segmentCache: this.segmentCache
20
+ };
21
+ }
22
+ setInitSegment(key, data) {
23
+ const entry = {
24
+ data,
25
+ timestamp: Date.now(),
26
+ size: data.byteLength
27
+ };
28
+ if (!this.initSegmentCache.has(key)) {
29
+ this.currentSize += entry.size;
30
+ this.enforceStorageLimit();
31
+ }
32
+ this.initSegmentCache.set(key, entry);
33
+ }
34
+ setSegment(key, data) {
35
+ const entry = {
36
+ data,
37
+ timestamp: Date.now(),
38
+ size: data.byteLength
39
+ };
40
+ this.currentSize += entry.size;
41
+ this.enforceStorageLimit();
42
+ this.segmentCache.set(key, entry);
43
+ }
44
+ getInitSegment(key) {
45
+ const entry = this.initSegmentCache.get(key);
46
+ if (entry && !this.isExpired(entry)) {
47
+ this.logger.debug(TAG, `Cache hit for init segment: ${key}`);
48
+ entry.timestamp = Date.now();
49
+ return entry.data;
50
+ }
51
+ // Expired. Get rid of it.
52
+ if (entry) {
53
+ this.initSegmentCache.delete(key);
54
+ this.currentSize -= entry.size;
55
+ }
56
+ return undefined;
57
+ }
58
+ getSegment(key) {
59
+ const entry = this.segmentCache.get(key);
60
+ if (entry && !this.isExpired(entry)) {
61
+ this.logger.debug(TAG, `Cache hit for segment: ${key}`);
62
+ const data = entry.data;
63
+ this.segmentCache.delete(key);
64
+ this.currentSize -= entry.size;
65
+ return data;
66
+ }
67
+ // Expired. Get rid of it.
68
+ if (entry) {
69
+ this.segmentCache.delete(key);
70
+ this.currentSize -= entry.size;
71
+ }
72
+ return undefined;
73
+ }
74
+ isExpired(entry) {
75
+ return Date.now() - entry.timestamp > this.maxAge;
76
+ }
77
+ enforceStorageLimit() {
78
+ if (this.currentSize <= this.maxCacheSize)
79
+ return;
80
+ this.clearExpiredEntries();
81
+ // If still over limit, remove oldest entries.
82
+ if (this.currentSize > this.maxCacheSize) {
83
+ this.removeOldestEntries();
84
+ }
85
+ }
86
+ clearExpiredEntries() {
87
+ const now = Date.now();
88
+ for (const [key, entry] of this.segmentCache.entries()) {
89
+ if (now - entry.timestamp > this.maxAge) {
90
+ this.logger.debug(TAG, `Removing expired segment from cache: ${key}`);
91
+ this.segmentCache.delete(key);
92
+ this.currentSize -= entry.size;
93
+ }
94
+ }
95
+ for (const [key, entry] of this.initSegmentCache.entries()) {
96
+ if (now - entry.timestamp > this.maxAge) {
97
+ this.logger.debug(TAG, `Removing expired init segment from cache: ${key}`);
98
+ this.initSegmentCache.delete(key);
99
+ this.currentSize -= entry.size;
100
+ }
101
+ }
102
+ }
103
+ removeOldestEntries() {
104
+ const segments = Array.from(this.segmentCache.entries());
105
+ const initSegments = Array.from(this.initSegmentCache.entries());
106
+ const allEntries = [...segments, ...initSegments]
107
+ .sort((a, b) => a[1].timestamp - b[1].timestamp);
108
+ while (this.currentSize > this.maxCacheSize && allEntries.length > 0) {
109
+ const [key, entry] = allEntries.shift();
110
+ this.segmentCache.delete(key);
111
+ this.initSegmentCache.delete(key);
112
+ this.currentSize -= entry.size;
113
+ }
114
+ }
115
+ startGarbageCollection() {
116
+ this.timerId = setInterval(() => {
117
+ this.clearExpiredEntries();
118
+ }, 60000);
119
+ }
120
+ dispose() {
121
+ this.initSegmentCache.clear();
122
+ this.segmentCache.clear();
123
+ this.currentSize = 0;
124
+ if (this.timerId) {
125
+ clearInterval(this.timerId);
126
+ this.timerId = undefined;
127
+ }
128
+ this.logger.debug(TAG, 'Disposed');
129
+ }
130
+ }
131
+ //# sourceMappingURL=CacheManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../../src/utils/CacheManager.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ export declare class SabrAdapterError extends Error {
2
+ code?: string | undefined;
3
+ constructor(message: string, code?: string | undefined);
4
+ }
1
5
  export declare class EventEmitterLike extends EventTarget {
2
6
  #private;
3
7
  constructor();
@@ -5,4 +9,5 @@ export declare class EventEmitterLike extends EventTarget {
5
9
  on(type: string, listener: (...args: any[]) => void): void;
6
10
  once(type: string, listener: (...args: any[]) => void): void;
7
11
  off(type: string, listener: (...args: any[]) => void): void;
12
+ removeAllListeners(type?: string): void;
8
13
  }
@@ -1,14 +1,38 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
1
7
  var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
8
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
11
  };
6
- var _EventEmitterLike_legacy_listeners;
7
- import { CustomEvent } from './index.js';
12
+ var _CustomEvent_detail, _EventEmitterLike_legacyListeners;
13
+ // See https://github.com/nodejs/node/issues/40678#issuecomment-1126944677
14
+ class CustomEvent extends Event {
15
+ constructor(type, options) {
16
+ super(type, options);
17
+ _CustomEvent_detail.set(this, void 0);
18
+ __classPrivateFieldSet(this, _CustomEvent_detail, options?.detail ?? null, "f");
19
+ }
20
+ get detail() {
21
+ return __classPrivateFieldGet(this, _CustomEvent_detail, "f");
22
+ }
23
+ }
24
+ _CustomEvent_detail = new WeakMap();
25
+ export class SabrAdapterError extends Error {
26
+ constructor(message, code) {
27
+ super(`[SabrStreamingAdapter] ${message}`);
28
+ this.code = code;
29
+ this.name = 'SabrAdapterError';
30
+ }
31
+ }
8
32
  export class EventEmitterLike extends EventTarget {
9
33
  constructor() {
10
34
  super();
11
- _EventEmitterLike_legacy_listeners.set(this, new Map());
35
+ _EventEmitterLike_legacyListeners.set(this, new Map());
12
36
  }
13
37
  emit(type, ...args) {
14
38
  const event = new CustomEvent(type, { detail: args });
@@ -23,7 +47,7 @@ export class EventEmitterLike extends EventTarget {
23
47
  listener(ev);
24
48
  }
25
49
  };
26
- __classPrivateFieldGet(this, _EventEmitterLike_legacy_listeners, "f").set(listener, wrapper);
50
+ __classPrivateFieldGet(this, _EventEmitterLike_legacyListeners, "f").set(listener, { type, wrapper });
27
51
  this.addEventListener(type, wrapper);
28
52
  }
29
53
  once(type, listener) {
@@ -36,15 +60,32 @@ export class EventEmitterLike extends EventTarget {
36
60
  }
37
61
  this.off(type, listener);
38
62
  };
39
- __classPrivateFieldGet(this, _EventEmitterLike_legacy_listeners, "f").set(listener, wrapper);
63
+ __classPrivateFieldGet(this, _EventEmitterLike_legacyListeners, "f").set(listener, { type, wrapper });
40
64
  this.addEventListener(type, wrapper);
41
65
  }
42
66
  off(type, listener) {
43
- const wrapper = __classPrivateFieldGet(this, _EventEmitterLike_legacy_listeners, "f").get(listener);
44
- if (wrapper) {
45
- this.removeEventListener(type, wrapper);
46
- __classPrivateFieldGet(this, _EventEmitterLike_legacy_listeners, "f").delete(listener);
67
+ const listenerData = __classPrivateFieldGet(this, _EventEmitterLike_legacyListeners, "f").get(listener);
68
+ if (listenerData && listenerData.type === type) {
69
+ this.removeEventListener(type, listenerData.wrapper);
70
+ __classPrivateFieldGet(this, _EventEmitterLike_legacyListeners, "f").delete(listener);
71
+ }
72
+ }
73
+ removeAllListeners(type) {
74
+ if (type) {
75
+ for (const [listener, listenerData] of __classPrivateFieldGet(this, _EventEmitterLike_legacyListeners, "f").entries()) {
76
+ if (listenerData.type === type) {
77
+ this.removeEventListener(type, listenerData.wrapper);
78
+ __classPrivateFieldGet(this, _EventEmitterLike_legacyListeners, "f").delete(listener);
79
+ }
80
+ }
81
+ }
82
+ else {
83
+ for (const [listener, listenerData] of __classPrivateFieldGet(this, _EventEmitterLike_legacyListeners, "f").entries()) {
84
+ this.removeEventListener(listenerData.type, listenerData.wrapper);
85
+ __classPrivateFieldGet(this, _EventEmitterLike_legacyListeners, "f").delete(listener);
86
+ }
47
87
  }
48
88
  }
49
89
  }
50
- _EventEmitterLike_legacy_listeners = new WeakMap();
90
+ _EventEmitterLike_legacyListeners = new WeakMap();
91
+ //# sourceMappingURL=EventEmitterLike.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventEmitterLike.js","sourceRoot":"","sources":["../../../src/utils/EventEmitterLike.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0EAA0E;AAC1E,MAAM,WAAY,SAAQ,KAAK;IAG7B,YAAY,IAAY,EAAE,OAAgC;QACxD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAHvB,sCAAQ;QAIN,uBAAA,IAAI,uBAAW,OAAO,EAAE,MAAM,IAAI,IAAI,MAAA,CAAC;IACzC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,uBAAA,IAAI,2BAAQ,CAAC;IACtB,CAAC;CACF;;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAe,EAAS,IAAa;QAC/C,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;QADT,SAAI,GAAJ,IAAI,CAAS;QAE/C,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAG/C;QACE,KAAK,EAAE,CAAC;QAHV,4CAAmB,IAAI,GAAG,EAAsE,EAAC;IAIjG,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,GAAG,IAAW;QAC/B,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,EAAE,CAAC,IAAY,EAAE,QAAkC;QACjD,MAAM,OAAO,GAAkB,CAAC,EAAE,EAAE,EAAE;YACpC,IAAI,EAAE,YAAY,WAAW,EAAE,CAAC;gBAC9B,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAe,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,EAAE,CAAC,CAAC;YACf,CAAC;QACH,CAAC,CAAC;QACF,uBAAA,IAAI,yCAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,QAAkC;QACnD,MAAM,OAAO,GAAkB,CAAC,EAAE,EAAE,EAAE;YACpC,IAAI,EAAE,YAAY,WAAW,EAAE,CAAC;gBAC9B,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAe,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,EAAE,CAAC,CAAC;YACf,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,uBAAA,IAAI,yCAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,QAAkC;QAClD,MAAM,YAAY,GAAG,uBAAA,IAAI,yCAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YACrD,uBAAA,IAAI,yCAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,IAAa;QAC9B,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,CAAE,QAAQ,EAAE,YAAY,CAAE,IAAI,uBAAA,IAAI,yCAAiB,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzE,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;oBACrD,uBAAA,IAAI,yCAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAE,QAAQ,EAAE,YAAY,CAAE,IAAI,uBAAA,IAAI,yCAAiB,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzE,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;gBAClE,uBAAA,IAAI,yCAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ export declare enum LogLevel {
2
+ NONE = 0,
3
+ ERROR = 1,
4
+ WARN = 2,
5
+ INFO = 3,
6
+ DEBUG = 4,
7
+ ALL = 99
8
+ }
9
+ export declare class Logger {
10
+ private static instance;
11
+ private currentLogLevels;
12
+ static getInstance(): Logger;
13
+ /**
14
+ * Sets the active log levels.
15
+ * Call with LogLevel.NONE or no arguments to turn off all logging.
16
+ * Otherwise, specify one or more log levels to be active.
17
+ * Use LogLevel.ALL to enable all log levels.
18
+ */
19
+ setLogLevels(...levels: LogLevel[]): void;
20
+ /**
21
+ * Gets the current set of active log levels.
22
+ * @returns A new Set containing the active LogLevel enums.
23
+ */
24
+ getLogLevels(): Set<LogLevel>;
25
+ private log;
26
+ error(tag: string, ...messages: any[]): void;
27
+ warn(tag: string, ...messages: any[]): void;
28
+ info(tag: string, ...messages: any[]): void;
29
+ debug(tag: string, ...messages: any[]): void;
30
+ }
@@ -0,0 +1,80 @@
1
+ export const LogLevel = {
2
+ NONE: 0, 0: "NONE",
3
+ ERROR: 1, 1: "ERROR",
4
+ WARN: 2, 2: "WARN",
5
+ INFO: 3, 3: "INFO",
6
+ DEBUG: 4, 4: "DEBUG",
7
+ ALL: 99, 99: "ALL"
8
+ };
9
+ export class Logger {
10
+ constructor() {
11
+ this.currentLogLevels = new Set([LogLevel.INFO, LogLevel.ERROR]);
12
+ }
13
+ static getInstance() {
14
+ if (!Logger.instance) {
15
+ Logger.instance = new Logger();
16
+ }
17
+ return Logger.instance;
18
+ }
19
+ /**
20
+ * Sets the active log levels.
21
+ * Call with LogLevel.NONE or no arguments to turn off all logging.
22
+ * Otherwise, specify one or more log levels to be active.
23
+ * Use LogLevel.ALL to enable all log levels.
24
+ */
25
+ setLogLevels(...levels) {
26
+ if (levels.length === 0 || levels.includes(LogLevel.NONE)) {
27
+ this.currentLogLevels = new Set(); // Turn off logging
28
+ }
29
+ else if (levels.includes(LogLevel.ALL)) {
30
+ this.currentLogLevels = new Set([
31
+ LogLevel.ERROR,
32
+ LogLevel.WARN,
33
+ LogLevel.INFO,
34
+ LogLevel.DEBUG
35
+ ]);
36
+ }
37
+ else {
38
+ this.currentLogLevels = new Set(levels.filter((level) => level !== LogLevel.NONE && level !== LogLevel.ALL));
39
+ }
40
+ }
41
+ /**
42
+ * Gets the current set of active log levels.
43
+ * @returns A new Set containing the active LogLevel enums.
44
+ */
45
+ getLogLevels() {
46
+ return new Set(this.currentLogLevels);
47
+ }
48
+ log(level, tag, ...messages) {
49
+ if (level !== LogLevel.NONE && this.currentLogLevels.has(level)) {
50
+ const prefix = `[${LogLevel[level]}] [${tag}]`;
51
+ switch (level) {
52
+ case LogLevel.ERROR:
53
+ console.error(prefix, ...messages);
54
+ break;
55
+ case LogLevel.WARN:
56
+ console.warn(prefix, ...messages);
57
+ break;
58
+ case LogLevel.INFO:
59
+ console.info(prefix, ...messages);
60
+ break;
61
+ case LogLevel.DEBUG:
62
+ console.debug(prefix, ...messages);
63
+ break;
64
+ }
65
+ }
66
+ }
67
+ error(tag, ...messages) {
68
+ this.log(LogLevel.ERROR, tag, ...messages);
69
+ }
70
+ warn(tag, ...messages) {
71
+ this.log(LogLevel.WARN, tag, ...messages);
72
+ }
73
+ info(tag, ...messages) {
74
+ this.log(LogLevel.INFO, tag, ...messages);
75
+ }
76
+ debug(tag, ...messages) {
77
+ this.log(LogLevel.DEBUG, tag, ...messages);
78
+ }
79
+ }
80
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/utils/Logger.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,31 @@
1
1
  export { FormatInitializationMetadata } from '../../protos/generated/video_streaming/format_initialization_metadata.js';
2
- export { BufferedRange } from '../../protos/generated/video_streaming/buffered_range.js';
3
2
  export { MediaHeader } from '../../protos/generated/video_streaming/media_header.js';
4
- export { NextRequestPolicy } from '../../protos/generated/video_streaming/next_request_policy.js';
3
+ export { BufferedRange } from '../../protos/generated/video_streaming/buffered_range.js';
4
+ export { MediaCapabilities } from '../../protos/generated/video_streaming/media_capabilities.js';
5
+ export { CryptoParams } from '../../protos/generated/video_streaming/crypto_params.js';
5
6
  export { PlaybackCookie } from '../../protos/generated/video_streaming/playback_cookie.js';
6
7
  export { PlaybackStartPolicy } from '../../protos/generated/video_streaming/playback_start_policy.js';
8
+ export { VideoPlaybackAbrRequest } from '../../protos/generated/video_streaming/video_playback_abr_request.js';
9
+ export { ClientAbrState } from '../../protos/generated/video_streaming/client_abr_state.js';
10
+ export { NextRequestPolicy } from '../../protos/generated/video_streaming/next_request_policy.js';
7
11
  export { RequestCancellationPolicy } from '../../protos/generated/video_streaming/request_cancellation_policy.js';
12
+ export { RequestIdentifier } from '../../protos/generated/video_streaming/request_identifier.js';
8
13
  export { SabrError } from '../../protos/generated/video_streaming/sabr_error.js';
9
14
  export { SabrRedirect } from '../../protos/generated/video_streaming/sabr_redirect.js';
10
- export { StreamProtectionStatus } from '../../protos/generated/video_streaming/stream_protection_status.js';
11
- export { VideoPlaybackAbrRequest } from '../../protos/generated/video_streaming/video_playback_abr_request.js';
12
15
  export { OnesieRequest } from '../../protos/generated/video_streaming/onesie_request.js';
13
- export { EncryptedPlayerRequest } from '../../protos/generated/video_streaming/encrypted_player_request.js';
14
16
  export { OnesieHeader } from '../../protos/generated/video_streaming/onesie_header.js';
15
17
  export { OnesieHeaderType } from '../../protos/generated/video_streaming/onesie_header_type.js';
16
- export { OnesiePlayerRequest } from '../../protos/generated/video_streaming/onesie_player_request.js';
17
- export { OnesiePlayerResponse } from '../../protos/generated/video_streaming/onesie_player_response.js';
18
- export { ClientAbrState } from '../../protos/generated/video_streaming/client_abr_state.js';
19
- export { StreamerContext } from '../../protos/generated/video_streaming/streamer_context.js';
20
- export { ProxyStatus } from '../../protos/generated/video_streaming/proxy_status.js';
21
- export { MediaCapabilities } from '../../protos/generated/video_streaming/media_capabilities.js';
22
- export { CryptoParams } from '../../protos/generated/video_streaming/crypto_params.js';
23
- export { ClientAbrState_MediaType as MediaType } from '../../protos/generated/video_streaming/client_abr_state.js';
18
+ export { OnesieInnertubeRequest } from '../../protos/generated/video_streaming/onesie_innertube_request.js';
19
+ export { OnesieInnertubeResponse } from '../../protos/generated/video_streaming/onesie_innertube_response.js';
20
+ export { OnesieProxyStatus } from '../../protos/generated/video_streaming/onesie_proxy_status.js';
21
+ export { InnertubeRequest, UstreamerFlags } from '../../protos/generated/video_streaming/innertube_request.js';
22
+ export { StreamerContext, StreamerContext_ClientInfo as ClientInfo } from '../../protos/generated/video_streaming/streamer_context.js';
23
+ export { SabrContextUpdate, SabrContextUpdate_SabrContextWritePolicy as SabrContextWritePolicy, SabrContextValue } from '../../protos/generated/video_streaming/sabr_context_update.js';
24
+ export { SabrContextSendingPolicy } from '../../protos/generated/video_streaming/sabr_context_sending_policy.js';
25
+ export { StreamProtectionStatus } from '../../protos/generated/video_streaming/stream_protection_status.js';
26
+ export { LiveMetadata } from '../../protos/generated/video_streaming/live_metadata.js';
27
+ export { SnackbarMessage } from '../../protos/generated/video_streaming/snackbar_message.js';
28
+ export { UMPPartId } from '../../protos/generated/video_streaming/ump_part_id.js';
29
+ export { ReloadPlaybackContext, ReloadPlaybackParams } from '../../protos/generated/video_streaming/reload_player_response.js';
30
+ export { FormatSelectionConfig } from '../../protos/generated/video_streaming/format_selection_config.js';
31
+ export { FormatId, KeyValuePair, Range, HttpHeader, IdentifierToken, CompressionType, OnesieRequestTarget, AuthorizedFormat, AudioQuality, PlaybackAuthorization, NetworkMeteredState, PlaybackAudioRouteOutputType, SeekSource, VideoQualitySetting } from '../../protos/generated/misc/common.js';