rx-player 4.0.0-beta.2 → 4.0.0-beta.3
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/.eslintrc.js +9 -0
- package/CHANGELOG.md +173 -63
- package/CONTRIBUTING.md +27 -13
- package/FILES.md +0 -4
- package/README.md +0 -25
- 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.d.ts +0 -1
- package/dist/_esm5.processed/compat/browser_compatibility_types.js +16 -11
- package/dist/_esm5.processed/compat/browser_detection.js +49 -33
- 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.d.ts +2 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +81 -101
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +6 -27
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +16 -159
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.d.ts +1 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +31 -26
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +14 -14
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.d.ts +2 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +75 -89
- package/dist/_esm5.processed/compat/eme/custom_media_keys/types.d.ts +1 -1
- 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.d.ts +2 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +97 -119
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +14 -16
- package/dist/_esm5.processed/compat/eme/eme-api-implementation.d.ts +78 -0
- package/dist/_esm5.processed/compat/eme/eme-api-implementation.js +198 -0
- 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.d.ts +5 -3
- 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.d.ts +13 -5
- package/dist/_esm5.processed/compat/event_listeners.js +132 -108
- package/dist/_esm5.processed/compat/get_start_date.js +7 -4
- package/dist/_esm5.processed/compat/global_scope.d.ts +9 -0
- package/dist/_esm5.processed/compat/global_scope.js +15 -0
- package/dist/_esm5.processed/compat/has_issues_with_high_media_source_duration.js +6 -3
- package/dist/_esm5.processed/compat/index.d.ts +2 -3
- package/dist/_esm5.processed/compat/index.js +47 -25
- package/dist/_esm5.processed/compat/is_codec_supported.js +8 -5
- package/dist/_esm5.processed/compat/is_debug_mode_enabled.d.ts +7 -0
- package/dist/_esm5.processed/compat/is_debug_mode_enabled.js +12 -0
- package/dist/_esm5.processed/compat/is_node.d.ts +1 -0
- package/dist/_esm5.processed/compat/is_node.js +6 -2
- package/dist/_esm5.processed/compat/is_seeking_approximate.js +5 -3
- package/dist/_esm5.processed/compat/is_vtt_cue.js +6 -2
- package/dist/_esm5.processed/compat/is_worker.d.ts +5 -0
- package/dist/_esm5.processed/compat/is_worker.js +7 -0
- package/dist/_esm5.processed/compat/make_vtt_cue.js +10 -6
- package/dist/_esm5.processed/compat/on_height_width_change.js +25 -27
- package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +19 -16
- 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.d.ts +13 -0
- package/dist/_esm5.processed/compat/should_wait_for_have_enough_data.js +19 -0
- package/dist/_esm5.processed/config.js +15 -14
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +136 -104
- package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.d.ts +19 -3
- package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.js +66 -46
- package/dist/_esm5.processed/core/adaptive/guess_based_chooser.js +37 -43
- package/dist/_esm5.processed/core/adaptive/index.js +4 -2
- package/dist/_esm5.processed/core/adaptive/network_analyzer.js +75 -73
- 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.d.ts +13 -3
- 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 -29
- 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.d.ts +1 -1
- package/dist/_esm5.processed/core/api/option_utils.js +86 -59
- package/dist/_esm5.processed/core/api/playback_observer.d.ts +8 -2
- package/dist/_esm5.processed/core/api/playback_observer.js +135 -123
- package/dist/_esm5.processed/core/api/public_api.d.ts +6 -0
- package/dist/_esm5.processed/core/api/public_api.js +614 -676
- 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 -248
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +2 -2
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +47 -58
- package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +50 -29
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +325 -351
- package/dist/_esm5.processed/core/api/utils.js +32 -24
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.d.ts +3 -3
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +167 -190
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.d.ts +8 -2
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +44 -72
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +15 -12
- package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +9 -67
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +400 -542
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +44 -90
- package/dist/_esm5.processed/core/decrypt/create_session.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/create_session.js +90 -149
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +24 -60
- package/dist/_esm5.processed/core/decrypt/find_key_system.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +104 -162
- package/dist/_esm5.processed/core/decrypt/get_key_system_configuration.js +6 -3
- package/dist/_esm5.processed/core/decrypt/get_media_keys.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +59 -109
- package/dist/_esm5.processed/core/decrypt/index.d.ts +2 -2
- 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.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +84 -155
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +50 -103
- package/dist/_esm5.processed/core/decrypt/types.d.ts +61 -0
- package/dist/_esm5.processed/core/decrypt/types.js +43 -1
- package/dist/_esm5.processed/core/decrypt/utils/are_init_values_compatible.js +22 -19
- package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.d.ts +1 -1
- 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.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/is_session_usable.js +15 -12
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +0 -13
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +14 -38
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +26 -26
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +206 -310
- package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.d.ts +2 -1
- package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.js +8 -6
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +103 -103
- package/dist/_esm5.processed/core/decrypt/utils/serializable_bytes.js +13 -12
- package/dist/_esm5.processed/core/decrypt/utils/server_certificate_store.d.ts +1 -1
- 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 -312
- 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 -233
- 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 -260
- package/dist/_esm5.processed/core/init/directfile_content_initializer.d.ts +60 -1
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +122 -105
- package/dist/_esm5.processed/core/init/index.d.ts +1 -4
- package/dist/_esm5.processed/core/init/index.js +5 -3
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +269 -307
- package/dist/_esm5.processed/core/init/types.d.ts +3 -17
- 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 -27
- package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.d.ts +9 -4
- package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.js +22 -14
- package/dist/_esm5.processed/core/init/utils/end_of_stream.js +30 -25
- package/dist/_esm5.processed/core/init/utils/get_initial_time.js +41 -37
- package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +15 -10
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +31 -28
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.d.ts +3 -3
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +48 -53
- package/dist/_esm5.processed/core/init/utils/media_source_duration_updater.js +61 -58
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +3 -3
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +141 -160
- 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 -14
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.d.ts +31 -9
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +103 -79
- 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 +131 -140
- 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.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +109 -128
- 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.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +25 -22
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +8 -3
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +152 -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.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +130 -171
- 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.d.ts +14 -8
- package/dist/_esm5.processed/core/stream/adaptation/types.js +2 -1
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/index.js +4 -2
- package/dist/_esm5.processed/core/stream/orchestrator/get_time_ranges_for_content.js +14 -21
- package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/index.js +4 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +15 -29
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +193 -235
- package/dist/_esm5.processed/core/stream/period/index.js +19 -3
- package/dist/_esm5.processed/core/stream/period/period_stream.js +204 -228
- package/dist/_esm5.processed/core/stream/period/types.d.ts +3 -3
- package/dist/_esm5.processed/core/stream/period/types.js +2 -1
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +18 -4
- 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.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +81 -68
- package/dist/_esm5.processed/core/stream/representation/types.d.ts +3 -4
- 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.d.ts +1 -1
- 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 -47
- 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.d.ts +2 -2
- 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.d.ts +1 -1
- 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.d.ts +1 -2
- package/dist/_esm5.processed/errors/error_message.js +5 -3
- 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.d.ts +2 -2
- package/dist/_esm5.processed/errors/media_error.js +34 -47
- 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 +27 -29
- package/dist/_esm5.processed/experimental/features/dash_wasm.js +15 -9
- package/dist/_esm5.processed/experimental/features/debug_element.js +7 -4
- package/dist/_esm5.processed/experimental/features/index.d.ts +0 -1
- package/dist/_esm5.processed/experimental/features/index.js +9 -4
- package/dist/_esm5.processed/experimental/features/local.js +10 -4
- package/dist/_esm5.processed/experimental/features/metaplaylist.js +10 -4
- 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.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +39 -44
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +34 -36
- 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.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +21 -17
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +21 -17
- 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 -15
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +11 -7
- 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 +6 -3
- package/dist/_esm5.processed/features/index.js +7 -4
- package/dist/_esm5.processed/features/list/dash.js +12 -6
- 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 -4
- package/dist/_esm5.processed/features/list/html_srt_parser.js +9 -4
- package/dist/_esm5.processed/features/list/html_text_buffer.js +7 -4
- package/dist/_esm5.processed/features/list/html_ttml_parser.js +9 -4
- package/dist/_esm5.processed/features/list/html_vtt_parser.js +9 -4
- package/dist/_esm5.processed/features/list/index.js +31 -14
- package/dist/_esm5.processed/features/list/native_sami_parser.js +10 -4
- package/dist/_esm5.processed/features/list/native_srt_parser.js +10 -4
- package/dist/_esm5.processed/features/list/native_text_buffer.js +8 -4
- package/dist/_esm5.processed/features/list/native_ttml_parser.js +10 -4
- package/dist/_esm5.processed/features/list/native_vtt_parser.js +10 -4
- package/dist/_esm5.processed/features/list/smooth.js +10 -4
- package/dist/_esm5.processed/features/types.d.ts +84 -7
- package/dist/_esm5.processed/features/types.js +2 -1
- package/dist/_esm5.processed/index.d.ts +0 -4
- package/dist/_esm5.processed/index.js +24 -8
- 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.d.ts +4 -7
- package/dist/_esm5.processed/manifest/manifest.js +117 -135
- package/dist/_esm5.processed/manifest/period.d.ts +2 -7
- package/dist/_esm5.processed/manifest/period.js +39 -46
- package/dist/_esm5.processed/manifest/representation.d.ts +12 -0
- package/dist/_esm5.processed/manifest/representation.js +81 -63
- 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.d.ts +1 -17
- package/dist/_esm5.processed/minimal.js +9 -39
- 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.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_clock_offset.js +11 -7
- 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.d.ts +5 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +131 -128
- 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.d.ts +8 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.js +22 -19
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +111 -108
- 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.d.ts +6 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +86 -84
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +4 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +101 -84
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +2 -2
- 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 +64 -65
- 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 +50 -38
- 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.d.ts +1 -0
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +4 -4
- 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 -237
- 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 +50 -35
- 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 +31 -26
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +71 -84
- package/dist/_esm5.processed/parsers/manifest/local/types.d.ts +2 -0
- 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 +76 -71
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +52 -52
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +200 -175
- 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.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +102 -97
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +49 -47
- 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.d.ts +6 -4
- 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.d.ts +6 -8
- 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 -59
- 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 -22
- 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 +92 -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 +107 -96
- 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.d.ts +17 -8
- 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 -17
- 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.d.ts +0 -3
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +13 -13
- 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 +8 -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 +15 -10
- 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.d.ts +2 -5
- 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.d.ts +9 -0
- package/dist/_esm5.processed/utils/monotonic_timestamp.js +15 -0
- 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.d.ts +50 -8
- package/dist/_esm5.processed/utils/ranges.js +163 -64
- package/dist/_esm5.processed/utils/reference.d.ts +78 -37
- package/dist/_esm5.processed/utils/reference.js +235 -155
- package/dist/_esm5.processed/utils/request/fetch.d.ts +4 -4
- package/dist/_esm5.processed/utils/request/fetch.js +79 -107
- package/dist/_esm5.processed/utils/request/index.js +9 -4
- package/dist/_esm5.processed/utils/request/xhr.js +49 -36
- 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 -72
- 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.d.ts +7 -0
- package/dist/_esm5.processed/utils/wrapInPromise.js +25 -0
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +42885 -44008
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +1 -22
- package/package.json +56 -57
- 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/list-npm-scripts.js +146 -38
- package/scripts/update-version +1 -4
- package/sonar-project.properties +1 -1
- package/src/compat/__tests__/browser_compatibility_types.test.ts +51 -72
- package/src/compat/__tests__/is_vtt_cue.test.ts +20 -16
- package/src/compat/__tests__/make_vtt_cue.test.ts +11 -9
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +26 -25
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +11 -9
- package/src/compat/__tests__/should_wait_for_have_enough_data.test.ts +36 -0
- package/src/compat/browser_compatibility_types.ts +9 -16
- package/src/compat/browser_detection.ts +11 -8
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +11 -8
- package/src/compat/eme/custom_media_keys/index.ts +8 -184
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +26 -22
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +13 -15
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +11 -8
- package/src/compat/eme/custom_media_keys/types.ts +1 -1
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +15 -11
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +14 -16
- package/src/compat/eme/eme-api-implementation.ts +319 -0
- package/src/compat/eme/index.ts +8 -6
- package/src/compat/event_listeners.ts +32 -39
- package/src/compat/global_scope.ts +18 -0
- package/src/compat/index.ts +2 -24
- package/src/compat/is_debug_mode_enabled.ts +12 -0
- package/src/compat/is_node.ts +4 -1
- package/src/compat/is_vtt_cue.ts +2 -1
- package/src/compat/is_worker.ts +9 -0
- package/src/compat/make_vtt_cue.ts +3 -2
- package/src/compat/on_height_width_change.ts +4 -9
- package/src/compat/patch_webkit_source_buffer.ts +4 -3
- package/src/compat/should_wait_for_have_enough_data.ts +17 -0
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +245 -102
- package/src/core/adaptive/adaptive_representation_selector.ts +52 -35
- package/src/core/adaptive/buffer_based_chooser.ts +41 -13
- package/src/core/adaptive/guess_based_chooser.ts +4 -3
- package/src/core/adaptive/network_analyzer.ts +8 -6
- package/src/core/adaptive/utils/pending_requests_store.ts +15 -5
- package/src/core/api/debug/buffer_size_graph.ts +3 -1
- package/src/core/api/option_utils.ts +2 -2
- package/src/core/api/playback_observer.ts +16 -9
- package/src/core/api/public_api.ts +47 -31
- package/src/core/api/track_management/track_dispatcher.ts +9 -6
- package/src/core/api/track_management/tracks_store.ts +112 -90
- package/src/core/api/utils.ts +3 -3
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +3 -3
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +24 -14
- package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +74 -48
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +21 -15
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +16 -13
- package/src/core/decrypt/__tests__/__global__/utils.ts +39 -24
- package/src/core/decrypt/attach_media_keys.ts +33 -8
- package/src/core/decrypt/clear_on_stop.ts +1 -1
- package/src/core/decrypt/content_decryptor.ts +213 -262
- package/src/core/decrypt/create_or_load_session.ts +1 -1
- package/src/core/decrypt/create_session.ts +1 -1
- package/src/core/decrypt/dispose_decryption_resources.ts +19 -4
- package/src/core/decrypt/find_key_system.ts +24 -19
- package/src/core/decrypt/get_media_keys.ts +2 -2
- package/src/core/decrypt/index.ts +1 -6
- package/src/core/decrypt/session_events_listener.ts +3 -4
- package/src/core/decrypt/set_server_certificate.ts +1 -1
- package/src/core/decrypt/types.ts +69 -0
- package/src/core/decrypt/utils/check_key_statuses.ts +1 -1
- package/src/core/decrypt/utils/is_session_usable.ts +1 -1
- package/src/core/decrypt/utils/key_id_comparison.ts +2 -27
- package/src/core/decrypt/utils/key_session_record.ts +3 -5
- package/src/core/decrypt/utils/loaded_sessions_store.ts +2 -2
- package/src/core/decrypt/utils/media_keys_infos_store.ts +4 -1
- package/src/core/decrypt/utils/persistent_sessions_store.ts +2 -5
- package/src/core/decrypt/utils/server_certificate_store.ts +1 -1
- package/src/core/fetchers/cdn_prioritizer.ts +1 -1
- package/src/core/fetchers/manifest/manifest_fetcher.ts +22 -18
- package/src/core/fetchers/segment/segment_fetcher.ts +3 -2
- package/src/core/fetchers/utils/schedule_request.ts +6 -5
- package/src/core/init/directfile_content_initializer.ts +85 -21
- package/src/core/init/index.ts +6 -7
- package/src/core/init/media_source_content_initializer.ts +56 -26
- package/src/core/init/types.ts +2 -16
- package/src/core/init/utils/__tests__/refresh_scheduled_events_list.test.ts +22 -8
- package/src/core/init/utils/create_media_source.ts +4 -1
- package/src/core/init/utils/create_stream_playback_observer.ts +24 -14
- package/src/core/init/utils/end_of_stream.ts +1 -0
- package/src/core/init/utils/get_initial_time.ts +3 -1
- package/src/core/init/utils/get_loaded_reference.ts +6 -3
- package/src/core/init/utils/initial_seek_and_play.ts +7 -7
- package/src/core/init/utils/initialize_content_decryption.ts +32 -39
- package/src/core/init/utils/media_source_duration_updater.ts +13 -9
- package/src/core/init/utils/rebuffering_controller.ts +13 -10
- package/src/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.ts +7 -4
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +113 -73
- package/src/core/segment_buffers/garbage_collector.ts +3 -3
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -2
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +17 -17
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +1 -1
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +2 -2
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
- package/src/core/segment_buffers/inventory/buffered_history.ts +4 -3
- package/src/core/segment_buffers/inventory/segment_inventory.ts +1 -0
- package/src/core/stream/adaptation/adaptation_stream.ts +43 -28
- package/src/core/stream/adaptation/types.ts +15 -9
- package/src/core/stream/index.ts +2 -0
- package/src/core/stream/orchestrator/get_time_ranges_for_content.ts +1 -6
- package/src/core/stream/orchestrator/index.ts +2 -0
- package/src/core/stream/orchestrator/stream_orchestrator.ts +38 -42
- package/src/core/stream/period/period_stream.ts +62 -23
- package/src/core/stream/period/types.ts +5 -3
- package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +10 -0
- package/src/core/stream/representation/representation_stream.ts +6 -3
- package/src/core/stream/representation/types.ts +5 -5
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +2 -2
- package/src/core/stream/representation/utils/downloading_queue.ts +4 -5
- package/src/core/stream/representation/utils/force_garbage_collection.ts +3 -3
- package/src/core/stream/representation/utils/get_buffer_status.ts +2 -1
- package/src/core/stream/representation/utils/push_init_segment.ts +2 -3
- package/src/core/stream/representation/utils/push_media_segment.ts +2 -2
- package/src/errors/__tests__/encrypted_media_error.test.ts +2 -2
- package/src/errors/__tests__/error_message.test.ts +1 -1
- package/src/errors/__tests__/format_error.test.ts +2 -2
- package/src/errors/__tests__/media_error.test.ts +3 -3
- package/src/errors/__tests__/network_error.test.ts +10 -9
- package/src/errors/__tests__/other_error.test.ts +3 -3
- package/src/errors/__tests__/request_error.test.ts +4 -4
- package/src/errors/custom_loader_error.ts +0 -1
- package/src/errors/encrypted_media_error.ts +4 -2
- package/src/errors/error_message.ts +2 -7
- package/src/errors/media_error.ts +26 -20
- package/src/errors/network_error.ts +1 -1
- package/src/errors/other_error.ts +1 -1
- package/src/errors/request_error.ts +16 -1
- package/src/experimental/features/__tests__/dash_wasm.test.ts +4 -12
- package/src/experimental/features/__tests__/debug_element.test.ts +7 -21
- package/src/experimental/features/__tests__/local.test.ts +14 -23
- package/src/experimental/features/__tests__/metaplaylist.test.ts +14 -21
- package/src/experimental/features/dash_wasm.ts +3 -0
- package/src/experimental/features/index.ts +0 -1
- package/src/experimental/features/local.ts +3 -0
- package/src/experimental/features/metaplaylist.ts +3 -0
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +10 -9
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +26 -18
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +24 -23
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +2 -4
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +7 -4
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +5 -4
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +4 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +4 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +3 -2
- package/src/features/features_object.ts +2 -1
- package/src/features/list/__tests__/dash.test.ts +15 -15
- package/src/features/list/__tests__/directfile.test.ts +4 -13
- package/src/features/list/__tests__/eme.test.ts +4 -12
- package/src/features/list/__tests__/html_sami_parser.test.ts +9 -14
- package/src/features/list/__tests__/html_srt_parser.test.ts +5 -10
- package/src/features/list/__tests__/html_text_buffer.test.ts +10 -19
- package/src/features/list/__tests__/html_ttml_parser.test.ts +5 -10
- package/src/features/list/__tests__/html_vtt_parser.test.ts +5 -10
- package/src/features/list/__tests__/native_sami_parser.test.ts +9 -14
- package/src/features/list/__tests__/native_srt_parser.test.ts +5 -10
- package/src/features/list/__tests__/native_text_buffer.test.ts +5 -13
- package/src/features/list/__tests__/native_ttml_parser.test.ts +5 -10
- package/src/features/list/__tests__/native_vtt_parser.test.ts +5 -10
- package/src/features/list/__tests__/smooth.test.ts +10 -10
- package/src/features/list/dash.ts +3 -0
- package/src/features/list/eme.ts +1 -1
- package/src/features/list/html_sami_parser.ts +2 -0
- package/src/features/list/html_srt_parser.ts +2 -0
- package/src/features/list/html_text_buffer.ts +2 -2
- package/src/features/list/html_ttml_parser.ts +2 -0
- package/src/features/list/html_vtt_parser.ts +2 -0
- package/src/features/list/native_sami_parser.ts +3 -0
- package/src/features/list/native_srt_parser.ts +3 -0
- package/src/features/list/native_text_buffer.ts +3 -2
- package/src/features/list/native_ttml_parser.ts +3 -0
- package/src/features/list/native_vtt_parser.ts +3 -0
- package/src/features/list/smooth.ts +3 -0
- package/src/features/types.ts +89 -18
- package/src/index.ts +31 -5
- package/src/manifest/__tests__/manifest.test.ts +134 -75
- package/src/manifest/__tests__/period.test.ts +82 -55
- package/src/manifest/__tests__/update_periods.test.ts +4 -4
- package/src/manifest/manifest.ts +30 -20
- package/src/manifest/period.ts +3 -14
- package/src/manifest/representation.ts +21 -3
- package/src/minimal.ts +4 -18
- package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +2 -1
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +5 -4
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +7 -4
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +11 -5
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +1 -0
- package/src/parsers/manifest/dash/common/parse_mpd.ts +9 -5
- package/src/parsers/manifest/dash/common/parse_periods.ts +12 -6
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +2 -2
- package/src/parsers/manifest/dash/common/parse_representations.ts +10 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +7 -0
- package/src/parsers/manifest/dash/node_parser_types.ts +1 -0
- package/src/parsers/manifest/dash/parsers_types.ts +4 -4
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +2 -2
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +1 -1
- package/src/parsers/manifest/dash/wasm-parser/rs/errors.rs +3 -3
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +37 -67
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +7 -7
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +94 -105
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +119 -109
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/s_element.rs +24 -26
- package/src/parsers/manifest/dash/wasm-parser/rs/reader.rs +2 -2
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +42 -18
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +29 -29
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +2 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +1 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +12 -0
- package/src/parsers/manifest/local/parse_local_manifest.ts +3 -1
- package/src/parsers/manifest/local/types.ts +2 -0
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +3 -1
- package/src/parsers/manifest/smooth/create_parser.ts +4 -3
- package/src/parsers/manifest/smooth/representation_index.ts +6 -5
- package/src/parsers/manifest/smooth/shared_smooth_segment_timeline.ts +6 -5
- package/src/parsers/manifest/types.ts +6 -4
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +1 -2
- package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.test.ts +2 -1
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +9 -7
- package/src/public_types.ts +11 -9
- package/src/transports/dash/manifest_parser.ts +8 -5
- package/src/transports/local/pipelines.ts +4 -3
- package/src/transports/metaplaylist/pipelines.ts +5 -3
- package/src/transports/smooth/pipelines.ts +4 -2
- package/src/transports/smooth/segment_loader.ts +1 -1
- package/src/transports/types.ts +17 -7
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +8 -8
- package/src/transports/utils/call_custom_manifest_loader.ts +2 -1
- package/src/transports/utils/get_isobmff_timing_infos.ts +0 -3
- package/src/typings/globals.d.ts +0 -44
- package/src/utils/__tests__/base64.test.ts +4 -2
- package/src/utils/__tests__/id_generator.test.ts +7 -4
- package/src/utils/__tests__/ranges.test.ts +354 -47
- package/src/utils/are_arrays_of_numbers_equal.ts +5 -1
- package/src/utils/assert.ts +4 -1
- package/src/utils/deep_merge.ts +2 -2
- package/src/utils/monotonic_timestamp.ts +12 -0
- package/src/utils/ranges.ts +110 -14
- package/src/utils/reference.ts +235 -237
- package/src/utils/request/fetch.ts +11 -9
- package/src/utils/request/xhr.ts +6 -5
- package/src/utils/string_parsing.ts +5 -4
- package/src/utils/wrapInPromise.ts +24 -0
- package/tsconfig.json +1 -1
- package/tsconfig.modules.json +3 -3
- package/appveyor.yml +0 -24
- package/dist/_esm5.processed/compat/has_eme_apis.d.ts +0 -21
- package/dist/_esm5.processed/compat/has_eme_apis.js +0 -24
- package/dist/_esm5.processed/core/stream/adaptation/utils/create_representation_estimator.d.ts +0 -47
- package/dist/_esm5.processed/core/stream/adaptation/utils/create_representation_estimator.js +0 -70
- package/dist/_esm5.processed/core/stream/utils/create_reload_request.d.ts +0 -32
- package/dist/_esm5.processed/core/stream/utils/create_reload_request.js +0 -54
- package/dist/_esm5.processed/features/initialize_features.d.ts +0 -19
- package/dist/_esm5.processed/features/initialize_features.js +0 -100
- package/dist/rx-player.d.ts +0 -3
- package/dist/rx-player.min.d.ts +0 -3
- package/src/compat/__tests__/has_eme_apis.test.ts +0 -56
- package/src/compat/has_eme_apis.ts +0 -26
- package/src/core/stream/adaptation/utils/create_representation_estimator.ts +0 -114
- package/src/core/stream/utils/create_reload_request.ts +0 -69
- package/src/features/__tests__/initialize_features.test.ts +0 -477
- package/src/features/initialize_features.ts +0 -120
|
@@ -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,46 +162,67 @@ 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
|
-
function
|
|
170
|
-
for (
|
|
171
|
-
|
|
178
|
+
function getBufferedTimeRange(timeRanges, time) {
|
|
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;
|
|
191
|
+
/**
|
|
192
|
+
* Get range object of a specific time in a `IRange` object.
|
|
193
|
+
* @param {Array.<Object>} ranges
|
|
194
|
+
* @returns {Object}
|
|
195
|
+
*/
|
|
196
|
+
function getRange(ranges, time) {
|
|
197
|
+
for (let i = ranges.length - 1; i >= 0; i--) {
|
|
198
|
+
const start = ranges[i].start;
|
|
199
|
+
if (time >= start) {
|
|
200
|
+
const end = ranges[i].end;
|
|
201
|
+
if (time < end) {
|
|
202
|
+
return ranges[i];
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
exports.getRange = getRange;
|
|
181
209
|
/**
|
|
182
210
|
* Get gap from a specific time until the start of the next Range.
|
|
183
211
|
* @param {TimeRanges} timeRanges
|
|
184
212
|
* @param {Number} time
|
|
185
213
|
* @returns {Number}
|
|
186
214
|
*/
|
|
187
|
-
function
|
|
188
|
-
|
|
189
|
-
for (
|
|
190
|
-
|
|
215
|
+
function getNextBufferedTimeRangeGap(timeRanges, time) {
|
|
216
|
+
const len = timeRanges.length;
|
|
217
|
+
for (let i = 0; i < len; i++) {
|
|
218
|
+
const start = timeRanges.start(i);
|
|
191
219
|
if (time < start) {
|
|
192
220
|
return start - time;
|
|
193
221
|
}
|
|
194
222
|
}
|
|
195
223
|
return Infinity;
|
|
196
224
|
}
|
|
225
|
+
exports.getNextBufferedTimeRangeGap = getNextBufferedTimeRangeGap;
|
|
197
226
|
/**
|
|
198
227
|
* @param {TimeRanges} timeRanges
|
|
199
228
|
* @param {Number} time
|
|
@@ -202,33 +231,59 @@ function getNextRangeGap(timeRanges, time) {
|
|
|
202
231
|
* given time.
|
|
203
232
|
* - innerRange {Object|null}: the range which contain the given time.
|
|
204
233
|
*/
|
|
205
|
-
function
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
for (
|
|
209
|
-
|
|
210
|
-
|
|
234
|
+
function getInnerAndOuterRangesFromBufferedTimeRanges(timeRanges, time) {
|
|
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);
|
|
211
240
|
if (time < start || time >= end) {
|
|
212
|
-
outerRanges.push({ start
|
|
241
|
+
outerRanges.push({ start, end });
|
|
213
242
|
}
|
|
214
243
|
else {
|
|
215
|
-
innerRange = { start
|
|
244
|
+
innerRange = { start, end };
|
|
216
245
|
}
|
|
217
246
|
}
|
|
218
|
-
return { outerRanges
|
|
247
|
+
return { outerRanges, innerRange };
|
|
219
248
|
}
|
|
249
|
+
exports.getInnerAndOuterRangesFromBufferedTimeRanges = getInnerAndOuterRangesFromBufferedTimeRanges;
|
|
220
250
|
/**
|
|
221
|
-
*
|
|
251
|
+
* @param {Array.<Object>} ranges
|
|
252
|
+
* @param {Number} time
|
|
253
|
+
* @returns {Object} - Object with two properties:
|
|
254
|
+
* - outerRanges {Array.<Object>}: every ranges which does not contain the
|
|
255
|
+
* given time.
|
|
256
|
+
* - innerRange {Object|null}: the range which contain the given time.
|
|
257
|
+
*/
|
|
258
|
+
function getInnerAndOuterRanges(ranges, time) {
|
|
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;
|
|
264
|
+
if (time < start || time >= end) {
|
|
265
|
+
outerRanges.push({ start, end });
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
innerRange = { start, end };
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return { outerRanges, innerRange };
|
|
272
|
+
}
|
|
273
|
+
exports.getInnerAndOuterRanges = getInnerAndOuterRanges;
|
|
274
|
+
/**
|
|
275
|
+
* Get "size" (difference between end and start) of the TimeRange containing the
|
|
222
276
|
* given time. 0 if the range is not found.
|
|
223
277
|
* @param {TimeRanges} timeRanges
|
|
224
278
|
* @param {Number} currentTime
|
|
225
279
|
* @returns {Number}
|
|
226
280
|
*/
|
|
227
|
-
function
|
|
228
|
-
|
|
281
|
+
function getSizeOfBufferedTimeRange(timeRanges, currentTime) {
|
|
282
|
+
const range = getBufferedTimeRange(timeRanges, currentTime);
|
|
229
283
|
return range !== null ? range.end - range.start :
|
|
230
284
|
0;
|
|
231
285
|
}
|
|
286
|
+
exports.getSizeOfBufferedTimeRange = getSizeOfBufferedTimeRange;
|
|
232
287
|
/**
|
|
233
288
|
* Get "currently played" (difference between time given and start) of the
|
|
234
289
|
* range containing the given time. 0 if the range is not found.
|
|
@@ -236,11 +291,12 @@ function getSizeOfRange(timeRanges, currentTime) {
|
|
|
236
291
|
* @param {Number} currentTime
|
|
237
292
|
* @returns {Number}
|
|
238
293
|
*/
|
|
239
|
-
function
|
|
240
|
-
|
|
294
|
+
function getPlayedSizeOfBufferedTimeRange(timeRanges, currentTime) {
|
|
295
|
+
const range = getBufferedTimeRange(timeRanges, currentTime);
|
|
241
296
|
return range !== null ? currentTime - range.start :
|
|
242
297
|
0;
|
|
243
298
|
}
|
|
299
|
+
exports.getPlayedSizeOfBufferedTimeRange = getPlayedSizeOfBufferedTimeRange;
|
|
244
300
|
/**
|
|
245
301
|
* Get "left to play" (difference between end and time given) of the range
|
|
246
302
|
* containing the given time. Infinity if the range is not found.
|
|
@@ -248,11 +304,51 @@ function getPlayedSizeOfRange(timeRanges, currentTime) {
|
|
|
248
304
|
* @param {Number} currentTime
|
|
249
305
|
* @returns {Number}
|
|
250
306
|
*/
|
|
251
|
-
function
|
|
252
|
-
|
|
307
|
+
function getLeftSizeOfBufferedTimeRange(timeRanges, currentTime) {
|
|
308
|
+
const range = getBufferedTimeRange(timeRanges, currentTime);
|
|
309
|
+
return range !== null ? range.end - currentTime :
|
|
310
|
+
Infinity;
|
|
311
|
+
}
|
|
312
|
+
exports.getLeftSizeOfBufferedTimeRange = getLeftSizeOfBufferedTimeRange;
|
|
313
|
+
/**
|
|
314
|
+
* Get "size" (difference between end and start) of the range containing the
|
|
315
|
+
* given time. 0 if the range is not found.
|
|
316
|
+
* @param {Array.<Object>} ranges
|
|
317
|
+
* @param {Number} currentTime
|
|
318
|
+
* @returns {Number}
|
|
319
|
+
*/
|
|
320
|
+
function getSizeOfRange(ranges, currentTime) {
|
|
321
|
+
const range = getRange(ranges, currentTime);
|
|
322
|
+
return range !== null ? range.end - range.start :
|
|
323
|
+
0;
|
|
324
|
+
}
|
|
325
|
+
exports.getSizeOfRange = getSizeOfRange;
|
|
326
|
+
/**
|
|
327
|
+
* Get "currently played" (difference between time given and start) of the
|
|
328
|
+
* range containing the given time. 0 if the range is not found.
|
|
329
|
+
* @param {Array.<Object>} ranges
|
|
330
|
+
* @param {Number} currentTime
|
|
331
|
+
* @returns {Number}
|
|
332
|
+
*/
|
|
333
|
+
function getPlayedSizeOfRange(ranges, currentTime) {
|
|
334
|
+
const range = getRange(ranges, currentTime);
|
|
335
|
+
return range !== null ? currentTime - range.start :
|
|
336
|
+
0;
|
|
337
|
+
}
|
|
338
|
+
exports.getPlayedSizeOfRange = getPlayedSizeOfRange;
|
|
339
|
+
/**
|
|
340
|
+
* Get "left to play" (difference between end and time given) of the range
|
|
341
|
+
* containing the given time. Infinity if the range is not found.
|
|
342
|
+
* @param {Array.<Object>} ranges
|
|
343
|
+
* @param {Number} currentTime
|
|
344
|
+
* @returns {Number}
|
|
345
|
+
*/
|
|
346
|
+
function getLeftSizeOfRange(ranges, currentTime) {
|
|
347
|
+
const range = getRange(ranges, currentTime);
|
|
253
348
|
return range !== null ? range.end - currentTime :
|
|
254
349
|
Infinity;
|
|
255
350
|
}
|
|
351
|
+
exports.getLeftSizeOfRange = getLeftSizeOfRange;
|
|
256
352
|
/**
|
|
257
353
|
* Insert a range object into an array of ranges objects, at the right place.
|
|
258
354
|
* /!\ Mutate the array of ranges.
|
|
@@ -264,7 +360,7 @@ function insertInto(ranges, rangeToAddArg) {
|
|
|
264
360
|
if (rangeToAddArg.start === rangeToAddArg.end) {
|
|
265
361
|
return ranges;
|
|
266
362
|
}
|
|
267
|
-
|
|
363
|
+
let rangeToAdd = rangeToAddArg;
|
|
268
364
|
// For each present range check if we need to:
|
|
269
365
|
// - In case we are overlapping or contiguous:
|
|
270
366
|
// - if added range has the same bitrate as the overlapped or
|
|
@@ -273,11 +369,11 @@ function insertInto(ranges, rangeToAddArg) {
|
|
|
273
369
|
// in place
|
|
274
370
|
// - Need to insert in place, we we are completely, not overlapping
|
|
275
371
|
// and not contiguous in between two ranges.
|
|
276
|
-
|
|
372
|
+
let index = 0;
|
|
277
373
|
for (; index < ranges.length; index++) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
374
|
+
const range = ranges[index];
|
|
375
|
+
const overlapping = areRangesOverlapping(rangeToAdd, range);
|
|
376
|
+
const contiguous = areRangesNearlyContiguous(rangeToAdd, range);
|
|
281
377
|
// We assume ranges are ordered and two ranges can not be
|
|
282
378
|
// completely overlapping.
|
|
283
379
|
if (overlapping || contiguous) {
|
|
@@ -309,6 +405,7 @@ function insertInto(ranges, rangeToAddArg) {
|
|
|
309
405
|
ranges.splice(index, 0, rangeToAdd);
|
|
310
406
|
return mergeContiguousRanges(removeEmptyRanges(ranges));
|
|
311
407
|
}
|
|
408
|
+
exports.insertInto = insertInto;
|
|
312
409
|
/**
|
|
313
410
|
* Returns range, from a range objects array overlapping with a range given
|
|
314
411
|
* in argument. null if none is found.
|
|
@@ -317,8 +414,8 @@ function insertInto(ranges, rangeToAddArg) {
|
|
|
317
414
|
* @returns {Array.<Object>}
|
|
318
415
|
*/
|
|
319
416
|
function findOverlappingRanges(range, ranges) {
|
|
320
|
-
|
|
321
|
-
for (
|
|
417
|
+
const resultingRanges = [];
|
|
418
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
322
419
|
if (areRangesOverlapping(range, ranges[i])) {
|
|
323
420
|
resultingRanges.push(ranges[i]);
|
|
324
421
|
}
|
|
@@ -333,13 +430,13 @@ function findOverlappingRanges(range, ranges) {
|
|
|
333
430
|
* @returns {Array.<Range>}
|
|
334
431
|
*/
|
|
335
432
|
function keepRangeIntersection(ranges1, ranges2) {
|
|
336
|
-
|
|
337
|
-
for (
|
|
338
|
-
|
|
339
|
-
|
|
433
|
+
const result = [];
|
|
434
|
+
for (let i = 0; i < ranges1.length; i++) {
|
|
435
|
+
const range = ranges1[i];
|
|
436
|
+
const overlappingRanges = findOverlappingRanges(range, ranges2);
|
|
340
437
|
if (overlappingRanges.length > 0) {
|
|
341
|
-
for (
|
|
342
|
-
|
|
438
|
+
for (let j = 0; j < overlappingRanges.length; j++) {
|
|
439
|
+
const overlappingRange = overlappingRanges[j];
|
|
343
440
|
result.push({ start: Math.max(range.start, overlappingRange.start),
|
|
344
441
|
end: Math.min(range.end, overlappingRange.end) });
|
|
345
442
|
}
|
|
@@ -347,6 +444,7 @@ function keepRangeIntersection(ranges1, ranges2) {
|
|
|
347
444
|
}
|
|
348
445
|
return result;
|
|
349
446
|
}
|
|
447
|
+
exports.keepRangeIntersection = keepRangeIntersection;
|
|
350
448
|
/**
|
|
351
449
|
* Exclude from the `baseRanges` everything that is in `rangesToExclude`.
|
|
352
450
|
* Example:
|
|
@@ -374,16 +472,16 @@ function keepRangeIntersection(ranges1, ranges2) {
|
|
|
374
472
|
* @return {Array.<Object>}
|
|
375
473
|
*/
|
|
376
474
|
function excludeFromRanges(baseRanges, rangesToExclude) {
|
|
377
|
-
|
|
475
|
+
const result = [];
|
|
378
476
|
// For every range in `baseRanges`, find overlapping ranges with
|
|
379
477
|
// `rangesToExclude` and remove them.
|
|
380
|
-
for (
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
478
|
+
for (let i = 0; i < baseRanges.length; i++) {
|
|
479
|
+
const range = baseRanges[i];
|
|
480
|
+
const intersections = [];
|
|
481
|
+
const overlappingRanges = findOverlappingRanges(range, rangesToExclude);
|
|
384
482
|
if (overlappingRanges.length > 0) {
|
|
385
|
-
for (
|
|
386
|
-
|
|
483
|
+
for (let j = 0; j < overlappingRanges.length; j++) {
|
|
484
|
+
const overlappingRange = overlappingRanges[j];
|
|
387
485
|
intersections.push({ start: Math.max(range.start, overlappingRange.start),
|
|
388
486
|
end: Math.min(range.end, overlappingRange.end) });
|
|
389
487
|
}
|
|
@@ -392,8 +490,8 @@ function excludeFromRanges(baseRanges, rangesToExclude) {
|
|
|
392
490
|
result.push(range);
|
|
393
491
|
}
|
|
394
492
|
else {
|
|
395
|
-
|
|
396
|
-
for (
|
|
493
|
+
let lastStart = range.start;
|
|
494
|
+
for (let j = 0; j < intersections.length; j++) {
|
|
397
495
|
if (intersections[j].start > lastStart) {
|
|
398
496
|
result.push({ start: lastStart,
|
|
399
497
|
end: intersections[j].start });
|
|
@@ -408,6 +506,7 @@ function excludeFromRanges(baseRanges, rangesToExclude) {
|
|
|
408
506
|
}
|
|
409
507
|
return result;
|
|
410
508
|
}
|
|
509
|
+
exports.excludeFromRanges = excludeFromRanges;
|
|
411
510
|
/**
|
|
412
511
|
* Returns `true` if the given `time` is available in the TimeRanges object
|
|
413
512
|
* given.
|
|
@@ -417,11 +516,11 @@ function excludeFromRanges(baseRanges, rangesToExclude) {
|
|
|
417
516
|
* @returns {boolean}
|
|
418
517
|
*/
|
|
419
518
|
function isTimeInTimeRanges(ranges, time) {
|
|
420
|
-
for (
|
|
519
|
+
for (let i = 0; i < ranges.length; i++) {
|
|
421
520
|
if (ranges.start(i) <= time && time < ranges.end(i)) {
|
|
422
521
|
return true;
|
|
423
522
|
}
|
|
424
523
|
}
|
|
425
524
|
return false;
|
|
426
525
|
}
|
|
427
|
-
|
|
526
|
+
exports.isTimeInTimeRanges = isTimeInTimeRanges;
|
|
@@ -17,18 +17,18 @@ import { CancellationSignal } from "./task_canceller";
|
|
|
17
17
|
/**
|
|
18
18
|
* A value behind a shared reference, meaning that any update to its value from
|
|
19
19
|
* anywhere can be retrieved from any other parts of the code in possession of
|
|
20
|
-
* the same `
|
|
20
|
+
* the same `SharedReference`.
|
|
21
21
|
*
|
|
22
22
|
* @example
|
|
23
23
|
* ```ts
|
|
24
24
|
* const myVal = 1;
|
|
25
|
-
* const myRef :
|
|
25
|
+
* const myRef : SharedReference<number> = new SharedReference(1);
|
|
26
26
|
*
|
|
27
27
|
* function setValTo2(num : number) {
|
|
28
28
|
* num = 2;
|
|
29
29
|
* }
|
|
30
30
|
*
|
|
31
|
-
* function setRefTo2(num :
|
|
31
|
+
* function setRefTo2(num : SharedReference<number>) {
|
|
32
32
|
* num.setValue(2);
|
|
33
33
|
* }
|
|
34
34
|
*
|
|
@@ -50,9 +50,54 @@ import { CancellationSignal } from "./task_canceller";
|
|
|
50
50
|
* This type was added because we found that the usage of an explicit type for
|
|
51
51
|
* those use cases makes the intent of the corresponding code clearer.
|
|
52
52
|
*/
|
|
53
|
-
|
|
53
|
+
declare class SharedReference<T> {
|
|
54
|
+
/** Current value referenced by this `SharedReference`. */
|
|
55
|
+
private _value;
|
|
54
56
|
/**
|
|
55
|
-
*
|
|
57
|
+
* Attributes each linked to a single registered callbacks which listen to the
|
|
58
|
+
* referenced value's updates.
|
|
59
|
+
*
|
|
60
|
+
* Contains the following properties:
|
|
61
|
+
* - `trigger`: Function which will be called with the new reference's value
|
|
62
|
+
* once it changes
|
|
63
|
+
* - `complete`: Allows to clean-up the listener, will be called once the
|
|
64
|
+
* reference is finished.
|
|
65
|
+
* - `hasBeenCleared`: becomes `true` when the reference is
|
|
66
|
+
* removed from the `cbs` array.
|
|
67
|
+
* Adding this property allows to detect when a previously-added
|
|
68
|
+
* listener has since been removed e.g. as a side-effect during a
|
|
69
|
+
* function call.
|
|
70
|
+
* - `complete`: Callback to call when the current Reference is "finished".
|
|
71
|
+
*/
|
|
72
|
+
private _listeners;
|
|
73
|
+
/**
|
|
74
|
+
* Set to `true` when this `SharedReference` is finished in which case it
|
|
75
|
+
* cannot be updated nor emit values anymore.
|
|
76
|
+
*/
|
|
77
|
+
private _isFinished;
|
|
78
|
+
/**
|
|
79
|
+
* Callbacks triggered when the `SharedReference` is finished.
|
|
80
|
+
*/
|
|
81
|
+
private _onFinishCbs;
|
|
82
|
+
/**
|
|
83
|
+
* Store a reference to the callback allowing to finish the `SharedReference`
|
|
84
|
+
* on some event. Allows to remove the logic when it's not needed anymore.
|
|
85
|
+
*/
|
|
86
|
+
private _deregisterCancellation;
|
|
87
|
+
/**
|
|
88
|
+
* Create a `SharedReference` object encapsulating the mutable `initialValue`
|
|
89
|
+
* value of type T.
|
|
90
|
+
* @param {*} initialValue
|
|
91
|
+
* @param {Object|undefined} [cancelSignal] - If set, the created shared
|
|
92
|
+
* reference will be automatically "finished" once that signal emits.
|
|
93
|
+
* Finished references won't be able to update their value anymore, and will
|
|
94
|
+
* also automatically have their listeners (callbacks linked to value change)
|
|
95
|
+
* removed - as they cannot be triggered anymore, thus providing a security
|
|
96
|
+
* against memory leaks.
|
|
97
|
+
*/
|
|
98
|
+
constructor(initialValue: T, cancelSignal?: CancellationSignal);
|
|
99
|
+
/**
|
|
100
|
+
* Returns the current value of this shared reference.
|
|
56
101
|
* @returns {*}
|
|
57
102
|
*/
|
|
58
103
|
getValue(): T;
|
|
@@ -75,12 +120,12 @@ export interface ISharedReference<T> {
|
|
|
75
120
|
* reference is updated.
|
|
76
121
|
* @param {Function} cb - Callback to be called each time the reference is
|
|
77
122
|
* updated. Takes as first argument its new value and in second argument a
|
|
78
|
-
*
|
|
79
|
-
* @param {Object} [options]
|
|
80
|
-
* @param {Object} [options.clearSignal] - Allows to provide a
|
|
123
|
+
* callback allowing to unregister the callback.
|
|
124
|
+
* @param {Object|undefined} [options]
|
|
125
|
+
* @param {Object|undefined} [options.clearSignal] - Allows to provide a
|
|
81
126
|
* CancellationSignal which will unregister the callback when it emits.
|
|
82
|
-
* @param {boolean} [options.emitCurrentValue] - If `true`, the
|
|
83
|
-
* also be immediately
|
|
127
|
+
* @param {boolean|undefined} [options.emitCurrentValue] - If `true`, the
|
|
128
|
+
* callback will also be immediately called with the current value.
|
|
84
129
|
*/
|
|
85
130
|
onUpdate(cb: (val: T, stopListening: () => void) => void, options?: {
|
|
86
131
|
clearSignal?: CancellationSignal | undefined;
|
|
@@ -106,31 +151,42 @@ export interface ISharedReference<T> {
|
|
|
106
151
|
* ```
|
|
107
152
|
* @param {Function} cb - Callback to be called each time the reference is
|
|
108
153
|
* updated. Takes the new value in argument.
|
|
109
|
-
* @param {Object} [options]
|
|
110
|
-
* @param {Object} [options.clearSignal] - Allows to provide a
|
|
154
|
+
* @param {Object | undefined} [options]
|
|
155
|
+
* @param {Object | undefined} [options.clearSignal] - Allows to provide a
|
|
111
156
|
* CancellationSignal which will unregister the callback when it emits.
|
|
112
157
|
*/
|
|
113
158
|
waitUntilDefined(cb: (val: Exclude<T, undefined>) => void, options?: {
|
|
114
159
|
clearSignal?: CancellationSignal | undefined;
|
|
115
160
|
} | undefined): void;
|
|
161
|
+
/**
|
|
162
|
+
* Allows to register a callback for when the Shared Reference is "finished".
|
|
163
|
+
*
|
|
164
|
+
* This function is mostly there for implementing operators on the shared
|
|
165
|
+
* reference and isn't meant to be used by regular code, hence it being
|
|
166
|
+
* prefixed by `_`.
|
|
167
|
+
* @param {Function} cb - Callback to be called once the reference is
|
|
168
|
+
* finished.
|
|
169
|
+
* @param {Object} onFinishCancelSignal - Allows to provide a
|
|
170
|
+
* CancellationSignal which will unregister the callback when it emits.
|
|
171
|
+
*/
|
|
172
|
+
_onFinished(cb: () => void, onFinishCancelSignal: CancellationSignal): () => void;
|
|
116
173
|
/**
|
|
117
174
|
* Indicate that no new values will be emitted.
|
|
118
|
-
* Allows to automatically
|
|
119
|
-
* `ISharedReference`.
|
|
175
|
+
* Allows to automatically free all listeners linked to this reference.
|
|
120
176
|
*/
|
|
121
177
|
finish(): void;
|
|
122
178
|
}
|
|
123
179
|
/**
|
|
124
|
-
*
|
|
180
|
+
* A `SharedReference` which can only be read and not updated.
|
|
125
181
|
*
|
|
126
|
-
* Because
|
|
182
|
+
* Because a `SharedReference` is structurally compatible to a
|
|
127
183
|
* `IReadOnlySharedReference`, and because of TypeScript variance rules, it can
|
|
128
184
|
* be upcasted into a `IReadOnlySharedReference` at any time to make it clear in
|
|
129
185
|
* the code that some logic is not supposed to update the referenced value.
|
|
130
186
|
*
|
|
131
187
|
* @example
|
|
132
188
|
* ```ts
|
|
133
|
-
* const myReference :
|
|
189
|
+
* const myReference : SharedReference<number> = new SharedReference(4);
|
|
134
190
|
*
|
|
135
191
|
* function shouldOnlyReadIt(roRef : IReadOnlySharedReference<number>) {
|
|
136
192
|
* console.log("current value:", roRef.getValue());
|
|
@@ -142,26 +198,11 @@ export interface ISharedReference<T> {
|
|
|
142
198
|
* shouldOnlyReadIt(myReference); // output: "current value: 12"
|
|
143
199
|
* ```
|
|
144
200
|
*/
|
|
145
|
-
export type IReadOnlySharedReference<T> = Pick<
|
|
146
|
-
/**
|
|
147
|
-
* Create an `ISharedReference` object encapsulating the mutable `initialValue`
|
|
148
|
-
* value of type T.
|
|
149
|
-
*
|
|
150
|
-
* @see ISharedReference
|
|
151
|
-
* @param {*} initialValue
|
|
152
|
-
* @param {Object|undefined} [cancelSignal] - If set, the created shared
|
|
153
|
-
* reference will be automatically "finished" once that signal emits.
|
|
154
|
-
* Finished references won't be able to update their value anymore, and will
|
|
155
|
-
* also automatically have their listeners (callbacks linked to value change)
|
|
156
|
-
* removed - as they cannot be triggered anymore, thus providing a security
|
|
157
|
-
* against memory leaks.
|
|
158
|
-
* @returns {Object}
|
|
159
|
-
*/
|
|
160
|
-
export default function createSharedReference<T>(initialValue: T, cancelSignal?: CancellationSignal): ISharedReference<T>;
|
|
201
|
+
export type IReadOnlySharedReference<T> = Pick<SharedReference<T>, "getValue" | "onUpdate" | "waitUntilDefined" | "_onFinished">;
|
|
161
202
|
/**
|
|
162
|
-
* Create a new `
|
|
163
|
-
* referenced value each time it is updated.
|
|
164
|
-
* @param {Object} originalRef - The Original `
|
|
203
|
+
* Create a new `SharedReference` based on another one by mapping over its
|
|
204
|
+
* referenced value each time it is updated and finishing once it finishes.
|
|
205
|
+
* @param {Object} originalRef - The Original `SharedReference` you wish to map
|
|
165
206
|
* over.
|
|
166
207
|
* @param {Function} mappingFn - The mapping function which will receives
|
|
167
208
|
* `originalRef`'s value and outputs this new reference's value.
|
|
@@ -170,4 +211,4 @@ export default function createSharedReference<T>(initialValue: T, cancelSignal?:
|
|
|
170
211
|
* @returns {Object} - The new, mapped, reference.
|
|
171
212
|
*/
|
|
172
213
|
export declare function createMappedReference<T, U>(originalRef: IReadOnlySharedReference<T>, mappingFn: (x: T) => U, cancellationSignal: CancellationSignal): IReadOnlySharedReference<U>;
|
|
173
|
-
export
|
|
214
|
+
export default SharedReference;
|