rx-player 3.33.0 → 3.33.1

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 (819) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/VERSION +1 -1
  3. package/dist/_esm5.processed/core/api/public_api.js +2 -2
  4. package/dist/_esm5.processed/manifest/manifest.js +1 -0
  5. package/dist/_esm5.processed/utils/retry_promise_with_backoff.d.ts +11 -0
  6. package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +18 -4
  7. package/dist/mpd-parser.wasm +0 -0
  8. package/dist/rx-player.d.ts +1 -1
  9. package/dist/rx-player.js +24 -9
  10. package/dist/rx-player.min.d.ts +1 -1
  11. package/dist/rx-player.min.js +1 -1
  12. package/package.json +6 -6
  13. package/.editorconfig +0 -22
  14. package/.eslintrc.js +0 -406
  15. package/.github/workflows/checks.yml +0 -101
  16. package/.github/workflows/perfs.yml +0 -22
  17. package/.github/workflows/sonarcloud_analysis.yml +0 -20
  18. package/CONTRIBUTING.md +0 -272
  19. package/FILES.md +0 -283
  20. package/jest.config.js +0 -73
  21. package/manifest.mpd +0 -149
  22. package/scripts/README.md +0 -11
  23. package/scripts/build/constants.d.ts +0 -53
  24. package/scripts/build/generate_build.js +0 -190
  25. package/scripts/build/templates/experimental/features/index.d.ts +0 -16
  26. package/scripts/build/templates/experimental/features/index.js +0 -16
  27. package/scripts/build/templates/experimental/index.d.ts +0 -16
  28. package/scripts/build/templates/experimental/index.js +0 -16
  29. package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +0 -18
  30. package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +0 -18
  31. package/scripts/build/templates/experimental/tools/index.d.ts +0 -16
  32. package/scripts/build/templates/experimental/tools/index.js +0 -16
  33. package/scripts/build/templates/features/index.d.ts +0 -16
  34. package/scripts/build/templates/features/index.js +0 -16
  35. package/scripts/build/templates/logger/index.d.ts +0 -17
  36. package/scripts/build/templates/logger/index.js +0 -17
  37. package/scripts/build/templates/minimal/index.d.ts +0 -17
  38. package/scripts/build/templates/minimal/index.js +0 -17
  39. package/scripts/build/templates/tools/TextTrackRenderer.d.ts +0 -18
  40. package/scripts/build/templates/tools/TextTrackRenderer.js +0 -18
  41. package/scripts/build/templates/tools/index.d.ts +0 -16
  42. package/scripts/build/templates/tools/index.js +0 -16
  43. package/scripts/build/templates/tools/string-utils.d.ts +0 -18
  44. package/scripts/build/templates/tools/string-utils.js +0 -18
  45. package/scripts/build/templates/types/index.d.ts +0 -16
  46. package/scripts/build/templates/types/index.js +0 -15
  47. package/scripts/canal-release.patch +0 -316
  48. package/scripts/check_nodejs_import_compatibility.js +0 -60
  49. package/scripts/deploy_new_demo +0 -123
  50. package/scripts/fast_demo_build.js +0 -129
  51. package/scripts/generate_certificate +0 -19
  52. package/scripts/generate_demo_list.js +0 -105
  53. package/scripts/generate_documentation_list.js +0 -109
  54. package/scripts/generate_full_demo.js +0 -201
  55. package/scripts/generate_standalone_demo.js +0 -82
  56. package/scripts/launch_static_server.js +0 -163
  57. package/scripts/list-npm-scripts.js +0 -207
  58. package/scripts/make-dev-releases +0 -90
  59. package/scripts/report_build_sizes +0 -96
  60. package/scripts/run_standalone_demo.js +0 -27
  61. package/scripts/start_demo_web_server.js +0 -44
  62. package/scripts/update-version +0 -48
  63. package/scripts/update_gh-pages_demo +0 -132
  64. package/scripts/update_gh-pages_doc +0 -106
  65. package/scripts/utils/display_webpack_errors.js +0 -33
  66. package/scripts/utils/get_human_readable_hours.js +0 -14
  67. package/scripts/wasm-strip.js +0 -359
  68. package/sonar-project.properties +0 -7
  69. package/src/README.md +0 -136
  70. package/src/compat/README.md +0 -29
  71. package/src/compat/__tests__/add_text_track.test.ts +0 -176
  72. package/src/compat/__tests__/browser_compatibility_types.test.ts +0 -152
  73. package/src/compat/__tests__/browser_version.test.ts +0 -84
  74. package/src/compat/__tests__/can_patch_isobmff.test.ts +0 -50
  75. package/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts +0 -78
  76. package/src/compat/__tests__/can_reuse_media_keys.test.ts +0 -31
  77. package/src/compat/__tests__/change_source_buffer_type.test.ts +0 -60
  78. package/src/compat/__tests__/clear_element_src.test.ts +0 -252
  79. package/src/compat/__tests__/enable_audio_track.test.ts +0 -341
  80. package/src/compat/__tests__/fullscreen.test.ts +0 -286
  81. package/src/compat/__tests__/is_codec_supported.test.ts +0 -78
  82. package/src/compat/__tests__/is_offline.test.ts +0 -65
  83. package/src/compat/__tests__/is_seeking_approximate.test.ts +0 -48
  84. package/src/compat/__tests__/is_vtt_cue.test.ts +0 -71
  85. package/src/compat/__tests__/make_vtt_cue.test.ts +0 -97
  86. package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +0 -144
  87. package/src/compat/__tests__/remove_cue.test.ts +0 -229
  88. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +0 -128
  89. package/src/compat/__tests__/should_reload_media_source_on_decipherability_update.test.ts +0 -50
  90. package/src/compat/__tests__/should_renew_media_key_system_access.test.ts +0 -55
  91. package/src/compat/__tests__/should_unset_media_keys.test.ts +0 -53
  92. package/src/compat/__tests__/should_validate_metadata.test.ts +0 -53
  93. package/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +0 -121
  94. package/src/compat/__tests__/should_wait_for_have_enough_data.test.ts +0 -36
  95. package/src/compat/add_class_name.ts +0 -41
  96. package/src/compat/add_text_track.ts +0 -58
  97. package/src/compat/browser_compatibility_types.ts +0 -222
  98. package/src/compat/browser_detection.ts +0 -172
  99. package/src/compat/browser_version.ts +0 -44
  100. package/src/compat/can_patch_isobmff.ts +0 -30
  101. package/src/compat/can_rely_on_video_visibility_and_size.ts +0 -52
  102. package/src/compat/can_reuse_media_keys.ts +0 -20
  103. package/src/compat/change_source_buffer_type.ts +0 -66
  104. package/src/compat/clear_element_src.ts +0 -55
  105. package/src/compat/eme/close_session.ts +0 -111
  106. package/src/compat/eme/constants.ts +0 -21
  107. package/src/compat/eme/custom_key_system_access.ts +0 -67
  108. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +0 -186
  109. package/src/compat/eme/custom_media_keys/index.ts +0 -28
  110. package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +0 -88
  111. package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +0 -69
  112. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +0 -235
  113. package/src/compat/eme/custom_media_keys/types.ts +0 -67
  114. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +0 -308
  115. package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +0 -50
  116. package/src/compat/eme/eme-api-implementation.ts +0 -318
  117. package/src/compat/eme/generate_key_request.ts +0 -162
  118. package/src/compat/eme/get_init_data.ts +0 -159
  119. package/src/compat/eme/get_uuid_kid_from_keystatus_kid.ts +0 -37
  120. package/src/compat/eme/get_webkit_fairplay_initdata.ts +0 -75
  121. package/src/compat/eme/index.ts +0 -47
  122. package/src/compat/eme/load_session.ts +0 -67
  123. package/src/compat/enable_audio_track.ts +0 -33
  124. package/src/compat/event_listeners.ts +0 -566
  125. package/src/compat/fullscreen.ts +0 -87
  126. package/src/compat/get_start_date.ts +0 -48
  127. package/src/compat/has_issues_with_high_media_source_duration.ts +0 -27
  128. package/src/compat/index.ts +0 -87
  129. package/src/compat/is_codec_supported.ts +0 -40
  130. package/src/compat/is_debug_mode_enabled.ts +0 -12
  131. package/src/compat/is_node.ts +0 -18
  132. package/src/compat/is_offline.ts +0 -44
  133. package/src/compat/is_seeking_approximate.ts +0 -32
  134. package/src/compat/is_vtt_cue.ts +0 -30
  135. package/src/compat/make_vtt_cue.ts +0 -51
  136. package/src/compat/on_height_width_change.ts +0 -119
  137. package/src/compat/patch_webkit_source_buffer.ts +0 -89
  138. package/src/compat/remove_cue.ts +0 -64
  139. package/src/compat/should_favour_custom_safari_EME.ts +0 -34
  140. package/src/compat/should_prevent_seeking_at_0_initially.ts +0 -19
  141. package/src/compat/should_reload_media_source_on_decipherability_update.ts +0 -32
  142. package/src/compat/should_renew_media_key_system_access.ts +0 -26
  143. package/src/compat/should_unset_media_keys.ts +0 -27
  144. package/src/compat/should_validate_metadata.ts +0 -27
  145. package/src/compat/should_wait_for_data_before_loaded.ts +0 -35
  146. package/src/compat/should_wait_for_have_enough_data.ts +0 -17
  147. package/src/config.ts +0 -32
  148. package/src/core/README.md +0 -56
  149. package/src/core/adaptive/README.md +0 -147
  150. package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +0 -548
  151. package/src/core/adaptive/adaptive_representation_selector.ts +0 -916
  152. package/src/core/adaptive/buffer_based_chooser.ts +0 -264
  153. package/src/core/adaptive/guess_based_chooser.ts +0 -309
  154. package/src/core/adaptive/index.ts +0 -45
  155. package/src/core/adaptive/network_analyzer.ts +0 -419
  156. package/src/core/adaptive/utils/__tests__/bandwith_estimator.test.ts +0 -134
  157. package/src/core/adaptive/utils/__tests__/ewma.test.ts +0 -79
  158. package/src/core/adaptive/utils/__tests__/filter_by_bitrate.test.ts +0 -56
  159. package/src/core/adaptive/utils/__tests__/filter_by_width.test.ts +0 -60
  160. package/src/core/adaptive/utils/__tests__/get_buffer_levels.test.ts +0 -48
  161. package/src/core/adaptive/utils/__tests__/select_optimal_representation.test.ts +0 -243
  162. package/src/core/adaptive/utils/bandwidth_estimator.ts +0 -88
  163. package/src/core/adaptive/utils/ewma.ts +0 -59
  164. package/src/core/adaptive/utils/filter_by_bitrate.ts +0 -46
  165. package/src/core/adaptive/utils/filter_by_width.ts +0 -49
  166. package/src/core/adaptive/utils/get_buffer_levels.ts +0 -50
  167. package/src/core/adaptive/utils/last_estimate_storage.ts +0 -79
  168. package/src/core/adaptive/utils/pending_requests_store.ts +0 -147
  169. package/src/core/adaptive/utils/representation_score_calculator.ts +0 -168
  170. package/src/core/adaptive/utils/select_optimal_representation.ts +0 -54
  171. package/src/core/api/README.md +0 -36
  172. package/src/core/api/__tests__/option_utils.test.ts +0 -1668
  173. package/src/core/api/__tests__/public_api.test.ts +0 -857
  174. package/src/core/api/__tests__/utils.test.ts +0 -195
  175. package/src/core/api/debug/buffer_graph.ts +0 -244
  176. package/src/core/api/debug/buffer_size_graph.ts +0 -130
  177. package/src/core/api/debug/constants.ts +0 -2
  178. package/src/core/api/debug/index.ts +0 -3
  179. package/src/core/api/debug/modules/general_info.ts +0 -213
  180. package/src/core/api/debug/modules/segment_buffer_content.ts +0 -155
  181. package/src/core/api/debug/modules/segment_buffer_size.ts +0 -48
  182. package/src/core/api/debug/render.ts +0 -40
  183. package/src/core/api/debug/utils.ts +0 -103
  184. package/src/core/api/index.ts +0 -27
  185. package/src/core/api/option_utils.ts +0 -700
  186. package/src/core/api/playback_observer.ts +0 -994
  187. package/src/core/api/public_api.ts +0 -3247
  188. package/src/core/api/tracks_management/__tests__/media_element_track_choice_manager.test.ts +0 -184
  189. package/src/core/api/tracks_management/media_element_track_choice_manager.ts +0 -975
  190. package/src/core/api/tracks_management/track_choice_manager.ts +0 -1280
  191. package/src/core/api/utils.ts +0 -216
  192. package/src/core/decrypt/README.md +0 -22
  193. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +0 -422
  194. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +0 -677
  195. package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +0 -528
  196. package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +0 -343
  197. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +0 -264
  198. package/src/core/decrypt/__tests__/__global__/utils.ts +0 -491
  199. package/src/core/decrypt/attach_media_keys.ts +0 -121
  200. package/src/core/decrypt/clear_on_stop.ts +0 -47
  201. package/src/core/decrypt/content_decryptor.ts +0 -1246
  202. package/src/core/decrypt/create_or_load_session.ts +0 -133
  203. package/src/core/decrypt/create_session.ts +0 -214
  204. package/src/core/decrypt/dispose_decryption_resources.ts +0 -54
  205. package/src/core/decrypt/find_key_system.ts +0 -376
  206. package/src/core/decrypt/get_key_system_configuration.ts +0 -51
  207. package/src/core/decrypt/get_media_keys.ts +0 -147
  208. package/src/core/decrypt/index.ts +0 -36
  209. package/src/core/decrypt/init_media_keys.ts +0 -60
  210. package/src/core/decrypt/session_events_listener.ts +0 -386
  211. package/src/core/decrypt/set_server_certificate.ts +0 -105
  212. package/src/core/decrypt/types.ts +0 -404
  213. package/src/core/decrypt/utils/__tests__/are_init_values_compatible.test.ts +0 -261
  214. package/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts +0 -158
  215. package/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +0 -133
  216. package/src/core/decrypt/utils/are_init_values_compatible.ts +0 -140
  217. package/src/core/decrypt/utils/check_key_statuses.ts +0 -193
  218. package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +0 -45
  219. package/src/core/decrypt/utils/clean_old_stored_persistent_info.ts +0 -48
  220. package/src/core/decrypt/utils/get_drm_system_id.ts +0 -42
  221. package/src/core/decrypt/utils/init_data_values_container.ts +0 -119
  222. package/src/core/decrypt/utils/is_session_usable.ts +0 -62
  223. package/src/core/decrypt/utils/key_id_comparison.ts +0 -57
  224. package/src/core/decrypt/utils/key_session_record.ts +0 -174
  225. package/src/core/decrypt/utils/loaded_sessions_store.ts +0 -505
  226. package/src/core/decrypt/utils/media_keys_infos_store.ts +0 -85
  227. package/src/core/decrypt/utils/persistent_sessions_store.ts +0 -358
  228. package/src/core/decrypt/utils/serializable_bytes.ts +0 -59
  229. package/src/core/decrypt/utils/server_certificate_store.ts +0 -133
  230. package/src/core/fetchers/README.md +0 -84
  231. package/src/core/fetchers/cdn_prioritizer.ts +0 -207
  232. package/src/core/fetchers/index.ts +0 -38
  233. package/src/core/fetchers/manifest/index.ts +0 -28
  234. package/src/core/fetchers/manifest/manifest_fetcher.ts +0 -798
  235. package/src/core/fetchers/segment/__tests__/task_prioritizer.test.ts +0 -763
  236. package/src/core/fetchers/segment/index.ts +0 -28
  237. package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +0 -113
  238. package/src/core/fetchers/segment/segment_fetcher.ts +0 -482
  239. package/src/core/fetchers/segment/segment_fetcher_creator.ts +0 -129
  240. package/src/core/fetchers/segment/task_prioritizer.ts +0 -455
  241. package/src/core/fetchers/utils/error_selector.ts +0 -38
  242. package/src/core/fetchers/utils/schedule_request.ts +0 -493
  243. package/src/core/init/README.md +0 -81
  244. package/src/core/init/directfile_content_initializer.ts +0 -310
  245. package/src/core/init/index.ts +0 -22
  246. package/src/core/init/media_source_content_initializer.ts +0 -878
  247. package/src/core/init/types.ts +0 -266
  248. package/src/core/init/utils/__tests__/are_same_stream_events.test.ts +0 -84
  249. package/src/core/init/utils/__tests__/refresh_scheduled_events_list.test.ts +0 -94
  250. package/src/core/init/utils/content_time_boundaries_observer.ts +0 -646
  251. package/src/core/init/utils/create_media_source.ts +0 -139
  252. package/src/core/init/utils/create_stream_playback_observer.ts +0 -132
  253. package/src/core/init/utils/end_of_stream.ts +0 -108
  254. package/src/core/init/utils/get_initial_time.ts +0 -165
  255. package/src/core/init/utils/get_loaded_reference.ts +0 -82
  256. package/src/core/init/utils/initial_seek_and_play.ts +0 -237
  257. package/src/core/init/utils/initialize_content_decryption.ts +0 -172
  258. package/src/core/init/utils/media_source_duration_updater.ts +0 -349
  259. package/src/core/init/utils/rebuffering_controller.ts +0 -642
  260. package/src/core/init/utils/stream_events_emitter/are_same_stream_events.ts +0 -42
  261. package/src/core/init/utils/stream_events_emitter/index.ts +0 -22
  262. package/src/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.ts +0 -74
  263. package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +0 -252
  264. package/src/core/init/utils/stream_events_emitter/types.ts +0 -46
  265. package/src/core/init/utils/throw_on_media_error.ts +0 -74
  266. package/src/core/segment_buffers/README.md +0 -219
  267. package/src/core/segment_buffers/garbage_collector.ts +0 -177
  268. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +0 -650
  269. package/src/core/segment_buffers/implementations/audio_video/index.ts +0 -18
  270. package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +0 -152
  271. package/src/core/segment_buffers/implementations/image/index.ts +0 -18
  272. package/src/core/segment_buffers/implementations/index.ts +0 -20
  273. package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +0 -343
  274. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +0 -527
  275. package/src/core/segment_buffers/implementations/text/html/index.ts +0 -24
  276. package/src/core/segment_buffers/implementations/text/html/parsers.ts +0 -49
  277. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +0 -391
  278. package/src/core/segment_buffers/implementations/text/html/types.ts +0 -23
  279. package/src/core/segment_buffers/implementations/text/html/update_proportional_elements.ts +0 -93
  280. package/src/core/segment_buffers/implementations/text/html/utils.ts +0 -139
  281. package/src/core/segment_buffers/implementations/text/native/index.ts +0 -19
  282. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +0 -340
  283. package/src/core/segment_buffers/implementations/text/native/parsers.ts +0 -47
  284. package/src/core/segment_buffers/implementations/types.ts +0 -386
  285. package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +0 -80
  286. package/src/core/segment_buffers/index.ts +0 -67
  287. package/src/core/segment_buffers/inventory/buffered_history.ts +0 -131
  288. package/src/core/segment_buffers/inventory/index.ts +0 -30
  289. package/src/core/segment_buffers/inventory/segment_inventory.ts +0 -1111
  290. package/src/core/segment_buffers/inventory/types.ts +0 -35
  291. package/src/core/segment_buffers/segment_buffers_store.ts +0 -383
  292. package/src/core/stream/README.md +0 -59
  293. package/src/core/stream/adaptation/adaptation_stream.ts +0 -378
  294. package/src/core/stream/adaptation/index.ts +0 -20
  295. package/src/core/stream/adaptation/types.ts +0 -199
  296. package/src/core/stream/adaptation/utils/create_representation_estimator.ts +0 -114
  297. package/src/core/stream/index.ts +0 -38
  298. package/src/core/stream/orchestrator/README.md +0 -349
  299. package/src/core/stream/orchestrator/get_time_ranges_for_content.ts +0 -70
  300. package/src/core/stream/orchestrator/index.ts +0 -30
  301. package/src/core/stream/orchestrator/stream_orchestrator.ts +0 -664
  302. package/src/core/stream/period/index.ts +0 -20
  303. package/src/core/stream/period/period_stream.ts +0 -469
  304. package/src/core/stream/period/types.ts +0 -132
  305. package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +0 -287
  306. package/src/core/stream/representation/README.md +0 -16
  307. package/src/core/stream/representation/index.ts +0 -20
  308. package/src/core/stream/representation/representation_stream.ts +0 -474
  309. package/src/core/stream/representation/types.ts +0 -292
  310. package/src/core/stream/representation/utils/append_segment_to_buffer.ts +0 -77
  311. package/src/core/stream/representation/utils/check_for_discontinuity.ts +0 -305
  312. package/src/core/stream/representation/utils/downloading_queue.ts +0 -603
  313. package/src/core/stream/representation/utils/force_garbage_collection.ts +0 -113
  314. package/src/core/stream/representation/utils/get_buffer_status.ts +0 -322
  315. package/src/core/stream/representation/utils/get_needed_segments.ts +0 -617
  316. package/src/core/stream/representation/utils/get_segment_priority.ts +0 -43
  317. package/src/core/stream/representation/utils/push_init_segment.ts +0 -85
  318. package/src/core/stream/representation/utils/push_media_segment.ts +0 -113
  319. package/src/default_config.ts +0 -1293
  320. package/src/errors/README.md +0 -6
  321. package/src/errors/__tests__/assertion_error.test.ts +0 -26
  322. package/src/errors/__tests__/encrypted_media_error.test.ts +0 -45
  323. package/src/errors/__tests__/error_message.test.ts +0 -23
  324. package/src/errors/__tests__/format_error.test.ts +0 -62
  325. package/src/errors/__tests__/is_known_error.test.ts +0 -65
  326. package/src/errors/__tests__/media_error.test.ts +0 -55
  327. package/src/errors/__tests__/network_error.test.ts +0 -84
  328. package/src/errors/__tests__/other_error.test.ts +0 -53
  329. package/src/errors/__tests__/request_error.test.ts +0 -45
  330. package/src/errors/assertion_error.ts +0 -40
  331. package/src/errors/custom_loader_error.ts +0 -57
  332. package/src/errors/encrypted_media_error.ts +0 -71
  333. package/src/errors/error_codes.ts +0 -149
  334. package/src/errors/error_message.ts +0 -30
  335. package/src/errors/format_error.ts +0 -39
  336. package/src/errors/index.ts +0 -52
  337. package/src/errors/is_known_error.ts +0 -35
  338. package/src/errors/media_error.ts +0 -118
  339. package/src/errors/network_error.ts +0 -74
  340. package/src/errors/other_error.ts +0 -50
  341. package/src/errors/request_error.ts +0 -76
  342. package/src/experimental/README.md +0 -16
  343. package/src/experimental/features/__tests__/dash_wasm.test.ts +0 -44
  344. package/src/experimental/features/__tests__/debug_element.test.ts +0 -12
  345. package/src/experimental/features/__tests__/index.test.ts +0 -19
  346. package/src/experimental/features/__tests__/local.test.ts +0 -35
  347. package/src/experimental/features/__tests__/metaplaylist.test.ts +0 -35
  348. package/src/experimental/features/dash_wasm.ts +0 -41
  349. package/src/experimental/features/debug_element.ts +0 -13
  350. package/src/experimental/features/index.ts +0 -20
  351. package/src/experimental/features/local.ts +0 -28
  352. package/src/experimental/features/metaplaylist.ts +0 -28
  353. package/src/experimental/index.ts +0 -5
  354. package/src/experimental/tools/VideoThumbnailLoader/features/dash.ts +0 -23
  355. package/src/experimental/tools/VideoThumbnailLoader/features/metaplaylist.ts +0 -23
  356. package/src/experimental/tools/VideoThumbnailLoader/index.ts +0 -25
  357. package/src/experimental/tools/VideoThumbnailLoader/load_and_push_segment.ts +0 -77
  358. package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +0 -75
  359. package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +0 -54
  360. package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -39
  361. package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +0 -423
  362. package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.ts +0 -34
  363. package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +0 -141
  364. package/src/experimental/tools/createMetaplaylist/index.ts +0 -72
  365. package/src/experimental/tools/index.ts +0 -27
  366. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts +0 -37
  367. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +0 -140
  368. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +0 -153
  369. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +0 -405
  370. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts +0 -136
  371. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +0 -294
  372. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +0 -189
  373. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/utils.test.ts +0 -361
  374. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +0 -184
  375. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +0 -136
  376. package/src/experimental/tools/mediaCapabilitiesProber/capabilities.ts +0 -169
  377. package/src/experimental/tools/mediaCapabilitiesProber/index.ts +0 -18
  378. package/src/experimental/tools/mediaCapabilitiesProber/log.ts +0 -21
  379. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +0 -67
  380. package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +0 -89
  381. package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +0 -100
  382. package/src/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.ts +0 -66
  383. package/src/experimental/tools/mediaCapabilitiesProber/probers/index.ts +0 -44
  384. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +0 -66
  385. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.ts +0 -100
  386. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +0 -105
  387. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +0 -54
  388. package/src/experimental/tools/mediaCapabilitiesProber/types.ts +0 -75
  389. package/src/experimental/tools/mediaCapabilitiesProber/utils.ts +0 -107
  390. package/src/experimental/tools/parseBIFThumbnails.ts +0 -39
  391. package/src/features/README.md +0 -11
  392. package/src/features/__tests__/add_features.test.ts +0 -69
  393. package/src/features/__tests__/initialize_features.test.ts +0 -674
  394. package/src/features/add_features.ts +0 -37
  395. package/src/features/features_object.ts +0 -37
  396. package/src/features/index.ts +0 -40
  397. package/src/features/initialize_features.ts +0 -136
  398. package/src/features/list/__tests__/bif_parser.test.ts +0 -30
  399. package/src/features/list/__tests__/dash.test.ts +0 -41
  400. package/src/features/list/__tests__/directfile.test.ts +0 -35
  401. package/src/features/list/__tests__/eme.test.ts +0 -28
  402. package/src/features/list/__tests__/html_sami_parser.test.ts +0 -33
  403. package/src/features/list/__tests__/html_srt_parser.test.ts +0 -33
  404. package/src/features/list/__tests__/html_text_buffer.test.ts +0 -29
  405. package/src/features/list/__tests__/html_ttml_parser.test.ts +0 -33
  406. package/src/features/list/__tests__/html_vtt_parser.test.ts +0 -33
  407. package/src/features/list/__tests__/image_buffer.test.ts +0 -28
  408. package/src/features/list/__tests__/index.test.ts +0 -55
  409. package/src/features/list/__tests__/native_sami_parser.test.ts +0 -33
  410. package/src/features/list/__tests__/native_srt_parser.test.ts +0 -33
  411. package/src/features/list/__tests__/native_text_buffer.test.ts +0 -29
  412. package/src/features/list/__tests__/native_ttml_parser.test.ts +0 -33
  413. package/src/features/list/__tests__/native_vtt_parser.test.ts +0 -33
  414. package/src/features/list/__tests__/smooth.test.ts +0 -36
  415. package/src/features/list/bif_parser.ts +0 -31
  416. package/src/features/list/dash.ts +0 -36
  417. package/src/features/list/directfile.ts +0 -35
  418. package/src/features/list/eme.ts +0 -29
  419. package/src/features/list/html_sami_parser.ts +0 -31
  420. package/src/features/list/html_srt_parser.ts +0 -31
  421. package/src/features/list/html_text_buffer.ts +0 -29
  422. package/src/features/list/html_ttml_parser.ts +0 -31
  423. package/src/features/list/html_vtt_parser.ts +0 -31
  424. package/src/features/list/image_buffer.ts +0 -29
  425. package/src/features/list/index.ts +0 -32
  426. package/src/features/list/native_sami_parser.ts +0 -32
  427. package/src/features/list/native_srt_parser.ts +0 -32
  428. package/src/features/list/native_text_buffer.ts +0 -30
  429. package/src/features/list/native_ttml_parser.ts +0 -32
  430. package/src/features/list/native_vtt_parser.ts +0 -32
  431. package/src/features/list/smooth.ts +0 -32
  432. package/src/features/types.ts +0 -183
  433. package/src/index.ts +0 -38
  434. package/src/log.ts +0 -22
  435. package/src/manifest/README.md +0 -55
  436. package/src/manifest/__tests__/adaptation.test.ts +0 -485
  437. package/src/manifest/__tests__/manifest.test.ts +0 -428
  438. package/src/manifest/__tests__/period.test.ts +0 -769
  439. package/src/manifest/__tests__/representation.test.ts +0 -297
  440. package/src/manifest/__tests__/update_period_in_place.test.ts +0 -1074
  441. package/src/manifest/__tests__/update_periods.test.ts +0 -845
  442. package/src/manifest/adaptation.ts +0 -294
  443. package/src/manifest/index.ts +0 -67
  444. package/src/manifest/manifest.ts +0 -811
  445. package/src/manifest/period.ts +0 -211
  446. package/src/manifest/representation.ts +0 -451
  447. package/src/manifest/representation_index/__tests__/static.test.ts +0 -74
  448. package/src/manifest/representation_index/index.ts +0 -31
  449. package/src/manifest/representation_index/static.ts +0 -158
  450. package/src/manifest/representation_index/types.ts +0 -433
  451. package/src/manifest/types.ts +0 -33
  452. package/src/manifest/update_period_in_place.ts +0 -142
  453. package/src/manifest/update_periods.ts +0 -201
  454. package/src/manifest/utils.ts +0 -60
  455. package/src/minimal.ts +0 -34
  456. package/src/parsers/README.md +0 -12
  457. package/src/parsers/containers/isobmff/constants.ts +0 -24
  458. package/src/parsers/containers/isobmff/create_box.ts +0 -81
  459. package/src/parsers/containers/isobmff/drm/index.ts +0 -17
  460. package/src/parsers/containers/isobmff/drm/playready.ts +0 -45
  461. package/src/parsers/containers/isobmff/get_box.ts +0 -278
  462. package/src/parsers/containers/isobmff/index.ts +0 -51
  463. package/src/parsers/containers/isobmff/read.ts +0 -105
  464. package/src/parsers/containers/isobmff/take_pssh_out.ts +0 -101
  465. package/src/parsers/containers/isobmff/utils.ts +0 -555
  466. package/src/parsers/containers/matroska/index.ts +0 -21
  467. package/src/parsers/containers/matroska/utils.ts +0 -313
  468. package/src/parsers/images/bif.ts +0 -128
  469. package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +0 -65
  470. package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +0 -37
  471. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +0 -162
  472. package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +0 -65
  473. package/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +0 -165
  474. package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +0 -118
  475. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +0 -290
  476. package/src/parsers/manifest/dash/common/__tests__/parse_availability_start_time.test.ts +0 -63
  477. package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +0 -55
  478. package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +0 -32
  479. package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +0 -87
  480. package/src/parsers/manifest/dash/common/get_clock_offset.ts +0 -41
  481. package/src/parsers/manifest/dash/common/get_hdr_information.ts +0 -94
  482. package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +0 -46
  483. package/src/parsers/manifest/dash/common/get_minimum_and_maximum_positions.ts +0 -39
  484. package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +0 -91
  485. package/src/parsers/manifest/dash/common/index.ts +0 -40
  486. package/src/parsers/manifest/dash/common/indexes/__tests__/tokens.test.ts +0 -60
  487. package/src/parsers/manifest/dash/common/indexes/base.ts +0 -444
  488. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +0 -55
  489. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +0 -148
  490. package/src/parsers/manifest/dash/common/indexes/index.ts +0 -39
  491. package/src/parsers/manifest/dash/common/indexes/list.ts +0 -338
  492. package/src/parsers/manifest/dash/common/indexes/template.ts +0 -652
  493. package/src/parsers/manifest/dash/common/indexes/timeline/__tests__/parse_s_element.test.ts +0 -115
  494. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +0 -54
  495. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.ts +0 -102
  496. package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +0 -66
  497. package/src/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.ts +0 -153
  498. package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +0 -21
  499. package/src/parsers/manifest/dash/common/indexes/timeline/parse_s_element.ts +0 -72
  500. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +0 -1049
  501. package/src/parsers/manifest/dash/common/indexes/tokens.ts +0 -127
  502. package/src/parsers/manifest/dash/common/indexes/utils.ts +0 -32
  503. package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +0 -142
  504. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +0 -165
  505. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +0 -569
  506. package/src/parsers/manifest/dash/common/parse_availability_start_time.ts +0 -35
  507. package/src/parsers/manifest/dash/common/parse_mpd.ts +0 -399
  508. package/src/parsers/manifest/dash/common/parse_periods.ts +0 -363
  509. package/src/parsers/manifest/dash/common/parse_representation_index.ts +0 -199
  510. package/src/parsers/manifest/dash/common/parse_representations.ts +0 -352
  511. package/src/parsers/manifest/dash/common/resolve_base_urls.ts +0 -58
  512. package/src/parsers/manifest/dash/index.ts +0 -22
  513. package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +0 -45
  514. package/src/parsers/manifest/dash/js-parser/index.ts +0 -18
  515. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +0 -381
  516. package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +0 -35
  517. package/src/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.ts +0 -49
  518. package/src/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.ts +0 -94
  519. package/src/parsers/manifest/dash/js-parser/node_parsers/EventStream.ts +0 -117
  520. package/src/parsers/manifest/dash/js-parser/node_parsers/Initialization.ts +0 -48
  521. package/src/parsers/manifest/dash/js-parser/node_parsers/MPD.ts +0 -180
  522. package/src/parsers/manifest/dash/js-parser/node_parsers/Period.ts +0 -152
  523. package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +0 -234
  524. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.ts +0 -112
  525. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentList.ts +0 -50
  526. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +0 -98
  527. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.ts +0 -35
  528. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.ts +0 -63
  529. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/AdaptationSet.test.ts +0 -407
  530. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentComponent.test.ts +0 -67
  531. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts +0 -223
  532. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/Initialization.test.ts +0 -139
  533. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts +0 -119
  534. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts +0 -205
  535. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/utils.test.ts +0 -218
  536. package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +0 -384
  537. package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +0 -129
  538. package/src/parsers/manifest/dash/node_parser_types.ts +0 -431
  539. package/src/parsers/manifest/dash/parsers_types.ts +0 -91
  540. package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +0 -25
  541. package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +0 -16
  542. package/src/parsers/manifest/dash/wasm-parser/README.md +0 -267
  543. package/src/parsers/manifest/dash/wasm-parser/index.ts +0 -21
  544. package/src/parsers/manifest/dash/wasm-parser/rs/errors.rs +0 -28
  545. package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +0 -373
  546. package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +0 -85
  547. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +0 -414
  548. package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +0 -472
  549. package/src/parsers/manifest/dash/wasm-parser/rs/processor/s_element.rs +0 -72
  550. package/src/parsers/manifest/dash/wasm-parser/rs/reader.rs +0 -17
  551. package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +0 -147
  552. package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +0 -217
  553. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +0 -477
  554. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +0 -343
  555. package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +0 -38
  556. package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.ts +0 -53
  557. package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.ts +0 -62
  558. package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +0 -144
  559. package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +0 -183
  560. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +0 -180
  561. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +0 -215
  562. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.ts +0 -44
  563. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.ts +0 -115
  564. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +0 -61
  565. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.ts +0 -133
  566. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.ts +0 -70
  567. package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +0 -66
  568. package/src/parsers/manifest/dash/wasm-parser/ts/generators/index.ts +0 -17
  569. package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +0 -66
  570. package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -80
  571. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +0 -298
  572. package/src/parsers/manifest/dash/wasm-parser/ts/utils.ts +0 -47
  573. package/src/parsers/manifest/index.ts +0 -17
  574. package/src/parsers/manifest/local/index.ts +0 -25
  575. package/src/parsers/manifest/local/parse_local_manifest.ts +0 -164
  576. package/src/parsers/manifest/local/representation_index.ts +0 -246
  577. package/src/parsers/manifest/local/types.ts +0 -291
  578. package/src/parsers/manifest/metaplaylist/index.ts +0 -28
  579. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +0 -335
  580. package/src/parsers/manifest/metaplaylist/representation_index.ts +0 -251
  581. package/src/parsers/manifest/smooth/create_parser.ts +0 -699
  582. package/src/parsers/manifest/smooth/get_codecs.ts +0 -55
  583. package/src/parsers/manifest/smooth/index.ts +0 -26
  584. package/src/parsers/manifest/smooth/parse_C_nodes.ts +0 -69
  585. package/src/parsers/manifest/smooth/parse_protection_node.ts +0 -72
  586. package/src/parsers/manifest/smooth/representation_index.ts +0 -704
  587. package/src/parsers/manifest/smooth/utils/add_segment_infos.ts +0 -77
  588. package/src/parsers/manifest/smooth/utils/parseBoolean.ts +0 -31
  589. package/src/parsers/manifest/smooth/utils/reduceChildren.ts +0 -36
  590. package/src/parsers/manifest/smooth/utils/tokens.ts +0 -46
  591. package/src/parsers/manifest/types.ts +0 -395
  592. package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +0 -161
  593. package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +0 -161
  594. package/src/parsers/manifest/utils/__tests__/index_helpers.test.ts +0 -55
  595. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +0 -546
  596. package/src/parsers/manifest/utils/check_manifest_ids.ts +0 -83
  597. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +0 -74
  598. package/src/parsers/manifest/utils/get_first_time_from_adaptation.ts +0 -48
  599. package/src/parsers/manifest/utils/get_last_time_from_adaptation.ts +0 -50
  600. package/src/parsers/manifest/utils/get_maximum_positions.ts +0 -87
  601. package/src/parsers/manifest/utils/get_minimum_position.ts +0 -80
  602. package/src/parsers/manifest/utils/index_helpers.ts +0 -204
  603. package/src/parsers/manifest/utils/update_segment_timeline.ts +0 -141
  604. package/src/parsers/texttracks/index.ts +0 -21
  605. package/src/parsers/texttracks/sami/html.ts +0 -219
  606. package/src/parsers/texttracks/sami/native.ts +0 -192
  607. package/src/parsers/texttracks/srt/__tests__/find_end_of_cue_block.test.ts +0 -99
  608. package/src/parsers/texttracks/srt/__tests__/get_cue_blocks.test.ts +0 -119
  609. package/src/parsers/texttracks/srt/__tests__/parse_cue.test.ts +0 -123
  610. package/src/parsers/texttracks/srt/__tests__/parse_timestamp.test.ts +0 -36
  611. package/src/parsers/texttracks/srt/find_end_of_cue_block.ts +0 -46
  612. package/src/parsers/texttracks/srt/get_cue_blocks.ts +0 -49
  613. package/src/parsers/texttracks/srt/html.ts +0 -182
  614. package/src/parsers/texttracks/srt/native.ts +0 -74
  615. package/src/parsers/texttracks/srt/parse_cue.ts +0 -76
  616. package/src/parsers/texttracks/srt/parse_timestamp.ts +0 -37
  617. package/src/parsers/texttracks/ttml/__tests__/resolve_styles_inheritance.test.ts +0 -248
  618. package/src/parsers/texttracks/ttml/get_parameters.ts +0 -106
  619. package/src/parsers/texttracks/ttml/get_styling.ts +0 -146
  620. package/src/parsers/texttracks/ttml/get_time_delimiters.ts +0 -49
  621. package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.test.ts +0 -190
  622. package/src/parsers/texttracks/ttml/html/__tests__/generate_css_test_outline.test.ts +0 -32
  623. package/src/parsers/texttracks/ttml/html/__tests__/ttml_color_to_css_color.test.ts +0 -62
  624. package/src/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.ts +0 -67
  625. package/src/parsers/texttracks/ttml/html/apply_extent.ts +0 -65
  626. package/src/parsers/texttracks/ttml/html/apply_font_size.ts +0 -62
  627. package/src/parsers/texttracks/ttml/html/apply_line_height.ts +0 -50
  628. package/src/parsers/texttracks/ttml/html/apply_origin.ts +0 -64
  629. package/src/parsers/texttracks/ttml/html/apply_padding.ts +0 -141
  630. package/src/parsers/texttracks/ttml/html/create_element.ts +0 -549
  631. package/src/parsers/texttracks/ttml/html/generate_css_test_outline.ts +0 -46
  632. package/src/parsers/texttracks/ttml/html/index.ts +0 -23
  633. package/src/parsers/texttracks/ttml/html/parse_cue.ts +0 -65
  634. package/src/parsers/texttracks/ttml/html/parse_ttml_to_div.ts +0 -58
  635. package/src/parsers/texttracks/ttml/html/ttml_color_to_css_color.ts +0 -68
  636. package/src/parsers/texttracks/ttml/native/index.ts +0 -23
  637. package/src/parsers/texttracks/ttml/native/parse_cue.ts +0 -245
  638. package/src/parsers/texttracks/ttml/native/parse_ttml_to_vtt.ts +0 -39
  639. package/src/parsers/texttracks/ttml/parse_ttml.ts +0 -206
  640. package/src/parsers/texttracks/ttml/regexps.ts +0 -65
  641. package/src/parsers/texttracks/ttml/resolve_styles_inheritance.ts +0 -84
  642. package/src/parsers/texttracks/ttml/time_parsing.ts +0 -156
  643. package/src/parsers/texttracks/ttml/xml_utils.ts +0 -166
  644. package/src/parsers/texttracks/types.ts +0 -34
  645. package/src/parsers/texttracks/webvtt/__tests__/get_cue_blocks.test.ts +0 -218
  646. package/src/parsers/texttracks/webvtt/__tests__/get_style_blocks.test.ts +0 -65
  647. package/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +0 -249
  648. package/src/parsers/texttracks/webvtt/__tests__/parse_timestamp.test.ts +0 -39
  649. package/src/parsers/texttracks/webvtt/__tests__/utils.test.ts +0 -401
  650. package/src/parsers/texttracks/webvtt/get_cue_blocks.ts +0 -51
  651. package/src/parsers/texttracks/webvtt/get_style_blocks.ts +0 -56
  652. package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +0 -106
  653. package/src/parsers/texttracks/webvtt/html/__tests__/create_default_style_elements.test.ts +0 -44
  654. package/src/parsers/texttracks/webvtt/html/__tests__/create_style_attribute.test.ts +0 -139
  655. package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +0 -140
  656. package/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts +0 -345
  657. package/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +0 -181
  658. package/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +0 -234
  659. package/src/parsers/texttracks/webvtt/html/convert_payload_to_html.ts +0 -46
  660. package/src/parsers/texttracks/webvtt/html/create_default_style_elements.ts +0 -26
  661. package/src/parsers/texttracks/webvtt/html/create_style_attribute.ts +0 -222
  662. package/src/parsers/texttracks/webvtt/html/create_styled_element.ts +0 -95
  663. package/src/parsers/texttracks/webvtt/html/index.ts +0 -25
  664. package/src/parsers/texttracks/webvtt/html/parse_style_block.ts +0 -76
  665. package/src/parsers/texttracks/webvtt/html/parse_webvtt_to_div.ts +0 -67
  666. package/src/parsers/texttracks/webvtt/html/to_html.ts +0 -96
  667. package/src/parsers/texttracks/webvtt/native/index.ts +0 -23
  668. package/src/parsers/texttracks/webvtt/native/parse_vtt_to_cues.ts +0 -70
  669. package/src/parsers/texttracks/webvtt/native/set_settings_on_cue.ts +0 -95
  670. package/src/parsers/texttracks/webvtt/native/to_native_cue.ts +0 -34
  671. package/src/parsers/texttracks/webvtt/parse_cue_block.ts +0 -128
  672. package/src/parsers/texttracks/webvtt/parse_timestamp.ts +0 -40
  673. package/src/parsers/texttracks/webvtt/utils.ts +0 -135
  674. package/src/public_types.ts +0 -846
  675. package/src/tools/README.md +0 -4
  676. package/src/tools/TextTrackRenderer/index.ts +0 -28
  677. package/src/tools/TextTrackRenderer/text_track_renderer.ts +0 -107
  678. package/src/tools/index.ts +0 -20
  679. package/src/tools/string_utils.ts +0 -24
  680. package/src/transports/README.md +0 -276
  681. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +0 -98
  682. package/src/transports/dash/construct_segment_url.ts +0 -28
  683. package/src/transports/dash/extract_complete_chunks.ts +0 -66
  684. package/src/transports/dash/get_events_out_of_emsgs.ts +0 -105
  685. package/src/transports/dash/image_pipelines.ts +0 -122
  686. package/src/transports/dash/index.ts +0 -23
  687. package/src/transports/dash/init_segment_loader.ts +0 -114
  688. package/src/transports/dash/low_latency_segment_loader.ts +0 -87
  689. package/src/transports/dash/manifest_parser.ts +0 -325
  690. package/src/transports/dash/pipelines.ts +0 -72
  691. package/src/transports/dash/segment_loader.ts +0 -249
  692. package/src/transports/dash/segment_parser.ts +0 -194
  693. package/src/transports/dash/text_loader.ts +0 -120
  694. package/src/transports/dash/text_parser.ts +0 -234
  695. package/src/transports/index.ts +0 -17
  696. package/src/transports/local/index.ts +0 -18
  697. package/src/transports/local/pipelines.ts +0 -100
  698. package/src/transports/local/segment_loader.ts +0 -198
  699. package/src/transports/local/segment_parser.ts +0 -101
  700. package/src/transports/local/text_parser.ts +0 -185
  701. package/src/transports/metaplaylist/README.md +0 -94
  702. package/src/transports/metaplaylist/index.ts +0 -23
  703. package/src/transports/metaplaylist/manifest_loader.ts +0 -62
  704. package/src/transports/metaplaylist/pipelines.ts +0 -425
  705. package/src/transports/smooth/extract_timings_infos.ts +0 -142
  706. package/src/transports/smooth/index.ts +0 -23
  707. package/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +0 -231
  708. package/src/transports/smooth/isobmff/create_audio_init_segment.ts +0 -84
  709. package/src/transports/smooth/isobmff/create_boxes.ts +0 -481
  710. package/src/transports/smooth/isobmff/create_init_segment.ts +0 -100
  711. package/src/transports/smooth/isobmff/create_traf_box.ts +0 -40
  712. package/src/transports/smooth/isobmff/create_video_init_segment.ts +0 -78
  713. package/src/transports/smooth/isobmff/get_aaces_header.ts +0 -62
  714. package/src/transports/smooth/isobmff/index.ts +0 -32
  715. package/src/transports/smooth/isobmff/parse_tfrf.ts +0 -57
  716. package/src/transports/smooth/isobmff/parse_tfxd.ts +0 -38
  717. package/src/transports/smooth/isobmff/patch_segment.ts +0 -171
  718. package/src/transports/smooth/pipelines.ts +0 -533
  719. package/src/transports/smooth/segment_loader.ts +0 -288
  720. package/src/transports/smooth/utils.ts +0 -106
  721. package/src/transports/types.ts +0 -809
  722. package/src/transports/utils/__tests__/byte_range.test.ts +0 -35
  723. package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +0 -148
  724. package/src/transports/utils/__tests__/find_complete_box.test.ts +0 -138
  725. package/src/transports/utils/__tests__/infer_segment_container.test.ts +0 -227
  726. package/src/transports/utils/byte_range.ts +0 -25
  727. package/src/transports/utils/call_custom_manifest_loader.ts +0 -147
  728. package/src/transports/utils/check_isobmff_integrity.ts +0 -50
  729. package/src/transports/utils/find_complete_box.ts +0 -63
  730. package/src/transports/utils/generate_manifest_loader.ts +0 -97
  731. package/src/transports/utils/get_isobmff_timing_infos.ts +0 -86
  732. package/src/transports/utils/infer_segment_container.ts +0 -56
  733. package/src/transports/utils/parse_text_track.ts +0 -176
  734. package/src/typings/README.md +0 -7
  735. package/src/typings/globals.d.ts +0 -83
  736. package/src/typings/next-tick.d.ts +0 -23
  737. package/src/utils/README.md +0 -5
  738. package/src/utils/__tests__/are_arrays_of_numbers_equal.test.ts +0 -86
  739. package/src/utils/__tests__/are_codecs_compatible.test.ts +0 -88
  740. package/src/utils/__tests__/array_find.test.ts +0 -113
  741. package/src/utils/__tests__/array_find_index.test.ts +0 -113
  742. package/src/utils/__tests__/array_includes.test.ts +0 -151
  743. package/src/utils/__tests__/assert.test.ts +0 -237
  744. package/src/utils/__tests__/assert_unreachable.test.ts +0 -40
  745. package/src/utils/__tests__/base64.test.ts +0 -147
  746. package/src/utils/__tests__/byte_parsing.test.ts +0 -267
  747. package/src/utils/__tests__/deep_merge.test.ts +0 -48
  748. package/src/utils/__tests__/event_emitter.test.ts +0 -579
  749. package/src/utils/__tests__/flat_map.test.ts +0 -71
  750. package/src/utils/__tests__/get_fuzzed_delay.test.ts +0 -32
  751. package/src/utils/__tests__/hash_buffer.test.ts +0 -105
  752. package/src/utils/__tests__/id_generator.test.ts +0 -80
  753. package/src/utils/__tests__/initialization_segment_cache.test.ts +0 -245
  754. package/src/utils/__tests__/is_non_empty_string.test.ts +0 -41
  755. package/src/utils/__tests__/is_null_or_undefined.test.ts +0 -33
  756. package/src/utils/__tests__/list_to_map.test.ts +0 -46
  757. package/src/utils/__tests__/logger.test.ts +0 -214
  758. package/src/utils/__tests__/noop.test.ts +0 -23
  759. package/src/utils/__tests__/object_assign.test.ts +0 -56
  760. package/src/utils/__tests__/object_values.test.ts +0 -26
  761. package/src/utils/__tests__/ranges.test.ts +0 -907
  762. package/src/utils/__tests__/resolve_url.test.ts +0 -100
  763. package/src/utils/__tests__/simple_set.test.ts +0 -57
  764. package/src/utils/__tests__/sorted_list.test.ts +0 -335
  765. package/src/utils/__tests__/starts_with.test.ts +0 -65
  766. package/src/utils/__tests__/string_parsing.test.ts +0 -267
  767. package/src/utils/__tests__/uniq.test.ts +0 -134
  768. package/src/utils/__tests__/warn_once.test.ts +0 -38
  769. package/src/utils/__tests__/weak_map_memory.test.ts +0 -188
  770. package/src/utils/are_arrays_of_numbers_equal.ts +0 -39
  771. package/src/utils/are_codecs_compatible.ts +0 -51
  772. package/src/utils/array_find.ts +0 -55
  773. package/src/utils/array_find_index.ts +0 -54
  774. package/src/utils/array_includes.ts +0 -93
  775. package/src/utils/assert.ts +0 -65
  776. package/src/utils/assert_unreachable.ts +0 -45
  777. package/src/utils/base64.ts +0 -153
  778. package/src/utils/byte_parsing.ts +0 -256
  779. package/src/utils/cancellable_sleep.ts +0 -41
  780. package/src/utils/create_cancellable_promise.ts +0 -69
  781. package/src/utils/deep_merge.ts +0 -49
  782. package/src/utils/event_emitter.ts +0 -147
  783. package/src/utils/flat_map.ts +0 -50
  784. package/src/utils/get_fuzzed_delay.ts +0 -27
  785. package/src/utils/hash_buffer.ts +0 -42
  786. package/src/utils/id_generator.ts +0 -35
  787. package/src/utils/initialization_segment_cache.ts +0 -68
  788. package/src/utils/is_non_empty_string.ts +0 -23
  789. package/src/utils/is_null_or_undefined.ts +0 -27
  790. package/src/utils/languages/ISO_639-1_to_ISO_639-3.ts +0 -207
  791. package/src/utils/languages/ISO_639-2_to_ISO_639-3.ts +0 -43
  792. package/src/utils/languages/__tests__/normalize.test.ts +0 -290
  793. package/src/utils/languages/index.ts +0 -29
  794. package/src/utils/languages/normalize.ts +0 -152
  795. package/src/utils/list_to_map.ts +0 -32
  796. package/src/utils/logger.ts +0 -100
  797. package/src/utils/noop.ts +0 -26
  798. package/src/utils/object_assign.ts +0 -60
  799. package/src/utils/object_values.ts +0 -31
  800. package/src/utils/ranges.ts +0 -499
  801. package/src/utils/reference.ts +0 -390
  802. package/src/utils/request/fetch.ts +0 -250
  803. package/src/utils/request/index.ts +0 -38
  804. package/src/utils/request/xhr.ts +0 -287
  805. package/src/utils/resolve_url.ts +0 -126
  806. package/src/utils/retry_promise_with_backoff.ts +0 -95
  807. package/src/utils/simple_set.ts +0 -67
  808. package/src/utils/sleep.ts +0 -14
  809. package/src/utils/slice_uint8array.ts +0 -53
  810. package/src/utils/sorted_list.ts +0 -240
  811. package/src/utils/starts_with.ts +0 -42
  812. package/src/utils/string_parsing.ts +0 -414
  813. package/src/utils/task_canceller.ts +0 -367
  814. package/src/utils/uniq.ts +0 -49
  815. package/src/utils/warn_once.ts +0 -34
  816. package/src/utils/weak_map_memory.ts +0 -89
  817. package/src/utils/wrapInPromise.ts +0 -24
  818. package/tsconfig.json +0 -28
  819. package/tsconfig.modules.json +0 -36
@@ -1,798 +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
- import config from "../../../config";
18
- import { formatError } from "../../../errors";
19
- import log from "../../../log";
20
- import Manifest from "../../../manifest";
21
- import {
22
- IInitialManifest,
23
- ILoadedManifestFormat,
24
- IPlayerError,
25
- } from "../../../public_types";
26
- import {
27
- IRequestedData,
28
- ITransportManifestPipeline,
29
- ITransportPipelines,
30
- } from "../../../transports";
31
- import assert from "../../../utils/assert";
32
- import EventEmitter from "../../../utils/event_emitter";
33
- import isNullOrUndefined from "../../../utils/is_null_or_undefined";
34
- import noop from "../../../utils/noop";
35
- import TaskCanceller from "../../../utils/task_canceller";
36
- import errorSelector from "../utils/error_selector";
37
- import {
38
- IBackoffSettings,
39
- scheduleRequestPromise,
40
- } from "../utils/schedule_request";
41
-
42
- /**
43
- * Class allowing to facilitate the task of loading and parsing a Manifest, as
44
- * well as automatically refreshing it.
45
- * @class ManifestFetcher
46
- */
47
- export default class ManifestFetcher extends EventEmitter<IManifestFetcherEvent> {
48
- /**
49
- * Allows to manually trigger a Manifest refresh.
50
- * Will only have an effect if the Manifest has been fetched at least once.
51
- * @param {Object} settings - refresh configuration.
52
- */
53
- public scheduleManualRefresh : (settings : IManifestRefreshSettings) => void;
54
-
55
- /** `ManifestFetcher` configuration. */
56
- private _settings : IManifestFetcherSettings;
57
- /** URLs through which the Manifest may be reached, by order of priority. */
58
- private _manifestUrls : string[] | undefined;
59
- /**
60
- * Manifest loading and parsing pipelines linked to the current transport
61
- * protocol used.
62
- */
63
- private _pipelines : ITransportManifestPipeline;
64
- /**
65
- * `TaskCanceller` called when this `ManifestFetcher` is disposed, to clean
66
- * resources.
67
- */
68
- private _canceller : TaskCanceller;
69
- /**
70
- * Set to `true` once the Manifest has been fetched at least once through this
71
- * `ManifestFetcher`.
72
- */
73
- private _isStarted : boolean;
74
- /**
75
- * Set to `true` when a Manifest refresh is currently pending.
76
- * Allows to avoid doing multiple concurrent Manifest refresh, as this is
77
- * most of the time unnecessary.
78
- */
79
- private _isRefreshPending;
80
- /** Number of consecutive times the Manifest parsing has been done in `unsafeMode`. */
81
- private _consecutiveUnsafeMode;
82
- /**
83
- * If set to a string or `undefined`, the given URL should be prioritized on
84
- * the next Manifest fetching operation, it can then be reset to `null`.
85
- */
86
- private _prioritizedContentUrl : string | undefined | null;
87
-
88
- /**
89
- * Construct a new ManifestFetcher.
90
- * @param {Array.<string> | undefined} urls - Manifest URLs, will be used when
91
- * no URL is provided to the `fetch` function.
92
- * `undefined` if unknown or if a Manifest should be retrieved through other
93
- * means than an HTTP request.
94
- * @param {Object} pipelines - Transport pipelines used to perform the
95
- * Manifest loading and parsing operations.
96
- * @param {Object} settings - Configure the `ManifestFetcher`.
97
- */
98
- constructor(
99
- urls : string[] | undefined,
100
- pipelines : ITransportPipelines,
101
- settings : IManifestFetcherSettings
102
- ) {
103
- super();
104
- this.scheduleManualRefresh = noop;
105
- this._manifestUrls = urls;
106
- this._pipelines = pipelines.manifest;
107
- this._settings = settings;
108
- this._canceller = new TaskCanceller();
109
- this._isStarted = false;
110
- this._isRefreshPending = false;
111
- this._consecutiveUnsafeMode = 0;
112
- this._prioritizedContentUrl = null;
113
- }
114
-
115
- /**
116
- * Free resources and stop refresh mechanism from happening.
117
- *
118
- * Once `dispose` has been called. This `ManifestFetcher` cannot be relied on
119
- * anymore.
120
- */
121
- public dispose() {
122
- this._canceller.cancel();
123
- this.removeEventListener();
124
- }
125
-
126
- /**
127
- * Start requesting the Manifest as well as the Manifest refreshing logic, if
128
- * needed.
129
- *
130
- * Once `start` has been called, this mechanism can only be stopped by calling
131
- * `dispose`.
132
- */
133
- public start() : void {
134
- if (this._isStarted) {
135
- return;
136
- }
137
- this._isStarted = true;
138
-
139
- let manifestProm : Promise<IManifestFetcherParsedResult>;
140
-
141
- const initialManifest = this._settings.initialManifest;
142
- if (initialManifest instanceof Manifest) {
143
- manifestProm = Promise.resolve({ manifest: initialManifest });
144
- } else if (initialManifest !== undefined) {
145
- manifestProm = this.parse(initialManifest,
146
- { previousManifest: null, unsafeMode: false },
147
- undefined);
148
- } else {
149
- manifestProm = this._fetchManifest(undefined)
150
- .then((val) => {
151
- return val.parse({ previousManifest: null, unsafeMode: false });
152
- });
153
- }
154
-
155
- manifestProm
156
- .then((val : IManifestFetcherParsedResult) => {
157
- this.trigger("manifestReady", val.manifest);
158
- if (!this._canceller.isUsed()) {
159
- this._recursivelyRefreshManifest(val.manifest, val);
160
- }
161
- })
162
- .catch((err : unknown) => this._onFatalError(err));
163
- }
164
-
165
- /**
166
- * Update URL of the fetched Manifest.
167
- * @param {Array.<string> | undefined} urls - New Manifest URLs by order of
168
- * priority or `undefined` if there's now no URL.
169
- * @param {boolean} refreshNow - If set to `true`, the next Manifest refresh
170
- * will be triggered immediately.
171
- */
172
- public updateContentUrls(urls : string[] | undefined, refreshNow : boolean) : void {
173
- this._prioritizedContentUrl = urls?.[0] ?? undefined;
174
- if (refreshNow) {
175
- this.scheduleManualRefresh({
176
- enablePartialRefresh: false,
177
- delay: 0,
178
- canUseUnsafeMode: false,
179
- });
180
- }
181
- }
182
-
183
- /**
184
- * (re-)Load the Manifest.
185
- * This method does not yet parse it, parsing will then be available through
186
- * a callback available on the response.
187
- *
188
- * You can set an `url` on which that Manifest will be requested.
189
- * If not set, the regular Manifest url - defined on the `ManifestFetcher`
190
- * instanciation - will be used instead.
191
- *
192
- * @param {string | undefined} url
193
- * @returns {Promise}
194
- */
195
- private async _fetchManifest(
196
- url : string | undefined
197
- ) : Promise<IManifestFetcherResponse> {
198
- const cancelSignal = this._canceller.signal;
199
- const settings = this._settings;
200
- const pipelines = this._pipelines;
201
-
202
- // TODO Better handle multiple Manifest URLs
203
- const requestUrl = url ?? this._manifestUrls?.[0];
204
-
205
- const backoffSettings = this._getBackoffSetting((err) => {
206
- this.trigger("warning", errorSelector(err));
207
- });
208
-
209
- const loadingPromise = pipelines.resolveManifestUrl === undefined ?
210
- callLoaderWithRetries(requestUrl) :
211
- callResolverWithRetries(requestUrl).then(callLoaderWithRetries);
212
-
213
- try {
214
- const response = await loadingPromise;
215
- return {
216
- parse: (parserOptions : IManifestFetcherParserOptions) => {
217
- return this._parseLoadedManifest(response,
218
- parserOptions,
219
- requestUrl);
220
- },
221
- };
222
- } catch (err) {
223
- throw errorSelector(err);
224
- }
225
-
226
- /**
227
- * Call the resolver part of the pipeline, retrying if it fails according
228
- * to the current settings.
229
- * Returns the Promise of the last attempt.
230
- * /!\ This pipeline should have a `resolveManifestUrl` function defined.
231
- * @param {string | undefined} resolverUrl
232
- * @returns {Promise}
233
- */
234
- function callResolverWithRetries(
235
- resolverUrl : string | undefined
236
- ) : Promise<string | undefined> {
237
- const { resolveManifestUrl } = pipelines;
238
- assert(resolveManifestUrl !== undefined);
239
- const callResolver = () => resolveManifestUrl(resolverUrl, cancelSignal);
240
- return scheduleRequestPromise(callResolver, backoffSettings, cancelSignal);
241
- }
242
-
243
- /**
244
- * Call the loader part of the pipeline, retrying if it fails according
245
- * to the current settings.
246
- * Returns the Promise of the last attempt.
247
- * @param {string | undefined} manifestUrl
248
- * @returns {Promise}
249
- */
250
- function callLoaderWithRetries(
251
- manifestUrl : string | undefined
252
- ) : Promise<IRequestedData<ILoadedManifestFormat>> {
253
- const { loadManifest } = pipelines;
254
- let requestTimeout : number | undefined =
255
- isNullOrUndefined(settings.requestTimeout) ?
256
- config.getCurrent().DEFAULT_REQUEST_TIMEOUT :
257
- settings.requestTimeout;
258
- if (requestTimeout < 0) {
259
- requestTimeout = undefined;
260
- }
261
- const callLoader = () => loadManifest(manifestUrl,
262
- { timeout: requestTimeout },
263
- cancelSignal);
264
- return scheduleRequestPromise(callLoader, backoffSettings, cancelSignal);
265
- }
266
- }
267
-
268
- /**
269
- * Parse an already loaded Manifest.
270
- *
271
- * This method should be reserved for Manifests for which no request has been
272
- * done.
273
- * In other cases, it's preferable to go through the `fetch` method, so
274
- * information on the request can be used by the parsing process.
275
- * @param {*} manifest
276
- * @param {Object} parserOptions
277
- * @param {string | undefined} originalUrl
278
- * @returns {Promise}
279
- */
280
- private parse(
281
- manifest : unknown,
282
- parserOptions : IManifestFetcherParserOptions,
283
- originalUrl : string | undefined
284
- ) : Promise<IManifestFetcherParsedResult> {
285
- return this._parseLoadedManifest({ responseData: manifest,
286
- size: undefined,
287
- requestDuration: undefined },
288
- parserOptions,
289
- originalUrl);
290
-
291
- }
292
-
293
- /**
294
- * Parse a Manifest.
295
- *
296
- * @param {Object} loaded - Information about the loaded Manifest as well as
297
- * about the corresponding request.
298
- * @param {Object} parserOptions - Options used when parsing the Manifest.
299
- * @param {string | undefined} requestUrl
300
- * @returns {Promise}
301
- */
302
- private async _parseLoadedManifest(
303
- loaded : IRequestedData<unknown>,
304
- parserOptions : IManifestFetcherParserOptions,
305
- requestUrl : string | undefined
306
- ) : Promise<IManifestFetcherParsedResult> {
307
- const parsingTimeStart = performance.now();
308
- const cancelSignal = this._canceller.signal;
309
- const trigger = this.trigger.bind(this);
310
- const { sendingTime, receivedTime } = loaded;
311
- const backoffSettings = this._getBackoffSetting((err) => {
312
- this.trigger("warning", errorSelector(err));
313
- });
314
-
315
- const originalUrl = requestUrl ?? this._manifestUrls?.[0];
316
- const opts = { externalClockOffset: parserOptions.externalClockOffset,
317
- unsafeMode: parserOptions.unsafeMode,
318
- previousManifest: parserOptions.previousManifest,
319
- originalUrl };
320
- try {
321
- const res = this._pipelines.parseManifest(loaded,
322
- opts,
323
- onWarnings,
324
- cancelSignal,
325
- scheduleRequest);
326
- if (!isPromise(res)) {
327
- return finish(res.manifest);
328
- } else {
329
- const { manifest } = await res;
330
- return finish(manifest);
331
- }
332
- } catch (err) {
333
- const formattedError = formatError(err, {
334
- defaultCode: "PIPELINE_PARSE_ERROR",
335
- defaultReason: "Unknown error when parsing the Manifest",
336
- });
337
- throw formattedError;
338
- }
339
-
340
- /**
341
- * Perform a request with the same retry mechanisms and error handling
342
- * than for a Manifest loader.
343
- * @param {Function} performRequest
344
- * @returns {Function}
345
- */
346
- async function scheduleRequest<T>(
347
- performRequest : () => Promise<T>
348
- ) : Promise<T> {
349
- try {
350
- const data = await scheduleRequestPromise(performRequest,
351
- backoffSettings,
352
- cancelSignal);
353
- return data;
354
- } catch (err) {
355
- throw errorSelector(err);
356
- }
357
- }
358
-
359
- /**
360
- * Handle minor errors encountered by a Manifest parser.
361
- * @param {Array.<Error>} warnings
362
- */
363
- function onWarnings(warnings : Error[]) : void {
364
- for (const warning of warnings) {
365
- if (cancelSignal.isCancelled()) {
366
- return;
367
- }
368
- const formattedError = formatError(warning, {
369
- defaultCode: "PIPELINE_PARSE_ERROR",
370
- defaultReason: "Unknown error when parsing the Manifest",
371
- });
372
- trigger("warning", formattedError);
373
- }
374
- }
375
-
376
- /**
377
- * Emit a formatted "parsed" event through `obs`.
378
- * To call once the Manifest has been parsed.
379
- * @param {Object} manifest
380
- */
381
- function finish(manifest : Manifest) : IManifestFetcherParsedResult {
382
- onWarnings(manifest.contentWarnings);
383
- const parsingTime = performance.now() - parsingTimeStart;
384
- log.info(`MF: Manifest parsed in ${parsingTime}ms`);
385
-
386
- return { manifest,
387
- sendingTime,
388
- receivedTime,
389
- parsingTime };
390
- }
391
- }
392
-
393
- /**
394
- * Construct "backoff settings" that can be used with a range of functions
395
- * allowing to perform multiple request attempts
396
- * @param {Function} onRetry
397
- * @returns {Object}
398
- */
399
- private _getBackoffSetting(onRetry : (err : unknown) => void) : IBackoffSettings {
400
- const { DEFAULT_MAX_MANIFEST_REQUEST_RETRY,
401
- DEFAULT_MAX_REQUESTS_RETRY_ON_OFFLINE,
402
- INITIAL_BACKOFF_DELAY_BASE,
403
- MAX_BACKOFF_DELAY_BASE } = config.getCurrent();
404
- const { lowLatencyMode,
405
- maxRetryRegular : ogRegular,
406
- maxRetryOffline : ogOffline } = this._settings;
407
- const baseDelay = lowLatencyMode ? INITIAL_BACKOFF_DELAY_BASE.LOW_LATENCY :
408
- INITIAL_BACKOFF_DELAY_BASE.REGULAR;
409
- const maxDelay = lowLatencyMode ? MAX_BACKOFF_DELAY_BASE.LOW_LATENCY :
410
- MAX_BACKOFF_DELAY_BASE.REGULAR;
411
- const maxRetryRegular = ogRegular ?? DEFAULT_MAX_MANIFEST_REQUEST_RETRY;
412
- const maxRetryOffline = ogOffline ?? DEFAULT_MAX_REQUESTS_RETRY_ON_OFFLINE;
413
- return { onRetry,
414
- baseDelay,
415
- maxDelay,
416
- maxRetryRegular,
417
- maxRetryOffline };
418
- }
419
-
420
- /**
421
- * Performs Manifest refresh (recursively) when it judges it is time to do so.
422
- * @param {Object} manifest
423
- * @param {Object} manifestRequestInfos - Various information linked to the
424
- * last Manifest loading and parsing operations.
425
- */
426
- private _recursivelyRefreshManifest (
427
- manifest : Manifest,
428
- { sendingTime, parsingTime, updatingTime } : { sendingTime?: number | undefined;
429
- parsingTime? : number | undefined;
430
- updatingTime? : number | undefined; }
431
- ) : void {
432
- const { MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE,
433
- MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE } = config.getCurrent();
434
-
435
- /**
436
- * Total time taken to fully update the last Manifest, in milliseconds.
437
- * Note: this time also includes possible requests done by the parsers.
438
- */
439
- const totalUpdateTime = parsingTime !== undefined ?
440
- parsingTime + (updatingTime ?? 0) :
441
- undefined;
442
-
443
- /**
444
- * "unsafeMode" is a mode where we unlock advanced Manifest parsing
445
- * optimizations with the added risk to lose some information.
446
- * `unsafeModeEnabled` is set to `true` when the `unsafeMode` is enabled.
447
- *
448
- * Only perform parsing in `unsafeMode` when the last full parsing took a
449
- * lot of time and do not go higher than the maximum consecutive time.
450
- */
451
-
452
- const unsafeModeEnabled = this._consecutiveUnsafeMode > 0 ?
453
- this._consecutiveUnsafeMode < MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE :
454
- totalUpdateTime !== undefined ?
455
- (totalUpdateTime >= MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE) :
456
- false;
457
-
458
- /** Time elapsed since the beginning of the Manifest request, in milliseconds. */
459
- const timeSinceRequest = sendingTime === undefined ?
460
- 0 :
461
- performance.now() - sendingTime;
462
-
463
- /** Minimum update delay we should not go below, in milliseconds. */
464
- const minInterval = Math.max(this._settings.minimumManifestUpdateInterval -
465
- timeSinceRequest,
466
- 0);
467
-
468
- /**
469
- * Multiple refresh trigger are scheduled here, but only the first one should
470
- * be effectively considered.
471
- * `nextRefreshCanceller` will allow to cancel every other when one is triggered.
472
- */
473
- const nextRefreshCanceller = new TaskCanceller();
474
- nextRefreshCanceller.linkToSignal(this._canceller.signal);
475
-
476
- /* Function to manually schedule a Manifest refresh */
477
- this.scheduleManualRefresh = (settings : IManifestRefreshSettings) => {
478
- const { enablePartialRefresh, delay, canUseUnsafeMode } = settings;
479
- const unsafeMode = canUseUnsafeMode && unsafeModeEnabled;
480
- // The value allows to set a delay relatively to the last Manifest refresh
481
- // (to avoid asking for it too often).
482
- const timeSinceLastRefresh = sendingTime === undefined ?
483
- 0 :
484
- performance.now() - sendingTime;
485
- const _minInterval = Math.max(this._settings.minimumManifestUpdateInterval -
486
- timeSinceLastRefresh,
487
- 0);
488
- const timeoutId = setTimeout(() => {
489
- nextRefreshCanceller.cancel();
490
- this._triggerNextManifestRefresh(manifest, { enablePartialRefresh, unsafeMode });
491
- }, Math.max((delay ?? 0) - timeSinceLastRefresh, _minInterval));
492
- nextRefreshCanceller.signal.register(() => {
493
- clearTimeout(timeoutId);
494
- });
495
- };
496
-
497
- /* Handle Manifest expiration. */
498
- if (manifest.expired !== null) {
499
- const timeoutId = setTimeout(() => {
500
- manifest.expired?.then(() => {
501
- nextRefreshCanceller.cancel();
502
- this._triggerNextManifestRefresh(manifest, { enablePartialRefresh: false,
503
- unsafeMode: unsafeModeEnabled });
504
- }, noop /* `expired` should not reject */);
505
- }, minInterval);
506
- nextRefreshCanceller.signal.register(() => {
507
- clearTimeout(timeoutId);
508
- });
509
- }
510
-
511
- /*
512
- * Trigger Manifest refresh when the Manifest needs to be refreshed
513
- * according to the Manifest's internal properties (parsing time is also
514
- * taken into account in this operation to avoid refreshing too often).
515
- */
516
- if (manifest.lifetime !== undefined && manifest.lifetime >= 0) {
517
- /** Regular refresh delay as asked by the Manifest. */
518
- const regularRefreshDelay = manifest.lifetime * 1000 - timeSinceRequest;
519
-
520
- /** Actually choosen delay to refresh the Manifest. */
521
- let actualRefreshInterval : number;
522
-
523
- if (totalUpdateTime === undefined) {
524
- actualRefreshInterval = regularRefreshDelay;
525
- } else if (manifest.lifetime < 3 && totalUpdateTime >= 100) {
526
- // If Manifest update is very frequent and we take time to update it,
527
- // postpone it.
528
- actualRefreshInterval = Math.min(
529
- Math.max(
530
- // Take 3 seconds as a default safe value for a base interval.
531
- 3000 - timeSinceRequest,
532
- // Add update time to the original interval.
533
- Math.max(regularRefreshDelay, 0) + totalUpdateTime
534
- ),
535
-
536
- // Limit the postponment's higher bound to a very high value relative
537
- // to `regularRefreshDelay`.
538
- // This avoid perpetually postponing a Manifest update when
539
- // performance seems to have been abysmal one time.
540
- regularRefreshDelay * 6
541
- );
542
- log.info("MUS: Manifest update rythm is too frequent. Postponing next request.",
543
- regularRefreshDelay,
544
- actualRefreshInterval);
545
- } else if (totalUpdateTime >= (manifest.lifetime * 1000) / 10) {
546
- // If Manifest updating time is very long relative to its lifetime,
547
- // postpone it:
548
- actualRefreshInterval = Math.min(
549
- // Just add the update time to the original waiting time
550
- Math.max(regularRefreshDelay, 0) + totalUpdateTime,
551
-
552
- // Limit the postponment's higher bound to a very high value relative
553
- // to `regularRefreshDelay`.
554
- // This avoid perpetually postponing a Manifest update when
555
- // performance seems to have been abysmal one time.
556
- regularRefreshDelay * 6);
557
- log.info("MUS: Manifest took too long to parse. Postponing next request",
558
- actualRefreshInterval,
559
- actualRefreshInterval);
560
- } else {
561
- actualRefreshInterval = regularRefreshDelay;
562
- }
563
- const timeoutId = setTimeout(() => {
564
- nextRefreshCanceller.cancel();
565
- this._triggerNextManifestRefresh(manifest, { enablePartialRefresh: false,
566
- unsafeMode: unsafeModeEnabled });
567
- }, Math.max(actualRefreshInterval, minInterval));
568
- nextRefreshCanceller.signal.register(() => {
569
- clearTimeout(timeoutId);
570
- });
571
- }
572
- }
573
-
574
- /**
575
- * Refresh the Manifest, performing a full update if a partial update failed.
576
- * Also re-call `recursivelyRefreshManifest` to schedule the next refresh
577
- * trigger.
578
- * @param {Object} manifest
579
- * @param {Object} refreshInformation
580
- */
581
- private _triggerNextManifestRefresh(
582
- manifest : Manifest,
583
- { enablePartialRefresh,
584
- unsafeMode } : { enablePartialRefresh : boolean;
585
- unsafeMode : boolean; }
586
- ) {
587
- const manifestUpdateUrl = manifest.updateUrl;
588
- let fullRefresh : boolean;
589
- let refreshURL : string | undefined;
590
- if (this._prioritizedContentUrl !== null) {
591
- fullRefresh = true;
592
- refreshURL = this._prioritizedContentUrl;
593
- this._prioritizedContentUrl = null;
594
- } else {
595
- fullRefresh = !enablePartialRefresh || manifestUpdateUrl === undefined;
596
- refreshURL = fullRefresh ? manifest.getUrl() :
597
- manifestUpdateUrl;
598
- }
599
- const externalClockOffset = manifest.clockOffset;
600
-
601
- if (unsafeMode) {
602
- this._consecutiveUnsafeMode += 1;
603
- log.info("Init: Refreshing the Manifest in \"unsafeMode\" for the " +
604
- String(this._consecutiveUnsafeMode) + " consecutive time.");
605
- } else if (this._consecutiveUnsafeMode > 0) {
606
- log.info("Init: Not parsing the Manifest in \"unsafeMode\" anymore after " +
607
- String(this._consecutiveUnsafeMode) + " consecutive times.");
608
- this._consecutiveUnsafeMode = 0;
609
- }
610
-
611
- if (this._isRefreshPending) {
612
- return;
613
- }
614
- this._isRefreshPending = true;
615
- this._fetchManifest(refreshURL)
616
- .then(res => res.parse({ externalClockOffset,
617
- previousManifest: manifest,
618
- unsafeMode }))
619
- .then(res => {
620
- this._isRefreshPending = false;
621
- const { manifest: newManifest,
622
- sendingTime: newSendingTime,
623
- parsingTime } = res;
624
- const updateTimeStart = performance.now();
625
-
626
- if (fullRefresh) {
627
- manifest.replace(newManifest);
628
- } else {
629
- try {
630
- manifest.update(newManifest);
631
- } catch (e) {
632
- const message = e instanceof Error ? e.message :
633
- "unknown error";
634
- log.warn(`MUS: Attempt to update Manifest failed: ${message}`,
635
- "Re-downloading the Manifest fully");
636
- const { FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY } = config.getCurrent();
637
-
638
- // The value allows to set a delay relatively to the last Manifest refresh
639
- // (to avoid asking for it too often).
640
- const timeSinceLastRefresh = newSendingTime === undefined ?
641
- 0 :
642
- performance.now() - newSendingTime;
643
- const _minInterval = Math.max(this._settings.minimumManifestUpdateInterval -
644
- timeSinceLastRefresh,
645
- 0);
646
- let unregisterCanceller = noop;
647
- const timeoutId = setTimeout(() => {
648
- unregisterCanceller();
649
- this._triggerNextManifestRefresh(manifest,
650
- { enablePartialRefresh: false,
651
- unsafeMode: false });
652
- }, Math.max(FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY -
653
- timeSinceLastRefresh,
654
- _minInterval));
655
- unregisterCanceller = this._canceller.signal.register(() => {
656
- clearTimeout(timeoutId);
657
- });
658
- return;
659
- }
660
- }
661
- const updatingTime = performance.now() - updateTimeStart;
662
- this._recursivelyRefreshManifest(manifest, { sendingTime: newSendingTime,
663
- parsingTime,
664
- updatingTime });
665
- })
666
- .catch((err) => {
667
- this._isRefreshPending = false;
668
- this._onFatalError(err);
669
- });
670
- }
671
-
672
- private _onFatalError(err : unknown) : void {
673
- if (this._canceller.isUsed()) {
674
- return;
675
- }
676
- this.trigger("error", err);
677
- this.dispose();
678
- }
679
- }
680
-
681
- /**
682
- * Returns `true` when the returned value seems to be a Promise instance, as
683
- * created by the RxPlayer.
684
- * @param {*} val
685
- * @returns {boolean}
686
- */
687
- function isPromise<T>(val : T | Promise<T>) : val is Promise<T> {
688
- return val instanceof Promise;
689
- }
690
-
691
- /** What will be sent once parsed. */
692
- interface IManifestFetcherParsedResult {
693
- /** The resulting Manifest */
694
- manifest : Manifest;
695
- /**
696
- * The time (`performance.now()`) at which the request was started (at which
697
- * the JavaScript call was done).
698
- */
699
- sendingTime? : number | undefined;
700
- /** The time (`performance.now()`) at which the request was fully received. */
701
- receivedTime? : number | undefined;
702
- /* The time taken to parse the Manifest through the corresponding parse function. */
703
- parsingTime? : number | undefined;
704
- }
705
-
706
- /** Response emitted by a Manifest fetcher. */
707
- interface IManifestFetcherResponse {
708
- /** Allows to parse a fetched Manifest into a `Manifest` structure. */
709
- parse(parserOptions : IManifestFetcherParserOptions) :
710
- Promise<IManifestFetcherParsedResult>;
711
- }
712
-
713
- interface IManifestFetcherParserOptions {
714
- /**
715
- * If set, offset to add to `performance.now()` to obtain the current
716
- * server's time.
717
- */
718
- externalClockOffset? : number | undefined;
719
- /** The previous value of the Manifest (when updating). */
720
- previousManifest : Manifest | null;
721
- /**
722
- * If set to `true`, the Manifest parser can perform advanced optimizations
723
- * to speed-up the parsing process. Those optimizations might lead to a
724
- * de-synchronization with what is actually on the server, hence the "unsafe"
725
- * part.
726
- * To use with moderation and only when needed.
727
- */
728
- unsafeMode : boolean;
729
- }
730
-
731
- /** Options used by `createManifestFetcher`. */
732
- export interface IManifestFetcherSettings {
733
- /**
734
- * Whether the content is played in a low-latency mode.
735
- * This has an impact on default backoff delays.
736
- */
737
- lowLatencyMode : boolean;
738
- /** Maximum number of time a request on error will be retried. */
739
- maxRetryRegular : number | undefined;
740
- /** Maximum number of time a request be retried when the user is offline. */
741
- maxRetryOffline : number | undefined;
742
- /**
743
- * Timeout after which request are aborted and, depending on other options,
744
- * retried.
745
- * To set to `-1` for no timeout.
746
- * `undefined` will lead to a default, large, timeout being used.
747
- */
748
- requestTimeout : number | undefined;
749
- /** Limit the frequency of Manifest updates. */
750
- minimumManifestUpdateInterval : number;
751
- /**
752
- * Potential first Manifest to rely on, allowing to skip the initial Manifest
753
- * request.
754
- */
755
- initialManifest : IInitialManifest | undefined;
756
- }
757
-
758
- /** Event sent by the `ManifestFetcher`. */
759
- export interface IManifestFetcherEvent {
760
- /** Event sent by the `ManifestFetcher` when a minor error has been encountered. */
761
- warning : IPlayerError;
762
- /**
763
- * Event sent by the `ManifestFetcher` when a major error has been encountered,
764
- * leading to the `ManifestFetcher` being disposed.
765
- */
766
- error : unknown;
767
- /** Event sent after the Manifest has first been fetched. */
768
- manifestReady : Manifest;
769
- }
770
-
771
- /** Argument defined when forcing a Manifest refresh. */
772
- export interface IManifestRefreshSettings {
773
- /**
774
- * if `false`, the Manifest should be fully updated.
775
- * if `true`, a shorter version with just the added information can be loaded
776
- * instead.
777
- *
778
- * Basically can be set to `true` in most updates to improve performances, but
779
- * should be set to `false` if you suspect some iregularities in the Manifest,
780
- * so a complete and thorough refresh is performed.
781
- *
782
- * Note that this optimization is only possible when a shorter version of the
783
- * Manifest is available.
784
- * In other cases, setting this value to `true` won't have any effect.
785
- */
786
- enablePartialRefresh : boolean;
787
- /**
788
- * Optional wanted refresh delay, which is the minimum time you want to wait
789
- * before updating the Manifest
790
- */
791
- delay? : number | undefined;
792
- /**
793
- * Whether the parsing can be done in the more efficient "unsafeMode".
794
- * This mode is extremely fast but can lead to de-synchronisation with the
795
- * server.
796
- */
797
- canUseUnsafeMode : boolean;
798
- }