rx-player 4.0.0-dev.2023092900 → 4.0.0-dev.2023102700
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +221 -12
- package/FILES.md +0 -4
- package/MAINTAINERS.md +1 -0
- package/README.md +0 -21
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/add_class_name.js +6 -3
- package/dist/_esm5.processed/compat/add_text_track.js +11 -8
- package/dist/_esm5.processed/compat/browser_compatibility_types.js +13 -9
- package/dist/_esm5.processed/compat/browser_detection.js +49 -34
- package/dist/_esm5.processed/compat/browser_version.js +11 -8
- package/dist/_esm5.processed/compat/can_patch_isobmff.js +6 -3
- package/dist/_esm5.processed/compat/can_rely_on_video_visibility_and_size.js +9 -6
- package/dist/_esm5.processed/compat/can_reuse_media_keys.js +6 -3
- package/dist/_esm5.processed/compat/change_source_buffer_type.js +6 -3
- package/dist/_esm5.processed/compat/clear_element_src.js +12 -9
- package/dist/_esm5.processed/compat/eme/close_session.js +45 -106
- package/dist/_esm5.processed/compat/eme/constants.js +6 -3
- package/dist/_esm5.processed/compat/eme/custom_key_system_access.js +18 -22
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +78 -102
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +16 -6
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +18 -15
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +7 -5
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +70 -88
- package/dist/_esm5.processed/compat/eme/custom_media_keys/types.js +2 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +91 -117
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +7 -7
- package/dist/_esm5.processed/compat/eme/eme-api-implementation.js +82 -83
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +36 -31
- package/dist/_esm5.processed/compat/eme/get_init_data.js +28 -25
- package/dist/_esm5.processed/compat/eme/get_uuid_kid_from_keystatus_kid.js +8 -5
- package/dist/_esm5.processed/compat/eme/get_webkit_fairplay_initdata.js +17 -14
- package/dist/_esm5.processed/compat/eme/index.js +13 -7
- package/dist/_esm5.processed/compat/eme/load_session.js +26 -69
- package/dist/_esm5.processed/compat/enable_audio_track.js +7 -4
- package/dist/_esm5.processed/compat/event_listeners.js +130 -102
- package/dist/_esm5.processed/compat/get_start_date.js +7 -4
- package/dist/_esm5.processed/compat/global_scope.js +7 -5
- package/dist/_esm5.processed/compat/has_issues_with_high_media_source_duration.js +6 -3
- package/dist/_esm5.processed/compat/index.js +47 -24
- package/dist/_esm5.processed/compat/is_codec_supported.js +8 -5
- package/dist/_esm5.processed/compat/is_debug_mode_enabled.js +4 -1
- package/dist/_esm5.processed/compat/is_node.js +5 -3
- package/dist/_esm5.processed/compat/is_seeking_approximate.js +5 -3
- package/dist/_esm5.processed/compat/is_vtt_cue.js +6 -3
- package/dist/_esm5.processed/compat/is_worker.js +3 -1
- package/dist/_esm5.processed/compat/make_vtt_cue.js +10 -7
- package/dist/_esm5.processed/compat/on_height_width_change.js +25 -22
- package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +19 -17
- package/dist/_esm5.processed/compat/remove_cue.js +12 -9
- package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +7 -4
- package/dist/_esm5.processed/compat/should_reload_media_source_on_decipherability_update.js +4 -1
- package/dist/_esm5.processed/compat/should_renew_media_key_system_access.js +6 -3
- package/dist/_esm5.processed/compat/should_unset_media_keys.js +6 -3
- package/dist/_esm5.processed/compat/should_validate_metadata.js +6 -3
- package/dist/_esm5.processed/compat/should_wait_for_data_before_loaded.js +6 -3
- package/dist/_esm5.processed/compat/should_wait_for_have_enough_data.js +6 -3
- package/dist/_esm5.processed/config.js +15 -14
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +123 -94
- package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.js +43 -42
- package/dist/_esm5.processed/core/adaptive/guess_based_chooser.js +37 -44
- package/dist/_esm5.processed/core/adaptive/index.js +4 -2
- package/dist/_esm5.processed/core/adaptive/network_analyzer.js +75 -74
- package/dist/_esm5.processed/core/adaptive/utils/bandwidth_estimator.js +24 -23
- package/dist/_esm5.processed/core/adaptive/utils/ewma.js +13 -12
- package/dist/_esm5.processed/core/adaptive/utils/filter_by_bitrate.js +9 -6
- package/dist/_esm5.processed/core/adaptive/utils/filter_by_resolution.js +18 -19
- package/dist/_esm5.processed/core/adaptive/utils/get_buffer_levels.js +10 -7
- package/dist/_esm5.processed/core/adaptive/utils/last_estimate_storage.js +8 -7
- package/dist/_esm5.processed/core/adaptive/utils/pending_requests_store.js +26 -23
- package/dist/_esm5.processed/core/adaptive/utils/representation_score_calculator.js +25 -23
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +6 -3
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +41 -40
- package/dist/_esm5.processed/core/api/debug/buffer_size_graph.js +31 -30
- package/dist/_esm5.processed/core/api/debug/constants.js +4 -1
- package/dist/_esm5.processed/core/api/debug/index.js +4 -2
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +64 -72
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +49 -46
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +15 -12
- package/dist/_esm5.processed/core/api/debug/render.js +16 -13
- package/dist/_esm5.processed/core/api/debug/utils.js +18 -13
- package/dist/_esm5.processed/core/api/index.js +7 -4
- package/dist/_esm5.processed/core/api/option_utils.js +85 -58
- package/dist/_esm5.processed/core/api/playback_observer.js +135 -124
- package/dist/_esm5.processed/core/api/public_api.js +610 -684
- package/dist/_esm5.processed/core/api/track_management/index.js +19 -3
- package/dist/_esm5.processed/core/api/track_management/media_element_tracks_store.js +233 -247
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +45 -58
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +300 -324
- package/dist/_esm5.processed/core/api/utils.js +32 -24
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +155 -185
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +42 -81
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +15 -12
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +392 -510
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +44 -90
- package/dist/_esm5.processed/core/decrypt/create_session.js +90 -149
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +24 -67
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +94 -155
- package/dist/_esm5.processed/core/decrypt/get_key_system_configuration.js +6 -3
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +59 -109
- package/dist/_esm5.processed/core/decrypt/index.js +26 -7
- package/dist/_esm5.processed/core/decrypt/init_media_keys.js +17 -59
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +84 -155
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +50 -103
- package/dist/_esm5.processed/core/decrypt/types.js +5 -2
- package/dist/_esm5.processed/core/decrypt/utils/are_init_values_compatible.js +22 -19
- package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.js +40 -61
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +17 -61
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_stored_persistent_info.js +8 -5
- package/dist/_esm5.processed/core/decrypt/utils/get_drm_system_id.js +8 -5
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +23 -23
- package/dist/_esm5.processed/core/decrypt/utils/is_session_usable.js +15 -12
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +14 -21
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +26 -27
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +206 -310
- package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.js +8 -6
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +103 -102
- package/dist/_esm5.processed/core/decrypt/utils/serializable_bytes.js +13 -12
- package/dist/_esm5.processed/core/decrypt/utils/server_certificate_store.js +18 -16
- package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.js +37 -56
- package/dist/_esm5.processed/core/fetchers/index.js +7 -3
- package/dist/_esm5.processed/core/fetchers/manifest/index.js +4 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +233 -313
- package/dist/_esm5.processed/core/fetchers/segment/index.js +4 -2
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +12 -9
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +218 -234
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +20 -19
- package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.js +73 -74
- package/dist/_esm5.processed/core/fetchers/utils/error_selector.js +8 -5
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +210 -261
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +73 -99
- package/dist/_esm5.processed/core/init/index.js +5 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +256 -320
- package/dist/_esm5.processed/core/init/types.js +7 -24
- package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +109 -135
- package/dist/_esm5.processed/core/init/utils/create_media_source.js +35 -30
- package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.js +12 -10
- package/dist/_esm5.processed/core/init/utils/end_of_stream.js +30 -26
- package/dist/_esm5.processed/core/init/utils/get_initial_time.js +41 -38
- package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +13 -10
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +29 -26
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +30 -27
- package/dist/_esm5.processed/core/init/utils/media_source_duration_updater.js +58 -60
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +140 -161
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/are_same_stream_events.js +3 -1
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/index.js +4 -2
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.js +28 -30
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +71 -90
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/types.js +2 -1
- package/dist/_esm5.processed/core/init/utils/throw_on_media_error.js +16 -13
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +75 -126
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +130 -147
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/index.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/index.js +20 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +106 -125
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/index.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/parsers.js +11 -8
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +48 -47
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/types.js +2 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/update_proportional_elements.js +18 -15
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +22 -15
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/index.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +65 -82
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/parsers.js +11 -8
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.js +19 -17
- package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +23 -22
- package/dist/_esm5.processed/core/segment_buffers/index.js +13 -6
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +24 -22
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +8 -3
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +151 -150
- package/dist/_esm5.processed/core/segment_buffers/inventory/types.js +2 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +9 -4
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +82 -89
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +118 -166
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +31 -28
- package/dist/_esm5.processed/core/stream/adaptation/index.js +19 -3
- package/dist/_esm5.processed/core/stream/adaptation/types.js +2 -1
- package/dist/_esm5.processed/core/stream/index.js +4 -2
- package/dist/_esm5.processed/core/stream/orchestrator/get_time_ranges_for_content.js +14 -16
- package/dist/_esm5.processed/core/stream/orchestrator/index.js +4 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +175 -222
- package/dist/_esm5.processed/core/stream/period/index.js +19 -3
- package/dist/_esm5.processed/core/stream/period/period_stream.js +172 -216
- package/dist/_esm5.processed/core/stream/period/types.js +2 -1
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +34 -33
- package/dist/_esm5.processed/core/stream/representation/index.js +19 -3
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +80 -68
- package/dist/_esm5.processed/core/stream/representation/types.js +2 -1
- package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.js +33 -84
- package/dist/_esm5.processed/core/stream/representation/utils/check_for_discontinuity.js +32 -29
- package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +126 -145
- package/dist/_esm5.processed/core/stream/representation/utils/force_garbage_collection.js +32 -88
- package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +61 -48
- package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +71 -69
- package/dist/_esm5.processed/core/stream/representation/utils/get_segment_priority.js +8 -5
- package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +22 -63
- package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +49 -86
- package/dist/_esm5.processed/default_config.js +4 -2
- package/dist/_esm5.processed/errors/assertion_error.js +10 -26
- package/dist/_esm5.processed/errors/custom_loader_error.js +12 -28
- package/dist/_esm5.processed/errors/encrypted_media_error.js +16 -32
- package/dist/_esm5.processed/errors/error_codes.js +9 -4
- package/dist/_esm5.processed/errors/error_message.js +5 -2
- package/dist/_esm5.processed/errors/format_error.js +9 -7
- package/dist/_esm5.processed/errors/index.js +25 -11
- package/dist/_esm5.processed/errors/is_known_error.js +14 -11
- package/dist/_esm5.processed/errors/media_error.js +17 -33
- package/dist/_esm5.processed/errors/network_error.js +21 -37
- package/dist/_esm5.processed/errors/other_error.js +15 -31
- package/dist/_esm5.processed/errors/request_error.js +17 -33
- package/dist/_esm5.processed/experimental/features/dash_wasm.js +14 -11
- package/dist/_esm5.processed/experimental/features/debug_element.js +7 -4
- package/dist/_esm5.processed/experimental/features/index.d.ts +1 -0
- package/dist/_esm5.processed/experimental/features/index.js +11 -3
- package/dist/_esm5.processed/experimental/features/local.js +9 -6
- package/dist/_esm5.processed/experimental/features/metaplaylist.js +9 -6
- package/dist/_esm5.processed/experimental/index.js +5 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/dash.js +6 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/metaplaylist.js +6 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.js +7 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.js +22 -16
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +22 -19
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +6 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.js +2 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +125 -186
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.js +11 -27
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +76 -119
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +24 -15
- package/dist/_esm5.processed/experimental/tools/index.js +11 -5
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +38 -43
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +31 -34
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/capabilities.js +21 -18
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/index.js +4 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/log.js +5 -3
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +20 -17
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +21 -18
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +13 -10
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.js +16 -13
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/index.js +16 -14
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +14 -11
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.js +14 -11
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +19 -16
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +11 -8
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.js +5 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/utils.js +25 -22
- package/dist/_esm5.processed/experimental/tools/parseBIFThumbnails.js +7 -4
- package/dist/_esm5.processed/features/add_features.js +11 -8
- package/dist/_esm5.processed/features/features_object.js +4 -2
- package/dist/_esm5.processed/features/index.js +7 -4
- package/dist/_esm5.processed/features/list/dash.js +11 -8
- package/dist/_esm5.processed/features/list/directfile.js +9 -5
- package/dist/_esm5.processed/features/list/eme.js +7 -4
- package/dist/_esm5.processed/features/list/html_sami_parser.js +9 -6
- package/dist/_esm5.processed/features/list/html_srt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/html_text_buffer.js +7 -4
- package/dist/_esm5.processed/features/list/html_ttml_parser.js +9 -6
- package/dist/_esm5.processed/features/list/html_vtt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/index.js +31 -14
- package/dist/_esm5.processed/features/list/native_sami_parser.js +9 -6
- package/dist/_esm5.processed/features/list/native_srt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/native_text_buffer.js +7 -4
- package/dist/_esm5.processed/features/list/native_ttml_parser.js +9 -6
- package/dist/_esm5.processed/features/list/native_vtt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/smooth.js +9 -6
- package/dist/_esm5.processed/features/types.js +2 -1
- package/dist/_esm5.processed/index.js +24 -9
- package/dist/_esm5.processed/log.js +5 -3
- package/dist/_esm5.processed/manifest/adaptation.js +52 -55
- package/dist/_esm5.processed/manifest/index.js +32 -13
- package/dist/_esm5.processed/manifest/manifest.js +112 -134
- package/dist/_esm5.processed/manifest/period.js +38 -42
- package/dist/_esm5.processed/manifest/representation.js +78 -61
- package/dist/_esm5.processed/manifest/representation_index/index.js +5 -2
- package/dist/_esm5.processed/manifest/representation_index/static.js +43 -42
- package/dist/_esm5.processed/manifest/representation_index/types.js +2 -1
- package/dist/_esm5.processed/manifest/types.js +5 -2
- package/dist/_esm5.processed/manifest/update_period_in_place.js +38 -48
- package/dist/_esm5.processed/manifest/update_periods.js +59 -69
- package/dist/_esm5.processed/manifest/utils.js +14 -9
- package/dist/_esm5.processed/minimal.js +9 -7
- package/dist/_esm5.processed/parsers/containers/isobmff/constants.js +4 -1
- package/dist/_esm5.processed/parsers/containers/isobmff/create_box.js +14 -10
- package/dist/_esm5.processed/parsers/containers/isobmff/drm/index.js +5 -1
- package/dist/_esm5.processed/parsers/containers/isobmff/drm/playready.js +15 -11
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +48 -40
- package/dist/_esm5.processed/parsers/containers/isobmff/index.js +27 -6
- package/dist/_esm5.processed/parsers/containers/isobmff/read.js +20 -14
- package/dist/_esm5.processed/parsers/containers/isobmff/take_pssh_out.js +25 -20
- package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +130 -112
- package/dist/_esm5.processed/parsers/containers/matroska/index.js +6 -1
- package/dist/_esm5.processed/parsers/containers/matroska/utils.js +67 -63
- package/dist/_esm5.processed/parsers/images/bif.js +40 -29
- package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.js +10 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +10 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_clock_offset.js +8 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.js +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +7 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_minimum_and_maximum_positions.js +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +14 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/index.js +10 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +73 -67
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +9 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +32 -25
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/index.js +11 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +81 -70
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +130 -123
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.js +35 -32
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +14 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +30 -22
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +14 -11
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +131 -129
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +16 -10
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/utils.js +7 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +19 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.js +18 -17
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +111 -111
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_availability_start_time.js +4 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +86 -85
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +97 -82
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +39 -37
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +61 -69
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +12 -9
- package/dist/_esm5.processed/parsers/manifest/dash/index.js +8 -1
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +66 -62
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.js +22 -19
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/EventStream.js +22 -19
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Initialization.js +11 -8
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/MPD.js +38 -34
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Period.js +34 -30
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +44 -40
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.js +24 -21
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentList.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +21 -18
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.js +6 -3
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.js +12 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +60 -64
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +33 -27
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +192 -238
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +67 -62
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +8 -4
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.js +17 -13
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +29 -24
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +38 -33
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +37 -32
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +43 -38
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.js +9 -5
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.js +16 -12
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.js +20 -16
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/index.js +5 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +22 -20
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/utils.js +6 -2
- package/dist/_esm5.processed/parsers/manifest/index.js +17 -1
- package/dist/_esm5.processed/parsers/manifest/local/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +30 -27
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +71 -84
- package/dist/_esm5.processed/parsers/manifest/local/types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +75 -72
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +52 -52
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +200 -176
- package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +13 -8
- package/dist/_esm5.processed/parsers/manifest/smooth/index.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/smooth/parse_C_nodes.js +17 -14
- package/dist/_esm5.processed/parsers/manifest/smooth/parse_protection_node.js +17 -15
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +102 -98
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +49 -48
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +10 -7
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/parseBoolean.js +4 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/reduceChildren.js +6 -3
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/tokens.js +5 -1
- package/dist/_esm5.processed/parsers/manifest/types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +27 -24
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +10 -7
- package/dist/_esm5.processed/parsers/manifest/utils/get_first_time_from_adaptation.js +8 -5
- package/dist/_esm5.processed/parsers/manifest/utils/get_last_time_from_adaptation.js +8 -5
- package/dist/_esm5.processed/parsers/manifest/utils/get_maximum_positions.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/utils/get_minimum_position.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +31 -22
- package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +9 -6
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +38 -45
- package/dist/_esm5.processed/parsers/texttracks/index.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/sami/html.js +45 -43
- package/dist/_esm5.processed/parsers/texttracks/sami/native.js +41 -39
- package/dist/_esm5.processed/parsers/texttracks/srt/find_end_of_cue_block.js +7 -4
- package/dist/_esm5.processed/parsers/texttracks/srt/get_cue_blocks.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/srt/html.js +32 -29
- package/dist/_esm5.processed/parsers/texttracks/srt/native.js +16 -13
- package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +21 -18
- package/dist/_esm5.processed/parsers/texttracks/srt/parse_timestamp.js +10 -7
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +37 -30
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_styling.js +48 -48
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_time_delimiters.js +14 -11
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.js +7 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +15 -12
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +15 -12
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_line_height.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +15 -12
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_padding.js +25 -22
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +117 -124
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +12 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_ttml_to_div.js +14 -11
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/ttml_color_to_css_color.js +10 -7
- package/dist/_esm5.processed/parsers/texttracks/ttml/native/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_cue.js +38 -35
- package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_ttml_to_vtt.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +58 -58
- package/dist/_esm5.processed/parsers/texttracks/ttml/regexps.js +27 -13
- package/dist/_esm5.processed/parsers/texttracks/ttml/resolve_styles_inheritance.js +18 -18
- package/dist/_esm5.processed/parsers/texttracks/ttml/time_parsing.js +28 -26
- package/dist/_esm5.processed/parsers/texttracks/ttml/xml_utils.js +37 -25
- package/dist/_esm5.processed/parsers/texttracks/types.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/webvtt/get_cue_blocks.js +12 -9
- package/dist/_esm5.processed/parsers/texttracks/webvtt/get_style_blocks.js +14 -11
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/convert_payload_to_html.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +8 -5
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +60 -60
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_styled_element.js +30 -27
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_style_block.js +23 -26
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_webvtt_to_div.js +20 -17
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +23 -18
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/parse_vtt_to_cues.js +19 -16
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/set_settings_on_cue.js +20 -17
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/to_native_cue.js +8 -5
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +26 -18
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_timestamp.js +10 -7
- package/dist/_esm5.processed/parsers/texttracks/webvtt/utils.js +15 -7
- package/dist/_esm5.processed/public_types.js +2 -1
- package/dist/_esm5.processed/tools/TextTrackRenderer/index.js +13 -6
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +26 -24
- package/dist/_esm5.processed/tools/index.js +6 -4
- package/dist/_esm5.processed/tools/string_utils.js +10 -1
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +16 -24
- package/dist/_esm5.processed/transports/dash/construct_segment_url.js +6 -3
- package/dist/_esm5.processed/transports/dash/extract_complete_chunks.js +17 -14
- package/dist/_esm5.processed/transports/dash/get_events_out_of_emsgs.js +19 -16
- package/dist/_esm5.processed/transports/dash/index.js +4 -2
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +47 -27
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +23 -16
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +68 -60
- package/dist/_esm5.processed/transports/dash/pipelines.js +20 -17
- package/dist/_esm5.processed/transports/dash/segment_loader.js +49 -39
- package/dist/_esm5.processed/transports/dash/segment_parser.js +58 -39
- package/dist/_esm5.processed/transports/dash/text_loader.js +36 -30
- package/dist/_esm5.processed/transports/dash/text_parser.js +39 -29
- package/dist/_esm5.processed/transports/index.js +17 -1
- package/dist/_esm5.processed/transports/local/index.js +4 -2
- package/dist/_esm5.processed/transports/local/pipelines.js +26 -23
- package/dist/_esm5.processed/transports/local/segment_loader.js +26 -23
- package/dist/_esm5.processed/transports/local/segment_parser.js +36 -25
- package/dist/_esm5.processed/transports/local/text_parser.js +42 -27
- package/dist/_esm5.processed/transports/metaplaylist/index.js +4 -2
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +11 -7
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +91 -96
- package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +26 -20
- package/dist/_esm5.processed/transports/smooth/index.js +4 -2
- package/dist/_esm5.processed/transports/smooth/is_mp4_embedded_track.js +4 -1
- package/dist/_esm5.processed/transports/smooth/isobmff/create_audio_init_segment.js +22 -19
- package/dist/_esm5.processed/transports/smooth/isobmff/create_boxes.js +92 -67
- package/dist/_esm5.processed/transports/smooth/isobmff/create_init_segment.js +29 -26
- package/dist/_esm5.processed/transports/smooth/isobmff/create_traf_box.js +9 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.js +23 -20
- package/dist/_esm5.processed/transports/smooth/isobmff/get_aaces_header.js +10 -7
- package/dist/_esm5.processed/transports/smooth/isobmff/index.js +13 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfrf.js +19 -16
- package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfxd.js +9 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/patch_segment.js +41 -38
- package/dist/_esm5.processed/transports/smooth/pipelines.js +106 -96
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +2 -2
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +149 -153
- package/dist/_esm5.processed/transports/smooth/utils.js +7 -3
- package/dist/_esm5.processed/transports/types.js +2 -1
- package/dist/_esm5.processed/transports/utils/byte_range.js +6 -4
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +23 -18
- package/dist/_esm5.processed/transports/utils/check_isobmff_integrity.js +14 -11
- package/dist/_esm5.processed/transports/utils/find_complete_box.js +11 -8
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +22 -14
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +13 -10
- package/dist/_esm5.processed/transports/utils/infer_segment_container.js +4 -1
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +40 -26
- package/dist/_esm5.processed/utils/are_arrays_of_numbers_equal.js +5 -2
- package/dist/_esm5.processed/utils/are_codecs_compatible.js +11 -9
- package/dist/_esm5.processed/utils/array_find.js +7 -4
- package/dist/_esm5.processed/utils/array_find_index.js +6 -3
- package/dist/_esm5.processed/utils/array_includes.js +12 -11
- package/dist/_esm5.processed/utils/assert.js +13 -9
- package/dist/_esm5.processed/utils/assert_unreachable.js +6 -3
- package/dist/_esm5.processed/utils/base64.js +23 -18
- package/dist/_esm5.processed/utils/byte_parsing.js +30 -17
- package/dist/_esm5.processed/utils/cancellable_sleep.js +8 -5
- package/dist/_esm5.processed/utils/create_cancellable_promise.js +7 -4
- package/dist/_esm5.processed/utils/deep_merge.js +10 -21
- package/dist/_esm5.processed/utils/event_emitter.js +24 -24
- package/dist/_esm5.processed/utils/flat_map.js +7 -4
- package/dist/_esm5.processed/utils/get_fuzzed_delay.js +6 -3
- package/dist/_esm5.processed/utils/hash_buffer.js +7 -4
- package/dist/_esm5.processed/utils/id_generator.js +6 -3
- package/dist/_esm5.processed/utils/initialization_segment_cache.js +11 -12
- package/dist/_esm5.processed/utils/is_non_empty_string.js +4 -1
- package/dist/_esm5.processed/utils/is_null_or_undefined.js +4 -1
- package/dist/_esm5.processed/utils/languages/ISO_639-1_to_ISO_639-3.js +4 -2
- package/dist/_esm5.processed/utils/languages/ISO_639-2_to_ISO_639-3.js +4 -2
- package/dist/_esm5.processed/utils/languages/index.js +7 -3
- package/dist/_esm5.processed/utils/languages/normalize.js +26 -20
- package/dist/_esm5.processed/utils/logger.js +24 -23
- package/dist/_esm5.processed/utils/monotonic_timestamp.js +4 -1
- package/dist/_esm5.processed/utils/noop.js +4 -1
- package/dist/_esm5.processed/utils/object_assign.js +8 -10
- package/dist/_esm5.processed/utils/object_values.js +6 -3
- package/dist/_esm5.processed/utils/ranges.js +94 -71
- package/dist/_esm5.processed/utils/reference.js +48 -52
- package/dist/_esm5.processed/utils/request/fetch.js +79 -109
- package/dist/_esm5.processed/utils/request/index.js +9 -4
- package/dist/_esm5.processed/utils/request/xhr.js +49 -37
- package/dist/_esm5.processed/utils/resolve_url.js +18 -18
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +34 -81
- package/dist/_esm5.processed/utils/sleep.js +5 -2
- package/dist/_esm5.processed/utils/slice_uint8array.js +3 -1
- package/dist/_esm5.processed/utils/sorted_list.js +37 -40
- package/dist/_esm5.processed/utils/starts_with.js +5 -2
- package/dist/_esm5.processed/utils/string_parsing.js +84 -73
- package/dist/_esm5.processed/utils/take_first_set.js +9 -10
- package/dist/_esm5.processed/utils/task_canceller.js +51 -71
- package/dist/_esm5.processed/utils/warn_once.js +7 -4
- package/dist/_esm5.processed/utils/weak_map_memory.js +12 -11
- package/dist/_esm5.processed/utils/wrapInPromise.js +5 -2
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +43758 -45493
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +1 -22
- package/package.json +22 -23
- package/scripts/build/constants.d.ts +1 -23
- package/scripts/build/generate_build.js +1 -1
- package/scripts/check_nodejs_import_compatibility.js +1 -1
- package/scripts/update-version +1 -4
- package/sonar-project.properties +1 -1
- package/src/compat/event_listeners.ts +8 -8
- package/src/compat/global_scope.ts +2 -0
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +3 -3
- package/src/core/adaptive/adaptive_representation_selector.ts +27 -9
- package/src/core/adaptive/buffer_based_chooser.ts +1 -1
- package/src/core/adaptive/network_analyzer.ts +5 -4
- package/src/core/api/public_api.ts +2 -2
- package/src/core/api/track_management/track_dispatcher.ts +2 -1
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +1 -1
- package/src/core/fetchers/cdn_prioritizer.ts +1 -1
- package/src/experimental/features/__tests__/index.test.ts +19 -0
- package/src/experimental/features/index.ts +1 -0
- package/src/features/list/__tests__/index.test.ts +49 -0
- package/src/index.ts +28 -3
- package/src/transports/smooth/segment_loader.ts +4 -4
- package/src/typings/globals.d.ts +0 -42
- package/src/utils/request/fetch.ts +1 -1
- package/src/utils/request/xhr.ts +1 -1
- package/tsconfig.json +1 -1
- package/tsconfig.modules.json +3 -3
- package/dist/_esm5.processed/features/initialize_features.d.ts +0 -19
- package/dist/_esm5.processed/features/initialize_features.js +0 -108
- package/src/features/__tests__/initialize_features.test.ts +0 -657
- package/src/features/initialize_features.ts +0 -129
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,13 +14,15 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
typeof
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.readNullTerminatedString = exports.guidToUuid = exports.beUtf16ToStr = exports.strToBeUtf16 = exports.utf16LEToStr = exports.strToUtf16LE = exports.utf8ToStr = exports.strToUtf8 = exports.hexToBytes = exports.bytesToHex = void 0;
|
|
19
|
+
const global_scope_1 = require("../compat/global_scope");
|
|
20
|
+
const log_1 = require("../log");
|
|
21
|
+
const assert_1 = require("./assert");
|
|
22
|
+
const hasTextDecoder = typeof global_scope_1.default === "object" &&
|
|
23
|
+
typeof global_scope_1.default.TextDecoder === "function";
|
|
24
|
+
const hasTextEncoder = typeof global_scope_1.default === "object" &&
|
|
25
|
+
typeof global_scope_1.default.TextEncoder === "function";
|
|
23
26
|
/**
|
|
24
27
|
* Convert a string to an Uint8Array containing the corresponding UTF-16 code
|
|
25
28
|
* units in little-endian.
|
|
@@ -27,15 +30,16 @@ var hasTextEncoder = typeof globalScope === "object" &&
|
|
|
27
30
|
* @returns {Uint8Array}
|
|
28
31
|
*/
|
|
29
32
|
function strToUtf16LE(str) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
for (
|
|
33
|
-
|
|
33
|
+
const buffer = new ArrayBuffer(str.length * 2);
|
|
34
|
+
const res = new Uint8Array(buffer);
|
|
35
|
+
for (let i = 0; i < res.length; i += 2) {
|
|
36
|
+
const value = str.charCodeAt(i / 2);
|
|
34
37
|
res[i] = value & 0xFF;
|
|
35
38
|
res[i + 1] = value >> 8 & 0xFF;
|
|
36
39
|
}
|
|
37
40
|
return res;
|
|
38
41
|
}
|
|
42
|
+
exports.strToUtf16LE = strToUtf16LE;
|
|
39
43
|
/**
|
|
40
44
|
* Convert a string to an Uint8Array containing the corresponding UTF-16 code
|
|
41
45
|
* units in little-endian.
|
|
@@ -43,15 +47,16 @@ function strToUtf16LE(str) {
|
|
|
43
47
|
* @returns {Uint8Array}
|
|
44
48
|
*/
|
|
45
49
|
function strToBeUtf16(str) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
for (
|
|
49
|
-
|
|
50
|
+
const buffer = new ArrayBuffer(str.length * 2);
|
|
51
|
+
const res = new Uint8Array(buffer);
|
|
52
|
+
for (let i = 0; i < res.length; i += 2) {
|
|
53
|
+
const value = str.charCodeAt(i / 2);
|
|
50
54
|
res[i + 1] = value & 0xFF;
|
|
51
55
|
res[i] = value >> 8 & 0xFF;
|
|
52
56
|
}
|
|
53
57
|
return res;
|
|
54
58
|
}
|
|
59
|
+
exports.strToBeUtf16 = strToBeUtf16;
|
|
55
60
|
/**
|
|
56
61
|
* Construct string from the little-endian UTF-16 code units given.
|
|
57
62
|
* @param {Uint8Array} bytes
|
|
@@ -61,21 +66,22 @@ function utf16LEToStr(bytes) {
|
|
|
61
66
|
if (hasTextDecoder) {
|
|
62
67
|
try {
|
|
63
68
|
// instanciation throws if the encoding is unsupported
|
|
64
|
-
|
|
69
|
+
const decoder = new TextDecoder("utf-16le");
|
|
65
70
|
return decoder.decode(bytes);
|
|
66
71
|
}
|
|
67
72
|
catch (e) {
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
const err = e instanceof Error ? e : "";
|
|
74
|
+
log_1.default.warn("Utils: could not use TextDecoder to parse UTF-16LE, " +
|
|
70
75
|
"fallbacking to another implementation", err);
|
|
71
76
|
}
|
|
72
77
|
}
|
|
73
|
-
|
|
74
|
-
for (
|
|
78
|
+
let str = "";
|
|
79
|
+
for (let i = 0; i < bytes.length; i += 2) {
|
|
75
80
|
str += String.fromCharCode((bytes[i + 1] << 8) + bytes[i]);
|
|
76
81
|
}
|
|
77
82
|
return str;
|
|
78
83
|
}
|
|
84
|
+
exports.utf16LEToStr = utf16LEToStr;
|
|
79
85
|
/**
|
|
80
86
|
* Construct string from the little-endian UTF-16 code units given.
|
|
81
87
|
* @param {Uint8Array} bytes
|
|
@@ -85,21 +91,22 @@ function beUtf16ToStr(bytes) {
|
|
|
85
91
|
if (hasTextDecoder) {
|
|
86
92
|
try {
|
|
87
93
|
// instanciation throws if the encoding is unsupported
|
|
88
|
-
|
|
94
|
+
const decoder = new TextDecoder("utf-16be");
|
|
89
95
|
return decoder.decode(bytes);
|
|
90
96
|
}
|
|
91
97
|
catch (e) {
|
|
92
|
-
|
|
93
|
-
|
|
98
|
+
const err = e instanceof Error ? e : "";
|
|
99
|
+
log_1.default.warn("Utils: could not use TextDecoder to parse UTF-16BE, " +
|
|
94
100
|
"fallbacking to another implementation", err);
|
|
95
101
|
}
|
|
96
102
|
}
|
|
97
|
-
|
|
98
|
-
for (
|
|
103
|
+
let str = "";
|
|
104
|
+
for (let i = 0; i < bytes.length; i += 2) {
|
|
99
105
|
str += String.fromCharCode((bytes[i] << 8) + bytes[i + 1]);
|
|
100
106
|
}
|
|
101
107
|
return str;
|
|
102
108
|
}
|
|
109
|
+
exports.beUtf16ToStr = beUtf16ToStr;
|
|
103
110
|
/**
|
|
104
111
|
* Convert a string to an Uint8Array containing the corresponding UTF-8 code
|
|
105
112
|
* units.
|
|
@@ -109,12 +116,12 @@ function beUtf16ToStr(bytes) {
|
|
|
109
116
|
function strToUtf8(str) {
|
|
110
117
|
if (hasTextEncoder) {
|
|
111
118
|
try {
|
|
112
|
-
|
|
119
|
+
const encoder = new TextEncoder();
|
|
113
120
|
return encoder.encode(str);
|
|
114
121
|
}
|
|
115
122
|
catch (e) {
|
|
116
|
-
|
|
117
|
-
|
|
123
|
+
const err = e instanceof Error ? e : "";
|
|
124
|
+
log_1.default.warn("Utils: could not use TextEncoder to encode string into UTF-8, " +
|
|
118
125
|
"fallbacking to another implementation", err);
|
|
119
126
|
}
|
|
120
127
|
}
|
|
@@ -146,8 +153,8 @@ function strToUtf8(str) {
|
|
|
146
153
|
// By iterating on the resulting string, we will then be able to generate a
|
|
147
154
|
// Uint8Array containing the UTF-8 representation of that original string, by
|
|
148
155
|
// just calling the charCodeAt API on it.
|
|
149
|
-
|
|
150
|
-
|
|
156
|
+
let utf8Str;
|
|
157
|
+
const pcStr = encodeURIComponent(str);
|
|
151
158
|
// As "unescape" is a deprecated function we want to declare a fallback in the
|
|
152
159
|
// case a browser decide to not implement it.
|
|
153
160
|
if (typeof unescape === "function") {
|
|
@@ -156,11 +163,11 @@ function strToUtf8(str) {
|
|
|
156
163
|
else {
|
|
157
164
|
// Let's implement a simple unescape function (got to admit it was for the challenge)
|
|
158
165
|
// http://ecma-international.org/ecma-262/9.0/#sec-unescape-string
|
|
159
|
-
|
|
160
|
-
|
|
166
|
+
const isHexChar = /[0-9a-fA-F]/;
|
|
167
|
+
const pcStrLen = pcStr.length;
|
|
161
168
|
utf8Str = "";
|
|
162
|
-
for (
|
|
163
|
-
|
|
169
|
+
for (let i = 0; i < pcStr.length; i++) {
|
|
170
|
+
let wasPercentEncoded = false;
|
|
164
171
|
if (pcStr[i] === "%") {
|
|
165
172
|
if (i <= pcStrLen - 6 &&
|
|
166
173
|
pcStr[i + 1] === "u" &&
|
|
@@ -168,7 +175,7 @@ function strToUtf8(str) {
|
|
|
168
175
|
isHexChar.test(pcStr[i + 3]) &&
|
|
169
176
|
isHexChar.test(pcStr[i + 4]) &&
|
|
170
177
|
isHexChar.test(pcStr[i + 5])) {
|
|
171
|
-
|
|
178
|
+
const charCode = parseInt(pcStr.substring(i + 1, i + 6), 16);
|
|
172
179
|
utf8Str += String.fromCharCode(charCode);
|
|
173
180
|
wasPercentEncoded = true;
|
|
174
181
|
i += 5; // Skip the next 5 chars
|
|
@@ -176,7 +183,7 @@ function strToUtf8(str) {
|
|
|
176
183
|
else if (i <= pcStrLen - 3 &&
|
|
177
184
|
isHexChar.test(pcStr[i + 1]) &&
|
|
178
185
|
isHexChar.test(pcStr[i + 2])) {
|
|
179
|
-
|
|
186
|
+
const charCode = parseInt(pcStr.substring(i + 1, i + 3), 16);
|
|
180
187
|
utf8Str += String.fromCharCode(charCode);
|
|
181
188
|
wasPercentEncoded = true;
|
|
182
189
|
i += 2; // Skip the next 2 chars
|
|
@@ -189,22 +196,23 @@ function strToUtf8(str) {
|
|
|
189
196
|
}
|
|
190
197
|
// Now let's just build our array from every other bytes of that string's
|
|
191
198
|
// UTF-16 representation
|
|
192
|
-
|
|
193
|
-
for (
|
|
199
|
+
const res = new Uint8Array(utf8Str.length);
|
|
200
|
+
for (let i = 0; i < utf8Str.length; i++) {
|
|
194
201
|
res[i] = utf8Str.charCodeAt(i) & 0xFF; // first byte should be 0x00 anyway
|
|
195
202
|
}
|
|
196
203
|
return res;
|
|
197
204
|
}
|
|
205
|
+
exports.strToUtf8 = strToUtf8;
|
|
198
206
|
/**
|
|
199
207
|
* Creates a new string from the given array of char codes.
|
|
200
208
|
* @param {Uint8Array} args
|
|
201
209
|
* @returns {string}
|
|
202
210
|
*/
|
|
203
211
|
function stringFromCharCodes(args) {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
for (
|
|
207
|
-
|
|
212
|
+
const max = 16000;
|
|
213
|
+
let ret = "";
|
|
214
|
+
for (let i = 0; i < args.length; i += max) {
|
|
215
|
+
const subArray = args.subarray(i, i + max);
|
|
208
216
|
// NOTE: ugly I know, but TS is problematic here (you can try)
|
|
209
217
|
ret += String.fromCharCode.apply(null, subArray);
|
|
210
218
|
}
|
|
@@ -227,7 +235,7 @@ function stringFromCharCodes(args) {
|
|
|
227
235
|
* @returns {string}
|
|
228
236
|
*/
|
|
229
237
|
function intToHex(num, size) {
|
|
230
|
-
|
|
238
|
+
const toStr = num.toString(16);
|
|
231
239
|
return toStr.length >= size ? toStr :
|
|
232
240
|
new Array(size - toStr.length + 1).join("0") + toStr;
|
|
233
241
|
}
|
|
@@ -240,16 +248,16 @@ function utf8ToStr(data) {
|
|
|
240
248
|
if (hasTextDecoder) {
|
|
241
249
|
try {
|
|
242
250
|
// TextDecoder use UTF-8 by default
|
|
243
|
-
|
|
251
|
+
const decoder = new TextDecoder();
|
|
244
252
|
return decoder.decode(data);
|
|
245
253
|
}
|
|
246
254
|
catch (e) {
|
|
247
|
-
|
|
248
|
-
|
|
255
|
+
const err = e instanceof Error ? e : "";
|
|
256
|
+
log_1.default.warn("Utils: could not use TextDecoder to parse UTF-8, " +
|
|
249
257
|
"fallbacking to another implementation", err);
|
|
250
258
|
}
|
|
251
259
|
}
|
|
252
|
-
|
|
260
|
+
let uint8 = data;
|
|
253
261
|
// If present, strip off the UTF-8 BOM.
|
|
254
262
|
if (uint8[0] === 0xEF && uint8[1] === 0xBB && uint8[2] === 0xBF) {
|
|
255
263
|
uint8 = uint8.subarray(3);
|
|
@@ -257,8 +265,8 @@ function utf8ToStr(data) {
|
|
|
257
265
|
// We're basically doing strToUtf8 in reverse.
|
|
258
266
|
// You can look at that other function for the whole story.
|
|
259
267
|
// Generate string containing escaped UTF-8 code units
|
|
260
|
-
|
|
261
|
-
|
|
268
|
+
const utf8Str = stringFromCharCodes(uint8);
|
|
269
|
+
let escaped;
|
|
262
270
|
if (typeof escape === "function") {
|
|
263
271
|
// Transform UTF-8 escape sequence into percent-encoded escape sequences.
|
|
264
272
|
escaped = escape(utf8Str);
|
|
@@ -266,14 +274,14 @@ function utf8ToStr(data) {
|
|
|
266
274
|
else {
|
|
267
275
|
// Let's implement a simple escape function
|
|
268
276
|
// http://ecma-international.org/ecma-262/9.0/#sec-escape-string
|
|
269
|
-
|
|
277
|
+
const nonEscapedChar = /[A-Za-z0-9*_\+-\.\/]/;
|
|
270
278
|
escaped = "";
|
|
271
|
-
for (
|
|
279
|
+
for (let i = 0; i < utf8Str.length; i++) {
|
|
272
280
|
if (nonEscapedChar.test(utf8Str[i])) {
|
|
273
281
|
escaped += utf8Str[i];
|
|
274
282
|
}
|
|
275
283
|
else {
|
|
276
|
-
|
|
284
|
+
const charCode = utf8Str.charCodeAt(i);
|
|
277
285
|
escaped += charCode >= 256 ? "%u" + intToHex(charCode, 4) :
|
|
278
286
|
"%" + intToHex(charCode, 2);
|
|
279
287
|
}
|
|
@@ -283,6 +291,7 @@ function utf8ToStr(data) {
|
|
|
283
291
|
// Example: "g#%E3%82%AC" -> "g#€"
|
|
284
292
|
return decodeURIComponent(escaped);
|
|
285
293
|
}
|
|
294
|
+
exports.utf8ToStr = utf8ToStr;
|
|
286
295
|
/**
|
|
287
296
|
* Convert hex codes in a string form into the corresponding bytes.
|
|
288
297
|
* @param {string} str
|
|
@@ -290,13 +299,14 @@ function utf8ToStr(data) {
|
|
|
290
299
|
* @throws TypeError - str.length is odd
|
|
291
300
|
*/
|
|
292
301
|
function hexToBytes(str) {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
for (
|
|
302
|
+
const len = str.length;
|
|
303
|
+
const arr = new Uint8Array(len / 2);
|
|
304
|
+
for (let i = 0, j = 0; i < len; i += 2, j++) {
|
|
296
305
|
arr[j] = parseInt(str.substring(i, i + 2), 16) & 0xFF;
|
|
297
306
|
}
|
|
298
307
|
return arr;
|
|
299
308
|
}
|
|
309
|
+
exports.hexToBytes = hexToBytes;
|
|
300
310
|
/**
|
|
301
311
|
* Convert bytes into the corresponding hex string, with the possibility
|
|
302
312
|
* to add a separator.
|
|
@@ -304,10 +314,9 @@ function hexToBytes(str) {
|
|
|
304
314
|
* @param {string} [sep=""] - separator. Separate each two hex character.
|
|
305
315
|
* @returns {string}
|
|
306
316
|
*/
|
|
307
|
-
function bytesToHex(bytes, sep) {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
for (var i = 0; i < bytes.byteLength; i++) {
|
|
317
|
+
function bytesToHex(bytes, sep = "") {
|
|
318
|
+
let hex = "";
|
|
319
|
+
for (let i = 0; i < bytes.byteLength; i++) {
|
|
311
320
|
hex += (bytes[i] >>> 4).toString(16);
|
|
312
321
|
hex += (bytes[i] & 0xF).toString(16);
|
|
313
322
|
if (sep.length > 0 && i < bytes.byteLength - 1) {
|
|
@@ -316,6 +325,7 @@ function bytesToHex(bytes, sep) {
|
|
|
316
325
|
}
|
|
317
326
|
return hex;
|
|
318
327
|
}
|
|
328
|
+
exports.bytesToHex = bytesToHex;
|
|
319
329
|
/**
|
|
320
330
|
* Convert little-endian GUID into big-endian UUID.
|
|
321
331
|
* @param {Uint8Array} guid
|
|
@@ -323,16 +333,16 @@ function bytesToHex(bytes, sep) {
|
|
|
323
333
|
* @throws AssertionError - The guid length is not 16
|
|
324
334
|
*/
|
|
325
335
|
function guidToUuid(guid) {
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
+
(0, assert_1.default)(guid.length === 16, "GUID length should be 16");
|
|
337
|
+
const p1A = guid[0];
|
|
338
|
+
const p1B = guid[1];
|
|
339
|
+
const p1C = guid[2];
|
|
340
|
+
const p1D = guid[3];
|
|
341
|
+
const p2A = guid[4];
|
|
342
|
+
const p2B = guid[5];
|
|
343
|
+
const p3A = guid[6];
|
|
344
|
+
const p3B = guid[7];
|
|
345
|
+
const uuid = new Uint8Array(16);
|
|
336
346
|
// swapping byte endian on 4 bytes
|
|
337
347
|
// [1, 2, 3, 4] => [4, 3, 2, 1]
|
|
338
348
|
uuid[0] = p1D;
|
|
@@ -350,6 +360,7 @@ function guidToUuid(guid) {
|
|
|
350
360
|
uuid.set(guid.subarray(8, 16), 8);
|
|
351
361
|
return uuid;
|
|
352
362
|
}
|
|
363
|
+
exports.guidToUuid = guidToUuid;
|
|
353
364
|
/**
|
|
354
365
|
* Decode string from bytes (UTF-8).
|
|
355
366
|
* Keeps reading until it reaches a byte that equals to zero.
|
|
@@ -358,16 +369,16 @@ function guidToUuid(guid) {
|
|
|
358
369
|
* @returns {Object}
|
|
359
370
|
*/
|
|
360
371
|
function readNullTerminatedString(buffer, offset) {
|
|
361
|
-
|
|
372
|
+
let position = offset;
|
|
362
373
|
while (position < buffer.length) {
|
|
363
|
-
|
|
374
|
+
const value = buffer[position];
|
|
364
375
|
if (value === 0) {
|
|
365
376
|
break;
|
|
366
377
|
}
|
|
367
378
|
position += 1;
|
|
368
379
|
}
|
|
369
|
-
|
|
380
|
+
const bytes = buffer.subarray(offset, position);
|
|
370
381
|
return { end: position + 1,
|
|
371
382
|
string: utf8ToStr(bytes) };
|
|
372
383
|
}
|
|
373
|
-
|
|
384
|
+
exports.readNullTerminatedString = readNullTerminatedString;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,20 +14,18 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
var i = 0;
|
|
23
|
-
var len = args.length;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const is_null_or_undefined_1 = require("./is_null_or_undefined");
|
|
19
|
+
function takeFirstSet(...args) {
|
|
20
|
+
let i = 0;
|
|
21
|
+
const len = args.length;
|
|
24
22
|
while (i < len) {
|
|
25
|
-
|
|
26
|
-
if (!
|
|
23
|
+
const arg = args[i];
|
|
24
|
+
if (!(0, is_null_or_undefined_1.default)(arg)) {
|
|
27
25
|
return arg;
|
|
28
26
|
}
|
|
29
27
|
i++;
|
|
30
28
|
}
|
|
31
29
|
return undefined;
|
|
32
30
|
}
|
|
31
|
+
exports.default = takeFirstSet;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,24 +14,11 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return extendStatics(d, b);
|
|
22
|
-
};
|
|
23
|
-
return function (d, b) {
|
|
24
|
-
if (typeof b !== "function" && b !== null)
|
|
25
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
26
|
-
extendStatics(d, b);
|
|
27
|
-
function __() { this.constructor = d; }
|
|
28
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
29
|
-
};
|
|
30
|
-
})();
|
|
31
|
-
import log from "../log";
|
|
32
|
-
import assert from "./assert";
|
|
33
|
-
import noop from "./noop";
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.CancellationError = exports.CancellationSignal = void 0;
|
|
19
|
+
const log_1 = require("../log");
|
|
20
|
+
const assert_1 = require("./assert");
|
|
21
|
+
const noop_1 = require("./noop");
|
|
34
22
|
/**
|
|
35
23
|
* Class facilitating asynchronous task cancellation.
|
|
36
24
|
*
|
|
@@ -128,14 +116,14 @@ import noop from "./noop";
|
|
|
128
116
|
* ```
|
|
129
117
|
* @class TaskCanceller
|
|
130
118
|
*/
|
|
131
|
-
|
|
119
|
+
class TaskCanceller {
|
|
132
120
|
/**
|
|
133
121
|
* Creates a new `TaskCanceller`, with its own `CancellationSignal` created
|
|
134
122
|
* as its `signal` provide.
|
|
135
123
|
* You can then pass this property to async task you wish to be cancellable.
|
|
136
124
|
*/
|
|
137
|
-
|
|
138
|
-
|
|
125
|
+
constructor() {
|
|
126
|
+
const [trigger, register] = createCancellationFunctions();
|
|
139
127
|
this._isUsed = false;
|
|
140
128
|
this._trigger = trigger;
|
|
141
129
|
this.signal = new CancellationSignal(register);
|
|
@@ -144,9 +132,9 @@ var TaskCanceller = /** @class */ (function () {
|
|
|
144
132
|
* Returns `true` if this `TaskCanceller` has already been triggered.
|
|
145
133
|
* `false` otherwise.
|
|
146
134
|
*/
|
|
147
|
-
|
|
135
|
+
isUsed() {
|
|
148
136
|
return this._isUsed;
|
|
149
|
-
}
|
|
137
|
+
}
|
|
150
138
|
/**
|
|
151
139
|
* Bind this `TaskCanceller` to a `CancellationSignal`, so the former
|
|
152
140
|
* is automatically cancelled when the latter is triggered.
|
|
@@ -161,14 +149,13 @@ var TaskCanceller = /** @class */ (function () {
|
|
|
161
149
|
* @param {Object} signal
|
|
162
150
|
* @returns {Function}
|
|
163
151
|
*/
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
_this.cancel();
|
|
152
|
+
linkToSignal(signal) {
|
|
153
|
+
const unregister = signal.register(() => {
|
|
154
|
+
this.cancel();
|
|
168
155
|
});
|
|
169
156
|
this.signal.register(unregister);
|
|
170
157
|
return unregister;
|
|
171
|
-
}
|
|
158
|
+
}
|
|
172
159
|
/**
|
|
173
160
|
* "Trigger" the `TaskCanceller`, notify through its associated
|
|
174
161
|
* `CancellationSignal` (its `signal` property) that a task should be aborted.
|
|
@@ -180,14 +167,14 @@ var TaskCanceller = /** @class */ (function () {
|
|
|
180
167
|
* cancellation.
|
|
181
168
|
* @param {Error} [srcError]
|
|
182
169
|
*/
|
|
183
|
-
|
|
170
|
+
cancel(srcError) {
|
|
184
171
|
if (this._isUsed) {
|
|
185
172
|
return;
|
|
186
173
|
}
|
|
187
174
|
this._isUsed = true;
|
|
188
|
-
|
|
175
|
+
const cancellationError = srcError !== null && srcError !== void 0 ? srcError : new CancellationError();
|
|
189
176
|
this._trigger(cancellationError);
|
|
190
|
-
}
|
|
177
|
+
}
|
|
191
178
|
/**
|
|
192
179
|
* Check that the `error` in argument is a `CancellationError`, most likely
|
|
193
180
|
* meaning that the linked error is due to a task aborted via a
|
|
@@ -195,38 +182,36 @@ var TaskCanceller = /** @class */ (function () {
|
|
|
195
182
|
* @param {*} error
|
|
196
183
|
* @returns {boolean}
|
|
197
184
|
*/
|
|
198
|
-
|
|
185
|
+
static isCancellationError(error) {
|
|
199
186
|
return error instanceof CancellationError;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
export default TaskCanceller;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.default = TaskCanceller;
|
|
204
190
|
/**
|
|
205
191
|
* Signal allowing to be notified when the linked task needs to be aborted.
|
|
206
192
|
* @class
|
|
207
193
|
*/
|
|
208
|
-
|
|
194
|
+
class CancellationSignal {
|
|
209
195
|
/**
|
|
210
196
|
* Creates a new CancellationSignal.
|
|
211
197
|
* /!\ Note: Only a `TaskCanceller` is supposed to be able to create one.
|
|
212
198
|
* @param {Function} registerToSource - Function called when the task is
|
|
213
199
|
* cancelled.
|
|
214
200
|
*/
|
|
215
|
-
|
|
216
|
-
var _this = this;
|
|
201
|
+
constructor(registerToSource) {
|
|
217
202
|
this._isCancelled = false;
|
|
218
203
|
this.cancellationError = null;
|
|
219
204
|
this._listeners = [];
|
|
220
|
-
registerToSource(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
while (
|
|
205
|
+
registerToSource((cancellationError) => {
|
|
206
|
+
this.cancellationError = cancellationError;
|
|
207
|
+
this._isCancelled = true;
|
|
208
|
+
while (this._listeners.length > 0) {
|
|
224
209
|
try {
|
|
225
|
-
|
|
210
|
+
const listener = this._listeners.pop();
|
|
226
211
|
listener === null || listener === void 0 ? void 0 : listener(cancellationError);
|
|
227
212
|
}
|
|
228
213
|
catch (err) {
|
|
229
|
-
|
|
214
|
+
log_1.default.error("Error while calling clean up listener", err instanceof Error ? err.toString() :
|
|
230
215
|
"Unknown error");
|
|
231
216
|
}
|
|
232
217
|
}
|
|
@@ -237,9 +222,9 @@ var CancellationSignal = /** @class */ (function () {
|
|
|
237
222
|
* that the linked task needs to be aborted.
|
|
238
223
|
* @returns boolean
|
|
239
224
|
*/
|
|
240
|
-
|
|
225
|
+
isCancelled() {
|
|
241
226
|
return this._isCancelled;
|
|
242
|
-
}
|
|
227
|
+
}
|
|
243
228
|
/**
|
|
244
229
|
* Registers a function that will be called when/if the current task is
|
|
245
230
|
* cancelled.
|
|
@@ -261,16 +246,15 @@ var CancellationSignal = /** @class */ (function () {
|
|
|
261
246
|
* You don't need to call that function when cancellation has already been
|
|
262
247
|
* performed.
|
|
263
248
|
*/
|
|
264
|
-
|
|
265
|
-
var _this = this;
|
|
249
|
+
register(fn) {
|
|
266
250
|
if (this._isCancelled) {
|
|
267
|
-
|
|
251
|
+
(0, assert_1.default)(this.cancellationError !== null);
|
|
268
252
|
fn(this.cancellationError);
|
|
269
|
-
return
|
|
253
|
+
return noop_1.default;
|
|
270
254
|
}
|
|
271
255
|
this._listeners.push(fn);
|
|
272
|
-
return
|
|
273
|
-
}
|
|
256
|
+
return () => this.deregister(fn);
|
|
257
|
+
}
|
|
274
258
|
/**
|
|
275
259
|
* De-register a function registered through the `register` function.
|
|
276
260
|
* Do nothing if that function wasn't registered.
|
|
@@ -279,41 +263,37 @@ var CancellationSignal = /** @class */ (function () {
|
|
|
279
263
|
* practical.
|
|
280
264
|
* @param {Function} fn
|
|
281
265
|
*/
|
|
282
|
-
|
|
283
|
-
for (
|
|
266
|
+
deregister(fn) {
|
|
267
|
+
for (let i = this._listeners.length - 1; i >= 0; i--) {
|
|
284
268
|
if (this._listeners[i] === fn) {
|
|
285
269
|
this._listeners.splice(i, 1);
|
|
286
270
|
}
|
|
287
271
|
}
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
export { CancellationSignal };
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
exports.CancellationSignal = CancellationSignal;
|
|
292
275
|
/**
|
|
293
276
|
* Error created when a task is cancelled.
|
|
294
277
|
* @class CancellationError
|
|
295
278
|
* @extends Error
|
|
296
279
|
*/
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
var _this = _super.call(this) || this;
|
|
280
|
+
class CancellationError extends Error {
|
|
281
|
+
constructor() {
|
|
282
|
+
super();
|
|
301
283
|
// @see https://stackoverflow.com/questions/41102060/typescript-extending-error-class
|
|
302
|
-
Object.setPrototypeOf(
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
return _this;
|
|
284
|
+
Object.setPrototypeOf(this, CancellationError.prototype);
|
|
285
|
+
this.name = "CancellationError";
|
|
286
|
+
this.message = "This task was cancelled.";
|
|
306
287
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
export { CancellationError };
|
|
288
|
+
}
|
|
289
|
+
exports.CancellationError = CancellationError;
|
|
310
290
|
/**
|
|
311
291
|
* Helper function allowing communication between a `TaskCanceller` and a
|
|
312
292
|
* `CancellationSignal`.
|
|
313
293
|
* @returns {Array.<Function>}
|
|
314
294
|
*/
|
|
315
295
|
function createCancellationFunctions() {
|
|
316
|
-
|
|
296
|
+
let listener = noop_1.default;
|
|
317
297
|
return [
|
|
318
298
|
function trigger(error) {
|
|
319
299
|
listener(error);
|