rx-player 4.0.0-dev.2023092900 → 4.0.0-dev.2023102700

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 (576) hide show
  1. package/CHANGELOG.md +221 -12
  2. package/FILES.md +0 -4
  3. package/MAINTAINERS.md +1 -0
  4. package/README.md +0 -21
  5. package/VERSION +1 -1
  6. package/dist/_esm5.processed/compat/add_class_name.js +6 -3
  7. package/dist/_esm5.processed/compat/add_text_track.js +11 -8
  8. package/dist/_esm5.processed/compat/browser_compatibility_types.js +13 -9
  9. package/dist/_esm5.processed/compat/browser_detection.js +49 -34
  10. package/dist/_esm5.processed/compat/browser_version.js +11 -8
  11. package/dist/_esm5.processed/compat/can_patch_isobmff.js +6 -3
  12. package/dist/_esm5.processed/compat/can_rely_on_video_visibility_and_size.js +9 -6
  13. package/dist/_esm5.processed/compat/can_reuse_media_keys.js +6 -3
  14. package/dist/_esm5.processed/compat/change_source_buffer_type.js +6 -3
  15. package/dist/_esm5.processed/compat/clear_element_src.js +12 -9
  16. package/dist/_esm5.processed/compat/eme/close_session.js +45 -106
  17. package/dist/_esm5.processed/compat/eme/constants.js +6 -3
  18. package/dist/_esm5.processed/compat/eme/custom_key_system_access.js +18 -22
  19. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +78 -102
  20. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +16 -6
  21. package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +18 -15
  22. package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +7 -5
  23. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +70 -88
  24. package/dist/_esm5.processed/compat/eme/custom_media_keys/types.js +2 -1
  25. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +91 -117
  26. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +7 -7
  27. package/dist/_esm5.processed/compat/eme/eme-api-implementation.js +82 -83
  28. package/dist/_esm5.processed/compat/eme/generate_key_request.js +36 -31
  29. package/dist/_esm5.processed/compat/eme/get_init_data.js +28 -25
  30. package/dist/_esm5.processed/compat/eme/get_uuid_kid_from_keystatus_kid.js +8 -5
  31. package/dist/_esm5.processed/compat/eme/get_webkit_fairplay_initdata.js +17 -14
  32. package/dist/_esm5.processed/compat/eme/index.js +13 -7
  33. package/dist/_esm5.processed/compat/eme/load_session.js +26 -69
  34. package/dist/_esm5.processed/compat/enable_audio_track.js +7 -4
  35. package/dist/_esm5.processed/compat/event_listeners.js +130 -102
  36. package/dist/_esm5.processed/compat/get_start_date.js +7 -4
  37. package/dist/_esm5.processed/compat/global_scope.js +7 -5
  38. package/dist/_esm5.processed/compat/has_issues_with_high_media_source_duration.js +6 -3
  39. package/dist/_esm5.processed/compat/index.js +47 -24
  40. package/dist/_esm5.processed/compat/is_codec_supported.js +8 -5
  41. package/dist/_esm5.processed/compat/is_debug_mode_enabled.js +4 -1
  42. package/dist/_esm5.processed/compat/is_node.js +5 -3
  43. package/dist/_esm5.processed/compat/is_seeking_approximate.js +5 -3
  44. package/dist/_esm5.processed/compat/is_vtt_cue.js +6 -3
  45. package/dist/_esm5.processed/compat/is_worker.js +3 -1
  46. package/dist/_esm5.processed/compat/make_vtt_cue.js +10 -7
  47. package/dist/_esm5.processed/compat/on_height_width_change.js +25 -22
  48. package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +19 -17
  49. package/dist/_esm5.processed/compat/remove_cue.js +12 -9
  50. package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +7 -4
  51. package/dist/_esm5.processed/compat/should_reload_media_source_on_decipherability_update.js +4 -1
  52. package/dist/_esm5.processed/compat/should_renew_media_key_system_access.js +6 -3
  53. package/dist/_esm5.processed/compat/should_unset_media_keys.js +6 -3
  54. package/dist/_esm5.processed/compat/should_validate_metadata.js +6 -3
  55. package/dist/_esm5.processed/compat/should_wait_for_data_before_loaded.js +6 -3
  56. package/dist/_esm5.processed/compat/should_wait_for_have_enough_data.js +6 -3
  57. package/dist/_esm5.processed/config.js +15 -14
  58. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +123 -94
  59. package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.js +43 -42
  60. package/dist/_esm5.processed/core/adaptive/guess_based_chooser.js +37 -44
  61. package/dist/_esm5.processed/core/adaptive/index.js +4 -2
  62. package/dist/_esm5.processed/core/adaptive/network_analyzer.js +75 -74
  63. package/dist/_esm5.processed/core/adaptive/utils/bandwidth_estimator.js +24 -23
  64. package/dist/_esm5.processed/core/adaptive/utils/ewma.js +13 -12
  65. package/dist/_esm5.processed/core/adaptive/utils/filter_by_bitrate.js +9 -6
  66. package/dist/_esm5.processed/core/adaptive/utils/filter_by_resolution.js +18 -19
  67. package/dist/_esm5.processed/core/adaptive/utils/get_buffer_levels.js +10 -7
  68. package/dist/_esm5.processed/core/adaptive/utils/last_estimate_storage.js +8 -7
  69. package/dist/_esm5.processed/core/adaptive/utils/pending_requests_store.js +26 -23
  70. package/dist/_esm5.processed/core/adaptive/utils/representation_score_calculator.js +25 -23
  71. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +6 -3
  72. package/dist/_esm5.processed/core/api/debug/buffer_graph.js +41 -40
  73. package/dist/_esm5.processed/core/api/debug/buffer_size_graph.js +31 -30
  74. package/dist/_esm5.processed/core/api/debug/constants.js +4 -1
  75. package/dist/_esm5.processed/core/api/debug/index.js +4 -2
  76. package/dist/_esm5.processed/core/api/debug/modules/general_info.js +64 -72
  77. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +49 -46
  78. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +15 -12
  79. package/dist/_esm5.processed/core/api/debug/render.js +16 -13
  80. package/dist/_esm5.processed/core/api/debug/utils.js +18 -13
  81. package/dist/_esm5.processed/core/api/index.js +7 -4
  82. package/dist/_esm5.processed/core/api/option_utils.js +85 -58
  83. package/dist/_esm5.processed/core/api/playback_observer.js +135 -124
  84. package/dist/_esm5.processed/core/api/public_api.js +610 -684
  85. package/dist/_esm5.processed/core/api/track_management/index.js +19 -3
  86. package/dist/_esm5.processed/core/api/track_management/media_element_tracks_store.js +233 -247
  87. package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +45 -58
  88. package/dist/_esm5.processed/core/api/track_management/tracks_store.js +300 -324
  89. package/dist/_esm5.processed/core/api/utils.js +32 -24
  90. package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +155 -185
  91. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +42 -81
  92. package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +15 -12
  93. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +392 -510
  94. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +44 -90
  95. package/dist/_esm5.processed/core/decrypt/create_session.js +90 -149
  96. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +24 -67
  97. package/dist/_esm5.processed/core/decrypt/find_key_system.js +94 -155
  98. package/dist/_esm5.processed/core/decrypt/get_key_system_configuration.js +6 -3
  99. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +59 -109
  100. package/dist/_esm5.processed/core/decrypt/index.js +26 -7
  101. package/dist/_esm5.processed/core/decrypt/init_media_keys.js +17 -59
  102. package/dist/_esm5.processed/core/decrypt/session_events_listener.js +84 -155
  103. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +50 -103
  104. package/dist/_esm5.processed/core/decrypt/types.js +5 -2
  105. package/dist/_esm5.processed/core/decrypt/utils/are_init_values_compatible.js +22 -19
  106. package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.js +40 -61
  107. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +17 -61
  108. package/dist/_esm5.processed/core/decrypt/utils/clean_old_stored_persistent_info.js +8 -5
  109. package/dist/_esm5.processed/core/decrypt/utils/get_drm_system_id.js +8 -5
  110. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +23 -23
  111. package/dist/_esm5.processed/core/decrypt/utils/is_session_usable.js +15 -12
  112. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +14 -21
  113. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +26 -27
  114. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +206 -310
  115. package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.js +8 -6
  116. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +103 -102
  117. package/dist/_esm5.processed/core/decrypt/utils/serializable_bytes.js +13 -12
  118. package/dist/_esm5.processed/core/decrypt/utils/server_certificate_store.js +18 -16
  119. package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.js +37 -56
  120. package/dist/_esm5.processed/core/fetchers/index.js +7 -3
  121. package/dist/_esm5.processed/core/fetchers/manifest/index.js +4 -2
  122. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +233 -313
  123. package/dist/_esm5.processed/core/fetchers/segment/index.js +4 -2
  124. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +12 -9
  125. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +218 -234
  126. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +20 -19
  127. package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.js +73 -74
  128. package/dist/_esm5.processed/core/fetchers/utils/error_selector.js +8 -5
  129. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +210 -261
  130. package/dist/_esm5.processed/core/init/directfile_content_initializer.js +73 -99
  131. package/dist/_esm5.processed/core/init/index.js +5 -1
  132. package/dist/_esm5.processed/core/init/media_source_content_initializer.js +256 -320
  133. package/dist/_esm5.processed/core/init/types.js +7 -24
  134. package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +109 -135
  135. package/dist/_esm5.processed/core/init/utils/create_media_source.js +35 -30
  136. package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.js +12 -10
  137. package/dist/_esm5.processed/core/init/utils/end_of_stream.js +30 -26
  138. package/dist/_esm5.processed/core/init/utils/get_initial_time.js +41 -38
  139. package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +13 -10
  140. package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +29 -26
  141. package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +30 -27
  142. package/dist/_esm5.processed/core/init/utils/media_source_duration_updater.js +58 -60
  143. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +140 -161
  144. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/are_same_stream_events.js +3 -1
  145. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/index.js +4 -2
  146. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.js +28 -30
  147. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +71 -90
  148. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/types.js +2 -1
  149. package/dist/_esm5.processed/core/init/utils/throw_on_media_error.js +16 -13
  150. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +75 -126
  151. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +130 -147
  152. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/index.js +4 -2
  153. package/dist/_esm5.processed/core/segment_buffers/implementations/index.js +20 -3
  154. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +106 -125
  155. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/index.js +4 -2
  156. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/parsers.js +11 -8
  157. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +48 -47
  158. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/types.js +2 -1
  159. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/update_proportional_elements.js +18 -15
  160. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +22 -15
  161. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/index.js +4 -2
  162. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +65 -82
  163. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/parsers.js +11 -8
  164. package/dist/_esm5.processed/core/segment_buffers/implementations/types.js +19 -17
  165. package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +23 -22
  166. package/dist/_esm5.processed/core/segment_buffers/index.js +13 -6
  167. package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +24 -22
  168. package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +8 -3
  169. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +151 -150
  170. package/dist/_esm5.processed/core/segment_buffers/inventory/types.js +2 -1
  171. package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +9 -4
  172. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +82 -89
  173. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +118 -166
  174. package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +31 -28
  175. package/dist/_esm5.processed/core/stream/adaptation/index.js +19 -3
  176. package/dist/_esm5.processed/core/stream/adaptation/types.js +2 -1
  177. package/dist/_esm5.processed/core/stream/index.js +4 -2
  178. package/dist/_esm5.processed/core/stream/orchestrator/get_time_ranges_for_content.js +14 -16
  179. package/dist/_esm5.processed/core/stream/orchestrator/index.js +4 -2
  180. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +175 -222
  181. package/dist/_esm5.processed/core/stream/period/index.js +19 -3
  182. package/dist/_esm5.processed/core/stream/period/period_stream.js +172 -216
  183. package/dist/_esm5.processed/core/stream/period/types.js +2 -1
  184. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +34 -33
  185. package/dist/_esm5.processed/core/stream/representation/index.js +19 -3
  186. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +80 -68
  187. package/dist/_esm5.processed/core/stream/representation/types.js +2 -1
  188. package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.js +33 -84
  189. package/dist/_esm5.processed/core/stream/representation/utils/check_for_discontinuity.js +32 -29
  190. package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +126 -145
  191. package/dist/_esm5.processed/core/stream/representation/utils/force_garbage_collection.js +32 -88
  192. package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +61 -48
  193. package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +71 -69
  194. package/dist/_esm5.processed/core/stream/representation/utils/get_segment_priority.js +8 -5
  195. package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +22 -63
  196. package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +49 -86
  197. package/dist/_esm5.processed/default_config.js +4 -2
  198. package/dist/_esm5.processed/errors/assertion_error.js +10 -26
  199. package/dist/_esm5.processed/errors/custom_loader_error.js +12 -28
  200. package/dist/_esm5.processed/errors/encrypted_media_error.js +16 -32
  201. package/dist/_esm5.processed/errors/error_codes.js +9 -4
  202. package/dist/_esm5.processed/errors/error_message.js +5 -2
  203. package/dist/_esm5.processed/errors/format_error.js +9 -7
  204. package/dist/_esm5.processed/errors/index.js +25 -11
  205. package/dist/_esm5.processed/errors/is_known_error.js +14 -11
  206. package/dist/_esm5.processed/errors/media_error.js +17 -33
  207. package/dist/_esm5.processed/errors/network_error.js +21 -37
  208. package/dist/_esm5.processed/errors/other_error.js +15 -31
  209. package/dist/_esm5.processed/errors/request_error.js +17 -33
  210. package/dist/_esm5.processed/experimental/features/dash_wasm.js +14 -11
  211. package/dist/_esm5.processed/experimental/features/debug_element.js +7 -4
  212. package/dist/_esm5.processed/experimental/features/index.d.ts +1 -0
  213. package/dist/_esm5.processed/experimental/features/index.js +11 -3
  214. package/dist/_esm5.processed/experimental/features/local.js +9 -6
  215. package/dist/_esm5.processed/experimental/features/metaplaylist.js +9 -6
  216. package/dist/_esm5.processed/experimental/index.js +5 -2
  217. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/dash.js +6 -3
  218. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/metaplaylist.js +6 -3
  219. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.js +7 -3
  220. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.js +22 -16
  221. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +22 -19
  222. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +6 -3
  223. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.js +2 -1
  224. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +125 -186
  225. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.js +11 -27
  226. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +76 -119
  227. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +24 -15
  228. package/dist/_esm5.processed/experimental/tools/index.js +11 -5
  229. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +38 -43
  230. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +31 -34
  231. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/capabilities.js +21 -18
  232. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/index.js +4 -2
  233. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/log.js +5 -3
  234. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +20 -17
  235. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +21 -18
  236. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +13 -10
  237. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.js +16 -13
  238. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/index.js +16 -14
  239. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +14 -11
  240. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.js +14 -11
  241. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +19 -16
  242. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +11 -8
  243. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.js +5 -2
  244. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/utils.js +25 -22
  245. package/dist/_esm5.processed/experimental/tools/parseBIFThumbnails.js +7 -4
  246. package/dist/_esm5.processed/features/add_features.js +11 -8
  247. package/dist/_esm5.processed/features/features_object.js +4 -2
  248. package/dist/_esm5.processed/features/index.js +7 -4
  249. package/dist/_esm5.processed/features/list/dash.js +11 -8
  250. package/dist/_esm5.processed/features/list/directfile.js +9 -5
  251. package/dist/_esm5.processed/features/list/eme.js +7 -4
  252. package/dist/_esm5.processed/features/list/html_sami_parser.js +9 -6
  253. package/dist/_esm5.processed/features/list/html_srt_parser.js +9 -6
  254. package/dist/_esm5.processed/features/list/html_text_buffer.js +7 -4
  255. package/dist/_esm5.processed/features/list/html_ttml_parser.js +9 -6
  256. package/dist/_esm5.processed/features/list/html_vtt_parser.js +9 -6
  257. package/dist/_esm5.processed/features/list/index.js +31 -14
  258. package/dist/_esm5.processed/features/list/native_sami_parser.js +9 -6
  259. package/dist/_esm5.processed/features/list/native_srt_parser.js +9 -6
  260. package/dist/_esm5.processed/features/list/native_text_buffer.js +7 -4
  261. package/dist/_esm5.processed/features/list/native_ttml_parser.js +9 -6
  262. package/dist/_esm5.processed/features/list/native_vtt_parser.js +9 -6
  263. package/dist/_esm5.processed/features/list/smooth.js +9 -6
  264. package/dist/_esm5.processed/features/types.js +2 -1
  265. package/dist/_esm5.processed/index.js +24 -9
  266. package/dist/_esm5.processed/log.js +5 -3
  267. package/dist/_esm5.processed/manifest/adaptation.js +52 -55
  268. package/dist/_esm5.processed/manifest/index.js +32 -13
  269. package/dist/_esm5.processed/manifest/manifest.js +112 -134
  270. package/dist/_esm5.processed/manifest/period.js +38 -42
  271. package/dist/_esm5.processed/manifest/representation.js +78 -61
  272. package/dist/_esm5.processed/manifest/representation_index/index.js +5 -2
  273. package/dist/_esm5.processed/manifest/representation_index/static.js +43 -42
  274. package/dist/_esm5.processed/manifest/representation_index/types.js +2 -1
  275. package/dist/_esm5.processed/manifest/types.js +5 -2
  276. package/dist/_esm5.processed/manifest/update_period_in_place.js +38 -48
  277. package/dist/_esm5.processed/manifest/update_periods.js +59 -69
  278. package/dist/_esm5.processed/manifest/utils.js +14 -9
  279. package/dist/_esm5.processed/minimal.js +9 -7
  280. package/dist/_esm5.processed/parsers/containers/isobmff/constants.js +4 -1
  281. package/dist/_esm5.processed/parsers/containers/isobmff/create_box.js +14 -10
  282. package/dist/_esm5.processed/parsers/containers/isobmff/drm/index.js +5 -1
  283. package/dist/_esm5.processed/parsers/containers/isobmff/drm/playready.js +15 -11
  284. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +48 -40
  285. package/dist/_esm5.processed/parsers/containers/isobmff/index.js +27 -6
  286. package/dist/_esm5.processed/parsers/containers/isobmff/read.js +20 -14
  287. package/dist/_esm5.processed/parsers/containers/isobmff/take_pssh_out.js +25 -20
  288. package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +130 -112
  289. package/dist/_esm5.processed/parsers/containers/matroska/index.js +6 -1
  290. package/dist/_esm5.processed/parsers/containers/matroska/utils.js +67 -63
  291. package/dist/_esm5.processed/parsers/images/bif.js +40 -29
  292. package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.js +10 -12
  293. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +10 -7
  294. package/dist/_esm5.processed/parsers/manifest/dash/common/get_clock_offset.js +8 -5
  295. package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.js +10 -6
  296. package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +7 -6
  297. package/dist/_esm5.processed/parsers/manifest/dash/common/get_minimum_and_maximum_positions.js +10 -6
  298. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +14 -9
  299. package/dist/_esm5.processed/parsers/manifest/dash/common/index.js +10 -4
  300. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +73 -67
  301. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +9 -4
  302. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +32 -25
  303. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/index.js +11 -5
  304. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +81 -70
  305. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +130 -123
  306. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +15 -12
  307. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.js +35 -32
  308. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +14 -9
  309. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +30 -22
  310. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/index.js +4 -2
  311. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +14 -11
  312. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +131 -129
  313. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +16 -10
  314. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/utils.js +7 -3
  315. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +19 -18
  316. package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.js +18 -17
  317. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +111 -111
  318. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_availability_start_time.js +4 -1
  319. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +86 -85
  320. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +97 -82
  321. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +39 -37
  322. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +61 -69
  323. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +12 -9
  324. package/dist/_esm5.processed/parsers/manifest/dash/index.js +8 -1
  325. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/index.js +4 -2
  326. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +66 -62
  327. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +7 -4
  328. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.js +7 -4
  329. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.js +22 -19
  330. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/EventStream.js +22 -19
  331. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Initialization.js +11 -8
  332. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/MPD.js +38 -34
  333. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Period.js +34 -30
  334. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +44 -40
  335. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.js +24 -21
  336. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentList.js +15 -12
  337. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +21 -18
  338. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.js +6 -3
  339. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.js +12 -9
  340. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +60 -64
  341. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +33 -27
  342. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.js +2 -1
  343. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.js +2 -1
  344. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/index.js +4 -2
  345. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +192 -238
  346. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +67 -62
  347. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +8 -4
  348. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.js +11 -7
  349. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.js +17 -13
  350. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +29 -24
  351. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +38 -33
  352. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +37 -32
  353. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +43 -38
  354. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.js +9 -5
  355. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.js +16 -12
  356. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +11 -7
  357. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.js +20 -16
  358. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.js +11 -7
  359. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +11 -7
  360. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/index.js +5 -1
  361. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +10 -6
  362. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +22 -20
  363. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.js +2 -1
  364. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/utils.js +6 -2
  365. package/dist/_esm5.processed/parsers/manifest/index.js +17 -1
  366. package/dist/_esm5.processed/parsers/manifest/local/index.js +4 -2
  367. package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +30 -27
  368. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +71 -84
  369. package/dist/_esm5.processed/parsers/manifest/local/types.js +2 -1
  370. package/dist/_esm5.processed/parsers/manifest/metaplaylist/index.js +4 -2
  371. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +75 -72
  372. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +52 -52
  373. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +200 -176
  374. package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +13 -8
  375. package/dist/_esm5.processed/parsers/manifest/smooth/index.js +7 -4
  376. package/dist/_esm5.processed/parsers/manifest/smooth/parse_C_nodes.js +17 -14
  377. package/dist/_esm5.processed/parsers/manifest/smooth/parse_protection_node.js +17 -15
  378. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +102 -98
  379. package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +49 -48
  380. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +10 -7
  381. package/dist/_esm5.processed/parsers/manifest/smooth/utils/parseBoolean.js +4 -1
  382. package/dist/_esm5.processed/parsers/manifest/smooth/utils/reduceChildren.js +6 -3
  383. package/dist/_esm5.processed/parsers/manifest/smooth/utils/tokens.js +5 -1
  384. package/dist/_esm5.processed/parsers/manifest/types.js +2 -1
  385. package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +27 -24
  386. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +10 -7
  387. package/dist/_esm5.processed/parsers/manifest/utils/get_first_time_from_adaptation.js +8 -5
  388. package/dist/_esm5.processed/parsers/manifest/utils/get_last_time_from_adaptation.js +8 -5
  389. package/dist/_esm5.processed/parsers/manifest/utils/get_maximum_positions.js +15 -12
  390. package/dist/_esm5.processed/parsers/manifest/utils/get_minimum_position.js +15 -12
  391. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +31 -22
  392. package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +9 -6
  393. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +38 -45
  394. package/dist/_esm5.processed/parsers/texttracks/index.js +2 -1
  395. package/dist/_esm5.processed/parsers/texttracks/sami/html.js +45 -43
  396. package/dist/_esm5.processed/parsers/texttracks/sami/native.js +41 -39
  397. package/dist/_esm5.processed/parsers/texttracks/srt/find_end_of_cue_block.js +7 -4
  398. package/dist/_esm5.processed/parsers/texttracks/srt/get_cue_blocks.js +11 -8
  399. package/dist/_esm5.processed/parsers/texttracks/srt/html.js +32 -29
  400. package/dist/_esm5.processed/parsers/texttracks/srt/native.js +16 -13
  401. package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +21 -18
  402. package/dist/_esm5.processed/parsers/texttracks/srt/parse_timestamp.js +10 -7
  403. package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +37 -30
  404. package/dist/_esm5.processed/parsers/texttracks/ttml/get_styling.js +48 -48
  405. package/dist/_esm5.processed/parsers/texttracks/ttml/get_time_delimiters.js +14 -11
  406. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.js +7 -2
  407. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +15 -12
  408. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +15 -12
  409. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_line_height.js +11 -8
  410. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +15 -12
  411. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_padding.js +25 -22
  412. package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +117 -124
  413. package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +11 -8
  414. package/dist/_esm5.processed/parsers/texttracks/ttml/html/index.js +4 -2
  415. package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +12 -8
  416. package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_ttml_to_div.js +14 -11
  417. package/dist/_esm5.processed/parsers/texttracks/ttml/html/ttml_color_to_css_color.js +10 -7
  418. package/dist/_esm5.processed/parsers/texttracks/ttml/native/index.js +4 -2
  419. package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_cue.js +38 -35
  420. package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_ttml_to_vtt.js +11 -8
  421. package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +58 -58
  422. package/dist/_esm5.processed/parsers/texttracks/ttml/regexps.js +27 -13
  423. package/dist/_esm5.processed/parsers/texttracks/ttml/resolve_styles_inheritance.js +18 -18
  424. package/dist/_esm5.processed/parsers/texttracks/ttml/time_parsing.js +28 -26
  425. package/dist/_esm5.processed/parsers/texttracks/ttml/xml_utils.js +37 -25
  426. package/dist/_esm5.processed/parsers/texttracks/types.js +2 -1
  427. package/dist/_esm5.processed/parsers/texttracks/webvtt/get_cue_blocks.js +12 -9
  428. package/dist/_esm5.processed/parsers/texttracks/webvtt/get_style_blocks.js +14 -11
  429. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/convert_payload_to_html.js +11 -8
  430. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +8 -5
  431. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +60 -60
  432. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_styled_element.js +30 -27
  433. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/index.js +4 -2
  434. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_style_block.js +23 -26
  435. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_webvtt_to_div.js +20 -17
  436. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +23 -18
  437. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/index.js +4 -2
  438. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/parse_vtt_to_cues.js +19 -16
  439. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/set_settings_on_cue.js +20 -17
  440. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/to_native_cue.js +8 -5
  441. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +26 -18
  442. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_timestamp.js +10 -7
  443. package/dist/_esm5.processed/parsers/texttracks/webvtt/utils.js +15 -7
  444. package/dist/_esm5.processed/public_types.js +2 -1
  445. package/dist/_esm5.processed/tools/TextTrackRenderer/index.js +13 -6
  446. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +26 -24
  447. package/dist/_esm5.processed/tools/index.js +6 -4
  448. package/dist/_esm5.processed/tools/string_utils.js +10 -1
  449. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +16 -24
  450. package/dist/_esm5.processed/transports/dash/construct_segment_url.js +6 -3
  451. package/dist/_esm5.processed/transports/dash/extract_complete_chunks.js +17 -14
  452. package/dist/_esm5.processed/transports/dash/get_events_out_of_emsgs.js +19 -16
  453. package/dist/_esm5.processed/transports/dash/index.js +4 -2
  454. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +47 -27
  455. package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +23 -16
  456. package/dist/_esm5.processed/transports/dash/manifest_parser.js +68 -60
  457. package/dist/_esm5.processed/transports/dash/pipelines.js +20 -17
  458. package/dist/_esm5.processed/transports/dash/segment_loader.js +49 -39
  459. package/dist/_esm5.processed/transports/dash/segment_parser.js +58 -39
  460. package/dist/_esm5.processed/transports/dash/text_loader.js +36 -30
  461. package/dist/_esm5.processed/transports/dash/text_parser.js +39 -29
  462. package/dist/_esm5.processed/transports/index.js +17 -1
  463. package/dist/_esm5.processed/transports/local/index.js +4 -2
  464. package/dist/_esm5.processed/transports/local/pipelines.js +26 -23
  465. package/dist/_esm5.processed/transports/local/segment_loader.js +26 -23
  466. package/dist/_esm5.processed/transports/local/segment_parser.js +36 -25
  467. package/dist/_esm5.processed/transports/local/text_parser.js +42 -27
  468. package/dist/_esm5.processed/transports/metaplaylist/index.js +4 -2
  469. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +11 -7
  470. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +91 -96
  471. package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +26 -20
  472. package/dist/_esm5.processed/transports/smooth/index.js +4 -2
  473. package/dist/_esm5.processed/transports/smooth/is_mp4_embedded_track.js +4 -1
  474. package/dist/_esm5.processed/transports/smooth/isobmff/create_audio_init_segment.js +22 -19
  475. package/dist/_esm5.processed/transports/smooth/isobmff/create_boxes.js +92 -67
  476. package/dist/_esm5.processed/transports/smooth/isobmff/create_init_segment.js +29 -26
  477. package/dist/_esm5.processed/transports/smooth/isobmff/create_traf_box.js +9 -6
  478. package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.js +23 -20
  479. package/dist/_esm5.processed/transports/smooth/isobmff/get_aaces_header.js +10 -7
  480. package/dist/_esm5.processed/transports/smooth/isobmff/index.js +13 -6
  481. package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfrf.js +19 -16
  482. package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfxd.js +9 -6
  483. package/dist/_esm5.processed/transports/smooth/isobmff/patch_segment.js +41 -38
  484. package/dist/_esm5.processed/transports/smooth/pipelines.js +106 -96
  485. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +2 -2
  486. package/dist/_esm5.processed/transports/smooth/segment_loader.js +149 -153
  487. package/dist/_esm5.processed/transports/smooth/utils.js +7 -3
  488. package/dist/_esm5.processed/transports/types.js +2 -1
  489. package/dist/_esm5.processed/transports/utils/byte_range.js +6 -4
  490. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +23 -18
  491. package/dist/_esm5.processed/transports/utils/check_isobmff_integrity.js +14 -11
  492. package/dist/_esm5.processed/transports/utils/find_complete_box.js +11 -8
  493. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +22 -14
  494. package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +13 -10
  495. package/dist/_esm5.processed/transports/utils/infer_segment_container.js +4 -1
  496. package/dist/_esm5.processed/transports/utils/parse_text_track.js +40 -26
  497. package/dist/_esm5.processed/utils/are_arrays_of_numbers_equal.js +5 -2
  498. package/dist/_esm5.processed/utils/are_codecs_compatible.js +11 -9
  499. package/dist/_esm5.processed/utils/array_find.js +7 -4
  500. package/dist/_esm5.processed/utils/array_find_index.js +6 -3
  501. package/dist/_esm5.processed/utils/array_includes.js +12 -11
  502. package/dist/_esm5.processed/utils/assert.js +13 -9
  503. package/dist/_esm5.processed/utils/assert_unreachable.js +6 -3
  504. package/dist/_esm5.processed/utils/base64.js +23 -18
  505. package/dist/_esm5.processed/utils/byte_parsing.js +30 -17
  506. package/dist/_esm5.processed/utils/cancellable_sleep.js +8 -5
  507. package/dist/_esm5.processed/utils/create_cancellable_promise.js +7 -4
  508. package/dist/_esm5.processed/utils/deep_merge.js +10 -21
  509. package/dist/_esm5.processed/utils/event_emitter.js +24 -24
  510. package/dist/_esm5.processed/utils/flat_map.js +7 -4
  511. package/dist/_esm5.processed/utils/get_fuzzed_delay.js +6 -3
  512. package/dist/_esm5.processed/utils/hash_buffer.js +7 -4
  513. package/dist/_esm5.processed/utils/id_generator.js +6 -3
  514. package/dist/_esm5.processed/utils/initialization_segment_cache.js +11 -12
  515. package/dist/_esm5.processed/utils/is_non_empty_string.js +4 -1
  516. package/dist/_esm5.processed/utils/is_null_or_undefined.js +4 -1
  517. package/dist/_esm5.processed/utils/languages/ISO_639-1_to_ISO_639-3.js +4 -2
  518. package/dist/_esm5.processed/utils/languages/ISO_639-2_to_ISO_639-3.js +4 -2
  519. package/dist/_esm5.processed/utils/languages/index.js +7 -3
  520. package/dist/_esm5.processed/utils/languages/normalize.js +26 -20
  521. package/dist/_esm5.processed/utils/logger.js +24 -23
  522. package/dist/_esm5.processed/utils/monotonic_timestamp.js +4 -1
  523. package/dist/_esm5.processed/utils/noop.js +4 -1
  524. package/dist/_esm5.processed/utils/object_assign.js +8 -10
  525. package/dist/_esm5.processed/utils/object_values.js +6 -3
  526. package/dist/_esm5.processed/utils/ranges.js +94 -71
  527. package/dist/_esm5.processed/utils/reference.js +48 -52
  528. package/dist/_esm5.processed/utils/request/fetch.js +79 -109
  529. package/dist/_esm5.processed/utils/request/index.js +9 -4
  530. package/dist/_esm5.processed/utils/request/xhr.js +49 -37
  531. package/dist/_esm5.processed/utils/resolve_url.js +18 -18
  532. package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +34 -81
  533. package/dist/_esm5.processed/utils/sleep.js +5 -2
  534. package/dist/_esm5.processed/utils/slice_uint8array.js +3 -1
  535. package/dist/_esm5.processed/utils/sorted_list.js +37 -40
  536. package/dist/_esm5.processed/utils/starts_with.js +5 -2
  537. package/dist/_esm5.processed/utils/string_parsing.js +84 -73
  538. package/dist/_esm5.processed/utils/take_first_set.js +9 -10
  539. package/dist/_esm5.processed/utils/task_canceller.js +51 -71
  540. package/dist/_esm5.processed/utils/warn_once.js +7 -4
  541. package/dist/_esm5.processed/utils/weak_map_memory.js +12 -11
  542. package/dist/_esm5.processed/utils/wrapInPromise.js +5 -2
  543. package/dist/mpd-parser.wasm +0 -0
  544. package/dist/rx-player.js +43758 -45493
  545. package/dist/rx-player.min.js +1 -1
  546. package/jest.config.js +1 -22
  547. package/package.json +22 -23
  548. package/scripts/build/constants.d.ts +1 -23
  549. package/scripts/build/generate_build.js +1 -1
  550. package/scripts/check_nodejs_import_compatibility.js +1 -1
  551. package/scripts/update-version +1 -4
  552. package/sonar-project.properties +1 -1
  553. package/src/compat/event_listeners.ts +8 -8
  554. package/src/compat/global_scope.ts +2 -0
  555. package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +3 -3
  556. package/src/core/adaptive/adaptive_representation_selector.ts +27 -9
  557. package/src/core/adaptive/buffer_based_chooser.ts +1 -1
  558. package/src/core/adaptive/network_analyzer.ts +5 -4
  559. package/src/core/api/public_api.ts +2 -2
  560. package/src/core/api/track_management/track_dispatcher.ts +2 -1
  561. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +1 -1
  562. package/src/core/fetchers/cdn_prioritizer.ts +1 -1
  563. package/src/experimental/features/__tests__/index.test.ts +19 -0
  564. package/src/experimental/features/index.ts +1 -0
  565. package/src/features/list/__tests__/index.test.ts +49 -0
  566. package/src/index.ts +28 -3
  567. package/src/transports/smooth/segment_loader.ts +4 -4
  568. package/src/typings/globals.d.ts +0 -42
  569. package/src/utils/request/fetch.ts +1 -1
  570. package/src/utils/request/xhr.ts +1 -1
  571. package/tsconfig.json +1 -1
  572. package/tsconfig.modules.json +3 -3
  573. package/dist/_esm5.processed/features/initialize_features.d.ts +0 -19
  574. package/dist/_esm5.processed/features/initialize_features.js +0 -108
  575. package/src/features/__tests__/initialize_features.test.ts +0 -657
  576. package/src/features/initialize_features.ts +0 -129
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,28 +14,14 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- var __extends = (this && this.__extends) || (function () {
17
- var extendStatics = function (d, b) {
18
- extendStatics = Object.setPrototypeOf ||
19
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
21
- return extendStatics(d, b);
22
- };
23
- return function (d, b) {
24
- if (typeof b !== "function" && b !== null)
25
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
26
- extendStatics(d, b);
27
- function __() { this.constructor = d; }
28
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29
- };
30
- })();
31
- import log from "../../../../log";
32
- import assert from "../../../../utils/assert";
33
- import EventEmitter from "../../../../utils/event_emitter";
34
- import noop from "../../../../utils/noop";
35
- import objectAssign from "../../../../utils/object_assign";
36
- import SharedReference from "../../../../utils/reference";
37
- import TaskCanceller from "../../../../utils/task_canceller";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const log_1 = require("../../../../log");
19
+ const assert_1 = require("../../../../utils/assert");
20
+ const event_emitter_1 = require("../../../../utils/event_emitter");
21
+ const noop_1 = require("../../../../utils/noop");
22
+ const object_assign_1 = require("../../../../utils/object_assign");
23
+ const reference_1 = require("../../../../utils/reference");
24
+ const task_canceller_1 = require("../../../../utils/task_canceller");
38
25
  /**
39
26
  * Class scheduling segment downloads for a single Representation.
40
27
  *
@@ -43,8 +30,7 @@ import TaskCanceller from "../../../../utils/task_canceller";
43
30
  * an utilis of the `RepresentationStream` like here.
44
31
  * @class DownloadingQueue
45
32
  */
46
- var DownloadingQueue = /** @class */ (function (_super) {
47
- __extends(DownloadingQueue, _super);
33
+ class DownloadingQueue extends event_emitter_1.default {
48
34
  /**
49
35
  * Create a new `DownloadingQueue`.
50
36
  *
@@ -66,97 +52,95 @@ var DownloadingQueue = /** @class */ (function (_super) {
66
52
  * that it should not wait for an initialization segment before parsing a
67
53
  * media segment.
68
54
  */
69
- function DownloadingQueue(content, downloadQueue, segmentFetcher, hasInitSegment) {
70
- var _this = _super.call(this) || this;
71
- _this._content = content;
72
- _this._currentCanceller = null;
73
- _this._downloadQueue = downloadQueue;
74
- _this._initSegmentRequest = null;
75
- _this._mediaSegmentRequest = null;
76
- _this._segmentFetcher = segmentFetcher;
77
- _this._initSegmentInfoRef = new SharedReference(undefined);
78
- _this._mediaSegmentAwaitingInitMetadata = null;
55
+ constructor(content, downloadQueue, segmentFetcher, hasInitSegment) {
56
+ super();
57
+ this._content = content;
58
+ this._currentCanceller = null;
59
+ this._downloadQueue = downloadQueue;
60
+ this._initSegmentRequest = null;
61
+ this._mediaSegmentRequest = null;
62
+ this._segmentFetcher = segmentFetcher;
63
+ this._initSegmentInfoRef = new reference_1.default(undefined);
64
+ this._mediaSegmentAwaitingInitMetadata = null;
79
65
  if (!hasInitSegment) {
80
- _this._initSegmentInfoRef.setValue(null);
66
+ this._initSegmentInfoRef.setValue(null);
81
67
  }
82
- return _this;
83
68
  }
84
69
  /**
85
70
  * Returns the initialization segment currently being requested.
86
71
  * Returns `null` if no initialization segment request is pending.
87
72
  * @returns {Object | null}
88
73
  */
89
- DownloadingQueue.prototype.getRequestedInitSegment = function () {
74
+ getRequestedInitSegment() {
90
75
  return this._initSegmentRequest === null ? null :
91
76
  this._initSegmentRequest.segment;
92
- };
77
+ }
93
78
  /**
94
79
  * Returns the media segment currently being requested.
95
80
  * Returns `null` if no media segment request is pending.
96
81
  * @returns {Object | null}
97
82
  */
98
- DownloadingQueue.prototype.getRequestedMediaSegment = function () {
83
+ getRequestedMediaSegment() {
99
84
  return this._mediaSegmentRequest === null ? null :
100
85
  this._mediaSegmentRequest.segment;
101
- };
86
+ }
102
87
  /**
103
88
  * Start the current downloading queue, emitting events as it loads and parses
104
89
  * initialization and media segments.
105
90
  */
106
- DownloadingQueue.prototype.start = function () {
107
- var _this = this;
91
+ start() {
108
92
  if (this._currentCanceller !== null) {
109
93
  return;
110
94
  }
111
- this._currentCanceller = new TaskCanceller();
95
+ this._currentCanceller = new task_canceller_1.default();
112
96
  // Listen for asked media segments
113
- this._downloadQueue.onUpdate(function (queue) {
114
- var segmentQueue = queue.segmentQueue;
97
+ this._downloadQueue.onUpdate((queue) => {
98
+ const { segmentQueue } = queue;
115
99
  if (segmentQueue.length > 0 &&
116
- segmentQueue[0].segment.id === _this._mediaSegmentAwaitingInitMetadata) {
100
+ segmentQueue[0].segment.id === this._mediaSegmentAwaitingInitMetadata) {
117
101
  // The most needed segment is still the same one, and there's no need to
118
102
  // update its priority as the request already ended, just quit.
119
103
  return;
120
104
  }
121
- var currentSegmentRequest = _this._mediaSegmentRequest;
105
+ const currentSegmentRequest = this._mediaSegmentRequest;
122
106
  if (segmentQueue.length === 0) {
123
107
  if (currentSegmentRequest === null) {
124
108
  // There's nothing to load but there's already no request pending.
125
109
  return;
126
110
  }
127
- log.debug("Stream: no more media segment to request. Cancelling queue.", _this._content.adaptation.type);
128
- _this._restartMediaSegmentDownloadingQueue();
111
+ log_1.default.debug("Stream: no more media segment to request. Cancelling queue.", this._content.adaptation.type);
112
+ this._restartMediaSegmentDownloadingQueue();
129
113
  return;
130
114
  }
131
115
  else if (currentSegmentRequest === null) {
132
116
  // There's no request although there are needed segments: start requests
133
- log.debug("Stream: Media segments now need to be requested. Starting queue.", _this._content.adaptation.type, segmentQueue.length);
134
- _this._restartMediaSegmentDownloadingQueue();
117
+ log_1.default.debug("Stream: Media segments now need to be requested. Starting queue.", this._content.adaptation.type, segmentQueue.length);
118
+ this._restartMediaSegmentDownloadingQueue();
135
119
  return;
136
120
  }
137
121
  else {
138
- var nextItem = segmentQueue[0];
122
+ const nextItem = segmentQueue[0];
139
123
  if (currentSegmentRequest.segment.id !== nextItem.segment.id) {
140
124
  // The most important request if for another segment, request it
141
- log.debug("Stream: Next media segment changed, cancelling previous", _this._content.adaptation.type);
142
- _this._restartMediaSegmentDownloadingQueue();
125
+ log_1.default.debug("Stream: Next media segment changed, cancelling previous", this._content.adaptation.type);
126
+ this._restartMediaSegmentDownloadingQueue();
143
127
  return;
144
128
  }
145
129
  if (currentSegmentRequest.priority !== nextItem.priority) {
146
130
  // The priority of the most important request has changed, update it
147
- log.debug("Stream: Priority of next media segment changed, updating", _this._content.adaptation.type, currentSegmentRequest.priority, nextItem.priority);
148
- _this._segmentFetcher.updatePriority(currentSegmentRequest.request, nextItem.priority);
131
+ log_1.default.debug("Stream: Priority of next media segment changed, updating", this._content.adaptation.type, currentSegmentRequest.priority, nextItem.priority);
132
+ this._segmentFetcher.updatePriority(currentSegmentRequest.request, nextItem.priority);
149
133
  }
150
134
  return;
151
135
  }
152
136
  }, { emitCurrentValue: true, clearSignal: this._currentCanceller.signal });
153
137
  // Listen for asked init segment
154
- this._downloadQueue.onUpdate(function (next) {
138
+ this._downloadQueue.onUpdate((next) => {
155
139
  var _a;
156
- var initSegmentRequest = _this._initSegmentRequest;
140
+ const initSegmentRequest = this._initSegmentRequest;
157
141
  if (next.initSegment !== null && initSegmentRequest !== null) {
158
142
  if (next.initSegment.priority !== initSegmentRequest.priority) {
159
- _this._segmentFetcher.updatePriority(initSegmentRequest.request, next.initSegment.priority);
143
+ this._segmentFetcher.updatePriority(initSegmentRequest.request, next.initSegment.priority);
160
144
  }
161
145
  return;
162
146
  }
@@ -164,72 +148,71 @@ var DownloadingQueue = /** @class */ (function (_super) {
164
148
  return;
165
149
  }
166
150
  if (next.initSegment === null) {
167
- log.debug("Stream: no more init segment to request. Cancelling queue.", _this._content.adaptation.type);
151
+ log_1.default.debug("Stream: no more init segment to request. Cancelling queue.", this._content.adaptation.type);
168
152
  }
169
- _this._restartInitSegmentDownloadingQueue(next.initSegment);
153
+ this._restartInitSegmentDownloadingQueue(next.initSegment);
170
154
  }, { emitCurrentValue: true, clearSignal: this._currentCanceller.signal });
171
- };
172
- DownloadingQueue.prototype.stop = function () {
155
+ }
156
+ stop() {
173
157
  var _a;
174
158
  (_a = this._currentCanceller) === null || _a === void 0 ? void 0 : _a.cancel();
175
159
  this._currentCanceller = null;
176
- };
160
+ }
177
161
  /**
178
162
  * Internal logic performing media segment requests.
179
163
  */
180
- DownloadingQueue.prototype._restartMediaSegmentDownloadingQueue = function () {
181
- var _this = this;
164
+ _restartMediaSegmentDownloadingQueue() {
182
165
  if (this._mediaSegmentRequest !== null) {
183
166
  this._mediaSegmentRequest.canceller.cancel();
184
167
  }
185
- var segmentQueue = this._downloadQueue.getValue().segmentQueue;
186
- var currentNeededSegment = segmentQueue[0];
187
- var recursivelyRequestSegments = function (startingSegment) {
188
- if (_this._currentCanceller !== null && _this._currentCanceller.isUsed()) {
189
- _this._mediaSegmentRequest = null;
168
+ const { segmentQueue } = this._downloadQueue.getValue();
169
+ const currentNeededSegment = segmentQueue[0];
170
+ const recursivelyRequestSegments = (startingSegment) => {
171
+ if (this._currentCanceller !== null && this._currentCanceller.isUsed()) {
172
+ this._mediaSegmentRequest = null;
190
173
  return;
191
174
  }
192
175
  if (startingSegment === undefined) {
193
- _this._mediaSegmentRequest = null;
194
- _this.trigger("emptyQueue", null);
176
+ this._mediaSegmentRequest = null;
177
+ this.trigger("emptyQueue", null);
195
178
  return;
196
179
  }
197
- var canceller = new TaskCanceller();
198
- var unlinkCanceller = _this._currentCanceller === null ?
199
- noop :
200
- canceller.linkToSignal(_this._currentCanceller.signal);
201
- var segment = startingSegment.segment, priority = startingSegment.priority;
202
- var context = objectAssign({ segment: segment }, _this._content);
180
+ const canceller = new task_canceller_1.default();
181
+ const unlinkCanceller = this._currentCanceller === null ?
182
+ noop_1.default :
183
+ canceller.linkToSignal(this._currentCanceller.signal);
184
+ const { segment, priority } = startingSegment;
185
+ const context = (0, object_assign_1.default)({ segment }, this._content);
203
186
  /**
204
187
  * If `true` , the current task has either errored, finished, or was
205
188
  * cancelled.
206
189
  */
207
- var isComplete = false;
190
+ let isComplete = false;
208
191
  /**
209
192
  * If true, we're currently waiting for the initialization segment to be
210
193
  * parsed before parsing a received chunk.
211
194
  */
212
- var isWaitingOnInitSegment = false;
213
- canceller.signal.register(function () {
214
- _this._mediaSegmentRequest = null;
195
+ let isWaitingOnInitSegment = false;
196
+ canceller.signal.register(() => {
197
+ this._mediaSegmentRequest = null;
215
198
  if (isComplete) {
216
199
  return;
217
200
  }
218
- if (_this._mediaSegmentAwaitingInitMetadata === segment.id) {
219
- _this._mediaSegmentAwaitingInitMetadata = null;
201
+ if (this._mediaSegmentAwaitingInitMetadata === segment.id) {
202
+ this._mediaSegmentAwaitingInitMetadata = null;
220
203
  }
221
204
  isComplete = true;
222
205
  isWaitingOnInitSegment = false;
223
206
  });
224
- var emitChunk = function (parsed) {
225
- assert(parsed.segmentType === "media", "Should have loaded a media segment.");
226
- _this.trigger("parsedMediaSegment", objectAssign({}, parsed, { segment: segment }));
207
+ const emitChunk = (parsed) => {
208
+ (0, assert_1.default)(parsed.segmentType === "media", "Should have loaded a media segment.");
209
+ this.trigger("parsedMediaSegment", (0, object_assign_1.default)({}, parsed, { segment }));
227
210
  };
228
- var continueToNextSegment = function () {
229
- var lastQueue = _this._downloadQueue.getValue().segmentQueue;
211
+ const continueToNextSegment = () => {
212
+ const lastQueue = this._downloadQueue.getValue().segmentQueue;
230
213
  if (lastQueue.length === 0) {
231
214
  isComplete = true;
232
- _this.trigger("emptyQueue", null);
215
+ this.trigger("emptyQueue", null);
233
216
  return;
234
217
  }
235
218
  else if (lastQueue[0].segment.id === segment.id) {
@@ -239,27 +222,27 @@ var DownloadingQueue = /** @class */ (function (_super) {
239
222
  recursivelyRequestSegments(lastQueue[0]);
240
223
  };
241
224
  /** Scheduled actual segment request. */
242
- var request = _this._segmentFetcher.createRequest(context, priority, {
225
+ const request = this._segmentFetcher.createRequest(context, priority, {
243
226
  /**
244
227
  * Callback called when the request has to be retried.
245
228
  * @param {Error} error
246
229
  */
247
- onRetry: function (error) {
248
- _this.trigger("requestRetry", { segment: segment, error: error });
230
+ onRetry: (error) => {
231
+ this.trigger("requestRetry", { segment, error });
249
232
  },
250
233
  /**
251
234
  * Callback called when the request has to be interrupted and
252
235
  * restarted later.
253
236
  */
254
- beforeInterrupted: function () {
255
- log.info("Stream: segment request interrupted temporarly.", segment.id, segment.time);
237
+ beforeInterrupted() {
238
+ log_1.default.info("Stream: segment request interrupted temporarly.", segment.id, segment.time);
256
239
  },
257
240
  /**
258
241
  * Callback called when a decodable chunk of the segment is available.
259
242
  * @param {Function} parse - Function allowing to parse the segment.
260
243
  */
261
- onChunk: function (parse) {
262
- var initTimescale = _this._initSegmentInfoRef.getValue();
244
+ onChunk: (parse) => {
245
+ const initTimescale = this._initSegmentInfoRef.getValue();
263
246
  if (initTimescale !== undefined) {
264
247
  emitChunk(parse(initTimescale !== null && initTimescale !== void 0 ? initTimescale : undefined));
265
248
  }
@@ -269,22 +252,22 @@ var DownloadingQueue = /** @class */ (function (_super) {
269
252
  // but I found it globally clearer to segregate the two cases,
270
253
  // especially to always have a meaningful `isWaitingOnInitSegment`
271
254
  // boolean which is a very important variable.
272
- _this._initSegmentInfoRef.waitUntilDefined(function (actualTimescale) {
255
+ this._initSegmentInfoRef.waitUntilDefined((actualTimescale) => {
273
256
  emitChunk(parse(actualTimescale !== null && actualTimescale !== void 0 ? actualTimescale : undefined));
274
257
  }, { clearSignal: canceller.signal });
275
258
  }
276
259
  },
277
260
  /** Callback called after all chunks have been sent. */
278
- onAllChunksReceived: function () {
261
+ onAllChunksReceived: () => {
279
262
  if (!isWaitingOnInitSegment) {
280
- _this.trigger("fullyLoadedSegment", segment);
263
+ this.trigger("fullyLoadedSegment", segment);
281
264
  }
282
265
  else {
283
- _this._mediaSegmentAwaitingInitMetadata = segment.id;
284
- _this._initSegmentInfoRef.waitUntilDefined(function () {
285
- _this._mediaSegmentAwaitingInitMetadata = null;
266
+ this._mediaSegmentAwaitingInitMetadata = segment.id;
267
+ this._initSegmentInfoRef.waitUntilDefined(() => {
268
+ this._mediaSegmentAwaitingInitMetadata = null;
286
269
  isWaitingOnInitSegment = false;
287
- _this.trigger("fullyLoadedSegment", segment);
270
+ this.trigger("fullyLoadedSegment", segment);
288
271
  }, { clearSignal: canceller.signal });
289
272
  }
290
273
  },
@@ -292,35 +275,34 @@ var DownloadingQueue = /** @class */ (function (_super) {
292
275
  * Callback called right after the request ended but before the next
293
276
  * requests are scheduled. It is used to schedule the next segment.
294
277
  */
295
- beforeEnded: function () {
278
+ beforeEnded: () => {
296
279
  unlinkCanceller();
297
- _this._mediaSegmentRequest = null;
280
+ this._mediaSegmentRequest = null;
298
281
  if (isWaitingOnInitSegment) {
299
- _this._initSegmentInfoRef.waitUntilDefined(continueToNextSegment, { clearSignal: canceller.signal });
282
+ this._initSegmentInfoRef.waitUntilDefined(continueToNextSegment, { clearSignal: canceller.signal });
300
283
  }
301
284
  else {
302
285
  continueToNextSegment();
303
286
  }
304
287
  },
305
288
  }, canceller.signal);
306
- request.catch(function (error) {
289
+ request.catch((error) => {
307
290
  unlinkCanceller();
308
291
  if (!isComplete) {
309
292
  isComplete = true;
310
- _this.stop();
311
- _this.trigger("error", error);
293
+ this.stop();
294
+ this.trigger("error", error);
312
295
  }
313
296
  });
314
- _this._mediaSegmentRequest = { segment: segment, priority: priority, request: request, canceller: canceller };
297
+ this._mediaSegmentRequest = { segment, priority, request, canceller };
315
298
  };
316
299
  recursivelyRequestSegments(currentNeededSegment);
317
- };
300
+ }
318
301
  /**
319
302
  * Internal logic performing initialization segment requests.
320
303
  * @param {Object} queuedInitSegment
321
304
  */
322
- DownloadingQueue.prototype._restartInitSegmentDownloadingQueue = function (queuedInitSegment) {
323
- var _this = this;
305
+ _restartInitSegmentDownloadingQueue(queuedInitSegment) {
324
306
  if (this._currentCanceller !== null && this._currentCanceller.isUsed()) {
325
307
  return;
326
308
  }
@@ -330,59 +312,58 @@ var DownloadingQueue = /** @class */ (function (_super) {
330
312
  if (queuedInitSegment === null) {
331
313
  return;
332
314
  }
333
- var canceller = new TaskCanceller();
334
- var unlinkCanceller = this._currentCanceller === null ?
335
- noop :
315
+ const canceller = new task_canceller_1.default();
316
+ const unlinkCanceller = this._currentCanceller === null ?
317
+ noop_1.default :
336
318
  canceller.linkToSignal(this._currentCanceller.signal);
337
- var segment = queuedInitSegment.segment, priority = queuedInitSegment.priority;
338
- var context = objectAssign({ segment: segment }, this._content);
319
+ const { segment, priority } = queuedInitSegment;
320
+ const context = (0, object_assign_1.default)({ segment }, this._content);
339
321
  /**
340
322
  * If `true` , the current task has either errored, finished, or was
341
323
  * cancelled.
342
324
  */
343
- var isComplete = false;
344
- var request = this._segmentFetcher.createRequest(context, priority, {
345
- onRetry: function (err) {
346
- _this.trigger("requestRetry", { segment: segment, error: err });
325
+ let isComplete = false;
326
+ const request = this._segmentFetcher.createRequest(context, priority, {
327
+ onRetry: (err) => {
328
+ this.trigger("requestRetry", { segment, error: err });
347
329
  },
348
- beforeInterrupted: function () {
349
- log.info("Stream: init segment request interrupted temporarly.", segment.id);
330
+ beforeInterrupted: () => {
331
+ log_1.default.info("Stream: init segment request interrupted temporarly.", segment.id);
350
332
  },
351
- beforeEnded: function () {
333
+ beforeEnded: () => {
352
334
  unlinkCanceller();
353
- _this._initSegmentRequest = null;
335
+ this._initSegmentRequest = null;
354
336
  isComplete = true;
355
337
  },
356
- onChunk: function (parse) {
338
+ onChunk: (parse) => {
357
339
  var _a;
358
- var parsed = parse(undefined);
359
- assert(parsed.segmentType === "init", "Should have loaded an init segment.");
360
- _this.trigger("parsedInitSegment", objectAssign({}, parsed, { segment: segment }));
340
+ const parsed = parse(undefined);
341
+ (0, assert_1.default)(parsed.segmentType === "init", "Should have loaded an init segment.");
342
+ this.trigger("parsedInitSegment", (0, object_assign_1.default)({}, parsed, { segment }));
361
343
  if (parsed.segmentType === "init") {
362
- _this._initSegmentInfoRef.setValue((_a = parsed.initTimescale) !== null && _a !== void 0 ? _a : null);
344
+ this._initSegmentInfoRef.setValue((_a = parsed.initTimescale) !== null && _a !== void 0 ? _a : null);
363
345
  }
364
346
  },
365
- onAllChunksReceived: function () {
366
- _this.trigger("fullyLoadedSegment", segment);
347
+ onAllChunksReceived: () => {
348
+ this.trigger("fullyLoadedSegment", segment);
367
349
  },
368
350
  }, canceller.signal);
369
- request.catch(function (error) {
351
+ request.catch((error) => {
370
352
  unlinkCanceller();
371
353
  if (!isComplete) {
372
354
  isComplete = true;
373
- _this.stop();
374
- _this.trigger("error", error);
355
+ this.stop();
356
+ this.trigger("error", error);
375
357
  }
376
358
  });
377
- canceller.signal.register(function () {
378
- _this._initSegmentRequest = null;
359
+ canceller.signal.register(() => {
360
+ this._initSegmentRequest = null;
379
361
  if (isComplete) {
380
362
  return;
381
363
  }
382
364
  isComplete = true;
383
365
  });
384
- this._initSegmentRequest = { segment: segment, priority: priority, request: request, canceller: canceller };
385
- };
386
- return DownloadingQueue;
387
- }(EventEmitter));
388
- export default DownloadingQueue;
366
+ this._initSegmentRequest = { segment, priority, request, canceller };
367
+ }
368
+ }
369
+ exports.default = DownloadingQueue;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,45 +14,10 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
- return new (P || (P = Promise))(function (resolve, reject) {
19
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
- step((generator = generator.apply(thisArg, _arguments || [])).next());
23
- });
24
- };
25
- var __generator = (this && this.__generator) || function (thisArg, body) {
26
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
27
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
- function verb(n) { return function (v) { return step([n, v]); }; }
29
- function step(op) {
30
- if (f) throw new TypeError("Generator is already executing.");
31
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
32
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
33
- if (y = 0, t) op = [op[0] & 2, t.value];
34
- switch (op[0]) {
35
- case 0: case 1: t = op; break;
36
- case 4: _.label++; return { value: op[1], done: false };
37
- case 5: _.label++; y = op[1]; op = [0]; continue;
38
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
39
- default:
40
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
41
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
42
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
44
- if (t[2]) _.ops.pop();
45
- _.trys.pop(); continue;
46
- }
47
- op = body.call(thisArg, _);
48
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
49
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
50
- }
51
- };
52
- import config from "../../../../config";
53
- import log from "../../../../log";
54
- import { getInnerAndOuterRangesFromBufferedTimeRanges } from "../../../../utils/ranges";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const config_1 = require("../../../../config");
19
+ const log_1 = require("../../../../log");
20
+ const ranges_1 = require("../../../../utils/ranges");
55
21
  /**
56
22
  * Run the garbage collector.
57
23
  *
@@ -63,47 +29,28 @@ import { getInnerAndOuterRangesFromBufferedTimeRanges } from "../../../../utils/
63
29
  * @param {Object} cancellationSignal
64
30
  * @returns {Promise}
65
31
  */
66
- export default function forceGarbageCollection(currentPosition, bufferingQueue, cancellationSignal) {
67
- return __awaiter(this, void 0, void 0, function () {
68
- var GC_GAP_CALM, GC_GAP_BEEFY, buffered, cleanedupRanges, _i, cleanedupRanges_1, range, start, end;
69
- return __generator(this, function (_a) {
70
- switch (_a.label) {
71
- case 0:
72
- GC_GAP_CALM = config.getCurrent().BUFFER_GC_GAPS.CALM;
73
- GC_GAP_BEEFY = config.getCurrent().BUFFER_GC_GAPS.BEEFY;
74
- log.warn("Stream: Running garbage collector");
75
- buffered = bufferingQueue.getBufferedRanges();
76
- cleanedupRanges = selectGCedRanges(currentPosition, buffered, GC_GAP_CALM);
77
- // more aggressive GC if we could not find any range to clean
78
- if (cleanedupRanges.length === 0) {
79
- cleanedupRanges = selectGCedRanges(currentPosition, buffered, GC_GAP_BEEFY);
80
- }
81
- if (log.hasLevel("DEBUG")) {
82
- log.debug("Stream: GC cleaning", cleanedupRanges.map(function (_a) {
83
- var start = _a.start, end = _a.end;
84
- return "start: ".concat(start, " - end ").concat(end);
85
- })
86
- .join(", "));
87
- }
88
- _i = 0, cleanedupRanges_1 = cleanedupRanges;
89
- _a.label = 1;
90
- case 1:
91
- if (!(_i < cleanedupRanges_1.length)) return [3 /*break*/, 4];
92
- range = cleanedupRanges_1[_i];
93
- start = range.start, end = range.end;
94
- if (!(start < end)) return [3 /*break*/, 3];
95
- return [4 /*yield*/, bufferingQueue.removeBuffer(start, end, cancellationSignal)];
96
- case 2:
97
- _a.sent();
98
- _a.label = 3;
99
- case 3:
100
- _i++;
101
- return [3 /*break*/, 1];
102
- case 4: return [2 /*return*/];
103
- }
104
- });
105
- });
32
+ async function forceGarbageCollection(currentPosition, bufferingQueue, cancellationSignal) {
33
+ const GC_GAP_CALM = config_1.default.getCurrent().BUFFER_GC_GAPS.CALM;
34
+ const GC_GAP_BEEFY = config_1.default.getCurrent().BUFFER_GC_GAPS.BEEFY;
35
+ log_1.default.warn("Stream: Running garbage collector");
36
+ const buffered = bufferingQueue.getBufferedRanges();
37
+ let cleanedupRanges = selectGCedRanges(currentPosition, buffered, GC_GAP_CALM);
38
+ // more aggressive GC if we could not find any range to clean
39
+ if (cleanedupRanges.length === 0) {
40
+ cleanedupRanges = selectGCedRanges(currentPosition, buffered, GC_GAP_BEEFY);
41
+ }
42
+ if (log_1.default.hasLevel("DEBUG")) {
43
+ log_1.default.debug("Stream: GC cleaning", cleanedupRanges.map(({ start, end }) => `start: ${start} - end ${end}`)
44
+ .join(", "));
45
+ }
46
+ for (const range of cleanedupRanges) {
47
+ const { start, end } = range;
48
+ if (start < end) {
49
+ await bufferingQueue.removeBuffer(start, end, cancellationSignal);
50
+ }
51
+ }
106
52
  }
53
+ exports.default = forceGarbageCollection;
107
54
  /**
108
55
  * Buffer garbage collector algorithm.
109
56
  *
@@ -118,23 +65,20 @@ export default function forceGarbageCollection(currentPosition, bufferingQueue,
118
65
  * @returns {Array.<Object>} - Ranges selected for clean up
119
66
  */
120
67
  function selectGCedRanges(position, buffered, gcGap) {
121
- var _a = getInnerAndOuterRangesFromBufferedTimeRanges(buffered, position), innerRange = _a.innerRange, outerRanges = _a.outerRanges;
122
- var cleanedupRanges = [];
68
+ const { innerRange, outerRanges } = (0, ranges_1.getInnerAndOuterRangesFromBufferedTimeRanges)(buffered, position);
69
+ const cleanedupRanges = [];
123
70
  // start by trying to remove all ranges that do not contain the
124
71
  // current time and respect the gcGap
125
- for (var i = 0; i < outerRanges.length; i++) {
126
- var outerRange = outerRanges[i];
72
+ for (let i = 0; i < outerRanges.length; i++) {
73
+ const outerRange = outerRanges[i];
127
74
  if ((position - gcGap > outerRange.end) || (position + gcGap < outerRange.start)) {
128
75
  cleanedupRanges.push(outerRange);
129
76
  }
130
77
  }
131
78
  // try to clean up some space in the current range
132
79
  if (innerRange !== null) {
133
- if (log.hasLevel("DEBUG")) {
134
- log.debug("Stream: GC removing part of inner range", cleanedupRanges.map(function (_a) {
135
- var start = _a.start, end = _a.end;
136
- return "start: ".concat(start, " - end ").concat(end);
137
- })
80
+ if (log_1.default.hasLevel("DEBUG")) {
81
+ log_1.default.debug("Stream: GC removing part of inner range", cleanedupRanges.map(({ start, end }) => `start: ${start} - end ${end}`)
138
82
  .join(", "));
139
83
  }
140
84
  if (position - gcGap > innerRange.start) {