rx-player 3.26.2 → 3.27.0-dev.20220317

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 (500) hide show
  1. package/.github/workflows/perfs.yml +22 -0
  2. package/CHANGELOG.md +33 -1
  3. package/FILES.md +5 -4
  4. package/VERSION +1 -1
  5. package/dist/_esm5.processed/compat/browser_detection.d.ts +4 -2
  6. package/dist/_esm5.processed/compat/browser_detection.js +4 -2
  7. package/dist/_esm5.processed/compat/eme/close_session.d.ts +11 -5
  8. package/dist/_esm5.processed/compat/eme/close_session.js +144 -36
  9. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
  10. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +27 -24
  11. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +53 -34
  12. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +43 -41
  13. package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
  14. package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
  15. package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
  16. package/dist/_esm5.processed/compat/eme/load_session.js +68 -17
  17. package/dist/_esm5.processed/compat/event_listeners.js +2 -1
  18. package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
  19. package/dist/_esm5.processed/config.d.ts +166 -1080
  20. package/dist/_esm5.processed/config.js +17 -1119
  21. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
  22. package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
  23. package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
  24. package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +1 -1
  25. package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
  26. package/dist/_esm5.processed/core/abr/pending_requests_store.js +3 -5
  27. package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +1 -1
  28. package/dist/_esm5.processed/core/abr/representation_estimator.js +2 -2
  29. package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
  30. package/dist/_esm5.processed/core/api/index.d.ts +2 -1
  31. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
  32. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +22 -4
  33. package/dist/_esm5.processed/core/api/option_utils.d.ts +3 -1
  34. package/dist/_esm5.processed/core/api/option_utils.js +19 -6
  35. package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
  36. package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
  37. package/dist/_esm5.processed/core/api/public_api.js +72 -33
  38. package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +6 -6
  39. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -51
  40. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +30 -75
  41. package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
  42. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +104 -0
  43. package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
  44. package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +41 -0
  45. package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
  46. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +866 -0
  47. package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
  48. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
  49. package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
  50. package/dist/_esm5.processed/core/decrypt/create_session.js +174 -0
  51. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +21 -0
  52. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
  53. package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
  54. package/dist/_esm5.processed/core/decrypt/find_key_system.js +300 -0
  55. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
  56. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
  57. package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
  58. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
  59. package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
  60. package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
  61. package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
  62. package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
  63. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
  64. package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
  65. package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
  66. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
  67. package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +120 -242
  68. package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
  69. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
  70. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
  71. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
  72. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
  73. package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
  74. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +85 -0
  75. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
  76. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
  77. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
  78. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
  79. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
  80. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
  81. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
  82. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
  83. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
  84. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
  85. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
  86. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
  87. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
  88. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +303 -0
  89. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
  90. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
  91. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
  92. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
  93. package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
  94. package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
  95. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
  96. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
  97. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +4 -4
  98. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +3 -3
  99. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +2 -2
  100. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +6 -2
  101. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  102. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +1 -1
  103. package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
  104. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +3 -3
  105. package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
  106. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +5 -3
  107. package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
  108. package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
  109. package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
  110. package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
  111. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
  112. package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
  113. package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
  114. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
  115. package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
  116. package/dist/_esm5.processed/core/init/types.d.ts +2 -4
  117. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
  118. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +3 -3
  119. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
  120. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +32 -31
  121. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +4 -4
  122. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
  123. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
  124. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
  125. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
  126. package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
  127. package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
  128. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
  129. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
  130. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
  131. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +1 -1
  132. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +2 -1
  133. package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
  134. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +5 -6
  135. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
  136. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
  137. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
  138. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
  139. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
  140. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
  141. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
  142. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
  143. package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
  144. package/dist/_esm5.processed/default_config.d.ts +1114 -0
  145. package/dist/_esm5.processed/default_config.js +1145 -0
  146. package/dist/_esm5.processed/errors/request_error.js +3 -1
  147. package/dist/_esm5.processed/experimental/index.d.ts +2 -0
  148. package/dist/_esm5.processed/experimental/index.js +2 -0
  149. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
  150. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
  151. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +2 -4
  152. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
  153. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
  154. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +1 -2
  155. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +1 -2
  156. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
  157. package/dist/_esm5.processed/features/features_object.js +1 -1
  158. package/dist/_esm5.processed/features/initialize_features.js +1 -1
  159. package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
  160. package/dist/_esm5.processed/features/list/eme.js +5 -5
  161. package/dist/_esm5.processed/features/types.d.ts +3 -3
  162. package/dist/_esm5.processed/manifest/adaptation.d.ts +2 -2
  163. package/dist/_esm5.processed/manifest/adaptation.js +3 -1
  164. package/dist/_esm5.processed/manifest/manifest.d.ts +10 -23
  165. package/dist/_esm5.processed/manifest/manifest.js +10 -74
  166. package/dist/_esm5.processed/manifest/period.d.ts +3 -3
  167. package/dist/_esm5.processed/manifest/representation.d.ts +37 -5
  168. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +18 -18
  169. package/dist/_esm5.processed/manifest/types.d.ts +3 -3
  170. package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
  171. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
  172. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +6 -6
  173. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
  174. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -2
  175. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
  176. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +14 -14
  177. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +17 -17
  178. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
  179. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
  180. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +28 -20
  181. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +20 -5
  182. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  183. package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
  184. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -35
  185. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +109 -96
  186. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +8 -8
  187. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
  188. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +18 -27
  189. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +25 -23
  190. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +21 -15
  191. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +19 -19
  192. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -38
  193. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +8 -8
  194. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +30 -30
  195. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +3 -3
  196. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -1
  197. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
  198. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
  199. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
  200. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
  201. package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
  202. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
  203. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +15 -5
  204. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +2 -2
  205. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
  206. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +31 -19
  207. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
  208. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
  209. package/dist/_esm5.processed/public_types.d.ts +2 -2
  210. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +2 -1
  211. package/dist/_esm5.processed/transports/dash/image_pipelines.js +4 -1
  212. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
  213. package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
  214. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
  215. package/dist/_esm5.processed/transports/dash/segment_loader.js +2 -2
  216. package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +1 -1
  217. package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
  218. package/dist/_esm5.processed/transports/dash/text_loader.d.ts +1 -1
  219. package/dist/_esm5.processed/transports/dash/text_loader.js +1 -1
  220. package/dist/_esm5.processed/transports/dash/text_parser.d.ts +1 -1
  221. package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
  222. package/dist/_esm5.processed/transports/local/segment_loader.d.ts +1 -2
  223. package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
  224. package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
  225. package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
  226. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +1 -1
  227. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
  228. package/dist/_esm5.processed/transports/smooth/pipelines.js +69 -11
  229. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +0 -1
  230. package/dist/_esm5.processed/transports/smooth/segment_loader.js +2 -2
  231. package/dist/_esm5.processed/transports/types.d.ts +58 -30
  232. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
  233. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +1 -1
  234. package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -1
  235. package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
  236. package/dist/_esm5.processed/utils/cast_to_observable.js +1 -1
  237. package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
  238. package/dist/_esm5.processed/utils/deep_merge.js +53 -0
  239. package/dist/_esm5.processed/utils/reference.d.ts +29 -0
  240. package/dist/_esm5.processed/utils/reference.js +72 -24
  241. package/dist/_esm5.processed/utils/request/fetch.d.ts +4 -5
  242. package/dist/_esm5.processed/utils/request/fetch.js +8 -6
  243. package/dist/_esm5.processed/utils/request/xhr.d.ts +6 -6
  244. package/dist/_esm5.processed/utils/request/xhr.js +3 -2
  245. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +1 -2
  246. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
  247. package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
  248. package/dist/_esm5.processed/utils/task_canceller.js +3 -3
  249. package/dist/rx-player.js +5242 -3190
  250. package/dist/rx-player.min.js +1 -1
  251. package/dummy +1 -0
  252. package/{dist/_esm5.processed/core/eme/dispose_eme.d.ts → experimental/index.d.ts} +1 -4
  253. package/{dist/_esm5.processed/core/eme/dispose_media_keys.d.ts → experimental/index.js} +1 -6
  254. package/package.json +33 -36
  255. package/scripts/build/templates/experimental/index.d.ts +16 -0
  256. package/scripts/build/templates/experimental/index.js +16 -0
  257. package/scripts/doc-generator/generate_header_html.js +6 -7
  258. package/scripts/doc-generator/generate_page_html.js +3 -4
  259. package/scripts/doc-generator/generate_page_list_html.js +4 -5
  260. package/scripts/doc-generator/generate_sidebar_html.js +4 -7
  261. package/scripts/doc-generator/utils.js +0 -11
  262. package/scripts/generate_demo_list.js +3 -3
  263. package/scripts/generate_documentation_list.js +3 -3
  264. package/scripts/launch_static_server.js +127 -67
  265. package/scripts/run_standalone_demo.js +1 -0
  266. package/scripts/start_demo_web_server.js +1 -0
  267. package/sonar-project.properties +1 -1
  268. package/src/README.md +6 -6
  269. package/src/compat/__tests__/fullscreen.test.ts +7 -7
  270. package/src/compat/__tests__/is_vtt_cue.test.ts +1 -1
  271. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
  272. package/src/compat/browser_detection.ts +4 -2
  273. package/src/compat/eme/close_session.ts +90 -56
  274. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
  275. package/src/compat/eme/custom_media_keys/index.ts +28 -41
  276. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +63 -46
  277. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +51 -49
  278. package/src/compat/eme/generate_key_request.ts +25 -33
  279. package/src/compat/eme/load_session.ts +29 -31
  280. package/src/compat/event_listeners.ts +2 -1
  281. package/src/compat/should_favour_custom_safari_EME.ts +5 -2
  282. package/src/config.ts +17 -1210
  283. package/src/core/README.md +1 -1
  284. package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
  285. package/src/core/abr/bandwidth_estimator.ts +4 -4
  286. package/src/core/abr/buffer_based_chooser.ts +85 -20
  287. package/src/core/abr/network_analyzer.ts +6 -7
  288. package/src/core/abr/pending_requests_store.ts +3 -5
  289. package/src/core/abr/representation_estimator.ts +6 -3
  290. package/src/core/api/__tests__/get_player_state.test.ts +3 -3
  291. package/src/core/api/__tests__/option_utils.test.ts +17 -17
  292. package/src/core/api/get_player_state.ts +1 -1
  293. package/src/core/api/index.ts +3 -0
  294. package/src/core/api/media_element_track_choice_manager.ts +22 -3
  295. package/src/core/api/option_utils.ts +37 -20
  296. package/src/core/api/playback_observer.ts +12 -8
  297. package/src/core/api/public_api.ts +152 -112
  298. package/src/core/api/track_choice_manager.ts +10 -9
  299. package/src/core/decrypt/README.md +22 -0
  300. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
  301. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
  302. package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
  303. package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
  304. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
  305. package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +36 -103
  306. package/src/core/{eme → decrypt}/attach_media_keys.ts +49 -56
  307. package/src/core/decrypt/clear_on_stop.ts +48 -0
  308. package/src/core/decrypt/content_decryptor.ts +1158 -0
  309. package/src/core/decrypt/create_or_load_session.ts +130 -0
  310. package/src/core/decrypt/create_session.ts +175 -0
  311. package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
  312. package/src/core/{eme → decrypt}/find_key_system.ts +126 -134
  313. package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
  314. package/src/core/decrypt/get_media_keys.ts +145 -0
  315. package/src/core/{eme → decrypt}/index.ts +11 -8
  316. package/src/core/decrypt/init_media_keys.ts +51 -0
  317. package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
  318. package/src/core/decrypt/set_server_certificate.ts +104 -0
  319. package/src/core/{eme → decrypt}/types.ts +129 -259
  320. package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
  321. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
  322. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
  323. package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
  324. package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
  325. package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +20 -20
  326. package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
  327. package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
  328. package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
  329. package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
  330. package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
  331. package/src/core/decrypt/utils/key_session_record.ts +175 -0
  332. package/src/core/decrypt/utils/loaded_sessions_store.ts +318 -0
  333. package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
  334. package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
  335. package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
  336. package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
  337. package/src/core/fetchers/manifest/manifest_fetcher.ts +9 -9
  338. package/src/core/fetchers/segment/segment_fetcher.ts +10 -7
  339. package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
  340. package/src/core/fetchers/utils/try_urls_with_backoff.ts +1 -1
  341. package/src/core/init/.initialize_media_source.ts.un~ +0 -0
  342. package/src/core/init/get_initial_time.ts +2 -1
  343. package/src/core/init/initialize_directfile.ts +19 -22
  344. package/src/core/init/initialize_media_source.ts +43 -106
  345. package/src/core/init/link_drm_and_content.ts +176 -0
  346. package/src/core/init/manifest_update_scheduler.ts +12 -10
  347. package/src/core/init/stall_avoider.ts +6 -5
  348. package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
  349. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
  350. package/src/core/init/stream_events_emitter/types.ts +2 -2
  351. package/src/core/init/types.ts +1 -39
  352. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
  353. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +6 -7
  354. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +32 -31
  355. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
  356. package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
  357. package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
  358. package/src/core/stream/events_generators.ts +9 -4
  359. package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
  360. package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
  361. package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
  362. package/src/core/stream/period/period_stream.ts +5 -2
  363. package/src/core/stream/representation/force_garbage_collection.ts +5 -7
  364. package/src/core/stream/representation/get_buffer_status.ts +28 -16
  365. package/src/core/stream/representation/get_needed_segments.ts +124 -28
  366. package/src/core/stream/representation/get_segment_priority.ts +1 -2
  367. package/src/core/stream/representation/push_media_segment.ts +3 -2
  368. package/src/core/stream/representation/representation_stream.ts +30 -7
  369. package/src/core/stream/types.ts +1 -1
  370. package/src/default_config.ts +1241 -0
  371. package/src/errors/request_error.ts +4 -1
  372. package/src/experimental/index.ts +5 -0
  373. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
  374. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +5 -7
  375. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
  376. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +4 -4
  377. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +1 -1
  378. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
  379. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +1 -2
  380. package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +1 -2
  381. package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
  382. package/src/features/__tests__/initialize_features.test.ts +2 -2
  383. package/src/features/features_object.ts +1 -1
  384. package/src/features/initialize_features.ts +1 -1
  385. package/src/features/list/__tests__/eme.test.ts +5 -5
  386. package/src/features/list/eme.ts +5 -5
  387. package/src/features/types.ts +3 -10
  388. package/src/manifest/adaptation.ts +6 -4
  389. package/src/manifest/manifest.ts +16 -86
  390. package/src/manifest/period.ts +3 -3
  391. package/src/manifest/representation.ts +38 -5
  392. package/src/manifest/representation_index/types.ts +18 -18
  393. package/src/manifest/types.ts +3 -3
  394. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
  395. package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
  396. package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
  397. package/src/parsers/manifest/dash/common/indexes/base.ts +6 -6
  398. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +4 -2
  399. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +2 -2
  400. package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
  401. package/src/parsers/manifest/dash/common/indexes/list.ts +14 -14
  402. package/src/parsers/manifest/dash/common/indexes/template.ts +18 -18
  403. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
  404. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +51 -23
  405. package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
  406. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
  407. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +167 -134
  408. package/src/parsers/manifest/dash/common/parse_mpd.ts +9 -10
  409. package/src/parsers/manifest/dash/common/parse_periods.ts +80 -79
  410. package/src/parsers/manifest/dash/common/parse_representation_index.ts +83 -75
  411. package/src/parsers/manifest/dash/common/parse_representations.ts +44 -63
  412. package/src/parsers/manifest/dash/node_parser_types.ts +30 -30
  413. package/src/parsers/manifest/dash/parsers_types.ts +3 -3
  414. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
  415. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +4 -4
  416. package/src/parsers/manifest/smooth/create_parser.ts +24 -21
  417. package/src/parsers/manifest/smooth/representation_index.ts +14 -14
  418. package/src/parsers/manifest/types.ts +28 -28
  419. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +31 -33
  420. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +15 -6
  421. package/src/parsers/manifest/utils/index_helpers.ts +2 -2
  422. package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
  423. package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
  424. package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
  425. package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
  426. package/src/public_types.ts +5 -1
  427. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +2 -2
  428. package/src/transports/dash/image_pipelines.ts +4 -1
  429. package/src/transports/dash/init_segment_loader.ts +1 -1
  430. package/src/transports/dash/manifest_parser.ts +1 -1
  431. package/src/transports/dash/segment_loader.ts +7 -7
  432. package/src/transports/dash/segment_parser.ts +8 -1
  433. package/src/transports/dash/text_loader.ts +2 -2
  434. package/src/transports/dash/text_parser.ts +11 -1
  435. package/src/transports/local/segment_loader.ts +4 -4
  436. package/src/transports/local/segment_parser.ts +4 -0
  437. package/src/transports/local/text_parser.ts +8 -0
  438. package/src/transports/metaplaylist/manifest_loader.ts +1 -1
  439. package/src/transports/metaplaylist/pipelines.ts +1 -1
  440. package/src/transports/smooth/pipelines.ts +29 -16
  441. package/src/transports/smooth/segment_loader.ts +8 -8
  442. package/src/transports/types.ts +59 -30
  443. package/src/transports/utils/call_custom_manifest_loader.ts +6 -6
  444. package/src/transports/utils/generate_manifest_loader.ts +1 -1
  445. package/src/utils/__tests__/deep_merge.test.ts +48 -0
  446. package/src/utils/__tests__/flat_map.test.ts +12 -7
  447. package/src/utils/cancellable_sleep.ts +1 -1
  448. package/src/utils/cast_to_observable.ts +1 -2
  449. package/src/utils/deep_merge.ts +46 -0
  450. package/src/utils/reference.ts +116 -23
  451. package/src/utils/request/fetch.ts +17 -15
  452. package/src/utils/request/xhr.ts +11 -8
  453. package/src/utils/rx-from_cancellable_promise.ts +8 -4
  454. package/src/utils/task_canceller.ts +6 -4
  455. package/tsconfig.json +1 -2
  456. package/tsconfig.modules.json +1 -2
  457. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
  458. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
  459. package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
  460. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
  461. package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
  462. package/dist/_esm5.processed/core/eme/create_session.js +0 -126
  463. package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
  464. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
  465. package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
  466. package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
  467. package/dist/_esm5.processed/core/eme/find_key_system.js +0 -243
  468. package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
  469. package/dist/_esm5.processed/core/eme/get_session.js +0 -68
  470. package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
  471. package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
  472. package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
  473. package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
  474. package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
  475. package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
  476. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
  477. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
  478. package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
  479. package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
  480. package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
  481. package/src/core/eme/README.md +0 -26
  482. package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
  483. package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
  484. package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
  485. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
  486. package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
  487. package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
  488. package/src/core/eme/clear_eme_session.ts +0 -62
  489. package/src/core/eme/create_session.ts +0 -187
  490. package/src/core/eme/dispose_eme.ts +0 -25
  491. package/src/core/eme/dispose_media_keys.ts +0 -46
  492. package/src/core/eme/eme_manager.ts +0 -387
  493. package/src/core/eme/get_media_keys.ts +0 -141
  494. package/src/core/eme/get_session.ts +0 -135
  495. package/src/core/eme/init_media_keys.ts +0 -106
  496. package/src/core/eme/set_server_certificate.ts +0 -115
  497. package/src/core/eme/utils/close_session.ts +0 -113
  498. package/src/core/eme/utils/init_data_store.ts +0 -234
  499. package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
  500. package/src/core/init/create_eme_manager.ts +0 -95
@@ -50,7 +50,10 @@ export default class RequestError extends Error {
50
50
 
51
51
  this.name = "RequestError";
52
52
  this.url = url;
53
- this.xhr = xhr;
53
+
54
+ if (xhr !== undefined) {
55
+ this.xhr = xhr;
56
+ }
54
57
  this.status = status;
55
58
  this.type = type;
56
59
  this.message = type;
@@ -0,0 +1,5 @@
1
+ import configHandler from "../config";
2
+
3
+ export {
4
+ configHandler as config,
5
+ };
@@ -24,6 +24,7 @@ export default function pushData(
24
24
  adaptation: Adaptation;
25
25
  representation: Representation;
26
26
  segment: ISegment;
27
+ chunkSize: number | undefined;
27
28
  start: number;
28
29
  end: number; },
29
30
  parsed: ISegmentParserParsedMediaChunk<Uint8Array | ArrayBuffer>,
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import pinkie from "pinkie";
18
17
  import {
19
18
  catchError,
20
19
  combineLatest,
@@ -36,6 +35,7 @@ import createSegmentFetcher, {
36
35
  import log from "../../../log";
37
36
  import { ISegment } from "../../../manifest";
38
37
  import objectAssign from "../../../utils/object_assign";
38
+ import PPromise from "../../../utils/promise";
39
39
  import { freeRequest } from "./create_request";
40
40
  import getCompleteSegmentId from "./get_complete_segment_id";
41
41
  import getContentInfos from "./get_content_infos";
@@ -52,9 +52,6 @@ import {
52
52
  } from "./types";
53
53
  import VideoThumbnailLoaderError from "./video_thumbnail_loader_error";
54
54
 
55
- const PPromise = typeof Promise === "function" ? Promise :
56
- pinkie;
57
-
58
55
  const MIN_NEEDED_DATA_AFTER_TIME = 2;
59
56
 
60
57
  interface ITimeSettingTask { contentInfos: IContentInfos;
@@ -75,8 +72,8 @@ export default class VideoThumbnailLoader {
75
72
  private readonly _videoElement: HTMLVideoElement;
76
73
 
77
74
  private _player: Player;
78
- private _currentTask?: ITimeSettingTask;
79
- private _nextTaskSegmentsCompleteIds?: string[];
75
+ private _currentTask : ITimeSettingTask | undefined;
76
+ private _nextTaskSegmentsCompleteIds : string[] | undefined;
80
77
  constructor(videoElement: HTMLVideoElement,
81
78
  player: Player) {
82
79
  this._videoElement = videoElement;
@@ -252,7 +249,8 @@ export default class VideoThumbnailLoader {
252
249
  if (end === undefined) {
253
250
  end = start + (segment.duration / segment.timescale);
254
251
  }
255
- const inventoryInfos = objectAssign({ segment,
252
+ const inventoryInfos = objectAssign({ chunkSize: data.chunkSize,
253
+ segment,
256
254
  start,
257
255
  end }, contentInfos);
258
256
  return pushData(inventoryInfos,
@@ -20,11 +20,8 @@
20
20
  /* eslint-disable @typescript-eslint/no-unsafe-call */
21
21
  /* eslint-disable @typescript-eslint/no-unsafe-assignment */
22
22
  /* eslint-disable @typescript-eslint/no-unsafe-return */
23
+ /* eslint-disable no-restricted-properties */
23
24
 
24
- import {
25
- map,
26
- of as observableOf,
27
- } from "rxjs";
28
25
  import { ProberStatus } from "../../types";
29
26
 
30
27
 
@@ -81,7 +78,7 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => {
81
78
  },
82
79
  };
83
80
  const mockRequestMediaKeySystemAccess = jest.fn(() => {
84
- return observableOf({
81
+ return Promise.resolve({
85
82
  getConfiguration: () => ({}),
86
83
  });
87
84
  });
@@ -114,11 +111,7 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => {
114
111
  };
115
112
  const mockRequestMediaKeySystemAccess = jest.fn(
116
113
  () => {
117
- return observableOf(null).pipe(
118
- map(() => {
119
- throw new Error();
120
- })
121
- );
114
+ return Promise.reject(new Error());
122
115
  }
123
116
  );
124
117
  jest.mock("../../../../../compat", () => ({
@@ -20,8 +20,8 @@
20
20
  /* eslint-disable @typescript-eslint/no-unsafe-call */
21
21
  /* eslint-disable @typescript-eslint/no-unsafe-assignment */
22
22
  /* eslint-disable @typescript-eslint/no-unsafe-return */
23
+ /* eslint-disable no-restricted-properties */
23
24
 
24
- import { of as observableOf } from "rxjs";
25
25
  import PPromise from "../../../../../utils/promise";
26
26
  import { ProberStatus } from "../../types";
27
27
 
@@ -60,7 +60,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => {
60
60
  return PPromise.resolve({});
61
61
  });
62
62
  const mockRequestMediaKeySystemAcces = jest.fn(() => {
63
- return observableOf({
63
+ return Promise.resolve({
64
64
  createMediaKeys: mockCreateMediaKeys,
65
65
  });
66
66
  });
@@ -90,7 +90,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => {
90
90
  });
91
91
  });
92
92
  const mockRequestMediaKeySystemAcces = jest.fn(() => {
93
- return observableOf({
93
+ return Promise.resolve({
94
94
  createMediaKeys: mockCreateMediaKeys,
95
95
  });
96
96
  });
@@ -120,7 +120,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => {
120
120
  });
121
121
  });
122
122
  const mockRequestMediaKeySystemAcces = jest.fn(() => {
123
- return observableOf({
123
+ return Promise.resolve({
124
124
  createMediaKeys: mockCreateMediaKeys,
125
125
  });
126
126
  });
@@ -127,7 +127,7 @@ const mediaCapabilitiesProber = {
127
127
  }>
128
128
  ) : Promise<ICompatibleKeySystem[]> {
129
129
  const promises: Array<Promise<{ globalStatus: ProberStatus;
130
- result? : ICompatibleKeySystem; }>> = [];
130
+ result? : ICompatibleKeySystem | undefined; }>> = [];
131
131
  configurations.forEach((configuration) => {
132
132
  const globalConfig = {
133
133
  keySystem: configuration,
@@ -36,7 +36,7 @@ export interface IProbedMediaConfiguration {
36
36
  globalStatus: ProberStatus;
37
37
  resultsFromAPIS: Array<{
38
38
  APIName: ICapabilitiesTypes;
39
- result?: IResultsFromAPI;
39
+ result?: IResultsFromAPI | undefined;
40
40
  }>;
41
41
  }
42
42
 
@@ -63,7 +63,7 @@ function probeMediaConfiguration(
63
63
  let globalStatus : ProberStatus|undefined;
64
64
  const resultsFromAPIS: Array<{
65
65
  APIName: ICapabilitiesTypes;
66
- result?: IResultsFromAPI;
66
+ result: IResultsFromAPI | undefined;
67
67
  }> = [];
68
68
  const promises = [];
69
69
  for (const browserAPI of browserAPIS) {
@@ -103,7 +103,7 @@ function probeMediaConfiguration(
103
103
  }
104
104
 
105
105
  return PPromise.all(promises).then(() => {
106
- if (globalStatus == null) {
106
+ if (globalStatus === undefined) {
107
107
  globalStatus = ProberStatus.Unknown;
108
108
  }
109
109
 
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { lastValueFrom } from "rxjs";
18
17
  import { requestMediaKeySystemAccess } from "../../../../compat";
19
18
  import PPromise from "../../../../utils/promise";
20
19
  import log from "../log";
@@ -55,7 +54,7 @@ export default function probeDRMInfos(
55
54
  return PPromise.resolve([ProberStatus.NotSupported, result]);
56
55
  }
57
56
 
58
- return lastValueFrom(requestMediaKeySystemAccess(type, [configuration]))
57
+ return requestMediaKeySystemAccess(type, [configuration])
59
58
  .then((keySystemAccess) => {
60
59
  result.compatibleConfiguration = keySystemAccess.getConfiguration();
61
60
  const status : [ProberStatus, ICompatibleKeySystem?] =
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { lastValueFrom } from "rxjs";
18
17
  import { requestMediaKeySystemAccess } from "../../../../compat";
19
18
  import PPromise from "../../../../utils/promise";
20
19
  import {
@@ -61,7 +60,7 @@ export default function probeHDCPPolicy(
61
60
  }],
62
61
  };
63
62
 
64
- return lastValueFrom(requestMediaKeySystemAccess(keySystem, [drmConfig]))
63
+ return requestMediaKeySystemAccess(keySystem, [drmConfig])
65
64
  .then((mediaKeysSystemAccess) => {
66
65
  return mediaKeysSystemAccess.createMediaKeys().then((mediaKeys) => {
67
66
  if (!("getStatusForPolicy" in mediaKeys)) {
@@ -52,9 +52,9 @@ export interface IDisplayConfiguration {
52
52
  }
53
53
 
54
54
  export interface IMediaConfiguration {
55
- type?: "media-source"|"file";
56
- video?: IVideoConfiguration;
57
- audio?: IAudioConfiguration;
55
+ type?: "media-source" | "file" | undefined;
56
+ video?: IVideoConfiguration | undefined;
57
+ audio?: IAudioConfiguration | undefined;
58
58
  keySystem?: IKeySystem;
59
59
  hdcp?: string;
60
60
  display?: IDisplayConfiguration;
@@ -93,7 +93,7 @@ describe("Features - initializeFeaturesObject", () => {
93
93
  nativeTextTracksParsers: {},
94
94
  htmlTextTracksBuffer: null,
95
95
  htmlTextTracksParsers: {},
96
- emeManager: null,
96
+ ContentDecryptor: null,
97
97
  directfile: null,
98
98
  };
99
99
  jest.mock("../features_object", () => ({
@@ -113,7 +113,7 @@ describe("Features - initializeFeaturesObject", () => {
113
113
  js: require("../../parsers/manifest/dash/js-parser").default,
114
114
  wasm: null,
115
115
  },
116
- emeManager: require("../../core/eme/index").default,
116
+ ContentDecryptor: require("../../core/decrypt/index").default,
117
117
  directfile: {
118
118
  initDirectFile: require("../../core/init/initialize_directfile").default,
119
119
  mediaElementTrackChoiceManager:
@@ -23,7 +23,7 @@ import { IFeaturesObject } from "./types";
23
23
  const features : IFeaturesObject = { dashParsers: { wasm: null,
24
24
  js: null },
25
25
  directfile: null,
26
- emeManager: null,
26
+ ContentDecryptor: null,
27
27
  htmlTextTracksBuffer: null,
28
28
  htmlTextTracksParsers: {},
29
29
  imageBuffer: null,
@@ -27,7 +27,7 @@ import features from "./features_object";
27
27
  */
28
28
  export default function initializeFeaturesObject() : void {
29
29
  if (__FEATURES__.EME === __FEATURES__.IS_ENABLED as number) {
30
- features.emeManager = require("../core/eme/index.ts").default;
30
+ features.ContentDecryptor = require("../core/decrypt/index.ts").default;
31
31
  }
32
32
 
33
33
  if (__FEATURES__.BIF_PARSER === __FEATURES__.IS_ENABLED as number) {
@@ -17,20 +17,20 @@
17
17
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
18
18
  /* eslint-disable @typescript-eslint/no-unsafe-argument */
19
19
 
20
- import emeManager from "../../../core/eme";
20
+ import ContentDecryptor from "../../../core/decrypt";
21
21
  import addEMEFeature from "../eme";
22
22
 
23
- jest.mock("../../../core/eme", () => ({
23
+ jest.mock("../../../core/decrypt", () => ({
24
24
  __esModule: true as const,
25
25
  default: jest.fn(),
26
26
  }));
27
27
 
28
28
  describe("Features list - EME", () => {
29
- it("should add EME in the current features", () => {
29
+ it("should add the ContentDecryptor in the current features", () => {
30
30
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
31
  const featureObject : any = {};
32
32
  addEMEFeature(featureObject);
33
- expect(featureObject).toEqual({ emeManager });
34
- expect(featureObject.emeManager).toBe(emeManager);
33
+ expect(featureObject).toEqual({ ContentDecryptor });
34
+ expect(featureObject.ContentDecryptor).toBe(ContentDecryptor);
35
35
  });
36
36
  });
@@ -14,16 +14,16 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import EMEManager from "../../core/eme";
17
+ import ContentDecryptor from "../../core/decrypt";
18
18
  import { IFeaturesObject } from "../types";
19
19
 
20
20
  /**
21
21
  * Add ability to play encrypted contents
22
22
  * @param {Object} features
23
23
  */
24
- function addEMEManagerFeature(features : IFeaturesObject) : void {
25
- features.emeManager = EMEManager;
24
+ function addEMEFeature(features : IFeaturesObject) : void {
25
+ features.ContentDecryptor = ContentDecryptor;
26
26
  }
27
27
 
28
- export { addEMEManagerFeature as EME };
29
- export default addEMEManagerFeature;
28
+ export { addEMEFeature as EME };
29
+ export default addEMEFeature;
@@ -17,11 +17,7 @@
17
17
  import { Observable } from "rxjs";
18
18
  // eslint-disable-next-line max-len
19
19
  import MediaElementTrackChoiceManager from "../core/api/media_element_track_choice_manager";
20
- import {
21
- IContentProtection,
22
- IEMEManagerEvent,
23
- IKeySystemOption,
24
- } from "../core/eme";
20
+ import type ContentDecryptor from "../core/decrypt";
25
21
  import {
26
22
  IDirectfileEvent,
27
23
  IDirectFileOptions,
@@ -41,10 +37,7 @@ import { ITransportFunction } from "../transports";
41
37
  export type IDirectFileInit = (args : IDirectFileOptions) =>
42
38
  Observable<IDirectfileEvent>;
43
39
 
44
- export type IEMEManager = (mediaElement : HTMLMediaElement,
45
- keySystems: IKeySystemOption[],
46
- contentProtections$ : Observable<IContentProtection>) =>
47
- Observable<IEMEManagerEvent>;
40
+ export type IContentDecryptorClass = typeof ContentDecryptor;
48
41
 
49
42
  export type IHTMLTextTracksBuffer =
50
43
  new(mediaElement : HTMLMediaElement,
@@ -89,7 +82,7 @@ export interface IFeaturesObject {
89
82
  directfile : { initDirectFile: IDirectFileInit;
90
83
  mediaElementTrackChoiceManager : IMediaElementTrackChoiceManager; } |
91
84
  null;
92
- emeManager : IEMEManager|null;
85
+ ContentDecryptor : IContentDecryptorClass|null;
93
86
  htmlTextTracksBuffer : IHTMLTextTracksBuffer|null;
94
87
  htmlTextTracksParsers : Partial<Record<string, IHTMLTextTracksParserFn>>;
95
88
  imageBuffer : IImageBuffer|null;
@@ -109,16 +109,18 @@ export default class Adaptation {
109
109
  * @param {Object|undefined} [options]
110
110
  */
111
111
  constructor(parsedAdaptation : IParsedAdaptation, options : {
112
- representationFilter? : IRepresentationFilter;
113
- isManuallyAdded? : boolean;
112
+ representationFilter? : IRepresentationFilter | undefined;
113
+ isManuallyAdded? : boolean | undefined;
114
114
  } = {}) {
115
115
  const { trickModeTracks } = parsedAdaptation;
116
116
  const { representationFilter, isManuallyAdded } = options;
117
117
  this.id = parsedAdaptation.id;
118
- this.isTrickModeTrack = parsedAdaptation.isTrickModeTrack;
119
-
120
118
  this.type = parsedAdaptation.type;
121
119
 
120
+ if (parsedAdaptation.isTrickModeTrack !== undefined) {
121
+ this.isTrickModeTrack = parsedAdaptation.isTrickModeTrack;
122
+ }
123
+
122
124
  if (parsedAdaptation.language !== undefined) {
123
125
  this.language = parsedAdaptation.language;
124
126
  this.normalizedLanguage = normalizeLanguage(parsedAdaptation.language);
@@ -14,13 +14,11 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { IInitializationDataInfo } from "../core/eme";
18
17
  import {
19
18
  ICustomError,
20
19
  MediaError,
21
20
  } from "../errors";
22
21
  import { IParsedManifest } from "../parsers/manifest";
23
- import areArraysOfNumbersEqual from "../utils/are_arrays_of_numbers_equal";
24
22
  import arrayFind from "../utils/array_find";
25
23
  import EventEmitter from "../utils/event_emitter";
26
24
  import idGenerator from "../utils/id_generator";
@@ -83,18 +81,18 @@ interface ISupplementaryTextTrack {
83
81
  interface IManifestParsingOptions {
84
82
  /* eslint-disable import/no-deprecated */
85
83
  /** Text tracks to add manually to the Manifest instance. */
86
- supplementaryTextTracks? : ISupplementaryTextTrack[];
84
+ supplementaryTextTracks? : ISupplementaryTextTrack[] | undefined;
87
85
  /** Image tracks to add manually to the Manifest instance. */
88
- supplementaryImageTracks? : ISupplementaryImageTrack[];
86
+ supplementaryImageTracks? : ISupplementaryImageTrack[] | undefined;
89
87
  /* eslint-enable import/no-deprecated */
90
88
  /** External callback peforming an automatic filtering of wanted Representations. */
91
- representationFilter? : IRepresentationFilter;
89
+ representationFilter? : IRepresentationFilter | undefined;
92
90
  /** Optional URL that points to a shorter version of the Manifest used
93
91
  * for updates only. When using this URL for refresh, the manifest will be
94
92
  * updated with the partial update type. If this URL is undefined, then the
95
93
  * manifest will be updated fully when it needs to be refreshed, and it will
96
94
  * fetched through the original URL. */
97
- manifestUpdateUrl? : string;
95
+ manifestUpdateUrl? : string | undefined;
98
96
  }
99
97
 
100
98
  /** Representation affected by a `decipherabilityUpdate` event. */
@@ -197,7 +195,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
197
195
 
198
196
  /** Optional URL that points to a shorter version of the Manifest used
199
197
  * for updates only. */
200
- public updateUrl?: string;
198
+ public updateUrl : string | undefined;
201
199
 
202
200
  /**
203
201
  * Suggested delay from the "live edge" (i.e. the position corresponding to
@@ -205,7 +203,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
205
203
  * from.
206
204
  * This only applies to live contents.
207
205
  */
208
- public suggestedPresentationDelay? : number;
206
+ public suggestedPresentationDelay : number | undefined;
209
207
 
210
208
  /**
211
209
  * Amount of time, in seconds, this Manifest is valid from the time when it
@@ -213,7 +211,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
213
211
  * If no lifetime is set, this Manifest does not become invalid after an
214
212
  * amount of time.
215
213
  */
216
- public lifetime? : number;
214
+ public lifetime : number | undefined;
217
215
 
218
216
  /**
219
217
  * Minimum time, in seconds, at which a segment defined in the Manifest
@@ -221,14 +219,14 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
221
219
  * This is also used as an offset for live content to apply to a segment's
222
220
  * time.
223
221
  */
224
- public availabilityStartTime? : number;
222
+ public availabilityStartTime : number | undefined;
225
223
 
226
224
  /**
227
225
  * It specifies the wall-clock time when the manifest was generated and published
228
226
  * at the origin server. It is present in order to identify different versions
229
227
  * of manifest instances.
230
228
  */
231
- public publishTime?: number;
229
+ public publishTime: number | undefined;
232
230
 
233
231
  /**
234
232
  * Array containing every minor errors that happened when the Manifest has
@@ -271,7 +269,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
271
269
  * segment, and `timeshiftDepth` would be the whole depth that will
272
270
  * become available once enough segments have been generated.
273
271
  */
274
- absoluteMinimumTime? : number;
272
+ absoluteMinimumTime? : number | undefined;
275
273
  /**
276
274
  * Some dynamic contents have the concept of a "window depth" (or "buffer
277
275
  * depth") which allows to set a minimum position for all reachable
@@ -502,73 +500,10 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
502
500
  * changes performed.
503
501
  * @param {Object} keyUpdates
504
502
  */
505
- public updateDeciperabilitiesBasedOnKeyIds(
506
- { whitelistedKeyIds,
507
- blacklistedKeyIDs } : { whitelistedKeyIds : Uint8Array[];
508
- blacklistedKeyIDs : Uint8Array[]; }
503
+ public updateRepresentationsDeciperability(
504
+ isDecipherableCb : (rep : Representation) => boolean | undefined
509
505
  ) : void {
510
- const updates = updateDeciperability(this, (representation) => {
511
- if (representation.decipherable === false ||
512
- representation.contentProtections === undefined)
513
- {
514
- return representation.decipherable;
515
- }
516
- const contentKIDs = representation.contentProtections.keyIds;
517
- for (let i = 0; i < contentKIDs.length; i++) {
518
- const elt = contentKIDs[i];
519
- for (let j = 0; j < blacklistedKeyIDs.length; j++) {
520
- if (areArraysOfNumbersEqual(blacklistedKeyIDs[j], elt.keyId)) {
521
- return false;
522
- }
523
- }
524
- for (let j = 0; j < whitelistedKeyIds.length; j++) {
525
- if (areArraysOfNumbersEqual(whitelistedKeyIds[j], elt.keyId)) {
526
- return true;
527
- }
528
- }
529
- }
530
- return representation.decipherable;
531
- });
532
-
533
- if (updates.length > 0) {
534
- this.trigger("decipherabilityUpdate", updates);
535
- }
536
- }
537
-
538
- /**
539
- * Look in the Manifest for Representations linked to the given content
540
- * protection initialization data and mark them as being impossible to
541
- * decrypt.
542
- * Then trigger a "decipherabilityUpdate" event to notify everyone of the
543
- * changes performed.
544
- * @param {Object} initData
545
- */
546
- public addUndecipherableProtectionData(initData : IInitializationDataInfo) : void {
547
- const updates = updateDeciperability(this, (representation) => {
548
- if (representation.decipherable === false) {
549
- return false;
550
- }
551
- const segmentProtections = representation.contentProtections?.initData ?? [];
552
- for (let i = 0; i < segmentProtections.length; i++) {
553
- if (initData.type === undefined ||
554
- segmentProtections[i].type === initData.type)
555
- {
556
- const containedInitData = initData.values.every(undecipherableVal => {
557
- return segmentProtections[i].values.some(currVal => {
558
- return (undecipherableVal.systemId === undefined ||
559
- currVal.systemId === undecipherableVal.systemId) &&
560
- areArraysOfNumbersEqual(currVal.data,
561
- undecipherableVal.data);
562
- });
563
- });
564
- if (containedInitData) {
565
- return false;
566
- }
567
- }
568
- }
569
- return representation.decipherable;
570
- });
571
-
506
+ const updates = updateDeciperability(this, isDecipherableCb);
572
507
  if (updates.length > 0) {
573
508
  this.trigger("decipherabilityUpdate", updates);
574
509
  }
@@ -795,14 +730,9 @@ function updateDeciperability(
795
730
  isDecipherable : (rep : Representation) => boolean | undefined
796
731
  ) : IDecipherabilityUpdateElement[] {
797
732
  const updates : IDecipherabilityUpdateElement[] = [];
798
- for (let i = 0; i < manifest.periods.length; i++) {
799
- const period = manifest.periods[i];
800
- const adaptations = period.getAdaptations();
801
- for (let j = 0; j < adaptations.length; j++) {
802
- const adaptation = adaptations[j];
803
- const representations = adaptation.representations;
804
- for (let k = 0; k < representations.length; k++) {
805
- const representation = representations[k];
733
+ for (const period of manifest.periods) {
734
+ for (const adaptation of period.getAdaptations()) {
735
+ for (const representation of adaptation.representations) {
806
736
  const result = isDecipherable(representation);
807
737
  if (result !== representation.decipherable) {
808
738
  updates.push({ manifest, period, adaptation, representation });
@@ -50,13 +50,13 @@ export default class Period {
50
50
  * Duration of this Period, in seconds.
51
51
  * `undefined` for still-running Periods.
52
52
  */
53
- public duration? : number;
53
+ public duration : number | undefined;
54
54
 
55
55
  /**
56
56
  * Absolute end time of the Period, in seconds.
57
57
  * `undefined` for still-running Periods.
58
58
  */
59
- public end? : number;
59
+ public end : number | undefined;
60
60
 
61
61
  /**
62
62
  * Array containing every errors that happened when the Period has been
@@ -74,7 +74,7 @@ export default class Period {
74
74
  */
75
75
  constructor(
76
76
  args : IParsedPeriod,
77
- representationFilter? : IRepresentationFilter
77
+ representationFilter? : IRepresentationFilter | undefined
78
78
  ) {
79
79
  this.contentWarnings = [];
80
80
  this.id = args.id;