rx-player 3.26.2 → 3.26.3-dev.2022021400

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/.github/workflows/perfs.yml +22 -0
  2. package/CHANGELOG.md +19 -1
  3. package/VERSION +1 -1
  4. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +6 -2
  5. package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
  6. package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
  7. package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +1 -1
  8. package/dist/_esm5.processed/core/abr/pending_requests_store.js +3 -5
  9. package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +1 -1
  10. package/dist/_esm5.processed/core/abr/representation_estimator.js +2 -2
  11. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
  12. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +20 -3
  13. package/dist/_esm5.processed/core/api/public_api.d.ts +3 -3
  14. package/dist/_esm5.processed/core/api/public_api.js +2 -2
  15. package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +6 -6
  16. package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.d.ts +0 -2
  17. package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +5 -10
  18. package/dist/_esm5.processed/core/eme/find_key_system.js +15 -5
  19. package/dist/_esm5.processed/core/eme/types.d.ts +2 -2
  20. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +4 -4
  21. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +1 -1
  22. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +2 -2
  23. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +5 -1
  24. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +1 -1
  25. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +2 -2
  26. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +1 -1
  27. package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
  28. package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
  29. package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
  30. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +3 -3
  31. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +32 -31
  32. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +4 -4
  33. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +3 -4
  34. package/dist/_esm5.processed/errors/request_error.js +3 -1
  35. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
  36. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +1 -3
  37. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
  38. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
  39. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
  40. package/dist/_esm5.processed/manifest/adaptation.d.ts +2 -2
  41. package/dist/_esm5.processed/manifest/adaptation.js +3 -1
  42. package/dist/_esm5.processed/manifest/manifest.d.ts +9 -9
  43. package/dist/_esm5.processed/manifest/period.d.ts +3 -3
  44. package/dist/_esm5.processed/manifest/representation.d.ts +2 -2
  45. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +18 -18
  46. package/dist/_esm5.processed/manifest/types.d.ts +3 -3
  47. package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
  48. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
  49. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +6 -6
  50. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
  51. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -2
  52. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +14 -14
  53. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +17 -17
  54. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
  55. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +28 -20
  56. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +19 -4
  57. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  58. package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
  59. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -35
  60. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +24 -23
  61. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +8 -8
  62. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +18 -27
  63. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +25 -23
  64. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +21 -15
  65. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +19 -19
  66. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -38
  67. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +8 -8
  68. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +30 -30
  69. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +3 -3
  70. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -1
  71. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
  72. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
  73. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
  74. package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
  75. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
  76. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +15 -5
  77. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +2 -2
  78. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
  79. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +31 -19
  80. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
  81. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
  82. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +2 -1
  83. package/dist/_esm5.processed/transports/dash/image_pipelines.js +1 -1
  84. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
  85. package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
  86. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
  87. package/dist/_esm5.processed/transports/dash/segment_loader.js +2 -2
  88. package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +1 -1
  89. package/dist/_esm5.processed/transports/dash/text_loader.d.ts +1 -1
  90. package/dist/_esm5.processed/transports/dash/text_loader.js +1 -1
  91. package/dist/_esm5.processed/transports/dash/text_parser.d.ts +1 -1
  92. package/dist/_esm5.processed/transports/local/segment_loader.d.ts +1 -2
  93. package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
  94. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +1 -1
  95. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
  96. package/dist/_esm5.processed/transports/smooth/pipelines.js +1 -1
  97. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +0 -1
  98. package/dist/_esm5.processed/transports/smooth/segment_loader.js +2 -2
  99. package/dist/_esm5.processed/transports/types.d.ts +36 -30
  100. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
  101. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +1 -1
  102. package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -1
  103. package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
  104. package/dist/_esm5.processed/utils/cast_to_observable.js +1 -1
  105. package/dist/_esm5.processed/utils/request/fetch.d.ts +4 -5
  106. package/dist/_esm5.processed/utils/request/fetch.js +7 -4
  107. package/dist/_esm5.processed/utils/request/xhr.d.ts +6 -6
  108. package/dist/_esm5.processed/utils/request/xhr.js +2 -1
  109. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +1 -2
  110. package/dist/rx-player.js +404 -321
  111. package/dist/rx-player.min.js +1 -1
  112. package/package.json +3 -4
  113. package/scripts/doc-generator/generate_header_html.js +6 -7
  114. package/scripts/doc-generator/generate_page_html.js +3 -4
  115. package/scripts/doc-generator/generate_page_list_html.js +4 -5
  116. package/scripts/doc-generator/generate_sidebar_html.js +4 -7
  117. package/scripts/doc-generator/utils.js +0 -11
  118. package/scripts/generate_demo_list.js +3 -3
  119. package/scripts/generate_documentation_list.js +3 -3
  120. package/scripts/launch_static_server.js +127 -67
  121. package/scripts/run_standalone_demo.js +1 -0
  122. package/scripts/start_demo_web_server.js +1 -0
  123. package/sonar-project.properties +1 -1
  124. package/src/compat/__tests__/fullscreen.test.ts +7 -7
  125. package/src/compat/__tests__/is_vtt_cue.test.ts +1 -1
  126. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
  127. package/src/compat/eme/custom_media_keys/index.ts +7 -3
  128. package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
  129. package/src/core/abr/buffer_based_chooser.ts +85 -20
  130. package/src/core/abr/network_analyzer.ts +1 -1
  131. package/src/core/abr/pending_requests_store.ts +3 -5
  132. package/src/core/abr/representation_estimator.ts +6 -3
  133. package/src/core/api/media_element_track_choice_manager.ts +22 -3
  134. package/src/core/api/public_api.ts +6 -6
  135. package/src/core/api/track_choice_manager.ts +10 -9
  136. package/src/core/eme/__tests__/__global__/utils.ts +5 -10
  137. package/src/core/eme/find_key_system.ts +14 -12
  138. package/src/core/eme/types.ts +2 -2
  139. package/src/core/fetchers/manifest/manifest_fetcher.ts +5 -5
  140. package/src/core/fetchers/segment/segment_fetcher.ts +6 -3
  141. package/src/core/fetchers/utils/try_urls_with_backoff.ts +1 -1
  142. package/src/core/init/initialize_directfile.ts +2 -2
  143. package/src/core/init/initialize_media_source.ts +2 -2
  144. package/src/core/init/manifest_update_scheduler.ts +7 -7
  145. package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
  146. package/src/core/init/stream_events_emitter/types.ts +2 -2
  147. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +3 -3
  148. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +32 -31
  149. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
  150. package/src/core/stream/representation/force_garbage_collection.ts +3 -5
  151. package/src/errors/request_error.ts +4 -1
  152. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +3 -6
  153. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +1 -1
  154. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
  155. package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
  156. package/src/manifest/adaptation.ts +6 -4
  157. package/src/manifest/manifest.ts +10 -10
  158. package/src/manifest/period.ts +3 -3
  159. package/src/manifest/representation.ts +2 -2
  160. package/src/manifest/representation_index/types.ts +18 -18
  161. package/src/manifest/types.ts +3 -3
  162. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
  163. package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
  164. package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
  165. package/src/parsers/manifest/dash/common/indexes/base.ts +6 -6
  166. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +4 -2
  167. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +2 -2
  168. package/src/parsers/manifest/dash/common/indexes/list.ts +14 -14
  169. package/src/parsers/manifest/dash/common/indexes/template.ts +17 -16
  170. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
  171. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +50 -22
  172. package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
  173. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
  174. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +58 -70
  175. package/src/parsers/manifest/dash/common/parse_mpd.ts +8 -8
  176. package/src/parsers/manifest/dash/common/parse_periods.ts +80 -79
  177. package/src/parsers/manifest/dash/common/parse_representation_index.ts +83 -75
  178. package/src/parsers/manifest/dash/common/parse_representations.ts +44 -63
  179. package/src/parsers/manifest/dash/node_parser_types.ts +30 -30
  180. package/src/parsers/manifest/dash/parsers_types.ts +3 -3
  181. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
  182. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +4 -4
  183. package/src/parsers/manifest/smooth/create_parser.ts +23 -21
  184. package/src/parsers/manifest/smooth/representation_index.ts +14 -14
  185. package/src/parsers/manifest/types.ts +28 -28
  186. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +31 -33
  187. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +15 -6
  188. package/src/parsers/manifest/utils/index_helpers.ts +2 -2
  189. package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
  190. package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
  191. package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
  192. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +2 -2
  193. package/src/transports/dash/image_pipelines.ts +1 -1
  194. package/src/transports/dash/init_segment_loader.ts +1 -1
  195. package/src/transports/dash/manifest_parser.ts +1 -1
  196. package/src/transports/dash/segment_loader.ts +7 -7
  197. package/src/transports/dash/segment_parser.ts +3 -1
  198. package/src/transports/dash/text_loader.ts +2 -2
  199. package/src/transports/dash/text_parser.ts +3 -1
  200. package/src/transports/local/segment_loader.ts +4 -4
  201. package/src/transports/metaplaylist/manifest_loader.ts +1 -1
  202. package/src/transports/metaplaylist/pipelines.ts +1 -1
  203. package/src/transports/smooth/pipelines.ts +7 -7
  204. package/src/transports/smooth/segment_loader.ts +8 -8
  205. package/src/transports/types.ts +37 -30
  206. package/src/transports/utils/call_custom_manifest_loader.ts +6 -6
  207. package/src/transports/utils/generate_manifest_loader.ts +1 -1
  208. package/src/utils/__tests__/flat_map.test.ts +12 -7
  209. package/src/utils/cancellable_sleep.ts +1 -1
  210. package/src/utils/cast_to_observable.ts +1 -2
  211. package/src/utils/request/fetch.ts +16 -13
  212. package/src/utils/request/xhr.ts +9 -7
  213. package/src/utils/rx-from_cancellable_promise.ts +1 -2
  214. package/tsconfig.json +1 -2
  215. package/tsconfig.modules.json +1 -2
  216. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
  217. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
  218. package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
@@ -131,7 +131,7 @@ export interface IPeriodChildren {
131
131
  /**
132
132
  * Provide a template with which we will be able to request segments.
133
133
  */
134
- segmentTemplate? : ISegmentTemplateIntermediateRepresentation;
134
+ segmentTemplate? : ISegmentTemplateIntermediateRepresentation | undefined;
135
135
  /**
136
136
  * Allows to signal events linked to this Period.
137
137
  *
@@ -189,17 +189,17 @@ export interface IAdaptationSetChildren {
189
189
  representations : IRepresentationIntermediateRepresentation[];
190
190
 
191
191
  // optional
192
- accessibilities? : IScheme[];
193
- contentComponent? : IContentComponentAttributes;
194
- contentProtections? : IContentProtectionIntermediateRepresentation[];
195
- essentialProperties? : IScheme[];
196
- inbandEventStreams? : IScheme[];
192
+ accessibilities? : IScheme[] | undefined;
193
+ contentComponent? : IContentComponentAttributes | undefined;
194
+ contentProtections? : IContentProtectionIntermediateRepresentation[] | undefined;
195
+ essentialProperties? : IScheme[] | undefined;
196
+ inbandEventStreams? : IScheme[] | undefined;
197
197
  roles? : IScheme[];
198
- supplementalProperties? : IScheme[];
198
+ supplementalProperties? : IScheme[] | undefined;
199
199
 
200
- segmentBase? : ISegmentBaseIntermediateRepresentation;
201
- segmentList? : ISegmentListIntermediateRepresentation;
202
- segmentTemplate? : ISegmentTemplateIntermediateRepresentation;
200
+ segmentBase? : ISegmentBaseIntermediateRepresentation | undefined;
201
+ segmentList? : ISegmentListIntermediateRepresentation | undefined;
202
+ segmentTemplate? : ISegmentTemplateIntermediateRepresentation | undefined;
203
203
  }
204
204
 
205
205
  /* Intermediate representation for An AdaptationSet node's attributes. */
@@ -336,20 +336,20 @@ export interface IContentProtectionAttributes {
336
336
  }
337
337
 
338
338
  export interface ISegmentTemplateIntermediateRepresentation {
339
- availabilityTimeComplete? : boolean;
340
- availabilityTimeOffset?: number;
341
- bitstreamSwitching? : boolean;
342
- duration? : number;
343
- index? : string;
344
- indexRange?: [number, number];
345
- indexRangeExact? : boolean;
346
- media? : string;
347
- presentationTimeOffset? : number;
348
- startNumber? : number;
349
- timescale? : number;
350
- initialization? : { media?: string };
351
- timeline? : ISegmentTimelineElement[];
352
- timelineParser? : ITimelineParser;
339
+ availabilityTimeComplete? : boolean | undefined;
340
+ availabilityTimeOffset? : number | undefined;
341
+ bitstreamSwitching? : boolean | undefined;
342
+ duration? : number | undefined;
343
+ index? : string | undefined;
344
+ indexRange?: [number, number] | undefined;
345
+ indexRangeExact? : boolean | undefined;
346
+ media? : string | undefined;
347
+ presentationTimeOffset? : number | undefined;
348
+ startNumber? : number | undefined;
349
+ timescale? : number | undefined;
350
+ initialization? : { media?: string } | undefined;
351
+ timeline? : ISegmentTimelineElement[] | undefined;
352
+ timelineParser? : ITimelineParser | undefined;
353
353
  }
354
354
 
355
355
  export interface ISegmentTimelineElement {
@@ -382,9 +382,9 @@ export interface IScheme {
382
382
  *
383
383
  * `undefined` if no `schemeIdUri` attribute has been found.
384
384
  */
385
- schemeIdUri? : string;
385
+ schemeIdUri? : string | undefined;
386
386
  /** Inner content of that scheme. */
387
- value? : string;
387
+ value? : string | undefined;
388
388
  }
389
389
 
390
390
  export interface IEventStreamIntermediateRepresentation {
@@ -395,9 +395,9 @@ export interface IEventStreamIntermediateRepresentation {
395
395
  }
396
396
 
397
397
  export interface IEventStreamAttributes {
398
- schemeIdUri? : string;
399
- timescale? : number;
400
- value? : string;
398
+ schemeIdUri? : string | undefined;
399
+ timescale? : number | undefined;
400
+ value? : string | undefined;
401
401
 
402
402
  /**
403
403
  * XML namespaces linked to the `<EventStream>` element.
@@ -406,7 +406,7 @@ export interface IEventStreamAttributes {
406
406
  * not parsed through the browser's DOMParser API, and thus might depend on
407
407
  * parent namespaces to be parsed correctly.
408
408
  */
409
- namespaces? : Array<{ key: string; value: string }>;
409
+ namespaces? : Array<{ key: string; value: string }> | undefined;
410
410
  }
411
411
 
412
412
  export interface IEventStreamChildren {
@@ -71,19 +71,19 @@ export interface ILoadedResource<T extends string | ArrayBuffer> {
71
71
  * The URL of the loaded resource (post-redirection if one).
72
72
  * `undefined` if unknown or inexistant.
73
73
  */
74
- url? : string;
74
+ url? : string | undefined;
75
75
  /**
76
76
  * The time, in terms of `performance.now()`, at which the resource was
77
77
  * starting to be fetched.
78
78
  * `undefined` if unknown or not applicable.
79
79
  */
80
- sendingTime? : number;
80
+ sendingTime? : number | undefined;
81
81
  /**
82
82
  * The time, in terms of `performance.now()`, at which the resource was
83
83
  * fully-fetched.
84
84
  * `undefined` if unknown or not applicable.
85
85
  */
86
- receivedTime? : number;
86
+ receivedTime? : number | undefined;
87
87
  /** The loaded resource itself, under the right format.
88
88
  * Or an error, when fetching ressources.
89
89
  */
@@ -14,10 +14,10 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import log from "../../../../../log";
19
18
  import assertUnreachable from "../../../../../utils/assert_unreachable";
20
19
  import noop from "../../../../../utils/noop";
20
+ import PPromise from "../../../../../utils/promise";
21
21
  import parseMpdIr, {
22
22
  IIrParserResponse,
23
23
  ILoadedXlinkData,
@@ -69,11 +69,11 @@ export interface IMetaPlaylist {
69
69
  export default function parseMetaPlaylist(
70
70
  data : unknown,
71
71
  parserOptions : {
72
- url?: string;
72
+ url?: string | undefined;
73
73
  serverSyncInfos?: {
74
74
  serverTimestamp: number;
75
75
  clientTime: number;
76
- };
76
+ } | undefined;
77
77
  }
78
78
  ): IParserResponse<IParsedManifest> {
79
79
  let parsedData;
@@ -147,9 +147,9 @@ export default function parseMetaPlaylist(
147
147
  function createManifest(
148
148
  mplData : IMetaPlaylist,
149
149
  manifests : Manifest[],
150
- parserOptions: { url?: string;
150
+ parserOptions: { url?: string | undefined;
151
151
  serverSyncInfos?: { serverTimestamp: number;
152
- clientTime: number; }; }
152
+ clientTime: number; } | undefined; }
153
153
  ): IParsedManifest {
154
154
  const { url, serverSyncInfos } = parserOptions;
155
155
  const clockOffset = serverSyncInfos !== undefined ?
@@ -64,8 +64,8 @@ interface IAdaptationParserArguments { root : Element;
64
64
  timescale : number;
65
65
  protections : IContentProtectionSmooth[];
66
66
  isLive : boolean;
67
- timeShiftBufferDepth? : number;
68
- manifestReceivedTime? : number; }
67
+ timeShiftBufferDepth? : number | undefined;
68
+ manifestReceivedTime? : number | undefined; }
69
69
 
70
70
  type IAdaptationType = "audio" |
71
71
  "video" |
@@ -86,15 +86,15 @@ const MIME_TYPES : Partial<Record<string, string>> = {
86
86
  };
87
87
 
88
88
  export interface IHSSParserConfiguration {
89
- aggressiveMode? : boolean;
90
- suggestedPresentationDelay? : number;
91
- referenceDateTime? : number;
92
- minRepresentationBitrate? : number;
93
- keySystems? : (hex? : Uint8Array) => IKeySystem[];
89
+ aggressiveMode? : boolean | undefined;
90
+ suggestedPresentationDelay? : number | undefined;
91
+ referenceDateTime? : number | undefined;
92
+ minRepresentationBitrate? : number | undefined;
93
+ keySystems? : ((hex : Uint8Array | undefined) => IKeySystem[]) | undefined;
94
94
  serverSyncInfos? : {
95
95
  serverTimestamp: number;
96
96
  clientTime: number;
97
- };
97
+ } | undefined;
98
98
  }
99
99
 
100
100
  interface ISmoothParsedQualityLevel {
@@ -104,16 +104,16 @@ interface ISmoothParsedQualityLevel {
104
104
  customAttributes : string[];
105
105
 
106
106
  // optional
107
- audiotag? : number;
108
- bitsPerSample? : number;
109
- channels? : number;
110
- codecs? : string;
111
- height? : number;
112
- id? : string;
113
- mimeType? : string;
114
- packetSize? : number;
115
- samplingRate? : number;
116
- width? : number;
107
+ audiotag? : number | undefined;
108
+ bitsPerSample? : number | undefined;
109
+ channels? : number | undefined;
110
+ codecs? : string | undefined;
111
+ height? : number | undefined;
112
+ id? : string | undefined;
113
+ mimeType? : string | undefined;
114
+ packetSize? : number | undefined;
115
+ samplingRate? : number | undefined;
116
+ width? : number | undefined;
117
117
  }
118
118
 
119
119
  /**
@@ -122,9 +122,11 @@ interface ISmoothParsedQualityLevel {
122
122
  */
123
123
  function createSmoothStreamingParser(
124
124
  parserOptions : IHSSParserConfiguration = {}
125
- ) : (manifest : Document, url? : string, manifestReceivedTime? : number)
126
- => IParsedManifest
127
- {
125
+ ) : (
126
+ manifest : Document,
127
+ url? : string | undefined,
128
+ manifestReceivedTime? : number | undefined
129
+ ) => IParsedManifest {
128
130
  const referenceDateTime = parserOptions.referenceDateTime === undefined ?
129
131
  Date.UTC(1970, 0, 1, 0, 0, 0, 0) / 1000 :
130
132
  parserOptions.referenceDateTime;
@@ -178,12 +178,12 @@ export interface ISmoothRepresentationIndexContextInformation {
178
178
 
179
179
  /** Information allowing to generate a Smooth initialization segment. */
180
180
  interface ISmoothInitSegmentPrivateInfos {
181
- bitsPerSample? : number;
182
- channels? : number;
183
- codecPrivateData? : string;
184
- packetSize? : number;
185
- samplingRate? : number;
186
- protection? : { keyId : Uint8Array };
181
+ bitsPerSample? : number | undefined;
182
+ channels? : number | undefined;
183
+ codecPrivateData? : string | undefined;
184
+ packetSize? : number | undefined;
185
+ samplingRate? : number | undefined;
186
+ protection? : { keyId : Uint8Array } | undefined;
187
187
  }
188
188
 
189
189
  /**
@@ -198,13 +198,13 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
198
198
  * Information needed to generate an initialization segment.
199
199
  * Taken from the Manifest.
200
200
  */
201
- private _initSegmentInfos : { codecPrivateData? : string;
202
- bitsPerSample? : number;
203
- channels? : number;
204
- packetSize? : number;
205
- samplingRate? : number;
201
+ private _initSegmentInfos : { codecPrivateData? : string | undefined;
202
+ bitsPerSample? : number | undefined;
203
+ channels? : number | undefined;
204
+ packetSize? : number | undefined;
205
+ samplingRate? : number | undefined;
206
206
  timescale : number;
207
- protection? : { keyId : Uint8Array }; };
207
+ protection? : { keyId : Uint8Array } | undefined; };
208
208
 
209
209
  /**
210
210
  * if `true`, this class will return segments even if we're not sure they had
@@ -225,13 +225,13 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
225
225
  * Useful to know if a segment present in the timeline has actually been
226
226
  * generated on the server-side
227
227
  */
228
- private _scaledLiveGap? : number;
228
+ private _scaledLiveGap : number | undefined;
229
229
 
230
230
  /**
231
231
  * Defines the end of the latest available segment when this index was known to
232
232
  * be valid, in the index's timescale.
233
233
  */
234
- private _initialScaledLastPosition? : number;
234
+ private _initialScaledLastPosition : number | undefined;
235
235
 
236
236
  /**
237
237
  * Defines the earliest time when this index was known to be valid (that is, when
@@ -18,8 +18,8 @@ import { IRepresentationIndex } from "../../manifest";
18
18
  import { IHDRInformation } from "../../manifest/types";
19
19
 
20
20
  export interface IManifestStreamEvent { start: number;
21
- end?: number;
22
- id?: string;
21
+ end?: number | undefined;
22
+ id?: string | undefined;
23
23
  data: IParsedStreamEventData; }
24
24
 
25
25
  export interface IParsedStreamEventData {
@@ -33,7 +33,7 @@ export interface IParsedStreamEventData {
33
33
 
34
34
  /** Describes information about an encryption Key ID of a given media. */
35
35
  export interface IContentProtectionKID { keyId : Uint8Array;
36
- systemId?: string; }
36
+ systemId?: string | undefined; }
37
37
 
38
38
  /**
39
39
  * Encryption initialization data.
@@ -92,37 +92,37 @@ export interface IParsedRepresentation {
92
92
  id: string;
93
93
 
94
94
  /** Codec(s) associated with this Representation. */
95
- codecs?: string;
95
+ codecs?: string | undefined;
96
96
  /**
97
97
  * Information about the encryption associated with this Representation.
98
98
  * Not set if unknown or if the content is not encrypted.
99
99
  */
100
- contentProtections? : IContentProtections;
100
+ contentProtections? : IContentProtections | undefined;
101
101
  /**
102
102
  * Frame rate (images per seconds) associated with this Representation.
103
103
  * Not set if unknown or if it makes no sense (e.g. for subtitles).
104
104
  */
105
- frameRate?: string;
105
+ frameRate?: string | undefined;
106
106
  /**
107
107
  * Height (top to bottom) in pixels this Representation has.
108
108
  * Not set if unknown or if it makes no sense (e.g. for audio).
109
109
  */
110
- height?: number;
110
+ height?: number | undefined;
111
111
  /**
112
112
  * Defines the mime-type of the content.
113
113
  * This allows to deduce the media container but most of the time, the
114
114
  * `codecs` will also be needed to know how to decode that media.
115
115
  */
116
- mimeType?: string;
116
+ mimeType?: string | undefined;
117
117
  /**
118
118
  * Width (left to right) in pixels this Representation has.
119
119
  * Not set if unknown or if it makes no sense (e.g. for audio).
120
120
  */
121
- width?: number;
121
+ width?: number | undefined;
122
122
  /**
123
123
  * Information about the HDR characteristic of a content.
124
124
  */
125
- hdrInfo?: IHDRInformation;
125
+ hdrInfo?: IHDRInformation | undefined;
126
126
  }
127
127
 
128
128
  /** Every possible types an Adaptation can have. */
@@ -155,34 +155,34 @@ export interface IParsedAdaptation {
155
155
  * Not set if unknown or if it makes no sense for the current track (e.g. for
156
156
  * a video track).
157
157
  */
158
- audioDescription? : boolean;
158
+ audioDescription? : boolean | undefined;
159
159
  /**
160
160
  * Whether this Adaptation are closed captions for the hard of hearing.
161
161
  * Not set if unknown or if it makes no sense for the current track (e.g. for
162
162
  * a video track).
163
163
  */
164
- closedCaption? : boolean;
164
+ closedCaption? : boolean | undefined;
165
165
  /**
166
166
  * If true this Adaptation is in a dub: it was recorded in another language
167
167
  * than the original(s) one(s).
168
168
  */
169
- isDub? : boolean;
169
+ isDub? : boolean | undefined;
170
170
  /**
171
171
  * If true this Adaptation is in a sign interpreted: which is a variant of the
172
172
  * video with sign language.
173
173
  */
174
- isSignInterpreted? : boolean;
174
+ isSignInterpreted? : boolean | undefined;
175
175
  /** Tells if the track is a trick mode track. */
176
- isTrickModeTrack? : boolean;
176
+ isTrickModeTrack? : boolean | undefined;
177
177
  /**
178
178
  * Language the `Adaptation` is in.
179
179
  * Not set if unknown or if it makes no sense for the current track.
180
180
  */
181
- language?: string;
181
+ language?: string | undefined;
182
182
  /**
183
183
  * TrickMode tracks attached to the adaptation.
184
184
  */
185
- trickModeTracks?: IParsedAdaptation[];
185
+ trickModeTracks?: IParsedAdaptation[] | undefined;
186
186
  }
187
187
 
188
188
  /** Information on a given period of time in the Manifest */
@@ -205,18 +205,18 @@ export interface IParsedPeriod {
205
205
  * Duration of the Period (from the start to the end), in seconds.
206
206
  * `undefined` if the Period is the last one and is still being updated.
207
207
  */
208
- duration? : number;
208
+ duration? : number | undefined;
209
209
  /**
210
210
  * Time at which the Period ends, in seconds.
211
211
  * `undefined` if the Period is the last one and is still
212
212
  * being updated.
213
213
  */
214
- end? : number;
214
+ end? : number | undefined;
215
215
  /**
216
216
  * Array containing every stream event from period in manifest.
217
217
  * `undefined` if no parsed stream event in manifest.
218
218
  */
219
- streamEvents?: IManifestStreamEvent[];
219
+ streamEvents?: IManifestStreamEvent[] | undefined;
220
220
  }
221
221
 
222
222
  /** Information on the whole content */
@@ -240,23 +240,23 @@ export interface IParsedManifest {
240
240
  * The wall-clock time when the manifest was generated and published at the
241
241
  * origin server
242
242
  */
243
- publishTime?: number;
243
+ publishTime? : number | undefined;
244
244
  /** Underlying transport protocol: "smooth", "dash", "metaplaylist" etc. */
245
245
  transportType: string;
246
246
  /** Base time from which the segments are generated. */
247
- availabilityStartTime? : number;
247
+ availabilityStartTime? : number | undefined;
248
248
  /**
249
249
  * Offset, in milliseconds, the client's clock (in terms of `performance.now`)
250
250
  * has relatively to the server's
251
251
  */
252
- clockOffset?: number;
252
+ clockOffset? : number | undefined;
253
253
  /** If set, the Manifest needs to be updated when that Promise resolves. */
254
- expired? : Promise<void>;
254
+ expired? : Promise<void> | undefined;
255
255
  /**
256
256
  * Duration of the validity of this Manifest from its download time.
257
257
  * After that time has elapsed, the Manifest should be refreshed.
258
258
  */
259
- lifetime?: number;
259
+ lifetime? : number | undefined;
260
260
  /**
261
261
  * Data allowing to calculate the minimum and maximum seekable positions at
262
262
  * any given time.
@@ -266,7 +266,7 @@ export interface IParsedManifest {
266
266
  * The minimum time, in seconds, available in this Manifest.
267
267
  * `undefined` if that value is unknown.
268
268
  */
269
- absoluteMinimumTime? : number;
269
+ absoluteMinimumTime? : number | undefined;
270
270
  /**
271
271
  * Some dynamic contents have the concept of a "window depth" (or "buffer
272
272
  * depth") which allows to set a minimum position for all reachable
@@ -311,8 +311,8 @@ export interface IParsedManifest {
311
311
  * Suggested delay from the last position the player should start from by
312
312
  * default.
313
313
  */
314
- suggestedPresentationDelay? : number;
314
+ suggestedPresentationDelay? : number | undefined;
315
315
  /** URIs where the manifest can be refreshed by order of importance. */
316
- uris?: string[];
316
+ uris? : string[] | undefined;
317
317
  }
318
318