rx-player 3.26.2 → 3.27.0-dev.20220317

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.
Files changed (500) hide show
  1. package/.github/workflows/perfs.yml +22 -0
  2. package/CHANGELOG.md +33 -1
  3. package/FILES.md +5 -4
  4. package/VERSION +1 -1
  5. package/dist/_esm5.processed/compat/browser_detection.d.ts +4 -2
  6. package/dist/_esm5.processed/compat/browser_detection.js +4 -2
  7. package/dist/_esm5.processed/compat/eme/close_session.d.ts +11 -5
  8. package/dist/_esm5.processed/compat/eme/close_session.js +144 -36
  9. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
  10. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +27 -24
  11. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +53 -34
  12. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +43 -41
  13. package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
  14. package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
  15. package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
  16. package/dist/_esm5.processed/compat/eme/load_session.js +68 -17
  17. package/dist/_esm5.processed/compat/event_listeners.js +2 -1
  18. package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
  19. package/dist/_esm5.processed/config.d.ts +166 -1080
  20. package/dist/_esm5.processed/config.js +17 -1119
  21. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
  22. package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
  23. package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
  24. package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +1 -1
  25. package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
  26. package/dist/_esm5.processed/core/abr/pending_requests_store.js +3 -5
  27. package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +1 -1
  28. package/dist/_esm5.processed/core/abr/representation_estimator.js +2 -2
  29. package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
  30. package/dist/_esm5.processed/core/api/index.d.ts +2 -1
  31. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
  32. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +22 -4
  33. package/dist/_esm5.processed/core/api/option_utils.d.ts +3 -1
  34. package/dist/_esm5.processed/core/api/option_utils.js +19 -6
  35. package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
  36. package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
  37. package/dist/_esm5.processed/core/api/public_api.js +72 -33
  38. package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +6 -6
  39. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -51
  40. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +30 -75
  41. package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
  42. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +104 -0
  43. package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
  44. package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +41 -0
  45. package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
  46. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +866 -0
  47. package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
  48. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
  49. package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
  50. package/dist/_esm5.processed/core/decrypt/create_session.js +174 -0
  51. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +21 -0
  52. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
  53. package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
  54. package/dist/_esm5.processed/core/decrypt/find_key_system.js +300 -0
  55. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
  56. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
  57. package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
  58. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
  59. package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
  60. package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
  61. package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
  62. package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
  63. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
  64. package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
  65. package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
  66. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
  67. package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +120 -242
  68. package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
  69. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
  70. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
  71. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
  72. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
  73. package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
  74. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +85 -0
  75. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
  76. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
  77. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
  78. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
  79. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
  80. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
  81. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
  82. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
  83. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
  84. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
  85. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
  86. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
  87. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
  88. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +303 -0
  89. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
  90. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
  91. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
  92. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
  93. package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
  94. package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
  95. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
  96. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
  97. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +4 -4
  98. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +3 -3
  99. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +2 -2
  100. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +6 -2
  101. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  102. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +1 -1
  103. package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
  104. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +3 -3
  105. package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
  106. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +5 -3
  107. package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
  108. package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
  109. package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
  110. package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
  111. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
  112. package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
  113. package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
  114. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
  115. package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
  116. package/dist/_esm5.processed/core/init/types.d.ts +2 -4
  117. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
  118. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +3 -3
  119. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
  120. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +32 -31
  121. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +4 -4
  122. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
  123. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
  124. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
  125. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
  126. package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
  127. package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
  128. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
  129. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
  130. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
  131. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +1 -1
  132. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +2 -1
  133. package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
  134. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +5 -6
  135. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
  136. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
  137. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
  138. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
  139. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
  140. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
  141. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
  142. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
  143. package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
  144. package/dist/_esm5.processed/default_config.d.ts +1114 -0
  145. package/dist/_esm5.processed/default_config.js +1145 -0
  146. package/dist/_esm5.processed/errors/request_error.js +3 -1
  147. package/dist/_esm5.processed/experimental/index.d.ts +2 -0
  148. package/dist/_esm5.processed/experimental/index.js +2 -0
  149. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
  150. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
  151. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +2 -4
  152. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
  153. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
  154. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +1 -2
  155. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +1 -2
  156. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
  157. package/dist/_esm5.processed/features/features_object.js +1 -1
  158. package/dist/_esm5.processed/features/initialize_features.js +1 -1
  159. package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
  160. package/dist/_esm5.processed/features/list/eme.js +5 -5
  161. package/dist/_esm5.processed/features/types.d.ts +3 -3
  162. package/dist/_esm5.processed/manifest/adaptation.d.ts +2 -2
  163. package/dist/_esm5.processed/manifest/adaptation.js +3 -1
  164. package/dist/_esm5.processed/manifest/manifest.d.ts +10 -23
  165. package/dist/_esm5.processed/manifest/manifest.js +10 -74
  166. package/dist/_esm5.processed/manifest/period.d.ts +3 -3
  167. package/dist/_esm5.processed/manifest/representation.d.ts +37 -5
  168. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +18 -18
  169. package/dist/_esm5.processed/manifest/types.d.ts +3 -3
  170. package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
  171. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
  172. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +6 -6
  173. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
  174. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -2
  175. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
  176. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +14 -14
  177. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +17 -17
  178. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
  179. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
  180. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +28 -20
  181. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +20 -5
  182. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  183. package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
  184. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -35
  185. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +109 -96
  186. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +8 -8
  187. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
  188. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +18 -27
  189. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +25 -23
  190. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +21 -15
  191. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +19 -19
  192. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -38
  193. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +8 -8
  194. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +30 -30
  195. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +3 -3
  196. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -1
  197. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
  198. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
  199. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
  200. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
  201. package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
  202. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
  203. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +15 -5
  204. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +2 -2
  205. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
  206. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +31 -19
  207. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
  208. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
  209. package/dist/_esm5.processed/public_types.d.ts +2 -2
  210. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +2 -1
  211. package/dist/_esm5.processed/transports/dash/image_pipelines.js +4 -1
  212. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
  213. package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
  214. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
  215. package/dist/_esm5.processed/transports/dash/segment_loader.js +2 -2
  216. package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +1 -1
  217. package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
  218. package/dist/_esm5.processed/transports/dash/text_loader.d.ts +1 -1
  219. package/dist/_esm5.processed/transports/dash/text_loader.js +1 -1
  220. package/dist/_esm5.processed/transports/dash/text_parser.d.ts +1 -1
  221. package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
  222. package/dist/_esm5.processed/transports/local/segment_loader.d.ts +1 -2
  223. package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
  224. package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
  225. package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
  226. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +1 -1
  227. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
  228. package/dist/_esm5.processed/transports/smooth/pipelines.js +69 -11
  229. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +0 -1
  230. package/dist/_esm5.processed/transports/smooth/segment_loader.js +2 -2
  231. package/dist/_esm5.processed/transports/types.d.ts +58 -30
  232. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
  233. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +1 -1
  234. package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -1
  235. package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
  236. package/dist/_esm5.processed/utils/cast_to_observable.js +1 -1
  237. package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
  238. package/dist/_esm5.processed/utils/deep_merge.js +53 -0
  239. package/dist/_esm5.processed/utils/reference.d.ts +29 -0
  240. package/dist/_esm5.processed/utils/reference.js +72 -24
  241. package/dist/_esm5.processed/utils/request/fetch.d.ts +4 -5
  242. package/dist/_esm5.processed/utils/request/fetch.js +8 -6
  243. package/dist/_esm5.processed/utils/request/xhr.d.ts +6 -6
  244. package/dist/_esm5.processed/utils/request/xhr.js +3 -2
  245. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +1 -2
  246. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
  247. package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
  248. package/dist/_esm5.processed/utils/task_canceller.js +3 -3
  249. package/dist/rx-player.js +5242 -3190
  250. package/dist/rx-player.min.js +1 -1
  251. package/dummy +1 -0
  252. package/{dist/_esm5.processed/core/eme/dispose_eme.d.ts → experimental/index.d.ts} +1 -4
  253. package/{dist/_esm5.processed/core/eme/dispose_media_keys.d.ts → experimental/index.js} +1 -6
  254. package/package.json +33 -36
  255. package/scripts/build/templates/experimental/index.d.ts +16 -0
  256. package/scripts/build/templates/experimental/index.js +16 -0
  257. package/scripts/doc-generator/generate_header_html.js +6 -7
  258. package/scripts/doc-generator/generate_page_html.js +3 -4
  259. package/scripts/doc-generator/generate_page_list_html.js +4 -5
  260. package/scripts/doc-generator/generate_sidebar_html.js +4 -7
  261. package/scripts/doc-generator/utils.js +0 -11
  262. package/scripts/generate_demo_list.js +3 -3
  263. package/scripts/generate_documentation_list.js +3 -3
  264. package/scripts/launch_static_server.js +127 -67
  265. package/scripts/run_standalone_demo.js +1 -0
  266. package/scripts/start_demo_web_server.js +1 -0
  267. package/sonar-project.properties +1 -1
  268. package/src/README.md +6 -6
  269. package/src/compat/__tests__/fullscreen.test.ts +7 -7
  270. package/src/compat/__tests__/is_vtt_cue.test.ts +1 -1
  271. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
  272. package/src/compat/browser_detection.ts +4 -2
  273. package/src/compat/eme/close_session.ts +90 -56
  274. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
  275. package/src/compat/eme/custom_media_keys/index.ts +28 -41
  276. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +63 -46
  277. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +51 -49
  278. package/src/compat/eme/generate_key_request.ts +25 -33
  279. package/src/compat/eme/load_session.ts +29 -31
  280. package/src/compat/event_listeners.ts +2 -1
  281. package/src/compat/should_favour_custom_safari_EME.ts +5 -2
  282. package/src/config.ts +17 -1210
  283. package/src/core/README.md +1 -1
  284. package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
  285. package/src/core/abr/bandwidth_estimator.ts +4 -4
  286. package/src/core/abr/buffer_based_chooser.ts +85 -20
  287. package/src/core/abr/network_analyzer.ts +6 -7
  288. package/src/core/abr/pending_requests_store.ts +3 -5
  289. package/src/core/abr/representation_estimator.ts +6 -3
  290. package/src/core/api/__tests__/get_player_state.test.ts +3 -3
  291. package/src/core/api/__tests__/option_utils.test.ts +17 -17
  292. package/src/core/api/get_player_state.ts +1 -1
  293. package/src/core/api/index.ts +3 -0
  294. package/src/core/api/media_element_track_choice_manager.ts +22 -3
  295. package/src/core/api/option_utils.ts +37 -20
  296. package/src/core/api/playback_observer.ts +12 -8
  297. package/src/core/api/public_api.ts +152 -112
  298. package/src/core/api/track_choice_manager.ts +10 -9
  299. package/src/core/decrypt/README.md +22 -0
  300. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
  301. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
  302. package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
  303. package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
  304. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
  305. package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +36 -103
  306. package/src/core/{eme → decrypt}/attach_media_keys.ts +49 -56
  307. package/src/core/decrypt/clear_on_stop.ts +48 -0
  308. package/src/core/decrypt/content_decryptor.ts +1158 -0
  309. package/src/core/decrypt/create_or_load_session.ts +130 -0
  310. package/src/core/decrypt/create_session.ts +175 -0
  311. package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
  312. package/src/core/{eme → decrypt}/find_key_system.ts +126 -134
  313. package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
  314. package/src/core/decrypt/get_media_keys.ts +145 -0
  315. package/src/core/{eme → decrypt}/index.ts +11 -8
  316. package/src/core/decrypt/init_media_keys.ts +51 -0
  317. package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
  318. package/src/core/decrypt/set_server_certificate.ts +104 -0
  319. package/src/core/{eme → decrypt}/types.ts +129 -259
  320. package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
  321. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
  322. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
  323. package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
  324. package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
  325. package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +20 -20
  326. package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
  327. package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
  328. package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
  329. package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
  330. package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
  331. package/src/core/decrypt/utils/key_session_record.ts +175 -0
  332. package/src/core/decrypt/utils/loaded_sessions_store.ts +318 -0
  333. package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
  334. package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
  335. package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
  336. package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
  337. package/src/core/fetchers/manifest/manifest_fetcher.ts +9 -9
  338. package/src/core/fetchers/segment/segment_fetcher.ts +10 -7
  339. package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
  340. package/src/core/fetchers/utils/try_urls_with_backoff.ts +1 -1
  341. package/src/core/init/.initialize_media_source.ts.un~ +0 -0
  342. package/src/core/init/get_initial_time.ts +2 -1
  343. package/src/core/init/initialize_directfile.ts +19 -22
  344. package/src/core/init/initialize_media_source.ts +43 -106
  345. package/src/core/init/link_drm_and_content.ts +176 -0
  346. package/src/core/init/manifest_update_scheduler.ts +12 -10
  347. package/src/core/init/stall_avoider.ts +6 -5
  348. package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
  349. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
  350. package/src/core/init/stream_events_emitter/types.ts +2 -2
  351. package/src/core/init/types.ts +1 -39
  352. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
  353. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +6 -7
  354. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +32 -31
  355. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
  356. package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
  357. package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
  358. package/src/core/stream/events_generators.ts +9 -4
  359. package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
  360. package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
  361. package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
  362. package/src/core/stream/period/period_stream.ts +5 -2
  363. package/src/core/stream/representation/force_garbage_collection.ts +5 -7
  364. package/src/core/stream/representation/get_buffer_status.ts +28 -16
  365. package/src/core/stream/representation/get_needed_segments.ts +124 -28
  366. package/src/core/stream/representation/get_segment_priority.ts +1 -2
  367. package/src/core/stream/representation/push_media_segment.ts +3 -2
  368. package/src/core/stream/representation/representation_stream.ts +30 -7
  369. package/src/core/stream/types.ts +1 -1
  370. package/src/default_config.ts +1241 -0
  371. package/src/errors/request_error.ts +4 -1
  372. package/src/experimental/index.ts +5 -0
  373. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
  374. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +5 -7
  375. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
  376. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +4 -4
  377. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +1 -1
  378. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
  379. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +1 -2
  380. package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +1 -2
  381. package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
  382. package/src/features/__tests__/initialize_features.test.ts +2 -2
  383. package/src/features/features_object.ts +1 -1
  384. package/src/features/initialize_features.ts +1 -1
  385. package/src/features/list/__tests__/eme.test.ts +5 -5
  386. package/src/features/list/eme.ts +5 -5
  387. package/src/features/types.ts +3 -10
  388. package/src/manifest/adaptation.ts +6 -4
  389. package/src/manifest/manifest.ts +16 -86
  390. package/src/manifest/period.ts +3 -3
  391. package/src/manifest/representation.ts +38 -5
  392. package/src/manifest/representation_index/types.ts +18 -18
  393. package/src/manifest/types.ts +3 -3
  394. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
  395. package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
  396. package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
  397. package/src/parsers/manifest/dash/common/indexes/base.ts +6 -6
  398. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +4 -2
  399. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +2 -2
  400. package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
  401. package/src/parsers/manifest/dash/common/indexes/list.ts +14 -14
  402. package/src/parsers/manifest/dash/common/indexes/template.ts +18 -18
  403. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
  404. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +51 -23
  405. package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
  406. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
  407. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +167 -134
  408. package/src/parsers/manifest/dash/common/parse_mpd.ts +9 -10
  409. package/src/parsers/manifest/dash/common/parse_periods.ts +80 -79
  410. package/src/parsers/manifest/dash/common/parse_representation_index.ts +83 -75
  411. package/src/parsers/manifest/dash/common/parse_representations.ts +44 -63
  412. package/src/parsers/manifest/dash/node_parser_types.ts +30 -30
  413. package/src/parsers/manifest/dash/parsers_types.ts +3 -3
  414. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
  415. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +4 -4
  416. package/src/parsers/manifest/smooth/create_parser.ts +24 -21
  417. package/src/parsers/manifest/smooth/representation_index.ts +14 -14
  418. package/src/parsers/manifest/types.ts +28 -28
  419. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +31 -33
  420. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +15 -6
  421. package/src/parsers/manifest/utils/index_helpers.ts +2 -2
  422. package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
  423. package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
  424. package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
  425. package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
  426. package/src/public_types.ts +5 -1
  427. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +2 -2
  428. package/src/transports/dash/image_pipelines.ts +4 -1
  429. package/src/transports/dash/init_segment_loader.ts +1 -1
  430. package/src/transports/dash/manifest_parser.ts +1 -1
  431. package/src/transports/dash/segment_loader.ts +7 -7
  432. package/src/transports/dash/segment_parser.ts +8 -1
  433. package/src/transports/dash/text_loader.ts +2 -2
  434. package/src/transports/dash/text_parser.ts +11 -1
  435. package/src/transports/local/segment_loader.ts +4 -4
  436. package/src/transports/local/segment_parser.ts +4 -0
  437. package/src/transports/local/text_parser.ts +8 -0
  438. package/src/transports/metaplaylist/manifest_loader.ts +1 -1
  439. package/src/transports/metaplaylist/pipelines.ts +1 -1
  440. package/src/transports/smooth/pipelines.ts +29 -16
  441. package/src/transports/smooth/segment_loader.ts +8 -8
  442. package/src/transports/types.ts +59 -30
  443. package/src/transports/utils/call_custom_manifest_loader.ts +6 -6
  444. package/src/transports/utils/generate_manifest_loader.ts +1 -1
  445. package/src/utils/__tests__/deep_merge.test.ts +48 -0
  446. package/src/utils/__tests__/flat_map.test.ts +12 -7
  447. package/src/utils/cancellable_sleep.ts +1 -1
  448. package/src/utils/cast_to_observable.ts +1 -2
  449. package/src/utils/deep_merge.ts +46 -0
  450. package/src/utils/reference.ts +116 -23
  451. package/src/utils/request/fetch.ts +17 -15
  452. package/src/utils/request/xhr.ts +11 -8
  453. package/src/utils/rx-from_cancellable_promise.ts +8 -4
  454. package/src/utils/task_canceller.ts +6 -4
  455. package/tsconfig.json +1 -2
  456. package/tsconfig.modules.json +1 -2
  457. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
  458. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
  459. package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
  460. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
  461. package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
  462. package/dist/_esm5.processed/core/eme/create_session.js +0 -126
  463. package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
  464. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
  465. package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
  466. package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
  467. package/dist/_esm5.processed/core/eme/find_key_system.js +0 -243
  468. package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
  469. package/dist/_esm5.processed/core/eme/get_session.js +0 -68
  470. package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
  471. package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
  472. package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
  473. package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
  474. package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
  475. package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
  476. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
  477. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
  478. package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
  479. package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
  480. package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
  481. package/src/core/eme/README.md +0 -26
  482. package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
  483. package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
  484. package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
  485. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
  486. package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
  487. package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
  488. package/src/core/eme/clear_eme_session.ts +0 -62
  489. package/src/core/eme/create_session.ts +0 -187
  490. package/src/core/eme/dispose_eme.ts +0 -25
  491. package/src/core/eme/dispose_media_keys.ts +0 -46
  492. package/src/core/eme/eme_manager.ts +0 -387
  493. package/src/core/eme/get_media_keys.ts +0 -141
  494. package/src/core/eme/get_session.ts +0 -135
  495. package/src/core/eme/init_media_keys.ts +0 -106
  496. package/src/core/eme/set_server_certificate.ts +0 -115
  497. package/src/core/eme/utils/close_session.ts +0 -113
  498. package/src/core/eme/utils/init_data_store.ts +0 -234
  499. package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
  500. package/src/core/init/create_eme_manager.ts +0 -95
package/dummy ADDED
@@ -0,0 +1 @@
1
+ This is an unnecessary file, just added to trigger the integration tests in a PR through GitHub actions.
@@ -13,7 +13,4 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- /**
17
- * Free up all ressources taken by the EME management.
18
- */
19
- export default function disposeEME(mediaElement: HTMLMediaElement): void;
16
+ export * from "../dist/_esm5.processed/experimental/index";
@@ -13,9 +13,4 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Observable } from "rxjs";
17
- /**
18
- * @param {Object} mediaKeysInfos
19
- * @returns {Observable}
20
- */
21
- export default function disposeMediaKeys(mediaElement: HTMLMediaElement): Observable<unknown>;
16
+ export * from "../dist/_esm5.processed/experimental/index.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "rx-player",
3
3
  "author": "Canal+",
4
- "version": "3.26.2",
4
+ "version": "3.27.0-dev.20220317",
5
5
  "description": "Canal+ HTML5 Video Player",
6
6
  "main": "./dist/rx-player.js",
7
7
  "keywords": [
@@ -38,7 +38,7 @@
38
38
  "build:wasm:release": "cd ./src/parsers/manifest/dash/wasm-parser && cargo build --target wasm32-unknown-unknown --release && wasm-opt -O3 -o ../../../../../dist/mpd-parser.wasm target/wasm32-unknown-unknown/release/mpd_node_parser.wasm && cd ../../../../../ && npm run wasm-strip",
39
39
  "certificate": "./scripts/generate_certificate",
40
40
  "check": "npm run check:types && npm run lint",
41
- "check:all": "npm run check:types && npm run lint && npm run lint:demo && npm run lint:tests && npm run test && npm run test:memory && node -r esm ./scripts/check_nodejs_import_compatibility.js",
41
+ "check:all": "npm run check:types && npm run lint && npm run lint:demo && npm run lint:tests && npm run test:unit && npm run test:integration && npm run test:memory && node -r esm ./scripts/check_nodejs_import_compatibility.js",
42
42
  "check:appveyor": "npm run check:types && npm run lint && npm run lint:demo && npm run lint:tests && npm run test:appveyor",
43
43
  "check:types": "tsc --noEmit --project .",
44
44
  "check:types:watch": "tsc --noEmit --watch --project .",
@@ -80,59 +80,56 @@
80
80
  "rxjs": "7.4.0"
81
81
  },
82
82
  "devDependencies": {
83
- "@babel/core": "7.16.7",
84
- "@babel/plugin-transform-runtime": "7.16.7",
85
- "@babel/preset-env": "7.16.7",
83
+ "@babel/core": "7.17.7",
84
+ "@babel/plugin-transform-runtime": "7.17.0",
85
+ "@babel/preset-env": "7.16.11",
86
86
  "@babel/preset-react": "7.16.7",
87
87
  "@types/chai": "4.3.0",
88
- "@types/jest": "27.4.0",
89
- "@types/mocha": "9.0.0",
90
- "@types/node": "17.0.7",
91
- "@types/sinon": "10.0.6",
92
- "@typescript-eslint/eslint-plugin": "5.8.1",
93
- "@typescript-eslint/eslint-plugin-tslint": "5.8.1",
94
- "@typescript-eslint/parser": "5.8.1",
88
+ "@types/jest": "27.4.1",
89
+ "@types/mocha": "9.1.0",
90
+ "@types/node": "17.0.21",
91
+ "@types/sinon": "10.0.11",
92
+ "@typescript-eslint/eslint-plugin": "5.15.0",
93
+ "@typescript-eslint/eslint-plugin-tslint": "5.15.0",
94
+ "@typescript-eslint/parser": "5.15.0",
95
95
  "arraybuffer-loader": "1.0.8",
96
96
  "babel-loader": "8.2.3",
97
- "chai": "4.3.4",
97
+ "chai": "4.3.6",
98
98
  "cheerio": "1.0.0-rc.10",
99
- "core-js": "3.20.2",
100
- "esbuild": "0.14.10",
101
- "eslint": "8.6.0",
99
+ "core-js": "3.21.1",
100
+ "esbuild": "0.14.27",
101
+ "eslint": "8.11.0",
102
102
  "eslint-plugin-import": "2.25.4",
103
- "eslint-plugin-jsdoc": "37.5.0",
104
- "eslint-plugin-react": "7.28.0",
103
+ "eslint-plugin-jsdoc": "38.0.4",
104
+ "eslint-plugin-react": "7.29.4",
105
105
  "esm": "3.2.25",
106
- "express": "4.17.2",
107
- "highlight.js": "11.3.1",
108
- "html-entities": "^2.3.2",
109
- "istanbul-instrumenter-loader": "3.0.1",
110
- "jest": "27.4.5",
111
- "karma": "6.3.9",
112
- "karma-chrome-launcher": "3.1.0",
113
- "karma-coverage-istanbul-reporter": "3.0.3",
106
+ "express": "4.17.3",
107
+ "highlight.js": "11.5.0",
108
+ "html-entities": "2.3.2",
109
+ "jest": "27.5.1",
110
+ "karma": "6.3.17",
111
+ "karma-chrome-launcher": "3.1.1",
114
112
  "karma-firefox-launcher": "2.1.2",
115
113
  "karma-mocha": "2.0.1",
116
114
  "karma-webpack": "5.0.0",
117
- "markdown-it": "12.3.0",
118
- "mocha": "9.1.3",
115
+ "markdown-it": "12.3.2",
116
+ "mocha": "9.2.2",
119
117
  "mocha-loader": "5.1.5",
120
118
  "raw-loader": "4.0.2",
121
119
  "react": "17.0.2",
122
120
  "react-dom": "17.0.2",
123
121
  "regenerator-runtime": "0.13.9",
124
122
  "rimraf": "3.0.2",
125
- "sanitize-html": "2.6.1",
126
123
  "semver": "7.3.5",
127
- "sinon": "12.0.1",
128
- "terser-webpack-plugin": "5.3.0",
129
- "ts-jest": "27.1.2",
130
- "ts-loader": "9.2.6",
124
+ "sinon": "13.0.1",
125
+ "terser-webpack-plugin": "5.3.1",
126
+ "ts-jest": "27.1.3",
127
+ "ts-loader": "9.2.8",
131
128
  "tslint": "6.1.3",
132
- "typescript": "4.5.4",
133
- "webpack": "5.65.0",
129
+ "typescript": "4.6.2",
130
+ "webpack": "5.70.0",
134
131
  "webpack-bundle-analyzer": "4.5.0",
135
- "webpack-cli": "4.9.1"
132
+ "webpack-cli": "4.9.2"
136
133
  },
137
134
  "scripts-list": {
138
135
  "Build a demo page (e.g. to test a code change)": {
@@ -0,0 +1,16 @@
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
+ export * from "../__BUILD_DIR__/experimental/index";
@@ -0,0 +1,16 @@
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
+ export * from "../__BUILD_DIR__/experimental/index.js";
@@ -1,7 +1,6 @@
1
1
  const path = require("path");
2
2
  const { encode } = require("html-entities");
3
3
  const {
4
- encodeHtmlAttributeValue,
5
4
  toUriCompatibleRelativePath,
6
5
  getGithubSvg,
7
6
  } = require("./utils");
@@ -30,12 +29,12 @@ function generateHeaderHtml(config, currentLinkIdx, currentPath, logoInfo) {
30
29
  case "local-doc": {
31
30
  const relativeUri = toUriCompatibleRelativePath(l.firstPage, currentDir);
32
31
  const activeClass = i === currentLinkIdx ? " navbar-active" : "";
33
- const cleanedHref = encodeHtmlAttributeValue(relativeUri);
32
+ const cleanedHref = encode(relativeUri);
34
33
  return `<a class="navbar-item${activeClass}${customClass} hideable"` +
35
34
  `href="${cleanedHref}">${encode(l.displayName)}</a>`;
36
35
  }
37
36
  case "external-link": {
38
- const cleanedHref = encodeHtmlAttributeValue(l.link);
37
+ const cleanedHref = encode(l.link);
39
38
  return `<a class="navbar-item${customClass} hideable"` +
40
39
  `href="${cleanedHref}">${encode(l.displayName)}</a>`;
41
40
  }
@@ -84,7 +83,7 @@ function constructVersionLinkHtmlInHeaderBar(versionInfo, customClass) {
84
83
  if (typeof versionInfo.link === "string") {
85
84
  hasLink = true;
86
85
  element += `<a class="navbar-item${customClass}"` +
87
- `href="${encodeHtmlAttributeValue(versionInfo.link)}">`;
86
+ `href="${encode(versionInfo.link)}">`;
88
87
  } else {
89
88
  element += `<span class="navbar-item${customClass}">`;
90
89
  }
@@ -101,7 +100,7 @@ function constructVersionLinkHtmlInHeaderBar(versionInfo, customClass) {
101
100
  * @returns {string}
102
101
  */
103
102
  function constructGithubLinkHtmlInHeaderBar(githubLnk, customClass) {
104
- const cleanedHref = encodeHtmlAttributeValue(githubLnk);
103
+ const cleanedHref = encode(githubLnk);
105
104
  return `<a aria-label="Link to repository" class="navbar-item${customClass} hideable" href="${cleanedHref}">` +
106
105
  getGithubSvg() +
107
106
  "</a>";
@@ -133,11 +132,11 @@ function constructLogoHtmlInHeaderBar(logoInfo) {
133
132
  let hasLink = false;
134
133
  if (typeof logoInfo.link === "string") {
135
134
  hasLink = true;
136
- logoHtml += `<a href="${encodeHtmlAttributeValue(logoInfo.link)}">`;
135
+ logoHtml += `<a href="${encode(logoInfo.link)}">`;
137
136
  }
138
137
  if (typeof logoInfo.url === "string") {
139
138
  logoHtml += `<img alt="Logo" class="navbar-item navbar-item-logo"` +
140
- ` src="${encodeHtmlAttributeValue(logoInfo.url)}" />`;
139
+ ` src="${encode(logoInfo.url)}" />`;
141
140
  }
142
141
  if (hasLink) {
143
142
  logoHtml += "</a>";
@@ -1,5 +1,4 @@
1
1
  const { encode } = require("html-entities");
2
- const { encodeHtmlAttributeValue } = require("./utils");
3
2
 
4
3
  /**
5
4
  * Generate HTML page for the given documentation.
@@ -42,7 +41,7 @@ function generatePageHtml(
42
41
  const styles = constructStylesHtml(cssUrls);
43
42
  const scripts = constructScriptsHtml(scriptUrls);
44
43
  const faviconHtml = typeof faviconUrl === "string" ?
45
- `<link rel="icon" type="image/png" href="${encodeHtmlAttributeValue(faviconUrl)}">` :
44
+ `<link rel="icon" type="image/png" href="${encode(faviconUrl)}">` :
46
45
  "";
47
46
  const hamburgerHtml = constructHamburgerBarHtml(pageListHtml);
48
47
 
@@ -98,7 +97,7 @@ function constructHamburgerBarHtml(pageListHtml) {
98
97
  */
99
98
  function constructStylesHtml(cssUrls) {
100
99
  return cssUrls.map(cssUrl =>
101
- `<link rel="stylesheet" href="${encodeHtmlAttributeValue(cssUrl)}"/>`)
100
+ `<link rel="stylesheet" href="${encode(cssUrl)}"/>`)
102
101
  .join("");
103
102
  }
104
103
 
@@ -108,7 +107,7 @@ function constructStylesHtml(cssUrls) {
108
107
  */
109
108
  function constructScriptsHtml(scriptUrls) {
110
109
  return scriptUrls.map(scriptUrl =>
111
- `<script type="text/javascript" src="${encodeHtmlAttributeValue(scriptUrl)}" ` +
110
+ `<script type="text/javascript" src="${encode(scriptUrl)}" ` +
112
111
  `charset="utf-8"></script>`
113
112
  ).join("");
114
113
  }
@@ -1,7 +1,6 @@
1
1
  const { encode } = require("html-entities");
2
2
  const path = require("path");
3
3
  const {
4
- encodeHtmlAttributeValue,
5
4
  getGithubSvg,
6
5
  toUriCompatibleRelativePath,
7
6
  } = require("./utils");
@@ -39,7 +38,7 @@ function generatePageListHtml(
39
38
  const pageActiveClasses = isPageActive ? " active" : "";
40
39
  const relativeUri = toUriCompatibleRelativePath(outputFile, currentDir);
41
40
  return `<li class="page-list-item${pageActiveClasses}">` +
42
- `<a href="${encodeHtmlAttributeValue(relativeUri)}">` +
41
+ `<a href="${encode(relativeUri)}">` +
43
42
  encode(displayName) +
44
43
  `</a></li>`;
45
44
  }
@@ -54,7 +53,7 @@ function generatePageListHtml(
54
53
  const { displayName, outputFile } = currentSubPage;
55
54
  const relativeUri = toUriCompatibleRelativePath(outputFile, currentDir);
56
55
  return `<li class="page-list-item${spActiveClasses}">` +
57
- `<a href="${encodeHtmlAttributeValue(relativeUri)}">` +
56
+ `<a href="${encode(relativeUri)}">` +
58
57
  encode(displayName) +
59
58
  `</a></li>`;
60
59
  }).join("\n") + "</ul></li>";
@@ -62,7 +61,7 @@ function generatePageListHtml(
62
61
  }
63
62
 
64
63
  case "external-link": {
65
- const cleanedHref = encodeHtmlAttributeValue(l.link);
64
+ const cleanedHref = encode(l.link);
66
65
  return `<li class="page-list-item">` +
67
66
  `<a href="${cleanedHref}">` +
68
67
  encode(l.displayName) +
@@ -70,7 +69,7 @@ function generatePageListHtml(
70
69
  }
71
70
 
72
71
  case "github-link":
73
- const cleanedHref = encodeHtmlAttributeValue(l.link);
72
+ const cleanedHref = encode(l.link);
74
73
  return `<li class="page-list-item">` +
75
74
  `<a aria-label="Link to repository" href="${cleanedHref}">` +
76
75
  getGithubSvg() +
@@ -1,9 +1,6 @@
1
1
  const path = require("path");
2
2
  const { encode } = require("html-entities");
3
- const {
4
- encodeHtmlAttributeValue,
5
- toUriCompatibleRelativePath,
6
- } = require("./utils");
3
+ const { toUriCompatibleRelativePath } = require("./utils");
7
4
 
8
5
  /**
9
6
  * Construct HTML element, as a string, which corresponds to the sidebar for
@@ -52,7 +49,7 @@ function generateSidebarHtml(
52
49
  path.dirname(currentPath)
53
50
  );
54
51
  const activeClass = isActive ? " active" : "";
55
- const cleanedHref = encodeHtmlAttributeValue(relativeUri);
52
+ const cleanedHref = encode(relativeUri);
56
53
  return "<li class=\"sidebar-item\">" +
57
54
  `<a class="sidebar-link${activeClass}" href="` +
58
55
  cleanedHref +
@@ -71,11 +68,11 @@ function constructSidebarHeaderHtml(logoInfo) {
71
68
  let hasLink = false;
72
69
  if (typeof logoInfo.link === "string") {
73
70
  hasLink = true;
74
- sidebarHeaderHtml += `<a href="${encodeHtmlAttributeValue(logoInfo.link)}">`;
71
+ sidebarHeaderHtml += `<a href="${encode(logoInfo.link)}">`;
75
72
  }
76
73
  if (typeof logoInfo.url === "string") {
77
74
  sidebarHeaderHtml += `<img alt="logo" class="sidebar-header-logo"` +
78
- ` src="${encodeHtmlAttributeValue(logoInfo.url)}" />`;
75
+ ` src="${encode(logoInfo.url)}" />`;
79
76
  }
80
77
  if (hasLink) {
81
78
  sidebarHeaderHtml += "</a>";
@@ -20,16 +20,6 @@ async function mkdirParent(dirPath, mode) {
20
20
  }
21
21
  };
22
22
 
23
- /**
24
- * @param {string} val
25
- * @returns {string}
26
- */
27
- function encodeHtmlAttributeValue(val) {
28
- return val
29
- .replace(/&/g, "&amp;")
30
- .replace(/"/g, "&quot;");
31
- }
32
-
33
23
  /**
34
24
  * @param {string} target
35
25
  * @param {string} currentDir
@@ -77,7 +67,6 @@ function getGithubSvg() {
77
67
  }
78
68
 
79
69
  module.exports = {
80
- encodeHtmlAttributeValue,
81
70
  getGithubSvg,
82
71
  mkdirParent,
83
72
  pathToUrl,
@@ -36,7 +36,7 @@
36
36
 
37
37
  const fs = require("fs");
38
38
  const path = require("path");
39
- const sanitizeHTML = require("sanitize-html");
39
+ const { encode } = require("html-entities");
40
40
  const semver = require("semver");
41
41
 
42
42
  const INITIAL_PATH = "./versions";
@@ -88,8 +88,8 @@ if (versions.length <= 0) {
88
88
  const version = sortedVersions[i];
89
89
  // const versionAsNumber = +version.split(".").join();
90
90
  const dirPath = path.join(INITIAL_PATH, version, "demo/index.html");
91
- body += `<li><a href=${sanitizeHTML(dirPath)}>` +
92
- sanitizeHTML(version) +
91
+ body += `<li><a href=${encode(dirPath)}>` +
92
+ encode(version) +
93
93
  "</a></li>";
94
94
  }
95
95
  body += "</ul>";
@@ -36,7 +36,7 @@
36
36
 
37
37
  const fs = require("fs");
38
38
  const path = require("path");
39
- const sanitizeHTML = require("sanitize-html");
39
+ const { encode } = require("html-entities");
40
40
  const semver = require("semver");
41
41
 
42
42
  const INITIAL_PATH = "./versions";
@@ -92,8 +92,8 @@ if (versions.length <= 0) {
92
92
  path.join(INITIAL_PATH, version, "doc/api/Overview.html") :
93
93
  path.join(INITIAL_PATH, version, "doc/pages/index.html");
94
94
 
95
- body += `<li><a href=${sanitizeHTML(dirPath)}>` +
96
- sanitizeHTML(version) +
95
+ body += `<li><a href=${encode(dirPath)}>` +
96
+ encode(version) +
97
97
  "</a></li>";
98
98
  }
99
99
  body += "</ul>";
@@ -2,16 +2,11 @@
2
2
  /* eslint-env node */
3
3
 
4
4
  /**
5
- * Run the standalone demo server
6
- * ==============================
5
+ * Launch static server
6
+ * ====================
7
7
  *
8
- * This script allows to build the standalone demo locally and start both an
9
- * HTTP and an HTTPS (only if a certificate and key have been generated) server
10
- * to serve it, on the port 8001 and 8444 respectively.
11
- *
12
- * You can run it as a script through `node run_standalone_demo.js`.
13
- * Be aware that this demo will be built again every time one of the library
14
- * file is updated.
8
+ * This script allows to start both an HTTP and an HTTPS (only if a certificate
9
+ * path and a key path have been given) static file server.
15
10
  */
16
11
 
17
12
  const express = require("express");
@@ -26,78 +21,143 @@ const getHumanReadableHours = require("./utils/get_human_readable_hours");
26
21
  * @param {Object} config - Associated configuration.
27
22
  * @param {number} config.httpPort - Port on which the server will be listening
28
23
  * for HTTP traffic.
29
- * @param {number} config.httpsPort - Port on which the server will be listening
30
- * for HTTPS traffic.
24
+ * @param {number} [config.httpsPort] - Port on which the server will be
25
+ * listening for HTTPS traffic.
26
+ * If not defined, the server won't listen for HTTPS traffic.
27
+ * @param {boolean} [config.verbose] - If set to `true` the server will output
28
+ * when the server start listening and when anything failed.
31
29
  * @param {string} [config.certificatePath] - Path to the TLS certificate that
32
30
  * will be used in HTTPS connections.
33
- * If not defined or if it doesn't lead to any file, the server won't listen for
34
- * HTTPS traffic.
35
- * @param {string} config.keyPath - Path to the public key allowing to encrypt
31
+ * If not defined, the server won't listen for HTTPS traffic.
32
+ * @param {string} [config.keyPath] - Path to the public key allowing to encrypt
36
33
  * the HTTPS connection.
37
- * If not defined or if it doesn't lead to any file, the server won't listen for
38
- * HTTPS traffic.
34
+ * If not defined, the server won't listen for HTTPS traffic.
35
+ * @returns {Object} Object with two properties:
36
+ * - `listeningPromise` (Promise.<Object>): This promise rejects if the HTTP
37
+ * server could not start but resolves in any other case (listening to HTTP
38
+ * alone or both HTTP and HTTPS), even if the asked HTTPS server could not
39
+ * be started.
40
+ *
41
+ * The resolved object contains two boolean properties: `http` and `https`,
42
+ * which are set to `true` when the corresponding server has been started.
43
+ *
44
+ * You can know the reason for the HTTPS server not starting by setting the
45
+ * `verbose` option to `true`. In that case, it will be logged.
46
+ *
47
+ * - `close` (Function): Method allowing to stop the servers from listening
48
+ * and to free their resources.
39
49
  */
40
50
  module.exports = function launchStaticServer(path, config) {
51
+ const shouldStartHttps = config.httpsPort !== undefined &&
52
+ config.certificatePath !== undefined &&
53
+ config.keyPath !== undefined;
54
+ let isHttpServerStarted = false
55
+ let isHttpsServerStarted = false;
56
+
41
57
  const app = express();
42
58
  app.use(express.static(path));
43
59
 
44
- if (config.certificatePath === undefined || config.keyPath === undefined) {
45
- console.warn(`[${getHumanReadableHours()}] ` +
46
- "Not launching the demo in HTTPS: certificate not generated.\n" +
47
- "You can run `npm run certificate` to generate a certificate.");
48
- }
60
+ let server;
61
+ const listeningPromise = new Promise((res, rej) => {
62
+ server = app.listen(config.httpPort, (err) => {
63
+ if (err) {
64
+ if (config.verbose) {
65
+ /* eslint-disable-next-line no-console */
66
+ console.error(`\x1b[31m[${getHumanReadableHours()}]\x1b[0m ` +
67
+ "Could not start static HTTP server:",
68
+ err);
69
+ }
70
+ server.close();
71
+ return rej(err);
72
+ }
73
+ if (config.verbose) {
74
+ /* eslint-disable-next-line no-console */
75
+ console.log(`[${getHumanReadableHours()}] ` +
76
+ `Listening HTTP at http://localhost:${config.httpPort}`);
77
+ }
78
+ isHttpServerStarted = true;
79
+ if (!shouldStartHttps || isHttpsServerStarted) {
80
+ res({ http: true, https: isHttpsServerStarted });
81
+ }
82
+ });
49
83
 
50
- app.listen(config.httpPort, (err) => {
51
- if (err) {
52
- /* eslint-disable no-console */
53
- console.error(`\x1b[31m[${getHumanReadableHours()}]\x1b[0m ` +
54
- "Could not start HTTP server:",
55
- err);
56
- /* eslint-enable no-console */
84
+ if (!shouldStartHttps) {
57
85
  return;
58
86
  }
59
- /* eslint-disable no-console */
60
- console.log(`[${getHumanReadableHours()}] ` +
61
- `Listening HTTP at http://localhost:${config.httpPort}`);
62
- /* eslint-enable no-console */
63
- });
64
87
 
65
- Promise.all([
66
- promisify(fs.readFile)(config.certificatePath),
67
- promisify(fs.readFile)(config.keyPath),
68
- ]).then(([pubFile, privFile]) => {
69
- if (pubFile != null && privFile != null) {
70
- https.createServer({
71
- key: privFile,
72
- cert: pubFile,
73
- }, app).listen(config.httpsPort, (err) => {
74
- if (err) {
75
- /* eslint-disable no-console */
88
+ Promise.all([
89
+ promisify(fs.readFile)(config.certificatePath),
90
+ promisify(fs.readFile)(config.keyPath),
91
+ ]).then(([certFile, keyFile]) => {
92
+ if (certFile != null && keyFile != null) {
93
+ https.createServer({
94
+ key: keyFile,
95
+ cert: certFile,
96
+ }, app).listen(config.httpsPort, (err) => {
97
+ if (err) {
98
+ if (config.verbose) {
99
+ /* eslint-disable-next-line no-console */
100
+ console.error(`\x1b[31m[${getHumanReadableHours()}]\x1b[0m ` +
101
+ "Could not start static HTTPS server:",
102
+ err);
103
+ }
104
+ if (isHttpServerStarted) {
105
+ res({ http: true, https: false });
106
+ }
107
+ return;
108
+ }
109
+ /* eslint-disable-next-line no-console */
110
+ console.log(`[${getHumanReadableHours()}] ` +
111
+ `Listening HTTPS at https://localhost:${config.httpsPort}`);
112
+ });
113
+ if (isHttpServerStarted) {
114
+ res();
115
+ }
116
+ isHttpsServerStarted = true;
117
+ } else {
118
+ const err = new Error("Impossible to load the certificate and/or key file");
119
+ if (config.verbose === true) {
120
+ /* eslint-disable-next-line no-console */
76
121
  console.error(`\x1b[31m[${getHumanReadableHours()}]\x1b[0m ` +
77
- "Could not start HTTPS server:",
122
+ "Could not start static HTTPS server:",
78
123
  err);
79
- /* eslint-enable no-console */
80
- return;
81
124
  }
82
- /* eslint-disable no-console */
83
- console.log(`[${getHumanReadableHours()}] ` +
84
- `Listening HTTPS at https://localhost:${config.httpsPort}`);
85
- /* eslint-enable no-console */
86
- });
87
- }
88
- }, (err) => {
89
- if (err.code === "ENOENT") {
90
- /* eslint-disable no-console */
91
- console.warn(`[${getHumanReadableHours()}] ` +
92
- "Not launching the demo in HTTPS: certificate not generated.\n" +
93
- "You can run `npm run certificate` to generate a certificate.");
94
- /* eslint-enable no-console */
95
- } else {
96
- /* eslint-disable no-console */
97
- console.error(`\x1b[31m[${getHumanReadableHours()}]\x1b[0m ` +
98
- "Could not readt keys and certificate:",
99
- err);
100
- /* eslint-enable no-console */
101
- }
125
+ if (isHttpServerStarted) {
126
+ res({ http: true, https: false });
127
+ }
128
+ return;
129
+ }
130
+ }, (err) => {
131
+ if (err.code === "ENOENT") {
132
+ if (config.verbose) {
133
+ /* eslint-disable-next-line no-console */
134
+ console.warn(`[${getHumanReadableHours()}] ` +
135
+ "Could not start static HTTPS server: ",
136
+ "Certificate not generated.\n" +
137
+ "(You can run `npm run certificate` to generate a certificate.)");
138
+ }
139
+ if (isHttpServerStarted) {
140
+ res({ http: true, https: false });
141
+ }
142
+ return;
143
+ } else {
144
+ const err = new Error("Could not read key and certificate file.");
145
+ if (config.verbose) {
146
+ /* eslint-disable-next-line no-console */
147
+ console.error(`\x1b[31m[${getHumanReadableHours()}]\x1b[0m ` +
148
+ "Could not start static HTTPS server:",
149
+ err);
150
+ }
151
+ if (isHttpServerStarted) {
152
+ res({ http: true, https: false });
153
+ }
154
+ return;
155
+ }
156
+ });
102
157
  });
158
+
159
+ return {
160
+ listeningPromise,
161
+ close() { server.close() },
162
+ };
103
163
  };
@@ -22,5 +22,6 @@ require("./generate_standalone_demo");
22
22
  launchStaticServer(path.join(__dirname, "../demo/standalone/"),
23
23
  { certificatePath: path.join(__dirname, "../localhost.crt"),
24
24
  keyPath: path.join(__dirname, "../localhost.key"),
25
+ verbose: true,
25
26
  httpPort: 8001,
26
27
  httpsPort: 8444 });
@@ -35,5 +35,6 @@ if (shouldRunFastVersion) {
35
35
  launchStaticServer(path.join(__dirname, "../demo/full/"),
36
36
  { certificatePath: path.join(__dirname, "../localhost.crt"),
37
37
  keyPath: path.join(__dirname, "../localhost.key"),
38
+ verbose: true,
38
39
  httpPort: 8000,
39
40
  httpsPort: 8443 });
@@ -1,7 +1,7 @@
1
1
  sonar.projectKey=rx-player
2
2
  sonar.organization=rx-player
3
3
  sonar.projectName=rx-player
4
- sonar.projectVersion=3.26.2
4
+ sonar.projectVersion=3.27.0-dev.2022031700
5
5
  sonar.sources=./src,./demo,./tests
6
6
  sonar.exclusions=demo/full/bundle.js,demo/standalone/lib.js,demo/bundle.js
7
7
  sonar.host.url=https://sonarcloud.io