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,33 +14,34 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- import log from "../../../log";
17
- import { SUPPORTED_ADAPTATIONS_TYPE } from "../../../manifest";
18
- import arrayIncludes from "../../../utils/array_includes";
19
- import assert from "../../../utils/assert";
20
- import { concat, itobe4, } from "../../../utils/byte_parsing";
21
- import isNonEmptyString from "../../../utils/is_non_empty_string";
22
- import getMonotonicTimeStamp from "../../../utils/monotonic_timestamp";
23
- import objectAssign from "../../../utils/object_assign";
24
- import { getFilenameIndexInUrl } from "../../../utils/resolve_url";
25
- import { hexToBytes } from "../../../utils/string_parsing";
26
- import takeFirstSet from "../../../utils/take_first_set";
27
- import { createBox } from "../../containers/isobmff";
28
- import checkManifestIDs from "../utils/check_manifest_ids";
29
- import { getAudioCodecs, getVideoCodecs, } from "./get_codecs";
30
- import parseCNodes from "./parse_C_nodes";
31
- import parseProtectionNode from "./parse_protection_node";
32
- import RepresentationIndex from "./representation_index";
33
- import SharedSmoothSegmentTimeline from "./shared_smooth_segment_timeline";
34
- import parseBoolean from "./utils/parseBoolean";
35
- import reduceChildren from "./utils/reduceChildren";
36
- import { replaceRepresentationSmoothTokens } from "./utils/tokens";
37
- var DEFAULT_MIME_TYPES = {
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const log_1 = require("../../../log");
19
+ const manifest_1 = require("../../../manifest");
20
+ const array_includes_1 = require("../../../utils/array_includes");
21
+ const assert_1 = require("../../../utils/assert");
22
+ const byte_parsing_1 = require("../../../utils/byte_parsing");
23
+ const is_non_empty_string_1 = require("../../../utils/is_non_empty_string");
24
+ const monotonic_timestamp_1 = require("../../../utils/monotonic_timestamp");
25
+ const object_assign_1 = require("../../../utils/object_assign");
26
+ const resolve_url_1 = require("../../../utils/resolve_url");
27
+ const string_parsing_1 = require("../../../utils/string_parsing");
28
+ const take_first_set_1 = require("../../../utils/take_first_set");
29
+ const isobmff_1 = require("../../containers/isobmff");
30
+ const check_manifest_ids_1 = require("../utils/check_manifest_ids");
31
+ const get_codecs_1 = require("./get_codecs");
32
+ const parse_C_nodes_1 = require("./parse_C_nodes");
33
+ const parse_protection_node_1 = require("./parse_protection_node");
34
+ const representation_index_1 = require("./representation_index");
35
+ const shared_smooth_segment_timeline_1 = require("./shared_smooth_segment_timeline");
36
+ const parseBoolean_1 = require("./utils/parseBoolean");
37
+ const reduceChildren_1 = require("./utils/reduceChildren");
38
+ const tokens_1 = require("./utils/tokens");
39
+ const DEFAULT_MIME_TYPES = {
38
40
  audio: "audio/mp4",
39
41
  video: "video/mp4",
40
42
  text: "application/ttml+xml",
41
43
  };
42
- var MIME_TYPES = {
44
+ const MIME_TYPES = {
43
45
  AACL: "audio/mp4",
44
46
  AVC1: "video/mp4",
45
47
  H264: "video/mp4",
@@ -50,16 +52,15 @@ var MIME_TYPES = {
50
52
  * @param {Object|undefined} parserOptions
51
53
  * @returns {Function}
52
54
  */
53
- function createSmoothStreamingParser(parserOptions) {
54
- if (parserOptions === void 0) { parserOptions = {}; }
55
- var referenceDateTime = parserOptions.referenceDateTime === undefined ?
55
+ function createSmoothStreamingParser(parserOptions = {}) {
56
+ const referenceDateTime = parserOptions.referenceDateTime === undefined ?
56
57
  Date.UTC(1970, 0, 1, 0, 0, 0, 0) / 1000 :
57
58
  parserOptions.referenceDateTime;
58
- var minRepresentationBitrate = parserOptions.minRepresentationBitrate === undefined ?
59
+ const minRepresentationBitrate = parserOptions.minRepresentationBitrate === undefined ?
59
60
  0 :
60
61
  parserOptions.minRepresentationBitrate;
61
- var serverSyncInfos = parserOptions.serverSyncInfos;
62
- var serverTimeOffset = serverSyncInfos !== undefined ?
62
+ const { serverSyncInfos } = parserOptions;
63
+ const serverTimeOffset = serverSyncInfos !== undefined ?
63
64
  serverSyncInfos.serverTimestamp - serverSyncInfos.clientTime :
64
65
  undefined;
65
66
  /**
@@ -68,14 +69,14 @@ function createSmoothStreamingParser(parserOptions) {
68
69
  * @return {Object}
69
70
  */
70
71
  function parseQualityLevel(q, streamType) {
71
- var customAttributes = reduceChildren(q, function (acc, qName, qNode) {
72
+ const customAttributes = (0, reduceChildren_1.default)(q, (acc, qName, qNode) => {
72
73
  if (qName === "CustomAttributes") {
73
- acc.push.apply(acc, reduceChildren(qNode, function (cAttrs, cName, cNode) {
74
+ acc.push(...(0, reduceChildren_1.default)(qNode, (cAttrs, cName, cNode) => {
74
75
  if (cName === "Attribute") {
75
- var name_1 = cNode.getAttribute("Name");
76
- var value = cNode.getAttribute("Value");
77
- if (name_1 !== null && value !== null) {
78
- cAttrs.push(name_1 + "=" + value);
76
+ const name = cNode.getAttribute("Name");
77
+ const value = cNode.getAttribute("Value");
78
+ if (name !== null && value !== null) {
79
+ cAttrs.push(name + "=" + value);
79
80
  }
80
81
  }
81
82
  return cAttrs;
@@ -88,38 +89,38 @@ function createSmoothStreamingParser(parserOptions) {
88
89
  * @returns {string|undefined}
89
90
  */
90
91
  function getAttribute(name) {
91
- var attr = q.getAttribute(name);
92
+ const attr = q.getAttribute(name);
92
93
  return attr == null ? undefined : attr;
93
94
  }
94
95
  switch (streamType) {
95
96
  case "audio": {
96
- var audiotag = getAttribute("AudioTag");
97
- var bitsPerSample = getAttribute("BitsPerSample");
98
- var channels = getAttribute("Channels");
99
- var codecPrivateData = getAttribute("CodecPrivateData");
100
- var fourCC = getAttribute("FourCC");
101
- var packetSize = getAttribute("PacketSize");
102
- var samplingRate = getAttribute("SamplingRate");
103
- var bitrateAttr = getAttribute("Bitrate");
104
- var bitrate = bitrateAttr === undefined ? 0 :
97
+ const audiotag = getAttribute("AudioTag");
98
+ const bitsPerSample = getAttribute("BitsPerSample");
99
+ const channels = getAttribute("Channels");
100
+ const codecPrivateData = getAttribute("CodecPrivateData");
101
+ const fourCC = getAttribute("FourCC");
102
+ const packetSize = getAttribute("PacketSize");
103
+ const samplingRate = getAttribute("SamplingRate");
104
+ const bitrateAttr = getAttribute("Bitrate");
105
+ const bitrate = bitrateAttr === undefined ? 0 :
105
106
  isNaN(parseInt(bitrateAttr, 10)) ? 0 :
106
107
  parseInt(bitrateAttr, 10);
107
108
  if ((fourCC !== undefined &&
108
109
  MIME_TYPES[fourCC] === undefined) ||
109
110
  codecPrivateData === undefined) {
110
- log.warn("Smooth parser: Unsupported audio codec. Ignoring quality level.");
111
+ log_1.default.warn("Smooth parser: Unsupported audio codec. Ignoring quality level.");
111
112
  return null;
112
113
  }
113
- var codecs = getAudioCodecs(codecPrivateData, fourCC);
114
+ const codecs = (0, get_codecs_1.getAudioCodecs)(codecPrivateData, fourCC);
114
115
  return {
115
116
  audiotag: audiotag !== undefined ? parseInt(audiotag, 10) : audiotag,
116
- bitrate: bitrate,
117
+ bitrate,
117
118
  bitsPerSample: bitsPerSample !== undefined ?
118
119
  parseInt(bitsPerSample, 10) : bitsPerSample,
119
120
  channels: channels !== undefined ? parseInt(channels, 10) : channels,
120
- codecPrivateData: codecPrivateData,
121
- codecs: codecs,
122
- customAttributes: customAttributes,
121
+ codecPrivateData,
122
+ codecs,
123
+ customAttributes,
123
124
  mimeType: fourCC !== undefined ? MIME_TYPES[fourCC] : fourCC,
124
125
  packetSize: packetSize !== undefined ?
125
126
  parseInt(packetSize, 10) :
@@ -130,44 +131,46 @@ function createSmoothStreamingParser(parserOptions) {
130
131
  };
131
132
  }
132
133
  case "video": {
133
- var codecPrivateData = getAttribute("CodecPrivateData");
134
- var fourCC = getAttribute("FourCC");
135
- var width = getAttribute("MaxWidth");
136
- var height = getAttribute("MaxHeight");
137
- var bitrateAttr = getAttribute("Bitrate");
138
- var bitrate = bitrateAttr === undefined ? 0 :
134
+ const codecPrivateData = getAttribute("CodecPrivateData");
135
+ const fourCC = getAttribute("FourCC");
136
+ const width = getAttribute("MaxWidth");
137
+ const height = getAttribute("MaxHeight");
138
+ const bitrateAttr = getAttribute("Bitrate");
139
+ const bitrate = bitrateAttr === undefined ? 0 :
139
140
  isNaN(parseInt(bitrateAttr, 10)) ? 0 :
140
141
  parseInt(bitrateAttr, 10);
141
142
  if ((fourCC !== undefined &&
142
143
  MIME_TYPES[fourCC] === undefined) ||
143
144
  codecPrivateData === undefined) {
144
- log.warn("Smooth parser: Unsupported video codec. Ignoring quality level.");
145
+ log_1.default.warn("Smooth parser: Unsupported video codec. Ignoring quality level.");
145
146
  return null;
146
147
  }
147
- var codecs = getVideoCodecs(codecPrivateData);
148
+ const codecs = (0, get_codecs_1.getVideoCodecs)(codecPrivateData);
148
149
  return {
149
- bitrate: bitrate,
150
- customAttributes: customAttributes,
150
+ bitrate,
151
+ customAttributes,
151
152
  mimeType: fourCC !== undefined ? MIME_TYPES[fourCC] : fourCC,
152
- codecPrivateData: codecPrivateData,
153
- codecs: codecs,
153
+ codecPrivateData,
154
+ codecs,
154
155
  width: width !== undefined ? parseInt(width, 10) : undefined,
155
156
  height: height !== undefined ? parseInt(height, 10) : undefined,
156
157
  };
157
158
  }
158
159
  case "text": {
159
- var codecPrivateData = getAttribute("CodecPrivateData");
160
- var fourCC = getAttribute("FourCC");
161
- var bitrateAttr = getAttribute("Bitrate");
162
- var bitrate = bitrateAttr === undefined ? 0 :
160
+ const codecPrivateData = getAttribute("CodecPrivateData");
161
+ const fourCC = getAttribute("FourCC");
162
+ const bitrateAttr = getAttribute("Bitrate");
163
+ const bitrate = bitrateAttr === undefined ? 0 :
163
164
  isNaN(parseInt(bitrateAttr, 10)) ? 0 :
164
165
  parseInt(bitrateAttr, 10);
165
- return { bitrate: bitrate, customAttributes: customAttributes, mimeType: fourCC !== undefined ? MIME_TYPES[fourCC] :
166
+ return { bitrate,
167
+ customAttributes,
168
+ mimeType: fourCC !== undefined ? MIME_TYPES[fourCC] :
166
169
  fourCC,
167
- codecPrivateData: takeFirstSet(codecPrivateData, "") };
170
+ codecPrivateData: (0, take_first_set_1.default)(codecPrivateData, "") };
168
171
  }
169
172
  default:
170
- log.error("Smooth Parser: Unrecognized StreamIndex type: " + streamType);
173
+ log_1.default.error("Smooth Parser: Unrecognized StreamIndex type: " + streamType);
171
174
  return null;
172
175
  }
173
176
  }
@@ -180,31 +183,31 @@ function createSmoothStreamingParser(parserOptions) {
180
183
  * @returns {Object}
181
184
  */
182
185
  function parseAdaptation(args) {
183
- var root = args.root, timescale = args.timescale, baseUrl = args.baseUrl, protections = args.protections, timeShiftBufferDepth = args.timeShiftBufferDepth, manifestReceivedTime = args.manifestReceivedTime, isLive = args.isLive;
184
- var timescaleAttr = root.getAttribute("Timescale");
185
- var _timescale = timescaleAttr === null ? timescale :
186
+ const { root, timescale, baseUrl, protections, timeShiftBufferDepth, manifestReceivedTime, isLive } = args;
187
+ const timescaleAttr = root.getAttribute("Timescale");
188
+ const _timescale = timescaleAttr === null ? timescale :
186
189
  isNaN(+timescaleAttr) ? timescale :
187
190
  +timescaleAttr;
188
- var typeAttribute = root.getAttribute("Type");
191
+ const typeAttribute = root.getAttribute("Type");
189
192
  if (typeAttribute === null) {
190
193
  throw new Error("StreamIndex without type.");
191
194
  }
192
- if (!arrayIncludes(SUPPORTED_ADAPTATIONS_TYPE, typeAttribute)) {
193
- log.warn("Smooth Parser: Unrecognized adaptation type:", typeAttribute);
195
+ if (!(0, array_includes_1.default)(manifest_1.SUPPORTED_ADAPTATIONS_TYPE, typeAttribute)) {
196
+ log_1.default.warn("Smooth Parser: Unrecognized adaptation type:", typeAttribute);
194
197
  }
195
- var adaptationType = typeAttribute;
196
- var subType = root.getAttribute("Subtype");
197
- var language = root.getAttribute("Language");
198
- var UrlAttr = root.getAttribute("Url");
199
- var UrlPathWithTokens = UrlAttr === null ? "" :
198
+ const adaptationType = typeAttribute;
199
+ const subType = root.getAttribute("Subtype");
200
+ const language = root.getAttribute("Language");
201
+ const UrlAttr = root.getAttribute("Url");
202
+ const UrlPathWithTokens = UrlAttr === null ? "" :
200
203
  UrlAttr;
201
204
  if (0 /* __ENVIRONMENT__.CURRENT_ENV */ === 1 /* __ENVIRONMENT__.DEV */) {
202
- assert(UrlPathWithTokens !== "");
205
+ (0, assert_1.default)(UrlPathWithTokens !== "");
203
206
  }
204
- var _a = reduceChildren(root, function (res, _name, node) {
207
+ const { qualityLevels, cNodes } = (0, reduceChildren_1.default)(root, (res, _name, node) => {
205
208
  switch (_name) {
206
209
  case "QualityLevel":
207
- var qualityLevel = parseQualityLevel(node, adaptationType);
210
+ const qualityLevel = parseQualityLevel(node, adaptationType);
208
211
  if (qualityLevel === null) {
209
212
  return res;
210
213
  }
@@ -219,26 +222,26 @@ function createSmoothStreamingParser(parserOptions) {
219
222
  break;
220
223
  }
221
224
  return res;
222
- }, { qualityLevels: [], cNodes: [] }), qualityLevels = _a.qualityLevels, cNodes = _a.cNodes;
223
- var sharedSmoothTimeline = new SharedSmoothSegmentTimeline({
224
- timeline: parseCNodes(cNodes),
225
+ }, { qualityLevels: [], cNodes: [] });
226
+ const sharedSmoothTimeline = new shared_smooth_segment_timeline_1.default({
227
+ timeline: (0, parse_C_nodes_1.default)(cNodes),
225
228
  timescale: _timescale,
226
- timeShiftBufferDepth: timeShiftBufferDepth,
227
- manifestReceivedTime: manifestReceivedTime,
229
+ timeShiftBufferDepth,
230
+ manifestReceivedTime,
228
231
  });
229
232
  // we assume that all qualityLevels have the same
230
233
  // codec and mimeType
231
- assert(qualityLevels.length !== 0, "Adaptation should have at least one playable representation.");
232
- var adaptationID = adaptationType +
233
- (isNonEmptyString(language) ? ("_" + language) :
234
+ (0, assert_1.default)(qualityLevels.length !== 0, "Adaptation should have at least one playable representation.");
235
+ const adaptationID = adaptationType +
236
+ ((0, is_non_empty_string_1.default)(language) ? ("_" + language) :
234
237
  "");
235
- var representations = qualityLevels.map(function (qualityLevel) {
236
- var media = replaceRepresentationSmoothTokens(UrlPathWithTokens, qualityLevel.bitrate, qualityLevel.customAttributes);
237
- var mimeType = isNonEmptyString(qualityLevel.mimeType) ?
238
+ const representations = qualityLevels.map((qualityLevel) => {
239
+ const media = (0, tokens_1.replaceRepresentationSmoothTokens)(UrlPathWithTokens, qualityLevel.bitrate, qualityLevel.customAttributes);
240
+ const mimeType = (0, is_non_empty_string_1.default)(qualityLevel.mimeType) ?
238
241
  qualityLevel.mimeType :
239
242
  DEFAULT_MIME_TYPES[adaptationType];
240
- var codecs = qualityLevel.codecs;
241
- var id = adaptationID + "_" +
243
+ const codecs = qualityLevel.codecs;
244
+ const id = adaptationID + "_" +
242
245
  (adaptationType != null ? adaptationType + "-" :
243
246
  "") +
244
247
  (mimeType != null ? mimeType + "-" :
@@ -246,18 +249,19 @@ function createSmoothStreamingParser(parserOptions) {
246
249
  (codecs != null ? codecs + "-" :
247
250
  "") +
248
251
  String(qualityLevel.bitrate);
249
- var keyIDs = [];
250
- var firstProtection;
252
+ const keyIDs = [];
253
+ let firstProtection;
251
254
  if (protections.length > 0) {
252
255
  firstProtection = protections[0];
253
- protections.forEach(function (protection) {
254
- var keyId = protection.keyId;
255
- protection.keySystems.forEach(function (keySystem) {
256
- keyIDs.push({ keyId: keyId, systemId: keySystem.systemId });
256
+ protections.forEach((protection) => {
257
+ const keyId = protection.keyId;
258
+ protection.keySystems.forEach((keySystem) => {
259
+ keyIDs.push({ keyId,
260
+ systemId: keySystem.systemId });
257
261
  });
258
262
  });
259
263
  }
260
- var segmentPrivateInfos = { bitsPerSample: qualityLevel.bitsPerSample,
264
+ const segmentPrivateInfos = { bitsPerSample: qualityLevel.bitsPerSample,
261
265
  channels: qualityLevel.channels,
262
266
  codecPrivateData: qualityLevel.codecPrivateData,
263
267
  packetSize: qualityLevel.packetSize,
@@ -269,23 +273,29 @@ function createSmoothStreamingParser(parserOptions) {
269
273
  protection: firstProtection != null ? {
270
274
  keyId: firstProtection.keyId,
271
275
  } : undefined };
272
- var reprIndex = new RepresentationIndex({ isLive: isLive, sharedSmoothTimeline: sharedSmoothTimeline, media: media, segmentPrivateInfos: segmentPrivateInfos });
273
- var representation = objectAssign({}, qualityLevel, { index: reprIndex,
276
+ const reprIndex = new representation_index_1.default({ isLive,
277
+ sharedSmoothTimeline,
278
+ media,
279
+ segmentPrivateInfos });
280
+ const representation = (0, object_assign_1.default)({}, qualityLevel, { index: reprIndex,
274
281
  cdnMetadata: [
275
- { baseUrl: baseUrl },
276
- ], mimeType: mimeType, codecs: codecs, id: id });
282
+ { baseUrl },
283
+ ],
284
+ mimeType,
285
+ codecs,
286
+ id });
277
287
  if (keyIDs.length > 0 || firstProtection !== undefined) {
278
- var initDataValues = firstProtection === undefined ?
288
+ const initDataValues = firstProtection === undefined ?
279
289
  [] :
280
- firstProtection.keySystems.map(function (keySystemData) {
281
- var systemId = keySystemData.systemId, privateData = keySystemData.privateData;
282
- var cleanedSystemId = systemId.replace(/-/g, "");
283
- var pssh = createPSSHBox(cleanedSystemId, privateData);
290
+ firstProtection.keySystems.map((keySystemData) => {
291
+ const { systemId, privateData } = keySystemData;
292
+ const cleanedSystemId = systemId.replace(/-/g, "");
293
+ const pssh = createPSSHBox(cleanedSystemId, privateData);
284
294
  return { systemId: cleanedSystemId, data: pssh };
285
295
  });
286
296
  if (initDataValues.length > 0) {
287
- var initData = [{ type: "cenc", values: initDataValues }];
288
- representation.contentProtections = { keyIds: keyIDs, initData: initData };
297
+ const initData = [{ type: "cenc", values: initDataValues }];
298
+ representation.contentProtections = { keyIds: keyIDs, initData };
289
299
  }
290
300
  else {
291
301
  representation.contentProtections = { keyIds: keyIDs, initData: [] };
@@ -297,8 +307,10 @@ function createSmoothStreamingParser(parserOptions) {
297
307
  if (subType === "ADVT") {
298
308
  return null;
299
309
  }
300
- var parsedAdaptation = { id: adaptationID,
301
- type: adaptationType, representations: representations, language: language == null ?
310
+ const parsedAdaptation = { id: adaptationID,
311
+ type: adaptationType,
312
+ representations,
313
+ language: language == null ?
302
314
  undefined :
303
315
  language };
304
316
  if (adaptationType === "text" && subType === "DESC") {
@@ -307,29 +319,29 @@ function createSmoothStreamingParser(parserOptions) {
307
319
  return parsedAdaptation;
308
320
  }
309
321
  function parseFromDocument(doc, url, manifestReceivedTime) {
310
- var baseUrl = "";
322
+ let baseUrl = "";
311
323
  if (url !== undefined) {
312
- var filenameIdx = getFilenameIndexInUrl(url);
324
+ const filenameIdx = (0, resolve_url_1.getFilenameIndexInUrl)(url);
313
325
  baseUrl = url.substring(0, filenameIdx);
314
326
  }
315
- var root = doc.documentElement;
327
+ const root = doc.documentElement;
316
328
  if (root == null || root.nodeName !== "SmoothStreamingMedia") {
317
329
  throw new Error("document root should be SmoothStreamingMedia");
318
330
  }
319
- var majorVersionAttr = root.getAttribute("MajorVersion");
320
- var minorVersionAttr = root.getAttribute("MinorVersion");
331
+ const majorVersionAttr = root.getAttribute("MajorVersion");
332
+ const minorVersionAttr = root.getAttribute("MinorVersion");
321
333
  if (majorVersionAttr === null || minorVersionAttr === null ||
322
334
  !/^[2]-[0-2]$/.test(majorVersionAttr + "-" + minorVersionAttr)) {
323
335
  throw new Error("Version should be 2.0, 2.1 or 2.2");
324
336
  }
325
- var timescaleAttr = root.getAttribute("Timescale");
326
- var timescale = !isNonEmptyString(timescaleAttr) ? 10000000 :
337
+ const timescaleAttr = root.getAttribute("Timescale");
338
+ const timescale = !(0, is_non_empty_string_1.default)(timescaleAttr) ? 10000000 :
327
339
  isNaN(+timescaleAttr) ? 10000000 :
328
340
  +timescaleAttr;
329
- var _a = reduceChildren(root, function (res, name, node) {
341
+ const { protections, adaptationNodes, } = (0, reduceChildren_1.default)(root, (res, name, node) => {
330
342
  switch (name) {
331
343
  case "Protection": {
332
- res.protections.push(parseProtectionNode(node, parserOptions.keySystems));
344
+ res.protections.push((0, parse_protection_node_1.default)(node, parserOptions.keySystems));
333
345
  break;
334
346
  }
335
347
  case "StreamIndex":
@@ -340,26 +352,32 @@ function createSmoothStreamingParser(parserOptions) {
340
352
  }, {
341
353
  adaptationNodes: [],
342
354
  protections: [],
343
- }), protections = _a.protections, adaptationNodes = _a.adaptationNodes;
344
- var initialAdaptations = {};
345
- var isLive = parseBoolean(root.getAttribute("IsLive"));
346
- var timeShiftBufferDepth;
355
+ });
356
+ const initialAdaptations = {};
357
+ const isLive = (0, parseBoolean_1.default)(root.getAttribute("IsLive"));
358
+ let timeShiftBufferDepth;
347
359
  if (isLive) {
348
- var dvrWindowLength = root.getAttribute("DVRWindowLength");
360
+ const dvrWindowLength = root.getAttribute("DVRWindowLength");
349
361
  if (dvrWindowLength != null &&
350
362
  !isNaN(+dvrWindowLength) &&
351
363
  +dvrWindowLength !== 0) {
352
364
  timeShiftBufferDepth = +dvrWindowLength / timescale;
353
365
  }
354
366
  }
355
- var adaptations = adaptationNodes
356
- .reduce(function (acc, node) {
357
- var adaptation = parseAdaptation({ root: node, baseUrl: baseUrl, timescale: timescale, protections: protections, isLive: isLive, timeShiftBufferDepth: timeShiftBufferDepth, manifestReceivedTime: manifestReceivedTime });
367
+ const adaptations = adaptationNodes
368
+ .reduce((acc, node) => {
369
+ const adaptation = parseAdaptation({ root: node,
370
+ baseUrl,
371
+ timescale,
372
+ protections,
373
+ isLive,
374
+ timeShiftBufferDepth,
375
+ manifestReceivedTime });
358
376
  if (adaptation === null) {
359
377
  return acc;
360
378
  }
361
- var type = adaptation.type;
362
- var adaps = acc[type];
379
+ const type = adaptation.type;
380
+ const adaps = acc[type];
363
381
  if (adaps === undefined) {
364
382
  acc[type] = [adaptation];
365
383
  }
@@ -368,31 +386,31 @@ function createSmoothStreamingParser(parserOptions) {
368
386
  }
369
387
  return acc;
370
388
  }, initialAdaptations);
371
- var suggestedPresentationDelay;
372
- var availabilityStartTime;
373
- var minimumTime;
374
- var timeshiftDepth = null;
375
- var maximumTimeData;
376
- var firstVideoAdaptation = adaptations.video !== undefined ?
389
+ let suggestedPresentationDelay;
390
+ let availabilityStartTime;
391
+ let minimumTime;
392
+ let timeshiftDepth = null;
393
+ let maximumTimeData;
394
+ const firstVideoAdaptation = adaptations.video !== undefined ?
377
395
  adaptations.video[0] :
378
396
  undefined;
379
- var firstAudioAdaptation = adaptations.audio !== undefined ?
397
+ const firstAudioAdaptation = adaptations.audio !== undefined ?
380
398
  adaptations.audio[0] :
381
399
  undefined;
382
400
  /** Minimum time that can be reached regardless of the StreamIndex chosen. */
383
- var safeMinimumTime;
401
+ let safeMinimumTime;
384
402
  /** Maximum time that can be reached regardless of the StreamIndex chosen. */
385
- var safeMaximumTime;
403
+ let safeMaximumTime;
386
404
  /** Maximum time that can be reached in absolute on the content. */
387
- var unsafeMaximumTime;
405
+ let unsafeMaximumTime;
388
406
  if (firstVideoAdaptation !== undefined || firstAudioAdaptation !== undefined) {
389
- var firstTimeReferences = [];
390
- var lastTimeReferences = [];
407
+ const firstTimeReferences = [];
408
+ const lastTimeReferences = [];
391
409
  if (firstVideoAdaptation !== undefined) {
392
- var firstVideoRepresentation = firstVideoAdaptation.representations[0];
410
+ const firstVideoRepresentation = firstVideoAdaptation.representations[0];
393
411
  if (firstVideoRepresentation !== undefined) {
394
- var firstVideoTimeReference = firstVideoRepresentation.index.getFirstAvailablePosition();
395
- var lastVideoTimeReference = firstVideoRepresentation.index.getLastAvailablePosition();
412
+ const firstVideoTimeReference = firstVideoRepresentation.index.getFirstAvailablePosition();
413
+ const lastVideoTimeReference = firstVideoRepresentation.index.getLastAvailablePosition();
396
414
  if (firstVideoTimeReference != null) {
397
415
  firstTimeReferences.push(firstVideoTimeReference);
398
416
  }
@@ -402,10 +420,10 @@ function createSmoothStreamingParser(parserOptions) {
402
420
  }
403
421
  }
404
422
  if (firstAudioAdaptation !== undefined) {
405
- var firstAudioRepresentation = firstAudioAdaptation.representations[0];
423
+ const firstAudioRepresentation = firstAudioAdaptation.representations[0];
406
424
  if (firstAudioRepresentation !== undefined) {
407
- var firstAudioTimeReference = firstAudioRepresentation.index.getFirstAvailablePosition();
408
- var lastAudioTimeReference = firstAudioRepresentation.index.getLastAvailablePosition();
425
+ const firstAudioTimeReference = firstAudioRepresentation.index.getFirstAvailablePosition();
426
+ const lastAudioTimeReference = firstAudioRepresentation.index.getLastAvailablePosition();
409
427
  if (firstAudioTimeReference != null) {
410
428
  firstTimeReferences.push(firstAudioTimeReference);
411
429
  }
@@ -415,64 +433,70 @@ function createSmoothStreamingParser(parserOptions) {
415
433
  }
416
434
  }
417
435
  if (firstTimeReferences.length > 0) {
418
- safeMinimumTime = Math.max.apply(Math, firstTimeReferences);
436
+ safeMinimumTime = Math.max(...firstTimeReferences);
419
437
  }
420
438
  if (lastTimeReferences.length > 0) {
421
- safeMaximumTime = Math.min.apply(Math, lastTimeReferences);
422
- unsafeMaximumTime = Math.max.apply(Math, lastTimeReferences);
439
+ safeMaximumTime = Math.min(...lastTimeReferences);
440
+ unsafeMaximumTime = Math.max(...lastTimeReferences);
423
441
  }
424
442
  }
425
- var manifestDuration = root.getAttribute("Duration");
426
- var duration = (manifestDuration !== null && +manifestDuration !== 0) ?
443
+ const manifestDuration = root.getAttribute("Duration");
444
+ const duration = (manifestDuration !== null && +manifestDuration !== 0) ?
427
445
  (+manifestDuration / timescale) : undefined;
428
446
  if (isLive) {
429
447
  suggestedPresentationDelay = parserOptions.suggestedPresentationDelay;
430
448
  availabilityStartTime = referenceDateTime;
431
449
  minimumTime = safeMinimumTime !== null && safeMinimumTime !== void 0 ? safeMinimumTime : availabilityStartTime;
432
- var livePosition = unsafeMaximumTime;
450
+ let livePosition = unsafeMaximumTime;
433
451
  if (livePosition === undefined) {
434
452
  livePosition = (Date.now() / 1000 - availabilityStartTime);
435
453
  }
436
- var maximumSafePosition = safeMaximumTime;
454
+ let maximumSafePosition = safeMaximumTime;
437
455
  if (maximumSafePosition === undefined) {
438
456
  maximumSafePosition = livePosition;
439
457
  }
440
- maximumTimeData = { isLinear: true, maximumSafePosition: maximumSafePosition, livePosition: livePosition, time: getMonotonicTimeStamp() };
458
+ maximumTimeData = { isLinear: true,
459
+ maximumSafePosition,
460
+ livePosition,
461
+ time: (0, monotonic_timestamp_1.default)() };
441
462
  timeshiftDepth = timeShiftBufferDepth !== null && timeShiftBufferDepth !== void 0 ? timeShiftBufferDepth : null;
442
463
  }
443
464
  else {
444
465
  minimumTime = safeMinimumTime !== null && safeMinimumTime !== void 0 ? safeMinimumTime : 0;
445
- var maximumTime = safeMaximumTime !== undefined ? safeMaximumTime :
466
+ const maximumTime = safeMaximumTime !== undefined ? safeMaximumTime :
446
467
  duration !== undefined ? minimumTime + duration :
447
468
  Infinity;
448
469
  maximumTimeData = { isLinear: false,
449
470
  maximumSafePosition: maximumTime,
450
471
  livePosition: undefined,
451
- time: getMonotonicTimeStamp() };
472
+ time: (0, monotonic_timestamp_1.default)() };
452
473
  }
453
- var periodStart = isLive ? 0 :
474
+ const periodStart = isLive ? 0 :
454
475
  minimumTime;
455
- var periodEnd = isLive ? undefined :
476
+ const periodEnd = isLive ? undefined :
456
477
  maximumTimeData.maximumSafePosition;
457
- var manifest = {
478
+ const manifest = {
458
479
  availabilityStartTime: availabilityStartTime === undefined ?
459
480
  0 :
460
481
  availabilityStartTime,
461
482
  clockOffset: serverTimeOffset,
462
- isLive: isLive,
483
+ isLive,
463
484
  isDynamic: isLive,
464
485
  isLastPeriodKnown: true,
465
- timeBounds: { minimumSafePosition: minimumTime, timeshiftDepth: timeshiftDepth, maximumTimeData: maximumTimeData },
466
- periods: [{ adaptations: adaptations, duration: periodEnd !== undefined ?
486
+ timeBounds: { minimumSafePosition: minimumTime,
487
+ timeshiftDepth,
488
+ maximumTimeData },
489
+ periods: [{ adaptations,
490
+ duration: periodEnd !== undefined ?
467
491
  periodEnd - periodStart : duration,
468
492
  end: periodEnd,
469
493
  id: "gen-smooth-period-0",
470
494
  start: periodStart }],
471
- suggestedPresentationDelay: suggestedPresentationDelay,
495
+ suggestedPresentationDelay,
472
496
  transportType: "smooth",
473
497
  uris: url == null ? [] : [url],
474
498
  };
475
- checkManifestIDs(manifest);
499
+ (0, check_manifest_ids_1.default)(manifest);
476
500
  return manifest;
477
501
  }
478
502
  return parseFromDocument;
@@ -487,9 +511,9 @@ function createPSSHBox(systemId, privateData) {
487
511
  if (systemId.length !== 32) {
488
512
  throw new Error("HSS: wrong system id length");
489
513
  }
490
- var version = 0;
491
- return createBox("pssh", concat([version, 0, 0, 0], hexToBytes(systemId),
514
+ const version = 0;
515
+ return (0, isobmff_1.createBox)("pssh", (0, byte_parsing_1.concat)([version, 0, 0, 0], (0, string_parsing_1.hexToBytes)(systemId),
492
516
  /** To put there KIDs if it exists (necessitate PSSH v1) */
493
- itobe4(privateData.length), privateData));
517
+ (0, byte_parsing_1.itobe4)(privateData.length), privateData));
494
518
  }
495
- export default createSmoothStreamingParser;
519
+ exports.default = createSmoothStreamingParser;