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
@@ -13,13 +13,14 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { ICustomMediaKeys, ICustomMediaKeySession, ICustomMediaKeySystemAccess } from "../../compat";
16
+ import { ICustomMediaKeySession } from "../../compat";
17
17
  import { ICustomError } from "../../errors";
18
- import { ISharedReference } from "../../utils/reference";
18
+ import Manifest, { Adaptation, Period, Representation } from "../../manifest";
19
+ import InitDataValuesContainer from "./utils/init_data_values_container";
19
20
  import LoadedSessionsStore from "./utils/loaded_sessions_store";
20
21
  import PersistentSessionsStore from "./utils/persistent_sessions_store";
21
22
  /** Information about the encryption initialization data. */
22
- export interface IInitializationDataInfo {
23
+ export interface IProtectionData {
23
24
  /**
24
25
  * The initialization data type - or the format of the `data` attribute (e.g.
25
26
  * "cenc").
@@ -34,229 +35,47 @@ export interface IInitializationDataInfo {
34
35
  * `undefined` when not known (different from an empty array - which would
35
36
  * just mean that there's no key id involved).
36
37
  */
37
- keyIds?: Uint8Array[];
38
+ keyIds?: Uint8Array[] | undefined;
39
+ /** The content linked to that segment protection data. */
40
+ content?: IContent;
38
41
  /** Every initialization data for that type. */
39
- values: Array<{
40
- /**
41
- * Hex encoded system id, which identifies the key system.
42
- * https://dashif.org/identifiers/content_protection/
43
- *
44
- * If `undefined`, we don't know the system id for that initialization data.
45
- * In that case, the initialization data might even be a concatenation of
46
- * the initialization data from multiple system ids.
47
- */
48
- systemId: string | undefined;
49
- /**
50
- * The initialization data itself for that type and systemId.
51
- * For example, with "cenc" initialization data found in an ISOBMFF file,
52
- * this will be the whole PSSH box.
53
- */
54
- data: Uint8Array;
55
- }>;
56
- }
57
- /** Event emitted when a minor - recoverable - error happened. */
58
- export interface IEMEWarningEvent {
59
- type: "warning";
60
- value: ICustomError;
61
- }
62
- /**
63
- * Event emitted when we receive an "encrypted" event from the browser.
64
- * This is usually sent when pushing an initialization segment, if it stores
65
- * encryption information.
66
- */
67
- export interface IEncryptedEvent {
68
- type: "encrypted-event-received";
69
- value: IInitializationDataInfo;
70
- }
71
- /**
72
- * Sent when a MediaKeys has been created (or is already created) for the
73
- * current content.
74
- * This is necessary before creating a MediaKeySession which will allow
75
- * encryption keys to be communicated.
76
- *
77
- * It carries a shared reference (`canAttachMediaKeys`) that should be setted to
78
- * `true` to indicate that RxPlayer's EME logic can start to attach the
79
- * `MediaKeys` instance to the HTMLMediaElement.
80
- */
81
- export interface ICreatedMediaKeysEvent {
82
- type: "created-media-keys";
83
- value: {
84
- /** The MediaKeySystemAccess which allowed to create the MediaKeys instance. */
85
- mediaKeySystemAccess: MediaKeySystemAccess | ICustomMediaKeySystemAccess;
86
- /**
87
- * Hex-encoded identifier for the key system used.
88
- * A list of available IDs can be found here:
89
- * https://dashif.org/identifiers/content_protection/
90
- *
91
- * This ID can be used to select the encryption initialization data to send
92
- * to the EMEManager.
93
- *
94
- * Note that this is only for optimization purposes (e.g. to not
95
- * unnecessarily wait for new encryption initialization data to arrive when
96
- * those linked to the right key system is already available) as sending all
97
- * available encryption initialization data should also work in all cases.
98
- *
99
- * Can be `undefined` in two cases:
100
- *
101
- * - the current system ID is not known
102
- *
103
- * - the current system ID is known, but we don't want to communicate it
104
- * to ensure all encryption initialization data is still sent.
105
- * This is usually done to work-around retro-compatibility issues with
106
- * older persisted decryption session.
107
- */
108
- initializationDataSystemId: string | undefined;
109
- /** The MediaKeys instance. */
110
- mediaKeys: MediaKeys | ICustomMediaKeys;
111
- /** Stores allowing to cache MediaKeySession instances. */
112
- stores: IMediaKeySessionStores;
113
- /** key system options considered. */
114
- options: IKeySystemOption;
115
- /**
116
- * Shared reference that should be set to `true` once the `MediaKeys`
117
- * instance can be attached to the HTMLMediaElement.
118
- */
119
- canAttachMediaKeys: ISharedReference<boolean>;
120
- };
121
- }
122
- /**
123
- * Sent when the created (or already created) MediaKeys is attached to the
124
- * current HTMLMediaElement element.
125
- * On some peculiar devices, we have to wait for that step before the first
126
- * media segments are to be pushed to avoid issues.
127
- * Because this event is sent after a MediaKeys is created, you will always have
128
- * a "created-media-keys" event before an "attached-media-keys" event.
129
- */
130
- export interface IAttachedMediaKeysEvent {
131
- type: "attached-media-keys";
132
- value: {
133
- /** The MediaKeySystemAccess which allowed to create the MediaKeys instance. */
134
- mediaKeySystemAccess: MediaKeySystemAccess | ICustomMediaKeySystemAccess;
135
- /** The MediaKeys instance. */
136
- mediaKeys: MediaKeys | ICustomMediaKeys;
137
- stores: IMediaKeySessionStores;
138
- options: IKeySystemOption;
139
- };
42
+ values: IInitDataValue[];
140
43
  }
141
- /**
142
- * Emitted when the initialization data received through an encrypted event or
143
- * through the EMEManager argument can already be decipherable without going
144
- * through the usual license-fetching logic.
145
- * This is usually because the MediaKeySession for this encryption key has
146
- * already been created.
147
- */
148
- export interface IInitDataIgnoredEvent {
149
- type: "init-data-ignored";
150
- value: {
151
- initializationData: IInitializationDataInfo;
152
- };
44
+ /** Protection initialization data actually processed by the `ContentDecryptor`. */
45
+ export interface IProcessedProtectionData extends Omit<IProtectionData, "values"> {
46
+ values: InitDataValuesContainer;
153
47
  }
154
48
  /**
155
- * Emitted when a "message" event is sent.
156
- * Those events generally allows the CDM to ask for data such as the license or
157
- * a server certificate.
158
- * As such, we will call the corresponding `getLicense` callback immediately
159
- * after this event is sent.
160
- *
161
- * Depending on the return of the getLicense call, we will then either emit a
162
- * "warning" event and retry the call (for when it failed but will be retried),
163
- * throw (when it failed with no retry left and no fallback policy is set), emit
164
- * a "blacklist-protection-data-event" (for when it failed with no retry left
165
- * but a fallback policy is set), emit a "session-updated" event (for when the
166
- * call resolved with some data) or emit a "no-update" event (for when the call
167
- * resolved with `null`).
168
- */
169
- export interface ISessionMessageEvent {
170
- type: "session-message";
171
- value: {
172
- messageType: string;
173
- initializationData: IInitializationDataInfo;
174
- };
175
- }
176
- /**
177
- * Emitted when a `getLicense` call resolves with null.
178
- * In that case, we do not call `MediaKeySession.prototype.update` and no
179
- * `session-updated` event will be sent.
180
- */
181
- export interface INoUpdateEvent {
182
- type: "no-update";
183
- value: {
184
- initializationData: IInitializationDataInfo;
185
- };
186
- }
187
- /**
188
- * Some key ids have updated their status.
189
- *
190
- * We put them in two different list:
191
- *
192
- * - `blacklistedKeyIDs`: Those key ids won't be used for decryption and the
193
- * corresponding media it decrypts should not be pushed to the buffer
194
- * Note that a blacklisted key id can become whitelisted in the future.
195
- *
196
- * - `whitelistedKeyIds`: Those key ids were found and their corresponding
197
- * keys are now being considered for decryption.
198
- * Note that a whitelisted key id can become blacklisted in the future.
199
- *
200
- * Note that each `IKeysUpdateEvent` is independent of any other.
201
- *
202
- * A new `IKeysUpdateEvent` does not completely replace a previously emitted
203
- * one, as it can for example be linked to a whole other decryption session.
204
- *
205
- * However, if a key id is encountered in both an older and a newer
206
- * `IKeysUpdateEvent`, only the older status should be considered.
49
+ * Represent the initialization data linked to a key system that can be used to
50
+ * generate the license request.
207
51
  */
208
- export interface IKeysUpdateEvent {
209
- type: "keys-update";
210
- value: IKeyUpdateValue;
211
- }
212
- /** Information on key ids linked to a MediaKeySession. */
213
- export interface IKeyUpdateValue {
52
+ export interface IInitDataValue {
214
53
  /**
215
- * The list of key ids that are blacklisted.
216
- * As such, their corresponding keys won't be used by that session, despite
217
- * the fact that they were part of the pushed license.
54
+ * Hex encoded system id, which identifies the key system.
55
+ * https://dashif.org/identifiers/content_protection/
218
56
  *
219
- * Reasons for blacklisting a keys depend on options, but mainly involve unmet
220
- * output restrictions and CDM internal errors linked to that key id.
57
+ * If `undefined`, we don't know the system id for that initialization data.
58
+ * In that case, the initialization data might even be a concatenation of
59
+ * the initialization data from multiple system ids.
221
60
  */
222
- blacklistedKeyIDs: Uint8Array[];
223
- whitelistedKeyIds: Uint8Array[];
224
- }
225
- /**
226
- * Emitted after the `MediaKeySession.prototype.update` function resolves.
227
- * This function is called when the `getLicense` callback resolves with a data
228
- * different than `null`.
229
- */
230
- export interface ISessionUpdatedEvent {
231
- type: "session-updated";
232
- value: {
233
- session: MediaKeySession | ICustomMediaKeySession;
234
- license: ILicense | null;
235
- initializationData: IInitializationDataInfo;
236
- };
61
+ systemId: string | undefined;
62
+ /**
63
+ * The initialization data itself for that type and systemId.
64
+ * For example, with "cenc" initialization data found in an ISOBMFF file,
65
+ * this will be the whole PSSH box.
66
+ */
67
+ data: Uint8Array;
237
68
  }
238
- /**
239
- * Event Emitted when specific "protection data" cannot be deciphered and is thus
240
- * blacklisted.
241
- *
242
- * The linked value is the initialization data linked to the content that cannot
243
- * be deciphered.
244
- */
245
- export interface IBlacklistProtectionDataEvent {
246
- type: "blacklist-protection-data";
247
- value: IInitializationDataInfo;
69
+ /** Event emitted when a minor - recoverable - error happened. */
70
+ export interface IEMEWarningEvent {
71
+ type: "warning";
72
+ value: ICustomError;
248
73
  }
249
- export declare type IEMEManagerEvent = IEMEWarningEvent | // minor error
250
- IEncryptedEvent | // browser's "encrypted" event
251
- ICreatedMediaKeysEvent | IAttachedMediaKeysEvent | IInitDataIgnoredEvent | // initData already handled
252
- ISessionMessageEvent | // MediaKeySession event
253
- INoUpdateEvent | // `getLicense` returned `null`
254
- IKeysUpdateEvent | // Status of keys changed
255
- ISessionUpdatedEvent | // `update` call resolved
256
- IBlacklistProtectionDataEvent;
257
74
  export declare type ILicense = BufferSource | ArrayBuffer;
258
- /** Segment protection sent by the RxPlayer to the EMEManager. */
75
+ /** Segment protection sent by the RxPlayer to the `ContentDecryptor`. */
259
76
  export interface IContentProtection {
77
+ /** The content linked to that segment protection data. */
78
+ content: IContent;
260
79
  /**
261
80
  * Initialization data type.
262
81
  * String describing the format of the initialization data sent through this
@@ -272,7 +91,7 @@ export interface IContentProtection {
272
91
  * `undefined` when not known (different from an empty array - which would
273
92
  * just mean that there's no key id involved).
274
93
  */
275
- keyIds?: Uint8Array[];
94
+ keyIds: Uint8Array[] | undefined;
276
95
  /** Every initialization data for that type. */
277
96
  values: Array<{
278
97
  /**
@@ -288,23 +107,16 @@ export interface IContentProtection {
288
107
  data: Uint8Array;
289
108
  }>;
290
109
  }
291
- export interface IKeyStatusChangeHandledEvent {
292
- type: "key-status-change-handled";
293
- value: {
294
- session: MediaKeySession | ICustomMediaKeySession;
295
- license: ILicense | null;
296
- };
297
- }
298
- export interface IKeyMessageHandledEvent {
299
- type: "key-message-handled";
300
- value: {
301
- session: MediaKeySession | ICustomMediaKeySession;
302
- license: ILicense | null;
303
- };
304
- }
305
- export interface IKeySystemAccessInfos {
306
- keySystemAccess: MediaKeySystemAccess | ICustomMediaKeySystemAccess;
307
- keySystemOptions: IKeySystemOption;
110
+ /** Content linked to protection data. */
111
+ export interface IContent {
112
+ /** Manifest object associated to the protection data. */
113
+ manifest: Manifest;
114
+ /** Period object associated to the protection data. */
115
+ period: Period;
116
+ /** Adaptation object associated to the protection data. */
117
+ adaptation: Adaptation;
118
+ /** Representation object associated to the protection data. */
119
+ representation: Representation;
308
120
  }
309
121
  /** Stores helping to create and retrieve MediaKeySessions. */
310
122
  export interface IMediaKeySessionStores {
@@ -313,15 +125,40 @@ export interface IMediaKeySessionStores {
313
125
  /** Retrieve persistent MediaKeySessions already created. */
314
126
  persistentSessionsStore: PersistentSessionsStore | null;
315
127
  }
128
+ /** Enum identifying the way a new MediaKeySession has been loaded. */
129
+ export declare const enum MediaKeySessionLoadingType {
130
+ /**
131
+ * This MediaKeySession has just been created.
132
+ * This means that it will necessitate a new license request to be generated
133
+ * and performed.
134
+ */
135
+ Created = "created-session",
136
+ /**
137
+ * This MediaKeySession was an already-opened one that is being reused.
138
+ * Such session had already their license loaded and pushed.
139
+ */
140
+ LoadedOpenSession = "loaded-open-session",
141
+ /**
142
+ * This MediaKeySession was a persistent MediaKeySession that has been
143
+ * re-loaded.
144
+ * Such session are linked to a persistent license which should have already
145
+ * been fetched.
146
+ */
147
+ LoadedPersistentSession = "loaded-persistent-session"
148
+ }
316
149
  /**
317
150
  * Data stored in a persistent MediaKeySession storage.
318
151
  * Has to be versioned to be able to play MediaKeySessions persisted in an old
319
152
  * RxPlayer version when in a new one.
320
153
  */
321
- export declare type IPersistentSessionInfo = IPersistentSessionInfoV3 | IPersistentSessionInfoV2 | IPersistentSessionInfoV1 | IPersistentSessionInfoV0;
322
- /** Wrap initialization data and allow linearization of it into base64. */
323
- interface IInitDataContainer {
324
- /** The initData itself. */
154
+ export declare type IPersistentSessionInfo = IPersistentSessionInfoV4 | IPersistentSessionInfoV3 | IPersistentSessionInfoV2 | IPersistentSessionInfoV1 | IPersistentSessionInfoV0;
155
+ /** Wrap an Uint8Array and allow serialization of it into base64. */
156
+ interface ByteArrayContainer {
157
+ /**
158
+ * The wrapped data.
159
+ * Here named `initData` even when it's not always initialization data for
160
+ * backward-compatible reasons.
161
+ */
325
162
  initData: Uint8Array;
326
163
  /**
327
164
  * Convert it to base64.
@@ -333,7 +170,48 @@ interface IInitDataContainer {
333
170
  }
334
171
  /**
335
172
  * Stored information about a single persistent `MediaKeySession`, when created
336
- * since the v3.24.0 RxPlayer version included.
173
+ * since the v3.27.0 RxPlayer version included.
174
+ */
175
+ export interface IPersistentSessionInfoV4 {
176
+ /** Version for this object. */
177
+ version: 4;
178
+ /** The persisted MediaKeySession's `id`. Used to load it at a later time. */
179
+ sessionId: string;
180
+ /** Type giving information about the format of the initialization data. */
181
+ initDataType: string | undefined;
182
+ /** All key ids linked to that `MediaKeySession`. */
183
+ keyIds: Array<ByteArrayContainer | string>;
184
+ /**
185
+ * Every saved initialization data for that session, used as IDs.
186
+ * Elements are sorted in systemId alphabetical order (putting the `undefined`
187
+ * ones last).
188
+ */
189
+ values: Array<{
190
+ /**
191
+ * Hex encoded system id, which identifies the key system.
192
+ * https://dashif.org/identifiers/content_protection/
193
+ *
194
+ * If `undefined`, we don't know the system id for that initialization data.
195
+ * In that case, the initialization data might even be a concatenation of
196
+ * the initialization data from multiple system ids.
197
+ */
198
+ systemId: string | undefined;
199
+ /**
200
+ * A hash of the initialization data (generated by the `hashBuffer` function,
201
+ * at the time of v3.20.1 at least). Allows for a faster comparison than just
202
+ * comparing initialization data multiple times.
203
+ */
204
+ hash: number;
205
+ /**
206
+ * The initialization data associated to the systemId, wrapped in a
207
+ * container to allow efficient serialization.
208
+ */
209
+ data: ByteArrayContainer | string;
210
+ }>;
211
+ }
212
+ /**
213
+ * Stored information about a single persistent `MediaKeySession`, when created
214
+ * from the v3.24.0 RxPlayer version included to the v3.26.2 included.
337
215
  */
338
216
  export interface IPersistentSessionInfoV3 {
339
217
  /** Version for this object. */
@@ -367,13 +245,13 @@ export interface IPersistentSessionInfoV3 {
367
245
  * The initialization data associated to the systemId, wrapped in a
368
246
  * container to allow efficient serialization.
369
247
  */
370
- data: IInitDataContainer;
248
+ data: ByteArrayContainer | string;
371
249
  }>;
372
250
  }
373
251
  /**
374
252
  * Stored information about a single persistent `MediaKeySession`, when created
375
253
  * between the RxPlayer versions v3.21.0 and v3.21.1 included.
376
- * The previous implementation (version 1) was fine enough but did not linearize
254
+ * The previous implementation (version 1) was fine enough but did not serialize
377
255
  * well due to it containing an Uint8Array. This data is now wrapped into a
378
256
  * container which will convert it to base64 when linearized through
379
257
  * `JSON.stringify`.
@@ -387,7 +265,7 @@ export interface IPersistentSessionInfoV2 {
387
265
  * The initialization data associated to the `MediaKeySession`, wrapped in a
388
266
  * container to allow efficient linearization.
389
267
  */
390
- initData: IInitDataContainer;
268
+ initData: ByteArrayContainer;
391
269
  /**
392
270
  * A hash of the initialization data (generated by the `hashBuffer` function,
393
271
  * at the time of v3.20.1 at least). Allows for a faster comparison than just
@@ -442,7 +320,7 @@ export interface IPersistentSessionInfoV0 {
442
320
  /** Persistent MediaKeySession storage interface. */
443
321
  export interface IPersistentSessionStorage {
444
322
  /** Load persistent MediaKeySessions previously saved through the `save` callback. */
445
- load(): IPersistentSessionInfo[];
323
+ load(): IPersistentSessionInfo[] | undefined | null;
446
324
  /**
447
325
  * Save new persistent MediaKeySession information.
448
326
  * The given argument should be returned by the next `load` call.
@@ -506,7 +384,7 @@ export interface IKeySystemOption {
506
384
  * closed when the current playback stops.
507
385
  */
508
386
  closeSessionsOnStop?: boolean;
509
- singleLicensePer?: "content" | "init-data";
387
+ singleLicensePer?: "content" | "periods" | "init-data";
510
388
  /**
511
389
  * Maximum number of `MediaKeySession` that should be created on the same
512
390
  * MediaKeys.
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import InitDataContainer from "./init_data_container";
16
+ import SerializableBytes from "./serializable_bytes";
17
17
  /**
18
18
  * Returns `true` if both values are compatible initialization data, which
19
19
  * means that one is completely contained in the other.
@@ -26,9 +26,9 @@ import InitDataContainer from "./init_data_container";
26
26
  export default function areInitializationValuesCompatible(stored: Array<{
27
27
  systemId: string | undefined;
28
28
  hash: number;
29
- data: Uint8Array | InitDataContainer;
29
+ data: Uint8Array | SerializableBytes | string;
30
30
  }>, newElts: Array<{
31
31
  systemId: string | undefined;
32
32
  hash: number;
33
- data: Uint8Array | InitDataContainer;
33
+ data: Uint8Array | SerializableBytes | string;
34
34
  }>): boolean;
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import areArraysOfNumbersEqual from "../../../utils/are_arrays_of_numbers_equal";
17
- import InitDataContainer from "./init_data_container";
17
+ import SerializableBytes from "./serializable_bytes";
18
18
  /**
19
19
  * Returns `true` if both values are compatible initialization data, which
20
20
  * means that one is completely contained in the other.
@@ -67,10 +67,10 @@ function _isAInB(a, b) {
67
67
  return false;
68
68
  }
69
69
  var aData = firstAElt.data instanceof Uint8Array ? firstAElt.data :
70
- typeof firstAElt.data === "string" ? InitDataContainer.decode(firstAElt.data) :
70
+ typeof firstAElt.data === "string" ? SerializableBytes.decode(firstAElt.data) :
71
71
  firstAElt.data.initData;
72
72
  var bData = bElt.data instanceof Uint8Array ? bElt.data :
73
- typeof bElt.data === "string" ? InitDataContainer.decode(bElt.data) :
73
+ typeof bElt.data === "string" ? SerializableBytes.decode(bElt.data) :
74
74
  bElt.data.initData;
75
75
  if (!areArraysOfNumbersEqual(aData, bData)) {
76
76
  return false;
@@ -91,10 +91,10 @@ function _isAInB(a, b) {
91
91
  return false;
92
92
  }
93
93
  var aNewData = aElt.data instanceof Uint8Array ? aElt.data :
94
- typeof aElt.data === "string" ? InitDataContainer.decode(aElt.data) :
94
+ typeof aElt.data === "string" ? SerializableBytes.decode(aElt.data) :
95
95
  aElt.data.initData;
96
96
  var bNewData = bNewElt.data instanceof Uint8Array ? bNewElt.data :
97
- typeof bNewElt.data === "string" ? InitDataContainer.decode(bNewElt.data) :
97
+ typeof bNewElt.data === "string" ? SerializableBytes.decode(bNewElt.data) :
98
98
  bNewElt.data.initData;
99
99
  if (!areArraysOfNumbersEqual(aNewData, bNewData)) {
100
100
  return false;
@@ -13,8 +13,8 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { ICustomMediaKeySession } from "../../compat";
17
- import { IEMEWarningEvent } from "./types";
16
+ import { ICustomMediaKeySession } from "../../../compat";
17
+ import { IEMEWarningEvent } from "../types";
18
18
  export interface IKeyStatusesCheckingOptions {
19
19
  /**
20
20
  * If explicitely set to `false`, we won't throw on error when a used license
@@ -13,9 +13,10 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import getUUIDKidFromKeyStatusKID from "../../compat/eme/get_uuid_kid_from_keystatus_kid";
17
- import { EncryptedMediaError } from "../../errors";
18
- import { bytesToHex } from "../../utils/string_parsing";
16
+ /* eslint-disable-next-line max-len */
17
+ import getUUIDKidFromKeyStatusKID from "../../../compat/eme/get_uuid_kid_from_keystatus_kid";
18
+ import { EncryptedMediaError } from "../../../errors";
19
+ import { bytesToHex } from "../../../utils/string_parsing";
19
20
  var KEY_STATUSES = { EXPIRED: "expired",
20
21
  INTERNAL_ERROR: "internal-error",
21
22
  OUTPUT_RESTRICTED: "output-restricted" };
@@ -13,13 +13,14 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Observable } from "rxjs";
17
- import { ICustomMediaKeySession } from "../../../compat";
16
+ import LoadedSessionsStore from "./loaded_sessions_store";
18
17
  /**
19
- * Close a MediaKeySession with multiple attempts if needed and do not throw if
20
- * this action throws an error.
21
- * Emits then complete when done.
22
- * @param {MediaKeySession} mediaKeySession
18
+ * Close sessions from the loadedSessionsStore to allow at maximum `limit`
19
+ * stored MediaKeySessions in it.
20
+ *
21
+ * Emit event when a MediaKeySession begin to be closed and another when the
22
+ * MediaKeySession is closed.
23
+ * @param {Object} loadedSessionsStore
23
24
  * @returns {Observable}
24
25
  */
25
- export default function safelyCloseMediaKeySession(mediaKeySession: MediaKeySession | ICustomMediaKeySession): Observable<unknown>;
26
+ export default function cleanOldLoadedSessions(loadedSessionsStore: LoadedSessionsStore, limit: number): Promise<void>;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Copyright 2015 CANAL+ Group
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ var __generator = (this && this.__generator) || function (thisArg, body) {
26
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
27
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
+ function verb(n) { return function (v) { return step([n, v]); }; }
29
+ function step(op) {
30
+ if (f) throw new TypeError("Generator is already executing.");
31
+ while (_) try {
32
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
33
+ if (y = 0, t) op = [op[0] & 2, t.value];
34
+ switch (op[0]) {
35
+ case 0: case 1: t = op; break;
36
+ case 4: _.label++; return { value: op[1], done: false };
37
+ case 5: _.label++; y = op[1]; op = [0]; continue;
38
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
39
+ default:
40
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
41
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
42
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
44
+ if (t[2]) _.ops.pop();
45
+ _.trys.pop(); continue;
46
+ }
47
+ op = body.call(thisArg, _);
48
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
49
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
50
+ }
51
+ };
52
+ import PPromise from "../../../utils/promise";
53
+ /**
54
+ * Close sessions from the loadedSessionsStore to allow at maximum `limit`
55
+ * stored MediaKeySessions in it.
56
+ *
57
+ * Emit event when a MediaKeySession begin to be closed and another when the
58
+ * MediaKeySession is closed.
59
+ * @param {Object} loadedSessionsStore
60
+ * @returns {Observable}
61
+ */
62
+ export default function cleanOldLoadedSessions(loadedSessionsStore, limit) {
63
+ return __awaiter(this, void 0, void 0, function () {
64
+ var proms, entries, toDelete, i, entry;
65
+ return __generator(this, function (_a) {
66
+ switch (_a.label) {
67
+ case 0:
68
+ if (limit < 0 || limit >= loadedSessionsStore.getLength()) {
69
+ return [2 /*return*/];
70
+ }
71
+ proms = [];
72
+ entries = loadedSessionsStore.getAll().slice();
73
+ toDelete = entries.length - limit;
74
+ for (i = 0; i < toDelete; i++) {
75
+ entry = entries[i];
76
+ proms.push(loadedSessionsStore.closeSession(entry.mediaKeySession));
77
+ }
78
+ return [4 /*yield*/, PPromise.all(proms)];
79
+ case 1:
80
+ _a.sent();
81
+ return [2 /*return*/];
82
+ }
83
+ });
84
+ });
85
+ }
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import PersistentSessionsStore from "./utils/persistent_sessions_store";
16
+ import PersistentSessionsStore from "./persistent_sessions_store";
17
17
  /**
18
18
  * Remove old information from a PersistentSessionsStore so that it respects the
19
19
  * given `limit` as a maximum size. This can be used to prevent its size from