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,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
|
-
}
|