rx-player 4.0.0-beta.0 → 4.0.0-beta.2
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 +8 -0
- package/CHANGELOG.md +93 -0
- package/CONTRIBUTING.md +48 -168
- package/FILES.md +40 -92
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/browser_detection.d.ts +25 -12
- package/dist/_esm5.processed/compat/browser_detection.js +85 -38
- package/dist/_esm5.processed/compat/can_reuse_media_keys.js +2 -2
- package/dist/_esm5.processed/compat/eme/close_session.js +2 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +1 -1
- package/dist/_esm5.processed/compat/event_listeners.js +1 -1
- package/dist/_esm5.processed/compat/has_issues_with_high_media_source_duration.d.ts +21 -0
- package/dist/_esm5.processed/compat/has_issues_with_high_media_source_duration.js +26 -0
- package/dist/_esm5.processed/config.d.ts +4 -0
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +9 -6
- package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.d.ts +18 -1
- package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.js +106 -25
- package/dist/_esm5.processed/core/adaptive/guess_based_chooser.js +6 -6
- package/dist/_esm5.processed/core/adaptive/network_analyzer.js +8 -5
- package/dist/_esm5.processed/core/adaptive/utils/representation_score_calculator.d.ts +19 -1
- package/dist/_esm5.processed/core/adaptive/utils/representation_score_calculator.js +1 -1
- package/dist/_esm5.processed/core/api/debug/buffer_graph.d.ts +28 -0
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +175 -0
- package/dist/_esm5.processed/core/api/debug/buffer_size_graph.d.ts +10 -0
- package/dist/_esm5.processed/core/api/debug/buffer_size_graph.js +104 -0
- package/dist/_esm5.processed/core/api/debug/constants.d.ts +2 -0
- package/dist/_esm5.processed/core/api/debug/constants.js +2 -0
- package/dist/_esm5.processed/core/api/debug/index.d.ts +2 -0
- package/dist/_esm5.processed/core/api/debug/index.js +2 -0
- package/dist/_esm5.processed/core/api/debug/modules/general_info.d.ts +3 -0
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +180 -0
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.d.ts +4 -0
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +121 -0
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.d.ts +3 -0
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +35 -0
- package/dist/_esm5.processed/core/api/debug/render.d.ts +3 -0
- package/dist/_esm5.processed/core/api/debug/render.js +32 -0
- package/dist/_esm5.processed/core/api/debug/utils.d.ts +39 -0
- package/dist/_esm5.processed/core/api/debug/utils.js +57 -0
- package/dist/_esm5.processed/core/api/playback_observer.js +4 -2
- package/dist/_esm5.processed/core/api/public_api.d.ts +60 -3
- package/dist/_esm5.processed/core/api/public_api.js +280 -60
- package/dist/_esm5.processed/core/api/track_management/media_element_tracks_store.js +10 -1
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +13 -1
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +30 -15
- package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +3 -1
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +67 -152
- package/dist/_esm5.processed/core/api/utils.d.ts +10 -0
- package/dist/_esm5.processed/core/api/utils.js +23 -3
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.d.ts +27 -8
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +28 -7
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +1 -1
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +1 -1
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +29 -6
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +42 -32
- package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.js +4 -0
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +2 -0
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +5 -1
- package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.d.ts +17 -8
- package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.js +10 -6
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +5 -4
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +22 -5
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +37 -21
- package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.js +21 -23
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +17 -7
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +2 -2
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +74 -41
- package/dist/_esm5.processed/core/init/types.d.ts +9 -1
- package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.d.ts +28 -1
- package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +24 -11
- package/dist/_esm5.processed/core/init/utils/create_media_source.js +3 -12
- package/dist/_esm5.processed/core/init/utils/end_of_stream.js +6 -3
- package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +2 -1
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +9 -5
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +2 -1
- package/dist/_esm5.processed/core/init/utils/media_source_duration_updater.d.ts +58 -0
- package/dist/_esm5.processed/core/init/utils/{media_duration_updater.js → media_source_duration_updater.js} +87 -86
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +36 -2
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +83 -3
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +6 -4
- package/dist/_esm5.processed/core/init/utils/throw_on_media_error.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.d.ts +18 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +38 -50
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +8 -0
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +16 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +8 -0
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +12 -0
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +11 -4
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +13 -9
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +30 -16
- package/dist/_esm5.processed/core/stream/adaptation/utils/create_representation_estimator.d.ts +47 -0
- package/dist/_esm5.processed/core/stream/adaptation/utils/create_representation_estimator.js +70 -0
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +41 -20
- package/dist/_esm5.processed/core/stream/period/period_stream.js +12 -11
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +37 -28
- package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.d.ts +4 -2
- package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.js +3 -3
- package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +16 -6
- package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.d.ts +3 -2
- package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +8 -8
- package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +2 -3
- package/dist/_esm5.processed/core/stream/utils/create_reload_request.js +1 -1
- package/dist/_esm5.processed/default_config.d.ts +41 -0
- package/dist/_esm5.processed/default_config.js +46 -2
- package/dist/_esm5.processed/errors/index.d.ts +2 -2
- package/dist/_esm5.processed/errors/media_error.d.ts +23 -1
- package/dist/_esm5.processed/errors/media_error.js +18 -5
- package/dist/_esm5.processed/experimental/features/debug_element.d.ts +8 -0
- package/dist/_esm5.processed/experimental/features/debug_element.js +10 -0
- package/dist/_esm5.processed/experimental/features/index.d.ts +1 -0
- package/dist/_esm5.processed/experimental/features/index.js +1 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.js +8 -7
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +7 -4
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +24 -12
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/index.js +0 -2
- package/dist/_esm5.processed/features/features_object.js +1 -0
- package/dist/_esm5.processed/features/initialize_features.js +13 -10
- package/dist/_esm5.processed/features/types.d.ts +3 -0
- package/dist/_esm5.processed/manifest/adaptation.d.ts +21 -2
- package/dist/_esm5.processed/manifest/adaptation.js +80 -1
- package/dist/_esm5.processed/manifest/manifest.js +2 -0
- package/dist/_esm5.processed/manifest/period.js +2 -2
- package/dist/_esm5.processed/manifest/representation.d.ts +33 -2
- package/dist/_esm5.processed/manifest/representation.js +32 -4
- package/dist/_esm5.processed/manifest/utils.js +1 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +105 -137
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +25 -5
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -0
- package/dist/_esm5.processed/public_types.d.ts +13 -3
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +1 -1
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +15 -11
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
- package/dist/_esm5.processed/transports/dash/segment_loader.js +4 -4
- package/dist/_esm5.processed/transports/local/segment_loader.js +13 -26
- package/dist/_esm5.processed/transports/smooth/isobmff/create_boxes.d.ts +4 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/create_boxes.js +4 -6
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +4 -4
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +3 -3
- package/dist/_esm5.processed/utils/cancellable_sleep.js +4 -10
- package/dist/_esm5.processed/utils/create_cancellable_promise.d.ts +26 -0
- package/dist/_esm5.processed/utils/create_cancellable_promise.js +52 -0
- package/dist/_esm5.processed/utils/is_null_or_undefined.d.ts +1 -1
- package/dist/_esm5.processed/utils/is_null_or_undefined.js +1 -1
- package/dist/_esm5.processed/utils/reference.js +6 -0
- package/dist/_esm5.processed/utils/request/xhr.js +1 -1
- package/dist/_esm5.processed/utils/task_canceller.d.ts +34 -15
- package/dist/_esm5.processed/utils/task_canceller.js +55 -22
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +5424 -4712
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +1 -5
- package/package.json +44 -40
- package/scripts/build/constants.d.ts +1 -0
- package/scripts/build/generate_build.js +1 -1
- package/scripts/fast_demo_build.js +40 -40
- package/scripts/generate_full_demo.js +1 -1
- package/sonar-project.properties +1 -1
- package/src/compat/browser_detection.ts +105 -52
- package/src/compat/can_reuse_media_keys.ts +5 -2
- package/src/compat/eme/close_session.ts +2 -2
- package/src/compat/eme/load_session.ts +1 -1
- package/src/compat/event_listeners.ts +1 -1
- package/src/compat/has_issues_with_high_media_source_duration.ts +27 -0
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +147 -48
- package/src/core/adaptive/adaptive_representation_selector.ts +11 -6
- package/src/core/adaptive/buffer_based_chooser.ts +144 -26
- package/src/core/adaptive/guess_based_chooser.ts +9 -8
- package/src/core/adaptive/network_analyzer.ts +9 -4
- package/src/core/adaptive/utils/representation_score_calculator.ts +22 -2
- package/src/core/api/debug/buffer_graph.ts +247 -0
- package/src/core/api/debug/buffer_size_graph.ts +130 -0
- package/src/core/api/debug/constants.ts +2 -0
- package/src/core/api/debug/index.ts +3 -0
- package/src/core/api/debug/modules/general_info.ts +184 -0
- package/src/core/api/debug/modules/segment_buffer_content.ts +155 -0
- package/src/core/api/debug/modules/segment_buffer_size.ts +48 -0
- package/src/core/api/debug/render.ts +40 -0
- package/src/core/api/debug/utils.ts +103 -0
- package/src/core/api/playback_observer.ts +5 -2
- package/src/core/api/public_api.ts +334 -73
- package/src/core/api/track_management/media_element_tracks_store.ts +17 -8
- package/src/core/api/track_management/track_dispatcher.ts +37 -14
- package/src/core/api/track_management/tracks_store.ts +77 -167
- package/src/core/api/utils.ts +29 -3
- package/src/core/decrypt/__tests__/__global__/utils.ts +61 -40
- package/src/core/decrypt/attach_media_keys.ts +1 -1
- package/src/core/decrypt/content_decryptor.ts +1 -1
- package/src/core/decrypt/find_key_system.ts +25 -11
- package/src/core/decrypt/session_events_listener.ts +45 -39
- package/src/core/decrypt/utils/check_key_statuses.ts +6 -0
- package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +2 -1
- package/src/core/decrypt/utils/loaded_sessions_store.ts +8 -1
- package/src/core/fetchers/cdn_prioritizer.ts +18 -9
- package/src/core/fetchers/manifest/manifest_fetcher.ts +5 -4
- package/src/core/fetchers/segment/segment_fetcher.ts +36 -14
- package/src/core/fetchers/segment/task_prioritizer.ts +25 -30
- package/src/core/fetchers/utils/schedule_request.ts +18 -7
- package/src/core/init/directfile_content_initializer.ts +2 -1
- package/src/core/init/media_source_content_initializer.ts +89 -50
- package/src/core/init/types.ts +9 -1
- package/src/core/init/utils/content_time_boundaries_observer.ts +48 -12
- package/src/core/init/utils/create_media_source.ts +4 -16
- package/src/core/init/utils/end_of_stream.ts +6 -3
- package/src/core/init/utils/get_loaded_reference.ts +2 -1
- package/src/core/init/utils/initial_seek_and_play.ts +9 -5
- package/src/core/init/utils/initialize_content_decryption.ts +2 -1
- package/src/core/init/utils/{media_duration_updater.ts → media_source_duration_updater.ts} +103 -110
- package/src/core/init/utils/rebuffering_controller.ts +115 -4
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +6 -4
- package/src/core/init/utils/throw_on_media_error.ts +1 -1
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +63 -66
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +20 -2
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +16 -0
- package/src/core/segment_buffers/implementations/types.ts +16 -4
- package/src/core/segment_buffers/index.ts +2 -0
- package/src/core/segment_buffers/segment_buffers_store.ts +16 -13
- package/src/core/stream/adaptation/adaptation_stream.ts +33 -19
- package/src/core/stream/adaptation/utils/create_representation_estimator.ts +114 -0
- package/src/core/stream/orchestrator/stream_orchestrator.ts +42 -20
- package/src/core/stream/period/period_stream.ts +13 -11
- package/src/core/stream/representation/representation_stream.ts +49 -37
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +9 -4
- package/src/core/stream/representation/utils/downloading_queue.ts +16 -4
- package/src/core/stream/representation/utils/push_init_segment.ts +11 -6
- package/src/core/stream/representation/utils/push_media_segment.ts +3 -3
- package/src/core/stream/utils/create_reload_request.ts +1 -1
- package/src/default_config.ts +59 -11
- package/src/errors/__tests__/media_error.test.ts +6 -6
- package/src/errors/index.ts +4 -1
- package/src/errors/media_error.ts +67 -1
- package/src/experimental/features/__tests__/debug_element.test.ts +26 -0
- package/src/experimental/features/debug_element.ts +13 -0
- package/src/experimental/features/index.ts +1 -0
- package/src/experimental/tools/VideoThumbnailLoader/load_and_push_segment.ts +10 -7
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +7 -4
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +25 -10
- package/src/experimental/tools/mediaCapabilitiesProber/index.ts +0 -4
- package/src/features/__tests__/initialize_features.test.ts +11 -0
- package/src/features/features_object.ts +1 -0
- package/src/features/initialize_features.ts +15 -10
- package/src/features/types.ts +9 -0
- package/src/manifest/__tests__/manifest.test.ts +7 -7
- package/src/manifest/__tests__/period.test.ts +90 -45
- package/src/manifest/adaptation.ts +96 -1
- package/src/manifest/manifest.ts +4 -0
- package/src/manifest/period.ts +4 -2
- package/src/manifest/representation.ts +77 -5
- package/src/manifest/utils.ts +1 -3
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +116 -151
- package/src/parsers/manifest/dash/common/parse_representations.ts +21 -4
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +1 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -0
- package/src/parsers/texttracks/ttml/parse_ttml.ts +1 -1
- package/src/public_types.ts +16 -1
- package/src/tools/TextTrackRenderer/text_track_renderer.ts +1 -1
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +31 -22
- package/src/transports/dash/low_latency_segment_loader.ts +2 -2
- package/src/transports/dash/manifest_parser.ts +1 -1
- package/src/transports/dash/segment_loader.ts +4 -4
- package/src/transports/local/segment_loader.ts +14 -30
- package/src/transports/smooth/isobmff/create_boxes.ts +4 -6
- package/src/transports/smooth/segment_loader.ts +4 -4
- package/src/transports/utils/call_custom_manifest_loader.ts +3 -3
- package/src/typings/globals.d.ts +21 -19
- package/src/utils/cancellable_sleep.ts +5 -14
- package/src/utils/create_cancellable_promise.ts +69 -0
- package/src/utils/is_null_or_undefined.ts +1 -1
- package/src/utils/reference.ts +6 -0
- package/src/utils/request/xhr.ts +1 -1
- package/src/utils/task_canceller.ts +63 -34
- package/tsconfig.json +1 -1
- package/tsconfig.modules.json +1 -1
- package/dist/_esm5.processed/core/init/utils/media_duration_updater.d.ts +0 -56
- package/locked_reps.js +0 -46
- package/scripts/doc-generator/construct_table_of_contents.js +0 -76
- package/scripts/doc-generator/convert_MD_to_HMTL.js +0 -26
- package/scripts/doc-generator/create_documentation.js +0 -331
- package/scripts/doc-generator/create_documentation_page.js +0 -209
- package/scripts/doc-generator/create_page.js +0 -210
- package/scripts/doc-generator/generate_header_html.js +0 -147
- package/scripts/doc-generator/generate_page_html.js +0 -115
- package/scripts/doc-generator/generate_page_list_html.js +0 -92
- package/scripts/doc-generator/generate_sidebar_html.js +0 -85
- package/scripts/doc-generator/get_search_data_for_content.js +0 -137
- package/scripts/doc-generator/index.js +0 -34
- package/scripts/doc-generator/parse_doc_configs.js +0 -327
- package/scripts/doc-generator/scripts/lunr.js +0 -10
- package/scripts/doc-generator/scripts/script.js +0 -451
- package/scripts/doc-generator/styles/code.css +0 -99
- package/scripts/doc-generator/styles/style.css +0 -835
- package/scripts/doc-generator/utils.js +0 -74
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import log from "../log";
|
|
17
18
|
import assert from "./assert";
|
|
18
19
|
import noop from "./noop";
|
|
19
20
|
|
|
@@ -120,12 +121,12 @@ export default class TaskCanceller {
|
|
|
120
121
|
* notified that it should be aborted when this `TaskCanceller` is triggered
|
|
121
122
|
* (through its `cancel` method).
|
|
122
123
|
*/
|
|
123
|
-
public signal : CancellationSignal;
|
|
124
|
+
public readonly signal : CancellationSignal;
|
|
124
125
|
/**
|
|
125
126
|
* `true` if this `TaskCanceller` has already been triggered.
|
|
126
127
|
* `false` otherwise.
|
|
127
128
|
*/
|
|
128
|
-
|
|
129
|
+
private _isUsed : boolean;
|
|
129
130
|
/**
|
|
130
131
|
* @private
|
|
131
132
|
* Internal function called when the `TaskCanceller` is triggered`.
|
|
@@ -136,28 +137,43 @@ export default class TaskCanceller {
|
|
|
136
137
|
* Creates a new `TaskCanceller`, with its own `CancellationSignal` created
|
|
137
138
|
* as its `signal` provide.
|
|
138
139
|
* You can then pass this property to async task you wish to be cancellable.
|
|
139
|
-
* @param {Object|undefined} options
|
|
140
140
|
*/
|
|
141
|
-
constructor(
|
|
142
|
-
/**
|
|
143
|
-
* If set the TaskCanceller created here will automatically be triggered
|
|
144
|
-
* when that signal emits.
|
|
145
|
-
*/
|
|
146
|
-
cancelOn? : CancellationSignal | undefined;
|
|
147
|
-
} | undefined) {
|
|
141
|
+
constructor() {
|
|
148
142
|
const [trigger, register] = createCancellationFunctions();
|
|
149
|
-
this.
|
|
143
|
+
this._isUsed = false;
|
|
150
144
|
this._trigger = trigger;
|
|
151
145
|
this.signal = new CancellationSignal(register);
|
|
146
|
+
}
|
|
152
147
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Returns `true` if this `TaskCanceller` has already been triggered.
|
|
150
|
+
* `false` otherwise.
|
|
151
|
+
*/
|
|
152
|
+
public isUsed() : boolean {
|
|
153
|
+
return this._isUsed;
|
|
159
154
|
}
|
|
160
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Bind this `TaskCanceller` to a `CancellationSignal`, so the former
|
|
158
|
+
* is automatically cancelled when the latter is triggered.
|
|
159
|
+
*
|
|
160
|
+
* Note that this call registers a callback on the given signal, until either
|
|
161
|
+
* the current `TaskCanceller` is cancelled or until this given
|
|
162
|
+
* `CancellationSignal` is triggered.
|
|
163
|
+
* To avoid leaking memory, the returned callback allow to undo this link.
|
|
164
|
+
* It should be called if/when that link is not needed anymore, such as when
|
|
165
|
+
* there is no need for this `TaskCanceller` anymore.
|
|
166
|
+
*
|
|
167
|
+
* @param {Object} signal
|
|
168
|
+
* @returns {Function}
|
|
169
|
+
*/
|
|
170
|
+
public linkToSignal(signal : CancellationSignal) : () => void {
|
|
171
|
+
const unregister = signal.register(() => {
|
|
172
|
+
this.cancel();
|
|
173
|
+
});
|
|
174
|
+
this.signal.register(unregister);
|
|
175
|
+
return unregister;
|
|
176
|
+
}
|
|
161
177
|
|
|
162
178
|
/**
|
|
163
179
|
* "Trigger" the `TaskCanceller`, notify through its associated
|
|
@@ -171,10 +187,10 @@ export default class TaskCanceller {
|
|
|
171
187
|
* @param {Error} [srcError]
|
|
172
188
|
*/
|
|
173
189
|
public cancel(srcError? : CancellationError) : void {
|
|
174
|
-
if (this.
|
|
190
|
+
if (this._isUsed) {
|
|
175
191
|
return ;
|
|
176
192
|
}
|
|
177
|
-
this.
|
|
193
|
+
this._isUsed = true;
|
|
178
194
|
const cancellationError = srcError ?? new CancellationError();
|
|
179
195
|
this._trigger(cancellationError);
|
|
180
196
|
}
|
|
@@ -196,11 +212,6 @@ export default class TaskCanceller {
|
|
|
196
212
|
* @class
|
|
197
213
|
*/
|
|
198
214
|
export class CancellationSignal {
|
|
199
|
-
/**
|
|
200
|
-
* True when the cancellation order was already triggered, meaning that the
|
|
201
|
-
* linked task needs to be aborted.
|
|
202
|
-
*/
|
|
203
|
-
public isCancelled : boolean;
|
|
204
215
|
/**
|
|
205
216
|
* Error associated to the cancellation, only set if the `CancellationSignal`
|
|
206
217
|
* has been used (which means that the task has been cancelled).
|
|
@@ -220,6 +231,12 @@ export class CancellationSignal {
|
|
|
220
231
|
*/
|
|
221
232
|
private _listeners : Array<(error : CancellationError) => void>;
|
|
222
233
|
|
|
234
|
+
/**
|
|
235
|
+
* True when the cancellation order was already triggered, meaning that the
|
|
236
|
+
* linked task needs to be aborted.
|
|
237
|
+
*/
|
|
238
|
+
private _isCancelled : boolean;
|
|
239
|
+
|
|
223
240
|
/**
|
|
224
241
|
* Creates a new CancellationSignal.
|
|
225
242
|
* /!\ Note: Only a `TaskCanceller` is supposed to be able to create one.
|
|
@@ -227,20 +244,35 @@ export class CancellationSignal {
|
|
|
227
244
|
* cancelled.
|
|
228
245
|
*/
|
|
229
246
|
constructor(registerToSource : (listener: ICancellationListener) => void) {
|
|
230
|
-
this.
|
|
247
|
+
this._isCancelled = false;
|
|
231
248
|
this.cancellationError = null;
|
|
232
249
|
this._listeners = [];
|
|
233
250
|
|
|
234
251
|
registerToSource((cancellationError : CancellationError) : void => {
|
|
235
252
|
this.cancellationError = cancellationError;
|
|
236
|
-
this.
|
|
253
|
+
this._isCancelled = true;
|
|
237
254
|
while (this._listeners.length > 0) {
|
|
238
|
-
|
|
239
|
-
|
|
255
|
+
try {
|
|
256
|
+
const listener = this._listeners.pop();
|
|
257
|
+
listener?.(cancellationError);
|
|
258
|
+
} catch (err) {
|
|
259
|
+
log.error("Error while calling clean up listener",
|
|
260
|
+
err instanceof Error ? err.toString() :
|
|
261
|
+
"Unknown error");
|
|
262
|
+
}
|
|
240
263
|
}
|
|
241
264
|
});
|
|
242
265
|
}
|
|
243
266
|
|
|
267
|
+
/**
|
|
268
|
+
* Returns `true` when the cancellation order was already triggered, meaning
|
|
269
|
+
* that the linked task needs to be aborted.
|
|
270
|
+
* @returns boolean
|
|
271
|
+
*/
|
|
272
|
+
public isCancelled() : boolean {
|
|
273
|
+
return this._isCancelled;
|
|
274
|
+
}
|
|
275
|
+
|
|
244
276
|
/**
|
|
245
277
|
* Registers a function that will be called when/if the current task is
|
|
246
278
|
* cancelled.
|
|
@@ -263,9 +295,10 @@ export class CancellationSignal {
|
|
|
263
295
|
* performed.
|
|
264
296
|
*/
|
|
265
297
|
public register(fn : ICancellationListener) : () => void {
|
|
266
|
-
if (this.
|
|
298
|
+
if (this._isCancelled) {
|
|
267
299
|
assert(this.cancellationError !== null);
|
|
268
300
|
fn(this.cancellationError);
|
|
301
|
+
return noop;
|
|
269
302
|
}
|
|
270
303
|
this._listeners.push(fn);
|
|
271
304
|
return () => this.deregister(fn);
|
|
@@ -280,13 +313,9 @@ export class CancellationSignal {
|
|
|
280
313
|
* @param {Function} fn
|
|
281
314
|
*/
|
|
282
315
|
public deregister(fn : ICancellationListener) : void {
|
|
283
|
-
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
286
|
-
for (let i = 0; i < this._listeners.length; i++) {
|
|
316
|
+
for (let i = this._listeners.length - 1; i >= 0; i--) {
|
|
287
317
|
if (this._listeners[i] === fn) {
|
|
288
318
|
this._listeners.splice(i, 1);
|
|
289
|
-
return;
|
|
290
319
|
}
|
|
291
320
|
}
|
|
292
321
|
}
|
package/tsconfig.json
CHANGED
package/tsconfig.modules.json
CHANGED
|
@@ -1,56 +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
|
-
import Manifest from "../../../manifest";
|
|
17
|
-
/**
|
|
18
|
-
* Keep the MediaSource's duration up-to-date with what is being played.
|
|
19
|
-
* @class MediaDurationUpdater
|
|
20
|
-
*/
|
|
21
|
-
export default class MediaDurationUpdater {
|
|
22
|
-
private _canceller;
|
|
23
|
-
/**
|
|
24
|
-
* The last known audio Adaptation (i.e. track) chosen for the last Period.
|
|
25
|
-
* Useful to determinate the duration of the current content.
|
|
26
|
-
* `undefined` if the audio track for the last Period has never been known yet.
|
|
27
|
-
* `null` if there are no chosen audio Adaptation.
|
|
28
|
-
*/
|
|
29
|
-
private _currentKnownDuration;
|
|
30
|
-
/**
|
|
31
|
-
* Create a new `MediaDurationUpdater` that will keep the given MediaSource's
|
|
32
|
-
* duration as soon as possible.
|
|
33
|
-
* This duration will be updated until the `stop` method is called.
|
|
34
|
-
* @param {Object} manifest - The Manifest currently played.
|
|
35
|
-
* For another content, you will have to create another `MediaDurationUpdater`.
|
|
36
|
-
* @param {MediaSource} mediaSource - The MediaSource on which the content is
|
|
37
|
-
* pushed.
|
|
38
|
-
*/
|
|
39
|
-
constructor(manifest: Manifest, mediaSource: MediaSource);
|
|
40
|
-
/**
|
|
41
|
-
* By default, the `MediaDurationUpdater` only set a safe estimate for the
|
|
42
|
-
* MediaSource's duration.
|
|
43
|
-
* A more precize duration can be set by communicating to it a more precize
|
|
44
|
-
* media duration through `updateKnownDuration`.
|
|
45
|
-
* If the duration becomes unknown, `undefined` can be given to it so the
|
|
46
|
-
* `MediaDurationUpdater` goes back to a safe estimate.
|
|
47
|
-
* @param {number | undefined} newDuration
|
|
48
|
-
*/
|
|
49
|
-
updateKnownDuration(newDuration: number | undefined): void;
|
|
50
|
-
/**
|
|
51
|
-
* Stop the `MediaDurationUpdater` from updating and free its resources.
|
|
52
|
-
* Once stopped, it is not possible to start it again, beside creating another
|
|
53
|
-
* `MediaDurationUpdater`.
|
|
54
|
-
*/
|
|
55
|
-
stop(): void;
|
|
56
|
-
}
|
package/locked_reps.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
function chooseQualityBasedOnHeight(height) {
|
|
2
|
-
const videoReps = player.getAvailableVideoRepresentations(period.id);
|
|
3
|
-
|
|
4
|
-
const filtered = videoReps
|
|
5
|
-
.filter(v => v.height === height);
|
|
6
|
-
|
|
7
|
-
if (filtered.length > 0) {
|
|
8
|
-
player.lockVideoRepresentations(filtered);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function switchVideoToAuto() {
|
|
13
|
-
player.unlockVideoRepresentations();
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
player.areVideoRepresentationsLocked();
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// -> persisté entre Period => oui
|
|
20
|
-
// -> persisté au changement de piste ?
|
|
21
|
-
// Si oui, necessité de connaitre d'avance les locked pour une autre piste
|
|
22
|
-
//
|
|
23
|
-
// -> que faire si Array vide ? On plante
|
|
24
|
-
// -> que faire si fallback ? => débloque et on envoie un event
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
player.setVideoBitrate();
|
|
28
|
-
player.getVideoBitrate();
|
|
29
|
-
|
|
30
|
-
player.lockVideoRepresentations({
|
|
31
|
-
representations: filtered,
|
|
32
|
-
periodId,
|
|
33
|
-
switchBehavior: "reload" | "smooth" | "direct",
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
player.lockVideoRepresentations({
|
|
37
|
-
representations: filtered,
|
|
38
|
-
periodId,
|
|
39
|
-
switchBehavior: "reload" | "smooth" | "direct",
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
player.setVideoTrack({
|
|
43
|
-
periodId,
|
|
44
|
-
trackId,
|
|
45
|
-
switchBehavior: "reload" | "smooth" | "direct",
|
|
46
|
-
});
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Create table of contents in markdown referencing the h1 (#), h2 (##) and
|
|
3
|
-
* h3 (###) titles.
|
|
4
|
-
* Also add links to them to the original markdown.
|
|
5
|
-
* @param {string} md - The markdown content
|
|
6
|
-
* @returns {string}
|
|
7
|
-
*/
|
|
8
|
-
function constructTableOfContents(md) {
|
|
9
|
-
const tocLines = [];
|
|
10
|
-
const newContent = [];
|
|
11
|
-
const lines = md.split(/\r\n|\n|\r/);
|
|
12
|
-
|
|
13
|
-
// Object used to avoid duplicates
|
|
14
|
-
const generatedAnchors = {};
|
|
15
|
-
|
|
16
|
-
// The inputed markdown is read line by line.
|
|
17
|
-
// When a h1, h2 or h3 is encountered in it, add a new list entry
|
|
18
|
-
// in the `tocLines` markdown respectively at top, second and third level.
|
|
19
|
-
// To be able to link the table of content to the corresponding content,
|
|
20
|
-
// add `<a>` links just before the corresponding h1, h2 or h3 elements in the
|
|
21
|
-
// inputed markdown.
|
|
22
|
-
// All Markdown parsing done here corresponds to the CommonMark spec (v0.29)
|
|
23
|
-
// TODO this might be more efficient and less error-prone if integrated as a
|
|
24
|
-
// markdown-it plugin.
|
|
25
|
-
for (let i = 0, len = lines.length; i < len; i++) {
|
|
26
|
-
if (/^ *# +/.test(lines[i])) {
|
|
27
|
-
const regExec = /^ *# +(.*)$/.exec(lines[i]);
|
|
28
|
-
if (regExec && regExec[1]) {
|
|
29
|
-
const tocLine = regExec[1].replace(/ #* *$/, "").trim();
|
|
30
|
-
let uri = generateAnchorName(tocLine);
|
|
31
|
-
tocLines.push(`[${tocLine}](#${uri})`);
|
|
32
|
-
newContent.push(`<a name="${uri}"></a>`);
|
|
33
|
-
}
|
|
34
|
-
} else if (/^ *## +/.test(lines[i])) {
|
|
35
|
-
const regExec = /^ *## +(.*)$/.exec(lines[i]);
|
|
36
|
-
if (regExec && regExec[1]) {
|
|
37
|
-
const tocLine = regExec[1].replace(/ #* *$/, "").trim();
|
|
38
|
-
let uri = generateAnchorName(tocLine);
|
|
39
|
-
tocLines.push(` - [${tocLine}](#${uri})`);
|
|
40
|
-
newContent.push(`<a name="${uri}"></a>`);
|
|
41
|
-
}
|
|
42
|
-
} else if (/^ *### +/.test(lines[i])) {
|
|
43
|
-
const regExec = /^ *### +(.*)$/.exec(lines[i]);
|
|
44
|
-
if (regExec && regExec[1]) {
|
|
45
|
-
const tocLine = regExec[1].replace(/ #* *$/, "").trim();
|
|
46
|
-
let uri = generateAnchorName(tocLine);
|
|
47
|
-
tocLines.push(` - [${tocLine}](#${uri})`);
|
|
48
|
-
newContent.push(`<a name="${uri}"></a>`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
newContent.push(lines[i]);
|
|
52
|
-
}
|
|
53
|
-
return {
|
|
54
|
-
tocMd: tocLines.join("\n"),
|
|
55
|
-
nbTocElements: tocLines.length,
|
|
56
|
-
content: newContent.join("\n"),
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
function generateAnchorName(title) {
|
|
60
|
-
const baseUri = encodeURI(title.toLowerCase().replace(/ /g, "_"))
|
|
61
|
-
if (generatedAnchors[baseUri] !== true) {
|
|
62
|
-
generatedAnchors[baseUri] = true;
|
|
63
|
-
return baseUri;
|
|
64
|
-
}
|
|
65
|
-
let i = 1;
|
|
66
|
-
let resultUri;
|
|
67
|
-
do {
|
|
68
|
-
resultUri = `${baseUri}_(${i})`;
|
|
69
|
-
i++;
|
|
70
|
-
} while (generatedAnchors[resultUri] === true);
|
|
71
|
-
generatedAnchors[resultUri] = true;
|
|
72
|
-
return resultUri;
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
module.exports = constructTableOfContents;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const hljs = require("highlight.js");
|
|
2
|
-
const md = require("markdown-it")({
|
|
3
|
-
highlight(str, lang) {
|
|
4
|
-
if (lang && hljs.getLanguage(lang)) {
|
|
5
|
-
try {
|
|
6
|
-
return hljs.highlight(str, { language: lang }).value;
|
|
7
|
-
} catch (_) {
|
|
8
|
-
/* don't care for now */
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
return "";
|
|
12
|
-
},
|
|
13
|
-
html: true,
|
|
14
|
-
linkify: true,
|
|
15
|
-
typographer: true,
|
|
16
|
-
xhtmlOut: true,
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Convert the Markdown document given into an HTML page.
|
|
21
|
-
* @param {string} mdStr
|
|
22
|
-
* @returns {string}
|
|
23
|
-
*/
|
|
24
|
-
module.exports = function convertMDToHTML(mdStr) {
|
|
25
|
-
return md.render(mdStr);
|
|
26
|
-
};
|