rx-player 3.33.0 → 3.33.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/VERSION +1 -1
- package/dist/_esm5.processed/core/api/public_api.js +2 -2
- package/dist/_esm5.processed/manifest/manifest.js +1 -0
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.d.ts +11 -0
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +18 -4
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -1
- package/dist/rx-player.js +24 -9
- package/dist/rx-player.min.d.ts +1 -1
- package/dist/rx-player.min.js +1 -1
- package/package.json +6 -6
- package/.editorconfig +0 -22
- package/.eslintrc.js +0 -406
- package/.github/workflows/checks.yml +0 -101
- package/.github/workflows/perfs.yml +0 -22
- package/.github/workflows/sonarcloud_analysis.yml +0 -20
- package/CONTRIBUTING.md +0 -272
- package/FILES.md +0 -283
- package/jest.config.js +0 -73
- package/manifest.mpd +0 -149
- package/scripts/README.md +0 -11
- package/scripts/build/constants.d.ts +0 -53
- package/scripts/build/generate_build.js +0 -190
- package/scripts/build/templates/experimental/features/index.d.ts +0 -16
- package/scripts/build/templates/experimental/features/index.js +0 -16
- package/scripts/build/templates/experimental/index.d.ts +0 -16
- package/scripts/build/templates/experimental/index.js +0 -16
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +0 -18
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +0 -18
- package/scripts/build/templates/experimental/tools/index.d.ts +0 -16
- package/scripts/build/templates/experimental/tools/index.js +0 -16
- package/scripts/build/templates/features/index.d.ts +0 -16
- package/scripts/build/templates/features/index.js +0 -16
- package/scripts/build/templates/logger/index.d.ts +0 -17
- package/scripts/build/templates/logger/index.js +0 -17
- package/scripts/build/templates/minimal/index.d.ts +0 -17
- package/scripts/build/templates/minimal/index.js +0 -17
- package/scripts/build/templates/tools/TextTrackRenderer.d.ts +0 -18
- package/scripts/build/templates/tools/TextTrackRenderer.js +0 -18
- package/scripts/build/templates/tools/index.d.ts +0 -16
- package/scripts/build/templates/tools/index.js +0 -16
- package/scripts/build/templates/tools/string-utils.d.ts +0 -18
- package/scripts/build/templates/tools/string-utils.js +0 -18
- package/scripts/build/templates/types/index.d.ts +0 -16
- package/scripts/build/templates/types/index.js +0 -15
- package/scripts/canal-release.patch +0 -316
- package/scripts/check_nodejs_import_compatibility.js +0 -60
- package/scripts/deploy_new_demo +0 -123
- package/scripts/fast_demo_build.js +0 -129
- package/scripts/generate_certificate +0 -19
- package/scripts/generate_demo_list.js +0 -105
- package/scripts/generate_documentation_list.js +0 -109
- package/scripts/generate_full_demo.js +0 -201
- package/scripts/generate_standalone_demo.js +0 -82
- package/scripts/launch_static_server.js +0 -163
- package/scripts/list-npm-scripts.js +0 -207
- package/scripts/make-dev-releases +0 -90
- package/scripts/report_build_sizes +0 -96
- package/scripts/run_standalone_demo.js +0 -27
- package/scripts/start_demo_web_server.js +0 -44
- package/scripts/update-version +0 -48
- package/scripts/update_gh-pages_demo +0 -132
- package/scripts/update_gh-pages_doc +0 -106
- package/scripts/utils/display_webpack_errors.js +0 -33
- package/scripts/utils/get_human_readable_hours.js +0 -14
- package/scripts/wasm-strip.js +0 -359
- package/sonar-project.properties +0 -7
- package/src/README.md +0 -136
- package/src/compat/README.md +0 -29
- package/src/compat/__tests__/add_text_track.test.ts +0 -176
- package/src/compat/__tests__/browser_compatibility_types.test.ts +0 -152
- package/src/compat/__tests__/browser_version.test.ts +0 -84
- package/src/compat/__tests__/can_patch_isobmff.test.ts +0 -50
- package/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts +0 -78
- package/src/compat/__tests__/can_reuse_media_keys.test.ts +0 -31
- package/src/compat/__tests__/change_source_buffer_type.test.ts +0 -60
- package/src/compat/__tests__/clear_element_src.test.ts +0 -252
- package/src/compat/__tests__/enable_audio_track.test.ts +0 -341
- package/src/compat/__tests__/fullscreen.test.ts +0 -286
- package/src/compat/__tests__/is_codec_supported.test.ts +0 -78
- package/src/compat/__tests__/is_offline.test.ts +0 -65
- package/src/compat/__tests__/is_seeking_approximate.test.ts +0 -48
- package/src/compat/__tests__/is_vtt_cue.test.ts +0 -71
- package/src/compat/__tests__/make_vtt_cue.test.ts +0 -97
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +0 -144
- package/src/compat/__tests__/remove_cue.test.ts +0 -229
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +0 -128
- package/src/compat/__tests__/should_reload_media_source_on_decipherability_update.test.ts +0 -50
- package/src/compat/__tests__/should_renew_media_key_system_access.test.ts +0 -55
- package/src/compat/__tests__/should_unset_media_keys.test.ts +0 -53
- package/src/compat/__tests__/should_validate_metadata.test.ts +0 -53
- package/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +0 -121
- package/src/compat/__tests__/should_wait_for_have_enough_data.test.ts +0 -36
- package/src/compat/add_class_name.ts +0 -41
- package/src/compat/add_text_track.ts +0 -58
- package/src/compat/browser_compatibility_types.ts +0 -222
- package/src/compat/browser_detection.ts +0 -172
- package/src/compat/browser_version.ts +0 -44
- package/src/compat/can_patch_isobmff.ts +0 -30
- package/src/compat/can_rely_on_video_visibility_and_size.ts +0 -52
- package/src/compat/can_reuse_media_keys.ts +0 -20
- package/src/compat/change_source_buffer_type.ts +0 -66
- package/src/compat/clear_element_src.ts +0 -55
- package/src/compat/eme/close_session.ts +0 -111
- package/src/compat/eme/constants.ts +0 -21
- package/src/compat/eme/custom_key_system_access.ts +0 -67
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +0 -186
- package/src/compat/eme/custom_media_keys/index.ts +0 -28
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +0 -88
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +0 -69
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +0 -235
- package/src/compat/eme/custom_media_keys/types.ts +0 -67
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +0 -308
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +0 -50
- package/src/compat/eme/eme-api-implementation.ts +0 -318
- package/src/compat/eme/generate_key_request.ts +0 -162
- package/src/compat/eme/get_init_data.ts +0 -159
- package/src/compat/eme/get_uuid_kid_from_keystatus_kid.ts +0 -37
- package/src/compat/eme/get_webkit_fairplay_initdata.ts +0 -75
- package/src/compat/eme/index.ts +0 -47
- package/src/compat/eme/load_session.ts +0 -67
- package/src/compat/enable_audio_track.ts +0 -33
- package/src/compat/event_listeners.ts +0 -566
- package/src/compat/fullscreen.ts +0 -87
- package/src/compat/get_start_date.ts +0 -48
- package/src/compat/has_issues_with_high_media_source_duration.ts +0 -27
- package/src/compat/index.ts +0 -87
- package/src/compat/is_codec_supported.ts +0 -40
- package/src/compat/is_debug_mode_enabled.ts +0 -12
- package/src/compat/is_node.ts +0 -18
- package/src/compat/is_offline.ts +0 -44
- package/src/compat/is_seeking_approximate.ts +0 -32
- package/src/compat/is_vtt_cue.ts +0 -30
- package/src/compat/make_vtt_cue.ts +0 -51
- package/src/compat/on_height_width_change.ts +0 -119
- package/src/compat/patch_webkit_source_buffer.ts +0 -89
- package/src/compat/remove_cue.ts +0 -64
- package/src/compat/should_favour_custom_safari_EME.ts +0 -34
- package/src/compat/should_prevent_seeking_at_0_initially.ts +0 -19
- package/src/compat/should_reload_media_source_on_decipherability_update.ts +0 -32
- package/src/compat/should_renew_media_key_system_access.ts +0 -26
- package/src/compat/should_unset_media_keys.ts +0 -27
- package/src/compat/should_validate_metadata.ts +0 -27
- package/src/compat/should_wait_for_data_before_loaded.ts +0 -35
- package/src/compat/should_wait_for_have_enough_data.ts +0 -17
- package/src/config.ts +0 -32
- package/src/core/README.md +0 -56
- package/src/core/adaptive/README.md +0 -147
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +0 -548
- package/src/core/adaptive/adaptive_representation_selector.ts +0 -916
- package/src/core/adaptive/buffer_based_chooser.ts +0 -264
- package/src/core/adaptive/guess_based_chooser.ts +0 -309
- package/src/core/adaptive/index.ts +0 -45
- package/src/core/adaptive/network_analyzer.ts +0 -419
- package/src/core/adaptive/utils/__tests__/bandwith_estimator.test.ts +0 -134
- package/src/core/adaptive/utils/__tests__/ewma.test.ts +0 -79
- package/src/core/adaptive/utils/__tests__/filter_by_bitrate.test.ts +0 -56
- package/src/core/adaptive/utils/__tests__/filter_by_width.test.ts +0 -60
- package/src/core/adaptive/utils/__tests__/get_buffer_levels.test.ts +0 -48
- package/src/core/adaptive/utils/__tests__/select_optimal_representation.test.ts +0 -243
- package/src/core/adaptive/utils/bandwidth_estimator.ts +0 -88
- package/src/core/adaptive/utils/ewma.ts +0 -59
- package/src/core/adaptive/utils/filter_by_bitrate.ts +0 -46
- package/src/core/adaptive/utils/filter_by_width.ts +0 -49
- package/src/core/adaptive/utils/get_buffer_levels.ts +0 -50
- package/src/core/adaptive/utils/last_estimate_storage.ts +0 -79
- package/src/core/adaptive/utils/pending_requests_store.ts +0 -147
- package/src/core/adaptive/utils/representation_score_calculator.ts +0 -168
- package/src/core/adaptive/utils/select_optimal_representation.ts +0 -54
- package/src/core/api/README.md +0 -36
- package/src/core/api/__tests__/option_utils.test.ts +0 -1668
- package/src/core/api/__tests__/public_api.test.ts +0 -857
- package/src/core/api/__tests__/utils.test.ts +0 -195
- package/src/core/api/debug/buffer_graph.ts +0 -244
- package/src/core/api/debug/buffer_size_graph.ts +0 -130
- package/src/core/api/debug/constants.ts +0 -2
- package/src/core/api/debug/index.ts +0 -3
- package/src/core/api/debug/modules/general_info.ts +0 -213
- package/src/core/api/debug/modules/segment_buffer_content.ts +0 -155
- package/src/core/api/debug/modules/segment_buffer_size.ts +0 -48
- package/src/core/api/debug/render.ts +0 -40
- package/src/core/api/debug/utils.ts +0 -103
- package/src/core/api/index.ts +0 -27
- package/src/core/api/option_utils.ts +0 -700
- package/src/core/api/playback_observer.ts +0 -994
- package/src/core/api/public_api.ts +0 -3247
- package/src/core/api/tracks_management/__tests__/media_element_track_choice_manager.test.ts +0 -184
- package/src/core/api/tracks_management/media_element_track_choice_manager.ts +0 -975
- package/src/core/api/tracks_management/track_choice_manager.ts +0 -1280
- package/src/core/api/utils.ts +0 -216
- package/src/core/decrypt/README.md +0 -22
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +0 -422
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +0 -677
- package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +0 -528
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +0 -343
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +0 -264
- package/src/core/decrypt/__tests__/__global__/utils.ts +0 -491
- package/src/core/decrypt/attach_media_keys.ts +0 -121
- package/src/core/decrypt/clear_on_stop.ts +0 -47
- package/src/core/decrypt/content_decryptor.ts +0 -1246
- package/src/core/decrypt/create_or_load_session.ts +0 -133
- package/src/core/decrypt/create_session.ts +0 -214
- package/src/core/decrypt/dispose_decryption_resources.ts +0 -54
- package/src/core/decrypt/find_key_system.ts +0 -376
- package/src/core/decrypt/get_key_system_configuration.ts +0 -51
- package/src/core/decrypt/get_media_keys.ts +0 -147
- package/src/core/decrypt/index.ts +0 -36
- package/src/core/decrypt/init_media_keys.ts +0 -60
- package/src/core/decrypt/session_events_listener.ts +0 -386
- package/src/core/decrypt/set_server_certificate.ts +0 -105
- package/src/core/decrypt/types.ts +0 -404
- package/src/core/decrypt/utils/__tests__/are_init_values_compatible.test.ts +0 -261
- package/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts +0 -158
- package/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +0 -133
- package/src/core/decrypt/utils/are_init_values_compatible.ts +0 -140
- package/src/core/decrypt/utils/check_key_statuses.ts +0 -193
- package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +0 -45
- package/src/core/decrypt/utils/clean_old_stored_persistent_info.ts +0 -48
- package/src/core/decrypt/utils/get_drm_system_id.ts +0 -42
- package/src/core/decrypt/utils/init_data_values_container.ts +0 -119
- package/src/core/decrypt/utils/is_session_usable.ts +0 -62
- package/src/core/decrypt/utils/key_id_comparison.ts +0 -57
- package/src/core/decrypt/utils/key_session_record.ts +0 -174
- package/src/core/decrypt/utils/loaded_sessions_store.ts +0 -505
- package/src/core/decrypt/utils/media_keys_infos_store.ts +0 -85
- package/src/core/decrypt/utils/persistent_sessions_store.ts +0 -358
- package/src/core/decrypt/utils/serializable_bytes.ts +0 -59
- package/src/core/decrypt/utils/server_certificate_store.ts +0 -133
- package/src/core/fetchers/README.md +0 -84
- package/src/core/fetchers/cdn_prioritizer.ts +0 -207
- package/src/core/fetchers/index.ts +0 -38
- package/src/core/fetchers/manifest/index.ts +0 -28
- package/src/core/fetchers/manifest/manifest_fetcher.ts +0 -798
- package/src/core/fetchers/segment/__tests__/task_prioritizer.test.ts +0 -763
- package/src/core/fetchers/segment/index.ts +0 -28
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +0 -113
- package/src/core/fetchers/segment/segment_fetcher.ts +0 -482
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +0 -129
- package/src/core/fetchers/segment/task_prioritizer.ts +0 -455
- package/src/core/fetchers/utils/error_selector.ts +0 -38
- package/src/core/fetchers/utils/schedule_request.ts +0 -493
- package/src/core/init/README.md +0 -81
- package/src/core/init/directfile_content_initializer.ts +0 -310
- package/src/core/init/index.ts +0 -22
- package/src/core/init/media_source_content_initializer.ts +0 -878
- package/src/core/init/types.ts +0 -266
- package/src/core/init/utils/__tests__/are_same_stream_events.test.ts +0 -84
- package/src/core/init/utils/__tests__/refresh_scheduled_events_list.test.ts +0 -94
- package/src/core/init/utils/content_time_boundaries_observer.ts +0 -646
- package/src/core/init/utils/create_media_source.ts +0 -139
- package/src/core/init/utils/create_stream_playback_observer.ts +0 -132
- package/src/core/init/utils/end_of_stream.ts +0 -108
- package/src/core/init/utils/get_initial_time.ts +0 -165
- package/src/core/init/utils/get_loaded_reference.ts +0 -82
- package/src/core/init/utils/initial_seek_and_play.ts +0 -237
- package/src/core/init/utils/initialize_content_decryption.ts +0 -172
- package/src/core/init/utils/media_source_duration_updater.ts +0 -349
- package/src/core/init/utils/rebuffering_controller.ts +0 -642
- package/src/core/init/utils/stream_events_emitter/are_same_stream_events.ts +0 -42
- package/src/core/init/utils/stream_events_emitter/index.ts +0 -22
- package/src/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.ts +0 -74
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +0 -252
- package/src/core/init/utils/stream_events_emitter/types.ts +0 -46
- package/src/core/init/utils/throw_on_media_error.ts +0 -74
- package/src/core/segment_buffers/README.md +0 -219
- package/src/core/segment_buffers/garbage_collector.ts +0 -177
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +0 -650
- package/src/core/segment_buffers/implementations/audio_video/index.ts +0 -18
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +0 -152
- package/src/core/segment_buffers/implementations/image/index.ts +0 -18
- package/src/core/segment_buffers/implementations/index.ts +0 -20
- package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +0 -343
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +0 -527
- package/src/core/segment_buffers/implementations/text/html/index.ts +0 -24
- package/src/core/segment_buffers/implementations/text/html/parsers.ts +0 -49
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +0 -391
- package/src/core/segment_buffers/implementations/text/html/types.ts +0 -23
- package/src/core/segment_buffers/implementations/text/html/update_proportional_elements.ts +0 -93
- package/src/core/segment_buffers/implementations/text/html/utils.ts +0 -139
- package/src/core/segment_buffers/implementations/text/native/index.ts +0 -19
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +0 -340
- package/src/core/segment_buffers/implementations/text/native/parsers.ts +0 -47
- package/src/core/segment_buffers/implementations/types.ts +0 -386
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +0 -80
- package/src/core/segment_buffers/index.ts +0 -67
- package/src/core/segment_buffers/inventory/buffered_history.ts +0 -131
- package/src/core/segment_buffers/inventory/index.ts +0 -30
- package/src/core/segment_buffers/inventory/segment_inventory.ts +0 -1111
- package/src/core/segment_buffers/inventory/types.ts +0 -35
- package/src/core/segment_buffers/segment_buffers_store.ts +0 -383
- package/src/core/stream/README.md +0 -59
- package/src/core/stream/adaptation/adaptation_stream.ts +0 -378
- package/src/core/stream/adaptation/index.ts +0 -20
- package/src/core/stream/adaptation/types.ts +0 -199
- package/src/core/stream/adaptation/utils/create_representation_estimator.ts +0 -114
- package/src/core/stream/index.ts +0 -38
- package/src/core/stream/orchestrator/README.md +0 -349
- package/src/core/stream/orchestrator/get_time_ranges_for_content.ts +0 -70
- package/src/core/stream/orchestrator/index.ts +0 -30
- package/src/core/stream/orchestrator/stream_orchestrator.ts +0 -664
- package/src/core/stream/period/index.ts +0 -20
- package/src/core/stream/period/period_stream.ts +0 -469
- package/src/core/stream/period/types.ts +0 -132
- package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +0 -287
- package/src/core/stream/representation/README.md +0 -16
- package/src/core/stream/representation/index.ts +0 -20
- package/src/core/stream/representation/representation_stream.ts +0 -474
- package/src/core/stream/representation/types.ts +0 -292
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +0 -77
- package/src/core/stream/representation/utils/check_for_discontinuity.ts +0 -305
- package/src/core/stream/representation/utils/downloading_queue.ts +0 -603
- package/src/core/stream/representation/utils/force_garbage_collection.ts +0 -113
- package/src/core/stream/representation/utils/get_buffer_status.ts +0 -322
- package/src/core/stream/representation/utils/get_needed_segments.ts +0 -617
- package/src/core/stream/representation/utils/get_segment_priority.ts +0 -43
- package/src/core/stream/representation/utils/push_init_segment.ts +0 -85
- package/src/core/stream/representation/utils/push_media_segment.ts +0 -113
- package/src/default_config.ts +0 -1293
- package/src/errors/README.md +0 -6
- package/src/errors/__tests__/assertion_error.test.ts +0 -26
- package/src/errors/__tests__/encrypted_media_error.test.ts +0 -45
- package/src/errors/__tests__/error_message.test.ts +0 -23
- package/src/errors/__tests__/format_error.test.ts +0 -62
- package/src/errors/__tests__/is_known_error.test.ts +0 -65
- package/src/errors/__tests__/media_error.test.ts +0 -55
- package/src/errors/__tests__/network_error.test.ts +0 -84
- package/src/errors/__tests__/other_error.test.ts +0 -53
- package/src/errors/__tests__/request_error.test.ts +0 -45
- package/src/errors/assertion_error.ts +0 -40
- package/src/errors/custom_loader_error.ts +0 -57
- package/src/errors/encrypted_media_error.ts +0 -71
- package/src/errors/error_codes.ts +0 -149
- package/src/errors/error_message.ts +0 -30
- package/src/errors/format_error.ts +0 -39
- package/src/errors/index.ts +0 -52
- package/src/errors/is_known_error.ts +0 -35
- package/src/errors/media_error.ts +0 -118
- package/src/errors/network_error.ts +0 -74
- package/src/errors/other_error.ts +0 -50
- package/src/errors/request_error.ts +0 -76
- package/src/experimental/README.md +0 -16
- package/src/experimental/features/__tests__/dash_wasm.test.ts +0 -44
- package/src/experimental/features/__tests__/debug_element.test.ts +0 -12
- package/src/experimental/features/__tests__/index.test.ts +0 -19
- package/src/experimental/features/__tests__/local.test.ts +0 -35
- package/src/experimental/features/__tests__/metaplaylist.test.ts +0 -35
- package/src/experimental/features/dash_wasm.ts +0 -41
- package/src/experimental/features/debug_element.ts +0 -13
- package/src/experimental/features/index.ts +0 -20
- package/src/experimental/features/local.ts +0 -28
- package/src/experimental/features/metaplaylist.ts +0 -28
- package/src/experimental/index.ts +0 -5
- package/src/experimental/tools/VideoThumbnailLoader/features/dash.ts +0 -23
- package/src/experimental/tools/VideoThumbnailLoader/features/metaplaylist.ts +0 -23
- package/src/experimental/tools/VideoThumbnailLoader/index.ts +0 -25
- package/src/experimental/tools/VideoThumbnailLoader/load_and_push_segment.ts +0 -77
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +0 -75
- package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +0 -54
- package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -39
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +0 -423
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.ts +0 -34
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +0 -141
- package/src/experimental/tools/createMetaplaylist/index.ts +0 -72
- package/src/experimental/tools/index.ts +0 -27
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts +0 -37
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +0 -140
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +0 -153
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +0 -405
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts +0 -136
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +0 -294
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +0 -189
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/utils.test.ts +0 -361
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +0 -184
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +0 -136
- package/src/experimental/tools/mediaCapabilitiesProber/capabilities.ts +0 -169
- package/src/experimental/tools/mediaCapabilitiesProber/index.ts +0 -18
- package/src/experimental/tools/mediaCapabilitiesProber/log.ts +0 -21
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +0 -67
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +0 -89
- package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +0 -100
- package/src/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.ts +0 -66
- package/src/experimental/tools/mediaCapabilitiesProber/probers/index.ts +0 -44
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +0 -66
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.ts +0 -100
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +0 -105
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +0 -54
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +0 -75
- package/src/experimental/tools/mediaCapabilitiesProber/utils.ts +0 -107
- package/src/experimental/tools/parseBIFThumbnails.ts +0 -39
- package/src/features/README.md +0 -11
- package/src/features/__tests__/add_features.test.ts +0 -69
- package/src/features/__tests__/initialize_features.test.ts +0 -674
- package/src/features/add_features.ts +0 -37
- package/src/features/features_object.ts +0 -37
- package/src/features/index.ts +0 -40
- package/src/features/initialize_features.ts +0 -136
- package/src/features/list/__tests__/bif_parser.test.ts +0 -30
- package/src/features/list/__tests__/dash.test.ts +0 -41
- package/src/features/list/__tests__/directfile.test.ts +0 -35
- package/src/features/list/__tests__/eme.test.ts +0 -28
- package/src/features/list/__tests__/html_sami_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_srt_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_text_buffer.test.ts +0 -29
- package/src/features/list/__tests__/html_ttml_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_vtt_parser.test.ts +0 -33
- package/src/features/list/__tests__/image_buffer.test.ts +0 -28
- package/src/features/list/__tests__/index.test.ts +0 -55
- package/src/features/list/__tests__/native_sami_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_srt_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_text_buffer.test.ts +0 -29
- package/src/features/list/__tests__/native_ttml_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_vtt_parser.test.ts +0 -33
- package/src/features/list/__tests__/smooth.test.ts +0 -36
- package/src/features/list/bif_parser.ts +0 -31
- package/src/features/list/dash.ts +0 -36
- package/src/features/list/directfile.ts +0 -35
- package/src/features/list/eme.ts +0 -29
- package/src/features/list/html_sami_parser.ts +0 -31
- package/src/features/list/html_srt_parser.ts +0 -31
- package/src/features/list/html_text_buffer.ts +0 -29
- package/src/features/list/html_ttml_parser.ts +0 -31
- package/src/features/list/html_vtt_parser.ts +0 -31
- package/src/features/list/image_buffer.ts +0 -29
- package/src/features/list/index.ts +0 -32
- package/src/features/list/native_sami_parser.ts +0 -32
- package/src/features/list/native_srt_parser.ts +0 -32
- package/src/features/list/native_text_buffer.ts +0 -30
- package/src/features/list/native_ttml_parser.ts +0 -32
- package/src/features/list/native_vtt_parser.ts +0 -32
- package/src/features/list/smooth.ts +0 -32
- package/src/features/types.ts +0 -183
- package/src/index.ts +0 -38
- package/src/log.ts +0 -22
- package/src/manifest/README.md +0 -55
- package/src/manifest/__tests__/adaptation.test.ts +0 -485
- package/src/manifest/__tests__/manifest.test.ts +0 -428
- package/src/manifest/__tests__/period.test.ts +0 -769
- package/src/manifest/__tests__/representation.test.ts +0 -297
- package/src/manifest/__tests__/update_period_in_place.test.ts +0 -1074
- package/src/manifest/__tests__/update_periods.test.ts +0 -845
- package/src/manifest/adaptation.ts +0 -294
- package/src/manifest/index.ts +0 -67
- package/src/manifest/manifest.ts +0 -811
- package/src/manifest/period.ts +0 -211
- package/src/manifest/representation.ts +0 -451
- package/src/manifest/representation_index/__tests__/static.test.ts +0 -74
- package/src/manifest/representation_index/index.ts +0 -31
- package/src/manifest/representation_index/static.ts +0 -158
- package/src/manifest/representation_index/types.ts +0 -433
- package/src/manifest/types.ts +0 -33
- package/src/manifest/update_period_in_place.ts +0 -142
- package/src/manifest/update_periods.ts +0 -201
- package/src/manifest/utils.ts +0 -60
- package/src/minimal.ts +0 -34
- package/src/parsers/README.md +0 -12
- package/src/parsers/containers/isobmff/constants.ts +0 -24
- package/src/parsers/containers/isobmff/create_box.ts +0 -81
- package/src/parsers/containers/isobmff/drm/index.ts +0 -17
- package/src/parsers/containers/isobmff/drm/playready.ts +0 -45
- package/src/parsers/containers/isobmff/get_box.ts +0 -278
- package/src/parsers/containers/isobmff/index.ts +0 -51
- package/src/parsers/containers/isobmff/read.ts +0 -105
- package/src/parsers/containers/isobmff/take_pssh_out.ts +0 -101
- package/src/parsers/containers/isobmff/utils.ts +0 -555
- package/src/parsers/containers/matroska/index.ts +0 -21
- package/src/parsers/containers/matroska/utils.ts +0 -313
- package/src/parsers/images/bif.ts +0 -128
- package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +0 -65
- package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +0 -37
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +0 -162
- package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +0 -65
- package/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +0 -165
- package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +0 -118
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +0 -290
- package/src/parsers/manifest/dash/common/__tests__/parse_availability_start_time.test.ts +0 -63
- package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +0 -55
- package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +0 -32
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +0 -87
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +0 -41
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +0 -94
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +0 -46
- package/src/parsers/manifest/dash/common/get_minimum_and_maximum_positions.ts +0 -39
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +0 -91
- package/src/parsers/manifest/dash/common/index.ts +0 -40
- package/src/parsers/manifest/dash/common/indexes/__tests__/tokens.test.ts +0 -60
- package/src/parsers/manifest/dash/common/indexes/base.ts +0 -444
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +0 -55
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +0 -148
- package/src/parsers/manifest/dash/common/indexes/index.ts +0 -39
- package/src/parsers/manifest/dash/common/indexes/list.ts +0 -338
- package/src/parsers/manifest/dash/common/indexes/template.ts +0 -652
- package/src/parsers/manifest/dash/common/indexes/timeline/__tests__/parse_s_element.test.ts +0 -115
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +0 -54
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.ts +0 -102
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +0 -66
- package/src/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.ts +0 -153
- package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +0 -21
- package/src/parsers/manifest/dash/common/indexes/timeline/parse_s_element.ts +0 -72
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +0 -1049
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +0 -127
- package/src/parsers/manifest/dash/common/indexes/utils.ts +0 -32
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +0 -142
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +0 -165
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +0 -569
- package/src/parsers/manifest/dash/common/parse_availability_start_time.ts +0 -35
- package/src/parsers/manifest/dash/common/parse_mpd.ts +0 -399
- package/src/parsers/manifest/dash/common/parse_periods.ts +0 -363
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +0 -199
- package/src/parsers/manifest/dash/common/parse_representations.ts +0 -352
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +0 -58
- package/src/parsers/manifest/dash/index.ts +0 -22
- package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +0 -45
- package/src/parsers/manifest/dash/js-parser/index.ts +0 -18
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +0 -381
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +0 -35
- package/src/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.ts +0 -49
- package/src/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.ts +0 -94
- package/src/parsers/manifest/dash/js-parser/node_parsers/EventStream.ts +0 -117
- package/src/parsers/manifest/dash/js-parser/node_parsers/Initialization.ts +0 -48
- package/src/parsers/manifest/dash/js-parser/node_parsers/MPD.ts +0 -180
- package/src/parsers/manifest/dash/js-parser/node_parsers/Period.ts +0 -152
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +0 -234
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.ts +0 -112
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentList.ts +0 -50
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +0 -98
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.ts +0 -35
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.ts +0 -63
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/AdaptationSet.test.ts +0 -407
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentComponent.test.ts +0 -67
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts +0 -223
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/Initialization.test.ts +0 -139
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts +0 -119
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts +0 -205
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/utils.test.ts +0 -218
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +0 -384
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +0 -129
- package/src/parsers/manifest/dash/node_parser_types.ts +0 -431
- package/src/parsers/manifest/dash/parsers_types.ts +0 -91
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +0 -25
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +0 -16
- package/src/parsers/manifest/dash/wasm-parser/README.md +0 -267
- package/src/parsers/manifest/dash/wasm-parser/index.ts +0 -21
- package/src/parsers/manifest/dash/wasm-parser/rs/errors.rs +0 -28
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +0 -373
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +0 -85
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +0 -414
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +0 -472
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/s_element.rs +0 -72
- package/src/parsers/manifest/dash/wasm-parser/rs/reader.rs +0 -17
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +0 -147
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +0 -217
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +0 -477
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +0 -343
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +0 -38
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.ts +0 -53
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.ts +0 -62
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +0 -144
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +0 -183
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +0 -180
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +0 -215
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.ts +0 -44
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.ts +0 -115
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +0 -61
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.ts +0 -133
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.ts +0 -70
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +0 -66
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/index.ts +0 -17
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +0 -66
- package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -80
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +0 -298
- package/src/parsers/manifest/dash/wasm-parser/ts/utils.ts +0 -47
- package/src/parsers/manifest/index.ts +0 -17
- package/src/parsers/manifest/local/index.ts +0 -25
- package/src/parsers/manifest/local/parse_local_manifest.ts +0 -164
- package/src/parsers/manifest/local/representation_index.ts +0 -246
- package/src/parsers/manifest/local/types.ts +0 -291
- package/src/parsers/manifest/metaplaylist/index.ts +0 -28
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +0 -335
- package/src/parsers/manifest/metaplaylist/representation_index.ts +0 -251
- package/src/parsers/manifest/smooth/create_parser.ts +0 -699
- package/src/parsers/manifest/smooth/get_codecs.ts +0 -55
- package/src/parsers/manifest/smooth/index.ts +0 -26
- package/src/parsers/manifest/smooth/parse_C_nodes.ts +0 -69
- package/src/parsers/manifest/smooth/parse_protection_node.ts +0 -72
- package/src/parsers/manifest/smooth/representation_index.ts +0 -704
- package/src/parsers/manifest/smooth/utils/add_segment_infos.ts +0 -77
- package/src/parsers/manifest/smooth/utils/parseBoolean.ts +0 -31
- package/src/parsers/manifest/smooth/utils/reduceChildren.ts +0 -36
- package/src/parsers/manifest/smooth/utils/tokens.ts +0 -46
- package/src/parsers/manifest/types.ts +0 -395
- package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +0 -161
- package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +0 -161
- package/src/parsers/manifest/utils/__tests__/index_helpers.test.ts +0 -55
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +0 -546
- package/src/parsers/manifest/utils/check_manifest_ids.ts +0 -83
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +0 -74
- package/src/parsers/manifest/utils/get_first_time_from_adaptation.ts +0 -48
- package/src/parsers/manifest/utils/get_last_time_from_adaptation.ts +0 -50
- package/src/parsers/manifest/utils/get_maximum_positions.ts +0 -87
- package/src/parsers/manifest/utils/get_minimum_position.ts +0 -80
- package/src/parsers/manifest/utils/index_helpers.ts +0 -204
- package/src/parsers/manifest/utils/update_segment_timeline.ts +0 -141
- package/src/parsers/texttracks/index.ts +0 -21
- package/src/parsers/texttracks/sami/html.ts +0 -219
- package/src/parsers/texttracks/sami/native.ts +0 -192
- package/src/parsers/texttracks/srt/__tests__/find_end_of_cue_block.test.ts +0 -99
- package/src/parsers/texttracks/srt/__tests__/get_cue_blocks.test.ts +0 -119
- package/src/parsers/texttracks/srt/__tests__/parse_cue.test.ts +0 -123
- package/src/parsers/texttracks/srt/__tests__/parse_timestamp.test.ts +0 -36
- package/src/parsers/texttracks/srt/find_end_of_cue_block.ts +0 -46
- package/src/parsers/texttracks/srt/get_cue_blocks.ts +0 -49
- package/src/parsers/texttracks/srt/html.ts +0 -182
- package/src/parsers/texttracks/srt/native.ts +0 -74
- package/src/parsers/texttracks/srt/parse_cue.ts +0 -76
- package/src/parsers/texttracks/srt/parse_timestamp.ts +0 -37
- package/src/parsers/texttracks/ttml/__tests__/resolve_styles_inheritance.test.ts +0 -248
- package/src/parsers/texttracks/ttml/get_parameters.ts +0 -106
- package/src/parsers/texttracks/ttml/get_styling.ts +0 -146
- package/src/parsers/texttracks/ttml/get_time_delimiters.ts +0 -49
- package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.test.ts +0 -190
- package/src/parsers/texttracks/ttml/html/__tests__/generate_css_test_outline.test.ts +0 -32
- package/src/parsers/texttracks/ttml/html/__tests__/ttml_color_to_css_color.test.ts +0 -62
- package/src/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.ts +0 -67
- package/src/parsers/texttracks/ttml/html/apply_extent.ts +0 -65
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +0 -62
- package/src/parsers/texttracks/ttml/html/apply_line_height.ts +0 -50
- package/src/parsers/texttracks/ttml/html/apply_origin.ts +0 -64
- package/src/parsers/texttracks/ttml/html/apply_padding.ts +0 -141
- package/src/parsers/texttracks/ttml/html/create_element.ts +0 -549
- package/src/parsers/texttracks/ttml/html/generate_css_test_outline.ts +0 -46
- package/src/parsers/texttracks/ttml/html/index.ts +0 -23
- package/src/parsers/texttracks/ttml/html/parse_cue.ts +0 -65
- package/src/parsers/texttracks/ttml/html/parse_ttml_to_div.ts +0 -58
- package/src/parsers/texttracks/ttml/html/ttml_color_to_css_color.ts +0 -68
- package/src/parsers/texttracks/ttml/native/index.ts +0 -23
- package/src/parsers/texttracks/ttml/native/parse_cue.ts +0 -245
- package/src/parsers/texttracks/ttml/native/parse_ttml_to_vtt.ts +0 -39
- package/src/parsers/texttracks/ttml/parse_ttml.ts +0 -206
- package/src/parsers/texttracks/ttml/regexps.ts +0 -65
- package/src/parsers/texttracks/ttml/resolve_styles_inheritance.ts +0 -84
- package/src/parsers/texttracks/ttml/time_parsing.ts +0 -156
- package/src/parsers/texttracks/ttml/xml_utils.ts +0 -166
- package/src/parsers/texttracks/types.ts +0 -34
- package/src/parsers/texttracks/webvtt/__tests__/get_cue_blocks.test.ts +0 -218
- package/src/parsers/texttracks/webvtt/__tests__/get_style_blocks.test.ts +0 -65
- package/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +0 -249
- package/src/parsers/texttracks/webvtt/__tests__/parse_timestamp.test.ts +0 -39
- package/src/parsers/texttracks/webvtt/__tests__/utils.test.ts +0 -401
- package/src/parsers/texttracks/webvtt/get_cue_blocks.ts +0 -51
- package/src/parsers/texttracks/webvtt/get_style_blocks.ts +0 -56
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +0 -106
- package/src/parsers/texttracks/webvtt/html/__tests__/create_default_style_elements.test.ts +0 -44
- package/src/parsers/texttracks/webvtt/html/__tests__/create_style_attribute.test.ts +0 -139
- package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +0 -140
- package/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts +0 -345
- package/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +0 -181
- package/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +0 -234
- package/src/parsers/texttracks/webvtt/html/convert_payload_to_html.ts +0 -46
- package/src/parsers/texttracks/webvtt/html/create_default_style_elements.ts +0 -26
- package/src/parsers/texttracks/webvtt/html/create_style_attribute.ts +0 -222
- package/src/parsers/texttracks/webvtt/html/create_styled_element.ts +0 -95
- package/src/parsers/texttracks/webvtt/html/index.ts +0 -25
- package/src/parsers/texttracks/webvtt/html/parse_style_block.ts +0 -76
- package/src/parsers/texttracks/webvtt/html/parse_webvtt_to_div.ts +0 -67
- package/src/parsers/texttracks/webvtt/html/to_html.ts +0 -96
- package/src/parsers/texttracks/webvtt/native/index.ts +0 -23
- package/src/parsers/texttracks/webvtt/native/parse_vtt_to_cues.ts +0 -70
- package/src/parsers/texttracks/webvtt/native/set_settings_on_cue.ts +0 -95
- package/src/parsers/texttracks/webvtt/native/to_native_cue.ts +0 -34
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +0 -128
- package/src/parsers/texttracks/webvtt/parse_timestamp.ts +0 -40
- package/src/parsers/texttracks/webvtt/utils.ts +0 -135
- package/src/public_types.ts +0 -846
- package/src/tools/README.md +0 -4
- package/src/tools/TextTrackRenderer/index.ts +0 -28
- package/src/tools/TextTrackRenderer/text_track_renderer.ts +0 -107
- package/src/tools/index.ts +0 -20
- package/src/tools/string_utils.ts +0 -24
- package/src/transports/README.md +0 -276
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +0 -98
- package/src/transports/dash/construct_segment_url.ts +0 -28
- package/src/transports/dash/extract_complete_chunks.ts +0 -66
- package/src/transports/dash/get_events_out_of_emsgs.ts +0 -105
- package/src/transports/dash/image_pipelines.ts +0 -122
- package/src/transports/dash/index.ts +0 -23
- package/src/transports/dash/init_segment_loader.ts +0 -114
- package/src/transports/dash/low_latency_segment_loader.ts +0 -87
- package/src/transports/dash/manifest_parser.ts +0 -325
- package/src/transports/dash/pipelines.ts +0 -72
- package/src/transports/dash/segment_loader.ts +0 -249
- package/src/transports/dash/segment_parser.ts +0 -194
- package/src/transports/dash/text_loader.ts +0 -120
- package/src/transports/dash/text_parser.ts +0 -234
- package/src/transports/index.ts +0 -17
- package/src/transports/local/index.ts +0 -18
- package/src/transports/local/pipelines.ts +0 -100
- package/src/transports/local/segment_loader.ts +0 -198
- package/src/transports/local/segment_parser.ts +0 -101
- package/src/transports/local/text_parser.ts +0 -185
- package/src/transports/metaplaylist/README.md +0 -94
- package/src/transports/metaplaylist/index.ts +0 -23
- package/src/transports/metaplaylist/manifest_loader.ts +0 -62
- package/src/transports/metaplaylist/pipelines.ts +0 -425
- package/src/transports/smooth/extract_timings_infos.ts +0 -142
- package/src/transports/smooth/index.ts +0 -23
- package/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +0 -231
- package/src/transports/smooth/isobmff/create_audio_init_segment.ts +0 -84
- package/src/transports/smooth/isobmff/create_boxes.ts +0 -481
- package/src/transports/smooth/isobmff/create_init_segment.ts +0 -100
- package/src/transports/smooth/isobmff/create_traf_box.ts +0 -40
- package/src/transports/smooth/isobmff/create_video_init_segment.ts +0 -78
- package/src/transports/smooth/isobmff/get_aaces_header.ts +0 -62
- package/src/transports/smooth/isobmff/index.ts +0 -32
- package/src/transports/smooth/isobmff/parse_tfrf.ts +0 -57
- package/src/transports/smooth/isobmff/parse_tfxd.ts +0 -38
- package/src/transports/smooth/isobmff/patch_segment.ts +0 -171
- package/src/transports/smooth/pipelines.ts +0 -533
- package/src/transports/smooth/segment_loader.ts +0 -288
- package/src/transports/smooth/utils.ts +0 -106
- package/src/transports/types.ts +0 -809
- package/src/transports/utils/__tests__/byte_range.test.ts +0 -35
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +0 -148
- package/src/transports/utils/__tests__/find_complete_box.test.ts +0 -138
- package/src/transports/utils/__tests__/infer_segment_container.test.ts +0 -227
- package/src/transports/utils/byte_range.ts +0 -25
- package/src/transports/utils/call_custom_manifest_loader.ts +0 -147
- package/src/transports/utils/check_isobmff_integrity.ts +0 -50
- package/src/transports/utils/find_complete_box.ts +0 -63
- package/src/transports/utils/generate_manifest_loader.ts +0 -97
- package/src/transports/utils/get_isobmff_timing_infos.ts +0 -86
- package/src/transports/utils/infer_segment_container.ts +0 -56
- package/src/transports/utils/parse_text_track.ts +0 -176
- package/src/typings/README.md +0 -7
- package/src/typings/globals.d.ts +0 -83
- package/src/typings/next-tick.d.ts +0 -23
- package/src/utils/README.md +0 -5
- package/src/utils/__tests__/are_arrays_of_numbers_equal.test.ts +0 -86
- package/src/utils/__tests__/are_codecs_compatible.test.ts +0 -88
- package/src/utils/__tests__/array_find.test.ts +0 -113
- package/src/utils/__tests__/array_find_index.test.ts +0 -113
- package/src/utils/__tests__/array_includes.test.ts +0 -151
- package/src/utils/__tests__/assert.test.ts +0 -237
- package/src/utils/__tests__/assert_unreachable.test.ts +0 -40
- package/src/utils/__tests__/base64.test.ts +0 -147
- package/src/utils/__tests__/byte_parsing.test.ts +0 -267
- package/src/utils/__tests__/deep_merge.test.ts +0 -48
- package/src/utils/__tests__/event_emitter.test.ts +0 -579
- package/src/utils/__tests__/flat_map.test.ts +0 -71
- package/src/utils/__tests__/get_fuzzed_delay.test.ts +0 -32
- package/src/utils/__tests__/hash_buffer.test.ts +0 -105
- package/src/utils/__tests__/id_generator.test.ts +0 -80
- package/src/utils/__tests__/initialization_segment_cache.test.ts +0 -245
- package/src/utils/__tests__/is_non_empty_string.test.ts +0 -41
- package/src/utils/__tests__/is_null_or_undefined.test.ts +0 -33
- package/src/utils/__tests__/list_to_map.test.ts +0 -46
- package/src/utils/__tests__/logger.test.ts +0 -214
- package/src/utils/__tests__/noop.test.ts +0 -23
- package/src/utils/__tests__/object_assign.test.ts +0 -56
- package/src/utils/__tests__/object_values.test.ts +0 -26
- package/src/utils/__tests__/ranges.test.ts +0 -907
- package/src/utils/__tests__/resolve_url.test.ts +0 -100
- package/src/utils/__tests__/simple_set.test.ts +0 -57
- package/src/utils/__tests__/sorted_list.test.ts +0 -335
- package/src/utils/__tests__/starts_with.test.ts +0 -65
- package/src/utils/__tests__/string_parsing.test.ts +0 -267
- package/src/utils/__tests__/uniq.test.ts +0 -134
- package/src/utils/__tests__/warn_once.test.ts +0 -38
- package/src/utils/__tests__/weak_map_memory.test.ts +0 -188
- package/src/utils/are_arrays_of_numbers_equal.ts +0 -39
- package/src/utils/are_codecs_compatible.ts +0 -51
- package/src/utils/array_find.ts +0 -55
- package/src/utils/array_find_index.ts +0 -54
- package/src/utils/array_includes.ts +0 -93
- package/src/utils/assert.ts +0 -65
- package/src/utils/assert_unreachable.ts +0 -45
- package/src/utils/base64.ts +0 -153
- package/src/utils/byte_parsing.ts +0 -256
- package/src/utils/cancellable_sleep.ts +0 -41
- package/src/utils/create_cancellable_promise.ts +0 -69
- package/src/utils/deep_merge.ts +0 -49
- package/src/utils/event_emitter.ts +0 -147
- package/src/utils/flat_map.ts +0 -50
- package/src/utils/get_fuzzed_delay.ts +0 -27
- package/src/utils/hash_buffer.ts +0 -42
- package/src/utils/id_generator.ts +0 -35
- package/src/utils/initialization_segment_cache.ts +0 -68
- package/src/utils/is_non_empty_string.ts +0 -23
- package/src/utils/is_null_or_undefined.ts +0 -27
- package/src/utils/languages/ISO_639-1_to_ISO_639-3.ts +0 -207
- package/src/utils/languages/ISO_639-2_to_ISO_639-3.ts +0 -43
- package/src/utils/languages/__tests__/normalize.test.ts +0 -290
- package/src/utils/languages/index.ts +0 -29
- package/src/utils/languages/normalize.ts +0 -152
- package/src/utils/list_to_map.ts +0 -32
- package/src/utils/logger.ts +0 -100
- package/src/utils/noop.ts +0 -26
- package/src/utils/object_assign.ts +0 -60
- package/src/utils/object_values.ts +0 -31
- package/src/utils/ranges.ts +0 -499
- package/src/utils/reference.ts +0 -390
- package/src/utils/request/fetch.ts +0 -250
- package/src/utils/request/index.ts +0 -38
- package/src/utils/request/xhr.ts +0 -287
- package/src/utils/resolve_url.ts +0 -126
- package/src/utils/retry_promise_with_backoff.ts +0 -95
- package/src/utils/simple_set.ts +0 -67
- package/src/utils/sleep.ts +0 -14
- package/src/utils/slice_uint8array.ts +0 -53
- package/src/utils/sorted_list.ts +0 -240
- package/src/utils/starts_with.ts +0 -42
- package/src/utils/string_parsing.ts +0 -414
- package/src/utils/task_canceller.ts +0 -367
- package/src/utils/uniq.ts +0 -49
- package/src/utils/warn_once.ts +0 -34
- package/src/utils/weak_map_memory.ts +0 -89
- package/src/utils/wrapInPromise.ts +0 -24
- package/tsconfig.json +0 -28
- package/tsconfig.modules.json +0 -36
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
18
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
19
|
-
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
20
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
21
|
-
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
22
|
-
|
|
23
|
-
import cleanOldLoadedSessions from "../clean_old_loaded_sessions";
|
|
24
|
-
import LoadedSessionsStore from "../loaded_sessions_store";
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const entry1 = { initializationData: { data: new Uint8Array([1, 6, 9]),
|
|
28
|
-
type: "test" },
|
|
29
|
-
mediaKeySession: { sessionId: "toto" },
|
|
30
|
-
sessionType: "" };
|
|
31
|
-
|
|
32
|
-
const entry2 = { initializationData: { data: new Uint8Array([4, 8]),
|
|
33
|
-
type: "foo" },
|
|
34
|
-
mediaKeySession: { sessionId: "titi" },
|
|
35
|
-
sessionType: "" };
|
|
36
|
-
|
|
37
|
-
const entry3 = { initializationData: { data: new Uint8Array([7, 3, 121, 87]),
|
|
38
|
-
type: "bar" },
|
|
39
|
-
mediaKeySession: { sessionId: "tutu" },
|
|
40
|
-
sessionType: "" };
|
|
41
|
-
|
|
42
|
-
function createLoadedSessionsStore() : LoadedSessionsStore {
|
|
43
|
-
return {
|
|
44
|
-
getLength() {
|
|
45
|
-
return 3;
|
|
46
|
-
},
|
|
47
|
-
getAll() {
|
|
48
|
-
return [entry1, entry2, entry3];
|
|
49
|
-
},
|
|
50
|
-
closeSession() {
|
|
51
|
-
return new Promise((res) => {
|
|
52
|
-
setTimeout(res, Math.random() * 50);
|
|
53
|
-
});
|
|
54
|
-
},
|
|
55
|
-
} as unknown as LoadedSessionsStore;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const emptyLoadedSessionsStore = {
|
|
59
|
-
getLength() { return 0; },
|
|
60
|
-
getAll() { return []; },
|
|
61
|
-
closeSession() { throw new Error("closeSession should not have been called"); },
|
|
62
|
-
} as unknown as LoadedSessionsStore;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Call `cleanOldLoadedSessions` with the given loadedSessionsStore and
|
|
66
|
-
* limit and make sure that:
|
|
67
|
-
* - no side-effect happen when running
|
|
68
|
-
* - nothing is emitted
|
|
69
|
-
* - it just complete without an error
|
|
70
|
-
* Call `done` when done.
|
|
71
|
-
* @param {Object} loadedSessionsStore
|
|
72
|
-
* @param {number} limit
|
|
73
|
-
* @param {Function} done
|
|
74
|
-
*/
|
|
75
|
-
async function checkNothingHappen(
|
|
76
|
-
loadedSessionsStore : LoadedSessionsStore,
|
|
77
|
-
limit : number
|
|
78
|
-
) : Promise<void> {
|
|
79
|
-
const mockCloseSession = jest.spyOn(loadedSessionsStore, "closeSession");
|
|
80
|
-
await cleanOldLoadedSessions(loadedSessionsStore, limit);
|
|
81
|
-
expect(mockCloseSession).not.toHaveBeenCalled();
|
|
82
|
-
mockCloseSession.mockRestore();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Call `cleanOldLoadedSessions` with the given loadedSessionsStore, limit and
|
|
87
|
-
* entries and make sure that:
|
|
88
|
-
* - closeSession is called on the specific entries a single time
|
|
89
|
-
* - it completes without an error
|
|
90
|
-
* Call `done` when done.
|
|
91
|
-
* @param {Object} loadedSessionsStore
|
|
92
|
-
* @param {number} limit
|
|
93
|
-
* @param {Array.<Object>} entries
|
|
94
|
-
*/
|
|
95
|
-
async function checkEntriesCleaned(
|
|
96
|
-
loadedSessionsStore : LoadedSessionsStore,
|
|
97
|
-
limit : number,
|
|
98
|
-
entries : Array<{ sessionId: string }>
|
|
99
|
-
) : Promise<void> {
|
|
100
|
-
const mockCloseSession = jest.spyOn(loadedSessionsStore, "closeSession");
|
|
101
|
-
const prom = cleanOldLoadedSessions(loadedSessionsStore, limit).then(() => {
|
|
102
|
-
expect(mockCloseSession).toHaveBeenCalledTimes(entries.length);
|
|
103
|
-
mockCloseSession.mockRestore();
|
|
104
|
-
});
|
|
105
|
-
expect(mockCloseSession).toHaveBeenCalledTimes(entries.length);
|
|
106
|
-
for (let i = 0; i < entries.length; i++) {
|
|
107
|
-
expect(mockCloseSession)
|
|
108
|
-
.toHaveBeenNthCalledWith(i + 1, entries[i]);
|
|
109
|
-
}
|
|
110
|
-
return prom;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
describe("core - decrypt - cleanOldLoadedSessions", () => {
|
|
114
|
-
it("should do nothing with a negative limit", async () => {
|
|
115
|
-
await checkNothingHappen(createLoadedSessionsStore(), -1);
|
|
116
|
-
await checkNothingHappen(createLoadedSessionsStore(), -20);
|
|
117
|
-
await checkNothingHappen(emptyLoadedSessionsStore, -20);
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it("should do nothing with a limit equal to NaN", async () => {
|
|
121
|
-
await checkNothingHappen(createLoadedSessionsStore(), NaN);
|
|
122
|
-
await checkNothingHappen(emptyLoadedSessionsStore, NaN);
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
it("should do nothing with a limit equal to -infinity", async () => {
|
|
126
|
-
await checkNothingHappen(createLoadedSessionsStore(), -Infinity);
|
|
127
|
-
await checkNothingHappen(emptyLoadedSessionsStore, -Infinity);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
it("should do nothing if the limit is superior to the current length", async () => {
|
|
131
|
-
await checkNothingHappen(createLoadedSessionsStore(), 4);
|
|
132
|
-
await checkNothingHappen(createLoadedSessionsStore(), 5);
|
|
133
|
-
await checkNothingHappen(createLoadedSessionsStore(), 6);
|
|
134
|
-
await checkNothingHappen(createLoadedSessionsStore(), +Infinity);
|
|
135
|
-
await checkNothingHappen(emptyLoadedSessionsStore, 1);
|
|
136
|
-
await checkNothingHappen(emptyLoadedSessionsStore, 2);
|
|
137
|
-
await checkNothingHappen(emptyLoadedSessionsStore, 1000);
|
|
138
|
-
await checkNothingHappen(emptyLoadedSessionsStore, +Infinity);
|
|
139
|
-
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
it("should do nothing if the limit is equal to the current length", async () => {
|
|
143
|
-
await checkNothingHappen(createLoadedSessionsStore(), 3);
|
|
144
|
-
await checkNothingHappen(emptyLoadedSessionsStore, 0);
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
it("should remove some if the limit is inferior to the current length", async () => {
|
|
148
|
-
await checkEntriesCleaned(createLoadedSessionsStore(), 1, [ entry1.mediaKeySession,
|
|
149
|
-
entry2.mediaKeySession ]);
|
|
150
|
-
await checkEntriesCleaned(createLoadedSessionsStore(), 2, [ entry1.mediaKeySession ]);
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
it("should remove all if the limit is equal to 0", async () => {
|
|
154
|
-
await checkEntriesCleaned(createLoadedSessionsStore(), 0, [ entry1.mediaKeySession,
|
|
155
|
-
entry2.mediaKeySession,
|
|
156
|
-
entry3.mediaKeySession ]);
|
|
157
|
-
});
|
|
158
|
-
});
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
18
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
19
|
-
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
20
|
-
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
21
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
22
|
-
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
23
|
-
|
|
24
|
-
function createPersistentSessionsStore() {
|
|
25
|
-
return {
|
|
26
|
-
getLength() : number {
|
|
27
|
-
return 3;
|
|
28
|
-
},
|
|
29
|
-
deleteOldSessions() : void {
|
|
30
|
-
return ;
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const emptyPersistentSessionsStore = {
|
|
36
|
-
getLength() { return 0; },
|
|
37
|
-
getAll() { return []; },
|
|
38
|
-
deleteOldSessions() : void { return ; },
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Call `cleanOldStoredPersistentInfo` with the given persistentSessionsStore
|
|
43
|
-
* and limit and make sure that no side-effect happen when running.
|
|
44
|
-
* @param {Object} persistentSessionsStore
|
|
45
|
-
* @param {number} limit
|
|
46
|
-
*/
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
48
|
-
function checkNothingHappen(persistentSessionsStore : any, limit : number) {
|
|
49
|
-
const mockDeleteLast = jest.spyOn(persistentSessionsStore, "deleteOldSessions");
|
|
50
|
-
const mockLogInfo = jest.fn();
|
|
51
|
-
jest.mock("../../../../log", () => ({ __esModule: true as const,
|
|
52
|
-
default: { info: mockLogInfo } }));
|
|
53
|
-
const cleanOldStoredPersistentInfo =
|
|
54
|
-
jest.requireActual("../clean_old_stored_persistent_info").default;
|
|
55
|
-
cleanOldStoredPersistentInfo(persistentSessionsStore, limit);
|
|
56
|
-
expect(mockDeleteLast).not.toHaveBeenCalled();
|
|
57
|
-
expect(mockLogInfo).not.toHaveBeenCalled();
|
|
58
|
-
jest.resetModules();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Call `cleanOldStoredPersistentInfo` with the given persistentSessionsStore
|
|
63
|
-
* and limit and check that the right number of session information is removed.
|
|
64
|
-
* @param {Object} persistentSessionsStore
|
|
65
|
-
* @param {number} limit
|
|
66
|
-
* @param {number} numberToRemove
|
|
67
|
-
*/
|
|
68
|
-
function checkRemoved(
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
|
-
persistentSessionsStore : any,
|
|
71
|
-
limit : number,
|
|
72
|
-
numberToRemove : number
|
|
73
|
-
) {
|
|
74
|
-
const mockDeleteLast = jest.spyOn(persistentSessionsStore, "deleteOldSessions");
|
|
75
|
-
const mockLogInfo = jest.fn();
|
|
76
|
-
jest.mock("../../../../log", () => ({ __esModule: true as const,
|
|
77
|
-
default: { info: mockLogInfo } }));
|
|
78
|
-
const cleanOldStoredPersistentInfo =
|
|
79
|
-
jest.requireActual("../clean_old_stored_persistent_info").default;
|
|
80
|
-
cleanOldStoredPersistentInfo(persistentSessionsStore, limit);
|
|
81
|
-
expect(mockDeleteLast).toHaveBeenCalledTimes(1);
|
|
82
|
-
expect(mockDeleteLast).toHaveBeenCalledWith(numberToRemove);
|
|
83
|
-
expect(mockLogInfo).toHaveBeenCalledTimes(1);
|
|
84
|
-
expect(mockLogInfo).toHaveBeenCalledWith("DRM: Too many stored persistent sessions," +
|
|
85
|
-
" removing some.",
|
|
86
|
-
persistentSessionsStore.getLength(),
|
|
87
|
-
numberToRemove);
|
|
88
|
-
jest.resetModules();
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
describe("core - decrypt - cleanOldStoredPersistentInfo", () => {
|
|
92
|
-
it("should do nothing with a negative limit", () => {
|
|
93
|
-
checkNothingHappen(createPersistentSessionsStore(), -1);
|
|
94
|
-
checkNothingHappen(createPersistentSessionsStore(), -20);
|
|
95
|
-
checkNothingHappen(emptyPersistentSessionsStore, -20);
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it("should do nothing with a limit equal to NaN", () => {
|
|
99
|
-
checkNothingHappen(createPersistentSessionsStore(), NaN);
|
|
100
|
-
checkNothingHappen(emptyPersistentSessionsStore, NaN);
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
it("should do nothing with a limit equal to -infinity", () => {
|
|
104
|
-
checkNothingHappen(createPersistentSessionsStore(), -Infinity);
|
|
105
|
-
checkNothingHappen(emptyPersistentSessionsStore, -Infinity);
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it("should do nothing if the limit is superior to the current length", () => {
|
|
109
|
-
checkNothingHappen(createPersistentSessionsStore(), 4);
|
|
110
|
-
checkNothingHappen(createPersistentSessionsStore(), 5);
|
|
111
|
-
checkNothingHappen(createPersistentSessionsStore(), 6);
|
|
112
|
-
checkNothingHappen(createPersistentSessionsStore(), +Infinity);
|
|
113
|
-
checkNothingHappen(emptyPersistentSessionsStore, 1);
|
|
114
|
-
checkNothingHappen(emptyPersistentSessionsStore, 2);
|
|
115
|
-
checkNothingHappen(emptyPersistentSessionsStore, 1000);
|
|
116
|
-
checkNothingHappen(emptyPersistentSessionsStore, +Infinity);
|
|
117
|
-
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it("should do nothing if the limit is equal to the current length", () => {
|
|
121
|
-
checkNothingHappen(createPersistentSessionsStore(), 3);
|
|
122
|
-
checkNothingHappen(emptyPersistentSessionsStore, 0);
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
it("should remove some if the limit is inferior to the current length", () => {
|
|
126
|
-
checkRemoved(createPersistentSessionsStore(), 1, 2);
|
|
127
|
-
checkRemoved(createPersistentSessionsStore(), 2, 1);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
it("should remove all if the limit is equal to 0", () => {
|
|
131
|
-
checkRemoved(createPersistentSessionsStore(), 0, 3);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import areArraysOfNumbersEqual from "../../../utils/are_arrays_of_numbers_equal";
|
|
18
|
-
import SerializableBytes from "./serializable_bytes";
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Returns `true` if both values are compatible initialization data, which
|
|
22
|
-
* means that one is completely contained in the other.
|
|
23
|
-
*
|
|
24
|
-
* Both values given should be sorted by systemId the same way.
|
|
25
|
-
* @param {Array.<Object>} stored
|
|
26
|
-
* @param {Array.<Object>} newElts
|
|
27
|
-
* @returns {boolean}
|
|
28
|
-
*/
|
|
29
|
-
export default function areInitializationValuesCompatible(
|
|
30
|
-
stored : Array<{ systemId : string | undefined;
|
|
31
|
-
hash : number;
|
|
32
|
-
data : Uint8Array | SerializableBytes | string; }>,
|
|
33
|
-
newElts : Array<{ systemId : string | undefined;
|
|
34
|
-
hash : number;
|
|
35
|
-
data : Uint8Array | SerializableBytes | string; }>
|
|
36
|
-
) : boolean {
|
|
37
|
-
return _isAInB(stored, newElts) ??
|
|
38
|
-
_isAInB(newElts, stored) ??
|
|
39
|
-
false;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Take two arrays of initialization data values, `a` and `b`, sorted by
|
|
44
|
-
* their `systemId` property in the same order.
|
|
45
|
-
*
|
|
46
|
-
* Returns `true` if `a` is not empty and is completely contained in the `b`
|
|
47
|
-
* array.
|
|
48
|
-
* This is equivalent to: "`a` is contained in `b`".
|
|
49
|
-
*
|
|
50
|
-
* Returns `false` either if `a` is empty or if `b` has different initialization
|
|
51
|
-
* data than it for equivalent system ids.
|
|
52
|
-
* This is equivalent to: "`a` represents different data than `b`".
|
|
53
|
-
*
|
|
54
|
-
* Returns `null` if `a` is not fully contained in `b` but can still be
|
|
55
|
-
* compatible with it.
|
|
56
|
-
* This is equivalent to: "`a` is not contained in `b`, but `b` could be
|
|
57
|
-
* contained in `a`".
|
|
58
|
-
* @param {Array.<Object>} a
|
|
59
|
-
* @param {Array.<Object>} b
|
|
60
|
-
* @returns {boolean}
|
|
61
|
-
*/
|
|
62
|
-
function _isAInB(
|
|
63
|
-
a : Array<{ systemId : string | undefined;
|
|
64
|
-
hash : number;
|
|
65
|
-
data : Uint8Array | SerializableBytes | string; }>,
|
|
66
|
-
b : Array<{ systemId : string | undefined;
|
|
67
|
-
hash : number;
|
|
68
|
-
data : Uint8Array | SerializableBytes | string; }>
|
|
69
|
-
) : boolean | null {
|
|
70
|
-
if (a.length === 0) {
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
if (b.length < a.length) {
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const firstAElt = a[0];
|
|
78
|
-
let aIdx = 0;
|
|
79
|
-
let bIdx = 0;
|
|
80
|
-
|
|
81
|
-
for (; bIdx < b.length; bIdx++) {
|
|
82
|
-
const bElt = b[bIdx];
|
|
83
|
-
if (bElt.systemId !== firstAElt.systemId) {
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
if (bElt.hash !== firstAElt.hash) {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const aData : Uint8Array =
|
|
91
|
-
firstAElt.data instanceof Uint8Array ? firstAElt.data :
|
|
92
|
-
typeof firstAElt.data === "string" ? SerializableBytes.decode(firstAElt.data) :
|
|
93
|
-
firstAElt.data.initData;
|
|
94
|
-
const bData : Uint8Array =
|
|
95
|
-
bElt.data instanceof Uint8Array ? bElt.data :
|
|
96
|
-
typeof bElt.data === "string" ? SerializableBytes.decode(bElt.data) :
|
|
97
|
-
bElt.data.initData;
|
|
98
|
-
if (!areArraysOfNumbersEqual(aData, bData)) {
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (b.length - bIdx < a.length) {
|
|
103
|
-
// not enough place to store `a`'s initialization data.
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// first `a` value was found. Check if all `a` values are found in `b`
|
|
108
|
-
for (aIdx = 1; aIdx < a.length; aIdx++) {
|
|
109
|
-
const aElt = a[aIdx];
|
|
110
|
-
for (bIdx += 1; bIdx < b.length; bIdx++) {
|
|
111
|
-
const bNewElt = b[bIdx];
|
|
112
|
-
if (aElt.systemId !== bNewElt.systemId) {
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
if (aElt.hash !== bNewElt.hash) {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
const aNewData : Uint8Array =
|
|
119
|
-
aElt.data instanceof Uint8Array ? aElt.data :
|
|
120
|
-
typeof aElt.data === "string" ? SerializableBytes.decode(aElt.data) :
|
|
121
|
-
aElt.data.initData;
|
|
122
|
-
const bNewData : Uint8Array =
|
|
123
|
-
bNewElt.data instanceof Uint8Array ? bNewElt.data :
|
|
124
|
-
typeof bNewElt.data === "string" ? SerializableBytes.decode(bNewElt.data) :
|
|
125
|
-
bNewElt.data.initData;
|
|
126
|
-
if (!areArraysOfNumbersEqual(aNewData, bNewData)) {
|
|
127
|
-
return false;
|
|
128
|
-
}
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
if (aIdx === b.length) {
|
|
132
|
-
// we didn't find `aElt`'s systemId in b
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
// If we're here, then we've found all `a`'s systemId in `b` and they match
|
|
137
|
-
return true;
|
|
138
|
-
}
|
|
139
|
-
return null; // We didn't find the firstAElt`s systemId in `b`.
|
|
140
|
-
}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import { ICustomMediaKeySession } from "../../../compat/eme";
|
|
18
|
-
/* eslint-disable-next-line max-len */
|
|
19
|
-
import getUUIDKidFromKeyStatusKID from "../../../compat/eme/get_uuid_kid_from_keystatus_kid";
|
|
20
|
-
import { EncryptedMediaError } from "../../../errors";
|
|
21
|
-
import log from "../../../log";
|
|
22
|
-
import {
|
|
23
|
-
IEncryptedMediaErrorKeyStatusObject,
|
|
24
|
-
IKeySystemOption,
|
|
25
|
-
IPlayerError,
|
|
26
|
-
} from "../../../public_types";
|
|
27
|
-
import assertUnreachable from "../../../utils/assert_unreachable";
|
|
28
|
-
import { bytesToHex } from "../../../utils/string_parsing";
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Error thrown when the MediaKeySession has to be closed due to a trigger
|
|
32
|
-
* specified by user configuration.
|
|
33
|
-
* Such MediaKeySession should be closed immediately and may be re-created if
|
|
34
|
-
* needed again.
|
|
35
|
-
* @class DecommissionedSessionError
|
|
36
|
-
* @extends Error
|
|
37
|
-
*/
|
|
38
|
-
export class DecommissionedSessionError extends Error {
|
|
39
|
-
public reason : IPlayerError;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Creates a new `DecommissionedSessionError`.
|
|
43
|
-
* @param {Error} reason - Error that led to the decision to close the
|
|
44
|
-
* current MediaKeySession. Should be used for reporting purposes.
|
|
45
|
-
*/
|
|
46
|
-
constructor(reason : IPlayerError) {
|
|
47
|
-
super();
|
|
48
|
-
// @see https://stackoverflow.com/questions/41102060/typescript-extending-error-class
|
|
49
|
-
Object.setPrototypeOf(this, DecommissionedSessionError.prototype);
|
|
50
|
-
this.reason = reason;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const KEY_STATUSES = { EXPIRED: "expired",
|
|
55
|
-
INTERNAL_ERROR: "internal-error",
|
|
56
|
-
OUTPUT_RESTRICTED: "output-restricted" };
|
|
57
|
-
|
|
58
|
-
export type IKeyStatusesCheckingOptions =
|
|
59
|
-
Pick<IKeySystemOption, "throwOnLicenseExpiration" | "fallbackOn" | "onKeyExpiration">;
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* MediaKeyStatusMap's iterator seems to be quite peculiar and wrongly defined
|
|
63
|
-
* by TypeScript.
|
|
64
|
-
*/
|
|
65
|
-
type IKeyStatusesForEach = (
|
|
66
|
-
callback: (
|
|
67
|
-
((arg1 : MediaKeyStatus, arg2 : ArrayBuffer) => void) |
|
|
68
|
-
((arg1 : ArrayBuffer, arg2 : MediaKeyStatus) => void)
|
|
69
|
-
)
|
|
70
|
-
) => void;
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Look at the current key statuses in the sessions and construct the
|
|
74
|
-
* appropriate warnings, whitelisted and blacklisted key ids.
|
|
75
|
-
*
|
|
76
|
-
* Throws if one of the keyID is on an error.
|
|
77
|
-
* @param {MediaKeySession} session - The MediaKeySession from which the keys
|
|
78
|
-
* will be checked.
|
|
79
|
-
* @param {Object} options
|
|
80
|
-
* @param {String} keySystem - The configuration keySystem used for deciphering
|
|
81
|
-
* @returns {Object} - Warnings to send, whitelisted and blacklisted key ids.
|
|
82
|
-
*/
|
|
83
|
-
export default function checkKeyStatuses(
|
|
84
|
-
session : MediaKeySession | ICustomMediaKeySession,
|
|
85
|
-
options: IKeyStatusesCheckingOptions,
|
|
86
|
-
keySystem: string
|
|
87
|
-
) : { warning : EncryptedMediaError | undefined;
|
|
88
|
-
blacklistedKeyIds : Uint8Array[];
|
|
89
|
-
whitelistedKeyIds : Uint8Array[]; }
|
|
90
|
-
{
|
|
91
|
-
const { fallbackOn = {},
|
|
92
|
-
throwOnLicenseExpiration,
|
|
93
|
-
onKeyExpiration } = options;
|
|
94
|
-
const blacklistedKeyIds : Uint8Array[] = [];
|
|
95
|
-
const whitelistedKeyIds : Uint8Array[] = [];
|
|
96
|
-
const badKeyStatuses: IEncryptedMediaErrorKeyStatusObject[] = [];
|
|
97
|
-
|
|
98
|
-
(session.keyStatuses.forEach as IKeyStatusesForEach)((
|
|
99
|
-
_arg1 : unknown,
|
|
100
|
-
_arg2 : unknown) => {
|
|
101
|
-
// Hack present because the order of the arguments has changed in spec
|
|
102
|
-
// and is not the same between some versions of Edge and Chrome.
|
|
103
|
-
const [keyStatus, keyStatusKeyId] = (() => {
|
|
104
|
-
return (typeof _arg1 === "string" ? [_arg1, _arg2] :
|
|
105
|
-
[_arg2, _arg1]) as [ MediaKeyStatus,
|
|
106
|
-
ArrayBuffer ];
|
|
107
|
-
})();
|
|
108
|
-
|
|
109
|
-
const keyId = getUUIDKidFromKeyStatusKID(keySystem,
|
|
110
|
-
new Uint8Array(keyStatusKeyId));
|
|
111
|
-
|
|
112
|
-
const keyStatusObj = { keyId: keyId.buffer, keyStatus };
|
|
113
|
-
|
|
114
|
-
if (log.hasLevel("DEBUG")) {
|
|
115
|
-
log.debug(`DRM: key status update (${bytesToHex(keyId)}): ${keyStatus}`);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
switch (keyStatus) {
|
|
119
|
-
case KEY_STATUSES.EXPIRED: {
|
|
120
|
-
const error = new EncryptedMediaError(
|
|
121
|
-
"KEY_STATUS_CHANGE_ERROR",
|
|
122
|
-
`A decryption key expired (${bytesToHex(keyId)})`,
|
|
123
|
-
{ keyStatuses: [keyStatusObj, ...badKeyStatuses] });
|
|
124
|
-
|
|
125
|
-
if (onKeyExpiration === "error" ||
|
|
126
|
-
(onKeyExpiration === undefined && throwOnLicenseExpiration === false))
|
|
127
|
-
{
|
|
128
|
-
throw error;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
switch (onKeyExpiration) {
|
|
132
|
-
case "close-session":
|
|
133
|
-
throw new DecommissionedSessionError(error);
|
|
134
|
-
case "fallback":
|
|
135
|
-
blacklistedKeyIds.push(keyId);
|
|
136
|
-
break;
|
|
137
|
-
default:
|
|
138
|
-
// I weirdly stopped relying on switch-cases here due to some TypeScript
|
|
139
|
-
// issue, not checking properly `case undefined` (bug?)
|
|
140
|
-
if (onKeyExpiration === "continue" || onKeyExpiration === undefined) {
|
|
141
|
-
whitelistedKeyIds.push(keyId);
|
|
142
|
-
} else {
|
|
143
|
-
// Compile-time check throwing when not all possible cases are handled
|
|
144
|
-
assertUnreachable(onKeyExpiration);
|
|
145
|
-
}
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
badKeyStatuses.push(keyStatusObj);
|
|
150
|
-
break;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
case KEY_STATUSES.INTERNAL_ERROR: {
|
|
154
|
-
if (fallbackOn.keyInternalError !== true) {
|
|
155
|
-
throw new EncryptedMediaError(
|
|
156
|
-
"KEY_STATUS_CHANGE_ERROR",
|
|
157
|
-
`A "${keyStatus}" status has been encountered (${bytesToHex(keyId)})`,
|
|
158
|
-
{ keyStatuses: [keyStatusObj, ...badKeyStatuses] });
|
|
159
|
-
}
|
|
160
|
-
badKeyStatuses.push(keyStatusObj);
|
|
161
|
-
blacklistedKeyIds.push(keyId);
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
case KEY_STATUSES.OUTPUT_RESTRICTED: {
|
|
166
|
-
if (fallbackOn.keyOutputRestricted !== true) {
|
|
167
|
-
throw new EncryptedMediaError(
|
|
168
|
-
"KEY_STATUS_CHANGE_ERROR",
|
|
169
|
-
`A "${keyStatus}" status has been encountered (${bytesToHex(keyId)})`,
|
|
170
|
-
{ keyStatuses: [keyStatusObj, ...badKeyStatuses] });
|
|
171
|
-
}
|
|
172
|
-
badKeyStatuses.push(keyStatusObj);
|
|
173
|
-
blacklistedKeyIds.push(keyId);
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
default:
|
|
178
|
-
whitelistedKeyIds.push(keyId);
|
|
179
|
-
break;
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
let warning;
|
|
184
|
-
if (badKeyStatuses.length > 0) {
|
|
185
|
-
warning = new EncryptedMediaError(
|
|
186
|
-
"KEY_STATUS_CHANGE_ERROR",
|
|
187
|
-
"One or several problematic key statuses have been encountered",
|
|
188
|
-
{ keyStatuses: badKeyStatuses });
|
|
189
|
-
}
|
|
190
|
-
return { warning,
|
|
191
|
-
blacklistedKeyIds,
|
|
192
|
-
whitelistedKeyIds };
|
|
193
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import log from "../../../log";
|
|
18
|
-
import LoadedSessionsStore from "./loaded_sessions_store";
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Close sessions from the loadedSessionsStore to allow at maximum `limit`
|
|
22
|
-
* stored MediaKeySessions in it.
|
|
23
|
-
*
|
|
24
|
-
* Emit event when a MediaKeySession begin to be closed and another when the
|
|
25
|
-
* MediaKeySession is closed.
|
|
26
|
-
* @param {Object} loadedSessionsStore
|
|
27
|
-
* @returns {Promise}
|
|
28
|
-
*/
|
|
29
|
-
export default async function cleanOldLoadedSessions(
|
|
30
|
-
loadedSessionsStore : LoadedSessionsStore,
|
|
31
|
-
limit : number
|
|
32
|
-
) : Promise<void> {
|
|
33
|
-
if (limit < 0 || limit >= loadedSessionsStore.getLength()) {
|
|
34
|
-
return ;
|
|
35
|
-
}
|
|
36
|
-
log.info("DRM: LSS cache limit exceeded", limit, loadedSessionsStore.getLength());
|
|
37
|
-
const proms : Array<Promise<unknown>> = [];
|
|
38
|
-
const entries = loadedSessionsStore.getAll().slice(); // clone
|
|
39
|
-
const toDelete = entries.length - limit;
|
|
40
|
-
for (let i = 0; i < toDelete; i++) {
|
|
41
|
-
const entry = entries[i];
|
|
42
|
-
proms.push(loadedSessionsStore.closeSession(entry.mediaKeySession));
|
|
43
|
-
}
|
|
44
|
-
await Promise.all(proms);
|
|
45
|
-
}
|