rx-player 3.26.1 → 3.26.2

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 (580) hide show
  1. package/.github/workflows/checks.yml +99 -0
  2. package/.github/workflows/sonarcloud_analysis.yml +20 -0
  3. package/CHANGELOG.md +99 -71
  4. package/README.md +19 -18
  5. package/VERSION +1 -1
  6. package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
  7. package/dist/_esm5.processed/compat/eme/close_session.js +1 -2
  8. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +1 -2
  9. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
  10. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -4
  11. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +1 -2
  12. package/dist/_esm5.processed/compat/eme/generate_key_request.js +1 -2
  13. package/dist/_esm5.processed/compat/eme/load_session.js +2 -3
  14. package/dist/_esm5.processed/compat/event_listeners.d.ts +3 -2
  15. package/dist/_esm5.processed/compat/event_listeners.js +8 -14
  16. package/dist/_esm5.processed/compat/make_vtt_cue.js +1 -1
  17. package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
  18. package/dist/_esm5.processed/compat/set_element_src.js +1 -1
  19. package/dist/_esm5.processed/compat/when_loaded_metadata.js +1 -2
  20. package/dist/_esm5.processed/compat/when_media_source_open.js +1 -2
  21. package/dist/_esm5.processed/config.d.ts +3 -8
  22. package/dist/_esm5.processed/config.js +4 -9
  23. package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
  24. package/dist/_esm5.processed/core/abr/abr_manager.js +47 -8
  25. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
  26. package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +2 -2
  27. package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +3 -3
  28. package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
  29. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +3 -3
  30. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +3 -3
  31. package/dist/_esm5.processed/core/abr/guess_based_chooser.d.ts +95 -0
  32. package/dist/_esm5.processed/core/abr/guess_based_chooser.js +242 -0
  33. package/dist/_esm5.processed/core/abr/index.d.ts +3 -3
  34. package/dist/_esm5.processed/core/abr/last_estimate_storage.d.ts +61 -0
  35. package/dist/_esm5.processed/core/abr/last_estimate_storage.js +37 -0
  36. package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +25 -7
  37. package/dist/_esm5.processed/core/abr/network_analyzer.js +68 -31
  38. package/dist/_esm5.processed/core/abr/pending_requests_store.d.ts +56 -28
  39. package/dist/_esm5.processed/core/abr/pending_requests_store.js +9 -7
  40. package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +34 -51
  41. package/dist/_esm5.processed/core/abr/representation_estimator.js +111 -52
  42. package/dist/_esm5.processed/core/abr/representation_score_calculator.d.ts +5 -8
  43. package/dist/_esm5.processed/core/abr/representation_score_calculator.js +20 -23
  44. package/dist/_esm5.processed/core/abr/{ewma.d.ts → utils/ewma.d.ts} +0 -0
  45. package/dist/_esm5.processed/core/abr/{ewma.js → utils/ewma.js} +0 -0
  46. package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts} +1 -1
  47. package/dist/_esm5.processed/core/abr/{filter_by_bitrate.js → utils/filter_by_bitrate.js} +1 -1
  48. package/dist/_esm5.processed/core/abr/{filter_by_width.d.ts → utils/filter_by_width.d.ts} +1 -1
  49. package/dist/_esm5.processed/core/abr/{filter_by_width.js → utils/filter_by_width.js} +2 -2
  50. package/dist/_esm5.processed/core/abr/{select_optimal_representation.d.ts → utils/select_optimal_representation.d.ts} +1 -1
  51. package/dist/_esm5.processed/core/abr/{select_optimal_representation.js → utils/select_optimal_representation.js} +1 -1
  52. package/dist/_esm5.processed/core/api/emit_seek_events.d.ts +4 -4
  53. package/dist/_esm5.processed/core/api/emit_seek_events.js +12 -10
  54. package/dist/_esm5.processed/core/api/index.d.ts +3 -1
  55. package/dist/_esm5.processed/core/api/index.js +2 -0
  56. package/dist/_esm5.processed/core/api/option_utils.js +4 -4
  57. package/dist/_esm5.processed/core/api/playback_observer.d.ts +280 -0
  58. package/dist/_esm5.processed/core/api/playback_observer.js +461 -0
  59. package/dist/_esm5.processed/core/api/public_api.d.ts +8 -7
  60. package/dist/_esm5.processed/core/api/public_api.js +98 -94
  61. package/dist/_esm5.processed/core/api/track_choice_manager.js +3 -3
  62. package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +1 -0
  63. package/dist/_esm5.processed/core/eme/attach_media_keys.js +1 -2
  64. package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -5
  65. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js +1 -2
  66. package/dist/_esm5.processed/core/eme/clear_eme_session.js +6 -2
  67. package/dist/_esm5.processed/core/eme/create_session.js +1 -2
  68. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +2 -3
  69. package/dist/_esm5.processed/core/eme/eme_manager.js +4 -5
  70. package/dist/_esm5.processed/core/eme/find_key_system.js +4 -5
  71. package/dist/_esm5.processed/core/eme/get_media_keys.js +2 -3
  72. package/dist/_esm5.processed/core/eme/get_session.js +1 -2
  73. package/dist/_esm5.processed/core/eme/init_media_keys.js +5 -5
  74. package/dist/_esm5.processed/core/eme/session_events_listener.js +6 -7
  75. package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
  76. package/dist/_esm5.processed/core/eme/types.d.ts +12 -4
  77. package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
  78. package/dist/_esm5.processed/core/eme/utils/is_session_usable.js +1 -1
  79. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +3 -4
  80. package/dist/_esm5.processed/core/eme/utils/persistent_sessions_store.js +3 -3
  81. package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
  82. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +2 -2
  83. package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
  84. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +12 -29
  85. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +3 -7
  86. package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +53 -53
  87. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +42 -11
  88. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +118 -46
  89. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +21 -20
  90. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +9 -8
  91. package/dist/_esm5.processed/core/init/create_eme_manager.js +1 -2
  92. package/dist/_esm5.processed/core/init/create_media_source.js +3 -4
  93. package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +39 -0
  94. package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +50 -0
  95. package/dist/_esm5.processed/core/init/duration_updater.js +16 -7
  96. package/dist/_esm5.processed/core/init/emit_loaded_event.d.ts +4 -3
  97. package/dist/_esm5.processed/core/init/emit_loaded_event.js +8 -8
  98. package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
  99. package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
  100. package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +32 -31
  101. package/dist/_esm5.processed/core/init/initial_seek_and_play.js +25 -32
  102. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +6 -5
  103. package/dist/_esm5.processed/core/init/initialize_directfile.js +16 -12
  104. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +10 -10
  105. package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -12
  106. package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +8 -11
  107. package/dist/_esm5.processed/core/init/load_on_media_source.js +16 -19
  108. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +8 -7
  109. package/dist/_esm5.processed/core/init/stall_avoider.d.ts +4 -6
  110. package/dist/_esm5.processed/core/init/stall_avoider.js +56 -42
  111. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +2 -2
  112. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +20 -15
  113. package/dist/_esm5.processed/core/init/throw_on_media_error.js +1 -2
  114. package/dist/_esm5.processed/core/init/types.d.ts +0 -20
  115. package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +5 -4
  116. package/dist/_esm5.processed/core/init/update_playback_rate.js +10 -11
  117. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +4 -4
  118. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -7
  119. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +8 -7
  120. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +9 -10
  121. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +1 -1
  122. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +4 -4
  123. package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
  124. package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +2 -2
  125. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +1 -12
  126. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +10 -10
  127. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
  128. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +15 -13
  129. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +36 -23
  130. package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +9 -17
  131. package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +11 -20
  132. package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
  133. package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
  134. package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +5 -6
  135. package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +1 -2
  136. package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
  137. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +10 -8
  138. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +22 -21
  139. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +6 -4
  140. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +11 -10
  141. package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
  142. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +23 -7
  143. package/dist/_esm5.processed/core/stream/period/period_stream.js +38 -24
  144. package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +5 -4
  145. package/dist/_esm5.processed/core/stream/reload_after_switch.js +8 -7
  146. package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +4 -2
  147. package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +10 -8
  148. package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +9 -9
  149. package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +10 -12
  150. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.d.ts +1 -3
  151. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +6 -8
  152. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +3 -7
  153. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +7 -8
  154. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +1 -1
  155. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.d.ts +6 -9
  156. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +7 -8
  157. package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
  158. package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +4 -2
  159. package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +3 -5
  160. package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +6 -4
  161. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -5
  162. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +9 -12
  163. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +30 -21
  164. package/dist/_esm5.processed/errors/error_message.js +1 -1
  165. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +5 -3
  166. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +21 -8
  167. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +2 -3
  168. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +2 -2
  169. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +4 -0
  170. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +1 -1
  171. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
  172. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +17 -6
  173. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +1 -2
  174. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +1 -2
  175. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
  176. package/dist/_esm5.processed/features/initialize_features.js +47 -44
  177. package/dist/_esm5.processed/index.js +2 -2
  178. package/dist/_esm5.processed/manifest/index.d.ts +2 -2
  179. package/dist/_esm5.processed/manifest/index.js +2 -2
  180. package/dist/_esm5.processed/manifest/representation.js +1 -1
  181. package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
  182. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +24 -3
  183. package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
  184. package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
  185. package/dist/_esm5.processed/manifest/{are_same_content.js → utils.js} +18 -1
  186. package/dist/_esm5.processed/minimal.js +2 -2
  187. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +18 -9
  188. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +32 -9
  189. package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +18 -5
  190. package/dist/_esm5.processed/parsers/containers/isobmff/read.js +28 -6
  191. package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +52 -47
  192. package/dist/_esm5.processed/parsers/images/bif.js +1 -1
  193. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
  194. package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
  195. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +2 -1
  196. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +3 -2
  197. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +2 -1
  198. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +1 -0
  199. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +7 -9
  200. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -1
  201. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +4 -2
  202. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -1
  203. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -5
  204. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +10 -9
  205. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +3 -3
  206. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +6 -1
  207. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +5 -4
  208. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.d.ts +1 -1
  209. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +4 -4
  210. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +3 -1
  211. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +19 -18
  212. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +2 -1
  213. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +14 -8
  214. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +2 -2
  215. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +7 -8
  216. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +3 -1
  217. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +5 -10
  218. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +3 -1
  219. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +17 -8
  220. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +7 -2
  221. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +22 -21
  222. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -0
  223. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +9 -9
  224. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +24 -0
  225. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +7 -5
  226. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +12 -9
  227. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +5 -2
  228. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +8 -0
  229. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +11 -2
  230. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +7 -4
  231. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +11 -0
  232. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +7 -1
  233. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +5 -0
  234. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +5 -0
  235. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +13 -0
  236. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +23 -0
  237. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +5 -0
  238. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +6 -0
  239. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +6 -0
  240. package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +1 -1
  241. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +4 -2
  242. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -1
  243. package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
  244. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +3 -1
  245. package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
  246. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +1 -1
  247. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +11 -3
  248. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +5 -5
  249. package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +3 -6
  250. package/dist/_esm5.processed/parsers/texttracks/sami/html.js +2 -2
  251. package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
  252. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
  253. package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
  254. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +2 -2
  255. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +5 -5
  256. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +2 -2
  257. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
  258. package/dist/_esm5.processed/transports/dash/manifest_parser.js +89 -20
  259. package/dist/_esm5.processed/transports/dash/segment_loader.js +1 -1
  260. package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
  261. package/dist/_esm5.processed/transports/local/segment_parser.d.ts +2 -2
  262. package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
  263. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
  264. package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +1 -1
  265. package/dist/_esm5.processed/transports/smooth/pipelines.js +2 -2
  266. package/dist/_esm5.processed/transports/smooth/segment_loader.js +3 -3
  267. package/dist/_esm5.processed/transports/types.d.ts +29 -15
  268. package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
  269. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
  270. package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
  271. package/dist/_esm5.processed/transports/utils/parse_text_track.js +6 -4
  272. package/dist/_esm5.processed/utils/assert.js +3 -3
  273. package/dist/_esm5.processed/utils/concat_map_latest.js +1 -2
  274. package/dist/_esm5.processed/utils/defer_subscriptions.js +1 -2
  275. package/dist/_esm5.processed/utils/filter_map.js +1 -2
  276. package/dist/_esm5.processed/utils/reference.d.ts +108 -0
  277. package/dist/_esm5.processed/utils/reference.js +137 -0
  278. package/dist/_esm5.processed/utils/request/fetch.d.ts +1 -1
  279. package/dist/_esm5.processed/utils/request/fetch.js +3 -3
  280. package/dist/_esm5.processed/utils/request/xhr.d.ts +1 -1
  281. package/dist/_esm5.processed/utils/request/xhr.js +1 -1
  282. package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
  283. package/dist/mpd-parser.wasm +0 -0
  284. package/dist/rx-player.d.ts +1 -15
  285. package/dist/rx-player.js +3666 -2470
  286. package/dist/rx-player.min.d.ts +1 -15
  287. package/dist/rx-player.min.js +1 -1
  288. package/jest.config.js +28 -1
  289. package/package.json +43 -43
  290. package/scripts/build/constants.d.ts +50 -0
  291. package/scripts/build/generate_build.js +1 -189
  292. package/scripts/doc-generator/construct_table_of_contents.js +31 -24
  293. package/scripts/doc-generator/convert_MD_to_HMTL.js +4 -8
  294. package/scripts/doc-generator/create_documentation.js +331 -0
  295. package/scripts/doc-generator/create_documentation_page.js +209 -0
  296. package/scripts/doc-generator/create_page.js +117 -35
  297. package/scripts/doc-generator/generate_header_html.js +148 -0
  298. package/scripts/doc-generator/generate_page_html.js +116 -0
  299. package/scripts/doc-generator/generate_page_list_html.js +93 -0
  300. package/scripts/doc-generator/generate_sidebar_html.js +88 -0
  301. package/scripts/doc-generator/get_search_data_for_content.js +137 -0
  302. package/scripts/doc-generator/index.js +14 -15
  303. package/scripts/doc-generator/parse_doc_configs.js +327 -0
  304. package/scripts/doc-generator/scripts/lunr.js +10 -0
  305. package/scripts/doc-generator/scripts/script.js +451 -0
  306. package/scripts/doc-generator/styles/style.css +712 -144
  307. package/scripts/doc-generator/utils.js +85 -0
  308. package/scripts/fast_demo_build.js +143 -0
  309. package/scripts/generate_documentation_list.js +6 -2
  310. package/scripts/generate_full_demo.js +26 -49
  311. package/scripts/start_demo_web_server.js +14 -4
  312. package/scripts/update-version +1 -1
  313. package/sonar-project.properties +2 -1
  314. package/src/compat/__tests__/add_text_track.test.ts +1 -0
  315. package/src/compat/__tests__/clear_element_src.test.ts +55 -28
  316. package/src/compat/__tests__/set_element_src.test.ts +2 -2
  317. package/src/compat/__tests__/when_loaded_metadata.test.ts +4 -5
  318. package/src/compat/__tests__/when_media_source_open.test.ts +4 -5
  319. package/src/compat/clear_element_src.ts +8 -6
  320. package/src/compat/eme/close_session.ts +3 -5
  321. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
  322. package/src/compat/eme/custom_media_keys/index.ts +6 -6
  323. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +6 -3
  324. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +1 -1
  325. package/src/compat/eme/generate_key_request.ts +1 -1
  326. package/src/compat/eme/load_session.ts +4 -6
  327. package/src/compat/event_listeners.ts +12 -21
  328. package/src/compat/on_height_width_change.ts +3 -5
  329. package/src/compat/set_element_src.ts +1 -1
  330. package/src/compat/when_loaded_metadata.ts +1 -1
  331. package/src/compat/when_media_source_open.ts +1 -1
  332. package/src/config.ts +4 -9
  333. package/src/core/abr/README.md +7 -7
  334. package/src/core/abr/abr_manager.ts +62 -21
  335. package/src/core/abr/bandwidth_estimator.ts +1 -1
  336. package/src/core/abr/buffer_based_chooser.ts +8 -6
  337. package/src/core/abr/get_buffer_levels.ts +3 -0
  338. package/src/core/abr/get_estimate_from_buffer_levels.ts +4 -4
  339. package/src/core/abr/guess_based_chooser.ts +308 -0
  340. package/src/core/abr/index.ts +7 -3
  341. package/src/core/abr/last_estimate_storage.ts +79 -0
  342. package/src/core/abr/network_analyzer.ts +74 -31
  343. package/src/core/abr/pending_requests_store.ts +76 -42
  344. package/src/core/abr/representation_estimator.ts +200 -125
  345. package/src/core/abr/representation_score_calculator.ts +33 -26
  346. package/src/core/abr/{__tests__ → utils/__tests__}/ewma.test.ts +0 -0
  347. package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_bitrate.test.ts +1 -1
  348. package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_width.test.ts +1 -1
  349. package/src/core/abr/{__tests__ → utils/__tests__}/select_optimal_representation.test.ts +1 -1
  350. package/src/core/abr/{ewma.ts → utils/ewma.ts} +0 -0
  351. package/src/core/abr/{filter_by_bitrate.ts → utils/filter_by_bitrate.ts} +2 -2
  352. package/src/core/abr/{filter_by_width.ts → utils/filter_by_width.ts} +3 -3
  353. package/src/core/abr/{select_optimal_representation.ts → utils/select_optimal_representation.ts} +2 -2
  354. package/src/core/api/README.md +4 -3
  355. package/src/core/api/__tests__/option_utils.test.ts +1 -0
  356. package/src/core/api/emit_seek_events.ts +21 -20
  357. package/src/core/api/index.ts +6 -2
  358. package/src/core/api/playback_observer.ts +768 -0
  359. package/src/core/api/public_api.ts +111 -111
  360. package/src/core/api/track_choice_manager.ts +6 -3
  361. package/src/core/eme/__tests__/__global__/get_license.test.ts +5 -3
  362. package/src/core/eme/__tests__/__global__/init_data.test.ts +11 -12
  363. package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +2 -1
  364. package/src/core/eme/__tests__/__global__/media_keys.test.ts +5 -8
  365. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +8 -6
  366. package/src/core/eme/__tests__/__global__/utils.ts +1 -0
  367. package/src/core/eme/__tests__/init_media_keys.test.ts +6 -65
  368. package/src/core/eme/attach_media_keys.ts +2 -1
  369. package/src/core/eme/check_key_statuses.ts +10 -8
  370. package/src/core/eme/clean_old_loaded_sessions.ts +2 -4
  371. package/src/core/eme/clear_eme_session.ts +6 -1
  372. package/src/core/eme/create_session.ts +3 -5
  373. package/src/core/eme/dispose_media_keys.ts +2 -2
  374. package/src/core/eme/eme_manager.ts +10 -12
  375. package/src/core/eme/find_key_system.ts +3 -5
  376. package/src/core/eme/get_media_keys.ts +4 -6
  377. package/src/core/eme/get_session.ts +2 -4
  378. package/src/core/eme/init_media_keys.ts +9 -9
  379. package/src/core/eme/session_events_listener.ts +14 -15
  380. package/src/core/eme/set_server_certificate.ts +9 -5
  381. package/src/core/eme/types.ts +15 -4
  382. package/src/core/eme/utils/close_session.ts +7 -7
  383. package/src/core/eme/utils/is_session_usable.ts +1 -1
  384. package/src/core/eme/utils/loaded_sessions_store.ts +2 -2
  385. package/src/core/eme/utils/persistent_sessions_store.ts +2 -2
  386. package/src/core/fetchers/index.ts +2 -2
  387. package/src/core/fetchers/manifest/manifest_fetcher.ts +1 -1
  388. package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +3 -4
  389. package/src/core/fetchers/segment/index.ts +2 -2
  390. package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +37 -45
  391. package/src/core/fetchers/segment/prioritizer.ts +82 -82
  392. package/src/core/fetchers/segment/segment_fetcher.ts +178 -80
  393. package/src/core/fetchers/segment/segment_fetcher_creator.ts +23 -31
  394. package/src/core/init/create_eme_manager.ts +1 -1
  395. package/src/core/init/create_media_source.ts +5 -7
  396. package/src/core/init/create_stream_playback_observer.ts +88 -0
  397. package/src/core/init/duration_updater.ts +20 -17
  398. package/src/core/init/emit_loaded_event.ts +11 -15
  399. package/src/core/init/end_of_stream.ts +2 -4
  400. package/src/core/init/get_initial_time.ts +0 -1
  401. package/src/core/init/initial_seek_and_play.ts +67 -51
  402. package/src/core/init/initialize_directfile.ts +26 -35
  403. package/src/core/init/initialize_media_source.ts +28 -28
  404. package/src/core/init/load_on_media_source.ts +51 -58
  405. package/src/core/init/manifest_update_scheduler.ts +11 -12
  406. package/src/core/init/stall_avoider.ts +64 -47
  407. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
  408. package/src/core/init/throw_on_media_error.ts +1 -1
  409. package/src/core/init/types.ts +0 -24
  410. package/src/core/init/update_playback_rate.ts +15 -16
  411. package/src/core/segment_buffers/README.md +3 -3
  412. package/src/core/segment_buffers/garbage_collector.ts +15 -11
  413. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -7
  414. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +14 -16
  415. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +1 -1
  416. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
  417. package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
  418. package/src/core/segment_buffers/inventory/buffered_history.ts +2 -2
  419. package/src/core/segment_buffers/inventory/segment_inventory.ts +1 -13
  420. package/src/core/stream/adaptation/adaptation_stream.ts +78 -56
  421. package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
  422. package/src/core/stream/adaptation/index.ts +2 -2
  423. package/src/core/stream/index.ts +2 -2
  424. package/src/core/stream/orchestrator/active_period_emitter.ts +6 -8
  425. package/src/core/stream/orchestrator/are_streams_complete.ts +2 -4
  426. package/src/core/stream/orchestrator/index.ts +2 -2
  427. package/src/core/stream/orchestrator/stream_orchestrator.ts +58 -49
  428. package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
  429. package/src/core/stream/period/index.ts +2 -2
  430. package/src/core/stream/period/period_stream.ts +118 -75
  431. package/src/core/stream/reload_after_switch.ts +13 -10
  432. package/src/core/stream/representation/append_segment_to_buffer.ts +20 -16
  433. package/src/core/stream/representation/downloading_queue.ts +21 -24
  434. package/src/core/stream/representation/force_garbage_collection.ts +16 -23
  435. package/src/core/stream/representation/get_buffer_status.ts +9 -11
  436. package/src/core/stream/representation/get_needed_segments.ts +1 -1
  437. package/src/core/stream/representation/get_segment_priority.ts +8 -10
  438. package/src/core/stream/representation/index.ts +2 -2
  439. package/src/core/stream/representation/push_init_segment.ts +19 -16
  440. package/src/core/stream/representation/push_media_segment.ts +21 -17
  441. package/src/core/stream/representation/representation_stream.ts +50 -47
  442. package/src/experimental/features/__tests__/dash_wasm.test.ts +1 -0
  443. package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +32 -17
  444. package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +6 -9
  445. package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +12 -6
  446. package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +4 -2
  447. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +2 -2
  448. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +21 -12
  449. package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +1 -1
  450. package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
  451. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +4 -2
  452. package/src/features/__tests__/initialize_features.test.ts +191 -101
  453. package/src/features/initialize_features.ts +40 -37
  454. package/src/features/list/__tests__/bif_parser.test.ts +1 -0
  455. package/src/features/list/__tests__/dash.test.ts +1 -0
  456. package/src/features/list/__tests__/directfile.test.ts +1 -0
  457. package/src/features/list/__tests__/eme.test.ts +1 -0
  458. package/src/features/list/__tests__/html_sami_parser.test.ts +1 -0
  459. package/src/features/list/__tests__/html_srt_parser.test.ts +1 -0
  460. package/src/features/list/__tests__/html_text_buffer.test.ts +1 -0
  461. package/src/features/list/__tests__/html_ttml_parser.test.ts +1 -0
  462. package/src/features/list/__tests__/html_vtt_parser.test.ts +1 -0
  463. package/src/features/list/__tests__/image_buffer.test.ts +1 -0
  464. package/src/features/list/__tests__/native_sami_parser.test.ts +1 -0
  465. package/src/features/list/__tests__/native_srt_parser.test.ts +1 -0
  466. package/src/features/list/__tests__/native_text_buffer.test.ts +1 -0
  467. package/src/features/list/__tests__/native_ttml_parser.test.ts +1 -0
  468. package/src/features/list/__tests__/native_vtt_parser.test.ts +1 -0
  469. package/src/features/list/__tests__/smooth.test.ts +1 -0
  470. package/src/index.ts +2 -2
  471. package/src/manifest/__tests__/manifest.test.ts +1 -0
  472. package/src/manifest/index.ts +7 -1
  473. package/src/manifest/representation_index/__tests__/static.test.ts +1 -0
  474. package/src/manifest/representation_index/static.ts +1 -0
  475. package/src/manifest/representation_index/types.ts +25 -3
  476. package/src/manifest/{are_same_content.ts → utils.ts} +26 -9
  477. package/src/minimal.ts +3 -2
  478. package/src/parsers/containers/isobmff/get_box.ts +35 -8
  479. package/src/parsers/containers/isobmff/read.ts +32 -5
  480. package/src/parsers/containers/isobmff/utils.ts +52 -47
  481. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +4 -4
  482. package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +4 -2
  483. package/src/parsers/manifest/dash/common/get_clock_offset.ts +3 -3
  484. package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +15 -6
  485. package/src/parsers/manifest/dash/common/indexes/base.ts +5 -3
  486. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +1 -0
  487. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +9 -9
  488. package/src/parsers/manifest/dash/common/indexes/list.ts +6 -3
  489. package/src/parsers/manifest/dash/common/indexes/template.ts +13 -6
  490. package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +10 -9
  491. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +13 -5
  492. package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
  493. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
  494. package/src/parsers/manifest/dash/common/parse_mpd.ts +21 -13
  495. package/src/parsers/manifest/dash/common/parse_periods.ts +7 -8
  496. package/src/parsers/manifest/dash/common/parse_representation_index.ts +12 -12
  497. package/src/parsers/manifest/dash/common/parse_representations.ts +23 -4
  498. package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
  499. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +12 -0
  500. package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +13 -9
  501. package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +28 -0
  502. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +8 -5
  503. package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +3 -0
  504. package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +5 -2
  505. package/src/parsers/manifest/dash/node_parser_types.ts +8 -0
  506. package/src/parsers/manifest/dash/parsers_types.ts +8 -2
  507. package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
  508. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +26 -5
  509. package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
  510. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +7 -4
  511. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +13 -0
  512. package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +8 -1
  513. package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +6 -0
  514. package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +6 -0
  515. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +14 -0
  516. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +26 -0
  517. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +6 -0
  518. package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +7 -0
  519. package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +7 -0
  520. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +1 -1
  521. package/src/parsers/manifest/local/representation_index.ts +2 -0
  522. package/src/parsers/manifest/smooth/create_parser.ts +1 -1
  523. package/src/parsers/manifest/smooth/representation_index.ts +3 -1
  524. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +1 -1
  525. package/src/parsers/manifest/utils/index_helpers.ts +21 -11
  526. package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
  527. package/src/parsers/texttracks/sami/html.ts +1 -1
  528. package/src/parsers/texttracks/sami/native.ts +1 -1
  529. package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
  530. package/src/transports/dash/image_pipelines.ts +4 -4
  531. package/src/transports/dash/init_segment_loader.ts +1 -1
  532. package/src/transports/dash/manifest_parser.ts +99 -25
  533. package/src/transports/dash/segment_loader.ts +1 -1
  534. package/src/transports/dash/segment_parser.ts +4 -4
  535. package/src/transports/dash/text_parser.ts +8 -8
  536. package/src/transports/local/segment_loader.ts +2 -2
  537. package/src/transports/local/segment_parser.ts +4 -4
  538. package/src/transports/local/text_parser.ts +8 -8
  539. package/src/transports/metaplaylist/pipelines.ts +11 -11
  540. package/src/transports/smooth/extract_timings_infos.ts +1 -1
  541. package/src/transports/smooth/pipelines.ts +8 -8
  542. package/src/transports/smooth/segment_loader.ts +3 -3
  543. package/src/transports/types.ts +31 -17
  544. package/src/transports/utils/call_custom_manifest_loader.ts +1 -1
  545. package/src/transports/utils/get_isobmff_timing_infos.ts +6 -1
  546. package/src/transports/utils/parse_text_track.ts +4 -2
  547. package/src/typings/globals.d.ts +57 -40
  548. package/src/utils/__tests__/concat_map_latest.test.ts +7 -9
  549. package/src/utils/__tests__/defer_subscriptions.test.ts +4 -4
  550. package/src/utils/__tests__/event_emitter.test.ts +1 -1
  551. package/src/utils/__tests__/initialization_segment_cache.test.ts +7 -0
  552. package/src/utils/assert.ts +1 -1
  553. package/src/utils/concat_map_latest.ts +2 -4
  554. package/src/utils/defer_subscriptions.ts +1 -1
  555. package/src/utils/filter_map.ts +2 -4
  556. package/src/utils/reference.ts +234 -0
  557. package/src/utils/request/fetch.ts +3 -3
  558. package/src/utils/request/xhr.ts +2 -2
  559. package/src/utils/rx-retry_with_backoff.ts +2 -4
  560. package/tsconfig.json +4 -1
  561. package/tsconfig.modules.json +8 -3
  562. package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
  563. package/dist/_esm5.processed/core/abr/create_filters.js +0 -56
  564. package/dist/_esm5.processed/core/api/clock.d.ts +0 -157
  565. package/dist/_esm5.processed/core/api/clock.js +0 -363
  566. package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
  567. package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -55
  568. package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.d.ts +0 -31
  569. package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.js +0 -37
  570. package/scripts/doc-generator/construct_html.js +0 -135
  571. package/scripts/doc-generator/construct_page_list.js +0 -120
  572. package/scripts/doc-generator/create_for_dir.js +0 -151
  573. package/scripts/doc-generator/get_files_to_convert.js +0 -71
  574. package/scripts/doc-generator/mkdir_parent.js +0 -21
  575. package/scripts/doc-generator/read_title_from_md.js +0 -22
  576. package/scripts/doc-generator/remove_toc_from_md.js +0 -20
  577. package/src/core/abr/create_filters.ts +0 -59
  578. package/src/core/api/clock.ts +0 -573
  579. package/src/core/init/create_stream_clock.ts +0 -93
  580. package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
@@ -15,27 +15,24 @@
15
15
  */
16
16
 
17
17
  import {
18
+ catchError,
18
19
  concat as observableConcat,
20
+ concatMap,
19
21
  defer as observableDefer,
20
22
  EMPTY,
21
23
  identity,
24
+ map,
22
25
  merge as observableMerge,
26
+ mergeMap,
23
27
  Observable,
24
28
  of as observableOf,
25
- Subject,
26
- TimeoutError,
27
- } from "rxjs";
28
- import {
29
- catchError,
30
- concatMap,
31
- map,
32
- mapTo,
33
- mergeMap,
34
29
  startWith,
30
+ Subject,
35
31
  takeUntil,
36
32
  tap,
37
33
  timeout,
38
- } from "rxjs/operators";
34
+ TimeoutError,
35
+ } from "rxjs";
39
36
  import {
40
37
  events,
41
38
  ICustomMediaKeySession,
@@ -109,7 +106,7 @@ export default function SessionEventsListener(
109
106
  IKeysUpdateEvent |
110
107
  ISessionUpdatedEvent>
111
108
  {
112
- log.info("EME: Binding session events", session);
109
+ log.info("EME: Binding session events", session.sessionId);
113
110
  const sessionWarningSubject$ = new Subject<IEMEWarningEvent>();
114
111
  const { getLicenseConfig = {} } = keySystemOptions;
115
112
 
@@ -132,7 +129,9 @@ export default function SessionEventsListener(
132
129
  messageEvent.messageType :
133
130
  "license-request";
134
131
 
135
- log.info(`EME: Received message event, type ${messageType}`, session, messageEvent);
132
+ log.info(`EME: Received message event, type ${messageType}`,
133
+ session.sessionId,
134
+ messageEvent);
136
135
  const getLicense$ = observableDefer(() => {
137
136
  const getLicense = keySystemOptions.getLicense(message, messageType);
138
137
  const getLicenseTimeout = isNullOrUndefined(getLicenseConfig.timeout) ?
@@ -289,8 +288,8 @@ function updateSessionWithMessage(
289
288
  throw new EncryptedMediaError("KEY_UPDATE_ERROR", reason);
290
289
  }),
291
290
  tap(() => { log.info("EME: MediaKeySession update succeeded."); }),
292
- mapTo({ type: "session-updated" as const,
293
- value: { session, license: message, initializationData } })
291
+ map(() => ({ type: "session-updated" as const,
292
+ value: { session, license: message, initializationData } }))
294
293
  );
295
294
  }
296
295
 
@@ -306,7 +305,7 @@ function handleKeyStatusesChangeEvent(
306
305
  keySystem : string,
307
306
  keyStatusesEvent : Event
308
307
  ) : Observable<IKeyStatusChangeHandledEvent | IKeysUpdateEvent | IEMEWarningEvent> {
309
- log.info("EME: keystatuseschange event received", session, keyStatusesEvent);
308
+ log.info("EME: keystatuseschange event received", session.sessionId);
310
309
  const callback$ = observableDefer(() => {
311
310
  return tryCatch(() => {
312
311
  if (typeof keySystemOptions.onKeyStatusesChange !== "function") {
@@ -15,16 +15,14 @@
15
15
  */
16
16
 
17
17
  import {
18
+ catchError,
18
19
  defer as observableDefer,
19
20
  EMPTY,
21
+ ignoreElements,
22
+ tap,
20
23
  Observable,
21
24
  of as observableOf,
22
25
  } from "rxjs";
23
- import {
24
- catchError,
25
- ignoreElements,
26
- tap,
27
- } from "rxjs/operators";
28
26
  import { ICustomMediaKeys } from "../../compat";
29
27
  import { EncryptedMediaError } from "../../errors";
30
28
  import log from "../../log";
@@ -96,6 +94,12 @@ export default function trySettingServerCertificate(
96
94
  ServerCertificateStore.prepare(mediaKeys);
97
95
  return setServerCertificate(mediaKeys, serverCertificate).pipe(
98
96
  tap(() => { ServerCertificateStore.set(mediaKeys, serverCertificate); }),
97
+
98
+ // NOTE As of now (RxJS 7.4.0), RxJS defines `ignoreElements` default
99
+ // first type parameter as `any` instead of the perfectly fine `unknown`,
100
+ // leading to linter issues, as it forbids the usage of `any`.
101
+ // This is why we're disabling the eslint rule.
102
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
99
103
  ignoreElements(),
100
104
  catchError(error => observableOf({
101
105
  type: "warning" as const,
@@ -14,13 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { Subject } from "rxjs";
18
17
  import {
19
18
  ICustomMediaKeys,
20
19
  ICustomMediaKeySession,
21
20
  ICustomMediaKeySystemAccess,
22
21
  } from "../../compat";
23
22
  import { ICustomError } from "../../errors";
23
+ import { ISharedReference } from "../../utils/reference";
24
24
  import LoadedSessionsStore from "./utils/loaded_sessions_store";
25
25
  import PersistentSessionsStore from "./utils/persistent_sessions_store";
26
26
 
@@ -78,8 +78,10 @@ export interface IEncryptedEvent { type: "encrypted-event-received";
78
78
  * current content.
79
79
  * This is necessary before creating a MediaKeySession which will allow
80
80
  * encryption keys to be communicated.
81
- * It carries a subject (attachMediaKeys$) that will be used by the init to
82
- * ask the EME to attach the mediakeys.
81
+ *
82
+ * It carries a shared reference (`canAttachMediaKeys`) that should be setted to
83
+ * `true` to indicate that RxPlayer's EME logic can start to attach the
84
+ * `MediaKeys` instance to the HTMLMediaElement.
83
85
  */
84
86
  export interface ICreatedMediaKeysEvent {
85
87
  type: "created-media-keys";
@@ -115,9 +117,18 @@ export interface ICreatedMediaKeysEvent {
115
117
  /** The MediaKeys instance. */
116
118
  mediaKeys : MediaKeys |
117
119
  ICustomMediaKeys;
120
+
121
+ /** Stores allowing to cache MediaKeySession instances. */
118
122
  stores : IMediaKeySessionStores;
123
+
124
+ /** key system options considered. */
119
125
  options : IKeySystemOption;
120
- attachMediaKeys$: Subject<void>;
126
+
127
+ /**
128
+ * Shared reference that should be set to `true` once the `MediaKeys`
129
+ * instance can be attached to the HTMLMediaElement.
130
+ */
131
+ canAttachMediaKeys: ISharedReference<boolean>;
121
132
  };
122
133
  }
123
134
 
@@ -15,17 +15,15 @@
15
15
  */
16
16
 
17
17
  import {
18
+ catchError,
19
+ mergeMap,
18
20
  Observable,
19
21
  of as observableOf,
22
+ take,
23
+ tap,
20
24
  timer,
21
25
  race as observableRace,
22
26
  } from "rxjs";
23
- import {
24
- catchError,
25
- mergeMap,
26
- take,
27
- tap,
28
- } from "rxjs/operators";
29
27
  import {
30
28
  closeSession,
31
29
  ICustomMediaKeySession,
@@ -62,7 +60,9 @@ export default function safelyCloseMediaKeySession(
62
60
  function recursivelyTryToCloseMediaKeySession(
63
61
  retryNb : number
64
62
  ) : Observable<unknown> {
65
- log.debug("EME: Trying to close a MediaKeySession", mediaKeySession, retryNb);
63
+ log.debug("EME: Trying to close a MediaKeySession",
64
+ mediaKeySession.sessionId,
65
+ retryNb);
66
66
  return closeSession(mediaKeySession).pipe(
67
67
  tap(() => { log.debug("EME: Succeeded to close MediaKeySession"); }),
68
68
  catchError((err : unknown) => {
@@ -41,7 +41,7 @@ export default function isSessionUsable(
41
41
 
42
42
  if (keyStatuses.length <= 0) {
43
43
  log.debug("EME: isSessionUsable: MediaKeySession given has an empty keyStatuses",
44
- loadedSession);
44
+ loadedSession.sessionId);
45
45
  return false;
46
46
  }
47
47
 
@@ -18,11 +18,11 @@ import {
18
18
  concat as observableConcat,
19
19
  defer as observableDefer,
20
20
  EMPTY,
21
+ ignoreElements,
21
22
  merge as observableMerge,
22
23
  Observable,
23
24
  of as observableOf,
24
25
  } from "rxjs";
25
- import { ignoreElements } from "rxjs/operators";
26
26
  import {
27
27
  ICustomMediaKeys,
28
28
  ICustomMediaKeySession,
@@ -167,7 +167,7 @@ export default class LoadedSessionsStore {
167
167
  });
168
168
  }
169
169
 
170
- log.debug("EME-LSS: Add MediaKeySession", entry);
170
+ log.debug("EME-LSS: Add MediaKeySession", entry.sessionType);
171
171
  this._storage.store(initializationData, entry);
172
172
  return mediaKeySession;
173
173
  }
@@ -183,7 +183,7 @@ export default class PersistentSessionsStore {
183
183
  this.delete(initData);
184
184
  }
185
185
 
186
- log.info("EME-PSS: Add new session", sessionId, session);
186
+ log.info("EME-PSS: Add new session", sessionId);
187
187
 
188
188
  this._entries.push({ version: 3,
189
189
  sessionId,
@@ -205,7 +205,7 @@ export default class PersistentSessionsStore {
205
205
  return;
206
206
  }
207
207
  const entry = this._entries[index];
208
- log.warn("EME-PSS: Delete session from store", entry);
208
+ log.warn("EME-PSS: Delete session from store", entry.sessionId);
209
209
  this._entries.splice(index, 1);
210
210
  this._save();
211
211
  }
@@ -26,7 +26,7 @@ import SegmentFetcherCreator, {
26
26
  ISegmentFetcherChunkEvent,
27
27
  ISegmentFetcherCreatorBackoffOptions,
28
28
  ISegmentFetcherEvent,
29
- ISegmentFetcherWarning,
29
+ ISegmentFetcherRetry,
30
30
  } from "./segment";
31
31
 
32
32
  export {
@@ -46,5 +46,5 @@ export {
46
46
 
47
47
  ISegmentFetcherChunkEvent,
48
48
  ISegmentFetcherChunkCompleteEvent,
49
- ISegmentFetcherWarning,
49
+ ISegmentFetcherRetry,
50
50
  };
@@ -266,7 +266,7 @@ export default class ManifestFetcher {
266
266
  IManifestFetcherParsedResult> {
267
267
  return this._parseLoadedManifest({ responseData: manifest,
268
268
  size: undefined,
269
- duration: undefined },
269
+ requestDuration: undefined },
270
270
  parserOptions);
271
271
 
272
272
  }
@@ -16,21 +16,20 @@
16
16
 
17
17
  import {
18
18
  defer,
19
+ mapTo,
19
20
  merge,
20
21
  NEVER,
21
22
  of,
23
+ startWith,
22
24
  timer,
23
25
  } from "rxjs";
24
- import {
25
- mapTo,
26
- startWith,
27
- } from "rxjs/operators";
28
26
  import Prioritizer, {
29
27
  ITaskEvent,
30
28
  } from "../prioritizer";
31
29
 
32
30
  /* eslint-disable @typescript-eslint/no-floating-promises */
33
31
  /* eslint-disable @typescript-eslint/strict-boolean-expressions */
32
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
34
33
  /* eslint-disable no-restricted-properties */
35
34
 
36
35
  function assert(condition: boolean, msg?: string): asserts condition {
@@ -22,7 +22,7 @@ import {
22
22
  ISegmentFetcherChunkCompleteEvent,
23
23
  ISegmentFetcherChunkEvent,
24
24
  ISegmentFetcherEvent,
25
- ISegmentFetcherWarning,
25
+ ISegmentFetcherRetry,
26
26
  } from "./segment_fetcher";
27
27
  import SegmentFetcherCreator, {
28
28
  ISegmentFetcherCreatorBackoffOptions,
@@ -35,6 +35,6 @@ export {
35
35
  ISegmentFetcherChunkCompleteEvent,
36
36
  ISegmentFetcherChunkEvent,
37
37
  ISegmentFetcherEvent,
38
- ISegmentFetcherWarning,
38
+ ISegmentFetcherRetry,
39
39
  ISegmentFetcherCreatorBackoffOptions,
40
40
  };
@@ -14,54 +14,27 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { Observable } from "rxjs";
18
- import { map } from "rxjs/operators";
17
+ import {
18
+ map,
19
+ Observable,
20
+ } from "rxjs";
19
21
  import log from "../../../log";
20
- import ObservablePrioritizer, { ITaskEvent } from "./prioritizer";
22
+ import ObservablePrioritizer, {
23
+ IEndedTaskEvent,
24
+ IInterruptedTaskEvent,
25
+ ITaskEvent,
26
+ } from "./prioritizer";
21
27
  import {
22
28
  ISegmentFetcher,
23
- ISegmentFetcherEvent,
29
+ ISegmentFetcherChunkCompleteEvent,
30
+ ISegmentFetcherChunkEvent,
31
+ ISegmentFetcherRetry,
24
32
  ISegmentLoaderContent,
25
33
  } from "./segment_fetcher";
26
34
 
27
- /**
28
- * Event sent when a segment request has been temporarly interrupted due to
29
- * another request with a high priority.
30
- * The request for that segment will restart (from scratch) when requests with
31
- * more priority are finished.
32
- */
33
- export interface ISegmentFetcherInterruptedEvent { type : "interrupted" }
34
-
35
- /**
36
- * Event sent when a segment request just ended.
37
- * You can use this event to schedule another task you wanted to perform at best
38
- * immediately after that one (its priority will be checked).
39
- */
40
- export interface IEndedTaskEvent { type : "ended" }
41
-
42
- /** Event sent by a `IPrioritizedSegmentFetcher`. */
43
- export type IPrioritizedSegmentFetcherEvent<TSegmentDataType> =
44
- ISegmentFetcherEvent<TSegmentDataType> |
45
- ISegmentFetcherInterruptedEvent |
46
- IEndedTaskEvent;
47
-
48
- /** Oject returned by `applyPrioritizerToSegmentFetcher`. */
49
- export interface IPrioritizedSegmentFetcher<TSegmentDataType> {
50
- /** Create a new request for a segment with a given priority. */
51
- createRequest : (content : ISegmentLoaderContent,
52
- priority? : number) =>
53
- Observable<IPrioritizedSegmentFetcherEvent<TSegmentDataType>>;
54
-
55
- /** Update priority of a request created through `createRequest`. */
56
- updatePriority : (
57
- observable : Observable<IPrioritizedSegmentFetcherEvent<TSegmentDataType>>,
58
- priority : number
59
- ) => void;
60
- }
61
-
62
35
  /**
63
36
  * This function basically put in relation:
64
- * - a SegmentFetcher, which will be used to perform the segment request
37
+ * - an `ISegmentFetcher`, which will be used to perform the segment requests
65
38
  * - a prioritizer, which will handle the priority of a segment request
66
39
  *
67
40
  * and returns functions to fetch segments with a given priority.
@@ -73,15 +46,12 @@ export default function applyPrioritizerToSegmentFetcher<TSegmentDataType>(
73
46
  prioritizer : ObservablePrioritizer<IPrioritizedSegmentFetcherEvent<TSegmentDataType>>,
74
47
  fetcher : ISegmentFetcher<TSegmentDataType>
75
48
  ) : IPrioritizedSegmentFetcher<TSegmentDataType> {
76
- /**
77
- * The Observables returned by `createRequest` are not exactly the same than
78
- * the one created by the `ObservablePrioritizer`. Because we still have to
79
- * keep a handle on that value.
80
- */
49
+ /** Map returned task to the task as returned by the `ObservablePrioritizer`. */
81
50
  const taskHandlers = new WeakMap<
82
51
  Observable<IPrioritizedSegmentFetcherEvent<TSegmentDataType>>,
83
52
  Observable<ITaskEvent<IPrioritizedSegmentFetcherEvent<TSegmentDataType>>>
84
53
  >();
54
+
85
55
  return {
86
56
  /**
87
57
  * Create a Segment request with a given priority.
@@ -124,3 +94,25 @@ export default function applyPrioritizerToSegmentFetcher<TSegmentDataType>(
124
94
  },
125
95
  };
126
96
  }
97
+
98
+ /** Oject returned by `applyPrioritizerToSegmentFetcher`. */
99
+ export interface IPrioritizedSegmentFetcher<TSegmentDataType> {
100
+ /** Create a new request for a segment with a given priority. */
101
+ createRequest : (content : ISegmentLoaderContent,
102
+ priority? : number) =>
103
+ Observable<IPrioritizedSegmentFetcherEvent<TSegmentDataType>>;
104
+
105
+ /** Update priority of a request created through `createRequest`. */
106
+ updatePriority : (
107
+ observable : Observable<IPrioritizedSegmentFetcherEvent<TSegmentDataType>>,
108
+ priority : number
109
+ ) => void;
110
+ }
111
+
112
+ /** Event sent by a `IPrioritizedSegmentFetcher`. */
113
+ export type IPrioritizedSegmentFetcherEvent<TSegmentDataType> =
114
+ ISegmentFetcherChunkEvent<TSegmentDataType> |
115
+ ISegmentFetcherChunkCompleteEvent |
116
+ ISegmentFetcherRetry |
117
+ IInterruptedTaskEvent |
118
+ IEndedTaskEvent;
@@ -22,88 +22,6 @@ import {
22
22
  import log from "../../../log";
23
23
  import arrayFindIndex from "../../../utils/array_find_index";
24
24
 
25
- /**
26
- * Event sent when the corresponding task is a low-priority task that has just
27
- * been temporarly interrupted due to another task with a high priority.
28
- * The task will restart (from scratch) when tasks with more priority are
29
- * finished.
30
- */
31
- export interface IInterruptedTaskEvent { type : "interrupted" }
32
-
33
- /** Event sent when the corresponding task emit an event. */
34
- export interface ITaskDataEvent<T> { type : "data";
35
- value : T; }
36
-
37
- /**
38
- * Event sent when the corresponding task has ended (it will then complete).
39
- * You can use this event to schedule another task you wanted to perform after
40
- * that one.
41
- */
42
- export interface IEndedTaskEvent { type : "ended" }
43
-
44
- /** Events sent when a task has been created through the `create` method. */
45
- export type ITaskEvent<T> = IInterruptedTaskEvent |
46
- ITaskDataEvent<T> |
47
- IEndedTaskEvent;
48
-
49
- /** Stored object representing a single task. */
50
- interface IPrioritizerTask<T> {
51
- /**
52
- * Observable created by the ObservablePrioritizer allowing to identify
53
- * the task.
54
- * This is another Observable wrapping the underlying Observable that the
55
- * ObservablePrioritizer is asked to run.
56
- */
57
- observable : Observable<ITaskEvent<T>>;
58
- /**
59
- * Function used to start and interrupt a task:
60
- * - when `true` is emitted the task should be started. If it was already
61
- * started, it will be interrupted first.
62
- * - when `false` is emitted, the task should just be interrupted if running
63
- */
64
- trigger : (shouldRun : boolean) => void;
65
- /**
66
- * Subscription of the underlying, wrapped, Observable.
67
- * Only defined when the task has been started, `null` otherwise.
68
- */
69
- subscription : Subscription | null;
70
- /** Priority of the task. Lower that number is, higher is the priority. */
71
- priority : number;
72
- /** `true` if the underlying wrapped Observable either errored of completed. */
73
- finished : boolean;
74
- }
75
-
76
- /** Options to give to the ObservablePrioritizer. */
77
- export interface IPrioritizerOptions {
78
- /** @see IPrioritizerPrioritySteps */
79
- prioritySteps : IPrioritizerPrioritySteps;
80
- }
81
-
82
- /**
83
- * Define both the `low` and `high` priority steps:
84
- *
85
- * - Any Observable with a priority number that is lower or equal to the
86
- * `high` value will be an Observable with high priority.
87
- *
88
- * When Observables with high priorities are scheduled, they immediately
89
- * abort pending Observables with low priorities (which will have then to
90
- * wait until all higher-priority Observable have ended before re-starting).
91
- *
92
- * - Any Observable with a priority number that is higher or equal to the
93
- * `low` value will be an Observable with low priority.
94
- *
95
- * Pending Observables with low priorities have the added particularity*
96
- * of being aborted as soon as a high priority Observable is scheduled.
97
- *
98
- * * Other pending Observables are not aborted when a higher-priority
99
- * Observable is scheduled, as their priorities only affect them before
100
- * they are started (to know when to start them).
101
- */
102
- export interface IPrioritizerPrioritySteps {
103
- low : number;
104
- high : number;
105
- }
106
-
107
25
  /**
108
26
  * Create Observables which can be priorized between one another.
109
27
  *
@@ -556,3 +474,85 @@ export default class ObservablePrioritizer<T> {
556
474
  this._minPendingPriority <= this._prioritySteps.high;
557
475
  }
558
476
  }
477
+
478
+ /**
479
+ * Event sent when the corresponding task is a low-priority task that has just
480
+ * been temporarly interrupted due to another task with a high priority.
481
+ * The task will restart (from scratch) when tasks with more priority are
482
+ * finished.
483
+ */
484
+ export interface IInterruptedTaskEvent { type : "interrupted" }
485
+
486
+ /** Event sent when the corresponding task emit an event. */
487
+ export interface ITaskDataEvent<T> { type : "data";
488
+ value : T; }
489
+
490
+ /**
491
+ * Event sent when the corresponding task has ended (it will then complete).
492
+ * You can use this event to schedule another task you wanted to perform after
493
+ * that one.
494
+ */
495
+ export interface IEndedTaskEvent { type : "ended" }
496
+
497
+ /** Events sent when a task has been created through the `create` method. */
498
+ export type ITaskEvent<T> = IInterruptedTaskEvent |
499
+ ITaskDataEvent<T> |
500
+ IEndedTaskEvent;
501
+
502
+ /** Stored object representing a single task. */
503
+ interface IPrioritizerTask<T> {
504
+ /**
505
+ * Observable created by the ObservablePrioritizer allowing to identify
506
+ * the task.
507
+ * This is another Observable wrapping the underlying Observable that the
508
+ * ObservablePrioritizer is asked to run.
509
+ */
510
+ observable : Observable<ITaskEvent<T>>;
511
+ /**
512
+ * Function used to start and interrupt a task:
513
+ * - when `true` is emitted the task should be started. If it was already
514
+ * started, it will be interrupted first.
515
+ * - when `false` is emitted, the task should just be interrupted if running
516
+ */
517
+ trigger : (shouldRun : boolean) => void;
518
+ /**
519
+ * Subscription of the underlying, wrapped, Observable.
520
+ * Only defined when the task has been started, `null` otherwise.
521
+ */
522
+ subscription : Subscription | null;
523
+ /** Priority of the task. Lower that number is, higher is the priority. */
524
+ priority : number;
525
+ /** `true` if the underlying wrapped Observable either errored of completed. */
526
+ finished : boolean;
527
+ }
528
+
529
+ /** Options to give to the ObservablePrioritizer. */
530
+ export interface IPrioritizerOptions {
531
+ /** @see IPrioritizerPrioritySteps */
532
+ prioritySteps : IPrioritizerPrioritySteps;
533
+ }
534
+
535
+ /**
536
+ * Define both the `low` and `high` priority steps:
537
+ *
538
+ * - Any Observable with a priority number that is lower or equal to the
539
+ * `high` value will be an Observable with high priority.
540
+ *
541
+ * When Observables with high priorities are scheduled, they immediately
542
+ * abort pending Observables with low priorities (which will have then to
543
+ * wait until all higher-priority Observable have ended before re-starting).
544
+ *
545
+ * - Any Observable with a priority number that is higher or equal to the
546
+ * `low` value will be an Observable with low priority.
547
+ *
548
+ * Pending Observables with low priorities have the added particularity*
549
+ * of being aborted as soon as a high priority Observable is scheduled.
550
+ *
551
+ * * Other pending Observables are not aborted when a higher-priority
552
+ * Observable is scheduled, as their priorities only affect them before
553
+ * they are started (to know when to start them).
554
+ */
555
+ export interface IPrioritizerPrioritySteps {
556
+ low : number;
557
+ high : number;
558
+ }