rx-player 4.0.0-dev.2023111400 → 4.0.0-dev.2023120600
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -227
- package/FILES.md +1 -1
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/add_text_track.d.ts +1 -3
- package/dist/_esm5.processed/compat/add_text_track.js +4 -7
- package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +0 -7
- package/dist/_esm5.processed/compat/event_listeners.d.ts +2 -15
- package/dist/_esm5.processed/compat/event_listeners.js +2 -37
- package/dist/_esm5.processed/compat/index.d.ts +1 -3
- package/dist/_esm5.processed/compat/index.js +1 -3
- package/dist/_esm5.processed/config.d.ts +9 -21
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +0 -58
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +14 -54
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.d.ts +2 -8
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +2 -11
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +2 -6
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +13 -32
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +3 -3
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +1 -1
- package/dist/_esm5.processed/core/api/option_utils.d.ts +12 -35
- package/dist/_esm5.processed/core/api/option_utils.js +41 -230
- package/dist/_esm5.processed/core/api/public_api.d.ts +91 -266
- package/dist/_esm5.processed/core/api/public_api.js +439 -805
- package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.d.ts +3 -2
- package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.js +3 -2
- package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.d.ts → track_management/media_element_tracks_store.d.ts} +15 -75
- package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.js → track_management/media_element_tracks_store.js} +74 -193
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +84 -0
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +158 -0
- package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +406 -0
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +932 -0
- package/dist/_esm5.processed/core/api/utils.d.ts +1 -0
- package/dist/_esm5.processed/core/api/utils.js +28 -11
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +3 -3
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +83 -71
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +6 -5
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +10 -72
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +4 -4
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +6 -4
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +1 -3
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +7 -26
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +3 -9
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +16 -9
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -3
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.d.ts +1 -6
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +4 -41
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +1 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +1 -8
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +5 -19
- package/dist/_esm5.processed/core/init/types.d.ts +5 -15
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +2 -36
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +2 -82
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +1 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +2 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.js +2 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +1 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +1 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.d.ts +33 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +49 -0
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +0 -1
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +2 -16
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +0 -15
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +183 -93
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.d.ts +39 -0
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +133 -0
- package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +27 -13
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -3
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +2 -0
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +5 -7
- package/dist/_esm5.processed/core/stream/period/period_stream.js +13 -12
- package/dist/_esm5.processed/core/stream/period/types.d.ts +5 -14
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +2 -4
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +10 -46
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +29 -23
- package/dist/_esm5.processed/core/stream/representation/types.d.ts +11 -1
- package/dist/_esm5.processed/default_config.d.ts +35 -98
- package/dist/_esm5.processed/default_config.js +36 -113
- package/dist/_esm5.processed/errors/custom_loader_error.d.ts +1 -3
- package/dist/_esm5.processed/errors/custom_loader_error.js +1 -3
- package/dist/_esm5.processed/errors/media_error.js +2 -2
- package/dist/_esm5.processed/errors/network_error.d.ts +0 -1
- package/dist/_esm5.processed/errors/network_error.js +0 -1
- package/dist/_esm5.processed/errors/request_error.d.ts +2 -3
- package/dist/_esm5.processed/errors/request_error.js +2 -5
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -3
- package/dist/_esm5.processed/features/features_object.js +0 -2
- package/dist/_esm5.processed/features/list/directfile.js +2 -5
- package/dist/_esm5.processed/features/list/index.d.ts +0 -2
- package/dist/_esm5.processed/features/list/index.js +0 -2
- package/dist/_esm5.processed/features/types.d.ts +3 -27
- package/dist/_esm5.processed/manifest/adaptation.d.ts +9 -11
- package/dist/_esm5.processed/manifest/adaptation.js +41 -30
- package/dist/_esm5.processed/manifest/index.d.ts +3 -4
- package/dist/_esm5.processed/manifest/manifest.d.ts +5 -54
- package/dist/_esm5.processed/manifest/manifest.js +5 -110
- package/dist/_esm5.processed/manifest/period.d.ts +4 -5
- package/dist/_esm5.processed/manifest/representation.d.ts +10 -5
- package/dist/_esm5.processed/manifest/representation.js +15 -5
- package/dist/_esm5.processed/manifest/representation_index/index.d.ts +2 -2
- package/dist/_esm5.processed/manifest/representation_index/static.d.ts +2 -0
- package/dist/_esm5.processed/manifest/representation_index/static.js +6 -0
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
- package/dist/_esm5.processed/manifest/types.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +17 -31
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +26 -19
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +1 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +3 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +10 -1
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +18 -2
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +4 -4
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +3 -6
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +6 -6
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +12 -3
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +11 -2
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +0 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +11 -17
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +21 -83
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +53 -125
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +119 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +159 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.d.ts +3 -6
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +4 -4
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +3 -3
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +1 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +1 -9
- package/dist/_esm5.processed/public_types.d.ts +396 -308
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.d.ts +5 -4
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +5 -4
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +4 -4
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -3
- package/dist/_esm5.processed/transports/dash/pipelines.js +1 -4
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/segment_loader.js +26 -20
- package/dist/_esm5.processed/transports/dash/segment_parser.js +19 -24
- package/dist/_esm5.processed/transports/dash/text_loader.js +5 -5
- package/dist/_esm5.processed/transports/dash/text_parser.js +28 -33
- package/dist/_esm5.processed/transports/local/pipelines.js +1 -10
- package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +1 -1
- package/dist/_esm5.processed/transports/local/segment_parser.js +10 -10
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
- package/dist/_esm5.processed/transports/local/text_parser.js +23 -23
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +34 -52
- package/dist/_esm5.processed/{utils/list_to_map.d.ts → transports/smooth/is_mp4_embedded_track.d.ts} +5 -5
- package/dist/_esm5.processed/{features/list/image_buffer.d.ts → transports/smooth/is_mp4_embedded_track.js} +7 -6
- package/dist/_esm5.processed/transports/smooth/pipelines.js +33 -190
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +28 -22
- package/dist/_esm5.processed/transports/smooth/utils.d.ts +1 -26
- package/dist/_esm5.processed/transports/smooth/utils.js +1 -55
- package/dist/_esm5.processed/transports/types.d.ts +94 -89
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +3 -3
- package/dist/_esm5.processed/transports/utils/infer_segment_container.d.ts +3 -3
- package/dist/_esm5.processed/transports/utils/infer_segment_container.js +5 -7
- package/dist/_esm5.processed/transports/utils/parse_text_track.d.ts +8 -12
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +19 -21
- package/dist/_esm5.processed/utils/array_includes.d.ts +2 -1
- package/dist/_esm5.processed/utils/array_includes.js +30 -28
- package/dist/_esm5.processed/utils/request/xhr.js +5 -5
- package/dist/commonjs/compat/is_codec_supported.js +22 -1
- package/dist/commonjs/config.d.ts +1 -0
- package/dist/commonjs/core/api/debug/buffer_graph.js +2 -6
- package/dist/commonjs/core/api/debug/modules/general_info.js +17 -10
- package/dist/commonjs/core/api/option_utils.d.ts +2 -0
- package/dist/commonjs/core/api/option_utils.js +2 -3
- package/dist/commonjs/core/api/public_api.d.ts +9 -0
- package/dist/commonjs/core/api/public_api.js +34 -9
- package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
- package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.js +11 -3
- package/dist/commonjs/core/fetchers/segment/segment_fetcher.d.ts +8 -1
- package/dist/commonjs/core/fetchers/segment/segment_fetcher.js +8 -4
- package/dist/commonjs/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
- package/dist/commonjs/core/fetchers/utils/schedule_request.js +1 -1
- package/dist/commonjs/core/init/directfile_content_initializer.js +24 -7
- package/dist/commonjs/core/init/media_source_content_initializer.d.ts +6 -0
- package/dist/commonjs/core/init/media_source_content_initializer.js +4 -6
- package/dist/commonjs/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
- package/dist/commonjs/core/init/utils/content_time_boundaries_observer.js +16 -17
- package/dist/commonjs/core/init/utils/get_initial_time.d.ts +17 -3
- package/dist/commonjs/core/init/utils/get_initial_time.js +9 -7
- package/dist/commonjs/core/stream/representation/utils/get_buffer_status.js +3 -3
- package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/commonjs/default_config.d.ts +5 -0
- package/dist/commonjs/default_config.js +5 -0
- package/dist/commonjs/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
- package/dist/commonjs/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
- package/dist/commonjs/manifest/representation_index/static.d.ts +1 -1
- package/dist/commonjs/manifest/representation_index/static.js +2 -2
- package/dist/commonjs/manifest/representation_index/types.d.ts +4 -4
- package/dist/commonjs/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/base.js +4 -3
- package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
- package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
- package/dist/commonjs/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
- package/dist/commonjs/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/list.js +2 -2
- package/dist/commonjs/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
- package/dist/commonjs/parsers/manifest/dash/common/indexes/template.js +42 -29
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +250 -51
- package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
- package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
- package/dist/commonjs/parsers/manifest/dash/common/parse_adaptation_sets.js +13 -10
- package/dist/commonjs/parsers/manifest/dash/common/parse_mpd.js +27 -14
- package/dist/commonjs/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/dash/common/parse_periods.js +17 -18
- package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
- package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.js +21 -8
- package/dist/commonjs/parsers/manifest/dash/common/parse_representations.js +7 -3
- package/dist/commonjs/parsers/manifest/local/representation_index.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/local/representation_index.js +3 -3
- package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.js +2 -2
- package/dist/commonjs/parsers/manifest/smooth/representation_index.d.ts +5 -5
- package/dist/commonjs/parsers/manifest/smooth/representation_index.js +25 -9
- package/dist/commonjs/parsers/manifest/utils/index_helpers.js +1 -1
- package/dist/commonjs/public_types.d.ts +78 -34
- package/dist/commonjs/transports/dash/init_segment_loader.js +10 -5
- package/dist/commonjs/transports/dash/manifest_parser.js +5 -2
- package/dist/commonjs/transports/dash/segment_loader.js +2 -1
- package/dist/commonjs/transports/dash/text_loader.js +2 -0
- package/dist/commonjs/transports/metaplaylist/manifest_loader.js +2 -1
- package/dist/commonjs/transports/metaplaylist/pipelines.js +4 -1
- package/dist/commonjs/transports/smooth/pipelines.js +4 -2
- package/dist/commonjs/transports/smooth/segment_loader.js +2 -1
- package/dist/commonjs/transports/types.d.ts +12 -0
- package/dist/commonjs/transports/utils/generate_manifest_loader.js +6 -3
- package/dist/commonjs/utils/request/fetch.d.ts +6 -0
- package/dist/commonjs/utils/request/fetch.js +29 -8
- package/dist/commonjs/utils/request/xhr.d.ts +11 -5
- package/dist/commonjs/utils/request/xhr.js +29 -8
- package/dist/es2017/compat/is_codec_supported.js +22 -1
- package/dist/es2017/config.d.ts +1 -0
- package/dist/es2017/core/api/debug/buffer_graph.js +2 -6
- package/dist/es2017/core/api/debug/modules/general_info.js +17 -10
- package/dist/es2017/core/api/option_utils.d.ts +2 -0
- package/dist/es2017/core/api/option_utils.js +2 -3
- package/dist/es2017/core/api/public_api.d.ts +9 -0
- package/dist/es2017/core/api/public_api.js +33 -8
- package/dist/es2017/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
- package/dist/es2017/core/fetchers/manifest/manifest_fetcher.js +11 -3
- package/dist/es2017/core/fetchers/segment/segment_fetcher.d.ts +8 -1
- package/dist/es2017/core/fetchers/segment/segment_fetcher.js +8 -4
- package/dist/es2017/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
- package/dist/es2017/core/fetchers/utils/schedule_request.js +1 -1
- package/dist/es2017/core/init/directfile_content_initializer.js +24 -7
- package/dist/es2017/core/init/media_source_content_initializer.d.ts +6 -0
- package/dist/es2017/core/init/media_source_content_initializer.js +4 -6
- package/dist/es2017/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
- package/dist/es2017/core/init/utils/content_time_boundaries_observer.js +16 -15
- package/dist/es2017/core/init/utils/get_initial_time.d.ts +17 -3
- package/dist/es2017/core/init/utils/get_initial_time.js +9 -7
- package/dist/es2017/core/stream/representation/utils/get_buffer_status.js +3 -3
- package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/es2017/default_config.d.ts +5 -0
- package/dist/es2017/default_config.js +5 -0
- package/dist/es2017/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
- package/dist/es2017/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
- package/dist/es2017/manifest/representation_index/static.d.ts +1 -1
- package/dist/es2017/manifest/representation_index/static.js +2 -2
- package/dist/es2017/manifest/representation_index/types.d.ts +4 -4
- package/dist/es2017/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/base.js +4 -3
- package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
- package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
- package/dist/es2017/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
- package/dist/es2017/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/list.js +2 -2
- package/dist/es2017/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
- package/dist/es2017/parsers/manifest/dash/common/indexes/template.js +40 -27
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +246 -51
- package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
- package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
- package/dist/es2017/parsers/manifest/dash/common/parse_adaptation_sets.js +11 -8
- package/dist/es2017/parsers/manifest/dash/common/parse_mpd.js +27 -13
- package/dist/es2017/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
- package/dist/es2017/parsers/manifest/dash/common/parse_periods.js +13 -16
- package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
- package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.js +10 -8
- package/dist/es2017/parsers/manifest/dash/common/parse_representations.js +7 -3
- package/dist/es2017/parsers/manifest/local/representation_index.d.ts +1 -1
- package/dist/es2017/parsers/manifest/local/representation_index.js +3 -3
- package/dist/es2017/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
- package/dist/es2017/parsers/manifest/metaplaylist/representation_index.js +2 -2
- package/dist/es2017/parsers/manifest/smooth/representation_index.d.ts +5 -5
- package/dist/es2017/parsers/manifest/smooth/representation_index.js +25 -9
- package/dist/es2017/parsers/manifest/utils/index_helpers.js +1 -1
- package/dist/es2017/public_types.d.ts +78 -34
- package/dist/es2017/transports/dash/init_segment_loader.js +5 -0
- package/dist/es2017/transports/dash/manifest_parser.js +3 -0
- package/dist/es2017/transports/dash/segment_loader.js +1 -0
- package/dist/es2017/transports/dash/text_loader.js +2 -0
- package/dist/es2017/transports/metaplaylist/manifest_loader.js +1 -0
- package/dist/es2017/transports/metaplaylist/pipelines.js +4 -1
- package/dist/es2017/transports/smooth/pipelines.js +2 -0
- package/dist/es2017/transports/smooth/segment_loader.js +1 -0
- package/dist/es2017/transports/types.d.ts +12 -0
- package/dist/es2017/transports/utils/generate_manifest_loader.js +3 -0
- package/dist/es2017/utils/request/fetch.d.ts +6 -0
- package/dist/es2017/utils/request/fetch.js +29 -8
- package/dist/es2017/utils/request/xhr.d.ts +11 -5
- package/dist/es2017/utils/request/xhr.js +30 -9
- package/dist/rx-player.js +723 -376
- package/dist/rx-player.min.js +1 -1
- package/package.json +3 -4
- package/scripts/update-version +2 -0
- package/sonar-project.properties +1 -1
- package/src/compat/is_codec_supported.ts +23 -1
- package/src/core/api/debug/buffer_graph.ts +2 -5
- package/src/core/api/debug/modules/general_info.ts +15 -10
- package/src/core/api/option_utils.ts +3 -3
- package/src/core/api/public_api.ts +35 -7
- package/src/core/fetchers/manifest/manifest_fetcher.ts +21 -3
- package/src/core/fetchers/segment/segment_fetcher.ts +19 -5
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +1 -0
- package/src/core/fetchers/utils/schedule_request.ts +1 -1
- package/src/core/init/directfile_content_initializer.ts +23 -7
- package/src/core/init/media_source_content_initializer.ts +13 -7
- package/src/core/init/utils/content_time_boundaries_observer.ts +23 -22
- package/src/core/init/utils/get_initial_time.ts +25 -12
- package/src/core/stream/representation/utils/get_buffer_status.ts +3 -3
- package/src/core/stream/representation/utils/get_needed_segments.ts +2 -2
- package/src/default_config.ts +5 -0
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +3 -1
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +2 -0
- package/src/manifest/representation_index/static.ts +2 -2
- package/src/manifest/representation_index/types.ts +4 -4
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +182 -36
- package/src/parsers/manifest/dash/common/indexes/base.ts +12 -4
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +19 -5
- package/src/parsers/manifest/dash/common/indexes/index.ts +16 -4
- package/src/parsers/manifest/dash/common/indexes/list.ts +2 -2
- package/src/parsers/manifest/dash/common/indexes/template.ts +52 -31
- package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +4 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +366 -60
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +63 -25
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
- package/src/parsers/manifest/dash/common/parse_mpd.ts +28 -15
- package/src/parsers/manifest/dash/common/parse_periods.ts +12 -17
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +50 -26
- package/src/parsers/manifest/dash/common/parse_representations.ts +9 -3
- package/src/parsers/manifest/local/representation_index.ts +3 -3
- package/src/parsers/manifest/metaplaylist/representation_index.ts +2 -2
- package/src/parsers/manifest/smooth/representation_index.ts +23 -9
- package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +1 -1
- package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +1 -1
- package/src/parsers/manifest/utils/index_helpers.ts +1 -1
- package/src/public_types.ts +79 -34
- package/src/transports/dash/init_segment_loader.ts +5 -0
- package/src/transports/dash/manifest_parser.ts +6 -0
- package/src/transports/dash/segment_loader.ts +1 -0
- package/src/transports/dash/text_loader.ts +2 -0
- package/src/transports/metaplaylist/manifest_loader.ts +1 -0
- package/src/transports/metaplaylist/pipelines.ts +4 -1
- package/src/transports/smooth/pipelines.ts +2 -0
- package/src/transports/smooth/segment_loader.ts +1 -0
- package/src/transports/types.ts +12 -0
- package/src/transports/utils/generate_manifest_loader.ts +3 -0
- package/src/utils/request/fetch.ts +35 -8
- package/src/utils/request/xhr.ts +45 -14
- package/dist/_esm5.processed/compat/fullscreen.d.ts +0 -32
- package/dist/_esm5.processed/compat/fullscreen.js +0 -78
- package/dist/_esm5.processed/compat/is_offline.d.ts +0 -39
- package/dist/_esm5.processed/compat/is_offline.js +0 -43
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +0 -258
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +0 -989
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +0 -75
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +0 -133
- package/dist/_esm5.processed/features/list/bif_parser.d.ts +0 -23
- package/dist/_esm5.processed/features/list/bif_parser.js +0 -27
- package/dist/_esm5.processed/features/list/image_buffer.js +0 -25
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +0 -38
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +0 -129
- package/dist/_esm5.processed/utils/list_to_map.js +0 -28
- package/dist/_esm5.processed/utils/simple_set.d.ts +0 -51
- package/dist/_esm5.processed/utils/simple_set.js +0 -57
- package/dist/_esm5.processed/utils/uniq.d.ts +0 -36
- package/dist/_esm5.processed/utils/uniq.js +0 -43
- package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
- package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.js +0 -54
- package/dist/es2017/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
- package/dist/es2017/parsers/manifest/utils/is_segment_still_available.js +0 -51
- package/src/parsers/manifest/utils/is_segment_still_available.ts +0 -58
- package/src/typings/object-assign.d.ts +0 -48
|
@@ -20,7 +20,6 @@ var log_1 = require("../../../log");
|
|
|
20
20
|
var assert_1 = require("../../../utils/assert");
|
|
21
21
|
var monotonic_timestamp_1 = require("../../../utils/monotonic_timestamp");
|
|
22
22
|
var index_helpers_1 = require("../utils/index_helpers");
|
|
23
|
-
var is_segment_still_available_1 = require("../utils/is_segment_still_available");
|
|
24
23
|
var tokens_1 = require("./utils/tokens");
|
|
25
24
|
/**
|
|
26
25
|
* @param {Number} start
|
|
@@ -270,7 +269,7 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
270
269
|
SmoothRepresentationIndex.prototype.awaitSegmentBetween = function (start, end) {
|
|
271
270
|
var _a;
|
|
272
271
|
(0, assert_1.default)(start <= end);
|
|
273
|
-
if (this.
|
|
272
|
+
if (this.isStillAwaitingFutureSegments()) {
|
|
274
273
|
return false;
|
|
275
274
|
}
|
|
276
275
|
var lastAvailablePosition = this.getLastAvailablePosition();
|
|
@@ -307,7 +306,24 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
307
306
|
}
|
|
308
307
|
this._refreshTimeline();
|
|
309
308
|
var _a = this._sharedSmoothTimeline, timeline = _a.timeline, timescale = _a.timescale;
|
|
310
|
-
|
|
309
|
+
for (var i = 0; i < timeline.length; i++) {
|
|
310
|
+
var tSegment = timeline[i];
|
|
311
|
+
var tSegmentTime = tSegment.start / timescale;
|
|
312
|
+
if (tSegmentTime > segment.time) {
|
|
313
|
+
return false; // We went over it without finding it
|
|
314
|
+
}
|
|
315
|
+
else if (tSegmentTime === segment.time) {
|
|
316
|
+
return true;
|
|
317
|
+
}
|
|
318
|
+
else { // tSegment.start < segment.time
|
|
319
|
+
if (tSegment.repeatCount >= 0 && tSegment.duration !== undefined) {
|
|
320
|
+
var timeDiff = tSegmentTime - tSegment.start;
|
|
321
|
+
var repeat = (timeDiff / tSegment.duration) - 1;
|
|
322
|
+
return repeat % 1 === 0 && repeat <= tSegment.repeatCount;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
return false;
|
|
311
327
|
};
|
|
312
328
|
/**
|
|
313
329
|
* @param {Error} error
|
|
@@ -341,9 +357,9 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
341
357
|
this._sharedSmoothTimeline.update(newIndex._sharedSmoothTimeline);
|
|
342
358
|
};
|
|
343
359
|
/**
|
|
344
|
-
* Returns `
|
|
360
|
+
* Returns `false` if the last segments in this index have already been
|
|
345
361
|
* generated.
|
|
346
|
-
* Returns `
|
|
362
|
+
* Returns `true` if the index is still waiting on future segments to be
|
|
347
363
|
* generated.
|
|
348
364
|
*
|
|
349
365
|
* For Smooth, it should only depend on whether the content is a live content
|
|
@@ -351,8 +367,8 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
351
367
|
* TODO What about Smooth live content that finishes at some point?
|
|
352
368
|
* @returns {boolean}
|
|
353
369
|
*/
|
|
354
|
-
SmoothRepresentationIndex.prototype.
|
|
355
|
-
return
|
|
370
|
+
SmoothRepresentationIndex.prototype.isStillAwaitingFutureSegments = function () {
|
|
371
|
+
return this._isLive;
|
|
356
372
|
};
|
|
357
373
|
/**
|
|
358
374
|
* @returns {Boolean}
|
|
@@ -367,8 +383,8 @@ var SmoothRepresentationIndex = /** @class */ (function () {
|
|
|
367
383
|
* Add segments to a `SharedSmoothSegmentTimeline` that were predicted to come
|
|
368
384
|
* after `currentSegment`.
|
|
369
385
|
* @param {Array.<Object>} nextSegments - The segment information parsed.
|
|
370
|
-
* @param {Object}
|
|
371
|
-
* new segment information.
|
|
386
|
+
* @param {Object} currentSegment - Information on the segment which contained
|
|
387
|
+
* that new segment information.
|
|
372
388
|
*/
|
|
373
389
|
SmoothRepresentationIndex.prototype.addPredictedSegments = function (nextSegments, currentSegment) {
|
|
374
390
|
this._sharedSmoothTimeline.addPredictedSegments(nextSegments, currentSegment);
|
|
@@ -105,7 +105,7 @@ exports.getTimescaledRange = getTimescaledRange;
|
|
|
105
105
|
* timescaled time.
|
|
106
106
|
* Returns -1 if the given time is lower than the start of the first available
|
|
107
107
|
* segment.
|
|
108
|
-
* @param {Object}
|
|
108
|
+
* @param {Object} timeline
|
|
109
109
|
* @param {Number} timeTScaled
|
|
110
110
|
* @returns {Number}
|
|
111
111
|
*/
|
|
@@ -203,10 +203,20 @@ export type IStartAtOption = {
|
|
|
203
203
|
percentage: number;
|
|
204
204
|
} | {
|
|
205
205
|
/**
|
|
206
|
-
* If set, we should begin at this position relative to the content's
|
|
207
|
-
* in seconds.
|
|
206
|
+
* If set, we should begin at this position relative to the content's maximum
|
|
207
|
+
* seekable position, in seconds.
|
|
208
208
|
*/
|
|
209
209
|
fromLastPosition: number;
|
|
210
|
+
} | {
|
|
211
|
+
/**
|
|
212
|
+
* If set, we should begin at this position relative to the content's live
|
|
213
|
+
* edge if it makes sense, in seconds.
|
|
214
|
+
*
|
|
215
|
+
* If the live edge is unknown or if it does not make sense for the current
|
|
216
|
+
* content, that position is relative to the content's maximum position
|
|
217
|
+
* instead.
|
|
218
|
+
*/
|
|
219
|
+
fromLivePosition: number;
|
|
210
220
|
} | {
|
|
211
221
|
/**
|
|
212
222
|
* If set, we should begin at this position relative to the content's start,
|
|
@@ -214,40 +224,37 @@ export type IStartAtOption = {
|
|
|
214
224
|
*/
|
|
215
225
|
fromFirstPosition: number;
|
|
216
226
|
};
|
|
227
|
+
export interface RequestRetryParameters {
|
|
228
|
+
/**
|
|
229
|
+
* The amount of time maximum we should retry a request before failing on Error.
|
|
230
|
+
* Set to `Infinity` for an infinite number of requests.
|
|
231
|
+
*/
|
|
232
|
+
maxRetry?: number | undefined;
|
|
233
|
+
/**
|
|
234
|
+
* Amount of time, in milliseconds, after which a request should be
|
|
235
|
+
* aborted and optionally retried, depending on the maxRetry configuration.
|
|
236
|
+
*
|
|
237
|
+
* Setting it to `-1` allows to disable any timeout.
|
|
238
|
+
* `undefined` means that a default, large, timeout will be used instead.
|
|
239
|
+
*/
|
|
240
|
+
timeout?: number | undefined;
|
|
241
|
+
/**
|
|
242
|
+
* Amount of time, in milliseconds, after which a request that hasn't receive
|
|
243
|
+
* the headers and status code should be aborted and optionnaly retried,
|
|
244
|
+
* depending on the maxRetry configuration.
|
|
245
|
+
*/
|
|
246
|
+
connectionTimeout?: number | undefined;
|
|
247
|
+
}
|
|
217
248
|
/** Value for the `requestConfig` option of the `loadVideo` method. */
|
|
218
249
|
export interface IRequestConfig {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
* Amount of time, in milliseconds, after which a manifest request should be
|
|
228
|
-
* aborted and optionally retried, depending on the current configuration.
|
|
229
|
-
*
|
|
230
|
-
* Setting it to `-1` allows to disable any timeout.
|
|
231
|
-
* `undefined` means that a default, large, timeout will be used instead.
|
|
232
|
-
*/
|
|
233
|
-
timeout?: number | undefined;
|
|
234
|
-
} | undefined;
|
|
235
|
-
segment?: {
|
|
236
|
-
/**
|
|
237
|
-
* The amount of time maximum we should retry a segment or segment-related
|
|
238
|
-
* request before failing on Error.
|
|
239
|
-
* Set to `Infinity` for an infinite number of requests.
|
|
240
|
-
*/
|
|
241
|
-
maxRetry?: number | undefined;
|
|
242
|
-
/**
|
|
243
|
-
* Amount of time, in milliseconds, after which a segment request should be
|
|
244
|
-
* aborted and optionally retried, depending on the current configuration.
|
|
245
|
-
*
|
|
246
|
-
* Setting it to `-1` allows to disable any timeout.
|
|
247
|
-
* `undefined` means that a default, large, timeout will be used instead.
|
|
248
|
-
*/
|
|
249
|
-
timeout?: number | undefined;
|
|
250
|
-
} | undefined;
|
|
250
|
+
/**
|
|
251
|
+
* Defines the retry parameters when requesting manifest
|
|
252
|
+
*/
|
|
253
|
+
manifest?: RequestRetryParameters | undefined;
|
|
254
|
+
/**
|
|
255
|
+
* Defines the retry parameters when requesting a segment
|
|
256
|
+
*/
|
|
257
|
+
segment?: RequestRetryParameters | undefined;
|
|
251
258
|
}
|
|
252
259
|
export type ISegmentLoader = (
|
|
253
260
|
/** Information on the segment to request */
|
|
@@ -808,18 +815,55 @@ export interface ILockedAudioRepresentationsSettings {
|
|
|
808
815
|
switchingMode?: IAudioRepresentationsSwitchingMode | undefined;
|
|
809
816
|
}
|
|
810
817
|
export interface IAudioTrackSetting {
|
|
818
|
+
/** `id` of the audio track you want to set. */
|
|
811
819
|
trackId: string;
|
|
820
|
+
/**
|
|
821
|
+
* `id` of the Period for which you want that setting applied.
|
|
822
|
+
* Keeping it undefined means it will apply to the currently-playing Period.
|
|
823
|
+
*/
|
|
812
824
|
periodId?: string | undefined;
|
|
825
|
+
/**
|
|
826
|
+
* Behavior wanted when replacing an audio track / Adaptation by another.
|
|
827
|
+
* @see IAudioTrackSwitchingMode
|
|
828
|
+
*
|
|
829
|
+
* Keeping it undefined means that the RxPlayer will automatically select
|
|
830
|
+
* the most adapted choice.
|
|
831
|
+
*/
|
|
813
832
|
switchingMode?: IAudioTrackSwitchingMode | undefined;
|
|
833
|
+
/**
|
|
834
|
+
* Representations (a.k.a. qualities) you want to play in that new track.
|
|
835
|
+
* Keeping it undefined means that all compatible qualities may be played.
|
|
836
|
+
*/
|
|
814
837
|
lockedRepresentations?: string[] | undefined;
|
|
815
838
|
}
|
|
816
839
|
export interface IVideoTrackSetting {
|
|
840
|
+
/** `id` of the video track you want to set. */
|
|
817
841
|
trackId: string;
|
|
842
|
+
/**
|
|
843
|
+
* `id` of the Period for which you want that setting applied.
|
|
844
|
+
* Keeping it undefined means it will apply to the currently-playing Period.
|
|
845
|
+
*/
|
|
818
846
|
periodId?: string | undefined;
|
|
847
|
+
/**
|
|
848
|
+
* Behavior wanted when replacing an video track / Adaptation by another.
|
|
849
|
+
* @see IVideoTrackSwitchingMode
|
|
850
|
+
*
|
|
851
|
+
* Keeping it undefined means that the RxPlayer will automatically select
|
|
852
|
+
* the most adapted choice.
|
|
853
|
+
*/
|
|
819
854
|
switchingMode?: IVideoTrackSwitchingMode | undefined;
|
|
855
|
+
/**
|
|
856
|
+
* Representations (a.k.a. qualities) you want to play in that new track.
|
|
857
|
+
* Keeping it undefined means that all compatible qualities may be played.
|
|
858
|
+
*/
|
|
820
859
|
lockedRepresentations?: string[] | undefined;
|
|
821
860
|
}
|
|
822
861
|
export interface ITextTrackSetting {
|
|
862
|
+
/** `id` of the text track you want to set. */
|
|
823
863
|
trackId: string;
|
|
864
|
+
/**
|
|
865
|
+
* `id` of the Period for which you want that setting applied.
|
|
866
|
+
* Keeping it undefined means it will apply to the currently-playing Period.
|
|
867
|
+
*/
|
|
824
868
|
periodId?: string | undefined;
|
|
825
869
|
}
|
|
@@ -46,14 +46,16 @@ var byte_range_1 = require("../utils/byte_range");
|
|
|
46
46
|
function initSegmentLoader(url, segment, options, cancelSignal, callbacks) {
|
|
47
47
|
if (segment.range === undefined) {
|
|
48
48
|
return (0, request_1.default)({ url: url, responseType: "arraybuffer",
|
|
49
|
-
timeout: options.timeout,
|
|
49
|
+
timeout: options.timeout,
|
|
50
|
+
connectionTimeout: options.connectionTimeout, cancelSignal: cancelSignal, onProgress: callbacks.onProgress })
|
|
50
51
|
.then(function (data) { return ({ resultType: "segment-loaded",
|
|
51
52
|
resultData: data }); });
|
|
52
53
|
}
|
|
53
54
|
if (segment.indexRange === undefined) {
|
|
54
55
|
return (0, request_1.default)({ url: url, headers: { Range: (0, byte_range_1.default)(segment.range) },
|
|
55
56
|
responseType: "arraybuffer",
|
|
56
|
-
timeout: options.timeout,
|
|
57
|
+
timeout: options.timeout,
|
|
58
|
+
connectionTimeout: options.connectionTimeout, cancelSignal: cancelSignal, onProgress: callbacks.onProgress })
|
|
57
59
|
.then(function (data) { return ({ resultType: "segment-loaded",
|
|
58
60
|
resultData: data }); });
|
|
59
61
|
}
|
|
@@ -62,16 +64,19 @@ function initSegmentLoader(url, segment, options, cancelSignal, callbacks) {
|
|
|
62
64
|
return (0, request_1.default)({ url: url, headers: { Range: (0, byte_range_1.default)([segment.range[0],
|
|
63
65
|
segment.indexRange[1]]) },
|
|
64
66
|
responseType: "arraybuffer",
|
|
65
|
-
timeout: options.timeout,
|
|
67
|
+
timeout: options.timeout,
|
|
68
|
+
connectionTimeout: options.connectionTimeout, cancelSignal: cancelSignal, onProgress: callbacks.onProgress })
|
|
66
69
|
.then(function (data) { return ({ resultType: "segment-loaded",
|
|
67
70
|
resultData: data }); });
|
|
68
71
|
}
|
|
69
72
|
var rangeRequest$ = (0, request_1.default)({ url: url, headers: { Range: (0, byte_range_1.default)(segment.range) },
|
|
70
73
|
responseType: "arraybuffer",
|
|
71
|
-
timeout: options.timeout,
|
|
74
|
+
timeout: options.timeout,
|
|
75
|
+
connectionTimeout: options.connectionTimeout, cancelSignal: cancelSignal, onProgress: callbacks.onProgress });
|
|
72
76
|
var indexRequest$ = (0, request_1.default)({ url: url, headers: { Range: (0, byte_range_1.default)(segment.indexRange) },
|
|
73
77
|
responseType: "arraybuffer",
|
|
74
|
-
timeout: options.timeout,
|
|
78
|
+
timeout: options.timeout,
|
|
79
|
+
connectionTimeout: options.connectionTimeout, cancelSignal: cancelSignal, onProgress: callbacks.onProgress });
|
|
75
80
|
return Promise.all([rangeRequest$, indexRequest$])
|
|
76
81
|
.then(function (_a) {
|
|
77
82
|
var _b = __read(_a, 2), initData = _b[0], indexData = _b[1];
|
|
@@ -109,12 +109,15 @@ function generateManifestParser(options) {
|
|
|
109
109
|
var externalResources = value.urls.map(function (resourceUrl) {
|
|
110
110
|
return scheduleRequest(function () {
|
|
111
111
|
var defaultTimeout = config_1.default.getCurrent().DEFAULT_REQUEST_TIMEOUT;
|
|
112
|
+
var defaultConnectionTimeout = config_1.default.getCurrent().DEFAULT_CONNECTION_TIMEOUT;
|
|
112
113
|
return value.format === "string" ? (0, request_1.default)({ url: resourceUrl,
|
|
113
114
|
responseType: "text",
|
|
114
|
-
timeout: defaultTimeout,
|
|
115
|
+
timeout: defaultTimeout,
|
|
116
|
+
connectionTimeout: defaultConnectionTimeout, cancelSignal: cancelSignal }) :
|
|
115
117
|
(0, request_1.default)({ url: resourceUrl,
|
|
116
118
|
responseType: "arraybuffer",
|
|
117
|
-
timeout: defaultTimeout,
|
|
119
|
+
timeout: defaultTimeout,
|
|
120
|
+
connectionTimeout: defaultConnectionTimeout, cancelSignal: cancelSignal });
|
|
118
121
|
}).then(function (res) {
|
|
119
122
|
if (value.format === "string") {
|
|
120
123
|
if (typeof res.responseData !== "string") {
|
|
@@ -54,7 +54,8 @@ function regularSegmentLoader(url, context, lowLatencyMode, options, callbacks,
|
|
|
54
54
|
headers: segment.range !== undefined ?
|
|
55
55
|
{ Range: (0, byte_range_1.default)(segment.range) } :
|
|
56
56
|
undefined,
|
|
57
|
-
timeout: options.timeout,
|
|
57
|
+
timeout: options.timeout,
|
|
58
|
+
connectionTimeout: options.connectionTimeout, cancelSignal: cancelSignal, onProgress: callbacks.onProgress })
|
|
58
59
|
.then(function (data) { return ({ resultType: "segment-loaded",
|
|
59
60
|
resultData: data }); });
|
|
60
61
|
}
|
|
@@ -68,6 +68,7 @@ function generateTextTrackLoader(_a) {
|
|
|
68
68
|
{ Range: (0, byte_range_1.default)(range) } :
|
|
69
69
|
null,
|
|
70
70
|
timeout: options.timeout,
|
|
71
|
+
connectionTimeout: options.connectionTimeout,
|
|
71
72
|
onProgress: callbacks.onProgress, cancelSignal: cancelSignal })
|
|
72
73
|
.then(function (data) { return ({ resultType: "segment-loaded",
|
|
73
74
|
resultData: data }); });
|
|
@@ -77,6 +78,7 @@ function generateTextTrackLoader(_a) {
|
|
|
77
78
|
{ Range: (0, byte_range_1.default)(range) } :
|
|
78
79
|
null,
|
|
79
80
|
timeout: options.timeout,
|
|
81
|
+
connectionTimeout: options.connectionTimeout,
|
|
80
82
|
onProgress: callbacks.onProgress, cancelSignal: cancelSignal })
|
|
81
83
|
.then(function (data) { return ({ resultType: "segment-loaded",
|
|
82
84
|
resultData: data }); });
|
|
@@ -28,7 +28,8 @@ function regularManifestLoader(url, loaderOptions, cancelSignal) {
|
|
|
28
28
|
throw new Error("Cannot perform HTTP(s) request. URL not known");
|
|
29
29
|
}
|
|
30
30
|
return (0, request_1.default)({ url: url, responseType: "text",
|
|
31
|
-
timeout: loaderOptions.timeout,
|
|
31
|
+
timeout: loaderOptions.timeout,
|
|
32
|
+
connectionTimeout: loaderOptions.connectionTimeout, cancelSignal: cancelSignal });
|
|
32
33
|
}
|
|
33
34
|
/**
|
|
34
35
|
* Generate a manifest loader for the application
|
|
@@ -117,7 +117,10 @@ function default_1(options) {
|
|
|
117
117
|
* Whether a ManifestLoader's timeout should be relied on here
|
|
118
118
|
* is ambiguous.
|
|
119
119
|
*/
|
|
120
|
-
var manOpts = {
|
|
120
|
+
var manOpts = {
|
|
121
|
+
timeout: config_1.default.getCurrent().DEFAULT_REQUEST_TIMEOUT,
|
|
122
|
+
connectionTimeout: config_1.default.getCurrent().DEFAULT_CONNECTION_TIMEOUT,
|
|
123
|
+
};
|
|
121
124
|
return transport.manifest.loadManifest(resource.url, manOpts, cancelSignal);
|
|
122
125
|
}
|
|
123
126
|
});
|
|
@@ -139,13 +139,15 @@ function default_1(transportOptions) {
|
|
|
139
139
|
var isMP4 = (0, is_mp4_embedded_track_1.default)(context.mimeType);
|
|
140
140
|
if (!isMP4) {
|
|
141
141
|
return (0, request_1.default)({ url: url, responseType: "text",
|
|
142
|
-
timeout: loaderOptions.timeout,
|
|
142
|
+
timeout: loaderOptions.timeout,
|
|
143
|
+
connectionTimeout: loaderOptions.connectionTimeout, cancelSignal: cancelSignal, onProgress: callbacks.onProgress })
|
|
143
144
|
.then(function (data) { return ({ resultType: "segment-loaded",
|
|
144
145
|
resultData: data }); });
|
|
145
146
|
}
|
|
146
147
|
else {
|
|
147
148
|
return (0, request_1.default)({ url: url, responseType: "arraybuffer",
|
|
148
|
-
timeout: loaderOptions.timeout,
|
|
149
|
+
timeout: loaderOptions.timeout,
|
|
150
|
+
connectionTimeout: loaderOptions.connectionTimeout, cancelSignal: cancelSignal, onProgress: callbacks.onProgress })
|
|
149
151
|
.then(function (data) {
|
|
150
152
|
if (transportOptions.checkMediaSegmentIntegrity !== true) {
|
|
151
153
|
return { resultType: "segment-loaded",
|
|
@@ -49,7 +49,8 @@ function regularSegmentLoader(url, context, callbacks, loaderOptions, cancelSign
|
|
|
49
49
|
if (Array.isArray(range)) {
|
|
50
50
|
headers = { Range: (0, byte_range_1.default)(range) };
|
|
51
51
|
}
|
|
52
|
-
return (0, request_1.default)({ url: url, responseType: "arraybuffer", headers: headers, timeout: loaderOptions.timeout,
|
|
52
|
+
return (0, request_1.default)({ url: url, responseType: "arraybuffer", headers: headers, timeout: loaderOptions.timeout,
|
|
53
|
+
connectionTimeout: loaderOptions.connectionTimeout, cancelSignal: cancelSignal, onProgress: callbacks.onProgress })
|
|
53
54
|
.then(function (data) {
|
|
54
55
|
var isMP4 = (0, is_mp4_embedded_track_1.default)(context.mimeType);
|
|
55
56
|
if (!isMP4 || checkMediaSegmentIntegrity !== true) {
|
|
@@ -135,6 +135,12 @@ export interface IManifestLoaderOptions {
|
|
|
135
135
|
* `undefined` means that no timeout will be enforced.
|
|
136
136
|
*/
|
|
137
137
|
timeout?: number | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* Connection timeout, in milliseconds, after which the request is canceled
|
|
140
|
+
* if the responses headers has not being received.
|
|
141
|
+
* Do not set or set to "undefined" to disable it.
|
|
142
|
+
*/
|
|
143
|
+
connectionTimeout?: number | undefined;
|
|
138
144
|
}
|
|
139
145
|
/** Functions allowing to load and parse segments of any type. */
|
|
140
146
|
export interface ISegmentPipeline<TLoadedFormat, TParsedSegmentDataFormat> {
|
|
@@ -168,6 +174,12 @@ export interface ISegmentLoaderOptions {
|
|
|
168
174
|
* `undefined` means that no timeout will be enforced.
|
|
169
175
|
*/
|
|
170
176
|
timeout?: number | undefined;
|
|
177
|
+
/**
|
|
178
|
+
* Connection timeout, in milliseconds, after which the request is canceled
|
|
179
|
+
* if the responses headers has not being received.
|
|
180
|
+
* Do not set or set to "undefined" to disable it.
|
|
181
|
+
*/
|
|
182
|
+
connectionTimeout?: number | undefined;
|
|
171
183
|
}
|
|
172
184
|
/**
|
|
173
185
|
* Segment parser function, allowing to parse a chunk (which may be a sub-part
|
|
@@ -34,13 +34,16 @@ function generateRegularManifestLoader(preferredType) {
|
|
|
34
34
|
switch (preferredType) {
|
|
35
35
|
case "arraybuffer":
|
|
36
36
|
return (0, request_1.default)({ url: url, responseType: "arraybuffer",
|
|
37
|
-
timeout: loaderOptions.timeout,
|
|
37
|
+
timeout: loaderOptions.timeout,
|
|
38
|
+
connectionTimeout: loaderOptions.connectionTimeout, cancelSignal: cancelSignal });
|
|
38
39
|
case "text":
|
|
39
40
|
return (0, request_1.default)({ url: url, responseType: "text",
|
|
40
|
-
timeout: loaderOptions.timeout,
|
|
41
|
+
timeout: loaderOptions.timeout,
|
|
42
|
+
connectionTimeout: loaderOptions.connectionTimeout, cancelSignal: cancelSignal });
|
|
41
43
|
case "document":
|
|
42
44
|
return (0, request_1.default)({ url: url, responseType: "document",
|
|
43
|
-
timeout: loaderOptions.timeout,
|
|
45
|
+
timeout: loaderOptions.timeout,
|
|
46
|
+
connectionTimeout: loaderOptions.connectionTimeout, cancelSignal: cancelSignal });
|
|
44
47
|
default:
|
|
45
48
|
(0, assert_unreachable_1.default)(preferredType);
|
|
46
49
|
}
|
|
@@ -67,6 +67,12 @@ export interface IFetchOptions {
|
|
|
67
67
|
* if not all data has been received yet.
|
|
68
68
|
*/
|
|
69
69
|
timeout?: number | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Optional connection timeout, in milliseconds, after which the request is canceled
|
|
72
|
+
* if the responses headers has not being received.
|
|
73
|
+
* Do not set or set to "undefined" to disable it.
|
|
74
|
+
*/
|
|
75
|
+
connectionTimeout?: number | undefined;
|
|
70
76
|
}
|
|
71
77
|
export default function fetchRequest(options: IFetchOptions): Promise<IFetchedStreamComplete>;
|
|
72
78
|
/**
|
|
@@ -79,7 +79,8 @@ function fetchRequest(options) {
|
|
|
79
79
|
}
|
|
80
80
|
log_1.default.debug("Fetch: Called with URL", options.url);
|
|
81
81
|
var cancellation = null;
|
|
82
|
-
var
|
|
82
|
+
var isTimedOut = false;
|
|
83
|
+
var isConnectionTimedOut = false;
|
|
83
84
|
var sendingTime = (0, monotonic_timestamp_1.default)();
|
|
84
85
|
var abortController = !(0, is_null_or_undefined_1.default)(_AbortController) ? new _AbortController() :
|
|
85
86
|
null;
|
|
@@ -94,13 +95,26 @@ function fetchRequest(options) {
|
|
|
94
95
|
}
|
|
95
96
|
abortController.abort();
|
|
96
97
|
}
|
|
97
|
-
var
|
|
98
|
+
var timeoutId;
|
|
98
99
|
if (options.timeout !== undefined) {
|
|
99
|
-
|
|
100
|
-
|
|
100
|
+
timeoutId = setTimeout(function () {
|
|
101
|
+
isTimedOut = true;
|
|
102
|
+
if (connectionTimeoutId !== undefined) {
|
|
103
|
+
clearTimeout(connectionTimeoutId);
|
|
104
|
+
}
|
|
101
105
|
abortFetch();
|
|
102
106
|
}, options.timeout);
|
|
103
107
|
}
|
|
108
|
+
var connectionTimeoutId;
|
|
109
|
+
if (options.connectionTimeout !== undefined) {
|
|
110
|
+
connectionTimeoutId = setTimeout(function () {
|
|
111
|
+
isConnectionTimedOut = true;
|
|
112
|
+
if (timeoutId !== undefined) {
|
|
113
|
+
clearTimeout(timeoutId);
|
|
114
|
+
}
|
|
115
|
+
abortFetch();
|
|
116
|
+
}, options.connectionTimeout);
|
|
117
|
+
}
|
|
104
118
|
var deregisterCancelLstnr = options.cancelSignal
|
|
105
119
|
.register(function abortRequest(err) {
|
|
106
120
|
cancellation = err;
|
|
@@ -113,8 +127,8 @@ function fetchRequest(options) {
|
|
|
113
127
|
fetchOpts.signal = !(0, is_null_or_undefined_1.default)(abortController) ? abortController.signal :
|
|
114
128
|
null;
|
|
115
129
|
return fetch(options.url, fetchOpts).then(function (response) {
|
|
116
|
-
if (
|
|
117
|
-
clearTimeout(
|
|
130
|
+
if (connectionTimeoutId !== undefined) {
|
|
131
|
+
clearTimeout(connectionTimeoutId);
|
|
118
132
|
}
|
|
119
133
|
if (response.status >= 300) {
|
|
120
134
|
log_1.default.warn("Fetch: Request HTTP Error", response.status, response.url);
|
|
@@ -147,6 +161,9 @@ function fetchRequest(options) {
|
|
|
147
161
|
return [2 /*return*/, readBufferAndSendEvents()];
|
|
148
162
|
}
|
|
149
163
|
else if (data.done) {
|
|
164
|
+
if (timeoutId !== undefined) {
|
|
165
|
+
clearTimeout(timeoutId);
|
|
166
|
+
}
|
|
150
167
|
deregisterCancelLstnr();
|
|
151
168
|
receivedTime = (0, monotonic_timestamp_1.default)();
|
|
152
169
|
requestDuration = receivedTime - sendingTime;
|
|
@@ -163,8 +180,12 @@ function fetchRequest(options) {
|
|
|
163
180
|
throw cancellation;
|
|
164
181
|
}
|
|
165
182
|
deregisterCancelLstnr();
|
|
166
|
-
if (
|
|
167
|
-
log_1.default.warn("Fetch: Request
|
|
183
|
+
if (isTimedOut) {
|
|
184
|
+
log_1.default.warn("Fetch: Request timed out.");
|
|
185
|
+
throw new errors_1.RequestError(options.url, 0, errors_1.NetworkErrorTypes.TIMEOUT);
|
|
186
|
+
}
|
|
187
|
+
else if (isConnectionTimedOut) {
|
|
188
|
+
log_1.default.warn("Fetch: Request connection timed out.");
|
|
168
189
|
throw new errors_1.RequestError(options.url, 0, errors_1.NetworkErrorTypes.TIMEOUT);
|
|
169
190
|
}
|
|
170
191
|
else if (err instanceof errors_1.RequestError) {
|
|
@@ -18,14 +18,14 @@ import { CancellationSignal } from "../task_canceller";
|
|
|
18
18
|
* Perform an HTTP request, according to the options given.
|
|
19
19
|
*
|
|
20
20
|
* Several errors can be rejected. Namely:
|
|
21
|
-
* -
|
|
22
|
-
*
|
|
23
|
-
* -
|
|
21
|
+
* - NetworkErrorTypes.TIMEOUT: the request timed out (took too long)
|
|
22
|
+
*
|
|
23
|
+
* - NetworkErrorTypes.PARSE_ERROR: the browser APIs used to parse the
|
|
24
24
|
* data failed.
|
|
25
|
-
* -
|
|
25
|
+
* - NetworkErrorTypes.ERROR_HTTP_CODE: the HTTP code at the time of reception
|
|
26
26
|
* was not in the 200-299 (included)
|
|
27
27
|
* range.
|
|
28
|
-
* -
|
|
28
|
+
* - NetworkErrorTypes.ERROR_EVENT: The XHR had an error event before the
|
|
29
29
|
* response could be fetched.
|
|
30
30
|
* @param {Object} options
|
|
31
31
|
* @returns {Promise.<Object>}
|
|
@@ -50,6 +50,12 @@ export interface IRequestOptions<ResponseType> {
|
|
|
50
50
|
* To not set or to set to `undefined` for disable.
|
|
51
51
|
*/
|
|
52
52
|
timeout?: number | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Optional connection timeout, in milliseconds, after which the request is canceled
|
|
55
|
+
* if the responses headers has not being received.
|
|
56
|
+
* Do not set or set to "undefined" to disable it.
|
|
57
|
+
*/
|
|
58
|
+
connectionTimeout?: number | undefined;
|
|
53
59
|
/**
|
|
54
60
|
* "Cancelation token" used to be able to cancel the request.
|
|
55
61
|
* When this token is "cancelled", the request will be aborted and the Promise
|
|
@@ -27,10 +27,11 @@ function request(options) {
|
|
|
27
27
|
responseType: (0, is_null_or_undefined_1.default)(options.responseType) ? DEFAULT_RESPONSE_TYPE :
|
|
28
28
|
options.responseType,
|
|
29
29
|
timeout: options.timeout,
|
|
30
|
+
connectionTimeout: options.connectionTimeout,
|
|
30
31
|
};
|
|
31
32
|
return new Promise(function (resolve, reject) {
|
|
32
33
|
var onProgress = options.onProgress, cancelSignal = options.cancelSignal;
|
|
33
|
-
var url = requestOptions.url, headers = requestOptions.headers, responseType = requestOptions.responseType, timeout = requestOptions.timeout;
|
|
34
|
+
var url = requestOptions.url, headers = requestOptions.headers, responseType = requestOptions.responseType, timeout = requestOptions.timeout, connectionTimeout = requestOptions.connectionTimeout;
|
|
34
35
|
var xhr = new XMLHttpRequest();
|
|
35
36
|
xhr.open("GET", url, true);
|
|
36
37
|
var timeoutId;
|
|
@@ -44,9 +45,19 @@ function request(options) {
|
|
|
44
45
|
// is more precise, it might also be more efficient.
|
|
45
46
|
timeoutId = setTimeout(function () {
|
|
46
47
|
clearCancellingProcess();
|
|
47
|
-
reject(new errors_1.RequestError(url, xhr.status,
|
|
48
|
+
reject(new errors_1.RequestError(url, xhr.status, errors_1.NetworkErrorTypes.TIMEOUT));
|
|
48
49
|
}, timeout + 3000);
|
|
49
50
|
}
|
|
51
|
+
var connectionTimeoutId;
|
|
52
|
+
if (connectionTimeout !== undefined) {
|
|
53
|
+
connectionTimeoutId = setTimeout(function () {
|
|
54
|
+
clearCancellingProcess();
|
|
55
|
+
if (xhr.readyState !== XMLHttpRequest.DONE) {
|
|
56
|
+
xhr.abort();
|
|
57
|
+
}
|
|
58
|
+
reject(new errors_1.RequestError(url, xhr.status, errors_1.NetworkErrorTypes.TIMEOUT));
|
|
59
|
+
}, connectionTimeout);
|
|
60
|
+
}
|
|
50
61
|
xhr.responseType = responseType;
|
|
51
62
|
if (xhr.responseType === "document") {
|
|
52
63
|
xhr.overrideMimeType("text/xml");
|
|
@@ -66,7 +77,7 @@ function request(options) {
|
|
|
66
77
|
deregisterCancellationListener = cancelSignal
|
|
67
78
|
.register(function abortRequest(err) {
|
|
68
79
|
clearCancellingProcess();
|
|
69
|
-
if (
|
|
80
|
+
if (xhr.readyState !== XMLHttpRequest.DONE) {
|
|
70
81
|
xhr.abort();
|
|
71
82
|
}
|
|
72
83
|
reject(err);
|
|
@@ -77,12 +88,19 @@ function request(options) {
|
|
|
77
88
|
}
|
|
78
89
|
xhr.onerror = function onXHRError() {
|
|
79
90
|
clearCancellingProcess();
|
|
80
|
-
reject(new errors_1.RequestError(url, xhr.status,
|
|
91
|
+
reject(new errors_1.RequestError(url, xhr.status, errors_1.NetworkErrorTypes.ERROR_EVENT));
|
|
81
92
|
};
|
|
82
93
|
xhr.ontimeout = function onXHRTimeout() {
|
|
83
94
|
clearCancellingProcess();
|
|
84
|
-
reject(new errors_1.RequestError(url, xhr.status,
|
|
95
|
+
reject(new errors_1.RequestError(url, xhr.status, errors_1.NetworkErrorTypes.TIMEOUT));
|
|
85
96
|
};
|
|
97
|
+
if (connectionTimeout !== undefined) {
|
|
98
|
+
xhr.onreadystatechange = function clearConnectionTimeout() {
|
|
99
|
+
if (xhr.readyState >= XMLHttpRequest.HEADERS_RECEIVED) {
|
|
100
|
+
clearTimeout(connectionTimeoutId);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
86
104
|
if (onProgress !== undefined) {
|
|
87
105
|
xhr.onprogress = function onXHRProgress(event) {
|
|
88
106
|
var currentTime = (0, monotonic_timestamp_1.default)();
|
|
@@ -91,7 +109,7 @@ function request(options) {
|
|
|
91
109
|
};
|
|
92
110
|
}
|
|
93
111
|
xhr.onload = function onXHRLoad(event) {
|
|
94
|
-
if (xhr.readyState ===
|
|
112
|
+
if (xhr.readyState === XMLHttpRequest.DONE) {
|
|
95
113
|
clearCancellingProcess();
|
|
96
114
|
if (xhr.status >= 200 && xhr.status < 300) {
|
|
97
115
|
var receivedTime = (0, monotonic_timestamp_1.default)();
|
|
@@ -115,7 +133,7 @@ function request(options) {
|
|
|
115
133
|
responseData = xhr.response;
|
|
116
134
|
}
|
|
117
135
|
if ((0, is_null_or_undefined_1.default)(responseData)) {
|
|
118
|
-
reject(new errors_1.RequestError(url, xhr.status,
|
|
136
|
+
reject(new errors_1.RequestError(url, xhr.status, errors_1.NetworkErrorTypes.PARSE_ERROR));
|
|
119
137
|
return;
|
|
120
138
|
}
|
|
121
139
|
resolve({ status: status_1, url: _url,
|
|
@@ -123,7 +141,7 @@ function request(options) {
|
|
|
123
141
|
size: totalSize, responseData: responseData });
|
|
124
142
|
}
|
|
125
143
|
else {
|
|
126
|
-
reject(new errors_1.RequestError(url, xhr.status,
|
|
144
|
+
reject(new errors_1.RequestError(url, xhr.status, errors_1.NetworkErrorTypes.ERROR_HTTP_CODE));
|
|
127
145
|
}
|
|
128
146
|
}
|
|
129
147
|
};
|
|
@@ -135,6 +153,9 @@ function request(options) {
|
|
|
135
153
|
if (timeoutId !== undefined) {
|
|
136
154
|
clearTimeout(timeoutId);
|
|
137
155
|
}
|
|
156
|
+
if (connectionTimeoutId !== undefined) {
|
|
157
|
+
clearTimeout(connectionTimeoutId);
|
|
158
|
+
}
|
|
138
159
|
if (deregisterCancellationListener !== null) {
|
|
139
160
|
deregisterCancellationListener();
|
|
140
161
|
}
|