rx-player 3.26.2 → 3.27.0-dev.20220317
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/.github/workflows/perfs.yml +22 -0
- package/CHANGELOG.md +33 -1
- package/FILES.md +5 -4
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/browser_detection.d.ts +4 -2
- package/dist/_esm5.processed/compat/browser_detection.js +4 -2
- package/dist/_esm5.processed/compat/eme/close_session.d.ts +11 -5
- package/dist/_esm5.processed/compat/eme/close_session.js +144 -36
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +27 -24
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +53 -34
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +43 -41
- package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
- package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +68 -17
- package/dist/_esm5.processed/compat/event_listeners.js +2 -1
- package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
- package/dist/_esm5.processed/config.d.ts +166 -1080
- package/dist/_esm5.processed/config.js +17 -1119
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
- package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +1 -1
- package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
- package/dist/_esm5.processed/core/abr/pending_requests_store.js +3 -5
- package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +1 -1
- package/dist/_esm5.processed/core/abr/representation_estimator.js +2 -2
- package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
- package/dist/_esm5.processed/core/api/index.d.ts +2 -1
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +22 -4
- package/dist/_esm5.processed/core/api/option_utils.d.ts +3 -1
- package/dist/_esm5.processed/core/api/option_utils.js +19 -6
- package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
- package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
- package/dist/_esm5.processed/core/api/public_api.js +72 -33
- package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +6 -6
- package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -51
- package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +30 -75
- package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +104 -0
- package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +41 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +866 -0
- package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
- package/dist/_esm5.processed/core/decrypt/create_session.js +174 -0
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +21 -0
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +300 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
- package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
- package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
- package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
- package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
- package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +120 -242
- package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
- package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +85 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +303 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
- package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
- package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +4 -4
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +3 -3
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +6 -2
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +1 -1
- package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +3 -3
- package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +5 -3
- package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
- package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
- package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
- package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
- package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
- package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
- package/dist/_esm5.processed/core/init/types.d.ts +2 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +3 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +32 -31
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +4 -4
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
- package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
- package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
- package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +1 -1
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +2 -1
- package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +5 -6
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
- package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
- package/dist/_esm5.processed/default_config.d.ts +1114 -0
- package/dist/_esm5.processed/default_config.js +1145 -0
- package/dist/_esm5.processed/errors/request_error.js +3 -1
- package/dist/_esm5.processed/experimental/index.d.ts +2 -0
- package/dist/_esm5.processed/experimental/index.js +2 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +2 -4
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
- package/dist/_esm5.processed/features/features_object.js +1 -1
- package/dist/_esm5.processed/features/initialize_features.js +1 -1
- package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
- package/dist/_esm5.processed/features/list/eme.js +5 -5
- package/dist/_esm5.processed/features/types.d.ts +3 -3
- package/dist/_esm5.processed/manifest/adaptation.d.ts +2 -2
- package/dist/_esm5.processed/manifest/adaptation.js +3 -1
- package/dist/_esm5.processed/manifest/manifest.d.ts +10 -23
- package/dist/_esm5.processed/manifest/manifest.js +10 -74
- package/dist/_esm5.processed/manifest/period.d.ts +3 -3
- package/dist/_esm5.processed/manifest/representation.d.ts +37 -5
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +18 -18
- package/dist/_esm5.processed/manifest/types.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +6 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +14 -14
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +17 -17
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +28 -20
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +20 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -35
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +109 -96
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +8 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +18 -27
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +25 -23
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +21 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +19 -19
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -38
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +8 -8
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +30 -30
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +15 -5
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +31 -19
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
- package/dist/_esm5.processed/public_types.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +2 -1
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +4 -1
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
- package/dist/_esm5.processed/transports/dash/text_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/text_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/text_parser.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
- package/dist/_esm5.processed/transports/local/segment_loader.d.ts +1 -2
- package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
- package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
- package/dist/_esm5.processed/transports/smooth/pipelines.js +69 -11
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +0 -1
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/types.d.ts +58 -30
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +1 -1
- package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -1
- package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
- package/dist/_esm5.processed/utils/cast_to_observable.js +1 -1
- package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
- package/dist/_esm5.processed/utils/deep_merge.js +53 -0
- package/dist/_esm5.processed/utils/reference.d.ts +29 -0
- package/dist/_esm5.processed/utils/reference.js +72 -24
- package/dist/_esm5.processed/utils/request/fetch.d.ts +4 -5
- package/dist/_esm5.processed/utils/request/fetch.js +8 -6
- package/dist/_esm5.processed/utils/request/xhr.d.ts +6 -6
- package/dist/_esm5.processed/utils/request/xhr.js +3 -2
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +1 -2
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
- package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
- package/dist/_esm5.processed/utils/task_canceller.js +3 -3
- package/dist/rx-player.js +5242 -3190
- package/dist/rx-player.min.js +1 -1
- package/dummy +1 -0
- package/{dist/_esm5.processed/core/eme/dispose_eme.d.ts → experimental/index.d.ts} +1 -4
- package/{dist/_esm5.processed/core/eme/dispose_media_keys.d.ts → experimental/index.js} +1 -6
- package/package.json +33 -36
- package/scripts/build/templates/experimental/index.d.ts +16 -0
- package/scripts/build/templates/experimental/index.js +16 -0
- package/scripts/doc-generator/generate_header_html.js +6 -7
- package/scripts/doc-generator/generate_page_html.js +3 -4
- package/scripts/doc-generator/generate_page_list_html.js +4 -5
- package/scripts/doc-generator/generate_sidebar_html.js +4 -7
- package/scripts/doc-generator/utils.js +0 -11
- package/scripts/generate_demo_list.js +3 -3
- package/scripts/generate_documentation_list.js +3 -3
- package/scripts/launch_static_server.js +127 -67
- package/scripts/run_standalone_demo.js +1 -0
- package/scripts/start_demo_web_server.js +1 -0
- package/sonar-project.properties +1 -1
- package/src/README.md +6 -6
- package/src/compat/__tests__/fullscreen.test.ts +7 -7
- package/src/compat/__tests__/is_vtt_cue.test.ts +1 -1
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
- package/src/compat/browser_detection.ts +4 -2
- package/src/compat/eme/close_session.ts +90 -56
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
- package/src/compat/eme/custom_media_keys/index.ts +28 -41
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +63 -46
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +51 -49
- package/src/compat/eme/generate_key_request.ts +25 -33
- package/src/compat/eme/load_session.ts +29 -31
- package/src/compat/event_listeners.ts +2 -1
- package/src/compat/should_favour_custom_safari_EME.ts +5 -2
- package/src/config.ts +17 -1210
- package/src/core/README.md +1 -1
- package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
- package/src/core/abr/bandwidth_estimator.ts +4 -4
- package/src/core/abr/buffer_based_chooser.ts +85 -20
- package/src/core/abr/network_analyzer.ts +6 -7
- package/src/core/abr/pending_requests_store.ts +3 -5
- package/src/core/abr/representation_estimator.ts +6 -3
- package/src/core/api/__tests__/get_player_state.test.ts +3 -3
- package/src/core/api/__tests__/option_utils.test.ts +17 -17
- package/src/core/api/get_player_state.ts +1 -1
- package/src/core/api/index.ts +3 -0
- package/src/core/api/media_element_track_choice_manager.ts +22 -3
- package/src/core/api/option_utils.ts +37 -20
- package/src/core/api/playback_observer.ts +12 -8
- package/src/core/api/public_api.ts +152 -112
- package/src/core/api/track_choice_manager.ts +10 -9
- package/src/core/decrypt/README.md +22 -0
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
- package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
- package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +36 -103
- package/src/core/{eme → decrypt}/attach_media_keys.ts +49 -56
- package/src/core/decrypt/clear_on_stop.ts +48 -0
- package/src/core/decrypt/content_decryptor.ts +1158 -0
- package/src/core/decrypt/create_or_load_session.ts +130 -0
- package/src/core/decrypt/create_session.ts +175 -0
- package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
- package/src/core/{eme → decrypt}/find_key_system.ts +126 -134
- package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
- package/src/core/decrypt/get_media_keys.ts +145 -0
- package/src/core/{eme → decrypt}/index.ts +11 -8
- package/src/core/decrypt/init_media_keys.ts +51 -0
- package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
- package/src/core/decrypt/set_server_certificate.ts +104 -0
- package/src/core/{eme → decrypt}/types.ts +129 -259
- package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
- package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
- package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
- package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
- package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
- package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +20 -20
- package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
- package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
- package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
- package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
- package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
- package/src/core/decrypt/utils/key_session_record.ts +175 -0
- package/src/core/decrypt/utils/loaded_sessions_store.ts +318 -0
- package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
- package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
- package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
- package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
- package/src/core/fetchers/manifest/manifest_fetcher.ts +9 -9
- package/src/core/fetchers/segment/segment_fetcher.ts +10 -7
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
- package/src/core/fetchers/utils/try_urls_with_backoff.ts +1 -1
- package/src/core/init/.initialize_media_source.ts.un~ +0 -0
- package/src/core/init/get_initial_time.ts +2 -1
- package/src/core/init/initialize_directfile.ts +19 -22
- package/src/core/init/initialize_media_source.ts +43 -106
- package/src/core/init/link_drm_and_content.ts +176 -0
- package/src/core/init/manifest_update_scheduler.ts +12 -10
- package/src/core/init/stall_avoider.ts +6 -5
- package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
- package/src/core/init/stream_events_emitter/types.ts +2 -2
- package/src/core/init/types.ts +1 -39
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +6 -7
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +32 -31
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
- package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
- package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
- package/src/core/stream/events_generators.ts +9 -4
- package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
- package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
- package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
- package/src/core/stream/period/period_stream.ts +5 -2
- package/src/core/stream/representation/force_garbage_collection.ts +5 -7
- package/src/core/stream/representation/get_buffer_status.ts +28 -16
- package/src/core/stream/representation/get_needed_segments.ts +124 -28
- package/src/core/stream/representation/get_segment_priority.ts +1 -2
- package/src/core/stream/representation/push_media_segment.ts +3 -2
- package/src/core/stream/representation/representation_stream.ts +30 -7
- package/src/core/stream/types.ts +1 -1
- package/src/default_config.ts +1241 -0
- package/src/errors/request_error.ts +4 -1
- package/src/experimental/index.ts +5 -0
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +5 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +4 -4
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +1 -1
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
- package/src/features/__tests__/initialize_features.test.ts +2 -2
- package/src/features/features_object.ts +1 -1
- package/src/features/initialize_features.ts +1 -1
- package/src/features/list/__tests__/eme.test.ts +5 -5
- package/src/features/list/eme.ts +5 -5
- package/src/features/types.ts +3 -10
- package/src/manifest/adaptation.ts +6 -4
- package/src/manifest/manifest.ts +16 -86
- package/src/manifest/period.ts +3 -3
- package/src/manifest/representation.ts +38 -5
- package/src/manifest/representation_index/types.ts +18 -18
- package/src/manifest/types.ts +3 -3
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
- package/src/parsers/manifest/dash/common/indexes/base.ts +6 -6
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +4 -2
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +2 -2
- package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
- package/src/parsers/manifest/dash/common/indexes/list.ts +14 -14
- package/src/parsers/manifest/dash/common/indexes/template.ts +18 -18
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +51 -23
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +167 -134
- package/src/parsers/manifest/dash/common/parse_mpd.ts +9 -10
- package/src/parsers/manifest/dash/common/parse_periods.ts +80 -79
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +83 -75
- package/src/parsers/manifest/dash/common/parse_representations.ts +44 -63
- package/src/parsers/manifest/dash/node_parser_types.ts +30 -30
- package/src/parsers/manifest/dash/parsers_types.ts +3 -3
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +4 -4
- package/src/parsers/manifest/smooth/create_parser.ts +24 -21
- package/src/parsers/manifest/smooth/representation_index.ts +14 -14
- package/src/parsers/manifest/types.ts +28 -28
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +31 -33
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +15 -6
- package/src/parsers/manifest/utils/index_helpers.ts +2 -2
- package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
- package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
- package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
- package/src/public_types.ts +5 -1
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +2 -2
- package/src/transports/dash/image_pipelines.ts +4 -1
- package/src/transports/dash/init_segment_loader.ts +1 -1
- package/src/transports/dash/manifest_parser.ts +1 -1
- package/src/transports/dash/segment_loader.ts +7 -7
- package/src/transports/dash/segment_parser.ts +8 -1
- package/src/transports/dash/text_loader.ts +2 -2
- package/src/transports/dash/text_parser.ts +11 -1
- package/src/transports/local/segment_loader.ts +4 -4
- package/src/transports/local/segment_parser.ts +4 -0
- package/src/transports/local/text_parser.ts +8 -0
- package/src/transports/metaplaylist/manifest_loader.ts +1 -1
- package/src/transports/metaplaylist/pipelines.ts +1 -1
- package/src/transports/smooth/pipelines.ts +29 -16
- package/src/transports/smooth/segment_loader.ts +8 -8
- package/src/transports/types.ts +59 -30
- package/src/transports/utils/call_custom_manifest_loader.ts +6 -6
- package/src/transports/utils/generate_manifest_loader.ts +1 -1
- package/src/utils/__tests__/deep_merge.test.ts +48 -0
- package/src/utils/__tests__/flat_map.test.ts +12 -7
- package/src/utils/cancellable_sleep.ts +1 -1
- package/src/utils/cast_to_observable.ts +1 -2
- package/src/utils/deep_merge.ts +46 -0
- package/src/utils/reference.ts +116 -23
- package/src/utils/request/fetch.ts +17 -15
- package/src/utils/request/xhr.ts +11 -8
- package/src/utils/rx-from_cancellable_promise.ts +8 -4
- package/src/utils/task_canceller.ts +6 -4
- package/tsconfig.json +1 -2
- package/tsconfig.modules.json +1 -2
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
- package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
- package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
- package/dist/_esm5.processed/core/eme/create_session.js +0 -126
- package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
- package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
- package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
- package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
- package/dist/_esm5.processed/core/eme/find_key_system.js +0 -243
- package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
- package/dist/_esm5.processed/core/eme/get_session.js +0 -68
- package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
- package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
- package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
- package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
- package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
- package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
- package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
- package/src/core/eme/README.md +0 -26
- package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
- package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
- package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
- package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
- package/src/core/eme/clear_eme_session.ts +0 -62
- package/src/core/eme/create_session.ts +0 -187
- package/src/core/eme/dispose_eme.ts +0 -25
- package/src/core/eme/dispose_media_keys.ts +0 -46
- package/src/core/eme/eme_manager.ts +0 -387
- package/src/core/eme/get_media_keys.ts +0 -141
- package/src/core/eme/get_session.ts +0 -135
- package/src/core/eme/init_media_keys.ts +0 -106
- package/src/core/eme/set_server_certificate.ts +0 -115
- package/src/core/eme/utils/close_session.ts +0 -113
- package/src/core/eme/utils/init_data_store.ts +0 -234
- package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
- package/src/core/init/create_eme_manager.ts +0 -95
|
@@ -27,18 +27,21 @@ export function createSharedReference(initialValue) {
|
|
|
27
27
|
/** Current value referenced by this `ISharedReference`. */
|
|
28
28
|
var value = initialValue;
|
|
29
29
|
/**
|
|
30
|
-
* List of currently subscribed
|
|
30
|
+
* List of currently subscribed listeners which listen to the referenced
|
|
31
31
|
* value's updates.
|
|
32
32
|
*
|
|
33
|
-
* Contains
|
|
34
|
-
* - `
|
|
35
|
-
*
|
|
36
|
-
*
|
|
33
|
+
* Contains three properties:
|
|
34
|
+
* - `trigger`: Function which will be called with the new reference's value
|
|
35
|
+
* once it changes
|
|
36
|
+
* - `complete`: Allows to clean-up the listener, will be called once the
|
|
37
|
+
* reference is finished.
|
|
38
|
+
* - `hasBeenCleared`: becomes `true` when the Observable becomes
|
|
39
|
+
* unsubscribed and thus when it is removed from the `cbs` array.
|
|
37
40
|
* Adding this property allows to detect when a previously-added
|
|
38
41
|
* Observable has since been unsubscribed e.g. as a side-effect during a
|
|
39
42
|
* function call.
|
|
40
43
|
*/
|
|
41
|
-
var
|
|
44
|
+
var cbs = [];
|
|
42
45
|
var isFinished = false;
|
|
43
46
|
return {
|
|
44
47
|
/**
|
|
@@ -63,15 +66,15 @@ export function createSharedReference(initialValue) {
|
|
|
63
66
|
}
|
|
64
67
|
}
|
|
65
68
|
value = newVal;
|
|
66
|
-
if (
|
|
69
|
+
if (cbs.length === 0) {
|
|
67
70
|
return;
|
|
68
71
|
}
|
|
69
|
-
var
|
|
70
|
-
for (var _i = 0,
|
|
71
|
-
var
|
|
72
|
+
var clonedCbs = cbs.slice();
|
|
73
|
+
for (var _i = 0, clonedCbs_1 = clonedCbs; _i < clonedCbs_1.length; _i++) {
|
|
74
|
+
var cbObj = clonedCbs_1[_i];
|
|
72
75
|
try {
|
|
73
|
-
if (!
|
|
74
|
-
|
|
76
|
+
if (!cbObj.hasBeenCleared) {
|
|
77
|
+
cbObj.trigger(newVal);
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
80
|
catch (_) {
|
|
@@ -79,6 +82,11 @@ export function createSharedReference(initialValue) {
|
|
|
79
82
|
}
|
|
80
83
|
}
|
|
81
84
|
},
|
|
85
|
+
setValueIfChanged: function (newVal) {
|
|
86
|
+
if (newVal !== value) {
|
|
87
|
+
this.setValue(newVal);
|
|
88
|
+
}
|
|
89
|
+
},
|
|
82
90
|
/**
|
|
83
91
|
* Returns an Observable which synchronously emits the current value (unless
|
|
84
92
|
* the `skipCurrentValue` argument has been set to `true`) and then each
|
|
@@ -95,23 +103,63 @@ export function createSharedReference(initialValue) {
|
|
|
95
103
|
obs.complete();
|
|
96
104
|
return undefined;
|
|
97
105
|
}
|
|
98
|
-
var
|
|
99
|
-
|
|
100
|
-
|
|
106
|
+
var cbObj = { trigger: obs.next.bind(obs),
|
|
107
|
+
complete: obs.complete.bind(obs),
|
|
108
|
+
hasBeenCleared: false };
|
|
109
|
+
cbs.push(cbObj);
|
|
101
110
|
return function () {
|
|
102
111
|
/**
|
|
103
112
|
* Code in here can still be running while this is happening.
|
|
104
|
-
* Set `
|
|
113
|
+
* Set `hasBeenCleared` to `true` to avoid still using the
|
|
105
114
|
* `subscriber` from this object.
|
|
106
115
|
*/
|
|
107
|
-
|
|
108
|
-
var indexOf =
|
|
116
|
+
cbObj.hasBeenCleared = true;
|
|
117
|
+
var indexOf = cbs.indexOf(cbObj);
|
|
109
118
|
if (indexOf >= 0) {
|
|
110
|
-
|
|
119
|
+
cbs.splice(indexOf, 1);
|
|
111
120
|
}
|
|
112
121
|
};
|
|
113
122
|
});
|
|
114
123
|
},
|
|
124
|
+
/**
|
|
125
|
+
* Allows to register a callback to be called each time the value inside the
|
|
126
|
+
* reference is updated.
|
|
127
|
+
* @param {Function} cb - Callback to be called each time the reference is
|
|
128
|
+
* updated. Takes the new value im argument.
|
|
129
|
+
* @param {Object} [options]
|
|
130
|
+
* @param {Object} [options.clearSignal] - Allows to provide a
|
|
131
|
+
* CancellationSignal which will unregister the callback when it emits.
|
|
132
|
+
* @param {boolean} [options.emitCurrentValue] - If `true`, the callback will
|
|
133
|
+
* also be immediately called with the current value.
|
|
134
|
+
*/
|
|
135
|
+
onUpdate: function (cb, options) {
|
|
136
|
+
if ((options === null || options === void 0 ? void 0 : options.emitCurrentValue) === true) {
|
|
137
|
+
cb(value);
|
|
138
|
+
}
|
|
139
|
+
if (isFinished) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
var cbObj = { trigger: cb,
|
|
143
|
+
complete: unlisten,
|
|
144
|
+
hasBeenCleared: false };
|
|
145
|
+
cbs.push(cbObj);
|
|
146
|
+
if ((options === null || options === void 0 ? void 0 : options.clearSignal) === undefined) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
options.clearSignal.register(unlisten);
|
|
150
|
+
function unlisten() {
|
|
151
|
+
/**
|
|
152
|
+
* Code in here can still be running while this is happening.
|
|
153
|
+
* Set `hasBeenCleared` to `true` to avoid still using the
|
|
154
|
+
* `subscriber` from this object.
|
|
155
|
+
*/
|
|
156
|
+
cbObj.hasBeenCleared = true;
|
|
157
|
+
var indexOf = cbs.indexOf(cbObj);
|
|
158
|
+
if (indexOf >= 0) {
|
|
159
|
+
cbs.splice(indexOf, 1);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
115
163
|
/**
|
|
116
164
|
* Indicate that no new values will be emitted.
|
|
117
165
|
* Allows to automatically close all Observables generated from this shared
|
|
@@ -119,12 +167,12 @@ export function createSharedReference(initialValue) {
|
|
|
119
167
|
*/
|
|
120
168
|
finish: function () {
|
|
121
169
|
isFinished = true;
|
|
122
|
-
var
|
|
123
|
-
for (var _i = 0,
|
|
124
|
-
var
|
|
170
|
+
var clonedCbs = cbs.slice();
|
|
171
|
+
for (var _i = 0, clonedCbs_2 = clonedCbs; _i < clonedCbs_2.length; _i++) {
|
|
172
|
+
var cbObj = clonedCbs_2[_i];
|
|
125
173
|
try {
|
|
126
|
-
if (!
|
|
127
|
-
|
|
174
|
+
if (!cbObj.hasBeenCleared) {
|
|
175
|
+
cbObj.complete();
|
|
128
176
|
}
|
|
129
177
|
}
|
|
130
178
|
catch (_) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import PPromise from "pinkie";
|
|
2
1
|
import { CancellationSignal } from "../task_canceller";
|
|
3
2
|
/** Object returned by `fetchRequest` after the fetch operation succeeded. */
|
|
4
3
|
export interface IFetchedStreamComplete {
|
|
@@ -33,7 +32,7 @@ export interface IFetchedDataObject {
|
|
|
33
32
|
* Value of the "Content-Length" header, which should (yet also might not be)
|
|
34
33
|
* the size of the complete data that will be fetched.
|
|
35
34
|
*/
|
|
36
|
-
totalSize
|
|
35
|
+
totalSize: number | undefined;
|
|
37
36
|
/**
|
|
38
37
|
* Current available chunk, which might only be a sub-part of the whole
|
|
39
38
|
* data.
|
|
@@ -61,15 +60,15 @@ export interface IFetchOptions {
|
|
|
61
60
|
/** Optional headers for the HTTP GET request perfomed by `fetchRequest`. */
|
|
62
61
|
headers?: {
|
|
63
62
|
[header: string]: string;
|
|
64
|
-
} | null;
|
|
63
|
+
} | undefined | null;
|
|
65
64
|
/**
|
|
66
65
|
* Optional timeout for the HTTP GET request perfomed by `fetchRequest`.
|
|
67
66
|
* This timeout is just enabled until the HTTP response from the server, even
|
|
68
67
|
* if not all data has been received yet.
|
|
69
68
|
*/
|
|
70
|
-
timeout?: number;
|
|
69
|
+
timeout?: number | undefined;
|
|
71
70
|
}
|
|
72
|
-
export default function fetchRequest(options: IFetchOptions):
|
|
71
|
+
export default function fetchRequest(options: IFetchOptions): Promise<IFetchedStreamComplete>;
|
|
73
72
|
/**
|
|
74
73
|
* Returns true if fetch should be supported in the current browser.
|
|
75
74
|
* @return {boolean}
|
|
@@ -49,12 +49,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
49
49
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
|
-
import PPromise from "pinkie";
|
|
53
52
|
import config from "../../config";
|
|
54
53
|
import { NetworkErrorTypes, RequestError, } from "../../errors";
|
|
55
54
|
import log from "../../log";
|
|
56
55
|
import isNullOrUndefined from "../is_null_or_undefined";
|
|
57
|
-
var DEFAULT_REQUEST_TIMEOUT = config.DEFAULT_REQUEST_TIMEOUT;
|
|
58
56
|
var _Headers = typeof Headers === "function" ? Headers :
|
|
59
57
|
null;
|
|
60
58
|
var _AbortController = typeof AbortController === "function" ?
|
|
@@ -93,7 +91,7 @@ export default function fetchRequest(options) {
|
|
|
93
91
|
abortController.abort();
|
|
94
92
|
}
|
|
95
93
|
var requestTimeout = isNullOrUndefined(options.timeout) ?
|
|
96
|
-
DEFAULT_REQUEST_TIMEOUT :
|
|
94
|
+
config.getCurrent().DEFAULT_REQUEST_TIMEOUT :
|
|
97
95
|
options.timeout;
|
|
98
96
|
var timeout = window.setTimeout(function () {
|
|
99
97
|
timeouted = true;
|
|
@@ -104,9 +102,13 @@ export default function fetchRequest(options) {
|
|
|
104
102
|
cancellation = err;
|
|
105
103
|
abortFetch();
|
|
106
104
|
});
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
105
|
+
var fetchOpts = { method: "GET" };
|
|
106
|
+
if (headers !== undefined) {
|
|
107
|
+
fetchOpts.headers = headers;
|
|
108
|
+
}
|
|
109
|
+
fetchOpts.signal = !isNullOrUndefined(abortController) ? abortController.signal :
|
|
110
|
+
null;
|
|
111
|
+
return fetch(options.url, fetchOpts).then(function (response) {
|
|
110
112
|
if (!isNullOrUndefined(timeout)) {
|
|
111
113
|
clearTimeout(timeout);
|
|
112
114
|
}
|
|
@@ -107,25 +107,25 @@ export interface IRequestOptions<ResponseType> {
|
|
|
107
107
|
/** Dictionary of headers you want to set. `null` or `undefined` for no header. */
|
|
108
108
|
headers?: {
|
|
109
109
|
[header: string]: string;
|
|
110
|
-
} | null;
|
|
110
|
+
} | null | undefined;
|
|
111
111
|
/** Wanted format for the response */
|
|
112
|
-
responseType?: ResponseType;
|
|
112
|
+
responseType?: ResponseType | undefined;
|
|
113
113
|
/**
|
|
114
114
|
* Optional timeout, in milliseconds, after which we will cancel a request.
|
|
115
115
|
* Set to DEFAULT_REQUEST_TIMEOUT by default.
|
|
116
116
|
*/
|
|
117
|
-
timeout?: number;
|
|
117
|
+
timeout?: number | undefined;
|
|
118
118
|
/**
|
|
119
119
|
* "Cancelation token" used to be able to cancel the request.
|
|
120
120
|
* When this token is "cancelled", the request will be aborted and the Promise
|
|
121
121
|
* returned by `request` will be rejected.
|
|
122
122
|
*/
|
|
123
|
-
cancelSignal?: CancellationSignal;
|
|
123
|
+
cancelSignal?: CancellationSignal | undefined;
|
|
124
124
|
/**
|
|
125
125
|
* When defined, this callback will be called on each XHR "progress" event
|
|
126
126
|
* with data related to this request's progress.
|
|
127
127
|
*/
|
|
128
|
-
onProgress?: (info: IProgressInfo) => void;
|
|
128
|
+
onProgress?: ((info: IProgressInfo) => void) | undefined;
|
|
129
129
|
}
|
|
130
130
|
/** Data emitted by `request`'s Promise when the request succeeded. */
|
|
131
131
|
export interface IRequestResponse<T, U> {
|
|
@@ -156,5 +156,5 @@ export interface IProgressInfo {
|
|
|
156
156
|
size: number;
|
|
157
157
|
sendingTime: number;
|
|
158
158
|
url: string;
|
|
159
|
-
totalSize?: number;
|
|
159
|
+
totalSize?: number | undefined;
|
|
160
160
|
}
|
|
@@ -17,9 +17,10 @@ import config from "../../config";
|
|
|
17
17
|
import { RequestError } from "../../errors";
|
|
18
18
|
import isNonEmptyString from "../is_non_empty_string";
|
|
19
19
|
import isNullOrUndefined from "../is_null_or_undefined";
|
|
20
|
-
|
|
20
|
+
import PPromise from "../promise";
|
|
21
21
|
var DEFAULT_RESPONSE_TYPE = "json";
|
|
22
22
|
export default function request(options) {
|
|
23
|
+
var DEFAULT_REQUEST_TIMEOUT = config.getCurrent().DEFAULT_REQUEST_TIMEOUT;
|
|
23
24
|
var requestOptions = {
|
|
24
25
|
url: options.url,
|
|
25
26
|
headers: options.headers,
|
|
@@ -28,7 +29,7 @@ export default function request(options) {
|
|
|
28
29
|
timeout: isNullOrUndefined(options.timeout) ? DEFAULT_REQUEST_TIMEOUT :
|
|
29
30
|
options.timeout,
|
|
30
31
|
};
|
|
31
|
-
return new
|
|
32
|
+
return new PPromise(function (resolve, reject) {
|
|
32
33
|
var onProgress = options.onProgress, cancelSignal = options.cancelSignal;
|
|
33
34
|
var url = requestOptions.url, headers = requestOptions.headers, responseType = requestOptions.responseType, timeout = requestOptions.timeout;
|
|
34
35
|
var xhr = new XMLHttpRequest();
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import PPromise from "pinkie";
|
|
17
16
|
import { Observable } from "rxjs";
|
|
18
17
|
import TaskCanceller from "./task_canceller";
|
|
19
18
|
/**
|
|
@@ -37,4 +36,4 @@ import TaskCanceller from "./task_canceller";
|
|
|
37
36
|
* @param {Function} fn
|
|
38
37
|
* @returns {Observable}
|
|
39
38
|
*/
|
|
40
|
-
export default function fromCancellablePromise<T>(canceller: TaskCanceller, fn: () =>
|
|
39
|
+
export default function fromCancellablePromise<T>(canceller: TaskCanceller, fn: () => Promise<T>): Observable<T>;
|
|
@@ -38,21 +38,26 @@ import { Observable } from "rxjs";
|
|
|
38
38
|
export default function fromCancellablePromise(canceller, fn) {
|
|
39
39
|
return new Observable(function (obs) {
|
|
40
40
|
var isUnsubscribedFrom = false;
|
|
41
|
+
var isComplete = false;
|
|
41
42
|
fn().then(function (i) {
|
|
42
43
|
if (isUnsubscribedFrom) {
|
|
43
44
|
return;
|
|
44
45
|
}
|
|
46
|
+
isComplete = true;
|
|
45
47
|
obs.next(i);
|
|
46
48
|
obs.complete();
|
|
47
49
|
}, function (err) {
|
|
50
|
+
isComplete = true;
|
|
48
51
|
if (isUnsubscribedFrom) {
|
|
49
52
|
return;
|
|
50
53
|
}
|
|
51
54
|
obs.error(err);
|
|
52
55
|
});
|
|
53
56
|
return function () {
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
if (!isComplete) {
|
|
58
|
+
isUnsubscribedFrom = true;
|
|
59
|
+
canceller.cancel();
|
|
60
|
+
}
|
|
56
61
|
};
|
|
57
62
|
});
|
|
58
63
|
}
|
|
@@ -142,9 +142,9 @@ export default class TaskCanceller {
|
|
|
142
142
|
* An optional CancellationError can be given in argument for when this
|
|
143
143
|
* cancellation is actually triggered as a chain reaction from a previous
|
|
144
144
|
* cancellation.
|
|
145
|
-
* @param {Error} [
|
|
145
|
+
* @param {Error} [srcError]
|
|
146
146
|
*/
|
|
147
|
-
cancel(
|
|
147
|
+
cancel(srcError?: CancellationError): void;
|
|
148
148
|
/**
|
|
149
149
|
* Check that the `error` in argument is a `CancellationError`, most likely
|
|
150
150
|
* meaning that the linked error is due to a task aborted via a
|
|
@@ -166,7 +166,9 @@ export declare class CancellationSignal {
|
|
|
166
166
|
*/
|
|
167
167
|
isCancelled: boolean;
|
|
168
168
|
/**
|
|
169
|
-
* Error associated to the cancellation
|
|
169
|
+
* Error associated to the cancellation, only set if the `CancellationSignal`
|
|
170
|
+
* has been used (which means that the task has been cancelled).
|
|
171
|
+
*
|
|
170
172
|
* Can be used to notify to a caller that this task was aborted (for example
|
|
171
173
|
* by rejecting it through the Promise associated to that task).
|
|
172
174
|
*
|
|
@@ -148,14 +148,14 @@ var TaskCanceller = /** @class */ (function () {
|
|
|
148
148
|
* An optional CancellationError can be given in argument for when this
|
|
149
149
|
* cancellation is actually triggered as a chain reaction from a previous
|
|
150
150
|
* cancellation.
|
|
151
|
-
* @param {Error} [
|
|
151
|
+
* @param {Error} [srcError]
|
|
152
152
|
*/
|
|
153
|
-
TaskCanceller.prototype.cancel = function (
|
|
153
|
+
TaskCanceller.prototype.cancel = function (srcError) {
|
|
154
154
|
if (this.isUsed) {
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
157
|
this.isUsed = true;
|
|
158
|
-
var cancellationError =
|
|
158
|
+
var cancellationError = srcError !== null && srcError !== void 0 ? srcError : new CancellationError();
|
|
159
159
|
this._trigger(cancellationError);
|
|
160
160
|
};
|
|
161
161
|
/**
|