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,6 +14,8 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.removeEmptyRanges = exports.mergeContiguousRanges = exports.keepRangeIntersection = exports.isTimeInRanges = exports.isTimeInRange = exports.isTimeInTimeRanges = exports.isBefore = exports.isAfter = exports.insertInto = exports.getSizeOfRange = exports.getRange = exports.getBufferedTimeRange = exports.getPlayedSizeOfRange = exports.getLeftSizeOfBufferedTimeRange = exports.getPlayedSizeOfBufferedTimeRange = exports.getSizeOfBufferedTimeRange = exports.getNextBufferedTimeRangeGap = exports.getLeftSizeOfRange = exports.getInnerAndOuterRanges = exports.getInnerAndOuterRangesFromBufferedTimeRanges = exports.excludeFromRanges = exports.convertToRanges = void 0;
|
|
16
19
|
/**
|
|
17
20
|
* This file contains functions helping with TimeRanges management.
|
|
18
21
|
*
|
|
@@ -28,7 +31,7 @@
|
|
|
28
31
|
* convertToRanges methods.
|
|
29
32
|
*/
|
|
30
33
|
// Factor for rounding errors
|
|
31
|
-
|
|
34
|
+
const EPSILON = 1 / 60;
|
|
32
35
|
/**
|
|
33
36
|
* Check equality with a tolerance of EPSILON.
|
|
34
37
|
* Used for various functions with this sort of tolerance regarding the
|
|
@@ -48,9 +51,9 @@ function nearlyEqual(a, b) {
|
|
|
48
51
|
* @returns {Object}
|
|
49
52
|
*/
|
|
50
53
|
function createRangeUnion(range1, range2) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return { start
|
|
54
|
+
const start = Math.min(range1.start, range2.start);
|
|
55
|
+
const end = Math.max(range1.end, range2.end);
|
|
56
|
+
return { start, end };
|
|
54
57
|
}
|
|
55
58
|
/**
|
|
56
59
|
* Clean array ranges from "empty" ranges.
|
|
@@ -60,30 +63,32 @@ function createRangeUnion(range1, range2) {
|
|
|
60
63
|
* @returns {Array<Object>}
|
|
61
64
|
*/
|
|
62
65
|
function removeEmptyRanges(ranges) {
|
|
63
|
-
for (
|
|
64
|
-
|
|
66
|
+
for (let index = 0; index < ranges.length; index++) {
|
|
67
|
+
const range = ranges[index];
|
|
65
68
|
if (range.start === range.end) {
|
|
66
69
|
ranges.splice(index--, 1);
|
|
67
70
|
}
|
|
68
71
|
}
|
|
69
72
|
return ranges;
|
|
70
73
|
}
|
|
74
|
+
exports.removeEmptyRanges = removeEmptyRanges;
|
|
71
75
|
/**
|
|
72
76
|
* /!\ Mutate the array of ranges.
|
|
73
77
|
* @param {Array<Object>} ranges
|
|
74
78
|
* @returns {Array<Object>}
|
|
75
79
|
*/
|
|
76
80
|
function mergeContiguousRanges(ranges) {
|
|
77
|
-
for (
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
for (let index = 1; index < ranges.length; index++) {
|
|
82
|
+
const prevRange = ranges[index - 1];
|
|
83
|
+
const currRange = ranges[index];
|
|
80
84
|
if (areRangesNearlyContiguous(prevRange, currRange)) {
|
|
81
|
-
|
|
85
|
+
const unionRange = createRangeUnion(prevRange, currRange);
|
|
82
86
|
ranges.splice(--index, 2, unionRange);
|
|
83
87
|
}
|
|
84
88
|
}
|
|
85
89
|
return ranges;
|
|
86
90
|
}
|
|
91
|
+
exports.mergeContiguousRanges = mergeContiguousRanges;
|
|
87
92
|
/**
|
|
88
93
|
* True if range1 is considered _after_ range2.
|
|
89
94
|
* @param {Object} range1
|
|
@@ -93,6 +98,7 @@ function mergeContiguousRanges(ranges) {
|
|
|
93
98
|
function isAfter(range1, range2) {
|
|
94
99
|
return range1.start >= range2.end;
|
|
95
100
|
}
|
|
101
|
+
exports.isAfter = isAfter;
|
|
96
102
|
/**
|
|
97
103
|
* True if range1 is considered _before_ range2.
|
|
98
104
|
* @param {Object} range1
|
|
@@ -102,6 +108,7 @@ function isAfter(range1, range2) {
|
|
|
102
108
|
function isBefore(range1, range2) {
|
|
103
109
|
return range1.end <= range2.start;
|
|
104
110
|
}
|
|
111
|
+
exports.isBefore = isBefore;
|
|
105
112
|
/**
|
|
106
113
|
* Returns true if the time given can be considered as part of any of the given
|
|
107
114
|
* ranges.
|
|
@@ -110,23 +117,24 @@ function isBefore(range1, range2) {
|
|
|
110
117
|
* @returns {boolean}
|
|
111
118
|
*/
|
|
112
119
|
function isTimeInRanges(ranges, time) {
|
|
113
|
-
for (
|
|
120
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
114
121
|
if (isTimeInRange(ranges[i], time)) {
|
|
115
122
|
return true;
|
|
116
123
|
}
|
|
117
124
|
}
|
|
118
125
|
return false;
|
|
119
126
|
}
|
|
127
|
+
exports.isTimeInRanges = isTimeInRanges;
|
|
120
128
|
/**
|
|
121
129
|
* Returns true if the time given can be considered as part of the given range.
|
|
122
130
|
* @param {Object} range1
|
|
123
131
|
* @param {Number} Time
|
|
124
132
|
* @returns {Boolean}
|
|
125
133
|
*/
|
|
126
|
-
function isTimeInRange(
|
|
127
|
-
var start = _a.start, end = _a.end;
|
|
134
|
+
function isTimeInRange({ start, end }, time) {
|
|
128
135
|
return start <= time && time < end;
|
|
129
136
|
}
|
|
137
|
+
exports.isTimeInRange = isTimeInRange;
|
|
130
138
|
/**
|
|
131
139
|
* Returns true if the two ranges given are overlapping.
|
|
132
140
|
* @param {Object} range1
|
|
@@ -154,40 +162,42 @@ function areRangesNearlyContiguous(range1, range2) {
|
|
|
154
162
|
* @returns {Array.<Object>}
|
|
155
163
|
*/
|
|
156
164
|
function convertToRanges(timeRanges) {
|
|
157
|
-
|
|
158
|
-
for (
|
|
165
|
+
const ranges = [];
|
|
166
|
+
for (let i = 0; i < timeRanges.length; i++) {
|
|
159
167
|
ranges.push({ start: timeRanges.start(i),
|
|
160
168
|
end: timeRanges.end(i) });
|
|
161
169
|
}
|
|
162
170
|
return ranges;
|
|
163
171
|
}
|
|
172
|
+
exports.convertToRanges = convertToRanges;
|
|
164
173
|
/**
|
|
165
174
|
* Get range object of a specific time in a TimeRanges object.
|
|
166
175
|
* @param {TimeRanges} timeRanges
|
|
167
176
|
* @returns {Object}
|
|
168
177
|
*/
|
|
169
178
|
function getBufferedTimeRange(timeRanges, time) {
|
|
170
|
-
for (
|
|
171
|
-
|
|
179
|
+
for (let i = timeRanges.length - 1; i >= 0; i--) {
|
|
180
|
+
const start = timeRanges.start(i);
|
|
172
181
|
if (time >= start) {
|
|
173
|
-
|
|
182
|
+
const end = timeRanges.end(i);
|
|
174
183
|
if (time < end) {
|
|
175
|
-
return { start
|
|
184
|
+
return { start, end };
|
|
176
185
|
}
|
|
177
186
|
}
|
|
178
187
|
}
|
|
179
188
|
return null;
|
|
180
189
|
}
|
|
190
|
+
exports.getBufferedTimeRange = getBufferedTimeRange;
|
|
181
191
|
/**
|
|
182
192
|
* Get range object of a specific time in a `IRange` object.
|
|
183
193
|
* @param {Array.<Object>} ranges
|
|
184
194
|
* @returns {Object}
|
|
185
195
|
*/
|
|
186
196
|
function getRange(ranges, time) {
|
|
187
|
-
for (
|
|
188
|
-
|
|
197
|
+
for (let i = ranges.length - 1; i >= 0; i--) {
|
|
198
|
+
const start = ranges[i].start;
|
|
189
199
|
if (time >= start) {
|
|
190
|
-
|
|
200
|
+
const end = ranges[i].end;
|
|
191
201
|
if (time < end) {
|
|
192
202
|
return ranges[i];
|
|
193
203
|
}
|
|
@@ -195,6 +205,7 @@ function getRange(ranges, time) {
|
|
|
195
205
|
}
|
|
196
206
|
return null;
|
|
197
207
|
}
|
|
208
|
+
exports.getRange = getRange;
|
|
198
209
|
/**
|
|
199
210
|
* Get gap from a specific time until the start of the next Range.
|
|
200
211
|
* @param {TimeRanges} timeRanges
|
|
@@ -202,15 +213,16 @@ function getRange(ranges, time) {
|
|
|
202
213
|
* @returns {Number}
|
|
203
214
|
*/
|
|
204
215
|
function getNextBufferedTimeRangeGap(timeRanges, time) {
|
|
205
|
-
|
|
206
|
-
for (
|
|
207
|
-
|
|
216
|
+
const len = timeRanges.length;
|
|
217
|
+
for (let i = 0; i < len; i++) {
|
|
218
|
+
const start = timeRanges.start(i);
|
|
208
219
|
if (time < start) {
|
|
209
220
|
return start - time;
|
|
210
221
|
}
|
|
211
222
|
}
|
|
212
223
|
return Infinity;
|
|
213
224
|
}
|
|
225
|
+
exports.getNextBufferedTimeRangeGap = getNextBufferedTimeRangeGap;
|
|
214
226
|
/**
|
|
215
227
|
* @param {TimeRanges} timeRanges
|
|
216
228
|
* @param {Number} time
|
|
@@ -220,20 +232,21 @@ function getNextBufferedTimeRangeGap(timeRanges, time) {
|
|
|
220
232
|
* - innerRange {Object|null}: the range which contain the given time.
|
|
221
233
|
*/
|
|
222
234
|
function getInnerAndOuterRangesFromBufferedTimeRanges(timeRanges, time) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
for (
|
|
226
|
-
|
|
227
|
-
|
|
235
|
+
let innerRange = null;
|
|
236
|
+
const outerRanges = [];
|
|
237
|
+
for (let i = 0; i < timeRanges.length; i++) {
|
|
238
|
+
const start = timeRanges.start(i);
|
|
239
|
+
const end = timeRanges.end(i);
|
|
228
240
|
if (time < start || time >= end) {
|
|
229
|
-
outerRanges.push({ start
|
|
241
|
+
outerRanges.push({ start, end });
|
|
230
242
|
}
|
|
231
243
|
else {
|
|
232
|
-
innerRange = { start
|
|
244
|
+
innerRange = { start, end };
|
|
233
245
|
}
|
|
234
246
|
}
|
|
235
|
-
return { outerRanges
|
|
247
|
+
return { outerRanges, innerRange };
|
|
236
248
|
}
|
|
249
|
+
exports.getInnerAndOuterRangesFromBufferedTimeRanges = getInnerAndOuterRangesFromBufferedTimeRanges;
|
|
237
250
|
/**
|
|
238
251
|
* @param {Array.<Object>} ranges
|
|
239
252
|
* @param {Number} time
|
|
@@ -243,20 +256,21 @@ function getInnerAndOuterRangesFromBufferedTimeRanges(timeRanges, time) {
|
|
|
243
256
|
* - innerRange {Object|null}: the range which contain the given time.
|
|
244
257
|
*/
|
|
245
258
|
function getInnerAndOuterRanges(ranges, time) {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
for (
|
|
249
|
-
|
|
250
|
-
|
|
259
|
+
let innerRange = null;
|
|
260
|
+
const outerRanges = [];
|
|
261
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
262
|
+
const start = ranges[i].start;
|
|
263
|
+
const end = ranges[i].end;
|
|
251
264
|
if (time < start || time >= end) {
|
|
252
|
-
outerRanges.push({ start
|
|
265
|
+
outerRanges.push({ start, end });
|
|
253
266
|
}
|
|
254
267
|
else {
|
|
255
|
-
innerRange = { start
|
|
268
|
+
innerRange = { start, end };
|
|
256
269
|
}
|
|
257
270
|
}
|
|
258
|
-
return { outerRanges
|
|
271
|
+
return { outerRanges, innerRange };
|
|
259
272
|
}
|
|
273
|
+
exports.getInnerAndOuterRanges = getInnerAndOuterRanges;
|
|
260
274
|
/**
|
|
261
275
|
* Get "size" (difference between end and start) of the TimeRange containing the
|
|
262
276
|
* given time. 0 if the range is not found.
|
|
@@ -265,10 +279,11 @@ function getInnerAndOuterRanges(ranges, time) {
|
|
|
265
279
|
* @returns {Number}
|
|
266
280
|
*/
|
|
267
281
|
function getSizeOfBufferedTimeRange(timeRanges, currentTime) {
|
|
268
|
-
|
|
282
|
+
const range = getBufferedTimeRange(timeRanges, currentTime);
|
|
269
283
|
return range !== null ? range.end - range.start :
|
|
270
284
|
0;
|
|
271
285
|
}
|
|
286
|
+
exports.getSizeOfBufferedTimeRange = getSizeOfBufferedTimeRange;
|
|
272
287
|
/**
|
|
273
288
|
* Get "currently played" (difference between time given and start) of the
|
|
274
289
|
* range containing the given time. 0 if the range is not found.
|
|
@@ -277,10 +292,11 @@ function getSizeOfBufferedTimeRange(timeRanges, currentTime) {
|
|
|
277
292
|
* @returns {Number}
|
|
278
293
|
*/
|
|
279
294
|
function getPlayedSizeOfBufferedTimeRange(timeRanges, currentTime) {
|
|
280
|
-
|
|
295
|
+
const range = getBufferedTimeRange(timeRanges, currentTime);
|
|
281
296
|
return range !== null ? currentTime - range.start :
|
|
282
297
|
0;
|
|
283
298
|
}
|
|
299
|
+
exports.getPlayedSizeOfBufferedTimeRange = getPlayedSizeOfBufferedTimeRange;
|
|
284
300
|
/**
|
|
285
301
|
* Get "left to play" (difference between end and time given) of the range
|
|
286
302
|
* containing the given time. Infinity if the range is not found.
|
|
@@ -289,10 +305,11 @@ function getPlayedSizeOfBufferedTimeRange(timeRanges, currentTime) {
|
|
|
289
305
|
* @returns {Number}
|
|
290
306
|
*/
|
|
291
307
|
function getLeftSizeOfBufferedTimeRange(timeRanges, currentTime) {
|
|
292
|
-
|
|
308
|
+
const range = getBufferedTimeRange(timeRanges, currentTime);
|
|
293
309
|
return range !== null ? range.end - currentTime :
|
|
294
310
|
Infinity;
|
|
295
311
|
}
|
|
312
|
+
exports.getLeftSizeOfBufferedTimeRange = getLeftSizeOfBufferedTimeRange;
|
|
296
313
|
/**
|
|
297
314
|
* Get "size" (difference between end and start) of the range containing the
|
|
298
315
|
* given time. 0 if the range is not found.
|
|
@@ -301,10 +318,11 @@ function getLeftSizeOfBufferedTimeRange(timeRanges, currentTime) {
|
|
|
301
318
|
* @returns {Number}
|
|
302
319
|
*/
|
|
303
320
|
function getSizeOfRange(ranges, currentTime) {
|
|
304
|
-
|
|
321
|
+
const range = getRange(ranges, currentTime);
|
|
305
322
|
return range !== null ? range.end - range.start :
|
|
306
323
|
0;
|
|
307
324
|
}
|
|
325
|
+
exports.getSizeOfRange = getSizeOfRange;
|
|
308
326
|
/**
|
|
309
327
|
* Get "currently played" (difference between time given and start) of the
|
|
310
328
|
* range containing the given time. 0 if the range is not found.
|
|
@@ -313,10 +331,11 @@ function getSizeOfRange(ranges, currentTime) {
|
|
|
313
331
|
* @returns {Number}
|
|
314
332
|
*/
|
|
315
333
|
function getPlayedSizeOfRange(ranges, currentTime) {
|
|
316
|
-
|
|
334
|
+
const range = getRange(ranges, currentTime);
|
|
317
335
|
return range !== null ? currentTime - range.start :
|
|
318
336
|
0;
|
|
319
337
|
}
|
|
338
|
+
exports.getPlayedSizeOfRange = getPlayedSizeOfRange;
|
|
320
339
|
/**
|
|
321
340
|
* Get "left to play" (difference between end and time given) of the range
|
|
322
341
|
* containing the given time. Infinity if the range is not found.
|
|
@@ -325,10 +344,11 @@ function getPlayedSizeOfRange(ranges, currentTime) {
|
|
|
325
344
|
* @returns {Number}
|
|
326
345
|
*/
|
|
327
346
|
function getLeftSizeOfRange(ranges, currentTime) {
|
|
328
|
-
|
|
347
|
+
const range = getRange(ranges, currentTime);
|
|
329
348
|
return range !== null ? range.end - currentTime :
|
|
330
349
|
Infinity;
|
|
331
350
|
}
|
|
351
|
+
exports.getLeftSizeOfRange = getLeftSizeOfRange;
|
|
332
352
|
/**
|
|
333
353
|
* Insert a range object into an array of ranges objects, at the right place.
|
|
334
354
|
* /!\ Mutate the array of ranges.
|
|
@@ -340,7 +360,7 @@ function insertInto(ranges, rangeToAddArg) {
|
|
|
340
360
|
if (rangeToAddArg.start === rangeToAddArg.end) {
|
|
341
361
|
return ranges;
|
|
342
362
|
}
|
|
343
|
-
|
|
363
|
+
let rangeToAdd = rangeToAddArg;
|
|
344
364
|
// For each present range check if we need to:
|
|
345
365
|
// - In case we are overlapping or contiguous:
|
|
346
366
|
// - if added range has the same bitrate as the overlapped or
|
|
@@ -349,11 +369,11 @@ function insertInto(ranges, rangeToAddArg) {
|
|
|
349
369
|
// in place
|
|
350
370
|
// - Need to insert in place, we we are completely, not overlapping
|
|
351
371
|
// and not contiguous in between two ranges.
|
|
352
|
-
|
|
372
|
+
let index = 0;
|
|
353
373
|
for (; index < ranges.length; index++) {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
374
|
+
const range = ranges[index];
|
|
375
|
+
const overlapping = areRangesOverlapping(rangeToAdd, range);
|
|
376
|
+
const contiguous = areRangesNearlyContiguous(rangeToAdd, range);
|
|
357
377
|
// We assume ranges are ordered and two ranges can not be
|
|
358
378
|
// completely overlapping.
|
|
359
379
|
if (overlapping || contiguous) {
|
|
@@ -385,6 +405,7 @@ function insertInto(ranges, rangeToAddArg) {
|
|
|
385
405
|
ranges.splice(index, 0, rangeToAdd);
|
|
386
406
|
return mergeContiguousRanges(removeEmptyRanges(ranges));
|
|
387
407
|
}
|
|
408
|
+
exports.insertInto = insertInto;
|
|
388
409
|
/**
|
|
389
410
|
* Returns range, from a range objects array overlapping with a range given
|
|
390
411
|
* in argument. null if none is found.
|
|
@@ -393,8 +414,8 @@ function insertInto(ranges, rangeToAddArg) {
|
|
|
393
414
|
* @returns {Array.<Object>}
|
|
394
415
|
*/
|
|
395
416
|
function findOverlappingRanges(range, ranges) {
|
|
396
|
-
|
|
397
|
-
for (
|
|
417
|
+
const resultingRanges = [];
|
|
418
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
398
419
|
if (areRangesOverlapping(range, ranges[i])) {
|
|
399
420
|
resultingRanges.push(ranges[i]);
|
|
400
421
|
}
|
|
@@ -409,13 +430,13 @@ function findOverlappingRanges(range, ranges) {
|
|
|
409
430
|
* @returns {Array.<Range>}
|
|
410
431
|
*/
|
|
411
432
|
function keepRangeIntersection(ranges1, ranges2) {
|
|
412
|
-
|
|
413
|
-
for (
|
|
414
|
-
|
|
415
|
-
|
|
433
|
+
const result = [];
|
|
434
|
+
for (let i = 0; i < ranges1.length; i++) {
|
|
435
|
+
const range = ranges1[i];
|
|
436
|
+
const overlappingRanges = findOverlappingRanges(range, ranges2);
|
|
416
437
|
if (overlappingRanges.length > 0) {
|
|
417
|
-
for (
|
|
418
|
-
|
|
438
|
+
for (let j = 0; j < overlappingRanges.length; j++) {
|
|
439
|
+
const overlappingRange = overlappingRanges[j];
|
|
419
440
|
result.push({ start: Math.max(range.start, overlappingRange.start),
|
|
420
441
|
end: Math.min(range.end, overlappingRange.end) });
|
|
421
442
|
}
|
|
@@ -423,6 +444,7 @@ function keepRangeIntersection(ranges1, ranges2) {
|
|
|
423
444
|
}
|
|
424
445
|
return result;
|
|
425
446
|
}
|
|
447
|
+
exports.keepRangeIntersection = keepRangeIntersection;
|
|
426
448
|
/**
|
|
427
449
|
* Exclude from the `baseRanges` everything that is in `rangesToExclude`.
|
|
428
450
|
* Example:
|
|
@@ -450,16 +472,16 @@ function keepRangeIntersection(ranges1, ranges2) {
|
|
|
450
472
|
* @return {Array.<Object>}
|
|
451
473
|
*/
|
|
452
474
|
function excludeFromRanges(baseRanges, rangesToExclude) {
|
|
453
|
-
|
|
475
|
+
const result = [];
|
|
454
476
|
// For every range in `baseRanges`, find overlapping ranges with
|
|
455
477
|
// `rangesToExclude` and remove them.
|
|
456
|
-
for (
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
478
|
+
for (let i = 0; i < baseRanges.length; i++) {
|
|
479
|
+
const range = baseRanges[i];
|
|
480
|
+
const intersections = [];
|
|
481
|
+
const overlappingRanges = findOverlappingRanges(range, rangesToExclude);
|
|
460
482
|
if (overlappingRanges.length > 0) {
|
|
461
|
-
for (
|
|
462
|
-
|
|
483
|
+
for (let j = 0; j < overlappingRanges.length; j++) {
|
|
484
|
+
const overlappingRange = overlappingRanges[j];
|
|
463
485
|
intersections.push({ start: Math.max(range.start, overlappingRange.start),
|
|
464
486
|
end: Math.min(range.end, overlappingRange.end) });
|
|
465
487
|
}
|
|
@@ -468,8 +490,8 @@ function excludeFromRanges(baseRanges, rangesToExclude) {
|
|
|
468
490
|
result.push(range);
|
|
469
491
|
}
|
|
470
492
|
else {
|
|
471
|
-
|
|
472
|
-
for (
|
|
493
|
+
let lastStart = range.start;
|
|
494
|
+
for (let j = 0; j < intersections.length; j++) {
|
|
473
495
|
if (intersections[j].start > lastStart) {
|
|
474
496
|
result.push({ start: lastStart,
|
|
475
497
|
end: intersections[j].start });
|
|
@@ -484,6 +506,7 @@ function excludeFromRanges(baseRanges, rangesToExclude) {
|
|
|
484
506
|
}
|
|
485
507
|
return result;
|
|
486
508
|
}
|
|
509
|
+
exports.excludeFromRanges = excludeFromRanges;
|
|
487
510
|
/**
|
|
488
511
|
* Returns `true` if the given `time` is available in the TimeRanges object
|
|
489
512
|
* given.
|
|
@@ -493,11 +516,11 @@ function excludeFromRanges(baseRanges, rangesToExclude) {
|
|
|
493
516
|
* @returns {boolean}
|
|
494
517
|
*/
|
|
495
518
|
function isTimeInTimeRanges(ranges, time) {
|
|
496
|
-
for (
|
|
519
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
497
520
|
if (ranges.start(i) <= time && time < ranges.end(i)) {
|
|
498
521
|
return true;
|
|
499
522
|
}
|
|
500
523
|
}
|
|
501
524
|
return false;
|
|
502
525
|
}
|
|
503
|
-
|
|
526
|
+
exports.isTimeInTimeRanges = isTimeInTimeRanges;
|