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
|
@@ -24,12 +24,48 @@ var __assign = (this && this.__assign) || function () {
|
|
|
24
24
|
};
|
|
25
25
|
return __assign.apply(this, arguments);
|
|
26
26
|
};
|
|
27
|
-
|
|
27
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
28
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
29
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
30
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
31
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
32
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
33
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
37
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
38
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
39
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
40
|
+
function step(op) {
|
|
41
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
42
|
+
while (_) try {
|
|
43
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
44
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
45
|
+
switch (op[0]) {
|
|
46
|
+
case 0: case 1: t = op; break;
|
|
47
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
48
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
49
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
50
|
+
default:
|
|
51
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
52
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
53
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
54
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
55
|
+
if (t[2]) _.ops.pop();
|
|
56
|
+
_.trys.pop(); continue;
|
|
57
|
+
}
|
|
58
|
+
op = body.call(thisArg, _);
|
|
59
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
60
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
61
|
+
}
|
|
62
|
+
};
|
|
28
63
|
import features from "../../features";
|
|
29
64
|
import log from "../../log";
|
|
30
65
|
import Manifest from "../../manifest";
|
|
31
66
|
import { getMDAT } from "../../parsers/containers/isobmff";
|
|
32
67
|
import createSmoothManifestParser, { SmoothRepresentationIndex, } from "../../parsers/manifest/smooth";
|
|
68
|
+
import PPromise from "../../utils/promise";
|
|
33
69
|
import request from "../../utils/request";
|
|
34
70
|
import { strToUtf8, utf8ToStr, } from "../../utils/string_parsing";
|
|
35
71
|
import warnOnce from "../../utils/warn_once";
|
|
@@ -134,6 +170,7 @@ export default function (options) {
|
|
|
134
170
|
if (segment.isInit) {
|
|
135
171
|
return { segmentType: "init",
|
|
136
172
|
initializationData: null,
|
|
173
|
+
initializationDataSize: 0,
|
|
137
174
|
protectionDataUpdate: false,
|
|
138
175
|
initTimescale: undefined };
|
|
139
176
|
}
|
|
@@ -141,6 +178,7 @@ export default function (options) {
|
|
|
141
178
|
chunkData: null,
|
|
142
179
|
chunkInfos: null,
|
|
143
180
|
chunkOffset: 0,
|
|
181
|
+
chunkSize: 0,
|
|
144
182
|
protectionDataUpdate: false,
|
|
145
183
|
appendWindow: [undefined, undefined] };
|
|
146
184
|
}
|
|
@@ -150,6 +188,7 @@ export default function (options) {
|
|
|
150
188
|
var timescale = (_b = (_a = segment.privateInfos) === null || _a === void 0 ? void 0 : _a.smoothInitSegment) === null || _b === void 0 ? void 0 : _b.timescale;
|
|
151
189
|
return { segmentType: "init",
|
|
152
190
|
initializationData: data,
|
|
191
|
+
initializationDataSize: data.byteLength,
|
|
153
192
|
// smooth init segments are crafted by hand.
|
|
154
193
|
// Their timescale is the one from the manifest.
|
|
155
194
|
initTimescale: timescale,
|
|
@@ -169,6 +208,7 @@ export default function (options) {
|
|
|
169
208
|
addNextSegments(adaptation, nextSegments, segment);
|
|
170
209
|
}
|
|
171
210
|
return { segmentType: "media", chunkData: chunkData, chunkInfos: chunkInfos, chunkOffset: 0,
|
|
211
|
+
chunkSize: chunkData.length,
|
|
172
212
|
protectionDataUpdate: false,
|
|
173
213
|
appendWindow: [undefined, undefined] };
|
|
174
214
|
},
|
|
@@ -207,9 +247,11 @@ export default function (options) {
|
|
|
207
247
|
var isMP4 = isMP4EmbeddedTrack(representation);
|
|
208
248
|
var _b = representation.mimeType, mimeType = _b === void 0 ? "" : _b, _c = representation.codec, codec = _c === void 0 ? "" : _c;
|
|
209
249
|
var data = loadedSegment.data, isChunked = loadedSegment.isChunked;
|
|
250
|
+
var chunkSize;
|
|
210
251
|
if (segment.isInit) { // text init segment has no use in HSS
|
|
211
252
|
return { segmentType: "init",
|
|
212
253
|
initializationData: null,
|
|
254
|
+
initializationDataSize: 0,
|
|
213
255
|
protectionDataUpdate: false,
|
|
214
256
|
initTimescale: undefined };
|
|
215
257
|
}
|
|
@@ -218,6 +260,7 @@ export default function (options) {
|
|
|
218
260
|
chunkData: null,
|
|
219
261
|
chunkInfos: null,
|
|
220
262
|
chunkOffset: 0,
|
|
263
|
+
chunkSize: 0,
|
|
221
264
|
protectionDataUpdate: false,
|
|
222
265
|
appendWindow: [undefined, undefined] };
|
|
223
266
|
}
|
|
@@ -236,6 +279,7 @@ export default function (options) {
|
|
|
236
279
|
chunkBytes = data instanceof Uint8Array ? data :
|
|
237
280
|
new Uint8Array(data);
|
|
238
281
|
}
|
|
282
|
+
chunkSize = chunkBytes.length;
|
|
239
283
|
var timingInfos = initTimescale !== undefined ?
|
|
240
284
|
extractTimingsInfos(chunkBytes, isChunked, initTimescale, segment, manifest.isLive) :
|
|
241
285
|
null;
|
|
@@ -279,6 +323,7 @@ export default function (options) {
|
|
|
279
323
|
if (typeof data !== "string") {
|
|
280
324
|
var bytesData = data instanceof Uint8Array ? data :
|
|
281
325
|
new Uint8Array(data);
|
|
326
|
+
chunkSize = bytesData.length;
|
|
282
327
|
chunkString = utf8ToStr(bytesData);
|
|
283
328
|
}
|
|
284
329
|
else {
|
|
@@ -316,27 +361,38 @@ export default function (options) {
|
|
|
316
361
|
chunkData: { type: _sdType,
|
|
317
362
|
data: _sdData,
|
|
318
363
|
start: segmentStart,
|
|
319
|
-
end: segmentEnd, language: language }, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
364
|
+
end: segmentEnd, language: language }, chunkSize: chunkSize, chunkInfos: chunkInfos, chunkOffset: chunkOffset, protectionDataUpdate: false,
|
|
320
365
|
appendWindow: [undefined, undefined] };
|
|
321
366
|
},
|
|
322
367
|
};
|
|
323
368
|
var imageTrackPipeline = {
|
|
324
369
|
loadSegment: function (url, content, cancelSignal, callbacks) {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
return
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
370
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
371
|
+
var data;
|
|
372
|
+
return __generator(this, function (_a) {
|
|
373
|
+
switch (_a.label) {
|
|
374
|
+
case 0:
|
|
375
|
+
if (content.segment.isInit || url === null) {
|
|
376
|
+
// image do not need an init segment. Passthrough directly to the parser
|
|
377
|
+
return [2 /*return*/, { resultType: "segment-created",
|
|
378
|
+
resultData: null }];
|
|
379
|
+
}
|
|
380
|
+
return [4 /*yield*/, request({ url: url, responseType: "arraybuffer",
|
|
381
|
+
onProgress: callbacks.onProgress, cancelSignal: cancelSignal })];
|
|
382
|
+
case 1:
|
|
383
|
+
data = _a.sent();
|
|
384
|
+
return [2 /*return*/, { resultType: "segment-loaded",
|
|
385
|
+
resultData: data }];
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
});
|
|
334
389
|
},
|
|
335
390
|
parseSegment: function (loadedSegment, content, _initTimescale) {
|
|
336
391
|
var data = loadedSegment.data, isChunked = loadedSegment.isChunked;
|
|
337
392
|
if (content.segment.isInit) { // image init segment has no use
|
|
338
393
|
return { segmentType: "init",
|
|
339
394
|
initializationData: null,
|
|
395
|
+
initializationDataSize: 0,
|
|
340
396
|
protectionDataUpdate: false,
|
|
341
397
|
initTimescale: undefined };
|
|
342
398
|
}
|
|
@@ -349,6 +405,7 @@ export default function (options) {
|
|
|
349
405
|
chunkData: null,
|
|
350
406
|
chunkInfos: null,
|
|
351
407
|
chunkOffset: 0,
|
|
408
|
+
chunkSize: 0,
|
|
352
409
|
protectionDataUpdate: false,
|
|
353
410
|
appendWindow: [undefined, undefined] };
|
|
354
411
|
}
|
|
@@ -362,6 +419,7 @@ export default function (options) {
|
|
|
362
419
|
type: "bif" },
|
|
363
420
|
chunkInfos: { time: 0,
|
|
364
421
|
duration: Number.MAX_VALUE },
|
|
422
|
+
chunkSize: undefined,
|
|
365
423
|
chunkOffset: 0,
|
|
366
424
|
protectionDataUpdate: false,
|
|
367
425
|
appendWindow: [undefined, undefined] };
|
|
@@ -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 { CancellationSignal } from "../../utils/task_canceller";
|
|
18
17
|
import { ICustomSegmentLoader, ISegmentContext, ISegmentLoaderCallbacks, ISegmentLoaderResultSegmentCreated, ISegmentLoaderResultSegmentLoaded } from "../types";
|
|
19
18
|
/**
|
|
@@ -24,9 +24,9 @@ var __assign = (this && this.__assign) || function () {
|
|
|
24
24
|
};
|
|
25
25
|
return __assign.apply(this, arguments);
|
|
26
26
|
};
|
|
27
|
-
import PPromise from "pinkie";
|
|
28
27
|
import { CustomLoaderError } from "../../errors";
|
|
29
28
|
import assert from "../../utils/assert";
|
|
29
|
+
import PPromise from "../../utils/promise";
|
|
30
30
|
import request from "../../utils/request";
|
|
31
31
|
import byteRange from "../utils/byte_range";
|
|
32
32
|
import checkISOBMFFIntegrity from "../utils/check_isobmff_integrity";
|
|
@@ -110,7 +110,7 @@ var generateSegmentLoader = function (_a) {
|
|
|
110
110
|
if (typeof customSegmentLoader !== "function") {
|
|
111
111
|
return regularSegmentLoader(url, content, callbacks, cancelSignal, checkMediaSegmentIntegrity);
|
|
112
112
|
}
|
|
113
|
-
return new
|
|
113
|
+
return new PPromise(function (res, rej) {
|
|
114
114
|
/** `true` when the custom segmentLoader should not be active anymore. */
|
|
115
115
|
var hasFinished = false;
|
|
116
116
|
/**
|
|
@@ -300,7 +300,7 @@ export interface IManifestParserResult {
|
|
|
300
300
|
* This property should only be set when a unique URL is sufficient to
|
|
301
301
|
* retrieve the whole data.
|
|
302
302
|
*/
|
|
303
|
-
url?: string;
|
|
303
|
+
url?: string | undefined;
|
|
304
304
|
}
|
|
305
305
|
/**
|
|
306
306
|
* Allow the parser to ask for loading supplementary ressources while still
|
|
@@ -340,11 +340,11 @@ export interface ITextTrackSegmentData {
|
|
|
340
340
|
* This is mostly needed for "sami" subtitles, to know which cues can / should
|
|
341
341
|
* be parsed.
|
|
342
342
|
*/
|
|
343
|
-
language?: string;
|
|
343
|
+
language?: string | undefined;
|
|
344
344
|
/** start time from which the segment apply, in seconds. */
|
|
345
|
-
start?: number;
|
|
345
|
+
start?: number | undefined;
|
|
346
346
|
/** end time until which the segment apply, in seconds. */
|
|
347
|
-
end?: number;
|
|
347
|
+
end?: number | undefined;
|
|
348
348
|
}
|
|
349
349
|
/** Format under which image data is decodable by the RxPlayer. */
|
|
350
350
|
export interface IImageTrackSegmentData {
|
|
@@ -393,18 +393,18 @@ interface IServerSyncInfos {
|
|
|
393
393
|
clientTime: number;
|
|
394
394
|
}
|
|
395
395
|
export interface ITransportOptions {
|
|
396
|
-
aggressiveMode?: boolean;
|
|
397
|
-
checkMediaSegmentIntegrity?: boolean;
|
|
396
|
+
aggressiveMode?: boolean | undefined;
|
|
397
|
+
checkMediaSegmentIntegrity?: boolean | undefined;
|
|
398
398
|
lowLatencyMode: boolean;
|
|
399
|
-
manifestLoader?: ICustomManifestLoader;
|
|
400
|
-
manifestUpdateUrl?: string;
|
|
401
|
-
referenceDateTime?: number;
|
|
402
|
-
representationFilter?: IRepresentationFilter;
|
|
403
|
-
segmentLoader?: ICustomSegmentLoader;
|
|
404
|
-
serverSyncInfos?: IServerSyncInfos;
|
|
405
|
-
supplementaryImageTracks?: ISupplementaryImageTrack[];
|
|
406
|
-
supplementaryTextTracks?: ISupplementaryTextTrack[];
|
|
407
|
-
__priv_patchLastSegmentInSidx?: boolean;
|
|
399
|
+
manifestLoader?: ICustomManifestLoader | undefined;
|
|
400
|
+
manifestUpdateUrl?: string | undefined;
|
|
401
|
+
referenceDateTime?: number | undefined;
|
|
402
|
+
representationFilter?: IRepresentationFilter | undefined;
|
|
403
|
+
segmentLoader?: ICustomSegmentLoader | undefined;
|
|
404
|
+
serverSyncInfos?: IServerSyncInfos | undefined;
|
|
405
|
+
supplementaryImageTracks?: ISupplementaryImageTrack[] | undefined;
|
|
406
|
+
supplementaryTextTracks?: ISupplementaryTextTrack[] | undefined;
|
|
407
|
+
__priv_patchLastSegmentInSidx?: boolean | undefined;
|
|
408
408
|
}
|
|
409
409
|
export declare type ICustomSegmentLoader = (infos: {
|
|
410
410
|
url: string;
|
|
@@ -422,18 +422,24 @@ export declare type ICustomSegmentLoader = (infos: {
|
|
|
422
422
|
duration?: number | undefined;
|
|
423
423
|
}) => void;
|
|
424
424
|
reject: (err?: unknown) => void;
|
|
425
|
-
fallback
|
|
425
|
+
fallback: () => void;
|
|
426
|
+
progress: (info: {
|
|
427
|
+
duration: number;
|
|
428
|
+
size: number;
|
|
429
|
+
totalSize?: number | undefined;
|
|
430
|
+
}) => void;
|
|
426
431
|
}) => (() => void) | void;
|
|
427
432
|
export declare type ICustomManifestLoader = (url: string | undefined, callbacks: {
|
|
428
433
|
resolve: (args: {
|
|
429
434
|
data: ILoadedManifestFormat;
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
435
|
+
url?: string | undefined;
|
|
436
|
+
sendingTime?: number | undefined;
|
|
437
|
+
receivingTime?: number | undefined;
|
|
438
|
+
size?: number | undefined;
|
|
439
|
+
duration?: number | undefined;
|
|
434
440
|
}) => void;
|
|
435
441
|
reject: (err?: Error) => void;
|
|
436
|
-
fallback
|
|
442
|
+
fallback: () => void;
|
|
437
443
|
}) => (() => void) | void;
|
|
438
444
|
export interface ISegmentContext {
|
|
439
445
|
/** Manifest object related to this segment. */
|
|
@@ -486,7 +492,7 @@ export interface ISegmentLoadingProgressInformation {
|
|
|
486
492
|
/** Size of the data already downloaded, in bytes. */
|
|
487
493
|
size: number;
|
|
488
494
|
/** Size of whole data to download (data already-loaded included), in bytes. */
|
|
489
|
-
totalSize?: number;
|
|
495
|
+
totalSize?: number | undefined;
|
|
490
496
|
}
|
|
491
497
|
/**
|
|
492
498
|
* Result returned by a segment loader when a segment has been loaded in a
|
|
@@ -531,19 +537,19 @@ export interface IChunkCompleteInformation {
|
|
|
531
537
|
* This property should only be set when a unique URL is sufficient to
|
|
532
538
|
* retrieve the whole data.
|
|
533
539
|
*/
|
|
534
|
-
url?: string;
|
|
540
|
+
url?: string | undefined;
|
|
535
541
|
/**
|
|
536
542
|
* Time at which the request began in terms of `performance.now`.
|
|
537
543
|
* If fetching the corresponding data necessitated to perform multiple
|
|
538
544
|
* requests, this time corresponds to the first request made.
|
|
539
545
|
*/
|
|
540
|
-
sendingTime?: number;
|
|
546
|
+
sendingTime?: number | undefined;
|
|
541
547
|
/**
|
|
542
548
|
* Time at which the request ended in terms of `performance.now`.
|
|
543
549
|
* If fetching the corresponding data necessitated to perform multiple
|
|
544
550
|
* requests, this time corresponds to the last request to end.
|
|
545
551
|
*/
|
|
546
|
-
receivedTime?: number;
|
|
552
|
+
receivedTime?: number | undefined;
|
|
547
553
|
/** Size in bytes of the loaded data. `undefined` if we don't know. */
|
|
548
554
|
size: number | undefined;
|
|
549
555
|
}
|
|
@@ -570,7 +576,7 @@ export interface ISegmentParserParsedInitChunk<DataType> {
|
|
|
570
576
|
* Timescale metadata found inside this initialization segment.
|
|
571
577
|
* That timescale might be useful when parsing further merdia segments.
|
|
572
578
|
*/
|
|
573
|
-
initTimescale?: number;
|
|
579
|
+
initTimescale?: number | undefined;
|
|
574
580
|
/**
|
|
575
581
|
* If set to `true`, some protection information has been found in this
|
|
576
582
|
* initialization segment and lead the corresponding `Representation`
|
|
@@ -583,6 +589,17 @@ export interface ISegmentParserParsedInitChunk<DataType> {
|
|
|
583
589
|
* protection initialization data to have been encountered.
|
|
584
590
|
*/
|
|
585
591
|
protectionDataUpdate: boolean;
|
|
592
|
+
/**
|
|
593
|
+
* Size in bytes of `initializationData`.
|
|
594
|
+
* `undefined` if unknown.
|
|
595
|
+
*
|
|
596
|
+
* Note: In some cases, such as when `initializationData` is under a format
|
|
597
|
+
* whose size is difficult to estimate (e.g. a JavaScript object), the
|
|
598
|
+
* `initializationDataSize` may either be set to `undefined` or, if available,
|
|
599
|
+
* to a sensible estimate (e.g. when a JavaScript object wraps large binary
|
|
600
|
+
* data, `initializationDataSize` may refer to that binary data only).
|
|
601
|
+
*/
|
|
602
|
+
initializationDataSize: number | undefined;
|
|
586
603
|
}
|
|
587
604
|
/**
|
|
588
605
|
* Result returned by a segment parser when it parsed a chunk from a media
|
|
@@ -600,6 +617,17 @@ export interface ISegmentParserParsedMediaChunk<DataType> {
|
|
|
600
617
|
* `null` if unknown.
|
|
601
618
|
*/
|
|
602
619
|
chunkInfos: IChunkTimeInfo | null;
|
|
620
|
+
/**
|
|
621
|
+
* Size in bytes of `chunkData`.
|
|
622
|
+
* `undefined` if unknown.
|
|
623
|
+
*
|
|
624
|
+
* Note: In some cases, such as when `chunkData` is under a format whose size
|
|
625
|
+
* is difficult to estimate (e.g. a JavaScript object), the `chunkSize` may
|
|
626
|
+
* either be set to `undefined` or, if available, to a sensible estimate (e.g.
|
|
627
|
+
* when a JavaScript object wraps large binary data, `chunkSize` may refer to
|
|
628
|
+
* that binary data only).
|
|
629
|
+
*/
|
|
630
|
+
chunkSize: number | undefined;
|
|
603
631
|
/**
|
|
604
632
|
* time offset, in seconds, to add to the absolute timed data defined in
|
|
605
633
|
* `chunkData` to obtain the "real" wanted effective time.
|
|
@@ -626,7 +654,7 @@ export interface ISegmentParserParsedMediaChunk<DataType> {
|
|
|
626
654
|
* If set and not empty, then "events" have been encountered in this parsed
|
|
627
655
|
* chunks.
|
|
628
656
|
*/
|
|
629
|
-
inbandEvents?: IInbandEvent[];
|
|
657
|
+
inbandEvents?: IInbandEvent[] | undefined;
|
|
630
658
|
/**
|
|
631
659
|
* If set to `true`, then parsing this chunk revealed that the current
|
|
632
660
|
* Manifest instance needs to be refreshed.
|
|
@@ -659,19 +687,19 @@ export interface IRequestedData<T> {
|
|
|
659
687
|
* This property should only be set when a unique URL is sufficient to
|
|
660
688
|
* retrieve the whole data.
|
|
661
689
|
*/
|
|
662
|
-
url?: string;
|
|
690
|
+
url?: string | undefined;
|
|
663
691
|
/**
|
|
664
692
|
* Time at which the request began in terms of `performance.now`.
|
|
665
693
|
* If fetching the corresponding data necessitated to perform multiple
|
|
666
694
|
* requests, this time corresponds to the first request made.
|
|
667
695
|
*/
|
|
668
|
-
sendingTime?: number;
|
|
696
|
+
sendingTime?: number | undefined;
|
|
669
697
|
/**
|
|
670
698
|
* Time at which the request ended in terms of `performance.now`.
|
|
671
699
|
* If fetching the corresponding data necessitated to perform multiple
|
|
672
700
|
* requests, this time corresponds to the last request to end.
|
|
673
701
|
*/
|
|
674
|
-
receivedTime?: number;
|
|
702
|
+
receivedTime?: number | undefined;
|
|
675
703
|
/** Size in bytes of the loaded data. `undefined` if we don't know. */
|
|
676
704
|
size: number | undefined;
|
|
677
705
|
}
|
|
@@ -13,8 +13,8 @@
|
|
|
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 { CustomLoaderError } from "../../errors";
|
|
17
|
+
import PPromise from "../../utils/promise";
|
|
18
18
|
export default function callCustomManifestLoader(customManifestLoader, fallbackManifestLoader) {
|
|
19
19
|
return function (url, cancelSignal) {
|
|
20
20
|
return new PPromise(function (res, rej) {
|
|
@@ -21,5 +21,5 @@ import { ICustomManifestLoader, ILoadedManifestFormat, IRequestedData } from "..
|
|
|
21
21
|
* @returns {Function}
|
|
22
22
|
*/
|
|
23
23
|
export default function generateManifestLoader({ customManifestLoader }: {
|
|
24
|
-
customManifestLoader?: ICustomManifestLoader;
|
|
24
|
+
customManifestLoader?: ICustomManifestLoader | undefined;
|
|
25
25
|
}, preferredType: "arraybuffer" | "text" | "document"): (url: string | undefined, cancelSignal: CancellationSignal) => Promise<IRequestedData<ILoadedManifestFormat>>;
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import PPromise from "
|
|
16
|
+
import PPromise from "./promise";
|
|
17
17
|
/**
|
|
18
18
|
* Wait the given `delay`, resolving the Promise when finished.
|
|
19
19
|
*
|
|
@@ -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
|
/**
|
|
19
18
|
* Try to cast the given value into an observable.
|
|
@@ -21,5 +20,5 @@ import { Observable } from "rxjs";
|
|
|
21
20
|
* @param {Observable|Function|*}
|
|
22
21
|
* @returns {Observable}
|
|
23
22
|
*/
|
|
24
|
-
declare function castToObservable<T>(value: Observable<T> | Promise<T> |
|
|
23
|
+
declare function castToObservable<T>(value: Observable<T> | Promise<T> | Exclude<T, Observable<T>>): Observable<T>;
|
|
25
24
|
export default castToObservable;
|
|
@@ -13,9 +13,9 @@
|
|
|
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 { from as observableFrom, Observable, of as observableOf, } from "rxjs";
|
|
18
17
|
import isNullOrUndefined from "./is_null_or_undefined";
|
|
18
|
+
import PPromise from "./promise";
|
|
19
19
|
/**
|
|
20
20
|
* Try to cast the given value into an observable.
|
|
21
21
|
* StraightForward - test first for an Observable then for a Promise.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare type IDeepPartial<T> = {
|
|
2
|
+
[P in keyof T]?: IDeepPartial<T[P]>;
|
|
3
|
+
};
|
|
4
|
+
declare type ISourcesArgument<T> = Array<IDeepPartial<T> | unknown>;
|
|
5
|
+
/**
|
|
6
|
+
* Deeply merge nested objects
|
|
7
|
+
* @param target
|
|
8
|
+
* @param sources
|
|
9
|
+
* @returns output : merged object
|
|
10
|
+
*/
|
|
11
|
+
export default function deepMerge<T>(target: T, ...sources: ISourcesArgument<T>): T;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
+
if (ar || !(i in from)) {
|
|
4
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
+
ar[i] = from[i];
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
+
};
|
|
10
|
+
import objectAssign from "./object_assign";
|
|
11
|
+
/**
|
|
12
|
+
* Check if an item is an object
|
|
13
|
+
* @param item
|
|
14
|
+
* @returns {boolean}
|
|
15
|
+
*/
|
|
16
|
+
function isObject(item) {
|
|
17
|
+
return (item !== null
|
|
18
|
+
&& item !== undefined
|
|
19
|
+
&& !Array.isArray(item)
|
|
20
|
+
&& typeof item === "object");
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Deeply merge nested objects
|
|
24
|
+
* @param target
|
|
25
|
+
* @param sources
|
|
26
|
+
* @returns output : merged object
|
|
27
|
+
*/
|
|
28
|
+
export default function deepMerge(target) {
|
|
29
|
+
var _a, _b;
|
|
30
|
+
var sources = [];
|
|
31
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
32
|
+
sources[_i - 1] = arguments[_i];
|
|
33
|
+
}
|
|
34
|
+
if (sources.length === 0) {
|
|
35
|
+
return target;
|
|
36
|
+
}
|
|
37
|
+
var source = sources.shift();
|
|
38
|
+
if (isObject(target) && isObject(source)) {
|
|
39
|
+
for (var key in source) {
|
|
40
|
+
if (isObject(source[key])) {
|
|
41
|
+
if (target[key] === undefined) {
|
|
42
|
+
objectAssign(target, (_a = {}, _a[key] = {}, _a));
|
|
43
|
+
}
|
|
44
|
+
var newTarget = target[key];
|
|
45
|
+
deepMerge(newTarget, source[key]);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
objectAssign(target, (_b = {}, _b[key] = source[key], _b));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return deepMerge.apply(void 0, __spreadArray([target], sources, false));
|
|
53
|
+
}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Observable } from "rxjs";
|
|
17
|
+
import { CancellationSignal } from "./task_canceller";
|
|
17
18
|
/**
|
|
18
19
|
* A value behind a shared reference, meaning that any update to its value from
|
|
19
20
|
* anywhere can be retrieved from any other parts of the code in posession of
|
|
@@ -55,6 +56,7 @@ export interface ISharedReference<T> {
|
|
|
55
56
|
getValue(): T;
|
|
56
57
|
/** Update the value of this shared reference. */
|
|
57
58
|
setValue(newVal: T): void;
|
|
59
|
+
setValueIfChanged(newVal: T): void;
|
|
58
60
|
/**
|
|
59
61
|
* Returns an Observable which synchronously emits the current value (unless
|
|
60
62
|
* the `skipCurrentValue` argument has been set to `true`) and then each time
|
|
@@ -63,6 +65,21 @@ export interface ISharedReference<T> {
|
|
|
63
65
|
* @returns {Observable}
|
|
64
66
|
*/
|
|
65
67
|
asObservable(skipCurrentValue?: boolean): Observable<T>;
|
|
68
|
+
/**
|
|
69
|
+
* Allows to register a callback to be called each time the value inside the
|
|
70
|
+
* reference is updated.
|
|
71
|
+
* @param {Function} cb - Callback to be called each time the reference is
|
|
72
|
+
* updated. Takes the new value im argument.
|
|
73
|
+
* @param {Object} [options]
|
|
74
|
+
* @param {Object} [options.clearSignal] - Allows to provide a
|
|
75
|
+
* CancellationSignal which will unregister the callback when it emits.
|
|
76
|
+
* @param {boolean} [options.emitCurrentValue] - If `true`, the callback will
|
|
77
|
+
* also be immediately called with the current value.
|
|
78
|
+
*/
|
|
79
|
+
onUpdate(cb: (val: T) => void, options?: {
|
|
80
|
+
clearSignal?: CancellationSignal;
|
|
81
|
+
emitCurrentValue?: boolean;
|
|
82
|
+
}): void;
|
|
66
83
|
/**
|
|
67
84
|
* Indicate that no new values will be emitted.
|
|
68
85
|
* Allows to automatically close all Observables generated from this shared
|
|
@@ -93,8 +110,20 @@ export interface ISharedReference<T> {
|
|
|
93
110
|
* the code that some logic is not supposed to update the referenced value.
|
|
94
111
|
*/
|
|
95
112
|
export interface IReadOnlySharedReference<T> {
|
|
113
|
+
/** Get the last value set on that reference. */
|
|
96
114
|
getValue(): T;
|
|
115
|
+
/**
|
|
116
|
+
* Returns an Observable notifying this reference's value each time it is
|
|
117
|
+
* updated.
|
|
118
|
+
*
|
|
119
|
+
* Also emit its current value on subscription unless its argument is set to
|
|
120
|
+
* `true`.
|
|
121
|
+
*/
|
|
97
122
|
asObservable(skipCurrentValue?: boolean): Observable<T>;
|
|
123
|
+
onUpdate(cb: (val: T) => void, options?: {
|
|
124
|
+
clearSignal?: CancellationSignal;
|
|
125
|
+
emitCurrentValue?: boolean;
|
|
126
|
+
}): void;
|
|
98
127
|
}
|
|
99
128
|
/**
|
|
100
129
|
* Create an `ISharedReference` object encapsulating the mutable `initialValue`
|