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.
- package/CHANGELOG.md +13 -0
- package/VERSION +1 -1
- package/dist/_esm5.processed/core/api/public_api.js +2 -2
- package/dist/_esm5.processed/manifest/manifest.js +1 -0
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.d.ts +11 -0
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +18 -4
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -1
- package/dist/rx-player.js +24 -9
- package/dist/rx-player.min.d.ts +1 -1
- package/dist/rx-player.min.js +1 -1
- package/package.json +6 -6
- package/.editorconfig +0 -22
- package/.eslintrc.js +0 -406
- package/.github/workflows/checks.yml +0 -101
- package/.github/workflows/perfs.yml +0 -22
- package/.github/workflows/sonarcloud_analysis.yml +0 -20
- package/CONTRIBUTING.md +0 -272
- package/FILES.md +0 -283
- package/jest.config.js +0 -73
- package/manifest.mpd +0 -149
- package/scripts/README.md +0 -11
- package/scripts/build/constants.d.ts +0 -53
- package/scripts/build/generate_build.js +0 -190
- package/scripts/build/templates/experimental/features/index.d.ts +0 -16
- package/scripts/build/templates/experimental/features/index.js +0 -16
- package/scripts/build/templates/experimental/index.d.ts +0 -16
- package/scripts/build/templates/experimental/index.js +0 -16
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +0 -18
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +0 -18
- package/scripts/build/templates/experimental/tools/index.d.ts +0 -16
- package/scripts/build/templates/experimental/tools/index.js +0 -16
- package/scripts/build/templates/features/index.d.ts +0 -16
- package/scripts/build/templates/features/index.js +0 -16
- package/scripts/build/templates/logger/index.d.ts +0 -17
- package/scripts/build/templates/logger/index.js +0 -17
- package/scripts/build/templates/minimal/index.d.ts +0 -17
- package/scripts/build/templates/minimal/index.js +0 -17
- package/scripts/build/templates/tools/TextTrackRenderer.d.ts +0 -18
- package/scripts/build/templates/tools/TextTrackRenderer.js +0 -18
- package/scripts/build/templates/tools/index.d.ts +0 -16
- package/scripts/build/templates/tools/index.js +0 -16
- package/scripts/build/templates/tools/string-utils.d.ts +0 -18
- package/scripts/build/templates/tools/string-utils.js +0 -18
- package/scripts/build/templates/types/index.d.ts +0 -16
- package/scripts/build/templates/types/index.js +0 -15
- package/scripts/canal-release.patch +0 -316
- package/scripts/check_nodejs_import_compatibility.js +0 -60
- package/scripts/deploy_new_demo +0 -123
- package/scripts/fast_demo_build.js +0 -129
- package/scripts/generate_certificate +0 -19
- package/scripts/generate_demo_list.js +0 -105
- package/scripts/generate_documentation_list.js +0 -109
- package/scripts/generate_full_demo.js +0 -201
- package/scripts/generate_standalone_demo.js +0 -82
- package/scripts/launch_static_server.js +0 -163
- package/scripts/list-npm-scripts.js +0 -207
- package/scripts/make-dev-releases +0 -90
- package/scripts/report_build_sizes +0 -96
- package/scripts/run_standalone_demo.js +0 -27
- package/scripts/start_demo_web_server.js +0 -44
- package/scripts/update-version +0 -48
- package/scripts/update_gh-pages_demo +0 -132
- package/scripts/update_gh-pages_doc +0 -106
- package/scripts/utils/display_webpack_errors.js +0 -33
- package/scripts/utils/get_human_readable_hours.js +0 -14
- package/scripts/wasm-strip.js +0 -359
- package/sonar-project.properties +0 -7
- package/src/README.md +0 -136
- package/src/compat/README.md +0 -29
- package/src/compat/__tests__/add_text_track.test.ts +0 -176
- package/src/compat/__tests__/browser_compatibility_types.test.ts +0 -152
- package/src/compat/__tests__/browser_version.test.ts +0 -84
- package/src/compat/__tests__/can_patch_isobmff.test.ts +0 -50
- package/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts +0 -78
- package/src/compat/__tests__/can_reuse_media_keys.test.ts +0 -31
- package/src/compat/__tests__/change_source_buffer_type.test.ts +0 -60
- package/src/compat/__tests__/clear_element_src.test.ts +0 -252
- package/src/compat/__tests__/enable_audio_track.test.ts +0 -341
- package/src/compat/__tests__/fullscreen.test.ts +0 -286
- package/src/compat/__tests__/is_codec_supported.test.ts +0 -78
- package/src/compat/__tests__/is_offline.test.ts +0 -65
- package/src/compat/__tests__/is_seeking_approximate.test.ts +0 -48
- package/src/compat/__tests__/is_vtt_cue.test.ts +0 -71
- package/src/compat/__tests__/make_vtt_cue.test.ts +0 -97
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +0 -144
- package/src/compat/__tests__/remove_cue.test.ts +0 -229
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +0 -128
- package/src/compat/__tests__/should_reload_media_source_on_decipherability_update.test.ts +0 -50
- package/src/compat/__tests__/should_renew_media_key_system_access.test.ts +0 -55
- package/src/compat/__tests__/should_unset_media_keys.test.ts +0 -53
- package/src/compat/__tests__/should_validate_metadata.test.ts +0 -53
- package/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +0 -121
- package/src/compat/__tests__/should_wait_for_have_enough_data.test.ts +0 -36
- package/src/compat/add_class_name.ts +0 -41
- package/src/compat/add_text_track.ts +0 -58
- package/src/compat/browser_compatibility_types.ts +0 -222
- package/src/compat/browser_detection.ts +0 -172
- package/src/compat/browser_version.ts +0 -44
- package/src/compat/can_patch_isobmff.ts +0 -30
- package/src/compat/can_rely_on_video_visibility_and_size.ts +0 -52
- package/src/compat/can_reuse_media_keys.ts +0 -20
- package/src/compat/change_source_buffer_type.ts +0 -66
- package/src/compat/clear_element_src.ts +0 -55
- package/src/compat/eme/close_session.ts +0 -111
- package/src/compat/eme/constants.ts +0 -21
- package/src/compat/eme/custom_key_system_access.ts +0 -67
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +0 -186
- package/src/compat/eme/custom_media_keys/index.ts +0 -28
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +0 -88
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +0 -69
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +0 -235
- package/src/compat/eme/custom_media_keys/types.ts +0 -67
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +0 -308
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +0 -50
- package/src/compat/eme/eme-api-implementation.ts +0 -318
- package/src/compat/eme/generate_key_request.ts +0 -162
- package/src/compat/eme/get_init_data.ts +0 -159
- package/src/compat/eme/get_uuid_kid_from_keystatus_kid.ts +0 -37
- package/src/compat/eme/get_webkit_fairplay_initdata.ts +0 -75
- package/src/compat/eme/index.ts +0 -47
- package/src/compat/eme/load_session.ts +0 -67
- package/src/compat/enable_audio_track.ts +0 -33
- package/src/compat/event_listeners.ts +0 -566
- package/src/compat/fullscreen.ts +0 -87
- package/src/compat/get_start_date.ts +0 -48
- package/src/compat/has_issues_with_high_media_source_duration.ts +0 -27
- package/src/compat/index.ts +0 -87
- package/src/compat/is_codec_supported.ts +0 -40
- package/src/compat/is_debug_mode_enabled.ts +0 -12
- package/src/compat/is_node.ts +0 -18
- package/src/compat/is_offline.ts +0 -44
- package/src/compat/is_seeking_approximate.ts +0 -32
- package/src/compat/is_vtt_cue.ts +0 -30
- package/src/compat/make_vtt_cue.ts +0 -51
- package/src/compat/on_height_width_change.ts +0 -119
- package/src/compat/patch_webkit_source_buffer.ts +0 -89
- package/src/compat/remove_cue.ts +0 -64
- package/src/compat/should_favour_custom_safari_EME.ts +0 -34
- package/src/compat/should_prevent_seeking_at_0_initially.ts +0 -19
- package/src/compat/should_reload_media_source_on_decipherability_update.ts +0 -32
- package/src/compat/should_renew_media_key_system_access.ts +0 -26
- package/src/compat/should_unset_media_keys.ts +0 -27
- package/src/compat/should_validate_metadata.ts +0 -27
- package/src/compat/should_wait_for_data_before_loaded.ts +0 -35
- package/src/compat/should_wait_for_have_enough_data.ts +0 -17
- package/src/config.ts +0 -32
- package/src/core/README.md +0 -56
- package/src/core/adaptive/README.md +0 -147
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +0 -548
- package/src/core/adaptive/adaptive_representation_selector.ts +0 -916
- package/src/core/adaptive/buffer_based_chooser.ts +0 -264
- package/src/core/adaptive/guess_based_chooser.ts +0 -309
- package/src/core/adaptive/index.ts +0 -45
- package/src/core/adaptive/network_analyzer.ts +0 -419
- package/src/core/adaptive/utils/__tests__/bandwith_estimator.test.ts +0 -134
- package/src/core/adaptive/utils/__tests__/ewma.test.ts +0 -79
- package/src/core/adaptive/utils/__tests__/filter_by_bitrate.test.ts +0 -56
- package/src/core/adaptive/utils/__tests__/filter_by_width.test.ts +0 -60
- package/src/core/adaptive/utils/__tests__/get_buffer_levels.test.ts +0 -48
- package/src/core/adaptive/utils/__tests__/select_optimal_representation.test.ts +0 -243
- package/src/core/adaptive/utils/bandwidth_estimator.ts +0 -88
- package/src/core/adaptive/utils/ewma.ts +0 -59
- package/src/core/adaptive/utils/filter_by_bitrate.ts +0 -46
- package/src/core/adaptive/utils/filter_by_width.ts +0 -49
- package/src/core/adaptive/utils/get_buffer_levels.ts +0 -50
- package/src/core/adaptive/utils/last_estimate_storage.ts +0 -79
- package/src/core/adaptive/utils/pending_requests_store.ts +0 -147
- package/src/core/adaptive/utils/representation_score_calculator.ts +0 -168
- package/src/core/adaptive/utils/select_optimal_representation.ts +0 -54
- package/src/core/api/README.md +0 -36
- package/src/core/api/__tests__/option_utils.test.ts +0 -1668
- package/src/core/api/__tests__/public_api.test.ts +0 -857
- package/src/core/api/__tests__/utils.test.ts +0 -195
- package/src/core/api/debug/buffer_graph.ts +0 -244
- package/src/core/api/debug/buffer_size_graph.ts +0 -130
- package/src/core/api/debug/constants.ts +0 -2
- package/src/core/api/debug/index.ts +0 -3
- package/src/core/api/debug/modules/general_info.ts +0 -213
- package/src/core/api/debug/modules/segment_buffer_content.ts +0 -155
- package/src/core/api/debug/modules/segment_buffer_size.ts +0 -48
- package/src/core/api/debug/render.ts +0 -40
- package/src/core/api/debug/utils.ts +0 -103
- package/src/core/api/index.ts +0 -27
- package/src/core/api/option_utils.ts +0 -700
- package/src/core/api/playback_observer.ts +0 -994
- package/src/core/api/public_api.ts +0 -3247
- package/src/core/api/tracks_management/__tests__/media_element_track_choice_manager.test.ts +0 -184
- package/src/core/api/tracks_management/media_element_track_choice_manager.ts +0 -975
- package/src/core/api/tracks_management/track_choice_manager.ts +0 -1280
- package/src/core/api/utils.ts +0 -216
- package/src/core/decrypt/README.md +0 -22
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +0 -422
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +0 -677
- package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +0 -528
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +0 -343
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +0 -264
- package/src/core/decrypt/__tests__/__global__/utils.ts +0 -491
- package/src/core/decrypt/attach_media_keys.ts +0 -121
- package/src/core/decrypt/clear_on_stop.ts +0 -47
- package/src/core/decrypt/content_decryptor.ts +0 -1246
- package/src/core/decrypt/create_or_load_session.ts +0 -133
- package/src/core/decrypt/create_session.ts +0 -214
- package/src/core/decrypt/dispose_decryption_resources.ts +0 -54
- package/src/core/decrypt/find_key_system.ts +0 -376
- package/src/core/decrypt/get_key_system_configuration.ts +0 -51
- package/src/core/decrypt/get_media_keys.ts +0 -147
- package/src/core/decrypt/index.ts +0 -36
- package/src/core/decrypt/init_media_keys.ts +0 -60
- package/src/core/decrypt/session_events_listener.ts +0 -386
- package/src/core/decrypt/set_server_certificate.ts +0 -105
- package/src/core/decrypt/types.ts +0 -404
- package/src/core/decrypt/utils/__tests__/are_init_values_compatible.test.ts +0 -261
- package/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts +0 -158
- package/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +0 -133
- package/src/core/decrypt/utils/are_init_values_compatible.ts +0 -140
- package/src/core/decrypt/utils/check_key_statuses.ts +0 -193
- package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +0 -45
- package/src/core/decrypt/utils/clean_old_stored_persistent_info.ts +0 -48
- package/src/core/decrypt/utils/get_drm_system_id.ts +0 -42
- package/src/core/decrypt/utils/init_data_values_container.ts +0 -119
- package/src/core/decrypt/utils/is_session_usable.ts +0 -62
- package/src/core/decrypt/utils/key_id_comparison.ts +0 -57
- package/src/core/decrypt/utils/key_session_record.ts +0 -174
- package/src/core/decrypt/utils/loaded_sessions_store.ts +0 -505
- package/src/core/decrypt/utils/media_keys_infos_store.ts +0 -85
- package/src/core/decrypt/utils/persistent_sessions_store.ts +0 -358
- package/src/core/decrypt/utils/serializable_bytes.ts +0 -59
- package/src/core/decrypt/utils/server_certificate_store.ts +0 -133
- package/src/core/fetchers/README.md +0 -84
- package/src/core/fetchers/cdn_prioritizer.ts +0 -207
- package/src/core/fetchers/index.ts +0 -38
- package/src/core/fetchers/manifest/index.ts +0 -28
- package/src/core/fetchers/manifest/manifest_fetcher.ts +0 -798
- package/src/core/fetchers/segment/__tests__/task_prioritizer.test.ts +0 -763
- package/src/core/fetchers/segment/index.ts +0 -28
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +0 -113
- package/src/core/fetchers/segment/segment_fetcher.ts +0 -482
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +0 -129
- package/src/core/fetchers/segment/task_prioritizer.ts +0 -455
- package/src/core/fetchers/utils/error_selector.ts +0 -38
- package/src/core/fetchers/utils/schedule_request.ts +0 -493
- package/src/core/init/README.md +0 -81
- package/src/core/init/directfile_content_initializer.ts +0 -310
- package/src/core/init/index.ts +0 -22
- package/src/core/init/media_source_content_initializer.ts +0 -878
- package/src/core/init/types.ts +0 -266
- package/src/core/init/utils/__tests__/are_same_stream_events.test.ts +0 -84
- package/src/core/init/utils/__tests__/refresh_scheduled_events_list.test.ts +0 -94
- package/src/core/init/utils/content_time_boundaries_observer.ts +0 -646
- package/src/core/init/utils/create_media_source.ts +0 -139
- package/src/core/init/utils/create_stream_playback_observer.ts +0 -132
- package/src/core/init/utils/end_of_stream.ts +0 -108
- package/src/core/init/utils/get_initial_time.ts +0 -165
- package/src/core/init/utils/get_loaded_reference.ts +0 -82
- package/src/core/init/utils/initial_seek_and_play.ts +0 -237
- package/src/core/init/utils/initialize_content_decryption.ts +0 -172
- package/src/core/init/utils/media_source_duration_updater.ts +0 -349
- package/src/core/init/utils/rebuffering_controller.ts +0 -642
- package/src/core/init/utils/stream_events_emitter/are_same_stream_events.ts +0 -42
- package/src/core/init/utils/stream_events_emitter/index.ts +0 -22
- package/src/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.ts +0 -74
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +0 -252
- package/src/core/init/utils/stream_events_emitter/types.ts +0 -46
- package/src/core/init/utils/throw_on_media_error.ts +0 -74
- package/src/core/segment_buffers/README.md +0 -219
- package/src/core/segment_buffers/garbage_collector.ts +0 -177
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +0 -650
- package/src/core/segment_buffers/implementations/audio_video/index.ts +0 -18
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +0 -152
- package/src/core/segment_buffers/implementations/image/index.ts +0 -18
- package/src/core/segment_buffers/implementations/index.ts +0 -20
- package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +0 -343
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +0 -527
- package/src/core/segment_buffers/implementations/text/html/index.ts +0 -24
- package/src/core/segment_buffers/implementations/text/html/parsers.ts +0 -49
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +0 -391
- package/src/core/segment_buffers/implementations/text/html/types.ts +0 -23
- package/src/core/segment_buffers/implementations/text/html/update_proportional_elements.ts +0 -93
- package/src/core/segment_buffers/implementations/text/html/utils.ts +0 -139
- package/src/core/segment_buffers/implementations/text/native/index.ts +0 -19
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +0 -340
- package/src/core/segment_buffers/implementations/text/native/parsers.ts +0 -47
- package/src/core/segment_buffers/implementations/types.ts +0 -386
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +0 -80
- package/src/core/segment_buffers/index.ts +0 -67
- package/src/core/segment_buffers/inventory/buffered_history.ts +0 -131
- package/src/core/segment_buffers/inventory/index.ts +0 -30
- package/src/core/segment_buffers/inventory/segment_inventory.ts +0 -1111
- package/src/core/segment_buffers/inventory/types.ts +0 -35
- package/src/core/segment_buffers/segment_buffers_store.ts +0 -383
- package/src/core/stream/README.md +0 -59
- package/src/core/stream/adaptation/adaptation_stream.ts +0 -378
- package/src/core/stream/adaptation/index.ts +0 -20
- package/src/core/stream/adaptation/types.ts +0 -199
- package/src/core/stream/adaptation/utils/create_representation_estimator.ts +0 -114
- package/src/core/stream/index.ts +0 -38
- package/src/core/stream/orchestrator/README.md +0 -349
- package/src/core/stream/orchestrator/get_time_ranges_for_content.ts +0 -70
- package/src/core/stream/orchestrator/index.ts +0 -30
- package/src/core/stream/orchestrator/stream_orchestrator.ts +0 -664
- package/src/core/stream/period/index.ts +0 -20
- package/src/core/stream/period/period_stream.ts +0 -469
- package/src/core/stream/period/types.ts +0 -132
- package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +0 -287
- package/src/core/stream/representation/README.md +0 -16
- package/src/core/stream/representation/index.ts +0 -20
- package/src/core/stream/representation/representation_stream.ts +0 -474
- package/src/core/stream/representation/types.ts +0 -292
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +0 -77
- package/src/core/stream/representation/utils/check_for_discontinuity.ts +0 -305
- package/src/core/stream/representation/utils/downloading_queue.ts +0 -603
- package/src/core/stream/representation/utils/force_garbage_collection.ts +0 -113
- package/src/core/stream/representation/utils/get_buffer_status.ts +0 -322
- package/src/core/stream/representation/utils/get_needed_segments.ts +0 -617
- package/src/core/stream/representation/utils/get_segment_priority.ts +0 -43
- package/src/core/stream/representation/utils/push_init_segment.ts +0 -85
- package/src/core/stream/representation/utils/push_media_segment.ts +0 -113
- package/src/default_config.ts +0 -1293
- package/src/errors/README.md +0 -6
- package/src/errors/__tests__/assertion_error.test.ts +0 -26
- package/src/errors/__tests__/encrypted_media_error.test.ts +0 -45
- package/src/errors/__tests__/error_message.test.ts +0 -23
- package/src/errors/__tests__/format_error.test.ts +0 -62
- package/src/errors/__tests__/is_known_error.test.ts +0 -65
- package/src/errors/__tests__/media_error.test.ts +0 -55
- package/src/errors/__tests__/network_error.test.ts +0 -84
- package/src/errors/__tests__/other_error.test.ts +0 -53
- package/src/errors/__tests__/request_error.test.ts +0 -45
- package/src/errors/assertion_error.ts +0 -40
- package/src/errors/custom_loader_error.ts +0 -57
- package/src/errors/encrypted_media_error.ts +0 -71
- package/src/errors/error_codes.ts +0 -149
- package/src/errors/error_message.ts +0 -30
- package/src/errors/format_error.ts +0 -39
- package/src/errors/index.ts +0 -52
- package/src/errors/is_known_error.ts +0 -35
- package/src/errors/media_error.ts +0 -118
- package/src/errors/network_error.ts +0 -74
- package/src/errors/other_error.ts +0 -50
- package/src/errors/request_error.ts +0 -76
- package/src/experimental/README.md +0 -16
- package/src/experimental/features/__tests__/dash_wasm.test.ts +0 -44
- package/src/experimental/features/__tests__/debug_element.test.ts +0 -12
- package/src/experimental/features/__tests__/index.test.ts +0 -19
- package/src/experimental/features/__tests__/local.test.ts +0 -35
- package/src/experimental/features/__tests__/metaplaylist.test.ts +0 -35
- package/src/experimental/features/dash_wasm.ts +0 -41
- package/src/experimental/features/debug_element.ts +0 -13
- package/src/experimental/features/index.ts +0 -20
- package/src/experimental/features/local.ts +0 -28
- package/src/experimental/features/metaplaylist.ts +0 -28
- package/src/experimental/index.ts +0 -5
- package/src/experimental/tools/VideoThumbnailLoader/features/dash.ts +0 -23
- package/src/experimental/tools/VideoThumbnailLoader/features/metaplaylist.ts +0 -23
- package/src/experimental/tools/VideoThumbnailLoader/index.ts +0 -25
- package/src/experimental/tools/VideoThumbnailLoader/load_and_push_segment.ts +0 -77
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +0 -75
- package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +0 -54
- package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -39
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +0 -423
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.ts +0 -34
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +0 -141
- package/src/experimental/tools/createMetaplaylist/index.ts +0 -72
- package/src/experimental/tools/index.ts +0 -27
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts +0 -37
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +0 -140
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +0 -153
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +0 -405
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts +0 -136
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +0 -294
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +0 -189
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/utils.test.ts +0 -361
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +0 -184
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +0 -136
- package/src/experimental/tools/mediaCapabilitiesProber/capabilities.ts +0 -169
- package/src/experimental/tools/mediaCapabilitiesProber/index.ts +0 -18
- package/src/experimental/tools/mediaCapabilitiesProber/log.ts +0 -21
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +0 -67
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +0 -89
- package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +0 -100
- package/src/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.ts +0 -66
- package/src/experimental/tools/mediaCapabilitiesProber/probers/index.ts +0 -44
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +0 -66
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.ts +0 -100
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +0 -105
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +0 -54
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +0 -75
- package/src/experimental/tools/mediaCapabilitiesProber/utils.ts +0 -107
- package/src/experimental/tools/parseBIFThumbnails.ts +0 -39
- package/src/features/README.md +0 -11
- package/src/features/__tests__/add_features.test.ts +0 -69
- package/src/features/__tests__/initialize_features.test.ts +0 -674
- package/src/features/add_features.ts +0 -37
- package/src/features/features_object.ts +0 -37
- package/src/features/index.ts +0 -40
- package/src/features/initialize_features.ts +0 -136
- package/src/features/list/__tests__/bif_parser.test.ts +0 -30
- package/src/features/list/__tests__/dash.test.ts +0 -41
- package/src/features/list/__tests__/directfile.test.ts +0 -35
- package/src/features/list/__tests__/eme.test.ts +0 -28
- package/src/features/list/__tests__/html_sami_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_srt_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_text_buffer.test.ts +0 -29
- package/src/features/list/__tests__/html_ttml_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_vtt_parser.test.ts +0 -33
- package/src/features/list/__tests__/image_buffer.test.ts +0 -28
- package/src/features/list/__tests__/index.test.ts +0 -55
- package/src/features/list/__tests__/native_sami_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_srt_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_text_buffer.test.ts +0 -29
- package/src/features/list/__tests__/native_ttml_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_vtt_parser.test.ts +0 -33
- package/src/features/list/__tests__/smooth.test.ts +0 -36
- package/src/features/list/bif_parser.ts +0 -31
- package/src/features/list/dash.ts +0 -36
- package/src/features/list/directfile.ts +0 -35
- package/src/features/list/eme.ts +0 -29
- package/src/features/list/html_sami_parser.ts +0 -31
- package/src/features/list/html_srt_parser.ts +0 -31
- package/src/features/list/html_text_buffer.ts +0 -29
- package/src/features/list/html_ttml_parser.ts +0 -31
- package/src/features/list/html_vtt_parser.ts +0 -31
- package/src/features/list/image_buffer.ts +0 -29
- package/src/features/list/index.ts +0 -32
- package/src/features/list/native_sami_parser.ts +0 -32
- package/src/features/list/native_srt_parser.ts +0 -32
- package/src/features/list/native_text_buffer.ts +0 -30
- package/src/features/list/native_ttml_parser.ts +0 -32
- package/src/features/list/native_vtt_parser.ts +0 -32
- package/src/features/list/smooth.ts +0 -32
- package/src/features/types.ts +0 -183
- package/src/index.ts +0 -38
- package/src/log.ts +0 -22
- package/src/manifest/README.md +0 -55
- package/src/manifest/__tests__/adaptation.test.ts +0 -485
- package/src/manifest/__tests__/manifest.test.ts +0 -428
- package/src/manifest/__tests__/period.test.ts +0 -769
- package/src/manifest/__tests__/representation.test.ts +0 -297
- package/src/manifest/__tests__/update_period_in_place.test.ts +0 -1074
- package/src/manifest/__tests__/update_periods.test.ts +0 -845
- package/src/manifest/adaptation.ts +0 -294
- package/src/manifest/index.ts +0 -67
- package/src/manifest/manifest.ts +0 -811
- package/src/manifest/period.ts +0 -211
- package/src/manifest/representation.ts +0 -451
- package/src/manifest/representation_index/__tests__/static.test.ts +0 -74
- package/src/manifest/representation_index/index.ts +0 -31
- package/src/manifest/representation_index/static.ts +0 -158
- package/src/manifest/representation_index/types.ts +0 -433
- package/src/manifest/types.ts +0 -33
- package/src/manifest/update_period_in_place.ts +0 -142
- package/src/manifest/update_periods.ts +0 -201
- package/src/manifest/utils.ts +0 -60
- package/src/minimal.ts +0 -34
- package/src/parsers/README.md +0 -12
- package/src/parsers/containers/isobmff/constants.ts +0 -24
- package/src/parsers/containers/isobmff/create_box.ts +0 -81
- package/src/parsers/containers/isobmff/drm/index.ts +0 -17
- package/src/parsers/containers/isobmff/drm/playready.ts +0 -45
- package/src/parsers/containers/isobmff/get_box.ts +0 -278
- package/src/parsers/containers/isobmff/index.ts +0 -51
- package/src/parsers/containers/isobmff/read.ts +0 -105
- package/src/parsers/containers/isobmff/take_pssh_out.ts +0 -101
- package/src/parsers/containers/isobmff/utils.ts +0 -555
- package/src/parsers/containers/matroska/index.ts +0 -21
- package/src/parsers/containers/matroska/utils.ts +0 -313
- package/src/parsers/images/bif.ts +0 -128
- package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +0 -65
- package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +0 -37
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +0 -162
- package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +0 -65
- package/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +0 -165
- package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +0 -118
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +0 -290
- package/src/parsers/manifest/dash/common/__tests__/parse_availability_start_time.test.ts +0 -63
- package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +0 -55
- package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +0 -32
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +0 -87
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +0 -41
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +0 -94
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +0 -46
- package/src/parsers/manifest/dash/common/get_minimum_and_maximum_positions.ts +0 -39
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +0 -91
- package/src/parsers/manifest/dash/common/index.ts +0 -40
- package/src/parsers/manifest/dash/common/indexes/__tests__/tokens.test.ts +0 -60
- package/src/parsers/manifest/dash/common/indexes/base.ts +0 -444
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +0 -55
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +0 -148
- package/src/parsers/manifest/dash/common/indexes/index.ts +0 -39
- package/src/parsers/manifest/dash/common/indexes/list.ts +0 -338
- package/src/parsers/manifest/dash/common/indexes/template.ts +0 -652
- package/src/parsers/manifest/dash/common/indexes/timeline/__tests__/parse_s_element.test.ts +0 -115
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +0 -54
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.ts +0 -102
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +0 -66
- package/src/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.ts +0 -153
- package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +0 -21
- package/src/parsers/manifest/dash/common/indexes/timeline/parse_s_element.ts +0 -72
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +0 -1049
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +0 -127
- package/src/parsers/manifest/dash/common/indexes/utils.ts +0 -32
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +0 -142
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +0 -165
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +0 -569
- package/src/parsers/manifest/dash/common/parse_availability_start_time.ts +0 -35
- package/src/parsers/manifest/dash/common/parse_mpd.ts +0 -399
- package/src/parsers/manifest/dash/common/parse_periods.ts +0 -363
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +0 -199
- package/src/parsers/manifest/dash/common/parse_representations.ts +0 -352
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +0 -58
- package/src/parsers/manifest/dash/index.ts +0 -22
- package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +0 -45
- package/src/parsers/manifest/dash/js-parser/index.ts +0 -18
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +0 -381
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +0 -35
- package/src/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.ts +0 -49
- package/src/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.ts +0 -94
- package/src/parsers/manifest/dash/js-parser/node_parsers/EventStream.ts +0 -117
- package/src/parsers/manifest/dash/js-parser/node_parsers/Initialization.ts +0 -48
- package/src/parsers/manifest/dash/js-parser/node_parsers/MPD.ts +0 -180
- package/src/parsers/manifest/dash/js-parser/node_parsers/Period.ts +0 -152
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +0 -234
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.ts +0 -112
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentList.ts +0 -50
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +0 -98
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.ts +0 -35
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.ts +0 -63
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/AdaptationSet.test.ts +0 -407
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentComponent.test.ts +0 -67
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts +0 -223
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/Initialization.test.ts +0 -139
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts +0 -119
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts +0 -205
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/utils.test.ts +0 -218
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +0 -384
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +0 -129
- package/src/parsers/manifest/dash/node_parser_types.ts +0 -431
- package/src/parsers/manifest/dash/parsers_types.ts +0 -91
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +0 -25
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +0 -16
- package/src/parsers/manifest/dash/wasm-parser/README.md +0 -267
- package/src/parsers/manifest/dash/wasm-parser/index.ts +0 -21
- package/src/parsers/manifest/dash/wasm-parser/rs/errors.rs +0 -28
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +0 -373
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +0 -85
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +0 -414
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +0 -472
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/s_element.rs +0 -72
- package/src/parsers/manifest/dash/wasm-parser/rs/reader.rs +0 -17
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +0 -147
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +0 -217
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +0 -477
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +0 -343
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +0 -38
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.ts +0 -53
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.ts +0 -62
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +0 -144
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +0 -183
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +0 -180
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +0 -215
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.ts +0 -44
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.ts +0 -115
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +0 -61
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.ts +0 -133
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.ts +0 -70
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +0 -66
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/index.ts +0 -17
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +0 -66
- package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -80
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +0 -298
- package/src/parsers/manifest/dash/wasm-parser/ts/utils.ts +0 -47
- package/src/parsers/manifest/index.ts +0 -17
- package/src/parsers/manifest/local/index.ts +0 -25
- package/src/parsers/manifest/local/parse_local_manifest.ts +0 -164
- package/src/parsers/manifest/local/representation_index.ts +0 -246
- package/src/parsers/manifest/local/types.ts +0 -291
- package/src/parsers/manifest/metaplaylist/index.ts +0 -28
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +0 -335
- package/src/parsers/manifest/metaplaylist/representation_index.ts +0 -251
- package/src/parsers/manifest/smooth/create_parser.ts +0 -699
- package/src/parsers/manifest/smooth/get_codecs.ts +0 -55
- package/src/parsers/manifest/smooth/index.ts +0 -26
- package/src/parsers/manifest/smooth/parse_C_nodes.ts +0 -69
- package/src/parsers/manifest/smooth/parse_protection_node.ts +0 -72
- package/src/parsers/manifest/smooth/representation_index.ts +0 -704
- package/src/parsers/manifest/smooth/utils/add_segment_infos.ts +0 -77
- package/src/parsers/manifest/smooth/utils/parseBoolean.ts +0 -31
- package/src/parsers/manifest/smooth/utils/reduceChildren.ts +0 -36
- package/src/parsers/manifest/smooth/utils/tokens.ts +0 -46
- package/src/parsers/manifest/types.ts +0 -395
- package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +0 -161
- package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +0 -161
- package/src/parsers/manifest/utils/__tests__/index_helpers.test.ts +0 -55
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +0 -546
- package/src/parsers/manifest/utils/check_manifest_ids.ts +0 -83
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +0 -74
- package/src/parsers/manifest/utils/get_first_time_from_adaptation.ts +0 -48
- package/src/parsers/manifest/utils/get_last_time_from_adaptation.ts +0 -50
- package/src/parsers/manifest/utils/get_maximum_positions.ts +0 -87
- package/src/parsers/manifest/utils/get_minimum_position.ts +0 -80
- package/src/parsers/manifest/utils/index_helpers.ts +0 -204
- package/src/parsers/manifest/utils/update_segment_timeline.ts +0 -141
- package/src/parsers/texttracks/index.ts +0 -21
- package/src/parsers/texttracks/sami/html.ts +0 -219
- package/src/parsers/texttracks/sami/native.ts +0 -192
- package/src/parsers/texttracks/srt/__tests__/find_end_of_cue_block.test.ts +0 -99
- package/src/parsers/texttracks/srt/__tests__/get_cue_blocks.test.ts +0 -119
- package/src/parsers/texttracks/srt/__tests__/parse_cue.test.ts +0 -123
- package/src/parsers/texttracks/srt/__tests__/parse_timestamp.test.ts +0 -36
- package/src/parsers/texttracks/srt/find_end_of_cue_block.ts +0 -46
- package/src/parsers/texttracks/srt/get_cue_blocks.ts +0 -49
- package/src/parsers/texttracks/srt/html.ts +0 -182
- package/src/parsers/texttracks/srt/native.ts +0 -74
- package/src/parsers/texttracks/srt/parse_cue.ts +0 -76
- package/src/parsers/texttracks/srt/parse_timestamp.ts +0 -37
- package/src/parsers/texttracks/ttml/__tests__/resolve_styles_inheritance.test.ts +0 -248
- package/src/parsers/texttracks/ttml/get_parameters.ts +0 -106
- package/src/parsers/texttracks/ttml/get_styling.ts +0 -146
- package/src/parsers/texttracks/ttml/get_time_delimiters.ts +0 -49
- package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.test.ts +0 -190
- package/src/parsers/texttracks/ttml/html/__tests__/generate_css_test_outline.test.ts +0 -32
- package/src/parsers/texttracks/ttml/html/__tests__/ttml_color_to_css_color.test.ts +0 -62
- package/src/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.ts +0 -67
- package/src/parsers/texttracks/ttml/html/apply_extent.ts +0 -65
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +0 -62
- package/src/parsers/texttracks/ttml/html/apply_line_height.ts +0 -50
- package/src/parsers/texttracks/ttml/html/apply_origin.ts +0 -64
- package/src/parsers/texttracks/ttml/html/apply_padding.ts +0 -141
- package/src/parsers/texttracks/ttml/html/create_element.ts +0 -549
- package/src/parsers/texttracks/ttml/html/generate_css_test_outline.ts +0 -46
- package/src/parsers/texttracks/ttml/html/index.ts +0 -23
- package/src/parsers/texttracks/ttml/html/parse_cue.ts +0 -65
- package/src/parsers/texttracks/ttml/html/parse_ttml_to_div.ts +0 -58
- package/src/parsers/texttracks/ttml/html/ttml_color_to_css_color.ts +0 -68
- package/src/parsers/texttracks/ttml/native/index.ts +0 -23
- package/src/parsers/texttracks/ttml/native/parse_cue.ts +0 -245
- package/src/parsers/texttracks/ttml/native/parse_ttml_to_vtt.ts +0 -39
- package/src/parsers/texttracks/ttml/parse_ttml.ts +0 -206
- package/src/parsers/texttracks/ttml/regexps.ts +0 -65
- package/src/parsers/texttracks/ttml/resolve_styles_inheritance.ts +0 -84
- package/src/parsers/texttracks/ttml/time_parsing.ts +0 -156
- package/src/parsers/texttracks/ttml/xml_utils.ts +0 -166
- package/src/parsers/texttracks/types.ts +0 -34
- package/src/parsers/texttracks/webvtt/__tests__/get_cue_blocks.test.ts +0 -218
- package/src/parsers/texttracks/webvtt/__tests__/get_style_blocks.test.ts +0 -65
- package/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +0 -249
- package/src/parsers/texttracks/webvtt/__tests__/parse_timestamp.test.ts +0 -39
- package/src/parsers/texttracks/webvtt/__tests__/utils.test.ts +0 -401
- package/src/parsers/texttracks/webvtt/get_cue_blocks.ts +0 -51
- package/src/parsers/texttracks/webvtt/get_style_blocks.ts +0 -56
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +0 -106
- package/src/parsers/texttracks/webvtt/html/__tests__/create_default_style_elements.test.ts +0 -44
- package/src/parsers/texttracks/webvtt/html/__tests__/create_style_attribute.test.ts +0 -139
- package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +0 -140
- package/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts +0 -345
- package/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +0 -181
- package/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +0 -234
- package/src/parsers/texttracks/webvtt/html/convert_payload_to_html.ts +0 -46
- package/src/parsers/texttracks/webvtt/html/create_default_style_elements.ts +0 -26
- package/src/parsers/texttracks/webvtt/html/create_style_attribute.ts +0 -222
- package/src/parsers/texttracks/webvtt/html/create_styled_element.ts +0 -95
- package/src/parsers/texttracks/webvtt/html/index.ts +0 -25
- package/src/parsers/texttracks/webvtt/html/parse_style_block.ts +0 -76
- package/src/parsers/texttracks/webvtt/html/parse_webvtt_to_div.ts +0 -67
- package/src/parsers/texttracks/webvtt/html/to_html.ts +0 -96
- package/src/parsers/texttracks/webvtt/native/index.ts +0 -23
- package/src/parsers/texttracks/webvtt/native/parse_vtt_to_cues.ts +0 -70
- package/src/parsers/texttracks/webvtt/native/set_settings_on_cue.ts +0 -95
- package/src/parsers/texttracks/webvtt/native/to_native_cue.ts +0 -34
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +0 -128
- package/src/parsers/texttracks/webvtt/parse_timestamp.ts +0 -40
- package/src/parsers/texttracks/webvtt/utils.ts +0 -135
- package/src/public_types.ts +0 -846
- package/src/tools/README.md +0 -4
- package/src/tools/TextTrackRenderer/index.ts +0 -28
- package/src/tools/TextTrackRenderer/text_track_renderer.ts +0 -107
- package/src/tools/index.ts +0 -20
- package/src/tools/string_utils.ts +0 -24
- package/src/transports/README.md +0 -276
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +0 -98
- package/src/transports/dash/construct_segment_url.ts +0 -28
- package/src/transports/dash/extract_complete_chunks.ts +0 -66
- package/src/transports/dash/get_events_out_of_emsgs.ts +0 -105
- package/src/transports/dash/image_pipelines.ts +0 -122
- package/src/transports/dash/index.ts +0 -23
- package/src/transports/dash/init_segment_loader.ts +0 -114
- package/src/transports/dash/low_latency_segment_loader.ts +0 -87
- package/src/transports/dash/manifest_parser.ts +0 -325
- package/src/transports/dash/pipelines.ts +0 -72
- package/src/transports/dash/segment_loader.ts +0 -249
- package/src/transports/dash/segment_parser.ts +0 -194
- package/src/transports/dash/text_loader.ts +0 -120
- package/src/transports/dash/text_parser.ts +0 -234
- package/src/transports/index.ts +0 -17
- package/src/transports/local/index.ts +0 -18
- package/src/transports/local/pipelines.ts +0 -100
- package/src/transports/local/segment_loader.ts +0 -198
- package/src/transports/local/segment_parser.ts +0 -101
- package/src/transports/local/text_parser.ts +0 -185
- package/src/transports/metaplaylist/README.md +0 -94
- package/src/transports/metaplaylist/index.ts +0 -23
- package/src/transports/metaplaylist/manifest_loader.ts +0 -62
- package/src/transports/metaplaylist/pipelines.ts +0 -425
- package/src/transports/smooth/extract_timings_infos.ts +0 -142
- package/src/transports/smooth/index.ts +0 -23
- package/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +0 -231
- package/src/transports/smooth/isobmff/create_audio_init_segment.ts +0 -84
- package/src/transports/smooth/isobmff/create_boxes.ts +0 -481
- package/src/transports/smooth/isobmff/create_init_segment.ts +0 -100
- package/src/transports/smooth/isobmff/create_traf_box.ts +0 -40
- package/src/transports/smooth/isobmff/create_video_init_segment.ts +0 -78
- package/src/transports/smooth/isobmff/get_aaces_header.ts +0 -62
- package/src/transports/smooth/isobmff/index.ts +0 -32
- package/src/transports/smooth/isobmff/parse_tfrf.ts +0 -57
- package/src/transports/smooth/isobmff/parse_tfxd.ts +0 -38
- package/src/transports/smooth/isobmff/patch_segment.ts +0 -171
- package/src/transports/smooth/pipelines.ts +0 -533
- package/src/transports/smooth/segment_loader.ts +0 -288
- package/src/transports/smooth/utils.ts +0 -106
- package/src/transports/types.ts +0 -809
- package/src/transports/utils/__tests__/byte_range.test.ts +0 -35
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +0 -148
- package/src/transports/utils/__tests__/find_complete_box.test.ts +0 -138
- package/src/transports/utils/__tests__/infer_segment_container.test.ts +0 -227
- package/src/transports/utils/byte_range.ts +0 -25
- package/src/transports/utils/call_custom_manifest_loader.ts +0 -147
- package/src/transports/utils/check_isobmff_integrity.ts +0 -50
- package/src/transports/utils/find_complete_box.ts +0 -63
- package/src/transports/utils/generate_manifest_loader.ts +0 -97
- package/src/transports/utils/get_isobmff_timing_infos.ts +0 -86
- package/src/transports/utils/infer_segment_container.ts +0 -56
- package/src/transports/utils/parse_text_track.ts +0 -176
- package/src/typings/README.md +0 -7
- package/src/typings/globals.d.ts +0 -83
- package/src/typings/next-tick.d.ts +0 -23
- package/src/utils/README.md +0 -5
- package/src/utils/__tests__/are_arrays_of_numbers_equal.test.ts +0 -86
- package/src/utils/__tests__/are_codecs_compatible.test.ts +0 -88
- package/src/utils/__tests__/array_find.test.ts +0 -113
- package/src/utils/__tests__/array_find_index.test.ts +0 -113
- package/src/utils/__tests__/array_includes.test.ts +0 -151
- package/src/utils/__tests__/assert.test.ts +0 -237
- package/src/utils/__tests__/assert_unreachable.test.ts +0 -40
- package/src/utils/__tests__/base64.test.ts +0 -147
- package/src/utils/__tests__/byte_parsing.test.ts +0 -267
- package/src/utils/__tests__/deep_merge.test.ts +0 -48
- package/src/utils/__tests__/event_emitter.test.ts +0 -579
- package/src/utils/__tests__/flat_map.test.ts +0 -71
- package/src/utils/__tests__/get_fuzzed_delay.test.ts +0 -32
- package/src/utils/__tests__/hash_buffer.test.ts +0 -105
- package/src/utils/__tests__/id_generator.test.ts +0 -80
- package/src/utils/__tests__/initialization_segment_cache.test.ts +0 -245
- package/src/utils/__tests__/is_non_empty_string.test.ts +0 -41
- package/src/utils/__tests__/is_null_or_undefined.test.ts +0 -33
- package/src/utils/__tests__/list_to_map.test.ts +0 -46
- package/src/utils/__tests__/logger.test.ts +0 -214
- package/src/utils/__tests__/noop.test.ts +0 -23
- package/src/utils/__tests__/object_assign.test.ts +0 -56
- package/src/utils/__tests__/object_values.test.ts +0 -26
- package/src/utils/__tests__/ranges.test.ts +0 -907
- package/src/utils/__tests__/resolve_url.test.ts +0 -100
- package/src/utils/__tests__/simple_set.test.ts +0 -57
- package/src/utils/__tests__/sorted_list.test.ts +0 -335
- package/src/utils/__tests__/starts_with.test.ts +0 -65
- package/src/utils/__tests__/string_parsing.test.ts +0 -267
- package/src/utils/__tests__/uniq.test.ts +0 -134
- package/src/utils/__tests__/warn_once.test.ts +0 -38
- package/src/utils/__tests__/weak_map_memory.test.ts +0 -188
- package/src/utils/are_arrays_of_numbers_equal.ts +0 -39
- package/src/utils/are_codecs_compatible.ts +0 -51
- package/src/utils/array_find.ts +0 -55
- package/src/utils/array_find_index.ts +0 -54
- package/src/utils/array_includes.ts +0 -93
- package/src/utils/assert.ts +0 -65
- package/src/utils/assert_unreachable.ts +0 -45
- package/src/utils/base64.ts +0 -153
- package/src/utils/byte_parsing.ts +0 -256
- package/src/utils/cancellable_sleep.ts +0 -41
- package/src/utils/create_cancellable_promise.ts +0 -69
- package/src/utils/deep_merge.ts +0 -49
- package/src/utils/event_emitter.ts +0 -147
- package/src/utils/flat_map.ts +0 -50
- package/src/utils/get_fuzzed_delay.ts +0 -27
- package/src/utils/hash_buffer.ts +0 -42
- package/src/utils/id_generator.ts +0 -35
- package/src/utils/initialization_segment_cache.ts +0 -68
- package/src/utils/is_non_empty_string.ts +0 -23
- package/src/utils/is_null_or_undefined.ts +0 -27
- package/src/utils/languages/ISO_639-1_to_ISO_639-3.ts +0 -207
- package/src/utils/languages/ISO_639-2_to_ISO_639-3.ts +0 -43
- package/src/utils/languages/__tests__/normalize.test.ts +0 -290
- package/src/utils/languages/index.ts +0 -29
- package/src/utils/languages/normalize.ts +0 -152
- package/src/utils/list_to_map.ts +0 -32
- package/src/utils/logger.ts +0 -100
- package/src/utils/noop.ts +0 -26
- package/src/utils/object_assign.ts +0 -60
- package/src/utils/object_values.ts +0 -31
- package/src/utils/ranges.ts +0 -499
- package/src/utils/reference.ts +0 -390
- package/src/utils/request/fetch.ts +0 -250
- package/src/utils/request/index.ts +0 -38
- package/src/utils/request/xhr.ts +0 -287
- package/src/utils/resolve_url.ts +0 -126
- package/src/utils/retry_promise_with_backoff.ts +0 -95
- package/src/utils/simple_set.ts +0 -67
- package/src/utils/sleep.ts +0 -14
- package/src/utils/slice_uint8array.ts +0 -53
- package/src/utils/sorted_list.ts +0 -240
- package/src/utils/starts_with.ts +0 -42
- package/src/utils/string_parsing.ts +0 -414
- package/src/utils/task_canceller.ts +0 -367
- package/src/utils/uniq.ts +0 -49
- package/src/utils/warn_once.ts +0 -34
- package/src/utils/weak_map_memory.ts +0 -89
- package/src/utils/wrapInPromise.ts +0 -24
- package/tsconfig.json +0 -28
- package/tsconfig.modules.json +0 -36
|
@@ -1,493 +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 { isOffline } from "../../../compat";
|
|
18
|
-
import {
|
|
19
|
-
CustomLoaderError,
|
|
20
|
-
isKnownError,
|
|
21
|
-
NetworkErrorTypes,
|
|
22
|
-
RequestError,
|
|
23
|
-
} from "../../../errors";
|
|
24
|
-
import log from "../../../log";
|
|
25
|
-
import { ICdnMetadata } from "../../../parsers/manifest";
|
|
26
|
-
import cancellableSleep from "../../../utils/cancellable_sleep";
|
|
27
|
-
import getFuzzedDelay from "../../../utils/get_fuzzed_delay";
|
|
28
|
-
import noop from "../../../utils/noop";
|
|
29
|
-
import TaskCanceller, {
|
|
30
|
-
CancellationSignal,
|
|
31
|
-
} from "../../../utils/task_canceller";
|
|
32
|
-
import CdnPrioritizer from "../cdn_prioritizer";
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Called on a loader error.
|
|
36
|
-
* Returns whether the loader request should be retried.
|
|
37
|
-
*
|
|
38
|
-
* TODO the notion of retrying or not could be transport-specific (e.g. 412 are
|
|
39
|
-
* mainly used for Smooth contents) and thus as part of the transport code (e.g.
|
|
40
|
-
* by rejecting with an error always having a `canRetry` property?).
|
|
41
|
-
* Or not, to ponder.
|
|
42
|
-
*
|
|
43
|
-
* @param {Error} error
|
|
44
|
-
* @returns {Boolean} - If true, the request can be retried.
|
|
45
|
-
*/
|
|
46
|
-
function shouldRetry(error : unknown) : boolean {
|
|
47
|
-
if (error instanceof RequestError) {
|
|
48
|
-
if (error.type === NetworkErrorTypes.ERROR_HTTP_CODE) {
|
|
49
|
-
return error.status >= 500 ||
|
|
50
|
-
error.status === 404 ||
|
|
51
|
-
error.status === 415 || // some CDN seems to use that code when
|
|
52
|
-
// requesting low-latency segments too much
|
|
53
|
-
// in advance
|
|
54
|
-
error.status === 412;
|
|
55
|
-
}
|
|
56
|
-
return error.type === NetworkErrorTypes.TIMEOUT ||
|
|
57
|
-
error.type === NetworkErrorTypes.ERROR_EVENT;
|
|
58
|
-
} else if (error instanceof CustomLoaderError) {
|
|
59
|
-
if (typeof error.canRetry === "boolean") {
|
|
60
|
-
return error.canRetry;
|
|
61
|
-
}
|
|
62
|
-
if (error.xhr !== undefined) {
|
|
63
|
-
return error.xhr.status >= 500 ||
|
|
64
|
-
error.xhr.status === 404 ||
|
|
65
|
-
error.xhr.status === 415 || // some CDN seems to use that code when
|
|
66
|
-
// requesting low-latency segments too much
|
|
67
|
-
// in advance
|
|
68
|
-
error.xhr.status === 412;
|
|
69
|
-
}
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
return isKnownError(error) && error.code === "INTEGRITY_ERROR";
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Returns true if we're pretty sure that the current error is due to the
|
|
77
|
-
* user being offline.
|
|
78
|
-
* @param {Error} error
|
|
79
|
-
* @returns {Boolean}
|
|
80
|
-
*/
|
|
81
|
-
function isOfflineRequestError(error : unknown) : boolean {
|
|
82
|
-
if (error instanceof RequestError) {
|
|
83
|
-
return error.type === NetworkErrorTypes.ERROR_EVENT &&
|
|
84
|
-
isOffline();
|
|
85
|
-
} else if (error instanceof CustomLoaderError) {
|
|
86
|
-
return error.isOfflineError;
|
|
87
|
-
}
|
|
88
|
-
return false; // under doubt, return false
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/** Settings to give to the backoff functions to configure their behavior. */
|
|
92
|
-
export interface IBackoffSettings {
|
|
93
|
-
/**
|
|
94
|
-
* Initial delay to wait if a request fails before making a new request, in
|
|
95
|
-
* milliseconds.
|
|
96
|
-
*/
|
|
97
|
-
baseDelay : number;
|
|
98
|
-
/**
|
|
99
|
-
* Maximum delay to wait if a request fails before making a new request, in
|
|
100
|
-
* milliseconds.
|
|
101
|
-
*/
|
|
102
|
-
maxDelay : number;
|
|
103
|
-
/**
|
|
104
|
-
* Maximum number of retries to perform on "regular" errors (e.g. due to HTTP
|
|
105
|
-
* status, integrity errors, timeouts...).
|
|
106
|
-
*/
|
|
107
|
-
maxRetryRegular : number;
|
|
108
|
-
/**
|
|
109
|
-
* Maximum number of retries to perform when it appears that the user is
|
|
110
|
-
* currently offline.
|
|
111
|
-
*/
|
|
112
|
-
maxRetryOffline : number;
|
|
113
|
-
/** Callback called when a request is retried. */
|
|
114
|
-
onRetry : (err : unknown) => void;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const enum REQUEST_ERROR_TYPES { None,
|
|
118
|
-
Regular,
|
|
119
|
-
Offline }
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Guess the type of error obtained.
|
|
123
|
-
* @param {*} error
|
|
124
|
-
* @returns {number}
|
|
125
|
-
*/
|
|
126
|
-
function getRequestErrorType(error : unknown) : REQUEST_ERROR_TYPES {
|
|
127
|
-
return isOfflineRequestError(error) ? REQUEST_ERROR_TYPES.Offline :
|
|
128
|
-
REQUEST_ERROR_TYPES.Regular;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Specific algorithm used to perform segment and manifest requests.
|
|
133
|
-
*
|
|
134
|
-
* Here how it works:
|
|
135
|
-
*
|
|
136
|
-
* 1. You give it one or multiple of the CDN available for the resource you
|
|
137
|
-
* want to request (from the most important one to the least important),
|
|
138
|
-
* a callback doing the request with the chosen CDN in argument, and some
|
|
139
|
-
* options.
|
|
140
|
-
*
|
|
141
|
-
* 2. it tries to call the request callback with the most prioritized CDN
|
|
142
|
-
* first:
|
|
143
|
-
* - if it works as expected, it resolves the returned Promise with that
|
|
144
|
-
* request's response.
|
|
145
|
-
* - if it fails, it calls ther `onRetry` callback given with the
|
|
146
|
-
* corresponding error, un-prioritize that CDN and try with the new
|
|
147
|
-
* most prioritized CDN.
|
|
148
|
-
*
|
|
149
|
-
* Each CDN might be retried multiple times, depending on the nature of the
|
|
150
|
-
* error and the Configuration given.
|
|
151
|
-
*
|
|
152
|
-
* Multiple retries of the same CDN are done after a delay to avoid
|
|
153
|
-
* overwhelming it, this is what we call a "backoff". That delay raises
|
|
154
|
-
* exponentially as multiple consecutive errors are encountered on this
|
|
155
|
-
* CDN.
|
|
156
|
-
*
|
|
157
|
-
* @param {Array.<string>|null} cdns - The different CDN on which the
|
|
158
|
-
* wanted resource is available. `scheduleRequestWithCdns` will call the
|
|
159
|
-
* `performRequest` callback with the right element from that array if different
|
|
160
|
-
* from `null`.
|
|
161
|
-
*
|
|
162
|
-
* Can be set to `null` when that resource is not reachable through a CDN, in
|
|
163
|
-
* which case the `performRequest` callback may be called with `null`.
|
|
164
|
-
* @param {Object|null} cdnPrioritizer - Interface allowing to give the priority
|
|
165
|
-
* between multiple CDNs.
|
|
166
|
-
* @param {Function} performRequest - Callback implementing the request in
|
|
167
|
-
* itself. Resolving when the resource request succeed and rejecting with the
|
|
168
|
-
* corresponding error when the request failed.
|
|
169
|
-
* @param {Object} options - Configuration allowing to tweak the number on which
|
|
170
|
-
* the algorithm behind `scheduleRequestWithCdns` bases itself.
|
|
171
|
-
* @param {Object} cancellationSignal - CancellationSignal allowing to cancel
|
|
172
|
-
* the logic of `scheduleRequestWithCdns`.
|
|
173
|
-
* To trigger if the resource is not needed anymore.
|
|
174
|
-
* @returns {Promise} - Promise resolving, with the corresponding
|
|
175
|
-
* `performRequest`'s data, when the resource request succeed and rejecting in
|
|
176
|
-
* the following scenarios:
|
|
177
|
-
* - `scheduleRequestWithCdns` has been cancelled due to `cancellationSignal`
|
|
178
|
-
* being triggered. In that case a `CancellationError` is thrown.
|
|
179
|
-
*
|
|
180
|
-
* - The resource request(s) failed and will not be retried anymore.
|
|
181
|
-
*/
|
|
182
|
-
export async function scheduleRequestWithCdns<T>(
|
|
183
|
-
cdns : ICdnMetadata[] | null,
|
|
184
|
-
cdnPrioritizer : CdnPrioritizer | null,
|
|
185
|
-
performRequest : (
|
|
186
|
-
cdn : ICdnMetadata | null,
|
|
187
|
-
cancellationSignal : CancellationSignal
|
|
188
|
-
) => Promise<T>,
|
|
189
|
-
options : IBackoffSettings,
|
|
190
|
-
cancellationSignal : CancellationSignal
|
|
191
|
-
) : Promise<T> {
|
|
192
|
-
if (cancellationSignal.cancellationError !== null) {
|
|
193
|
-
return Promise.reject(cancellationSignal.cancellationError);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
const { baseDelay,
|
|
197
|
-
maxDelay,
|
|
198
|
-
maxRetryRegular,
|
|
199
|
-
maxRetryOffline,
|
|
200
|
-
onRetry } = options;
|
|
201
|
-
|
|
202
|
-
if (cdns !== null && cdns.length === 0) {
|
|
203
|
-
log.warn("Fetchers: no CDN given to `scheduleRequestWithCdns`.");
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
const missedAttempts : Map<ICdnMetadata | null, ICdnAttemptMetadata> = new Map();
|
|
207
|
-
const initialCdnToRequest = getCdnToRequest();
|
|
208
|
-
if (initialCdnToRequest === undefined) {
|
|
209
|
-
throw new Error("No CDN to request");
|
|
210
|
-
}
|
|
211
|
-
return requestCdn(initialCdnToRequest);
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Returns what is now the most prioritary CDN to request the wanted resource.
|
|
215
|
-
*
|
|
216
|
-
* A return value of `null` indicates that the resource can be requested
|
|
217
|
-
* through another mean than by doing an HTTP request.
|
|
218
|
-
*
|
|
219
|
-
* A return value of `undefined` indicates that there's no CDN left to request
|
|
220
|
-
* the resource.
|
|
221
|
-
* @returns {Object|null|undefined}
|
|
222
|
-
*/
|
|
223
|
-
function getCdnToRequest() : ICdnMetadata | null | undefined {
|
|
224
|
-
if (cdns === null) {
|
|
225
|
-
const nullAttemptObject = missedAttempts.get(null);
|
|
226
|
-
if (nullAttemptObject !== undefined && nullAttemptObject.isBlacklisted) {
|
|
227
|
-
return undefined;
|
|
228
|
-
}
|
|
229
|
-
return null;
|
|
230
|
-
} else if (cdnPrioritizer === null) {
|
|
231
|
-
return getPrioritaryRequestableCdnFromSortedList(cdns);
|
|
232
|
-
} else {
|
|
233
|
-
const prioritized = cdnPrioritizer.getCdnPreferenceForResource(cdns);
|
|
234
|
-
return getPrioritaryRequestableCdnFromSortedList(prioritized);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Perform immediately the request for the given CDN.
|
|
240
|
-
*
|
|
241
|
-
* If it fails, forbid the CDN from being used - optionally and in some
|
|
242
|
-
* conditions, only temporarily, then try the next CDN according to
|
|
243
|
-
* previously-set delays (with a potential sleep before to respect them).
|
|
244
|
-
*
|
|
245
|
-
* Reject if both the request fails and there's no CDN left to use.
|
|
246
|
-
* @param {string|null} cdn
|
|
247
|
-
* @returns {Promise}
|
|
248
|
-
*/
|
|
249
|
-
async function requestCdn(cdn : ICdnMetadata | null) : Promise<T> {
|
|
250
|
-
try {
|
|
251
|
-
const res = await performRequest(cdn, cancellationSignal);
|
|
252
|
-
return res;
|
|
253
|
-
} catch (error : unknown) {
|
|
254
|
-
if (TaskCanceller.isCancellationError(error)) {
|
|
255
|
-
throw error;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
if (cdn !== null && cdnPrioritizer !== null) {
|
|
259
|
-
// We failed requesting the resource on this CDN.
|
|
260
|
-
// Globally give priority to the next CDN through the CdnPrioritizer.
|
|
261
|
-
cdnPrioritizer.downgradeCdn(cdn);
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
const currentErrorType = getRequestErrorType(error);
|
|
265
|
-
|
|
266
|
-
let missedAttemptsObj = missedAttempts.get(cdn);
|
|
267
|
-
if (missedAttemptsObj === undefined) {
|
|
268
|
-
missedAttemptsObj = { errorCounter: 1,
|
|
269
|
-
lastErrorType: currentErrorType,
|
|
270
|
-
blockedUntil: undefined,
|
|
271
|
-
isBlacklisted: false };
|
|
272
|
-
missedAttempts.set(cdn, missedAttemptsObj);
|
|
273
|
-
} else {
|
|
274
|
-
if (currentErrorType !== missedAttemptsObj.lastErrorType) {
|
|
275
|
-
missedAttemptsObj.errorCounter = 1;
|
|
276
|
-
missedAttemptsObj.lastErrorType = currentErrorType;
|
|
277
|
-
} else {
|
|
278
|
-
missedAttemptsObj.errorCounter++;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
if (!shouldRetry(error)) {
|
|
283
|
-
missedAttemptsObj.blockedUntil = undefined;
|
|
284
|
-
missedAttemptsObj.isBlacklisted = true;
|
|
285
|
-
return retryWithNextCdn(error);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
const maxRetry = currentErrorType === REQUEST_ERROR_TYPES.Offline ?
|
|
289
|
-
maxRetryOffline :
|
|
290
|
-
maxRetryRegular;
|
|
291
|
-
|
|
292
|
-
if (missedAttemptsObj.errorCounter > maxRetry) {
|
|
293
|
-
missedAttemptsObj.blockedUntil = undefined;
|
|
294
|
-
missedAttemptsObj.isBlacklisted = true;
|
|
295
|
-
} else {
|
|
296
|
-
const errorCounter = missedAttemptsObj.errorCounter;
|
|
297
|
-
const delay = Math.min(baseDelay * Math.pow(2, errorCounter - 1),
|
|
298
|
-
maxDelay);
|
|
299
|
-
const fuzzedDelay = getFuzzedDelay(delay);
|
|
300
|
-
missedAttemptsObj.blockedUntil = performance.now() + fuzzedDelay;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
return retryWithNextCdn(error);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* After a request error, find the new most prioritary CDN and perform the
|
|
309
|
-
* request with it, optionally after a delay.
|
|
310
|
-
*
|
|
311
|
-
* If there's no CDN left to test, reject the original request error.
|
|
312
|
-
* @param {*} prevRequestError
|
|
313
|
-
* @returns {Promise}
|
|
314
|
-
*/
|
|
315
|
-
async function retryWithNextCdn(prevRequestError : unknown) : Promise<T> {
|
|
316
|
-
const nextCdn = getCdnToRequest();
|
|
317
|
-
|
|
318
|
-
if (cancellationSignal.isCancelled()) {
|
|
319
|
-
throw cancellationSignal.cancellationError;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
if (nextCdn === undefined) {
|
|
323
|
-
throw prevRequestError;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
onRetry(prevRequestError);
|
|
327
|
-
if (cancellationSignal.isCancelled()) {
|
|
328
|
-
throw cancellationSignal.cancellationError;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
return waitPotentialBackoffAndRequest(nextCdn, prevRequestError);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* Request the corresponding CDN after the optional backoff needed before
|
|
336
|
-
* requesting it.
|
|
337
|
-
*
|
|
338
|
-
* If a new CDN become prioritary in the meantime, request it instead, again
|
|
339
|
-
* awaiting its optional backoff delay if it exists.
|
|
340
|
-
* @param {string|null} nextWantedCdn
|
|
341
|
-
* @param {*} prevRequestError
|
|
342
|
-
* @returns {Promise}
|
|
343
|
-
*/
|
|
344
|
-
function waitPotentialBackoffAndRequest(
|
|
345
|
-
nextWantedCdn: ICdnMetadata | null,
|
|
346
|
-
prevRequestError : unknown
|
|
347
|
-
) : Promise<T> {
|
|
348
|
-
const nextCdnAttemptObj = missedAttempts.get(nextWantedCdn);
|
|
349
|
-
if (nextCdnAttemptObj === undefined ||
|
|
350
|
-
nextCdnAttemptObj.blockedUntil === undefined)
|
|
351
|
-
{
|
|
352
|
-
return requestCdn(nextWantedCdn);
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
const now = performance.now();
|
|
356
|
-
const blockedFor = nextCdnAttemptObj.blockedUntil - now;
|
|
357
|
-
if (blockedFor <= 0) {
|
|
358
|
-
return requestCdn(nextWantedCdn);
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
const canceller = new TaskCanceller();
|
|
362
|
-
const unlinkCanceller = canceller.linkToSignal(cancellationSignal);
|
|
363
|
-
return new Promise<T>((res, rej) => {
|
|
364
|
-
/* eslint-disable-next-line @typescript-eslint/no-misused-promises */
|
|
365
|
-
cdnPrioritizer?.addEventListener("priorityChange", () => {
|
|
366
|
-
const updatedPrioritaryCdn = getCdnToRequest();
|
|
367
|
-
if (cancellationSignal.isCancelled()) {
|
|
368
|
-
throw cancellationSignal.cancellationError;
|
|
369
|
-
}
|
|
370
|
-
if (updatedPrioritaryCdn === undefined) {
|
|
371
|
-
return cleanAndReject(prevRequestError);
|
|
372
|
-
}
|
|
373
|
-
if (updatedPrioritaryCdn !== nextWantedCdn) {
|
|
374
|
-
canceller.cancel();
|
|
375
|
-
waitPotentialBackoffAndRequest(updatedPrioritaryCdn, prevRequestError)
|
|
376
|
-
.then(cleanAndResolve, cleanAndReject);
|
|
377
|
-
}
|
|
378
|
-
}, canceller.signal);
|
|
379
|
-
|
|
380
|
-
cancellableSleep(blockedFor, canceller.signal)
|
|
381
|
-
.then(() => requestCdn(nextWantedCdn)
|
|
382
|
-
.then(cleanAndResolve, cleanAndReject), noop);
|
|
383
|
-
|
|
384
|
-
function cleanAndResolve(response : T) {
|
|
385
|
-
unlinkCanceller();
|
|
386
|
-
res(response);
|
|
387
|
-
}
|
|
388
|
-
function cleanAndReject(err : unknown) {
|
|
389
|
-
unlinkCanceller();
|
|
390
|
-
rej(err);
|
|
391
|
-
}
|
|
392
|
-
});
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
/**
|
|
396
|
-
* Takes in input the list of CDN that can be used to request the resource, in
|
|
397
|
-
* a general preference order.
|
|
398
|
-
*
|
|
399
|
-
* Returns the actual most prioritary Cdn to request, based on the current
|
|
400
|
-
* attempts already done for that resource.
|
|
401
|
-
*
|
|
402
|
-
* Returns `undefined` if there's no Cdn left to request the resource.
|
|
403
|
-
* @param {Array.<Object>}
|
|
404
|
-
* @returns {Object|undefined}
|
|
405
|
-
*/
|
|
406
|
-
function getPrioritaryRequestableCdnFromSortedList(
|
|
407
|
-
sortedCdns : ICdnMetadata[]
|
|
408
|
-
) : ICdnMetadata | undefined {
|
|
409
|
-
if (missedAttempts.size === 0) {
|
|
410
|
-
return sortedCdns[0];
|
|
411
|
-
}
|
|
412
|
-
const now = performance.now();
|
|
413
|
-
return sortedCdns
|
|
414
|
-
.filter(c => missedAttempts.get(c)?.isBlacklisted !== true)
|
|
415
|
-
.reduce((
|
|
416
|
-
acc : [ICdnMetadata, number | undefined] | undefined,
|
|
417
|
-
x : ICdnMetadata
|
|
418
|
-
) : [ICdnMetadata, number | undefined] => {
|
|
419
|
-
let blockedUntil = missedAttempts.get(x)?.blockedUntil;
|
|
420
|
-
if (blockedUntil !== undefined && blockedUntil <= now) {
|
|
421
|
-
blockedUntil = undefined;
|
|
422
|
-
}
|
|
423
|
-
if (acc === undefined) {
|
|
424
|
-
return [x, blockedUntil];
|
|
425
|
-
}
|
|
426
|
-
if (blockedUntil === undefined) {
|
|
427
|
-
if (acc[1] === undefined) {
|
|
428
|
-
return acc;
|
|
429
|
-
}
|
|
430
|
-
return [x, undefined];
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
return acc[1] === undefined ? acc :
|
|
434
|
-
blockedUntil < acc[1] ? [x, blockedUntil] :
|
|
435
|
-
acc;
|
|
436
|
-
}, undefined)?.[0];
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
/**
|
|
441
|
-
* Lightweight version of the request algorithm, this time with only a simple
|
|
442
|
-
* Promise given.
|
|
443
|
-
* @param {Function} performRequest
|
|
444
|
-
* @param {Object} options
|
|
445
|
-
* @returns {Promise}
|
|
446
|
-
*/
|
|
447
|
-
export function scheduleRequestPromise<T>(
|
|
448
|
-
performRequest : () => Promise<T>,
|
|
449
|
-
options : IBackoffSettings,
|
|
450
|
-
cancellationSignal : CancellationSignal
|
|
451
|
-
) : Promise<T> {
|
|
452
|
-
// same than for a single unknown CDN
|
|
453
|
-
return scheduleRequestWithCdns(null,
|
|
454
|
-
null,
|
|
455
|
-
performRequest,
|
|
456
|
-
options,
|
|
457
|
-
cancellationSignal);
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
/**
|
|
461
|
-
* Metadata associated to attempt(s) of requesting a resource through the same
|
|
462
|
-
* CDN.
|
|
463
|
-
*
|
|
464
|
-
* Each `ICdnAttemptMetadata` object should concern only one CDN.
|
|
465
|
-
*/
|
|
466
|
-
interface ICdnAttemptMetadata {
|
|
467
|
-
/**
|
|
468
|
-
* Count the amount of consecutive times an error of type `lastErrorType` has
|
|
469
|
-
* been encountered while requesting this resource though the concerned CDN.
|
|
470
|
-
*
|
|
471
|
-
* For example `1` means that the request through this CDN either failed for
|
|
472
|
-
* the first consecutive time or that it already failed just before but for an
|
|
473
|
-
* error with a different `lastErrorType` value.
|
|
474
|
-
* `2` means that after requesting this CDN two consecutive times, the request
|
|
475
|
-
* failed with an error with the same `lastErrorType` value.
|
|
476
|
-
* etc.
|
|
477
|
-
*/
|
|
478
|
-
errorCounter : number;
|
|
479
|
-
/** The last type of error encountered when requesting through that CDN. */
|
|
480
|
-
lastErrorType : REQUEST_ERROR_TYPES;
|
|
481
|
-
/**
|
|
482
|
-
* Timestamp, in terms of `performance.now()`, until which it should be
|
|
483
|
-
* forbidden to request this CDN.
|
|
484
|
-
* Enforcing this delay allows to prevent making too much requests to a given
|
|
485
|
-
* CDN.
|
|
486
|
-
*
|
|
487
|
-
* `undefined` when either there is no enforced delay or when the CDN is
|
|
488
|
-
* blacklisted anyway (@see isBlacklisted)
|
|
489
|
-
*/
|
|
490
|
-
blockedUntil : number | undefined;
|
|
491
|
-
/** If `true`, that request should not be requested at all anymore. */
|
|
492
|
-
isBlacklisted : boolean;
|
|
493
|
-
}
|
package/src/core/init/README.md
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# The `ContentInitializer` #####################################################
|
|
2
|
-
|
|
3
|
-
The ContentInitializer is the part of the code actually starting and running the
|
|
4
|
-
logic behind playing a content.
|
|
5
|
-
|
|
6
|
-
Its code is written in the `src/core/init` directory.
|
|
7
|
-
|
|
8
|
-
Every time you're calling the API to load a new video, a ContentInitializer is
|
|
9
|
-
called by it (with multiple options).
|
|
10
|
-
|
|
11
|
-
The ContentInitializer then starts loading the content and communicate back its progress to
|
|
12
|
-
the API through events.
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
+-----------+
|
|
16
|
-
1. loadVideo | | 2. Instanciate
|
|
17
|
-
---------------> | API | -------------------+
|
|
18
|
-
| | |
|
|
19
|
-
+-----------+ |
|
|
20
|
-
^ v
|
|
21
|
-
| +--------------------+
|
|
22
|
-
| 3. Emit events | |
|
|
23
|
-
+------------------- | ContentInitializer |
|
|
24
|
-
| |
|
|
25
|
-
+--------------------+
|
|
26
|
-
```
|
|
27
|
-
During the various events happening on content playback, the ContentInitializer will
|
|
28
|
-
create / destroy / update various player submodules.
|
|
29
|
-
|
|
30
|
-
Example of such submodules are:
|
|
31
|
-
- Adaptive streaming management
|
|
32
|
-
- DRM handling
|
|
33
|
-
- Manifest loading, parsing and refreshing
|
|
34
|
-
- Buffer management
|
|
35
|
-
- ...
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
## Usage #######################################################################
|
|
40
|
-
|
|
41
|
-
Concretely, the ContentInitializer is a class respecting a given interface,
|
|
42
|
-
allowing to:
|
|
43
|
-
|
|
44
|
-
- prepare a future content for future play - without influencing a potentially
|
|
45
|
-
already-playing content (e.g. by pre-loading the next content's Manifest).
|
|
46
|
-
|
|
47
|
-
- start loading the content on a given media element
|
|
48
|
-
|
|
49
|
-
- communicate about various playback events
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
### Emitted Events #############################################################
|
|
53
|
-
|
|
54
|
-
Events allows the ContentInitializer to reports milestones of the content
|
|
55
|
-
playback, such as when the content is ready to play.
|
|
56
|
-
|
|
57
|
-
It's also a way for the `ContentInitializer` to communicate information about
|
|
58
|
-
the content and give some controls to the user.
|
|
59
|
-
|
|
60
|
-
For example, as available audio languages are only known after the manifest has
|
|
61
|
-
been downloaded and parsed, and as it is most of all a user preference, the
|
|
62
|
-
ContentInitializer can emit to the API, objects allowing the API to "choose" at
|
|
63
|
-
any time the wanted language.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
### Playback rate management ###################################################
|
|
68
|
-
|
|
69
|
-
The playback rate (or speed) is updated by the ContentInitializer.
|
|
70
|
-
|
|
71
|
-
There can be three occasions for these updates:
|
|
72
|
-
|
|
73
|
-
- the API set a new speed
|
|
74
|
-
|
|
75
|
-
- the content needs to build its buffer.
|
|
76
|
-
|
|
77
|
-
In which case, the playback speed will be set to 0 (paused) even if the
|
|
78
|
-
API set another speed.
|
|
79
|
-
|
|
80
|
-
- the content has built enough buffer to un-pause.
|
|
81
|
-
The regular speed set by the user will be set again in that case.
|