rx-player 3.26.1 → 3.26.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/.github/workflows/checks.yml +99 -0
- package/.github/workflows/sonarcloud_analysis.yml +20 -0
- package/CHANGELOG.md +99 -71
- package/README.md +19 -18
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
- package/dist/_esm5.processed/compat/eme/close_session.js +1 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +1 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -4
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +1 -2
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +1 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +2 -3
- package/dist/_esm5.processed/compat/event_listeners.d.ts +3 -2
- package/dist/_esm5.processed/compat/event_listeners.js +8 -14
- package/dist/_esm5.processed/compat/make_vtt_cue.js +1 -1
- package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
- package/dist/_esm5.processed/compat/set_element_src.js +1 -1
- package/dist/_esm5.processed/compat/when_loaded_metadata.js +1 -2
- package/dist/_esm5.processed/compat/when_media_source_open.js +1 -2
- package/dist/_esm5.processed/config.d.ts +3 -8
- package/dist/_esm5.processed/config.js +4 -9
- package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
- package/dist/_esm5.processed/core/abr/abr_manager.js +47 -8
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +2 -2
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +3 -3
- package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +3 -3
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +3 -3
- package/dist/_esm5.processed/core/abr/guess_based_chooser.d.ts +95 -0
- package/dist/_esm5.processed/core/abr/guess_based_chooser.js +242 -0
- package/dist/_esm5.processed/core/abr/index.d.ts +3 -3
- package/dist/_esm5.processed/core/abr/last_estimate_storage.d.ts +61 -0
- package/dist/_esm5.processed/core/abr/last_estimate_storage.js +37 -0
- package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +25 -7
- package/dist/_esm5.processed/core/abr/network_analyzer.js +68 -31
- package/dist/_esm5.processed/core/abr/pending_requests_store.d.ts +56 -28
- package/dist/_esm5.processed/core/abr/pending_requests_store.js +9 -7
- package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +34 -51
- package/dist/_esm5.processed/core/abr/representation_estimator.js +111 -52
- package/dist/_esm5.processed/core/abr/representation_score_calculator.d.ts +5 -8
- package/dist/_esm5.processed/core/abr/representation_score_calculator.js +20 -23
- package/dist/_esm5.processed/core/abr/{ewma.d.ts → utils/ewma.d.ts} +0 -0
- package/dist/_esm5.processed/core/abr/{ewma.js → utils/ewma.js} +0 -0
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.js → utils/filter_by_bitrate.js} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.d.ts → utils/filter_by_width.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.js → utils/filter_by_width.js} +2 -2
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.d.ts → utils/select_optimal_representation.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.js → utils/select_optimal_representation.js} +1 -1
- package/dist/_esm5.processed/core/api/emit_seek_events.d.ts +4 -4
- package/dist/_esm5.processed/core/api/emit_seek_events.js +12 -10
- package/dist/_esm5.processed/core/api/index.d.ts +3 -1
- package/dist/_esm5.processed/core/api/index.js +2 -0
- package/dist/_esm5.processed/core/api/option_utils.js +4 -4
- package/dist/_esm5.processed/core/api/playback_observer.d.ts +280 -0
- package/dist/_esm5.processed/core/api/playback_observer.js +461 -0
- package/dist/_esm5.processed/core/api/public_api.d.ts +8 -7
- package/dist/_esm5.processed/core/api/public_api.js +98 -94
- package/dist/_esm5.processed/core/api/track_choice_manager.js +3 -3
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +1 -0
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +1 -2
- package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -5
- package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js +1 -2
- package/dist/_esm5.processed/core/eme/clear_eme_session.js +6 -2
- package/dist/_esm5.processed/core/eme/create_session.js +1 -2
- package/dist/_esm5.processed/core/eme/dispose_media_keys.js +2 -3
- package/dist/_esm5.processed/core/eme/eme_manager.js +4 -5
- package/dist/_esm5.processed/core/eme/find_key_system.js +4 -5
- package/dist/_esm5.processed/core/eme/get_media_keys.js +2 -3
- package/dist/_esm5.processed/core/eme/get_session.js +1 -2
- package/dist/_esm5.processed/core/eme/init_media_keys.js +5 -5
- package/dist/_esm5.processed/core/eme/session_events_listener.js +6 -7
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
- package/dist/_esm5.processed/core/eme/types.d.ts +12 -4
- package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
- package/dist/_esm5.processed/core/eme/utils/is_session_usable.js +1 -1
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +3 -4
- package/dist/_esm5.processed/core/eme/utils/persistent_sessions_store.js +3 -3
- package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +12 -29
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +3 -7
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +53 -53
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +42 -11
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +118 -46
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +21 -20
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +9 -8
- package/dist/_esm5.processed/core/init/create_eme_manager.js +1 -2
- package/dist/_esm5.processed/core/init/create_media_source.js +3 -4
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +39 -0
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +50 -0
- package/dist/_esm5.processed/core/init/duration_updater.js +16 -7
- package/dist/_esm5.processed/core/init/emit_loaded_event.d.ts +4 -3
- package/dist/_esm5.processed/core/init/emit_loaded_event.js +8 -8
- package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
- package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
- package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +32 -31
- package/dist/_esm5.processed/core/init/initial_seek_and_play.js +25 -32
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +6 -5
- package/dist/_esm5.processed/core/init/initialize_directfile.js +16 -12
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +10 -10
- package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -12
- package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +8 -11
- package/dist/_esm5.processed/core/init/load_on_media_source.js +16 -19
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +8 -7
- package/dist/_esm5.processed/core/init/stall_avoider.d.ts +4 -6
- package/dist/_esm5.processed/core/init/stall_avoider.js +56 -42
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +2 -2
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +20 -15
- package/dist/_esm5.processed/core/init/throw_on_media_error.js +1 -2
- package/dist/_esm5.processed/core/init/types.d.ts +0 -20
- package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +5 -4
- package/dist/_esm5.processed/core/init/update_playback_rate.js +10 -11
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +4 -4
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +8 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +9 -10
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +4 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +1 -12
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +10 -10
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +15 -13
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +36 -23
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +9 -17
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +11 -20
- package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +5 -6
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +1 -2
- package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +10 -8
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +22 -21
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +6 -4
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +11 -10
- package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +23 -7
- package/dist/_esm5.processed/core/stream/period/period_stream.js +38 -24
- package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +5 -4
- package/dist/_esm5.processed/core/stream/reload_after_switch.js +8 -7
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +4 -2
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +10 -8
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +9 -9
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +10 -12
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.d.ts +1 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +6 -8
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +3 -7
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +7 -8
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +1 -1
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.d.ts +6 -9
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +7 -8
- package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +4 -2
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +3 -5
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +6 -4
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -5
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +9 -12
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +30 -21
- package/dist/_esm5.processed/errors/error_message.js +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +5 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +21 -8
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +2 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +4 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +17 -6
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +1 -2
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
- package/dist/_esm5.processed/features/initialize_features.js +47 -44
- package/dist/_esm5.processed/index.js +2 -2
- package/dist/_esm5.processed/manifest/index.d.ts +2 -2
- package/dist/_esm5.processed/manifest/index.js +2 -2
- package/dist/_esm5.processed/manifest/representation.js +1 -1
- package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +24 -3
- package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
- package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
- package/dist/_esm5.processed/manifest/{are_same_content.js → utils.js} +18 -1
- package/dist/_esm5.processed/minimal.js +2 -2
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +18 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +32 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +18 -5
- package/dist/_esm5.processed/parsers/containers/isobmff/read.js +28 -6
- package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +52 -47
- package/dist/_esm5.processed/parsers/images/bif.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +3 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +1 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +7 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +10 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +6 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +5 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +4 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +3 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +19 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +14 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +7 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +3 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +5 -10
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +3 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +17 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +7 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +22 -21
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +9 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +24 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +7 -5
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +12 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +5 -2
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +8 -0
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +11 -2
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +11 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +7 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +13 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +23 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +3 -1
- package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +11 -3
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +5 -5
- package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +3 -6
- package/dist/_esm5.processed/parsers/texttracks/sami/html.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +5 -5
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +89 -20
- package/dist/_esm5.processed/transports/dash/segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +2 -2
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
- package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +1 -1
- package/dist/_esm5.processed/transports/smooth/pipelines.js +2 -2
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +3 -3
- package/dist/_esm5.processed/transports/types.d.ts +29 -15
- package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +6 -4
- package/dist/_esm5.processed/utils/assert.js +3 -3
- package/dist/_esm5.processed/utils/concat_map_latest.js +1 -2
- package/dist/_esm5.processed/utils/defer_subscriptions.js +1 -2
- package/dist/_esm5.processed/utils/filter_map.js +1 -2
- package/dist/_esm5.processed/utils/reference.d.ts +108 -0
- package/dist/_esm5.processed/utils/reference.js +137 -0
- package/dist/_esm5.processed/utils/request/fetch.d.ts +1 -1
- package/dist/_esm5.processed/utils/request/fetch.js +3 -3
- package/dist/_esm5.processed/utils/request/xhr.d.ts +1 -1
- package/dist/_esm5.processed/utils/request/xhr.js +1 -1
- package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -15
- package/dist/rx-player.js +3666 -2470
- package/dist/rx-player.min.d.ts +1 -15
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +28 -1
- package/package.json +43 -43
- package/scripts/build/constants.d.ts +50 -0
- package/scripts/build/generate_build.js +1 -189
- package/scripts/doc-generator/construct_table_of_contents.js +31 -24
- package/scripts/doc-generator/convert_MD_to_HMTL.js +4 -8
- package/scripts/doc-generator/create_documentation.js +331 -0
- package/scripts/doc-generator/create_documentation_page.js +209 -0
- package/scripts/doc-generator/create_page.js +117 -35
- package/scripts/doc-generator/generate_header_html.js +148 -0
- package/scripts/doc-generator/generate_page_html.js +116 -0
- package/scripts/doc-generator/generate_page_list_html.js +93 -0
- package/scripts/doc-generator/generate_sidebar_html.js +88 -0
- package/scripts/doc-generator/get_search_data_for_content.js +137 -0
- package/scripts/doc-generator/index.js +14 -15
- package/scripts/doc-generator/parse_doc_configs.js +327 -0
- package/scripts/doc-generator/scripts/lunr.js +10 -0
- package/scripts/doc-generator/scripts/script.js +451 -0
- package/scripts/doc-generator/styles/style.css +712 -144
- package/scripts/doc-generator/utils.js +85 -0
- package/scripts/fast_demo_build.js +143 -0
- package/scripts/generate_documentation_list.js +6 -2
- package/scripts/generate_full_demo.js +26 -49
- package/scripts/start_demo_web_server.js +14 -4
- package/scripts/update-version +1 -1
- package/sonar-project.properties +2 -1
- package/src/compat/__tests__/add_text_track.test.ts +1 -0
- package/src/compat/__tests__/clear_element_src.test.ts +55 -28
- package/src/compat/__tests__/set_element_src.test.ts +2 -2
- package/src/compat/__tests__/when_loaded_metadata.test.ts +4 -5
- package/src/compat/__tests__/when_media_source_open.test.ts +4 -5
- package/src/compat/clear_element_src.ts +8 -6
- package/src/compat/eme/close_session.ts +3 -5
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
- package/src/compat/eme/custom_media_keys/index.ts +6 -6
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +6 -3
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +1 -1
- package/src/compat/eme/generate_key_request.ts +1 -1
- package/src/compat/eme/load_session.ts +4 -6
- package/src/compat/event_listeners.ts +12 -21
- package/src/compat/on_height_width_change.ts +3 -5
- package/src/compat/set_element_src.ts +1 -1
- package/src/compat/when_loaded_metadata.ts +1 -1
- package/src/compat/when_media_source_open.ts +1 -1
- package/src/config.ts +4 -9
- package/src/core/abr/README.md +7 -7
- package/src/core/abr/abr_manager.ts +62 -21
- package/src/core/abr/bandwidth_estimator.ts +1 -1
- package/src/core/abr/buffer_based_chooser.ts +8 -6
- package/src/core/abr/get_buffer_levels.ts +3 -0
- package/src/core/abr/get_estimate_from_buffer_levels.ts +4 -4
- package/src/core/abr/guess_based_chooser.ts +308 -0
- package/src/core/abr/index.ts +7 -3
- package/src/core/abr/last_estimate_storage.ts +79 -0
- package/src/core/abr/network_analyzer.ts +74 -31
- package/src/core/abr/pending_requests_store.ts +76 -42
- package/src/core/abr/representation_estimator.ts +200 -125
- package/src/core/abr/representation_score_calculator.ts +33 -26
- package/src/core/abr/{__tests__ → utils/__tests__}/ewma.test.ts +0 -0
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_bitrate.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_width.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/select_optimal_representation.test.ts +1 -1
- package/src/core/abr/{ewma.ts → utils/ewma.ts} +0 -0
- package/src/core/abr/{filter_by_bitrate.ts → utils/filter_by_bitrate.ts} +2 -2
- package/src/core/abr/{filter_by_width.ts → utils/filter_by_width.ts} +3 -3
- package/src/core/abr/{select_optimal_representation.ts → utils/select_optimal_representation.ts} +2 -2
- package/src/core/api/README.md +4 -3
- package/src/core/api/__tests__/option_utils.test.ts +1 -0
- package/src/core/api/emit_seek_events.ts +21 -20
- package/src/core/api/index.ts +6 -2
- package/src/core/api/playback_observer.ts +768 -0
- package/src/core/api/public_api.ts +111 -111
- package/src/core/api/track_choice_manager.ts +6 -3
- package/src/core/eme/__tests__/__global__/get_license.test.ts +5 -3
- package/src/core/eme/__tests__/__global__/init_data.test.ts +11 -12
- package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +2 -1
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +5 -8
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +8 -6
- package/src/core/eme/__tests__/__global__/utils.ts +1 -0
- package/src/core/eme/__tests__/init_media_keys.test.ts +6 -65
- package/src/core/eme/attach_media_keys.ts +2 -1
- package/src/core/eme/check_key_statuses.ts +10 -8
- package/src/core/eme/clean_old_loaded_sessions.ts +2 -4
- package/src/core/eme/clear_eme_session.ts +6 -1
- package/src/core/eme/create_session.ts +3 -5
- package/src/core/eme/dispose_media_keys.ts +2 -2
- package/src/core/eme/eme_manager.ts +10 -12
- package/src/core/eme/find_key_system.ts +3 -5
- package/src/core/eme/get_media_keys.ts +4 -6
- package/src/core/eme/get_session.ts +2 -4
- package/src/core/eme/init_media_keys.ts +9 -9
- package/src/core/eme/session_events_listener.ts +14 -15
- package/src/core/eme/set_server_certificate.ts +9 -5
- package/src/core/eme/types.ts +15 -4
- package/src/core/eme/utils/close_session.ts +7 -7
- package/src/core/eme/utils/is_session_usable.ts +1 -1
- package/src/core/eme/utils/loaded_sessions_store.ts +2 -2
- package/src/core/eme/utils/persistent_sessions_store.ts +2 -2
- package/src/core/fetchers/index.ts +2 -2
- package/src/core/fetchers/manifest/manifest_fetcher.ts +1 -1
- package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +3 -4
- package/src/core/fetchers/segment/index.ts +2 -2
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +37 -45
- package/src/core/fetchers/segment/prioritizer.ts +82 -82
- package/src/core/fetchers/segment/segment_fetcher.ts +178 -80
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +23 -31
- package/src/core/init/create_eme_manager.ts +1 -1
- package/src/core/init/create_media_source.ts +5 -7
- package/src/core/init/create_stream_playback_observer.ts +88 -0
- package/src/core/init/duration_updater.ts +20 -17
- package/src/core/init/emit_loaded_event.ts +11 -15
- package/src/core/init/end_of_stream.ts +2 -4
- package/src/core/init/get_initial_time.ts +0 -1
- package/src/core/init/initial_seek_and_play.ts +67 -51
- package/src/core/init/initialize_directfile.ts +26 -35
- package/src/core/init/initialize_media_source.ts +28 -28
- package/src/core/init/load_on_media_source.ts +51 -58
- package/src/core/init/manifest_update_scheduler.ts +11 -12
- package/src/core/init/stall_avoider.ts +64 -47
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
- package/src/core/init/throw_on_media_error.ts +1 -1
- package/src/core/init/types.ts +0 -24
- package/src/core/init/update_playback_rate.ts +15 -16
- package/src/core/segment_buffers/README.md +3 -3
- package/src/core/segment_buffers/garbage_collector.ts +15 -11
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -7
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +14 -16
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +1 -1
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
- package/src/core/segment_buffers/inventory/buffered_history.ts +2 -2
- package/src/core/segment_buffers/inventory/segment_inventory.ts +1 -13
- package/src/core/stream/adaptation/adaptation_stream.ts +78 -56
- package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
- package/src/core/stream/adaptation/index.ts +2 -2
- package/src/core/stream/index.ts +2 -2
- package/src/core/stream/orchestrator/active_period_emitter.ts +6 -8
- package/src/core/stream/orchestrator/are_streams_complete.ts +2 -4
- package/src/core/stream/orchestrator/index.ts +2 -2
- package/src/core/stream/orchestrator/stream_orchestrator.ts +58 -49
- package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
- package/src/core/stream/period/index.ts +2 -2
- package/src/core/stream/period/period_stream.ts +118 -75
- package/src/core/stream/reload_after_switch.ts +13 -10
- package/src/core/stream/representation/append_segment_to_buffer.ts +20 -16
- package/src/core/stream/representation/downloading_queue.ts +21 -24
- package/src/core/stream/representation/force_garbage_collection.ts +16 -23
- package/src/core/stream/representation/get_buffer_status.ts +9 -11
- package/src/core/stream/representation/get_needed_segments.ts +1 -1
- package/src/core/stream/representation/get_segment_priority.ts +8 -10
- package/src/core/stream/representation/index.ts +2 -2
- package/src/core/stream/representation/push_init_segment.ts +19 -16
- package/src/core/stream/representation/push_media_segment.ts +21 -17
- package/src/core/stream/representation/representation_stream.ts +50 -47
- package/src/experimental/features/__tests__/dash_wasm.test.ts +1 -0
- package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +32 -17
- package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +6 -9
- package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +12 -6
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +4 -2
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +2 -2
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +21 -12
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +1 -1
- package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +4 -2
- package/src/features/__tests__/initialize_features.test.ts +191 -101
- package/src/features/initialize_features.ts +40 -37
- package/src/features/list/__tests__/bif_parser.test.ts +1 -0
- package/src/features/list/__tests__/dash.test.ts +1 -0
- package/src/features/list/__tests__/directfile.test.ts +1 -0
- package/src/features/list/__tests__/eme.test.ts +1 -0
- package/src/features/list/__tests__/html_sami_parser.test.ts +1 -0
- package/src/features/list/__tests__/html_srt_parser.test.ts +1 -0
- package/src/features/list/__tests__/html_text_buffer.test.ts +1 -0
- package/src/features/list/__tests__/html_ttml_parser.test.ts +1 -0
- package/src/features/list/__tests__/html_vtt_parser.test.ts +1 -0
- package/src/features/list/__tests__/image_buffer.test.ts +1 -0
- package/src/features/list/__tests__/native_sami_parser.test.ts +1 -0
- package/src/features/list/__tests__/native_srt_parser.test.ts +1 -0
- package/src/features/list/__tests__/native_text_buffer.test.ts +1 -0
- package/src/features/list/__tests__/native_ttml_parser.test.ts +1 -0
- package/src/features/list/__tests__/native_vtt_parser.test.ts +1 -0
- package/src/features/list/__tests__/smooth.test.ts +1 -0
- package/src/index.ts +2 -2
- package/src/manifest/__tests__/manifest.test.ts +1 -0
- package/src/manifest/index.ts +7 -1
- package/src/manifest/representation_index/__tests__/static.test.ts +1 -0
- package/src/manifest/representation_index/static.ts +1 -0
- package/src/manifest/representation_index/types.ts +25 -3
- package/src/manifest/{are_same_content.ts → utils.ts} +26 -9
- package/src/minimal.ts +3 -2
- package/src/parsers/containers/isobmff/get_box.ts +35 -8
- package/src/parsers/containers/isobmff/read.ts +32 -5
- package/src/parsers/containers/isobmff/utils.ts +52 -47
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +4 -4
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +4 -2
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +3 -3
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +15 -6
- package/src/parsers/manifest/dash/common/indexes/base.ts +5 -3
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +1 -0
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +9 -9
- package/src/parsers/manifest/dash/common/indexes/list.ts +6 -3
- package/src/parsers/manifest/dash/common/indexes/template.ts +13 -6
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +10 -9
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +13 -5
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
- package/src/parsers/manifest/dash/common/parse_mpd.ts +21 -13
- package/src/parsers/manifest/dash/common/parse_periods.ts +7 -8
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +12 -12
- package/src/parsers/manifest/dash/common/parse_representations.ts +23 -4
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +12 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +13 -9
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +28 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +8 -5
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +3 -0
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +5 -2
- package/src/parsers/manifest/dash/node_parser_types.ts +8 -0
- package/src/parsers/manifest/dash/parsers_types.ts +8 -2
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +26 -5
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +7 -4
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +13 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +8 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +14 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +26 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +1 -1
- package/src/parsers/manifest/local/representation_index.ts +2 -0
- package/src/parsers/manifest/smooth/create_parser.ts +1 -1
- package/src/parsers/manifest/smooth/representation_index.ts +3 -1
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +1 -1
- package/src/parsers/manifest/utils/index_helpers.ts +21 -11
- package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
- package/src/parsers/texttracks/sami/html.ts +1 -1
- package/src/parsers/texttracks/sami/native.ts +1 -1
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
- package/src/transports/dash/image_pipelines.ts +4 -4
- package/src/transports/dash/init_segment_loader.ts +1 -1
- package/src/transports/dash/manifest_parser.ts +99 -25
- package/src/transports/dash/segment_loader.ts +1 -1
- package/src/transports/dash/segment_parser.ts +4 -4
- package/src/transports/dash/text_parser.ts +8 -8
- package/src/transports/local/segment_loader.ts +2 -2
- package/src/transports/local/segment_parser.ts +4 -4
- package/src/transports/local/text_parser.ts +8 -8
- package/src/transports/metaplaylist/pipelines.ts +11 -11
- package/src/transports/smooth/extract_timings_infos.ts +1 -1
- package/src/transports/smooth/pipelines.ts +8 -8
- package/src/transports/smooth/segment_loader.ts +3 -3
- package/src/transports/types.ts +31 -17
- package/src/transports/utils/call_custom_manifest_loader.ts +1 -1
- package/src/transports/utils/get_isobmff_timing_infos.ts +6 -1
- package/src/transports/utils/parse_text_track.ts +4 -2
- package/src/typings/globals.d.ts +57 -40
- package/src/utils/__tests__/concat_map_latest.test.ts +7 -9
- package/src/utils/__tests__/defer_subscriptions.test.ts +4 -4
- package/src/utils/__tests__/event_emitter.test.ts +1 -1
- package/src/utils/__tests__/initialization_segment_cache.test.ts +7 -0
- package/src/utils/assert.ts +1 -1
- package/src/utils/concat_map_latest.ts +2 -4
- package/src/utils/defer_subscriptions.ts +1 -1
- package/src/utils/filter_map.ts +2 -4
- package/src/utils/reference.ts +234 -0
- package/src/utils/request/fetch.ts +3 -3
- package/src/utils/request/xhr.ts +2 -2
- package/src/utils/rx-retry_with_backoff.ts +2 -4
- package/tsconfig.json +4 -1
- package/tsconfig.modules.json +8 -3
- package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
- package/dist/_esm5.processed/core/abr/create_filters.js +0 -56
- package/dist/_esm5.processed/core/api/clock.d.ts +0 -157
- package/dist/_esm5.processed/core/api/clock.js +0 -363
- package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -55
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.d.ts +0 -31
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.js +0 -37
- package/scripts/doc-generator/construct_html.js +0 -135
- package/scripts/doc-generator/construct_page_list.js +0 -120
- package/scripts/doc-generator/create_for_dir.js +0 -151
- package/scripts/doc-generator/get_files_to_convert.js +0 -71
- package/scripts/doc-generator/mkdir_parent.js +0 -21
- package/scripts/doc-generator/read_title_from_md.js +0 -22
- package/scripts/doc-generator/remove_toc_from_md.js +0 -20
- package/src/core/abr/create_filters.ts +0 -59
- package/src/core/api/clock.ts +0 -573
- package/src/core/init/create_stream_clock.ts +0 -93
- package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
const { promisify } = require("util");
|
|
2
|
-
const fs = require("fs");
|
|
3
|
-
const path = require("path");
|
|
4
|
-
const readTitleFromMD = require("./read_title_from_md.js");
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Given the path to a Markdown document, returns its title as a string.
|
|
8
|
-
* null if no title has been found.
|
|
9
|
-
*
|
|
10
|
-
* @param {string} MDFile
|
|
11
|
-
* @returns {string|null}
|
|
12
|
-
* @throws {Error} - Throws if the file cannot be read.
|
|
13
|
-
*/
|
|
14
|
-
async function readTitleFromMDFile(MDFile) {
|
|
15
|
-
let data;
|
|
16
|
-
try {
|
|
17
|
-
data = await promisify(fs.readFile)(MDFile, "utf8");
|
|
18
|
-
} catch (err) {
|
|
19
|
-
throw new Error("error reading file:", err);
|
|
20
|
-
}
|
|
21
|
-
return readTitleFromMD(data);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Construct exhaustive list of files converted, known from the filesToConvert
|
|
26
|
-
* Array, as a Markdown document.
|
|
27
|
-
*
|
|
28
|
-
* The filesToConvert Array should contain at least the following keys:
|
|
29
|
-
* - inputFile {string}: normalized absolute path to the markdown file to
|
|
30
|
-
* convert
|
|
31
|
-
* - outputFile {string}: normalized absolute path to where the resulting
|
|
32
|
-
* HTML file should be stored
|
|
33
|
-
*
|
|
34
|
-
* @param {Array.<Object>} filesToConvert
|
|
35
|
-
* @returns {string}
|
|
36
|
-
*/
|
|
37
|
-
module.exports = async function constructPageList(filesToConvert, outputDir) {
|
|
38
|
-
/**
|
|
39
|
-
* Add title of pages to filesToConvert as a `title` key.
|
|
40
|
-
* @type {Array.<Object>}
|
|
41
|
-
*/
|
|
42
|
-
const withTitle = [];
|
|
43
|
-
for (let i = 0; i < filesToConvert.length; i++) {
|
|
44
|
-
const { inputFile } = filesToConvert[i];
|
|
45
|
-
const title = await readTitleFromMDFile(inputFile);
|
|
46
|
-
withTitle.push(Object.assign({ title }, filesToConvert[i]));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const hierarchy = withTitle
|
|
50
|
-
.reduce((acc, elem) => {
|
|
51
|
-
const splittedPath = elem.outputFile.split(path.sep);
|
|
52
|
-
if (splittedPath.length === 0) {
|
|
53
|
-
return acc;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
let consideredObj = acc;
|
|
57
|
-
|
|
58
|
-
let i = 0;
|
|
59
|
-
for (; i < splittedPath.length - 1; i++) {
|
|
60
|
-
const key = splittedPath[i];
|
|
61
|
-
if (typeof consideredObj.subdirs[key] === "undefined") {
|
|
62
|
-
consideredObj.subdirs[key] = { subdirs: {},
|
|
63
|
-
files: [],
|
|
64
|
-
index: null };
|
|
65
|
-
}
|
|
66
|
-
consideredObj = consideredObj.subdirs[key];
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const link = path.relative(outputDir, elem.outputFile);
|
|
70
|
-
const title = elem.title || link;
|
|
71
|
-
if (splittedPath[i].toLowerCase() === "index.html") {
|
|
72
|
-
consideredObj.index = { link, title };
|
|
73
|
-
} else {
|
|
74
|
-
consideredObj.files.push({ link, title });
|
|
75
|
-
}
|
|
76
|
-
return acc;
|
|
77
|
-
}, { subdirs: {},
|
|
78
|
-
files: [],
|
|
79
|
-
index: null });
|
|
80
|
-
|
|
81
|
-
const listArr = [];
|
|
82
|
-
listArr.push("# Page list");
|
|
83
|
-
listArr.push("");
|
|
84
|
-
listArr.push("Here is an exhaustive list of all the pages you can read in " +
|
|
85
|
-
"this generated documentation:");
|
|
86
|
-
|
|
87
|
-
let indentationLevel = 0;
|
|
88
|
-
function parseDir(obj) {
|
|
89
|
-
if (obj.index != null) {
|
|
90
|
-
listArr.push(" ".repeat(indentationLevel * 2) +
|
|
91
|
-
"- [" + obj.index.title + "]" +
|
|
92
|
-
"(" + obj.index.link + ")");
|
|
93
|
-
indentationLevel += 1;
|
|
94
|
-
} else if (obj.files.length || indentationLevel > 0) {
|
|
95
|
-
listArr.push(" ".repeat(indentationLevel * 2) +
|
|
96
|
-
"- Undocumented section");
|
|
97
|
-
indentationLevel += 1;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (obj.files.length) {
|
|
101
|
-
obj.files.forEach(file => {
|
|
102
|
-
listArr.push(" ".repeat(indentationLevel * 2) +
|
|
103
|
-
"- [" + file.title + "]" +
|
|
104
|
-
"(" + file.link + ")");
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const subdirs = Object.keys(obj.subdirs).sort();
|
|
109
|
-
if (subdirs.length) {
|
|
110
|
-
for (let i = 0; i < subdirs.length; i++) {
|
|
111
|
-
const subdir = subdirs[i];
|
|
112
|
-
parseDir(obj.subdirs[subdir]);
|
|
113
|
-
indentationLevel -= 1;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
parseDir(hierarchy, 0);
|
|
119
|
-
return listArr.join("\n");
|
|
120
|
-
};
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
const { promisify } = require("util");
|
|
2
|
-
const fs = require("fs");
|
|
3
|
-
const path = require("path");
|
|
4
|
-
const getFilesToConvert = require("./get_files_to_convert.js");
|
|
5
|
-
const mkdirParent = require("./mkdir_parent.js");
|
|
6
|
-
const createDocumentationPage = require("./create_page.js");
|
|
7
|
-
const constructPageList = require("./construct_page_list.js");
|
|
8
|
-
const constructTableOfContents = require("./construct_table_of_contents.js");
|
|
9
|
-
const convertMDToHTML = require("./convert_MD_to_HMTL.js");
|
|
10
|
-
const constructHTML = require("./construct_html.js");
|
|
11
|
-
|
|
12
|
-
async function createDirIfDoesntExist(dir) {
|
|
13
|
-
const doesCSSOutDirExists = await promisify(fs.exists)(dir);
|
|
14
|
-
if (!doesCSSOutDirExists) {
|
|
15
|
-
await mkdirParent(dir);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Create documentation for the directory given into the ouput directory given.
|
|
21
|
-
* @param {string} baseInDir
|
|
22
|
-
* @param {string} baseOutDir
|
|
23
|
-
* @param {Object} [options={}]
|
|
24
|
-
* @param {Function} [options.getPageTitle] - Callback returning the name of the
|
|
25
|
-
* page, based on the name of a single markdown document.
|
|
26
|
-
* If not set, the page title will just be the corresponding markdown's title.
|
|
27
|
-
* @param {Array.<string>} [options.css] - Optional CSS files which will be
|
|
28
|
-
* linked to each generated page.
|
|
29
|
-
* Should be the path to each of those.
|
|
30
|
-
* @param {Function|undefined} [options.fileFilter] - Callback allowing to
|
|
31
|
-
* filter out markdown pages from being converted to HTML.
|
|
32
|
-
* Takes 2 arguments: the fileName and its path, both strings.
|
|
33
|
-
* Return true if the file should be converted to HTML. False otherwise.
|
|
34
|
-
* No markdown document is filtered out if this callback is not set.
|
|
35
|
-
* @param {Function|undefined} [options.beforeParse] - Callback which will be
|
|
36
|
-
* called on each markdown document just before transforming it into HTML.
|
|
37
|
-
* Takes in argument the markdown content (as a string) and should return the
|
|
38
|
-
* markdown document you want to convert into HTML (also as a string).
|
|
39
|
-
* If not set, each markdown document will be converted as is.
|
|
40
|
-
* @returns {Promise} - Resolve when done
|
|
41
|
-
*/
|
|
42
|
-
module.exports = async function createDocumentationForDir(
|
|
43
|
-
baseInDir,
|
|
44
|
-
baseOutDir,
|
|
45
|
-
options = {},
|
|
46
|
-
) {
|
|
47
|
-
const { getPageTitle = t => t,
|
|
48
|
-
fileFilter,
|
|
49
|
-
beforeParse,
|
|
50
|
-
css = [] } = options;
|
|
51
|
-
|
|
52
|
-
// 1 - copy CSS files
|
|
53
|
-
const cssOutputDir = path.join(path.resolve(baseOutDir), "styles");
|
|
54
|
-
const cssOutputPaths = css.map(cssFilepath => {
|
|
55
|
-
return path.join(cssOutputDir, path.basename(cssFilepath));
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
if (css.length > 0) {
|
|
59
|
-
await createDirIfDoesntExist(cssOutputDir);
|
|
60
|
-
await Promise.all(css.map(async (cssInput, i) => {
|
|
61
|
-
await promisify(fs.copyFile)(cssInput, cssOutputPaths[i]);
|
|
62
|
-
}));
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// 2 - Construct list of html files
|
|
66
|
-
const filesToConvert = await getFilesToConvert(baseInDir,
|
|
67
|
-
baseOutDir,
|
|
68
|
-
{ fileFilter });
|
|
69
|
-
|
|
70
|
-
const [homeLink, listLink] = filesToConvert.length > 1 ?
|
|
71
|
-
[ path.join(path.resolve(baseOutDir), "pages", "index.html"),
|
|
72
|
-
path.join(path.resolve(baseOutDir), "list.html") ] :
|
|
73
|
-
[ null, null ];
|
|
74
|
-
|
|
75
|
-
// keys: inputFile; values: outputFile
|
|
76
|
-
const fileDict = filesToConvert.reduce((acc, entry) => {
|
|
77
|
-
acc[entry.inputFile] = entry.outputFile;
|
|
78
|
-
return acc;
|
|
79
|
-
}, {});
|
|
80
|
-
|
|
81
|
-
// 3 - Create documentation pages
|
|
82
|
-
for (let i = 0; i < filesToConvert.length; i++) {
|
|
83
|
-
const { inputFile, outputFile } = filesToConvert[i];
|
|
84
|
-
// Create output directory if it does not exist
|
|
85
|
-
const outDir = path.dirname(outputFile);
|
|
86
|
-
await createDirIfDoesntExist(outDir);
|
|
87
|
-
const cssRelativePaths =
|
|
88
|
-
cssOutputPaths.map(cssOutput => path.relative(outDir, cssOutput));
|
|
89
|
-
|
|
90
|
-
// add link translation to options
|
|
91
|
-
const linkTranslator = linkTranslatorFactory(inputFile, outDir, fileDict);
|
|
92
|
-
await createDocumentationPage(inputFile,
|
|
93
|
-
outputFile,
|
|
94
|
-
{ linkTranslator,
|
|
95
|
-
getPageTitle,
|
|
96
|
-
beforeParse,
|
|
97
|
-
homeLink: path.relative(outDir, homeLink),
|
|
98
|
-
listLink: path.relative(outDir, listLink),
|
|
99
|
-
css: cssRelativePaths });
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// 4 - Construct specific "Page List" page.
|
|
103
|
-
const pageListMD = await constructPageList(filesToConvert, baseOutDir);
|
|
104
|
-
const { content, toc } = constructTableOfContents(pageListMD);
|
|
105
|
-
const listPageCss =
|
|
106
|
-
cssOutputPaths.map(cssOutput => path.relative(baseOutDir, cssOutput));
|
|
107
|
-
const listHTML = constructHTML(getPageTitle("Page List"),
|
|
108
|
-
convertMDToHTML(content),
|
|
109
|
-
{ css: listPageCss,
|
|
110
|
-
toc,
|
|
111
|
-
homeLink: path.relative(baseOutDir,
|
|
112
|
-
homeLink),
|
|
113
|
-
listLink: path.relative(baseOutDir,
|
|
114
|
-
listLink) });
|
|
115
|
-
|
|
116
|
-
const fileName = path.join(baseOutDir, "list.html");
|
|
117
|
-
await promisify(fs.writeFile)(fileName, listHTML);
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Generate linkTranslator functions
|
|
122
|
-
* @param {string} inputFile
|
|
123
|
-
* @param {Object} fileDict
|
|
124
|
-
* @returns {Function}
|
|
125
|
-
*/
|
|
126
|
-
function linkTranslatorFactory(inputFile, outputDir, fileDict) {
|
|
127
|
-
/**
|
|
128
|
-
* Convert links to files that will be converted to the links of the
|
|
129
|
-
* corresponding converted output files.
|
|
130
|
-
* @param {string} link
|
|
131
|
-
* @returns {string}
|
|
132
|
-
*/
|
|
133
|
-
return (link) => {
|
|
134
|
-
const extname = path.extname(link);
|
|
135
|
-
const indexOfAnchor = extname.indexOf("#");
|
|
136
|
-
|
|
137
|
-
const anchor = indexOfAnchor > 0 ?
|
|
138
|
-
extname.substring(indexOfAnchor) :
|
|
139
|
-
"";
|
|
140
|
-
|
|
141
|
-
const linkWithoutAnchor = link.substring(0, link.length - anchor.length);
|
|
142
|
-
|
|
143
|
-
const completeLink = path.join(path.dirname(inputFile), linkWithoutAnchor);
|
|
144
|
-
const normalizedLink = path.normalize(path.resolve(completeLink));
|
|
145
|
-
|
|
146
|
-
const translation = fileDict[normalizedLink];
|
|
147
|
-
return translation ?
|
|
148
|
-
path.relative(outputDir, translation + anchor) :
|
|
149
|
-
link;
|
|
150
|
-
};
|
|
151
|
-
}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
const { promisify } = require("util");
|
|
2
|
-
const fs = require("fs");
|
|
3
|
-
const path = require("path");
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Returns information about every Markdown files we have to convert to HTML
|
|
7
|
-
* in an array.
|
|
8
|
-
*
|
|
9
|
-
* The returned Array contains Objects with the following keys:
|
|
10
|
-
* - inputFile {string}: normalized absolute path to the markdown file to
|
|
11
|
-
* convert
|
|
12
|
-
* - outputFile {string}: normalized absolute path to where the resulting
|
|
13
|
-
* HTML file should be stored
|
|
14
|
-
* @param {string} baseInDir - The directory where the markdown files are. This
|
|
15
|
-
* directory will be checked for files recursively.
|
|
16
|
-
* @param {string} baseOutDir - The directory where the resulting HTML files
|
|
17
|
-
* will reside.
|
|
18
|
-
* @param {Object} [opts = {}]
|
|
19
|
-
* @param {Function|undefined} opts.fileFilter
|
|
20
|
-
* @returns {Promise.<Array.<Object>>}
|
|
21
|
-
*/
|
|
22
|
-
module.exports = async function getFilesToConvert(
|
|
23
|
-
baseInDir,
|
|
24
|
-
baseOutDir,
|
|
25
|
-
opts = {},
|
|
26
|
-
) {
|
|
27
|
-
const filesToConvert = [];
|
|
28
|
-
const { fileFilter } = opts;
|
|
29
|
-
async function recusiveGetFilesToConvert(inputDir, outputDir) {
|
|
30
|
-
// Loop through all the files in the temp directory
|
|
31
|
-
let files;
|
|
32
|
-
try {
|
|
33
|
-
files = await promisify(fs.readdir)(inputDir);
|
|
34
|
-
} catch (err) {
|
|
35
|
-
throw new Error("error while reading directory: " + err);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const filteredFiles = fileFilter != null ?
|
|
39
|
-
files.filter((fileName) => fileFilter(fileName, baseInDir)) :
|
|
40
|
-
files;
|
|
41
|
-
|
|
42
|
-
for (let i = 0; i < filteredFiles.length; i++) {
|
|
43
|
-
const file = filteredFiles[i];
|
|
44
|
-
const filePath = path.join(inputDir, file);
|
|
45
|
-
let stat;
|
|
46
|
-
try {
|
|
47
|
-
stat = await promisify(fs.stat)(filePath);
|
|
48
|
-
} catch (err) {
|
|
49
|
-
throw new Error("error while stating file: " + err);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (stat.isDirectory()) {
|
|
53
|
-
const newOutDir = path.join(outputDir, file);
|
|
54
|
-
await recusiveGetFilesToConvert(filePath, newOutDir);
|
|
55
|
-
} else if(stat.isFile()) {
|
|
56
|
-
const extname = path.extname(file);
|
|
57
|
-
if (extname === ".md") {
|
|
58
|
-
const outputFile =
|
|
59
|
-
path.join(outputDir, path.basename(filePath, ".md") + ".html");
|
|
60
|
-
|
|
61
|
-
filesToConvert.push({
|
|
62
|
-
inputFile: path.normalize(path.resolve(filePath)),
|
|
63
|
-
outputFile: path.normalize(path.resolve(outputFile)),
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
await recusiveGetFilesToConvert(baseInDir, path.join(baseOutDir, "pages"));
|
|
70
|
-
return filesToConvert;
|
|
71
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
const { promisify } = require("util");
|
|
2
|
-
const fs = require("fs");
|
|
3
|
-
const path = require("path");
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Recursive mkdir (create parent directories if they do not exist).
|
|
7
|
-
* @param {string} dirPath
|
|
8
|
-
* @param {string} mode
|
|
9
|
-
* @returns {Promise}
|
|
10
|
-
*/
|
|
11
|
-
module.exports = async function mkdirParent(dirPath, mode) {
|
|
12
|
-
try {
|
|
13
|
-
await promisify(fs.mkdir)(dirPath, mode);
|
|
14
|
-
} catch(error) {
|
|
15
|
-
if (error && error.errno === -2) {
|
|
16
|
-
return mkdirParent(path.dirname(dirPath), mode)
|
|
17
|
-
.then(() => mkdirParent(dirPath, mode));
|
|
18
|
-
}
|
|
19
|
-
throw error;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns the title read from a Markdown document.
|
|
3
|
-
* That is, the first "#"-prepended chapter.
|
|
4
|
-
*
|
|
5
|
-
* null if not found.
|
|
6
|
-
* @param {string} data
|
|
7
|
-
* @returns {string|null}
|
|
8
|
-
*/
|
|
9
|
-
module.exports = function readTitleFromMD(data) {
|
|
10
|
-
const lines = data.split(/\r\n|\n|\r/);
|
|
11
|
-
|
|
12
|
-
// TODO Might be more efficient and less error-prone as a markdown-it plugin.
|
|
13
|
-
for (let i = 0, len = lines.length; i < len; i++) {
|
|
14
|
-
if (/^ *# +/.test(lines[i])) {
|
|
15
|
-
const regExec = /^ *# +(.*)$/.exec(lines[i]);
|
|
16
|
-
if (regExec && regExec[1]) {
|
|
17
|
-
return regExec[1].replace(/ #* *$/, "").trim();
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return null;
|
|
22
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Remove "## table of contents" line from markdown if it exists.
|
|
3
|
-
* @param {string} md
|
|
4
|
-
* @returns {string}
|
|
5
|
-
*/
|
|
6
|
-
module.exports = function removeTableOfContentFromMD(md) {
|
|
7
|
-
const lines = md.split(/\r\n|\n|\r/);
|
|
8
|
-
for (let i = 0, len = lines.length; i < len; i++) {
|
|
9
|
-
if (/^ *## +table of contents/i.test(lines[i])) {
|
|
10
|
-
const start = i;
|
|
11
|
-
for (i = i + 1; i < len; i++) {
|
|
12
|
-
if (/^ *## +/.test(lines[i])) {
|
|
13
|
-
lines.splice(start, i - 1 - start);
|
|
14
|
-
return lines.join("\n");
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return lines.join("\n");
|
|
20
|
-
};
|
|
@@ -1,59 +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 {
|
|
18
|
-
combineLatest as observableCombineLatest,
|
|
19
|
-
Observable,
|
|
20
|
-
of as observableOf,
|
|
21
|
-
} from "rxjs";
|
|
22
|
-
import { map } from "rxjs/operators";
|
|
23
|
-
import objectAssign from "../../utils/object_assign";
|
|
24
|
-
import { IABRFiltersObject } from "./representation_estimator";
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Create Observable that merge several throttling Observables into one.
|
|
28
|
-
* @param {Observable} limitWidth$ - Emit the width at which the chosen
|
|
29
|
-
* Representation should be limited.
|
|
30
|
-
* @param {Observable} throttleBitrate$ - Emit the maximum bitrate authorized.
|
|
31
|
-
* @param {Observable} throttle$ - Also emit the maximum bitrate authorized.
|
|
32
|
-
* Here for legacy reasons.
|
|
33
|
-
* @returns {Observable}
|
|
34
|
-
*/
|
|
35
|
-
export default function createFilters(
|
|
36
|
-
limitWidth$? : Observable<number>,
|
|
37
|
-
throttleBitrate$? : Observable<number>,
|
|
38
|
-
throttle$? : Observable<number>
|
|
39
|
-
) : Observable<IABRFiltersObject> {
|
|
40
|
-
const deviceEventsArray : Array<Observable<IABRFiltersObject>> = [];
|
|
41
|
-
|
|
42
|
-
if (limitWidth$ != null) {
|
|
43
|
-
deviceEventsArray.push(limitWidth$.pipe(map(width => ({ width }))));
|
|
44
|
-
}
|
|
45
|
-
if (throttle$ != null) {
|
|
46
|
-
deviceEventsArray.push(throttle$.pipe(map(bitrate => ({ bitrate }))));
|
|
47
|
-
}
|
|
48
|
-
if (throttleBitrate$ != null) {
|
|
49
|
-
deviceEventsArray.push(throttleBitrate$.pipe(map(bitrate => ({ bitrate }))));
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Emit restrictions on the pools of available representations to choose
|
|
53
|
-
// from.
|
|
54
|
-
return deviceEventsArray.length > 0 ?
|
|
55
|
-
observableCombineLatest(deviceEventsArray)
|
|
56
|
-
.pipe(map((args : IABRFiltersObject[]) : IABRFiltersObject =>
|
|
57
|
-
objectAssign({}, ...args) as IABRFiltersObject)) :
|
|
58
|
-
observableOf({});
|
|
59
|
-
}
|