rx-player 4.0.0-dev.2023110700 → 4.0.0-dev.2023120600

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 (479) hide show
  1. package/CHANGELOG.md +18 -226
  2. package/FILES.md +1 -1
  3. package/VERSION +1 -1
  4. package/dist/_esm5.processed/compat/add_text_track.d.ts +1 -3
  5. package/dist/_esm5.processed/compat/add_text_track.js +4 -7
  6. package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +0 -7
  7. package/dist/_esm5.processed/compat/event_listeners.d.ts +2 -15
  8. package/dist/_esm5.processed/compat/event_listeners.js +2 -37
  9. package/dist/_esm5.processed/compat/index.d.ts +1 -3
  10. package/dist/_esm5.processed/compat/index.js +1 -3
  11. package/dist/_esm5.processed/config.d.ts +9 -21
  12. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +0 -58
  13. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +14 -54
  14. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.d.ts +2 -8
  15. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +2 -11
  16. package/dist/_esm5.processed/core/api/debug/buffer_graph.js +2 -6
  17. package/dist/_esm5.processed/core/api/debug/modules/general_info.js +13 -32
  18. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +3 -3
  19. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +1 -1
  20. package/dist/_esm5.processed/core/api/option_utils.d.ts +14 -35
  21. package/dist/_esm5.processed/core/api/option_utils.js +47 -230
  22. package/dist/_esm5.processed/core/api/public_api.d.ts +92 -266
  23. package/dist/_esm5.processed/core/api/public_api.js +451 -807
  24. package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.d.ts +3 -2
  25. package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.js +3 -2
  26. package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.d.ts → track_management/media_element_tracks_store.d.ts} +15 -75
  27. package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.js → track_management/media_element_tracks_store.js} +74 -193
  28. package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +84 -0
  29. package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +158 -0
  30. package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +406 -0
  31. package/dist/_esm5.processed/core/api/track_management/tracks_store.js +932 -0
  32. package/dist/_esm5.processed/core/api/utils.d.ts +1 -0
  33. package/dist/_esm5.processed/core/api/utils.js +28 -11
  34. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +3 -3
  35. package/dist/_esm5.processed/core/decrypt/find_key_system.js +83 -71
  36. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +6 -5
  37. package/dist/_esm5.processed/core/decrypt/session_events_listener.js +10 -72
  38. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +4 -4
  39. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +6 -4
  40. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +1 -3
  41. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +7 -26
  42. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +3 -9
  43. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +16 -9
  44. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -3
  45. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  46. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.d.ts +1 -6
  47. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +4 -41
  48. package/dist/_esm5.processed/core/init/directfile_content_initializer.js +1 -1
  49. package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +1 -8
  50. package/dist/_esm5.processed/core/init/media_source_content_initializer.js +5 -19
  51. package/dist/_esm5.processed/core/init/types.d.ts +5 -15
  52. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +2 -36
  53. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +2 -82
  54. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
  55. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
  56. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +19 -2
  57. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +1 -2
  58. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +2 -3
  59. package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +2 -2
  60. package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
  61. package/dist/_esm5.processed/core/segment_buffers/index.js +2 -1
  62. package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +1 -0
  63. package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +1 -0
  64. package/dist/_esm5.processed/core/segment_buffers/inventory/utils.d.ts +33 -0
  65. package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +49 -0
  66. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +0 -1
  67. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +2 -16
  68. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +0 -15
  69. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +183 -93
  70. package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.d.ts +39 -0
  71. package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +133 -0
  72. package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +27 -13
  73. package/dist/_esm5.processed/core/stream/index.d.ts +2 -3
  74. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +2 -0
  75. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +5 -7
  76. package/dist/_esm5.processed/core/stream/period/period_stream.js +13 -12
  77. package/dist/_esm5.processed/core/stream/period/types.d.ts +5 -14
  78. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +2 -4
  79. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +10 -46
  80. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +29 -23
  81. package/dist/_esm5.processed/core/stream/representation/types.d.ts +11 -1
  82. package/dist/_esm5.processed/default_config.d.ts +35 -98
  83. package/dist/_esm5.processed/default_config.js +36 -113
  84. package/dist/_esm5.processed/errors/custom_loader_error.d.ts +1 -3
  85. package/dist/_esm5.processed/errors/custom_loader_error.js +1 -3
  86. package/dist/_esm5.processed/errors/media_error.js +2 -2
  87. package/dist/_esm5.processed/errors/network_error.d.ts +0 -1
  88. package/dist/_esm5.processed/errors/network_error.js +0 -1
  89. package/dist/_esm5.processed/errors/request_error.d.ts +2 -3
  90. package/dist/_esm5.processed/errors/request_error.js +2 -5
  91. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -3
  92. package/dist/_esm5.processed/features/features_object.js +0 -2
  93. package/dist/_esm5.processed/features/list/directfile.js +2 -5
  94. package/dist/_esm5.processed/features/list/index.d.ts +0 -2
  95. package/dist/_esm5.processed/features/list/index.js +0 -2
  96. package/dist/_esm5.processed/features/types.d.ts +3 -27
  97. package/dist/_esm5.processed/manifest/adaptation.d.ts +9 -11
  98. package/dist/_esm5.processed/manifest/adaptation.js +41 -30
  99. package/dist/_esm5.processed/manifest/index.d.ts +3 -4
  100. package/dist/_esm5.processed/manifest/manifest.d.ts +5 -54
  101. package/dist/_esm5.processed/manifest/manifest.js +5 -110
  102. package/dist/_esm5.processed/manifest/period.d.ts +4 -5
  103. package/dist/_esm5.processed/manifest/representation.d.ts +10 -5
  104. package/dist/_esm5.processed/manifest/representation.js +33 -10
  105. package/dist/_esm5.processed/manifest/representation_index/index.d.ts +2 -2
  106. package/dist/_esm5.processed/manifest/representation_index/static.d.ts +2 -0
  107. package/dist/_esm5.processed/manifest/representation_index/static.js +6 -0
  108. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
  109. package/dist/_esm5.processed/manifest/types.d.ts +0 -2
  110. package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
  111. package/dist/_esm5.processed/parsers/manifest/dash/common/convert_supplemental_codecs.js +26 -0
  112. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
  113. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +17 -31
  114. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +26 -19
  115. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -0
  116. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -1
  117. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -6
  118. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -8
  119. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +2 -0
  120. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +6 -0
  121. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  122. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +1 -6
  123. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +3 -5
  124. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +0 -2
  125. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -1
  126. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +2 -2
  127. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +0 -2
  128. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +2 -2
  129. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +29 -17
  130. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +13 -6
  131. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +7 -2
  132. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +10 -1
  133. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +18 -2
  134. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +6 -4
  135. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +7 -6
  136. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +5 -2
  137. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  138. package/dist/_esm5.processed/parsers/manifest/local/representation_index.d.ts +2 -0
  139. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +6 -0
  140. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +6 -6
  141. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +12 -3
  142. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +11 -2
  143. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +0 -1
  144. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +11 -17
  145. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +21 -83
  146. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +53 -125
  147. package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +119 -0
  148. package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +159 -0
  149. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.d.ts +3 -6
  150. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +4 -4
  151. package/dist/_esm5.processed/parsers/manifest/types.d.ts +4 -3
  152. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +1 -8
  153. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +1 -9
  154. package/dist/_esm5.processed/public_types.d.ts +396 -308
  155. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.d.ts +5 -4
  156. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +5 -4
  157. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +4 -4
  158. package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -3
  159. package/dist/_esm5.processed/transports/dash/pipelines.js +1 -4
  160. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
  161. package/dist/_esm5.processed/transports/dash/segment_loader.js +26 -20
  162. package/dist/_esm5.processed/transports/dash/segment_parser.js +19 -24
  163. package/dist/_esm5.processed/transports/dash/text_loader.js +5 -5
  164. package/dist/_esm5.processed/transports/dash/text_parser.js +28 -33
  165. package/dist/_esm5.processed/transports/local/pipelines.js +1 -10
  166. package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
  167. package/dist/_esm5.processed/transports/local/segment_parser.d.ts +1 -1
  168. package/dist/_esm5.processed/transports/local/segment_parser.js +10 -10
  169. package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
  170. package/dist/_esm5.processed/transports/local/text_parser.js +23 -23
  171. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +34 -52
  172. package/dist/_esm5.processed/{utils/list_to_map.d.ts → transports/smooth/is_mp4_embedded_track.d.ts} +5 -5
  173. package/dist/_esm5.processed/{features/list/image_buffer.d.ts → transports/smooth/is_mp4_embedded_track.js} +7 -6
  174. package/dist/_esm5.processed/transports/smooth/pipelines.js +33 -190
  175. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +1 -1
  176. package/dist/_esm5.processed/transports/smooth/segment_loader.js +28 -22
  177. package/dist/_esm5.processed/transports/smooth/utils.d.ts +1 -26
  178. package/dist/_esm5.processed/transports/smooth/utils.js +1 -55
  179. package/dist/_esm5.processed/transports/types.d.ts +94 -89
  180. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +3 -3
  181. package/dist/_esm5.processed/transports/utils/infer_segment_container.d.ts +3 -3
  182. package/dist/_esm5.processed/transports/utils/infer_segment_container.js +5 -7
  183. package/dist/_esm5.processed/transports/utils/parse_text_track.d.ts +8 -12
  184. package/dist/_esm5.processed/transports/utils/parse_text_track.js +19 -21
  185. package/dist/_esm5.processed/utils/array_includes.d.ts +2 -1
  186. package/dist/_esm5.processed/utils/array_includes.js +30 -28
  187. package/dist/_esm5.processed/utils/request/xhr.js +5 -5
  188. package/dist/commonjs/compat/is_codec_supported.js +22 -1
  189. package/dist/commonjs/compat/patch_webkit_source_buffer.js +2 -2
  190. package/dist/commonjs/config.d.ts +1 -0
  191. package/dist/commonjs/core/api/debug/buffer_graph.js +2 -6
  192. package/dist/commonjs/core/api/debug/modules/general_info.js +17 -10
  193. package/dist/commonjs/core/api/option_utils.d.ts +4 -0
  194. package/dist/commonjs/core/api/option_utils.js +8 -3
  195. package/dist/commonjs/core/api/public_api.d.ts +11 -1
  196. package/dist/commonjs/core/api/public_api.js +46 -11
  197. package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
  198. package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.js +11 -3
  199. package/dist/commonjs/core/fetchers/segment/segment_fetcher.d.ts +8 -1
  200. package/dist/commonjs/core/fetchers/segment/segment_fetcher.js +8 -4
  201. package/dist/commonjs/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
  202. package/dist/commonjs/core/fetchers/utils/schedule_request.js +1 -1
  203. package/dist/commonjs/core/init/directfile_content_initializer.js +24 -7
  204. package/dist/commonjs/core/init/media_source_content_initializer.d.ts +6 -0
  205. package/dist/commonjs/core/init/media_source_content_initializer.js +4 -6
  206. package/dist/commonjs/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
  207. package/dist/commonjs/core/init/utils/content_time_boundaries_observer.js +16 -17
  208. package/dist/commonjs/core/init/utils/get_initial_time.d.ts +17 -3
  209. package/dist/commonjs/core/init/utils/get_initial_time.js +9 -7
  210. package/dist/commonjs/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
  211. package/dist/commonjs/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
  212. package/dist/commonjs/core/segment_buffers/implementations/text/html/utils.js +19 -2
  213. package/dist/commonjs/core/stream/adaptation/adaptation_stream.js +2 -2
  214. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +3 -3
  215. package/dist/commonjs/core/stream/period/period_stream.js +2 -2
  216. package/dist/commonjs/core/stream/representation/utils/get_buffer_status.js +3 -3
  217. package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +1 -1
  218. package/dist/commonjs/default_config.d.ts +5 -0
  219. package/dist/commonjs/default_config.js +5 -0
  220. package/dist/commonjs/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
  221. package/dist/commonjs/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
  222. package/dist/commonjs/manifest/representation.js +18 -5
  223. package/dist/commonjs/manifest/representation_index/static.d.ts +1 -1
  224. package/dist/commonjs/manifest/representation_index/static.js +2 -2
  225. package/dist/commonjs/manifest/representation_index/types.d.ts +4 -4
  226. package/dist/commonjs/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
  227. package/dist/commonjs/parsers/manifest/dash/common/convert_supplemental_codecs.js +30 -0
  228. package/dist/commonjs/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
  229. package/dist/commonjs/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
  230. package/dist/commonjs/parsers/manifest/dash/common/indexes/base.js +4 -3
  231. package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
  232. package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
  233. package/dist/commonjs/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
  234. package/dist/commonjs/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
  235. package/dist/commonjs/parsers/manifest/dash/common/indexes/list.js +2 -2
  236. package/dist/commonjs/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
  237. package/dist/commonjs/parsers/manifest/dash/common/indexes/template.js +42 -29
  238. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
  239. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
  240. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +250 -51
  241. package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
  242. package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
  243. package/dist/commonjs/parsers/manifest/dash/common/parse_adaptation_sets.js +13 -10
  244. package/dist/commonjs/parsers/manifest/dash/common/parse_mpd.js +27 -14
  245. package/dist/commonjs/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
  246. package/dist/commonjs/parsers/manifest/dash/common/parse_periods.js +17 -18
  247. package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
  248. package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.js +21 -8
  249. package/dist/commonjs/parsers/manifest/dash/common/parse_representations.js +36 -20
  250. package/dist/commonjs/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +3 -0
  251. package/dist/commonjs/parsers/manifest/dash/js-parser/node_parsers/Representation.js +3 -0
  252. package/dist/commonjs/parsers/manifest/dash/node_parser_types.d.ts +2 -0
  253. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +4 -0
  254. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +4 -0
  255. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  256. package/dist/commonjs/parsers/manifest/local/representation_index.d.ts +1 -1
  257. package/dist/commonjs/parsers/manifest/local/representation_index.js +3 -3
  258. package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
  259. package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.js +2 -2
  260. package/dist/commonjs/parsers/manifest/smooth/representation_index.d.ts +5 -5
  261. package/dist/commonjs/parsers/manifest/smooth/representation_index.js +25 -9
  262. package/dist/commonjs/parsers/manifest/types.d.ts +1 -0
  263. package/dist/commonjs/parsers/manifest/utils/index_helpers.js +1 -1
  264. package/dist/commonjs/public_types.d.ts +78 -34
  265. package/dist/commonjs/transports/dash/init_segment_loader.js +10 -5
  266. package/dist/commonjs/transports/dash/manifest_parser.js +5 -2
  267. package/dist/commonjs/transports/dash/segment_loader.js +2 -1
  268. package/dist/commonjs/transports/dash/text_loader.js +2 -0
  269. package/dist/commonjs/transports/metaplaylist/manifest_loader.js +2 -1
  270. package/dist/commonjs/transports/metaplaylist/pipelines.js +4 -1
  271. package/dist/commonjs/transports/smooth/pipelines.js +4 -2
  272. package/dist/commonjs/transports/smooth/segment_loader.js +2 -1
  273. package/dist/commonjs/transports/types.d.ts +12 -0
  274. package/dist/commonjs/transports/utils/generate_manifest_loader.js +6 -3
  275. package/dist/commonjs/utils/queue_microtask.d.ts +2 -0
  276. package/dist/commonjs/utils/queue_microtask.js +7 -0
  277. package/dist/commonjs/utils/request/fetch.d.ts +6 -0
  278. package/dist/commonjs/utils/request/fetch.js +29 -8
  279. package/dist/commonjs/utils/request/xhr.d.ts +11 -5
  280. package/dist/commonjs/utils/request/xhr.js +29 -8
  281. package/dist/es2017/compat/is_codec_supported.js +22 -1
  282. package/dist/es2017/compat/patch_webkit_source_buffer.js +2 -2
  283. package/dist/es2017/config.d.ts +1 -0
  284. package/dist/es2017/core/api/debug/buffer_graph.js +2 -6
  285. package/dist/es2017/core/api/debug/modules/general_info.js +17 -10
  286. package/dist/es2017/core/api/option_utils.d.ts +4 -0
  287. package/dist/es2017/core/api/option_utils.js +8 -3
  288. package/dist/es2017/core/api/public_api.d.ts +11 -1
  289. package/dist/es2017/core/api/public_api.js +44 -9
  290. package/dist/es2017/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
  291. package/dist/es2017/core/fetchers/manifest/manifest_fetcher.js +11 -3
  292. package/dist/es2017/core/fetchers/segment/segment_fetcher.d.ts +8 -1
  293. package/dist/es2017/core/fetchers/segment/segment_fetcher.js +8 -4
  294. package/dist/es2017/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
  295. package/dist/es2017/core/fetchers/utils/schedule_request.js +1 -1
  296. package/dist/es2017/core/init/directfile_content_initializer.js +24 -7
  297. package/dist/es2017/core/init/media_source_content_initializer.d.ts +6 -0
  298. package/dist/es2017/core/init/media_source_content_initializer.js +4 -6
  299. package/dist/es2017/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
  300. package/dist/es2017/core/init/utils/content_time_boundaries_observer.js +16 -15
  301. package/dist/es2017/core/init/utils/get_initial_time.d.ts +17 -3
  302. package/dist/es2017/core/init/utils/get_initial_time.js +9 -7
  303. package/dist/es2017/core/segment_buffers/implementations/text/html/text_track_cues_store.js +54 -6
  304. package/dist/es2017/core/segment_buffers/implementations/text/html/utils.d.ts +2 -1
  305. package/dist/es2017/core/segment_buffers/implementations/text/html/utils.js +18 -2
  306. package/dist/es2017/core/stream/adaptation/adaptation_stream.js +2 -2
  307. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +3 -3
  308. package/dist/es2017/core/stream/period/period_stream.js +2 -2
  309. package/dist/es2017/core/stream/representation/utils/get_buffer_status.js +3 -3
  310. package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +1 -1
  311. package/dist/es2017/default_config.d.ts +5 -0
  312. package/dist/es2017/default_config.js +5 -0
  313. package/dist/es2017/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
  314. package/dist/es2017/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
  315. package/dist/es2017/manifest/representation.js +18 -5
  316. package/dist/es2017/manifest/representation_index/static.d.ts +1 -1
  317. package/dist/es2017/manifest/representation_index/static.js +2 -2
  318. package/dist/es2017/manifest/representation_index/types.d.ts +4 -4
  319. package/dist/es2017/parsers/manifest/dash/common/convert_supplemental_codecs.d.ts +17 -0
  320. package/dist/es2017/parsers/manifest/dash/common/convert_supplemental_codecs.js +26 -0
  321. package/dist/es2017/parsers/manifest/dash/common/flatten_overlapping_periods.js +5 -0
  322. package/dist/es2017/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
  323. package/dist/es2017/parsers/manifest/dash/common/indexes/base.js +4 -3
  324. package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
  325. package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
  326. package/dist/es2017/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
  327. package/dist/es2017/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
  328. package/dist/es2017/parsers/manifest/dash/common/indexes/list.js +2 -2
  329. package/dist/es2017/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
  330. package/dist/es2017/parsers/manifest/dash/common/indexes/template.js +40 -27
  331. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
  332. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
  333. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +246 -51
  334. package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
  335. package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
  336. package/dist/es2017/parsers/manifest/dash/common/parse_adaptation_sets.js +11 -8
  337. package/dist/es2017/parsers/manifest/dash/common/parse_mpd.js +27 -13
  338. package/dist/es2017/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
  339. package/dist/es2017/parsers/manifest/dash/common/parse_periods.js +13 -16
  340. package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
  341. package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.js +10 -8
  342. package/dist/es2017/parsers/manifest/dash/common/parse_representations.js +36 -20
  343. package/dist/es2017/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +3 -0
  344. package/dist/es2017/parsers/manifest/dash/js-parser/node_parsers/Representation.js +3 -0
  345. package/dist/es2017/parsers/manifest/dash/node_parser_types.d.ts +2 -0
  346. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +4 -0
  347. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +4 -0
  348. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  349. package/dist/es2017/parsers/manifest/local/representation_index.d.ts +1 -1
  350. package/dist/es2017/parsers/manifest/local/representation_index.js +3 -3
  351. package/dist/es2017/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
  352. package/dist/es2017/parsers/manifest/metaplaylist/representation_index.js +2 -2
  353. package/dist/es2017/parsers/manifest/smooth/representation_index.d.ts +5 -5
  354. package/dist/es2017/parsers/manifest/smooth/representation_index.js +25 -9
  355. package/dist/es2017/parsers/manifest/types.d.ts +1 -0
  356. package/dist/es2017/parsers/manifest/utils/index_helpers.js +1 -1
  357. package/dist/es2017/public_types.d.ts +78 -34
  358. package/dist/es2017/transports/dash/init_segment_loader.js +5 -0
  359. package/dist/es2017/transports/dash/manifest_parser.js +3 -0
  360. package/dist/es2017/transports/dash/segment_loader.js +1 -0
  361. package/dist/es2017/transports/dash/text_loader.js +2 -0
  362. package/dist/es2017/transports/metaplaylist/manifest_loader.js +1 -0
  363. package/dist/es2017/transports/metaplaylist/pipelines.js +4 -1
  364. package/dist/es2017/transports/smooth/pipelines.js +2 -0
  365. package/dist/es2017/transports/smooth/segment_loader.js +1 -0
  366. package/dist/es2017/transports/types.d.ts +12 -0
  367. package/dist/es2017/transports/utils/generate_manifest_loader.js +3 -0
  368. package/dist/es2017/utils/queue_microtask.d.ts +2 -0
  369. package/dist/es2017/utils/queue_microtask.js +5 -0
  370. package/dist/es2017/utils/request/fetch.d.ts +6 -0
  371. package/dist/es2017/utils/request/fetch.js +29 -8
  372. package/dist/es2017/utils/request/xhr.d.ts +11 -5
  373. package/dist/es2017/utils/request/xhr.js +30 -9
  374. package/dist/mpd-parser.wasm +0 -0
  375. package/dist/rx-player.js +900 -492
  376. package/dist/rx-player.min.js +1 -1
  377. package/package.json +3 -7
  378. package/scripts/update-version +2 -0
  379. package/sonar-project.properties +1 -1
  380. package/src/compat/is_codec_supported.ts +23 -1
  381. package/src/compat/patch_webkit_source_buffer.ts +2 -2
  382. package/src/core/api/debug/buffer_graph.ts +2 -5
  383. package/src/core/api/debug/modules/general_info.ts +15 -10
  384. package/src/core/api/option_utils.ts +11 -3
  385. package/src/core/api/public_api.ts +48 -8
  386. package/src/core/fetchers/manifest/manifest_fetcher.ts +21 -3
  387. package/src/core/fetchers/segment/segment_fetcher.ts +19 -5
  388. package/src/core/fetchers/segment/segment_fetcher_creator.ts +1 -0
  389. package/src/core/fetchers/utils/schedule_request.ts +1 -1
  390. package/src/core/init/directfile_content_initializer.ts +23 -7
  391. package/src/core/init/media_source_content_initializer.ts +13 -7
  392. package/src/core/init/utils/content_time_boundaries_observer.ts +23 -22
  393. package/src/core/init/utils/get_initial_time.ts +25 -12
  394. package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +15 -0
  395. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +57 -6
  396. package/src/core/segment_buffers/implementations/text/html/utils.ts +19 -2
  397. package/src/core/stream/adaptation/adaptation_stream.ts +2 -2
  398. package/src/core/stream/orchestrator/stream_orchestrator.ts +3 -3
  399. package/src/core/stream/period/period_stream.ts +2 -2
  400. package/src/core/stream/representation/utils/get_buffer_status.ts +3 -3
  401. package/src/core/stream/representation/utils/get_needed_segments.ts +2 -2
  402. package/src/default_config.ts +5 -0
  403. package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +3 -1
  404. package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +2 -0
  405. package/src/manifest/representation.ts +19 -6
  406. package/src/manifest/representation_index/static.ts +2 -2
  407. package/src/manifest/representation_index/types.ts +4 -4
  408. package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +37 -0
  409. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +20 -0
  410. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +182 -36
  411. package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +32 -0
  412. package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +5 -0
  413. package/src/parsers/manifest/dash/common/indexes/base.ts +12 -4
  414. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +19 -5
  415. package/src/parsers/manifest/dash/common/indexes/index.ts +16 -4
  416. package/src/parsers/manifest/dash/common/indexes/list.ts +2 -2
  417. package/src/parsers/manifest/dash/common/indexes/template.ts +52 -31
  418. package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +4 -1
  419. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +366 -60
  420. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +63 -25
  421. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
  422. package/src/parsers/manifest/dash/common/parse_mpd.ts +28 -15
  423. package/src/parsers/manifest/dash/common/parse_periods.ts +12 -17
  424. package/src/parsers/manifest/dash/common/parse_representation_index.ts +50 -26
  425. package/src/parsers/manifest/dash/common/parse_representations.ts +39 -20
  426. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +4 -0
  427. package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +4 -0
  428. package/src/parsers/manifest/dash/node_parser_types.ts +2 -0
  429. package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +2 -0
  430. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +2 -0
  431. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +4 -0
  432. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +4 -0
  433. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +2 -0
  434. package/src/parsers/manifest/local/representation_index.ts +3 -3
  435. package/src/parsers/manifest/metaplaylist/representation_index.ts +2 -2
  436. package/src/parsers/manifest/smooth/representation_index.ts +23 -9
  437. package/src/parsers/manifest/types.ts +2 -0
  438. package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +1 -1
  439. package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +1 -1
  440. package/src/parsers/manifest/utils/index_helpers.ts +1 -1
  441. package/src/public_types.ts +79 -34
  442. package/src/transports/dash/init_segment_loader.ts +5 -0
  443. package/src/transports/dash/manifest_parser.ts +6 -0
  444. package/src/transports/dash/segment_loader.ts +1 -0
  445. package/src/transports/dash/text_loader.ts +2 -0
  446. package/src/transports/metaplaylist/manifest_loader.ts +1 -0
  447. package/src/transports/metaplaylist/pipelines.ts +4 -1
  448. package/src/transports/smooth/pipelines.ts +2 -0
  449. package/src/transports/smooth/segment_loader.ts +1 -0
  450. package/src/transports/types.ts +12 -0
  451. package/src/transports/utils/generate_manifest_loader.ts +3 -0
  452. package/src/utils/queue_microtask.ts +7 -0
  453. package/src/utils/request/fetch.ts +35 -8
  454. package/src/utils/request/xhr.ts +45 -14
  455. package/dist/_esm5.processed/compat/fullscreen.d.ts +0 -32
  456. package/dist/_esm5.processed/compat/fullscreen.js +0 -78
  457. package/dist/_esm5.processed/compat/is_offline.d.ts +0 -39
  458. package/dist/_esm5.processed/compat/is_offline.js +0 -43
  459. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +0 -258
  460. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +0 -989
  461. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +0 -75
  462. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +0 -133
  463. package/dist/_esm5.processed/features/list/bif_parser.d.ts +0 -23
  464. package/dist/_esm5.processed/features/list/bif_parser.js +0 -27
  465. package/dist/_esm5.processed/features/list/image_buffer.js +0 -25
  466. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +0 -38
  467. package/dist/_esm5.processed/transports/dash/image_pipelines.js +0 -129
  468. package/dist/_esm5.processed/utils/list_to_map.js +0 -28
  469. package/dist/_esm5.processed/utils/simple_set.d.ts +0 -51
  470. package/dist/_esm5.processed/utils/simple_set.js +0 -57
  471. package/dist/_esm5.processed/utils/uniq.d.ts +0 -36
  472. package/dist/_esm5.processed/utils/uniq.js +0 -43
  473. package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
  474. package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.js +0 -54
  475. package/dist/es2017/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
  476. package/dist/es2017/parsers/manifest/utils/is_segment_still_available.js +0 -51
  477. package/src/parsers/manifest/utils/is_segment_still_available.ts +0 -58
  478. package/src/typings/next-tick.d.ts +0 -23
  479. package/src/typings/object-assign.d.ts +0 -48
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { RequestError } from "../../errors";
17
+ import { NetworkErrorTypes, RequestError } from "../../errors";
18
18
  import isNonEmptyString from "../is_non_empty_string";
19
19
  import isNullOrUndefined from "../is_null_or_undefined";
20
20
  import getMonotonicTimeStamp from "../monotonic_timestamp";
@@ -30,14 +30,14 @@ const DEFAULT_RESPONSE_TYPE : XMLHttpRequestResponseType = "json";
30
30
  * Perform an HTTP request, according to the options given.
31
31
  *
32
32
  * Several errors can be rejected. Namely:
33
- * - RequestErrorTypes.TIMEOUT_ERROR: the request timeouted (took too long to
34
- * respond).
35
- * - RequestErrorTypes.PARSE_ERROR: the browser APIs used to parse the
33
+ * - NetworkErrorTypes.TIMEOUT: the request timed out (took too long)
34
+ *
35
+ * - NetworkErrorTypes.PARSE_ERROR: the browser APIs used to parse the
36
36
  * data failed.
37
- * - RequestErrorTypes.ERROR_HTTP_CODE: the HTTP code at the time of reception
37
+ * - NetworkErrorTypes.ERROR_HTTP_CODE: the HTTP code at the time of reception
38
38
  * was not in the 200-299 (included)
39
39
  * range.
40
- * - RequestErrorTypes.ERROR_EVENT: The XHR had an error event before the
40
+ * - NetworkErrorTypes.ERROR_EVENT: The XHR had an error event before the
41
41
  * response could be fetched.
42
42
  * @param {Object} options
43
43
  * @returns {Promise.<Object>}
@@ -70,6 +70,7 @@ export default function request<T>(
70
70
  responseType: isNullOrUndefined(options.responseType) ? DEFAULT_RESPONSE_TYPE :
71
71
  options.responseType,
72
72
  timeout: options.timeout,
73
+ connectionTimeout: options.connectionTimeout,
73
74
  };
74
75
 
75
76
  return new Promise((resolve, reject) => {
@@ -77,7 +78,8 @@ export default function request<T>(
77
78
  const { url,
78
79
  headers,
79
80
  responseType,
80
- timeout } = requestOptions;
81
+ timeout,
82
+ connectionTimeout } = requestOptions;
81
83
  const xhr = new XMLHttpRequest();
82
84
  xhr.open("GET", url, true);
83
85
 
@@ -93,9 +95,19 @@ export default function request<T>(
93
95
  // is more precise, it might also be more efficient.
94
96
  timeoutId = setTimeout(() => {
95
97
  clearCancellingProcess();
96
- reject(new RequestError(url, xhr.status, "TIMEOUT"));
98
+ reject(new RequestError(url, xhr.status, NetworkErrorTypes.TIMEOUT));
97
99
  }, timeout + 3000);
98
100
  }
101
+ let connectionTimeoutId: undefined | number;
102
+ if (connectionTimeout !== undefined) {
103
+ connectionTimeoutId = setTimeout(() => {
104
+ clearCancellingProcess();
105
+ if (xhr.readyState !== XMLHttpRequest.DONE) {
106
+ xhr.abort();
107
+ }
108
+ reject(new RequestError(url, xhr.status, NetworkErrorTypes.TIMEOUT));
109
+ }, connectionTimeout);
110
+ }
99
111
 
100
112
  xhr.responseType = responseType;
101
113
 
@@ -120,7 +132,7 @@ export default function request<T>(
120
132
  deregisterCancellationListener = cancelSignal
121
133
  .register(function abortRequest(err : CancellationError) {
122
134
  clearCancellingProcess();
123
- if (!isNullOrUndefined(xhr) && xhr.readyState !== 4) {
135
+ if (xhr.readyState !== XMLHttpRequest.DONE) {
124
136
  xhr.abort();
125
137
  }
126
138
  reject(err);
@@ -133,14 +145,23 @@ export default function request<T>(
133
145
 
134
146
  xhr.onerror = function onXHRError() {
135
147
  clearCancellingProcess();
136
- reject(new RequestError(url, xhr.status, "ERROR_EVENT"));
148
+ reject(new RequestError(url, xhr.status, NetworkErrorTypes.ERROR_EVENT));
137
149
  };
138
150
 
139
151
  xhr.ontimeout = function onXHRTimeout() {
140
152
  clearCancellingProcess();
141
- reject(new RequestError(url, xhr.status, "TIMEOUT"));
153
+ reject(new RequestError(url, xhr.status, NetworkErrorTypes.TIMEOUT));
142
154
  };
143
155
 
156
+
157
+ if (connectionTimeout !== undefined) {
158
+ xhr.onreadystatechange = function clearConnectionTimeout() {
159
+ if (xhr.readyState >= XMLHttpRequest.HEADERS_RECEIVED) {
160
+ clearTimeout(connectionTimeoutId);
161
+ }
162
+ };
163
+ }
164
+
144
165
  if (onProgress !== undefined) {
145
166
  xhr.onprogress = function onXHRProgress(event) {
146
167
  const currentTime = getMonotonicTimeStamp();
@@ -154,7 +175,7 @@ export default function request<T>(
154
175
  }
155
176
 
156
177
  xhr.onload = function onXHRLoad(event : ProgressEvent) {
157
- if (xhr.readyState === 4) {
178
+ if (xhr.readyState === XMLHttpRequest.DONE) {
158
179
  clearCancellingProcess();
159
180
  if (xhr.status >= 200 && xhr.status < 300) {
160
181
  const receivedTime = getMonotonicTimeStamp();
@@ -179,7 +200,7 @@ export default function request<T>(
179
200
  }
180
201
 
181
202
  if (isNullOrUndefined(responseData)) {
182
- reject(new RequestError(url, xhr.status, "PARSE_ERROR"));
203
+ reject(new RequestError(url, xhr.status, NetworkErrorTypes.PARSE_ERROR));
183
204
  return;
184
205
  }
185
206
 
@@ -193,7 +214,7 @@ export default function request<T>(
193
214
  responseData });
194
215
 
195
216
  } else {
196
- reject(new RequestError(url, xhr.status, "ERROR_HTTP_CODE"));
217
+ reject(new RequestError(url, xhr.status, NetworkErrorTypes.ERROR_HTTP_CODE));
197
218
  }
198
219
  }
199
220
  };
@@ -207,6 +228,10 @@ export default function request<T>(
207
228
  if (timeoutId !== undefined) {
208
229
  clearTimeout(timeoutId);
209
230
  }
231
+
232
+ if (connectionTimeoutId !== undefined) {
233
+ clearTimeout(connectionTimeoutId);
234
+ }
210
235
  if (deregisterCancellationListener !== null) {
211
236
  deregisterCancellationListener();
212
237
  }
@@ -241,6 +266,12 @@ export interface IRequestOptions<ResponseType> {
241
266
  * To not set or to set to `undefined` for disable.
242
267
  */
243
268
  timeout? : number | undefined;
269
+ /**
270
+ * Optional connection timeout, in milliseconds, after which the request is canceled
271
+ * if the responses headers has not being received.
272
+ * Do not set or set to "undefined" to disable it.
273
+ */
274
+ connectionTimeout? : number | undefined;
244
275
  /**
245
276
  * "Cancelation token" used to be able to cancel the request.
246
277
  * When this token is "cancelled", the request will be aborted and the Promise
@@ -1,32 +0,0 @@
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
- /**
17
- * Request fullScreen action on a given element.
18
- * @param {HTMLElement} elt
19
- */
20
- declare function requestFullscreen(element: HTMLMediaElement): void;
21
- /**
22
- * Exit fullscreen if an element is currently in fullscreen.
23
- */
24
- declare function exitFullscreen(): void;
25
- /**
26
- * Returns true if an element in the document is being displayed in fullscreen
27
- * mode;
28
- * otherwise it's false.
29
- * @returns {boolean}
30
- */
31
- declare function isFullscreen(): boolean;
32
- export { requestFullscreen, exitFullscreen, isFullscreen, };
@@ -1,78 +0,0 @@
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
- /**
17
- * Request fullScreen action on a given element.
18
- * @param {HTMLElement} elt
19
- */
20
- function requestFullscreen(element) {
21
- if (!isFullscreen()) {
22
- var elt = element;
23
- /* eslint-disable @typescript-eslint/unbound-method */
24
- if (typeof elt.requestFullscreen === "function") {
25
- /* eslint-enable @typescript-eslint/unbound-method */
26
- /* eslint-disable @typescript-eslint/no-floating-promises */
27
- elt.requestFullscreen();
28
- /* eslint-enable @typescript-eslint/no-floating-promises */
29
- }
30
- else if (typeof elt.msRequestFullscreen === "function") {
31
- elt.msRequestFullscreen();
32
- }
33
- else if (typeof elt.mozRequestFullScreen === "function") {
34
- elt.mozRequestFullScreen();
35
- }
36
- else if (typeof elt.webkitRequestFullscreen === "function") {
37
- elt.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
38
- }
39
- }
40
- }
41
- /**
42
- * Exit fullscreen if an element is currently in fullscreen.
43
- */
44
- function exitFullscreen() {
45
- if (isFullscreen()) {
46
- var doc = document;
47
- /* eslint-disable @typescript-eslint/unbound-method */
48
- if (typeof doc.exitFullscreen === "function") {
49
- /* eslint-enable @typescript-eslint/unbound-method */
50
- /* eslint-disable @typescript-eslint/no-floating-promises */
51
- doc.exitFullscreen();
52
- /* eslint-enable @typescript-eslint/no-floating-promises */
53
- }
54
- else if (typeof doc.msExitFullscreen === "function") {
55
- doc.msExitFullscreen();
56
- }
57
- else if (typeof doc.mozCancelFullScreen === "function") {
58
- doc.mozCancelFullScreen();
59
- }
60
- else if (typeof doc.webkitExitFullscreen === "function") {
61
- doc.webkitExitFullscreen();
62
- }
63
- }
64
- }
65
- /**
66
- * Returns true if an element in the document is being displayed in fullscreen
67
- * mode;
68
- * otherwise it's false.
69
- * @returns {boolean}
70
- */
71
- function isFullscreen() {
72
- var doc = document;
73
- return (doc.fullscreenElement != null ||
74
- doc.mozFullScreenElement != null ||
75
- doc.webkitFullscreenElement != null ||
76
- doc.msFullscreenElement != null);
77
- }
78
- export { requestFullscreen, exitFullscreen, isFullscreen, };
@@ -1,39 +0,0 @@
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
- /**
17
- * Some browsers have a builtin API to know if it's connected at least to a
18
- * LAN network, at most to the internet.
19
- *
20
- * /!\ This feature can be dangerous as you can both have false positives and
21
- * false negatives.
22
- *
23
- * False positives:
24
- * - you can still play local contents (on localhost) if isOffline == true
25
- * - on some browsers isOffline might be true even if we're connected to a LAN
26
- * or a router (it would mean we're just not able to connect to the
27
- * Internet). So we can eventually play LAN contents if isOffline == true
28
- *
29
- * False negatives:
30
- * - in some cases, we even might have isOffline at false when we do not have
31
- * any connection:
32
- * - in browsers that do not support the feature
33
- * - in browsers running in some virtualization softwares where the
34
- * network adapters are always connected.
35
- *
36
- * Use with these cases in mind.
37
- * @returns {Boolean}
38
- */
39
- export default function isOffline(): boolean;
@@ -1,43 +0,0 @@
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
- /**
17
- * Some browsers have a builtin API to know if it's connected at least to a
18
- * LAN network, at most to the internet.
19
- *
20
- * /!\ This feature can be dangerous as you can both have false positives and
21
- * false negatives.
22
- *
23
- * False positives:
24
- * - you can still play local contents (on localhost) if isOffline == true
25
- * - on some browsers isOffline might be true even if we're connected to a LAN
26
- * or a router (it would mean we're just not able to connect to the
27
- * Internet). So we can eventually play LAN contents if isOffline == true
28
- *
29
- * False negatives:
30
- * - in some cases, we even might have isOffline at false when we do not have
31
- * any connection:
32
- * - in browsers that do not support the feature
33
- * - in browsers running in some virtualization softwares where the
34
- * network adapters are always connected.
35
- *
36
- * Use with these cases in mind.
37
- * @returns {Boolean}
38
- */
39
- export default function isOffline() {
40
- /* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */
41
- return navigator.onLine === false;
42
- /* eslint-enable @typescript-eslint/no-unnecessary-boolean-literal-compare */
43
- }
@@ -1,258 +0,0 @@
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
- import { Adaptation, Period } from "../../../manifest";
17
- import { IAudioTrack, IAudioTrackPreference, IAvailableAudioTrack, IAvailableTextTrack, IAvailableVideoTrack, ITextTrack, ITextTrackPreference, IVideoTrack, IVideoTrackPreference } from "../../../public_types";
18
- import SharedReference from "../../../utils/reference";
19
- /**
20
- * Manage audio and text tracks for all active periods.
21
- * Choose the audio and text tracks for each period and record this choice.
22
- * @class TrackChoiceManager
23
- */
24
- export default class TrackChoiceManager {
25
- /**
26
- * Current Periods considered by the TrackChoiceManager.
27
- * Sorted by start time ascending
28
- */
29
- private _periods;
30
- /**
31
- * Array of preferred settings for audio tracks.
32
- * Sorted by order of preference descending.
33
- */
34
- private _preferredAudioTracks;
35
- /**
36
- * Array of preferred languages for text tracks.
37
- * Sorted by order of preference descending.
38
- */
39
- private _preferredTextTracks;
40
- /**
41
- * Array of preferred settings for video tracks.
42
- * Sorted by order of preference descending.
43
- */
44
- private _preferredVideoTracks;
45
- /** Memorization of the previously-chosen audio Adaptation for each Period. */
46
- private _audioChoiceMemory;
47
- /** Memorization of the previously-chosen text Adaptation for each Period. */
48
- private _textChoiceMemory;
49
- /** Memorization of the previously-chosen video Adaptation for each Period. */
50
- private _videoChoiceMemory;
51
- /** Tells if trick mode has been enabled by the RxPlayer user */
52
- trickModeTrackEnabled: boolean;
53
- constructor(args: {
54
- preferTrickModeTracks: boolean;
55
- });
56
- /**
57
- * Set the list of preferred audio tracks, in preference order.
58
- * @param {Array.<Object>} preferredAudioTracks
59
- * @param {boolean} shouldApply - `true` if those preferences should be
60
- * applied on the currently loaded Period. `false` if it should only
61
- * be applied to new content.
62
- */
63
- setPreferredAudioTracks(preferredAudioTracks: IAudioTrackPreference[], shouldApply: boolean): void;
64
- /**
65
- * Set the list of preferred text tracks, in preference order.
66
- * @param {Array.<Object>} preferredTextTracks
67
- * @param {boolean} shouldApply - `true` if those preferences should be
68
- * applied on the currently loaded Periods. `false` if it should only
69
- * be applied to new content.
70
- */
71
- setPreferredTextTracks(preferredTextTracks: ITextTrackPreference[], shouldApply: boolean): void;
72
- /**
73
- * Set the list of preferred text tracks, in preference order.
74
- * @param {Array.<Object>} preferredVideoTracks
75
- * @param {boolean} shouldApply - `true` if those preferences should be
76
- * applied on the currently loaded Period. `false` if it should only
77
- * be applied to new content.
78
- */
79
- setPreferredVideoTracks(preferredVideoTracks: IVideoTrackPreference[], shouldApply: boolean): void;
80
- /**
81
- * Add shared reference to choose Adaptation for new "audio" or "text" Period.
82
- * @param {string} bufferType - The concerned buffer type
83
- * @param {Period} period - The concerned Period.
84
- * @param {Object} adaptationRef
85
- */
86
- addPeriod(bufferType: "audio" | "text" | "video", period: Period, adaptationRef: SharedReference<Adaptation | null | undefined>): void;
87
- /**
88
- * Remove shared reference to choose an "audio", "video" or "text" Adaptation
89
- * for a Period.
90
- * @param {string} bufferType - The concerned buffer type
91
- * @param {Period} period - The concerned Period.
92
- */
93
- removePeriod(bufferType: "audio" | "text" | "video", period: Period): void;
94
- resetPeriods(): void;
95
- /**
96
- * Update the choice of all added Periods based on:
97
- * 1. What was the last chosen adaptation
98
- * 2. If not found, the preferences
99
- */
100
- update(): void;
101
- /**
102
- * Emit initial audio Adaptation through the given shared reference based on:
103
- * - the preferred audio tracks
104
- * - the last choice for this period, if one
105
- * @param {Period} period - The concerned Period.
106
- */
107
- setInitialAudioTrack(period: Period): void;
108
- /**
109
- * Emit initial text Adaptation through the given shared reference based on:
110
- * - the preferred text tracks
111
- * - the last choice for this period, if one
112
- * @param {Period} period - The concerned Period.
113
- */
114
- setInitialTextTrack(period: Period): void;
115
- /**
116
- * Emit initial video Adaptation through the given shared reference based on:
117
- * - the preferred video tracks
118
- * - the last choice for this period, if one
119
- * @param {Period} period - The concerned Period.
120
- */
121
- setInitialVideoTrack(period: Period): void;
122
- /**
123
- * Set audio track based on the ID of its adaptation for a given added Period.
124
- * @param {Period} period - The concerned Period.
125
- * @param {string} wantedId - adaptation id of the wanted track
126
- */
127
- setAudioTrackByID(period: Period, wantedId: string): void;
128
- /**
129
- * Set text track based on the ID of its adaptation for a given added Period.
130
- * @param {Period} period - The concerned Period.
131
- * @param {string} wantedId - adaptation id of the wanted track
132
- */
133
- setTextTrackByID(period: Period, wantedId: string): void;
134
- /**
135
- * Set video track based on the ID of its adaptation for a given added Period.
136
- * @param {Period} period - The concerned Period.
137
- * @param {string} wantedId - adaptation id of the wanted track
138
- *
139
- * @throws Error - Throws if the period given has not been added
140
- * @throws Error - Throws if the given id is not found in any video adaptation
141
- * of the given Period.
142
- */
143
- setVideoTrackByID(period: Period, wantedId: string): void;
144
- /**
145
- * Disable the current text track for a given period.
146
- *
147
- * @param {Period} period - The concerned Period.
148
- *
149
- * @throws Error - Throws if the period given has not been added
150
- */
151
- disableTextTrack(period: Period): void;
152
- /**
153
- * Disable the current video track for a given period.
154
- * @param {Object} period
155
- * @throws Error - Throws if the period given has not been added
156
- */
157
- disableVideoTrack(period: Period): void;
158
- disableVideoTrickModeTracks(): void;
159
- enableVideoTrickModeTracks(): void;
160
- /**
161
- * @returns {boolean}
162
- */
163
- isTrickModeEnabled(): boolean;
164
- /**
165
- * Returns an object describing the chosen audio track for the given audio
166
- * Period.
167
- *
168
- * Returns null is the the current audio track is disabled or not
169
- * set yet.
170
- *
171
- * @param {Period} period - The concerned Period.
172
- * @returns {Object|null} - The audio track chosen for this Period
173
- */
174
- getChosenAudioTrack(period: Period): IAudioTrack | null;
175
- /**
176
- * Returns an object describing the chosen text track for the given text
177
- * Period.
178
- *
179
- * Returns null is the the current text track is disabled or not
180
- * set yet.
181
- *
182
- * @param {Period} period - The concerned Period.
183
- * @returns {Object|null} - The text track chosen for this Period
184
- */
185
- getChosenTextTrack(period: Period): ITextTrack | null;
186
- /**
187
- * Returns an object describing the chosen video track for the given video
188
- * Period.
189
- *
190
- * Returns null is the the current video track is disabled or not
191
- * set yet.
192
- *
193
- * @param {Period} period - The concerned Period.
194
- * @returns {Object|null} - The video track chosen for this Period
195
- */
196
- getChosenVideoTrack(period: Period): IVideoTrack | null;
197
- /**
198
- * Returns all available audio tracks for a given Period, as an array of
199
- * objects.
200
- *
201
- * @returns {Array.<Object>}
202
- */
203
- getAvailableAudioTracks(period: Period): IAvailableAudioTrack[];
204
- /**
205
- * Returns all available text tracks for a given Period, as an array of
206
- * objects.
207
- *
208
- * @param {Period} period
209
- * @returns {Array.<Object>}
210
- */
211
- getAvailableTextTracks(period: Period): IAvailableTextTrack[];
212
- /**
213
- * Returns all available video tracks for a given Period, as an array of
214
- * objects.
215
- *
216
- * @returns {Array.<Object>}
217
- */
218
- getAvailableVideoTracks(period: Period): IAvailableVideoTrack[];
219
- /**
220
- * Reset all audio tracks choices to corresponds to the current preferences.
221
- */
222
- private _applyAudioPreferences;
223
- /**
224
- * Reset all text tracks choices to corresponds to the current preferences.
225
- */
226
- private _applyTextPreferences;
227
- /**
228
- * Reset all video tracks choices to corresponds to the current preferences.
229
- */
230
- private _applyVideoPreferences;
231
- /**
232
- * Choose again the best audio tracks for all current Periods.
233
- * This is based on two things:
234
- * 1. what was the track previously chosen for that Period (by checking
235
- * `this._audioChoiceMemory`).
236
- * 2. If no track were previously chosen or if it is not available anymore
237
- * we check the audio preferences.
238
- */
239
- private _resetChosenAudioTracks;
240
- /**
241
- * Choose again the best text tracks for all current Periods.
242
- * This is based on two things:
243
- * 1. what was the track previously chosen for that Period (by checking
244
- * `this._textChoiceMemory`).
245
- * 2. If no track were previously chosen or if it is not available anymore
246
- * we check the text preferences.
247
- */
248
- private _resetChosenTextTracks;
249
- /**
250
- * Choose again the best video tracks for all current Periods.
251
- * This is based on two things:
252
- * 1. what was the track previously chosen for that Period (by checking
253
- * `this._videoChoiceMemory`).
254
- * 2. If no track were previously chosen or if it is not available anymore
255
- * we check the video preferences.
256
- */
257
- private _resetChosenVideoTracks;
258
- }