rx-player 3.26.3-dev.2022021400 → 3.27.0-dev.2022032100

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 (400) hide show
  1. package/.eslintrc.js +0 -4
  2. package/CHANGELOG.md +17 -2
  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 +143 -36
  9. package/dist/_esm5.processed/compat/eme/custom_key_system_access.d.ts +15 -0
  10. package/dist/_esm5.processed/compat/eme/custom_key_system_access.js +1 -17
  11. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +6 -7
  12. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
  13. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +20 -22
  14. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +58 -40
  15. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +49 -48
  16. package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
  17. package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
  18. package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
  19. package/dist/_esm5.processed/compat/eme/load_session.js +67 -17
  20. package/dist/_esm5.processed/compat/event_listeners.js +2 -1
  21. package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
  22. package/dist/_esm5.processed/config.d.ts +166 -1080
  23. package/dist/_esm5.processed/config.js +17 -1119
  24. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
  25. package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
  26. package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
  27. package/dist/_esm5.processed/core/api/index.d.ts +2 -1
  28. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +2 -1
  29. package/dist/_esm5.processed/core/api/option_utils.d.ts +6 -3
  30. package/dist/_esm5.processed/core/api/option_utils.js +21 -7
  31. package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
  32. package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
  33. package/dist/_esm5.processed/core/api/public_api.js +73 -35
  34. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -49
  35. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +25 -65
  36. package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
  37. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +103 -0
  38. package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
  39. package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +40 -0
  40. package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
  41. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +865 -0
  42. package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
  43. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
  44. package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
  45. package/dist/_esm5.processed/core/decrypt/create_session.js +173 -0
  46. package/dist/_esm5.processed/core/{eme/dispose_media_keys.d.ts → decrypt/dispose_decryption_resources.d.ts} +4 -4
  47. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
  48. package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
  49. package/dist/_esm5.processed/core/decrypt/find_key_system.js +299 -0
  50. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
  51. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
  52. package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
  53. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
  54. package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
  55. package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
  56. package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
  57. package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
  58. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
  59. package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
  60. package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
  61. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
  62. package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +119 -241
  63. package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
  64. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
  65. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
  66. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
  67. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
  68. package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
  69. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +84 -0
  70. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
  71. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
  72. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
  73. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
  74. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
  75. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
  76. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
  77. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
  78. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
  79. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
  80. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
  81. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
  82. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
  83. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +302 -0
  84. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
  85. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
  86. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
  87. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
  88. package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
  89. package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
  90. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
  91. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
  92. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +3 -5
  93. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +1 -1
  94. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  95. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +2 -3
  96. package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
  97. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +1 -1
  98. package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
  99. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +6 -3
  100. package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
  101. package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
  102. package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
  103. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
  104. package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
  105. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
  106. package/dist/_esm5.processed/core/init/types.d.ts +2 -4
  107. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
  108. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
  109. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
  110. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
  111. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
  112. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
  113. package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
  114. package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
  115. package/dist/_esm5.processed/core/stream/index.d.ts +1 -0
  116. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
  117. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
  118. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
  119. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.d.ts +15 -11
  120. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +6 -3
  121. package/dist/_esm5.processed/core/stream/period/index.d.ts +1 -0
  122. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +5 -12
  123. package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
  124. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +2 -2
  125. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
  126. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
  127. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
  128. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
  129. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
  130. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
  131. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
  132. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
  133. package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
  134. package/dist/_esm5.processed/default_config.d.ts +1114 -0
  135. package/dist/_esm5.processed/default_config.js +1145 -0
  136. package/dist/_esm5.processed/experimental/index.d.ts +2 -0
  137. package/dist/_esm5.processed/experimental/index.js +2 -0
  138. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
  139. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +6 -7
  140. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +2 -3
  141. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +15 -0
  142. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -2
  143. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +3 -5
  144. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +3 -5
  145. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +1 -2
  146. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +1 -2
  147. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +1 -2
  148. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -2
  149. package/dist/_esm5.processed/features/features_object.js +1 -1
  150. package/dist/_esm5.processed/features/initialize_features.js +1 -1
  151. package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
  152. package/dist/_esm5.processed/features/list/eme.js +5 -5
  153. package/dist/_esm5.processed/features/types.d.ts +3 -3
  154. package/dist/_esm5.processed/manifest/manifest.d.ts +1 -14
  155. package/dist/_esm5.processed/manifest/manifest.js +10 -74
  156. package/dist/_esm5.processed/manifest/representation.d.ts +35 -3
  157. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
  158. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
  159. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +1 -1
  160. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +87 -75
  161. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
  162. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +4 -5
  163. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
  164. package/dist/_esm5.processed/public_types.d.ts +3 -2
  165. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +1 -2
  166. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +4 -3
  167. package/dist/_esm5.processed/transports/dash/image_pipelines.js +60 -11
  168. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -2
  169. package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -3
  170. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +1 -1
  171. package/dist/_esm5.processed/transports/dash/segment_loader.js +3 -4
  172. package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
  173. package/dist/_esm5.processed/transports/dash/text_loader.js +1 -2
  174. package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
  175. package/dist/_esm5.processed/transports/local/segment_loader.js +2 -3
  176. package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
  177. package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
  178. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +2 -3
  179. package/dist/_esm5.processed/transports/smooth/pipelines.js +71 -14
  180. package/dist/_esm5.processed/transports/smooth/segment_loader.js +3 -4
  181. package/dist/_esm5.processed/transports/types.d.ts +22 -0
  182. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -2
  183. package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -2
  184. package/dist/_esm5.processed/utils/cast_to_observable.js +1 -3
  185. package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
  186. package/dist/_esm5.processed/utils/deep_merge.js +53 -0
  187. package/dist/_esm5.processed/utils/reference.d.ts +29 -0
  188. package/dist/_esm5.processed/utils/reference.js +72 -24
  189. package/dist/_esm5.processed/utils/request/fetch.js +1 -2
  190. package/dist/_esm5.processed/utils/request/xhr.js +2 -3
  191. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
  192. package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
  193. package/dist/_esm5.processed/utils/task_canceller.js +3 -3
  194. package/dist/rx-player.js +4936 -3340
  195. package/dist/rx-player.min.js +1 -1
  196. package/dummy +1 -0
  197. package/{dist/_esm5.processed/utils/promise.d.ts → experimental/index.d.ts} +1 -2
  198. package/{dist/_esm5.processed/utils/promise.js → experimental/index.js} +1 -3
  199. package/package.json +32 -35
  200. package/{src/typings/pinkie.d.ts → scripts/build/templates/experimental/index.d.ts} +1 -4
  201. package/scripts/build/templates/experimental/index.js +16 -0
  202. package/scripts/update-version +2 -2
  203. package/sonar-project.properties +1 -1
  204. package/src/README.md +6 -6
  205. package/src/compat/__tests__/play.test.ts +2 -4
  206. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
  207. package/src/compat/browser_detection.ts +4 -2
  208. package/src/compat/eme/close_session.ts +89 -56
  209. package/src/compat/eme/custom_key_system_access.ts +1 -2
  210. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +6 -7
  211. package/src/compat/eme/custom_media_keys/index.ts +20 -38
  212. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +68 -52
  213. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +57 -56
  214. package/src/compat/eme/generate_key_request.ts +25 -33
  215. package/src/compat/eme/load_session.ts +28 -31
  216. package/src/compat/event_listeners.ts +2 -1
  217. package/src/compat/should_favour_custom_safari_EME.ts +5 -2
  218. package/src/config.ts +17 -1210
  219. package/src/core/README.md +1 -1
  220. package/src/core/abr/bandwidth_estimator.ts +4 -4
  221. package/src/core/abr/network_analyzer.ts +5 -6
  222. package/src/core/api/__tests__/get_player_state.test.ts +3 -3
  223. package/src/core/api/__tests__/option_utils.test.ts +29 -17
  224. package/src/core/api/get_player_state.ts +1 -1
  225. package/src/core/api/index.ts +3 -0
  226. package/src/core/api/option_utils.ts +42 -23
  227. package/src/core/api/playback_observer.ts +12 -8
  228. package/src/core/api/public_api.ts +152 -113
  229. package/src/core/decrypt/README.md +22 -0
  230. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
  231. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
  232. package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
  233. package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
  234. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
  235. package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +31 -93
  236. package/src/core/{eme → decrypt}/attach_media_keys.ts +48 -56
  237. package/src/core/decrypt/clear_on_stop.ts +47 -0
  238. package/src/core/decrypt/content_decryptor.ts +1157 -0
  239. package/src/core/decrypt/create_or_load_session.ts +130 -0
  240. package/src/core/decrypt/create_session.ts +174 -0
  241. package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
  242. package/src/core/{eme → decrypt}/find_key_system.ts +111 -122
  243. package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
  244. package/src/core/decrypt/get_media_keys.ts +145 -0
  245. package/src/core/{eme → decrypt}/index.ts +11 -8
  246. package/src/core/decrypt/init_media_keys.ts +51 -0
  247. package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
  248. package/src/core/decrypt/set_server_certificate.ts +104 -0
  249. package/src/core/{eme → decrypt}/types.ts +128 -258
  250. package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
  251. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
  252. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
  253. package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
  254. package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
  255. package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +19 -20
  256. package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
  257. package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
  258. package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
  259. package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
  260. package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
  261. package/src/core/decrypt/utils/key_session_record.ts +175 -0
  262. package/src/core/decrypt/utils/loaded_sessions_store.ts +317 -0
  263. package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
  264. package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
  265. package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
  266. package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
  267. package/src/core/fetchers/manifest/manifest_fetcher.ts +5 -7
  268. package/src/core/fetchers/segment/segment_fetcher.ts +4 -4
  269. package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
  270. package/src/core/fetchers/utils/try_urls_with_backoff.ts +2 -3
  271. package/src/core/init/.initialize_media_source.ts.un~ +0 -0
  272. package/src/core/init/get_initial_time.ts +2 -1
  273. package/src/core/init/initialize_directfile.ts +17 -20
  274. package/src/core/init/initialize_media_source.ts +44 -106
  275. package/src/core/init/link_drm_and_content.ts +176 -0
  276. package/src/core/init/manifest_update_scheduler.ts +5 -3
  277. package/src/core/init/stall_avoider.ts +6 -5
  278. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
  279. package/src/core/init/types.ts +1 -39
  280. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
  281. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +3 -4
  282. package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
  283. package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
  284. package/src/core/stream/events_generators.ts +9 -4
  285. package/src/core/stream/index.ts +1 -0
  286. package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
  287. package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
  288. package/src/core/stream/period/get_adaptation_switch_strategy.ts +25 -15
  289. package/src/core/stream/period/index.ts +1 -0
  290. package/src/core/stream/period/period_stream.ts +10 -16
  291. package/src/core/stream/representation/force_garbage_collection.ts +2 -2
  292. package/src/core/stream/representation/get_buffer_status.ts +28 -16
  293. package/src/core/stream/representation/get_needed_segments.ts +124 -28
  294. package/src/core/stream/representation/get_segment_priority.ts +1 -2
  295. package/src/core/stream/representation/push_media_segment.ts +3 -2
  296. package/src/core/stream/representation/representation_stream.ts +30 -7
  297. package/src/core/stream/types.ts +1 -1
  298. package/src/default_config.ts +1241 -0
  299. package/src/experimental/index.ts +5 -0
  300. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
  301. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +7 -7
  302. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
  303. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +9 -10
  304. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +2 -4
  305. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +2 -3
  306. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +1 -2
  307. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +3 -5
  308. package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +3 -5
  309. package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +1 -2
  310. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +1 -2
  311. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +1 -2
  312. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +1 -2
  313. package/src/features/__tests__/initialize_features.test.ts +2 -2
  314. package/src/features/features_object.ts +1 -1
  315. package/src/features/initialize_features.ts +1 -1
  316. package/src/features/list/__tests__/eme.test.ts +5 -5
  317. package/src/features/list/eme.ts +5 -5
  318. package/src/features/types.ts +3 -10
  319. package/src/manifest/manifest.ts +6 -76
  320. package/src/manifest/representation.ts +36 -3
  321. package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
  322. package/src/parsers/manifest/dash/common/indexes/template.ts +1 -2
  323. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +1 -1
  324. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +109 -64
  325. package/src/parsers/manifest/dash/common/parse_mpd.ts +1 -2
  326. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +4 -5
  327. package/src/parsers/manifest/smooth/create_parser.ts +1 -0
  328. package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
  329. package/src/public_types.ts +6 -1
  330. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +1 -2
  331. package/src/transports/dash/image_pipelines.ts +15 -14
  332. package/src/transports/dash/init_segment_loader.ts +1 -2
  333. package/src/transports/dash/manifest_parser.ts +2 -3
  334. package/src/transports/dash/segment_loader.ts +4 -5
  335. package/src/transports/dash/segment_parser.ts +5 -0
  336. package/src/transports/dash/text_loader.ts +2 -3
  337. package/src/transports/dash/text_parser.ts +8 -0
  338. package/src/transports/local/segment_loader.ts +2 -3
  339. package/src/transports/local/segment_parser.ts +4 -0
  340. package/src/transports/local/text_parser.ts +8 -0
  341. package/src/transports/metaplaylist/pipelines.ts +2 -3
  342. package/src/transports/smooth/pipelines.ts +26 -14
  343. package/src/transports/smooth/segment_loader.ts +5 -6
  344. package/src/transports/types.ts +22 -0
  345. package/src/transports/utils/call_custom_manifest_loader.ts +1 -2
  346. package/src/utils/__tests__/deep_merge.test.ts +48 -0
  347. package/src/utils/cancellable_sleep.ts +1 -2
  348. package/src/utils/cast_to_observable.ts +0 -2
  349. package/src/utils/deep_merge.ts +46 -0
  350. package/src/utils/reference.ts +116 -23
  351. package/src/utils/request/fetch.ts +1 -2
  352. package/src/utils/request/xhr.ts +3 -3
  353. package/src/utils/rx-from_cancellable_promise.ts +7 -2
  354. package/src/utils/task_canceller.ts +6 -4
  355. package/tsconfig.json +0 -1
  356. package/tsconfig.modules.json +0 -1
  357. package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
  358. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
  359. package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
  360. package/dist/_esm5.processed/core/eme/create_session.js +0 -126
  361. package/dist/_esm5.processed/core/eme/dispose_eme.d.ts +0 -19
  362. package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
  363. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
  364. package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
  365. package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
  366. package/dist/_esm5.processed/core/eme/find_key_system.js +0 -253
  367. package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
  368. package/dist/_esm5.processed/core/eme/get_session.js +0 -68
  369. package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
  370. package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
  371. package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
  372. package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
  373. package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
  374. package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
  375. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
  376. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
  377. package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
  378. package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
  379. package/src/core/eme/README.md +0 -26
  380. package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
  381. package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
  382. package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
  383. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
  384. package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
  385. package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
  386. package/src/core/eme/clear_eme_session.ts +0 -62
  387. package/src/core/eme/create_session.ts +0 -187
  388. package/src/core/eme/dispose_eme.ts +0 -25
  389. package/src/core/eme/dispose_media_keys.ts +0 -46
  390. package/src/core/eme/eme_manager.ts +0 -387
  391. package/src/core/eme/get_media_keys.ts +0 -141
  392. package/src/core/eme/get_session.ts +0 -135
  393. package/src/core/eme/init_media_keys.ts +0 -106
  394. package/src/core/eme/set_server_certificate.ts +0 -115
  395. package/src/core/eme/utils/close_session.ts +0 -113
  396. package/src/core/eme/utils/init_data_store.ts +0 -234
  397. package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
  398. package/src/core/init/create_eme_manager.ts +0 -95
  399. package/src/utils/__tests__/promise.test.ts +0 -23
  400. package/src/utils/promise.ts +0 -20
@@ -71,13 +71,14 @@ function parseISOBMFFEmbeddedTextTrack(data, isChunked, content, initTimescale,
71
71
  }
72
72
  return { segmentType: "init",
73
73
  initializationData: null,
74
+ initializationDataSize: 0,
74
75
  protectionDataUpdate: false,
75
76
  initTimescale: mdhdTimescale };
76
77
  }
77
78
  var chunkInfos = getISOBMFFTimingInfos(chunkBytes, isChunked, segment, initTimescale);
78
79
  var chunkData = getISOBMFFEmbeddedTextTrackData(content, chunkBytes, chunkInfos, isChunked);
79
80
  var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
80
- return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
81
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkBytes.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
81
82
  appendWindow: [period.start, period.end] };
82
83
  }
83
84
  /**
@@ -97,20 +98,23 @@ function parsePlainTextTrack(data, isChunked, content) {
97
98
  if (segment.isInit) {
98
99
  return { segmentType: "init",
99
100
  initializationData: null,
101
+ initializationDataSize: 0,
100
102
  protectionDataUpdate: false,
101
103
  initTimescale: undefined };
102
104
  }
103
105
  var textTrackData;
106
+ var chunkSize;
104
107
  if (typeof data !== "string") {
105
108
  var bytesData = data instanceof Uint8Array ? data :
106
109
  new Uint8Array(data);
107
110
  textTrackData = utf8ToStr(bytesData);
111
+ chunkSize = bytesData.length;
108
112
  }
109
113
  else {
110
114
  textTrackData = data;
111
115
  }
112
116
  var chunkData = getPlainTextTrackData(content, textTrackData, isChunked);
113
- return { segmentType: "media", chunkData: chunkData, chunkInfos: null,
117
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkSize, chunkInfos: null,
114
118
  chunkOffset: timestampOffset,
115
119
  protectionDataUpdate: false,
116
120
  appendWindow: [period.start, period.end] };
@@ -136,10 +140,12 @@ export default function generateTextTrackParser(_a) {
136
140
  // No data, just return an empty placeholder object
137
141
  return segment.isInit ? { segmentType: "init",
138
142
  initializationData: null,
143
+ initializationDataSize: 0,
139
144
  protectionDataUpdate: false,
140
145
  initTimescale: undefined } :
141
146
  { segmentType: "media",
142
147
  chunkData: null,
148
+ chunkSize: 0,
143
149
  chunkInfos: null,
144
150
  chunkOffset: (_a = segment.timestampOffset) !== null && _a !== void 0 ? _a : 0,
145
151
  protectionDataUpdate: false,
@@ -15,14 +15,13 @@
15
15
  */
16
16
  import { CustomLoaderError } from "../../errors";
17
17
  import isNullOrUndefined from "../../utils/is_null_or_undefined";
18
- import PPromise from "../../utils/promise";
19
18
  /**
20
19
  * @param {Function} customSegmentLoader
21
20
  * @param {Object} cancelSignal
22
21
  * @returns {Promise}
23
22
  */
24
23
  function loadInitSegment(customSegmentLoader, cancelSignal) {
25
- return new PPromise(function (res, rej) {
24
+ return new Promise(function (res, rej) {
26
25
  /** `true` when the custom segmentLoader should not be active anymore. */
27
26
  var hasFinished = false;
28
27
  /**
@@ -77,7 +76,7 @@ function loadInitSegment(customSegmentLoader, cancelSignal) {
77
76
  * @returns {Observable}
78
77
  */
79
78
  function loadSegment(segment, customSegmentLoader, cancelSignal) {
80
- return new PPromise(function (res, rej) {
79
+ return new Promise(function (res, rej) {
81
80
  /** `true` when the custom segmentLoader should not be active anymore. */
82
81
  var hasFinished = false;
83
82
  /**
@@ -26,11 +26,13 @@ export default function segmentParser(loadedSegment, content, initTimescale) {
26
26
  if (segment.isInit) {
27
27
  return { segmentType: "init",
28
28
  initializationData: null,
29
+ initializationDataSize: 0,
29
30
  protectionDataUpdate: false,
30
31
  initTimescale: undefined };
31
32
  }
32
33
  return { segmentType: "media",
33
34
  chunkData: null,
35
+ chunkSize: 0,
34
36
  chunkInfos: null,
35
37
  chunkOffset: 0,
36
38
  protectionDataUpdate: false, appendWindow: appendWindow };
@@ -52,10 +54,11 @@ export default function segmentParser(loadedSegment, content, initTimescale) {
52
54
  getMDHDTimescale(chunkData);
53
55
  return { segmentType: "init",
54
56
  initializationData: chunkData,
57
+ initializationDataSize: 0,
55
58
  initTimescale: timescale !== null && timescale !== void 0 ? timescale : undefined, protectionDataUpdate: protectionDataUpdate };
56
59
  }
57
60
  var chunkInfos = seemsToBeMP4 ? getISOBMFFTimingInfos(chunkData, false, segment, initTimescale) :
58
61
  null; // TODO extract time info from webm
59
62
  var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
60
- return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false, appendWindow: appendWindow };
63
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkData.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false, appendWindow: appendWindow };
61
64
  }
@@ -43,13 +43,14 @@ function parseISOBMFFEmbeddedTextTrack(data, isChunked, content, initTimescale)
43
43
  var mdhdTimescale = getMDHDTimescale(chunkBytes);
44
44
  return { segmentType: "init",
45
45
  initializationData: null,
46
+ initializationDataSize: 0,
46
47
  initTimescale: mdhdTimescale,
47
48
  protectionDataUpdate: false };
48
49
  }
49
50
  var chunkInfos = getISOBMFFTimingInfos(chunkBytes, isChunked, segment, initTimescale);
50
51
  var chunkData = getISOBMFFEmbeddedTextTrackData(content, chunkBytes, chunkInfos, isChunked);
51
52
  var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
52
- return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
53
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkBytes.length, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
53
54
  appendWindow: [period.start, period.end] };
54
55
  }
55
56
  /**
@@ -67,21 +68,24 @@ function parsePlainTextTrack(data, isChunked, content) {
67
68
  if (segment.isInit) {
68
69
  return { segmentType: "init",
69
70
  initializationData: null,
71
+ initializationDataSize: 0,
70
72
  initTimescale: undefined,
71
73
  protectionDataUpdate: false };
72
74
  }
73
75
  var textTrackData;
76
+ var chunkSize;
74
77
  if (typeof data !== "string") {
75
78
  var bytesData = data instanceof Uint8Array ? data :
76
79
  new Uint8Array(data);
77
80
  textTrackData = utf8ToStr(bytesData);
81
+ chunkSize = bytesData.length;
78
82
  }
79
83
  else {
80
84
  textTrackData = data;
81
85
  }
82
86
  var chunkData = getPlainTextTrackData(content, textTrackData, isChunked);
83
87
  var chunkOffset = takeFirstSet(segment.timestampOffset, 0);
84
- return { segmentType: "media", chunkData: chunkData, chunkInfos: null, chunkOffset: chunkOffset, protectionDataUpdate: false,
88
+ return { segmentType: "media", chunkData: chunkData, chunkSize: chunkSize, chunkInfos: null, chunkOffset: chunkOffset, protectionDataUpdate: false,
85
89
  appendWindow: [period.start, period.end] };
86
90
  }
87
91
  /**
@@ -100,12 +104,14 @@ export default function textTrackParser(loadedSegment, content, initTimescale) {
100
104
  if (segment.isInit) {
101
105
  return { segmentType: "init",
102
106
  initializationData: null,
107
+ initializationDataSize: 0,
103
108
  protectionDataUpdate: false,
104
109
  initTimescale: undefined };
105
110
  }
106
111
  var chunkOffset = (_a = segment.timestampOffset) !== null && _a !== void 0 ? _a : 0;
107
112
  return { segmentType: "media",
108
113
  chunkData: null,
114
+ chunkSize: 0,
109
115
  chunkInfos: null, chunkOffset: chunkOffset, protectionDataUpdate: false,
110
116
  appendWindow: [period.start, period.end] };
111
117
  }
@@ -29,7 +29,6 @@ import Manifest from "../../manifest";
29
29
  import parseMetaPlaylist from "../../parsers/manifest/metaplaylist";
30
30
  import isNullOrUndefined from "../../utils/is_null_or_undefined";
31
31
  import objectAssign from "../../utils/object_assign";
32
- import PPromise from "../../utils/promise";
33
32
  import generateManifestLoader from "./manifest_loader";
34
33
  /**
35
34
  * Get base - real - content from an offseted metaplaylist content.
@@ -98,7 +97,7 @@ export default function (options) {
98
97
  function handleParsedResult(parsedResult) {
99
98
  if (parsedResult.type === "done") {
100
99
  var manifest = new Manifest(parsedResult.value, options);
101
- return PPromise.resolve({ manifest: manifest });
100
+ return Promise.resolve({ manifest: manifest });
102
101
  }
103
102
  var parsedValue = parsedResult.value;
104
103
  var loaderProms = parsedValue.ressources.map(function (resource) {
@@ -111,7 +110,7 @@ export default function (options) {
111
110
  return transport.manifest.loadManifest(resource.url, cancelSignal);
112
111
  }
113
112
  });
114
- return PPromise.all(loaderProms).then(function (parsedReqs) {
113
+ return Promise.all(loaderProms).then(function (parsedReqs) {
115
114
  var loadedRessources = parsedReqs.map(function (e) { return e.manifest; });
116
115
  return handleParsedResult(parsedResult.value.continue(loadedRessources));
117
116
  });
@@ -24,12 +24,47 @@ var __assign = (this && this.__assign) || function () {
24
24
  };
25
25
  return __assign.apply(this, arguments);
26
26
  };
27
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
28
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
29
+ return new (P || (P = Promise))(function (resolve, reject) {
30
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
31
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
32
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
33
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
34
+ });
35
+ };
36
+ var __generator = (this && this.__generator) || function (thisArg, body) {
37
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
38
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
39
+ function verb(n) { return function (v) { return step([n, v]); }; }
40
+ function step(op) {
41
+ if (f) throw new TypeError("Generator is already executing.");
42
+ while (_) try {
43
+ 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;
44
+ if (y = 0, t) op = [op[0] & 2, t.value];
45
+ switch (op[0]) {
46
+ case 0: case 1: t = op; break;
47
+ case 4: _.label++; return { value: op[1], done: false };
48
+ case 5: _.label++; y = op[1]; op = [0]; continue;
49
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
50
+ default:
51
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
52
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
53
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
54
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
55
+ if (t[2]) _.ops.pop();
56
+ _.trys.pop(); continue;
57
+ }
58
+ op = body.call(thisArg, _);
59
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
60
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
61
+ }
62
+ };
27
63
  import features from "../../features";
28
64
  import log from "../../log";
29
65
  import Manifest from "../../manifest";
30
66
  import { getMDAT } from "../../parsers/containers/isobmff";
31
67
  import createSmoothManifestParser, { SmoothRepresentationIndex, } from "../../parsers/manifest/smooth";
32
- import PPromise from "../../utils/promise";
33
68
  import request from "../../utils/request";
34
69
  import { strToUtf8, utf8ToStr, } from "../../utils/string_parsing";
35
70
  import warnOnce from "../../utils/warn_once";
@@ -69,7 +104,7 @@ export default function (options) {
69
104
  // TODO (v4.x.x) Remove that function
70
105
  resolveManifestUrl: function (url, cancelSignal) {
71
106
  if (url === undefined) {
72
- return PPromise.resolve(undefined);
107
+ return Promise.resolve(undefined);
73
108
  }
74
109
  var resolving;
75
110
  if (WSX_REG.test(url)) {
@@ -86,7 +121,7 @@ export default function (options) {
86
121
  });
87
122
  }
88
123
  else {
89
- resolving = PPromise.resolve(url);
124
+ resolving = Promise.resolve(url);
90
125
  }
91
126
  var token = extractToken(url);
92
127
  return resolving.then(function (_url) {
@@ -134,6 +169,7 @@ export default function (options) {
134
169
  if (segment.isInit) {
135
170
  return { segmentType: "init",
136
171
  initializationData: null,
172
+ initializationDataSize: 0,
137
173
  protectionDataUpdate: false,
138
174
  initTimescale: undefined };
139
175
  }
@@ -141,6 +177,7 @@ export default function (options) {
141
177
  chunkData: null,
142
178
  chunkInfos: null,
143
179
  chunkOffset: 0,
180
+ chunkSize: 0,
144
181
  protectionDataUpdate: false,
145
182
  appendWindow: [undefined, undefined] };
146
183
  }
@@ -150,6 +187,7 @@ export default function (options) {
150
187
  var timescale = (_b = (_a = segment.privateInfos) === null || _a === void 0 ? void 0 : _a.smoothInitSegment) === null || _b === void 0 ? void 0 : _b.timescale;
151
188
  return { segmentType: "init",
152
189
  initializationData: data,
190
+ initializationDataSize: data.byteLength,
153
191
  // smooth init segments are crafted by hand.
154
192
  // Their timescale is the one from the manifest.
155
193
  initTimescale: timescale,
@@ -169,6 +207,7 @@ export default function (options) {
169
207
  addNextSegments(adaptation, nextSegments, segment);
170
208
  }
171
209
  return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: 0,
210
+ chunkSize: chunkData.length,
172
211
  protectionDataUpdate: false,
173
212
  appendWindow: [undefined, undefined] };
174
213
  },
@@ -177,7 +216,7 @@ export default function (options) {
177
216
  loadSegment: function (url, content, cancelSignal, callbacks) {
178
217
  var segment = content.segment, representation = content.representation;
179
218
  if (segment.isInit || url === null) {
180
- return PPromise.resolve({ resultType: "segment-created",
219
+ return Promise.resolve({ resultType: "segment-created",
181
220
  resultData: null });
182
221
  }
183
222
  var isMP4 = isMP4EmbeddedTrack(representation);
@@ -207,9 +246,11 @@ export default function (options) {
207
246
  var isMP4 = isMP4EmbeddedTrack(representation);
208
247
  var _b = representation.mimeType, mimeType = _b === void 0 ? "" : _b, _c = representation.codec, codec = _c === void 0 ? "" : _c;
209
248
  var data = loadedSegment.data, isChunked = loadedSegment.isChunked;
249
+ var chunkSize;
210
250
  if (segment.isInit) { // text init segment has no use in HSS
211
251
  return { segmentType: "init",
212
252
  initializationData: null,
253
+ initializationDataSize: 0,
213
254
  protectionDataUpdate: false,
214
255
  initTimescale: undefined };
215
256
  }
@@ -218,6 +259,7 @@ export default function (options) {
218
259
  chunkData: null,
219
260
  chunkInfos: null,
220
261
  chunkOffset: 0,
262
+ chunkSize: 0,
221
263
  protectionDataUpdate: false,
222
264
  appendWindow: [undefined, undefined] };
223
265
  }
@@ -236,6 +278,7 @@ export default function (options) {
236
278
  chunkBytes = data instanceof Uint8Array ? data :
237
279
  new Uint8Array(data);
238
280
  }
281
+ chunkSize = chunkBytes.length;
239
282
  var timingInfos = initTimescale !== undefined ?
240
283
  extractTimingsInfos(chunkBytes, isChunked, initTimescale, segment, manifest.isLive) :
241
284
  null;
@@ -279,6 +322,7 @@ export default function (options) {
279
322
  if (typeof data !== "string") {
280
323
  var bytesData = data instanceof Uint8Array ? data :
281
324
  new Uint8Array(data);
325
+ chunkSize = bytesData.length;
282
326
  chunkString = utf8ToStr(bytesData);
283
327
  }
284
328
  else {
@@ -316,27 +360,38 @@ export default function (options) {
316
360
  chunkData: { type: _sdType,
317
361
  data: _sdData,
318
362
  start: segmentStart,
319
- end: segmentEnd, language: language }, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
363
+ end: segmentEnd, language: language }, chunkSize: chunkSize, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
320
364
  appendWindow: [undefined, undefined] };
321
365
  },
322
366
  };
323
367
  var imageTrackPipeline = {
324
368
  loadSegment: function (url, content, cancelSignal, callbacks) {
325
- if (content.segment.isInit || url === null) {
326
- // image do not need an init segment. Passthrough directly to the parser
327
- return PPromise.resolve({ resultType: "segment-created",
328
- resultData: null });
329
- }
330
- return request({ url: url, responseType: "arraybuffer",
331
- onProgress: callbacks.onProgress, cancelSignal: cancelSignal })
332
- .then(function (data) { return ({ resultType: "segment-loaded",
333
- resultData: data }); });
369
+ return __awaiter(this, void 0, void 0, function () {
370
+ var data;
371
+ return __generator(this, function (_a) {
372
+ switch (_a.label) {
373
+ case 0:
374
+ if (content.segment.isInit || url === null) {
375
+ // image do not need an init segment. Passthrough directly to the parser
376
+ return [2 /*return*/, { resultType: "segment-created",
377
+ resultData: null }];
378
+ }
379
+ return [4 /*yield*/, request({ url: url, responseType: "arraybuffer",
380
+ onProgress: callbacks.onProgress, cancelSignal: cancelSignal })];
381
+ case 1:
382
+ data = _a.sent();
383
+ return [2 /*return*/, { resultType: "segment-loaded",
384
+ resultData: data }];
385
+ }
386
+ });
387
+ });
334
388
  },
335
389
  parseSegment: function (loadedSegment, content, _initTimescale) {
336
390
  var data = loadedSegment.data, isChunked = loadedSegment.isChunked;
337
391
  if (content.segment.isInit) { // image init segment has no use
338
392
  return { segmentType: "init",
339
393
  initializationData: null,
394
+ initializationDataSize: 0,
340
395
  protectionDataUpdate: false,
341
396
  initTimescale: undefined };
342
397
  }
@@ -349,6 +404,7 @@ export default function (options) {
349
404
  chunkData: null,
350
405
  chunkInfos: null,
351
406
  chunkOffset: 0,
407
+ chunkSize: 0,
352
408
  protectionDataUpdate: false,
353
409
  appendWindow: [undefined, undefined] };
354
410
  }
@@ -362,6 +418,7 @@ export default function (options) {
362
418
  type: "bif" },
363
419
  chunkInfos: { time: 0,
364
420
  duration: Number.MAX_VALUE },
421
+ chunkSize: undefined,
365
422
  chunkOffset: 0,
366
423
  protectionDataUpdate: false,
367
424
  appendWindow: [undefined, undefined] };
@@ -26,7 +26,6 @@ var __assign = (this && this.__assign) || function () {
26
26
  };
27
27
  import { CustomLoaderError } from "../../errors";
28
28
  import assert from "../../utils/assert";
29
- import PPromise from "../../utils/promise";
30
29
  import request from "../../utils/request";
31
30
  import byteRange from "../utils/byte_range";
32
31
  import checkISOBMFFIntegrity from "../utils/check_isobmff_integrity";
@@ -98,11 +97,11 @@ var generateSegmentLoader = function (_a) {
98
97
  }
99
98
  responseData = new Uint8Array(0);
100
99
  }
101
- return PPromise.resolve({ resultType: "segment-created",
100
+ return Promise.resolve({ resultType: "segment-created",
102
101
  resultData: responseData });
103
102
  }
104
103
  else if (url === null) {
105
- return PPromise.resolve({ resultType: "segment-created",
104
+ return Promise.resolve({ resultType: "segment-created",
106
105
  resultData: null });
107
106
  }
108
107
  else {
@@ -110,7 +109,7 @@ var generateSegmentLoader = function (_a) {
110
109
  if (typeof customSegmentLoader !== "function") {
111
110
  return regularSegmentLoader(url, content, callbacks, cancelSignal, checkMediaSegmentIntegrity);
112
111
  }
113
- return new PPromise(function (res, rej) {
112
+ return new Promise(function (res, rej) {
114
113
  /** `true` when the custom segmentLoader should not be active anymore. */
115
114
  var hasFinished = false;
116
115
  /**
@@ -589,6 +589,17 @@ export interface ISegmentParserParsedInitChunk<DataType> {
589
589
  * protection initialization data to have been encountered.
590
590
  */
591
591
  protectionDataUpdate: boolean;
592
+ /**
593
+ * Size in bytes of `initializationData`.
594
+ * `undefined` if unknown.
595
+ *
596
+ * Note: In some cases, such as when `initializationData` is under a format
597
+ * whose size is difficult to estimate (e.g. a JavaScript object), the
598
+ * `initializationDataSize` may either be set to `undefined` or, if available,
599
+ * to a sensible estimate (e.g. when a JavaScript object wraps large binary
600
+ * data, `initializationDataSize` may refer to that binary data only).
601
+ */
602
+ initializationDataSize: number | undefined;
592
603
  }
593
604
  /**
594
605
  * Result returned by a segment parser when it parsed a chunk from a media
@@ -606,6 +617,17 @@ export interface ISegmentParserParsedMediaChunk<DataType> {
606
617
  * `null` if unknown.
607
618
  */
608
619
  chunkInfos: IChunkTimeInfo | null;
620
+ /**
621
+ * Size in bytes of `chunkData`.
622
+ * `undefined` if unknown.
623
+ *
624
+ * Note: In some cases, such as when `chunkData` is under a format whose size
625
+ * is difficult to estimate (e.g. a JavaScript object), the `chunkSize` may
626
+ * either be set to `undefined` or, if available, to a sensible estimate (e.g.
627
+ * when a JavaScript object wraps large binary data, `chunkSize` may refer to
628
+ * that binary data only).
629
+ */
630
+ chunkSize: number | undefined;
609
631
  /**
610
632
  * time offset, in seconds, to add to the absolute timed data defined in
611
633
  * `chunkData` to obtain the "real" wanted effective time.
@@ -14,10 +14,9 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { CustomLoaderError } from "../../errors";
17
- import PPromise from "../../utils/promise";
18
17
  export default function callCustomManifestLoader(customManifestLoader, fallbackManifestLoader) {
19
18
  return function (url, cancelSignal) {
20
- return new PPromise(function (res, rej) {
19
+ return new Promise(function (res, rej) {
21
20
  var timeAPIsDelta = Date.now() - performance.now();
22
21
  /** `true` when the custom segmentLoader should not be active anymore. */
23
22
  var hasFinished = false;
@@ -13,7 +13,6 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import PPromise from "./promise";
17
16
  /**
18
17
  * Wait the given `delay`, resolving the Promise when finished.
19
18
  *
@@ -28,7 +27,7 @@ import PPromise from "./promise";
28
27
  * cancellation with the corresponding `CancellationError`.
29
28
  */
30
29
  export default function cancellableSleep(delay, cancellationSignal) {
31
- return new PPromise(function (res, rej) {
30
+ return new Promise(function (res, rej) {
32
31
  var timeout = setTimeout(function () {
33
32
  unregisterCancelSignal();
34
33
  res();
@@ -15,7 +15,6 @@
15
15
  */
16
16
  import { from as observableFrom, Observable, of as observableOf, } from "rxjs";
17
17
  import isNullOrUndefined from "./is_null_or_undefined";
18
- import PPromise from "./promise";
19
18
  /**
20
19
  * Try to cast the given value into an observable.
21
20
  * StraightForward - test first for an Observable then for a Promise.
@@ -26,8 +25,7 @@ function castToObservable(value) {
26
25
  if (value instanceof Observable) {
27
26
  return value;
28
27
  }
29
- else if (value instanceof PPromise ||
30
- value instanceof Promise ||
28
+ else if (value instanceof Promise ||
31
29
  (!isNullOrUndefined(value) &&
32
30
  typeof value.then === "function")) {
33
31
  return observableFrom(value);
@@ -0,0 +1,12 @@
1
+ declare type IDeepPartial<T> = {
2
+ [P in keyof T]?: IDeepPartial<T[P]>;
3
+ };
4
+ declare type ISourcesArgument<T> = Array<IDeepPartial<T> | unknown>;
5
+ /**
6
+ * Deeply merge nested objects
7
+ * @param target
8
+ * @param sources
9
+ * @returns output : merged object
10
+ */
11
+ export default function deepMerge<T>(target: T, ...sources: ISourcesArgument<T>): T;
12
+ export {};
@@ -0,0 +1,53 @@
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
9
+ };
10
+ import objectAssign from "./object_assign";
11
+ /**
12
+ * Check if an item is an object
13
+ * @param item
14
+ * @returns {boolean}
15
+ */
16
+ function isObject(item) {
17
+ return (item !== null
18
+ && item !== undefined
19
+ && !Array.isArray(item)
20
+ && typeof item === "object");
21
+ }
22
+ /**
23
+ * Deeply merge nested objects
24
+ * @param target
25
+ * @param sources
26
+ * @returns output : merged object
27
+ */
28
+ export default function deepMerge(target) {
29
+ var _a, _b;
30
+ var sources = [];
31
+ for (var _i = 1; _i < arguments.length; _i++) {
32
+ sources[_i - 1] = arguments[_i];
33
+ }
34
+ if (sources.length === 0) {
35
+ return target;
36
+ }
37
+ var source = sources.shift();
38
+ if (isObject(target) && isObject(source)) {
39
+ for (var key in source) {
40
+ if (isObject(source[key])) {
41
+ if (target[key] === undefined) {
42
+ objectAssign(target, (_a = {}, _a[key] = {}, _a));
43
+ }
44
+ var newTarget = target[key];
45
+ deepMerge(newTarget, source[key]);
46
+ }
47
+ else {
48
+ objectAssign(target, (_b = {}, _b[key] = source[key], _b));
49
+ }
50
+ }
51
+ }
52
+ return deepMerge.apply(void 0, __spreadArray([target], sources, false));
53
+ }
@@ -14,6 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { Observable } from "rxjs";
17
+ import { CancellationSignal } from "./task_canceller";
17
18
  /**
18
19
  * A value behind a shared reference, meaning that any update to its value from
19
20
  * anywhere can be retrieved from any other parts of the code in posession of
@@ -55,6 +56,7 @@ export interface ISharedReference<T> {
55
56
  getValue(): T;
56
57
  /** Update the value of this shared reference. */
57
58
  setValue(newVal: T): void;
59
+ setValueIfChanged(newVal: T): void;
58
60
  /**
59
61
  * Returns an Observable which synchronously emits the current value (unless
60
62
  * the `skipCurrentValue` argument has been set to `true`) and then each time
@@ -63,6 +65,21 @@ export interface ISharedReference<T> {
63
65
  * @returns {Observable}
64
66
  */
65
67
  asObservable(skipCurrentValue?: boolean): Observable<T>;
68
+ /**
69
+ * Allows to register a callback to be called each time the value inside the
70
+ * reference is updated.
71
+ * @param {Function} cb - Callback to be called each time the reference is
72
+ * updated. Takes the new value im argument.
73
+ * @param {Object} [options]
74
+ * @param {Object} [options.clearSignal] - Allows to provide a
75
+ * CancellationSignal which will unregister the callback when it emits.
76
+ * @param {boolean} [options.emitCurrentValue] - If `true`, the callback will
77
+ * also be immediately called with the current value.
78
+ */
79
+ onUpdate(cb: (val: T) => void, options?: {
80
+ clearSignal?: CancellationSignal;
81
+ emitCurrentValue?: boolean;
82
+ }): void;
66
83
  /**
67
84
  * Indicate that no new values will be emitted.
68
85
  * Allows to automatically close all Observables generated from this shared
@@ -93,8 +110,20 @@ export interface ISharedReference<T> {
93
110
  * the code that some logic is not supposed to update the referenced value.
94
111
  */
95
112
  export interface IReadOnlySharedReference<T> {
113
+ /** Get the last value set on that reference. */
96
114
  getValue(): T;
115
+ /**
116
+ * Returns an Observable notifying this reference's value each time it is
117
+ * updated.
118
+ *
119
+ * Also emit its current value on subscription unless its argument is set to
120
+ * `true`.
121
+ */
97
122
  asObservable(skipCurrentValue?: boolean): Observable<T>;
123
+ onUpdate(cb: (val: T) => void, options?: {
124
+ clearSignal?: CancellationSignal;
125
+ emitCurrentValue?: boolean;
126
+ }): void;
98
127
  }
99
128
  /**
100
129
  * Create an `ISharedReference` object encapsulating the mutable `initialValue`