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,75 +14,24 @@
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
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
32
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
33
- return new (P || (P = Promise))(function (resolve, reject) {
34
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
35
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
36
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
37
- step((generator = generator.apply(thisArg, _arguments || [])).next());
38
- });
39
- };
40
- var __generator = (this && this.__generator) || function (thisArg, body) {
41
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
42
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
43
- function verb(n) { return function (v) { return step([n, v]); }; }
44
- function step(op) {
45
- if (f) throw new TypeError("Generator is already executing.");
46
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
47
- 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;
48
- if (y = 0, t) op = [op[0] & 2, t.value];
49
- switch (op[0]) {
50
- case 0: case 1: t = op; break;
51
- case 4: _.label++; return { value: op[1], done: false };
52
- case 5: _.label++; y = op[1]; op = [0]; continue;
53
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
54
- default:
55
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
56
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
57
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
58
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
59
- if (t[2]) _.ops.pop();
60
- _.trys.pop(); continue;
61
- }
62
- op = body.call(thisArg, _);
63
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
64
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
65
- }
66
- };
67
- import config from "../../../config";
68
- import { formatError } from "../../../errors";
69
- import log from "../../../log";
70
- import Manifest from "../../../manifest";
71
- import EventEmitter from "../../../utils/event_emitter";
72
- import isNullOrUndefined from "../../../utils/is_null_or_undefined";
73
- import getMonotonicTimeStamp from "../../../utils/monotonic_timestamp";
74
- import noop from "../../../utils/noop";
75
- import TaskCanceller from "../../../utils/task_canceller";
76
- import errorSelector from "../utils/error_selector";
77
- import { scheduleRequestPromise, } from "../utils/schedule_request";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const config_1 = require("../../../config");
19
+ const errors_1 = require("../../../errors");
20
+ const log_1 = require("../../../log");
21
+ const manifest_1 = require("../../../manifest");
22
+ const event_emitter_1 = require("../../../utils/event_emitter");
23
+ const is_null_or_undefined_1 = require("../../../utils/is_null_or_undefined");
24
+ const monotonic_timestamp_1 = require("../../../utils/monotonic_timestamp");
25
+ const noop_1 = require("../../../utils/noop");
26
+ const task_canceller_1 = require("../../../utils/task_canceller");
27
+ const error_selector_1 = require("../utils/error_selector");
28
+ const schedule_request_1 = require("../utils/schedule_request");
78
29
  /**
79
30
  * Class allowing to facilitate the task of loading and parsing a Manifest, as
80
31
  * well as automatically refreshing it.
81
32
  * @class ManifestFetcher
82
33
  */
83
- var ManifestFetcher = /** @class */ (function (_super) {
84
- __extends(ManifestFetcher, _super);
34
+ class ManifestFetcher extends event_emitter_1.default {
85
35
  /**
86
36
  * Construct a new ManifestFetcher.
87
37
  * @param {Array.<string> | undefined} urls - Manifest URLs, will be used when
@@ -92,18 +42,17 @@ var ManifestFetcher = /** @class */ (function (_super) {
92
42
  * Manifest loading and parsing operations.
93
43
  * @param {Object} settings - Configure the `ManifestFetcher`.
94
44
  */
95
- function ManifestFetcher(urls, pipelines, settings) {
96
- var _this = _super.call(this) || this;
97
- _this.scheduleManualRefresh = noop;
98
- _this._manifestUrls = urls;
99
- _this._pipelines = pipelines.manifest;
100
- _this._settings = settings;
101
- _this._canceller = new TaskCanceller();
102
- _this._isStarted = false;
103
- _this._isRefreshPending = false;
104
- _this._consecutiveUnsafeMode = 0;
105
- _this._prioritizedContentUrl = null;
106
- return _this;
45
+ constructor(urls, pipelines, settings) {
46
+ super();
47
+ this.scheduleManualRefresh = noop_1.default;
48
+ this._manifestUrls = urls;
49
+ this._pipelines = pipelines.manifest;
50
+ this._settings = settings;
51
+ this._canceller = new task_canceller_1.default();
52
+ this._isStarted = false;
53
+ this._isRefreshPending = false;
54
+ this._consecutiveUnsafeMode = 0;
55
+ this._prioritizedContentUrl = null;
107
56
  }
108
57
  /**
109
58
  * Free resources and stop refresh mechanism from happening.
@@ -111,10 +60,10 @@ var ManifestFetcher = /** @class */ (function (_super) {
111
60
  * Once `dispose` has been called. This `ManifestFetcher` cannot be relied on
112
61
  * anymore.
113
62
  */
114
- ManifestFetcher.prototype.dispose = function () {
63
+ dispose() {
115
64
  this._canceller.cancel();
116
65
  this.removeEventListener();
117
- };
66
+ }
118
67
  /**
119
68
  * Start requesting the Manifest as well as the Manifest refreshing logic, if
120
69
  * needed.
@@ -122,15 +71,14 @@ var ManifestFetcher = /** @class */ (function (_super) {
122
71
  * Once `start` has been called, this mechanism can only be stopped by calling
123
72
  * `dispose`.
124
73
  */
125
- ManifestFetcher.prototype.start = function () {
126
- var _this = this;
74
+ start() {
127
75
  if (this._isStarted) {
128
76
  return;
129
77
  }
130
78
  this._isStarted = true;
131
- var manifestProm;
132
- var initialManifest = this._settings.initialManifest;
133
- if (initialManifest instanceof Manifest) {
79
+ let manifestProm;
80
+ const initialManifest = this._settings.initialManifest;
81
+ if (initialManifest instanceof manifest_1.default) {
134
82
  manifestProm = Promise.resolve({ manifest: initialManifest });
135
83
  }
136
84
  else if (initialManifest !== undefined) {
@@ -138,19 +86,19 @@ var ManifestFetcher = /** @class */ (function (_super) {
138
86
  }
139
87
  else {
140
88
  manifestProm = this._fetchManifest(undefined)
141
- .then(function (val) {
89
+ .then((val) => {
142
90
  return val.parse({ previousManifest: null, unsafeMode: false });
143
91
  });
144
92
  }
145
93
  manifestProm
146
- .then(function (val) {
147
- _this.trigger("manifestReady", val.manifest);
148
- if (!_this._canceller.isUsed()) {
149
- _this._recursivelyRefreshManifest(val.manifest, val);
94
+ .then((val) => {
95
+ this.trigger("manifestReady", val.manifest);
96
+ if (!this._canceller.isUsed()) {
97
+ this._recursivelyRefreshManifest(val.manifest, val);
150
98
  }
151
99
  })
152
- .catch(function (err) { return _this._onFatalError(err); });
153
- };
100
+ .catch((err) => this._onFatalError(err));
101
+ }
154
102
  /**
155
103
  * Update URL of the fetched Manifest.
156
104
  * @param {Array.<string> | undefined} urls - New Manifest URLs by order of
@@ -158,7 +106,7 @@ var ManifestFetcher = /** @class */ (function (_super) {
158
106
  * @param {boolean} refreshNow - If set to `true`, the next Manifest refresh
159
107
  * will be triggered immediately.
160
108
  */
161
- ManifestFetcher.prototype.updateContentUrls = function (urls, refreshNow) {
109
+ updateContentUrls(urls, refreshNow) {
162
110
  var _a;
163
111
  this._prioritizedContentUrl = (_a = urls === null || urls === void 0 ? void 0 : urls[0]) !== null && _a !== void 0 ? _a : undefined;
164
112
  if (refreshNow) {
@@ -168,7 +116,7 @@ var ManifestFetcher = /** @class */ (function (_super) {
168
116
  canUseUnsafeMode: false,
169
117
  });
170
118
  }
171
- };
119
+ }
172
120
  /**
173
121
  * (re-)Load the Manifest.
174
122
  * This method does not yet parse it, parsing will then be available through
@@ -181,58 +129,46 @@ var ManifestFetcher = /** @class */ (function (_super) {
181
129
  * @param {string | undefined} url
182
130
  * @returns {Promise}
183
131
  */
184
- ManifestFetcher.prototype._fetchManifest = function (url) {
132
+ async _fetchManifest(url) {
185
133
  var _a;
186
- return __awaiter(this, void 0, void 0, function () {
187
- /**
188
- * Call the loader part of the pipeline, retrying if it fails according
189
- * to the current settings.
190
- * Returns the Promise of the last attempt.
191
- * @param {string | undefined} manifestUrl
192
- * @returns {Promise}
193
- */
194
- function callLoaderWithRetries(manifestUrl) {
195
- var loadManifest = pipelines.loadManifest;
196
- var requestTimeout = isNullOrUndefined(settings.requestTimeout) ?
197
- config.getCurrent().DEFAULT_REQUEST_TIMEOUT :
198
- settings.requestTimeout;
199
- if (requestTimeout < 0) {
200
- requestTimeout = undefined;
201
- }
202
- var callLoader = function () { return loadManifest(manifestUrl, { timeout: requestTimeout }, cancelSignal); };
203
- return scheduleRequestPromise(callLoader, backoffSettings, cancelSignal);
204
- }
205
- var cancelSignal, settings, pipelines, requestUrl, backoffSettings, response_1, err_1;
206
- var _this = this;
207
- return __generator(this, function (_b) {
208
- switch (_b.label) {
209
- case 0:
210
- cancelSignal = this._canceller.signal;
211
- settings = this._settings;
212
- pipelines = this._pipelines;
213
- requestUrl = url !== null && url !== void 0 ? url : (_a = this._manifestUrls) === null || _a === void 0 ? void 0 : _a[0];
214
- backoffSettings = this._getBackoffSetting(function (err) {
215
- _this.trigger("warning", errorSelector(err));
216
- });
217
- _b.label = 1;
218
- case 1:
219
- _b.trys.push([1, 3, , 4]);
220
- return [4 /*yield*/, callLoaderWithRetries(requestUrl)];
221
- case 2:
222
- response_1 = _b.sent();
223
- return [2 /*return*/, {
224
- parse: function (parserOptions) {
225
- return _this._parseLoadedManifest(response_1, parserOptions, requestUrl);
226
- },
227
- }];
228
- case 3:
229
- err_1 = _b.sent();
230
- throw errorSelector(err_1);
231
- case 4: return [2 /*return*/];
232
- }
233
- });
134
+ const cancelSignal = this._canceller.signal;
135
+ const settings = this._settings;
136
+ const pipelines = this._pipelines;
137
+ // TODO Better handle multiple Manifest URLs
138
+ const requestUrl = url !== null && url !== void 0 ? url : (_a = this._manifestUrls) === null || _a === void 0 ? void 0 : _a[0];
139
+ const backoffSettings = this._getBackoffSetting((err) => {
140
+ this.trigger("warning", (0, error_selector_1.default)(err));
234
141
  });
235
- };
142
+ try {
143
+ const response = await callLoaderWithRetries(requestUrl);
144
+ return {
145
+ parse: (parserOptions) => {
146
+ return this._parseLoadedManifest(response, parserOptions, requestUrl);
147
+ },
148
+ };
149
+ }
150
+ catch (err) {
151
+ throw (0, error_selector_1.default)(err);
152
+ }
153
+ /**
154
+ * Call the loader part of the pipeline, retrying if it fails according
155
+ * to the current settings.
156
+ * Returns the Promise of the last attempt.
157
+ * @param {string | undefined} manifestUrl
158
+ * @returns {Promise}
159
+ */
160
+ function callLoaderWithRetries(manifestUrl) {
161
+ const { loadManifest } = pipelines;
162
+ let requestTimeout = (0, is_null_or_undefined_1.default)(settings.requestTimeout) ?
163
+ config_1.default.getCurrent().DEFAULT_REQUEST_TIMEOUT :
164
+ settings.requestTimeout;
165
+ if (requestTimeout < 0) {
166
+ requestTimeout = undefined;
167
+ }
168
+ const callLoader = () => loadManifest(manifestUrl, { timeout: requestTimeout }, cancelSignal);
169
+ return (0, schedule_request_1.scheduleRequestPromise)(callLoader, backoffSettings, cancelSignal);
170
+ }
171
+ }
236
172
  /**
237
173
  * Parse an already loaded Manifest.
238
174
  *
@@ -245,11 +181,11 @@ var ManifestFetcher = /** @class */ (function (_super) {
245
181
  * @param {string | undefined} originalUrl
246
182
  * @returns {Promise}
247
183
  */
248
- ManifestFetcher.prototype.parse = function (manifest, parserOptions, originalUrl) {
184
+ parse(manifest, parserOptions, originalUrl) {
249
185
  return this._parseLoadedManifest({ responseData: manifest,
250
186
  size: undefined,
251
187
  requestDuration: undefined }, parserOptions, originalUrl);
252
- };
188
+ }
253
189
  /**
254
190
  * Parse a Manifest.
255
191
  *
@@ -259,132 +195,115 @@ var ManifestFetcher = /** @class */ (function (_super) {
259
195
  * @param {string | undefined} requestUrl
260
196
  * @returns {Promise}
261
197
  */
262
- ManifestFetcher.prototype._parseLoadedManifest = function (loaded, parserOptions, requestUrl) {
198
+ async _parseLoadedManifest(loaded, parserOptions, requestUrl) {
263
199
  var _a;
264
- return __awaiter(this, void 0, void 0, function () {
265
- /**
266
- * Perform a request with the same retry mechanisms and error handling
267
- * than for a Manifest loader.
268
- * @param {Function} performRequest
269
- * @returns {Function}
270
- */
271
- function scheduleRequest(performRequest) {
272
- return __awaiter(this, void 0, void 0, function () {
273
- var data, err_3;
274
- return __generator(this, function (_a) {
275
- switch (_a.label) {
276
- case 0:
277
- _a.trys.push([0, 2, , 3]);
278
- return [4 /*yield*/, scheduleRequestPromise(performRequest, backoffSettings, cancelSignal)];
279
- case 1:
280
- data = _a.sent();
281
- return [2 /*return*/, data];
282
- case 2:
283
- err_3 = _a.sent();
284
- throw errorSelector(err_3);
285
- case 3: return [2 /*return*/];
286
- }
287
- });
288
- });
200
+ const parsingTimeStart = (0, monotonic_timestamp_1.default)();
201
+ const cancelSignal = this._canceller.signal;
202
+ const trigger = this.trigger.bind(this);
203
+ const { sendingTime, receivedTime } = loaded;
204
+ const backoffSettings = this._getBackoffSetting((err) => {
205
+ this.trigger("warning", (0, error_selector_1.default)(err));
206
+ });
207
+ const originalUrl = requestUrl !== null && requestUrl !== void 0 ? requestUrl : (_a = this._manifestUrls) === null || _a === void 0 ? void 0 : _a[0];
208
+ const opts = { externalClockOffset: parserOptions.externalClockOffset,
209
+ unsafeMode: parserOptions.unsafeMode,
210
+ previousManifest: parserOptions.previousManifest,
211
+ originalUrl };
212
+ try {
213
+ const res = this._pipelines.parseManifest(loaded, opts, onWarnings, cancelSignal, scheduleRequest);
214
+ if (!isPromise(res)) {
215
+ return finish(res.manifest, res.warnings);
289
216
  }
290
- /**
291
- * Handle minor errors encountered by a Manifest parser.
292
- * @param {Array.<Error>} warnings
293
- */
294
- function onWarnings(warnings) {
295
- for (var _i = 0, warnings_1 = warnings; _i < warnings_1.length; _i++) {
296
- var warning = warnings_1[_i];
297
- if (cancelSignal.isCancelled()) {
298
- return;
299
- }
300
- var formattedError = formatError(warning, {
301
- defaultCode: "PIPELINE_PARSE_ERROR",
302
- defaultReason: "Unknown error when parsing the Manifest",
303
- });
304
- trigger("warning", formattedError);
305
- }
217
+ else {
218
+ const { manifest, warnings } = await res;
219
+ return finish(manifest, warnings);
306
220
  }
307
- /**
308
- * Emit a formatted "parsed" event through `obs`.
309
- * To call once the Manifest has been parsed.
310
- * @param {Object} manifest
311
- */
312
- function finish(manifest, warnings) {
313
- onWarnings(warnings);
314
- var parsingTime = getMonotonicTimeStamp() - parsingTimeStart;
315
- log.info("MF: Manifest parsed in ".concat(parsingTime, "ms"));
316
- return { manifest: manifest, sendingTime: sendingTime, receivedTime: receivedTime, parsingTime: parsingTime };
221
+ }
222
+ catch (err) {
223
+ const formattedError = (0, errors_1.formatError)(err, {
224
+ defaultCode: "PIPELINE_PARSE_ERROR",
225
+ defaultReason: "Unknown error when parsing the Manifest",
226
+ });
227
+ throw formattedError;
228
+ }
229
+ /**
230
+ * Perform a request with the same retry mechanisms and error handling
231
+ * than for a Manifest loader.
232
+ * @param {Function} performRequest
233
+ * @returns {Function}
234
+ */
235
+ async function scheduleRequest(performRequest) {
236
+ try {
237
+ const data = await (0, schedule_request_1.scheduleRequestPromise)(performRequest, backoffSettings, cancelSignal);
238
+ return data;
317
239
  }
318
- var parsingTimeStart, cancelSignal, trigger, sendingTime, receivedTime, backoffSettings, originalUrl, opts, res, _b, manifest, warnings, err_2, formattedError;
319
- var _this = this;
320
- return __generator(this, function (_c) {
321
- switch (_c.label) {
322
- case 0:
323
- parsingTimeStart = getMonotonicTimeStamp();
324
- cancelSignal = this._canceller.signal;
325
- trigger = this.trigger.bind(this);
326
- sendingTime = loaded.sendingTime, receivedTime = loaded.receivedTime;
327
- backoffSettings = this._getBackoffSetting(function (err) {
328
- _this.trigger("warning", errorSelector(err));
329
- });
330
- originalUrl = requestUrl !== null && requestUrl !== void 0 ? requestUrl : (_a = this._manifestUrls) === null || _a === void 0 ? void 0 : _a[0];
331
- opts = { externalClockOffset: parserOptions.externalClockOffset,
332
- unsafeMode: parserOptions.unsafeMode,
333
- previousManifest: parserOptions.previousManifest, originalUrl: originalUrl };
334
- _c.label = 1;
335
- case 1:
336
- _c.trys.push([1, 5, , 6]);
337
- res = this._pipelines.parseManifest(loaded, opts, onWarnings, cancelSignal, scheduleRequest);
338
- if (!!isPromise(res)) return [3 /*break*/, 2];
339
- return [2 /*return*/, finish(res.manifest, res.warnings)];
340
- case 2: return [4 /*yield*/, res];
341
- case 3:
342
- _b = _c.sent(), manifest = _b.manifest, warnings = _b.warnings;
343
- return [2 /*return*/, finish(manifest, warnings)];
344
- case 4: return [3 /*break*/, 6];
345
- case 5:
346
- err_2 = _c.sent();
347
- formattedError = formatError(err_2, {
348
- defaultCode: "PIPELINE_PARSE_ERROR",
349
- defaultReason: "Unknown error when parsing the Manifest",
350
- });
351
- throw formattedError;
352
- case 6: return [2 /*return*/];
240
+ catch (err) {
241
+ throw (0, error_selector_1.default)(err);
242
+ }
243
+ }
244
+ /**
245
+ * Handle minor errors encountered by a Manifest parser.
246
+ * @param {Array.<Error>} warnings
247
+ */
248
+ function onWarnings(warnings) {
249
+ for (const warning of warnings) {
250
+ if (cancelSignal.isCancelled()) {
251
+ return;
353
252
  }
354
- });
355
- });
356
- };
253
+ const formattedError = (0, errors_1.formatError)(warning, {
254
+ defaultCode: "PIPELINE_PARSE_ERROR",
255
+ defaultReason: "Unknown error when parsing the Manifest",
256
+ });
257
+ trigger("warning", formattedError);
258
+ }
259
+ }
260
+ /**
261
+ * Emit a formatted "parsed" event through `obs`.
262
+ * To call once the Manifest has been parsed.
263
+ * @param {Object} manifest
264
+ */
265
+ function finish(manifest, warnings) {
266
+ onWarnings(warnings);
267
+ const parsingTime = (0, monotonic_timestamp_1.default)() - parsingTimeStart;
268
+ log_1.default.info(`MF: Manifest parsed in ${parsingTime}ms`);
269
+ return { manifest,
270
+ sendingTime,
271
+ receivedTime,
272
+ parsingTime };
273
+ }
274
+ }
357
275
  /**
358
276
  * Construct "backoff settings" that can be used with a range of functions
359
277
  * allowing to perform multiple request attempts
360
278
  * @param {Function} onRetry
361
279
  * @returns {Object}
362
280
  */
363
- ManifestFetcher.prototype._getBackoffSetting = function (onRetry) {
364
- var _a = config.getCurrent(), DEFAULT_MAX_MANIFEST_REQUEST_RETRY = _a.DEFAULT_MAX_MANIFEST_REQUEST_RETRY, INITIAL_BACKOFF_DELAY_BASE = _a.INITIAL_BACKOFF_DELAY_BASE, MAX_BACKOFF_DELAY_BASE = _a.MAX_BACKOFF_DELAY_BASE;
365
- var _b = this._settings, lowLatencyMode = _b.lowLatencyMode, ogRegular = _b.maxRetry;
366
- var baseDelay = lowLatencyMode ? INITIAL_BACKOFF_DELAY_BASE.LOW_LATENCY :
281
+ _getBackoffSetting(onRetry) {
282
+ const { DEFAULT_MAX_MANIFEST_REQUEST_RETRY, INITIAL_BACKOFF_DELAY_BASE, MAX_BACKOFF_DELAY_BASE } = config_1.default.getCurrent();
283
+ const { lowLatencyMode, maxRetry: ogRegular } = this._settings;
284
+ const baseDelay = lowLatencyMode ? INITIAL_BACKOFF_DELAY_BASE.LOW_LATENCY :
367
285
  INITIAL_BACKOFF_DELAY_BASE.REGULAR;
368
- var maxDelay = lowLatencyMode ? MAX_BACKOFF_DELAY_BASE.LOW_LATENCY :
286
+ const maxDelay = lowLatencyMode ? MAX_BACKOFF_DELAY_BASE.LOW_LATENCY :
369
287
  MAX_BACKOFF_DELAY_BASE.REGULAR;
370
- var maxRetry = ogRegular !== null && ogRegular !== void 0 ? ogRegular : DEFAULT_MAX_MANIFEST_REQUEST_RETRY;
371
- return { onRetry: onRetry, baseDelay: baseDelay, maxDelay: maxDelay, maxRetry: maxRetry };
372
- };
288
+ const maxRetry = ogRegular !== null && ogRegular !== void 0 ? ogRegular : DEFAULT_MAX_MANIFEST_REQUEST_RETRY;
289
+ return { onRetry,
290
+ baseDelay,
291
+ maxDelay,
292
+ maxRetry };
293
+ }
373
294
  /**
374
295
  * Performs Manifest refresh (recursively) when it judges it is time to do so.
375
296
  * @param {Object} manifest
376
297
  * @param {Object} manifestRequestInfos - Various information linked to the
377
298
  * last Manifest loading and parsing operations.
378
299
  */
379
- ManifestFetcher.prototype._recursivelyRefreshManifest = function (manifest, _a) {
380
- var _this = this;
381
- var sendingTime = _a.sendingTime, parsingTime = _a.parsingTime, updatingTime = _a.updatingTime;
382
- var _b = config.getCurrent(), MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE = _b.MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE, MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE = _b.MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE;
300
+ _recursivelyRefreshManifest(manifest, { sendingTime, parsingTime, updatingTime }) {
301
+ const { MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE, MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE } = config_1.default.getCurrent();
383
302
  /**
384
303
  * Total time taken to fully update the last Manifest, in milliseconds.
385
304
  * Note: this time also includes possible requests done by the parsers.
386
305
  */
387
- var totalUpdateTime = parsingTime !== undefined ?
306
+ const totalUpdateTime = parsingTime !== undefined ?
388
307
  parsingTime + (updatingTime !== null && updatingTime !== void 0 ? updatingTime : 0) :
389
308
  undefined;
390
309
  /**
@@ -395,56 +314,56 @@ var ManifestFetcher = /** @class */ (function (_super) {
395
314
  * Only perform parsing in `unsafeMode` when the last full parsing took a
396
315
  * lot of time and do not go higher than the maximum consecutive time.
397
316
  */
398
- var unsafeModeEnabled = this._consecutiveUnsafeMode > 0 ?
317
+ const unsafeModeEnabled = this._consecutiveUnsafeMode > 0 ?
399
318
  this._consecutiveUnsafeMode < MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE :
400
319
  totalUpdateTime !== undefined ?
401
320
  (totalUpdateTime >= MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE) :
402
321
  false;
403
322
  /** Time elapsed since the beginning of the Manifest request, in milliseconds. */
404
- var timeSinceRequest = sendingTime === undefined ?
323
+ const timeSinceRequest = sendingTime === undefined ?
405
324
  0 :
406
- getMonotonicTimeStamp() - sendingTime;
325
+ (0, monotonic_timestamp_1.default)() - sendingTime;
407
326
  /** Minimum update delay we should not go below, in milliseconds. */
408
- var minInterval = Math.max(this._settings.minimumManifestUpdateInterval -
327
+ const minInterval = Math.max(this._settings.minimumManifestUpdateInterval -
409
328
  timeSinceRequest, 0);
410
329
  /**
411
330
  * Multiple refresh trigger are scheduled here, but only the first one should
412
331
  * be effectively considered.
413
332
  * `nextRefreshCanceller` will allow to cancel every other when one is triggered.
414
333
  */
415
- var nextRefreshCanceller = new TaskCanceller();
334
+ const nextRefreshCanceller = new task_canceller_1.default();
416
335
  nextRefreshCanceller.linkToSignal(this._canceller.signal);
417
336
  /* Function to manually schedule a Manifest refresh */
418
- this.scheduleManualRefresh = function (settings) {
419
- var enablePartialRefresh = settings.enablePartialRefresh, delay = settings.delay, canUseUnsafeMode = settings.canUseUnsafeMode;
420
- var unsafeMode = canUseUnsafeMode && unsafeModeEnabled;
337
+ this.scheduleManualRefresh = (settings) => {
338
+ const { enablePartialRefresh, delay, canUseUnsafeMode } = settings;
339
+ const unsafeMode = canUseUnsafeMode && unsafeModeEnabled;
421
340
  // The value allows to set a delay relatively to the last Manifest refresh
422
341
  // (to avoid asking for it too often).
423
- var timeSinceLastRefresh = sendingTime === undefined ?
342
+ const timeSinceLastRefresh = sendingTime === undefined ?
424
343
  0 :
425
- getMonotonicTimeStamp() - sendingTime;
426
- var _minInterval = Math.max(_this._settings.minimumManifestUpdateInterval -
344
+ (0, monotonic_timestamp_1.default)() - sendingTime;
345
+ const _minInterval = Math.max(this._settings.minimumManifestUpdateInterval -
427
346
  timeSinceLastRefresh, 0);
428
- var timeoutId = setTimeout(function () {
347
+ const timeoutId = setTimeout(() => {
429
348
  nextRefreshCanceller.cancel();
430
- _this._triggerNextManifestRefresh(manifest, { enablePartialRefresh: enablePartialRefresh, unsafeMode: unsafeMode });
349
+ this._triggerNextManifestRefresh(manifest, { enablePartialRefresh, unsafeMode });
431
350
  }, Math.max((delay !== null && delay !== void 0 ? delay : 0) - timeSinceLastRefresh, _minInterval));
432
- nextRefreshCanceller.signal.register(function () {
351
+ nextRefreshCanceller.signal.register(() => {
433
352
  clearTimeout(timeoutId);
434
353
  });
435
354
  };
436
355
  /* Handle Manifest expiration. */
437
356
  if (manifest.expired !== null) {
438
- var timeoutId_1 = setTimeout(function () {
357
+ const timeoutId = setTimeout(() => {
439
358
  var _a;
440
- (_a = manifest.expired) === null || _a === void 0 ? void 0 : _a.then(function () {
359
+ (_a = manifest.expired) === null || _a === void 0 ? void 0 : _a.then(() => {
441
360
  nextRefreshCanceller.cancel();
442
- _this._triggerNextManifestRefresh(manifest, { enablePartialRefresh: false,
361
+ this._triggerNextManifestRefresh(manifest, { enablePartialRefresh: false,
443
362
  unsafeMode: unsafeModeEnabled });
444
- }, noop /* `expired` should not reject */);
363
+ }, noop_1.default /* `expired` should not reject */);
445
364
  }, minInterval);
446
- nextRefreshCanceller.signal.register(function () {
447
- clearTimeout(timeoutId_1);
365
+ nextRefreshCanceller.signal.register(() => {
366
+ clearTimeout(timeoutId);
448
367
  });
449
368
  }
450
369
  /*
@@ -454,9 +373,9 @@ var ManifestFetcher = /** @class */ (function (_super) {
454
373
  */
455
374
  if (manifest.lifetime !== undefined && manifest.lifetime >= 0) {
456
375
  /** Regular refresh delay as asked by the Manifest. */
457
- var regularRefreshDelay = manifest.lifetime * 1000 - timeSinceRequest;
376
+ const regularRefreshDelay = manifest.lifetime * 1000 - timeSinceRequest;
458
377
  /** Actually choosen delay to refresh the Manifest. */
459
- var actualRefreshInterval = void 0;
378
+ let actualRefreshInterval;
460
379
  if (totalUpdateTime === undefined) {
461
380
  actualRefreshInterval = regularRefreshDelay;
462
381
  }
@@ -473,7 +392,7 @@ var ManifestFetcher = /** @class */ (function (_super) {
473
392
  // This avoid perpetually postponing a Manifest update when
474
393
  // performance seems to have been abysmal one time.
475
394
  regularRefreshDelay * 6);
476
- log.info("MUS: Manifest update rythm is too frequent. Postponing next request.", regularRefreshDelay, actualRefreshInterval);
395
+ log_1.default.info("MUS: Manifest update rythm is too frequent. Postponing next request.", regularRefreshDelay, actualRefreshInterval);
477
396
  }
478
397
  else if (totalUpdateTime >= (manifest.lifetime * 1000) / 10) {
479
398
  // If Manifest updating time is very long relative to its lifetime,
@@ -486,21 +405,21 @@ var ManifestFetcher = /** @class */ (function (_super) {
486
405
  // This avoid perpetually postponing a Manifest update when
487
406
  // performance seems to have been abysmal one time.
488
407
  regularRefreshDelay * 6);
489
- log.info("MUS: Manifest took too long to parse. Postponing next request", actualRefreshInterval, actualRefreshInterval);
408
+ log_1.default.info("MUS: Manifest took too long to parse. Postponing next request", actualRefreshInterval, actualRefreshInterval);
490
409
  }
491
410
  else {
492
411
  actualRefreshInterval = regularRefreshDelay;
493
412
  }
494
- var timeoutId_2 = setTimeout(function () {
413
+ const timeoutId = setTimeout(() => {
495
414
  nextRefreshCanceller.cancel();
496
- _this._triggerNextManifestRefresh(manifest, { enablePartialRefresh: false,
415
+ this._triggerNextManifestRefresh(manifest, { enablePartialRefresh: false,
497
416
  unsafeMode: unsafeModeEnabled });
498
417
  }, Math.max(actualRefreshInterval, minInterval));
499
- nextRefreshCanceller.signal.register(function () {
500
- clearTimeout(timeoutId_2);
418
+ nextRefreshCanceller.signal.register(() => {
419
+ clearTimeout(timeoutId);
501
420
  });
502
421
  }
503
- };
422
+ }
504
423
  /**
505
424
  * Refresh the Manifest, performing a full update if a partial update failed.
506
425
  * Also re-call `recursivelyRefreshManifest` to schedule the next refresh
@@ -508,12 +427,10 @@ var ManifestFetcher = /** @class */ (function (_super) {
508
427
  * @param {Object} manifest
509
428
  * @param {Object} refreshInformation
510
429
  */
511
- ManifestFetcher.prototype._triggerNextManifestRefresh = function (manifest, _a) {
512
- var _this = this;
513
- var enablePartialRefresh = _a.enablePartialRefresh, unsafeMode = _a.unsafeMode;
514
- var manifestUpdateUrl = manifest.updateUrl;
515
- var fullRefresh;
516
- var refreshURL;
430
+ _triggerNextManifestRefresh(manifest, { enablePartialRefresh, unsafeMode }) {
431
+ const manifestUpdateUrl = manifest.updateUrl;
432
+ let fullRefresh;
433
+ let refreshURL;
517
434
  if (this._prioritizedContentUrl !== null) {
518
435
  fullRefresh = true;
519
436
  refreshURL = this._prioritizedContentUrl;
@@ -524,14 +441,14 @@ var ManifestFetcher = /** @class */ (function (_super) {
524
441
  refreshURL = fullRefresh ? manifest.getUrls()[0] :
525
442
  manifestUpdateUrl;
526
443
  }
527
- var externalClockOffset = manifest.clockOffset;
444
+ const externalClockOffset = manifest.clockOffset;
528
445
  if (unsafeMode) {
529
446
  this._consecutiveUnsafeMode += 1;
530
- log.info("Init: Refreshing the Manifest in \"unsafeMode\" for the " +
447
+ log_1.default.info("Init: Refreshing the Manifest in \"unsafeMode\" for the " +
531
448
  String(this._consecutiveUnsafeMode) + " consecutive time.");
532
449
  }
533
450
  else if (this._consecutiveUnsafeMode > 0) {
534
- log.info("Init: Not parsing the Manifest in \"unsafeMode\" anymore after " +
451
+ log_1.default.info("Init: Not parsing the Manifest in \"unsafeMode\" anymore after " +
535
452
  String(this._consecutiveUnsafeMode) + " consecutive times.");
536
453
  this._consecutiveUnsafeMode = 0;
537
454
  }
@@ -540,11 +457,13 @@ var ManifestFetcher = /** @class */ (function (_super) {
540
457
  }
541
458
  this._isRefreshPending = true;
542
459
  this._fetchManifest(refreshURL)
543
- .then(function (res) { return res.parse({ externalClockOffset: externalClockOffset, previousManifest: manifest, unsafeMode: unsafeMode }); })
544
- .then(function (res) {
545
- _this._isRefreshPending = false;
546
- var newManifest = res.manifest, newSendingTime = res.sendingTime, parsingTime = res.parsingTime;
547
- var updateTimeStart = getMonotonicTimeStamp();
460
+ .then(res => res.parse({ externalClockOffset,
461
+ previousManifest: manifest,
462
+ unsafeMode }))
463
+ .then(res => {
464
+ this._isRefreshPending = false;
465
+ const { manifest: newManifest, sendingTime: newSendingTime, parsingTime } = res;
466
+ const updateTimeStart = (0, monotonic_timestamp_1.default)();
548
467
  if (fullRefresh) {
549
468
  manifest.replace(newManifest);
550
469
  }
@@ -553,48 +472,49 @@ var ManifestFetcher = /** @class */ (function (_super) {
553
472
  manifest.update(newManifest);
554
473
  }
555
474
  catch (e) {
556
- var message = e instanceof Error ? e.message :
475
+ const message = e instanceof Error ? e.message :
557
476
  "unknown error";
558
- log.warn("MUS: Attempt to update Manifest failed: ".concat(message), "Re-downloading the Manifest fully");
559
- var FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY = config.getCurrent().FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY;
477
+ log_1.default.warn(`MUS: Attempt to update Manifest failed: ${message}`, "Re-downloading the Manifest fully");
478
+ const { FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY } = config_1.default.getCurrent();
560
479
  // The value allows to set a delay relatively to the last Manifest refresh
561
480
  // (to avoid asking for it too often).
562
- var timeSinceLastRefresh = newSendingTime === undefined ?
481
+ const timeSinceLastRefresh = newSendingTime === undefined ?
563
482
  0 :
564
- getMonotonicTimeStamp() - newSendingTime;
565
- var _minInterval = Math.max(_this._settings.minimumManifestUpdateInterval -
483
+ (0, monotonic_timestamp_1.default)() - newSendingTime;
484
+ const _minInterval = Math.max(this._settings.minimumManifestUpdateInterval -
566
485
  timeSinceLastRefresh, 0);
567
- var unregisterCanceller_1 = noop;
568
- var timeoutId_3 = setTimeout(function () {
569
- unregisterCanceller_1();
570
- _this._triggerNextManifestRefresh(manifest, { enablePartialRefresh: false,
486
+ let unregisterCanceller = noop_1.default;
487
+ const timeoutId = setTimeout(() => {
488
+ unregisterCanceller();
489
+ this._triggerNextManifestRefresh(manifest, { enablePartialRefresh: false,
571
490
  unsafeMode: false });
572
491
  }, Math.max(FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY -
573
492
  timeSinceLastRefresh, _minInterval));
574
- unregisterCanceller_1 = _this._canceller.signal.register(function () {
575
- clearTimeout(timeoutId_3);
493
+ unregisterCanceller = this._canceller.signal.register(() => {
494
+ clearTimeout(timeoutId);
576
495
  });
577
496
  return;
578
497
  }
579
498
  }
580
- var updatingTime = getMonotonicTimeStamp() - updateTimeStart;
581
- _this._recursivelyRefreshManifest(manifest, { sendingTime: newSendingTime, parsingTime: parsingTime, updatingTime: updatingTime });
499
+ const updatingTime = (0, monotonic_timestamp_1.default)() - updateTimeStart;
500
+ this._recursivelyRefreshManifest(manifest, { sendingTime: newSendingTime,
501
+ parsingTime,
502
+ updatingTime });
582
503
  })
583
- .catch(function (err) {
584
- _this._isRefreshPending = false;
585
- _this._onFatalError(err);
504
+ .catch((err) => {
505
+ this._isRefreshPending = false;
506
+ this._onFatalError(err);
586
507
  });
587
- };
588
- ManifestFetcher.prototype._onFatalError = function (err) {
508
+ }
509
+ _onFatalError(err) {
589
510
  if (this._canceller.isUsed()) {
590
511
  return;
591
512
  }
592
513
  this.trigger("error", err);
593
514
  this.dispose();
594
- };
595
- return ManifestFetcher;
596
- }(EventEmitter));
597
- export default ManifestFetcher;
515
+ }
516
+ }
517
+ exports.default = ManifestFetcher;
598
518
  /**
599
519
  * Returns `true` when the returned value seems to be a Promise instance, as
600
520
  * created by the RxPlayer.