rx-player 3.26.2 → 3.26.3-dev.2022021400

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 (218) hide show
  1. package/.github/workflows/perfs.yml +22 -0
  2. package/CHANGELOG.md +19 -1
  3. package/VERSION +1 -1
  4. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +6 -2
  5. package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
  6. package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
  7. package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +1 -1
  8. package/dist/_esm5.processed/core/abr/pending_requests_store.js +3 -5
  9. package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +1 -1
  10. package/dist/_esm5.processed/core/abr/representation_estimator.js +2 -2
  11. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
  12. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +20 -3
  13. package/dist/_esm5.processed/core/api/public_api.d.ts +3 -3
  14. package/dist/_esm5.processed/core/api/public_api.js +2 -2
  15. package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +6 -6
  16. package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.d.ts +0 -2
  17. package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +5 -10
  18. package/dist/_esm5.processed/core/eme/find_key_system.js +15 -5
  19. package/dist/_esm5.processed/core/eme/types.d.ts +2 -2
  20. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +4 -4
  21. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +1 -1
  22. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +2 -2
  23. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +5 -1
  24. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +1 -1
  25. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +2 -2
  26. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +1 -1
  27. package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
  28. package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
  29. package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
  30. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +3 -3
  31. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +32 -31
  32. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +4 -4
  33. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +3 -4
  34. package/dist/_esm5.processed/errors/request_error.js +3 -1
  35. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
  36. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +1 -3
  37. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
  38. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
  39. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
  40. package/dist/_esm5.processed/manifest/adaptation.d.ts +2 -2
  41. package/dist/_esm5.processed/manifest/adaptation.js +3 -1
  42. package/dist/_esm5.processed/manifest/manifest.d.ts +9 -9
  43. package/dist/_esm5.processed/manifest/period.d.ts +3 -3
  44. package/dist/_esm5.processed/manifest/representation.d.ts +2 -2
  45. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +18 -18
  46. package/dist/_esm5.processed/manifest/types.d.ts +3 -3
  47. package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
  48. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
  49. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +6 -6
  50. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
  51. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -2
  52. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +14 -14
  53. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +17 -17
  54. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
  55. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +28 -20
  56. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +19 -4
  57. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  58. package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
  59. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -35
  60. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +24 -23
  61. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +8 -8
  62. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +18 -27
  63. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +25 -23
  64. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +21 -15
  65. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +19 -19
  66. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -38
  67. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +8 -8
  68. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +30 -30
  69. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +3 -3
  70. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -1
  71. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
  72. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
  73. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
  74. package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
  75. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
  76. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +15 -5
  77. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +2 -2
  78. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
  79. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +31 -19
  80. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
  81. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
  82. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +2 -1
  83. package/dist/_esm5.processed/transports/dash/image_pipelines.js +1 -1
  84. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
  85. package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
  86. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
  87. package/dist/_esm5.processed/transports/dash/segment_loader.js +2 -2
  88. package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +1 -1
  89. package/dist/_esm5.processed/transports/dash/text_loader.d.ts +1 -1
  90. package/dist/_esm5.processed/transports/dash/text_loader.js +1 -1
  91. package/dist/_esm5.processed/transports/dash/text_parser.d.ts +1 -1
  92. package/dist/_esm5.processed/transports/local/segment_loader.d.ts +1 -2
  93. package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
  94. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +1 -1
  95. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
  96. package/dist/_esm5.processed/transports/smooth/pipelines.js +1 -1
  97. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +0 -1
  98. package/dist/_esm5.processed/transports/smooth/segment_loader.js +2 -2
  99. package/dist/_esm5.processed/transports/types.d.ts +36 -30
  100. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
  101. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +1 -1
  102. package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -1
  103. package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
  104. package/dist/_esm5.processed/utils/cast_to_observable.js +1 -1
  105. package/dist/_esm5.processed/utils/request/fetch.d.ts +4 -5
  106. package/dist/_esm5.processed/utils/request/fetch.js +7 -4
  107. package/dist/_esm5.processed/utils/request/xhr.d.ts +6 -6
  108. package/dist/_esm5.processed/utils/request/xhr.js +2 -1
  109. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +1 -2
  110. package/dist/rx-player.js +404 -321
  111. package/dist/rx-player.min.js +1 -1
  112. package/package.json +3 -4
  113. package/scripts/doc-generator/generate_header_html.js +6 -7
  114. package/scripts/doc-generator/generate_page_html.js +3 -4
  115. package/scripts/doc-generator/generate_page_list_html.js +4 -5
  116. package/scripts/doc-generator/generate_sidebar_html.js +4 -7
  117. package/scripts/doc-generator/utils.js +0 -11
  118. package/scripts/generate_demo_list.js +3 -3
  119. package/scripts/generate_documentation_list.js +3 -3
  120. package/scripts/launch_static_server.js +127 -67
  121. package/scripts/run_standalone_demo.js +1 -0
  122. package/scripts/start_demo_web_server.js +1 -0
  123. package/sonar-project.properties +1 -1
  124. package/src/compat/__tests__/fullscreen.test.ts +7 -7
  125. package/src/compat/__tests__/is_vtt_cue.test.ts +1 -1
  126. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
  127. package/src/compat/eme/custom_media_keys/index.ts +7 -3
  128. package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
  129. package/src/core/abr/buffer_based_chooser.ts +85 -20
  130. package/src/core/abr/network_analyzer.ts +1 -1
  131. package/src/core/abr/pending_requests_store.ts +3 -5
  132. package/src/core/abr/representation_estimator.ts +6 -3
  133. package/src/core/api/media_element_track_choice_manager.ts +22 -3
  134. package/src/core/api/public_api.ts +6 -6
  135. package/src/core/api/track_choice_manager.ts +10 -9
  136. package/src/core/eme/__tests__/__global__/utils.ts +5 -10
  137. package/src/core/eme/find_key_system.ts +14 -12
  138. package/src/core/eme/types.ts +2 -2
  139. package/src/core/fetchers/manifest/manifest_fetcher.ts +5 -5
  140. package/src/core/fetchers/segment/segment_fetcher.ts +6 -3
  141. package/src/core/fetchers/utils/try_urls_with_backoff.ts +1 -1
  142. package/src/core/init/initialize_directfile.ts +2 -2
  143. package/src/core/init/initialize_media_source.ts +2 -2
  144. package/src/core/init/manifest_update_scheduler.ts +7 -7
  145. package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
  146. package/src/core/init/stream_events_emitter/types.ts +2 -2
  147. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +3 -3
  148. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +32 -31
  149. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
  150. package/src/core/stream/representation/force_garbage_collection.ts +3 -5
  151. package/src/errors/request_error.ts +4 -1
  152. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +3 -6
  153. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +1 -1
  154. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
  155. package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
  156. package/src/manifest/adaptation.ts +6 -4
  157. package/src/manifest/manifest.ts +10 -10
  158. package/src/manifest/period.ts +3 -3
  159. package/src/manifest/representation.ts +2 -2
  160. package/src/manifest/representation_index/types.ts +18 -18
  161. package/src/manifest/types.ts +3 -3
  162. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
  163. package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
  164. package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
  165. package/src/parsers/manifest/dash/common/indexes/base.ts +6 -6
  166. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +4 -2
  167. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +2 -2
  168. package/src/parsers/manifest/dash/common/indexes/list.ts +14 -14
  169. package/src/parsers/manifest/dash/common/indexes/template.ts +17 -16
  170. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
  171. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +50 -22
  172. package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
  173. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
  174. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +58 -70
  175. package/src/parsers/manifest/dash/common/parse_mpd.ts +8 -8
  176. package/src/parsers/manifest/dash/common/parse_periods.ts +80 -79
  177. package/src/parsers/manifest/dash/common/parse_representation_index.ts +83 -75
  178. package/src/parsers/manifest/dash/common/parse_representations.ts +44 -63
  179. package/src/parsers/manifest/dash/node_parser_types.ts +30 -30
  180. package/src/parsers/manifest/dash/parsers_types.ts +3 -3
  181. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
  182. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +4 -4
  183. package/src/parsers/manifest/smooth/create_parser.ts +23 -21
  184. package/src/parsers/manifest/smooth/representation_index.ts +14 -14
  185. package/src/parsers/manifest/types.ts +28 -28
  186. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +31 -33
  187. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +15 -6
  188. package/src/parsers/manifest/utils/index_helpers.ts +2 -2
  189. package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
  190. package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
  191. package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
  192. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +2 -2
  193. package/src/transports/dash/image_pipelines.ts +1 -1
  194. package/src/transports/dash/init_segment_loader.ts +1 -1
  195. package/src/transports/dash/manifest_parser.ts +1 -1
  196. package/src/transports/dash/segment_loader.ts +7 -7
  197. package/src/transports/dash/segment_parser.ts +3 -1
  198. package/src/transports/dash/text_loader.ts +2 -2
  199. package/src/transports/dash/text_parser.ts +3 -1
  200. package/src/transports/local/segment_loader.ts +4 -4
  201. package/src/transports/metaplaylist/manifest_loader.ts +1 -1
  202. package/src/transports/metaplaylist/pipelines.ts +1 -1
  203. package/src/transports/smooth/pipelines.ts +7 -7
  204. package/src/transports/smooth/segment_loader.ts +8 -8
  205. package/src/transports/types.ts +37 -30
  206. package/src/transports/utils/call_custom_manifest_loader.ts +6 -6
  207. package/src/transports/utils/generate_manifest_loader.ts +1 -1
  208. package/src/utils/__tests__/flat_map.test.ts +12 -7
  209. package/src/utils/cancellable_sleep.ts +1 -1
  210. package/src/utils/cast_to_observable.ts +1 -2
  211. package/src/utils/request/fetch.ts +16 -13
  212. package/src/utils/request/xhr.ts +9 -7
  213. package/src/utils/rx-from_cancellable_promise.ts +1 -2
  214. package/tsconfig.json +1 -2
  215. package/tsconfig.modules.json +1 -2
  216. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
  217. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
  218. package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
@@ -14,13 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import { CustomLoaderError } from "../../errors";
19
18
  import {
20
19
  ILocalManifestInitSegmentLoader,
21
20
  ILocalManifestSegmentLoader,
22
21
  } from "../../parsers/manifest/local";
23
22
  import isNullOrUndefined from "../../utils/is_null_or_undefined";
23
+ import PPromise from "../../utils/promise";
24
24
  import {
25
25
  CancellationError,
26
26
  CancellationSignal,
@@ -39,7 +39,7 @@ import {
39
39
  function loadInitSegment(
40
40
  customSegmentLoader : ILocalManifestInitSegmentLoader,
41
41
  cancelSignal : CancellationSignal
42
- ) : PPromise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
42
+ ) : Promise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
43
43
  return new PPromise((res, rej) => {
44
44
  /** `true` when the custom segmentLoader should not be active anymore. */
45
45
  let hasFinished = false;
@@ -107,7 +107,7 @@ function loadSegment(
107
107
  segment : { time : number; duration : number; timestampOffset? : number },
108
108
  customSegmentLoader : ILocalManifestSegmentLoader,
109
109
  cancelSignal : CancellationSignal
110
- ) : PPromise< ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
110
+ ) : Promise< ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
111
111
  return new PPromise((res, rej) => {
112
112
  /** `true` when the custom segmentLoader should not be active anymore. */
113
113
  let hasFinished = false;
@@ -191,7 +191,7 @@ export default function segmentLoader(
191
191
  content : ISegmentContext,
192
192
  cancelSignal : CancellationSignal,
193
193
  _callbacks : ISegmentLoaderCallbacks<ArrayBuffer | null>
194
- ) : PPromise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
194
+ ) : Promise<ISegmentLoaderResultSegmentLoaded<ArrayBuffer | null>> {
195
195
  const { segment } = content;
196
196
  const privateInfos = segment.privateInfos;
197
197
  if (segment.isInit) {
@@ -43,7 +43,7 @@ function regularManifestLoader(
43
43
  * @returns {Function}
44
44
  */
45
45
  export default function generateManifestLoader(
46
- { customManifestLoader } : { customManifestLoader?: ICustomManifestLoader }
46
+ { customManifestLoader } : { customManifestLoader?: ICustomManifestLoader | undefined }
47
47
  ) : (
48
48
  url : string | undefined,
49
49
  cancelSignal : CancellationSignal
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import features from "../../features";
19
18
  import Manifest, {
20
19
  Adaptation,
@@ -29,6 +28,7 @@ import parseMetaPlaylist, {
29
28
  import { IParsedManifest } from "../../parsers/manifest/types";
30
29
  import isNullOrUndefined from "../../utils/is_null_or_undefined";
31
30
  import objectAssign from "../../utils/object_assign";
31
+ import PPromise from "../../utils/promise";
32
32
  import { CancellationSignal } from "../../utils/task_canceller";
33
33
  import {
34
34
  IChunkTimeInfo,
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import features from "../../features";
19
18
  import log from "../../log";
20
19
  import Manifest, {
@@ -25,6 +24,7 @@ import { getMDAT } from "../../parsers/containers/isobmff";
25
24
  import createSmoothManifestParser, {
26
25
  SmoothRepresentationIndex,
27
26
  } from "../../parsers/manifest/smooth";
27
+ import PPromise from "../../utils/promise";
28
28
  import request from "../../utils/request";
29
29
  import {
30
30
  strToUtf8,
@@ -178,8 +178,8 @@ export default function(options : ITransportOptions) : ITransportPipelines {
178
178
  content : ISegmentContext,
179
179
  cancelSignal : CancellationSignal,
180
180
  callbacks : ISegmentLoaderCallbacks<ILoadedAudioVideoSegmentFormat>
181
- ) : PPromise<ISegmentLoaderResultSegmentLoaded<ILoadedAudioVideoSegmentFormat> |
182
- ISegmentLoaderResultSegmentCreated<ILoadedAudioVideoSegmentFormat>>
181
+ ) : Promise<ISegmentLoaderResultSegmentLoaded<ILoadedAudioVideoSegmentFormat> |
182
+ ISegmentLoaderResultSegmentCreated<ILoadedAudioVideoSegmentFormat>>
183
183
  {
184
184
  return segmentLoader(url, content, cancelSignal, callbacks);
185
185
  },
@@ -255,8 +255,8 @@ export default function(options : ITransportOptions) : ITransportPipelines {
255
255
  content : ISegmentContext,
256
256
  cancelSignal : CancellationSignal,
257
257
  callbacks : ISegmentLoaderCallbacks<ILoadedTextSegmentFormat>
258
- ) : PPromise<ISegmentLoaderResultSegmentLoaded<ILoadedTextSegmentFormat> |
259
- ISegmentLoaderResultSegmentCreated<ILoadedTextSegmentFormat>> {
258
+ ) : Promise<ISegmentLoaderResultSegmentLoaded<ILoadedTextSegmentFormat> |
259
+ ISegmentLoaderResultSegmentCreated<ILoadedTextSegmentFormat>> {
260
260
  const { segment, representation } = content;
261
261
  if (segment.isInit || url === null) {
262
262
  return PPromise.resolve({ resultType: "segment-created",
@@ -436,8 +436,8 @@ export default function(options : ITransportOptions) : ITransportPipelines {
436
436
  content : ISegmentContext,
437
437
  cancelSignal : CancellationSignal,
438
438
  callbacks : ISegmentLoaderCallbacks<ILoadedImageSegmentFormat>
439
- ) : PPromise<ISegmentLoaderResultSegmentLoaded<ILoadedImageSegmentFormat> |
440
- ISegmentLoaderResultSegmentCreated<ILoadedImageSegmentFormat>> {
439
+ ) : Promise<ISegmentLoaderResultSegmentLoaded<ILoadedImageSegmentFormat> |
440
+ ISegmentLoaderResultSegmentCreated<ILoadedImageSegmentFormat>> {
441
441
  if (content.segment.isInit || url === null) {
442
442
  // image do not need an init segment. Passthrough directly to the parser
443
443
  return PPromise.resolve({ resultType: "segment-created" as const,
@@ -14,9 +14,9 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import { CustomLoaderError } from "../../errors";
19
18
  import assert from "../../utils/assert";
19
+ import PPromise from "../../utils/promise";
20
20
  import request from "../../utils/request";
21
21
  import {
22
22
  CancellationError,
@@ -51,7 +51,7 @@ function regularSegmentLoader(
51
51
  content : ISegmentContext,
52
52
  callbacks : ISegmentLoaderCallbacks<Uint8Array | ArrayBuffer | null>,
53
53
  cancelSignal : CancellationSignal,
54
- checkMediaSegmentIntegrity? : boolean
54
+ checkMediaSegmentIntegrity? : boolean | undefined
55
55
  ) : Promise<ISegmentLoaderResultSegmentLoaded<Uint8Array | ArrayBuffer | null>> {
56
56
  let headers;
57
57
  const range = content.segment.range;
@@ -85,8 +85,8 @@ const generateSegmentLoader = ({
85
85
  checkMediaSegmentIntegrity,
86
86
  customSegmentLoader,
87
87
  } : {
88
- checkMediaSegmentIntegrity? : boolean;
89
- customSegmentLoader? : ICustomSegmentLoader;
88
+ checkMediaSegmentIntegrity? : boolean | undefined;
89
+ customSegmentLoader? : ICustomSegmentLoader | undefined;
90
90
  }) => (
91
91
  url : string | null,
92
92
  content : ISegmentContext,
@@ -165,7 +165,7 @@ const generateSegmentLoader = ({
165
165
  checkMediaSegmentIntegrity);
166
166
  }
167
167
 
168
- return new Promise((res, rej) => {
168
+ return new PPromise((res, rej) => {
169
169
  /** `true` when the custom segmentLoader should not be active anymore. */
170
170
  let hasFinished = false;
171
171
 
@@ -176,8 +176,8 @@ const generateSegmentLoader = ({
176
176
  */
177
177
  const resolve = (_args : {
178
178
  data : ArrayBuffer|Uint8Array;
179
- size? : number;
180
- duration? : number;
179
+ size? : number | undefined;
180
+ duration? : number | undefined;
181
181
  }) => {
182
182
  if (hasFinished || cancelSignal.isCancelled) {
183
183
  return;
@@ -231,7 +231,7 @@ const generateSegmentLoader = ({
231
231
  const progress = (
232
232
  _args : { duration : number;
233
233
  size : number;
234
- totalSize? : number; }
234
+ totalSize? : number | undefined; }
235
235
  ) => {
236
236
  if (hasFinished || cancelSignal.isCancelled) {
237
237
  return;
@@ -373,7 +373,7 @@ export interface IManifestParserResult {
373
373
  * This property should only be set when a unique URL is sufficient to
374
374
  * retrieve the whole data.
375
375
  */
376
- url? : string;
376
+ url? : string | undefined;
377
377
  }
378
378
 
379
379
  /**
@@ -416,11 +416,11 @@ export interface ITextTrackSegmentData {
416
416
  * This is mostly needed for "sami" subtitles, to know which cues can / should
417
417
  * be parsed.
418
418
  */
419
- language? : string;
419
+ language? : string | undefined;
420
420
  /** start time from which the segment apply, in seconds. */
421
- start? : number;
421
+ start? : number | undefined;
422
422
  /** end time until which the segment apply, in seconds. */
423
- end? : number;
423
+ end? : number | undefined;
424
424
  }
425
425
 
426
426
  /** Format under which image data is decodable by the RxPlayer. */
@@ -487,21 +487,21 @@ interface IServerSyncInfos { serverTimestamp : number;
487
487
  clientTime : number; }
488
488
 
489
489
  export interface ITransportOptions {
490
- aggressiveMode? : boolean;
491
- checkMediaSegmentIntegrity? : boolean;
490
+ aggressiveMode? : boolean | undefined;
491
+ checkMediaSegmentIntegrity? : boolean | undefined;
492
492
  lowLatencyMode : boolean;
493
- manifestLoader?: ICustomManifestLoader;
494
- manifestUpdateUrl? : string;
495
- referenceDateTime? : number;
496
- representationFilter? : IRepresentationFilter;
497
- segmentLoader? : ICustomSegmentLoader;
498
- serverSyncInfos? : IServerSyncInfos;
493
+ manifestLoader?: ICustomManifestLoader | undefined;
494
+ manifestUpdateUrl? : string | undefined;
495
+ referenceDateTime? : number | undefined;
496
+ representationFilter? : IRepresentationFilter | undefined;
497
+ segmentLoader? : ICustomSegmentLoader | undefined;
498
+ serverSyncInfos? : IServerSyncInfos | undefined;
499
499
  /* eslint-disable import/no-deprecated */
500
- supplementaryImageTracks? : ISupplementaryImageTrack[];
501
- supplementaryTextTracks? : ISupplementaryTextTrack[];
500
+ supplementaryImageTracks? : ISupplementaryImageTrack[] | undefined;
501
+ supplementaryTextTracks? : ISupplementaryTextTrack[] | undefined;
502
502
  /* eslint-enable import/no-deprecated */
503
503
 
504
- __priv_patchLastSegmentInSidx? : boolean;
504
+ __priv_patchLastSegmentInSidx? : boolean | undefined;
505
505
  }
506
506
 
507
507
  export type ICustomSegmentLoader = (
@@ -521,7 +521,13 @@ export type ICustomSegmentLoader = (
521
521
  duration? : number | undefined; }) => void;
522
522
 
523
523
  reject : (err? : unknown) => void;
524
- fallback? : (() => void) | undefined; }
524
+ fallback : () => void;
525
+ progress : (
526
+ info : { duration : number;
527
+ size : number;
528
+ totalSize? : number | undefined; }
529
+ ) => void;
530
+ }
525
531
  ) =>
526
532
  // returns either the aborting callback or nothing
527
533
  (() => void)|void;
@@ -532,14 +538,15 @@ export type ICustomManifestLoader = (
532
538
 
533
539
  // second argument: callbacks
534
540
  callbacks : { resolve : (args : { data : ILoadedManifestFormat;
535
- sendingTime? : number;
536
- receivingTime? : number;
537
- size? : number;
538
- duration? : number; })
541
+ url? : string | undefined;
542
+ sendingTime? : number | undefined;
543
+ receivingTime? : number | undefined;
544
+ size? : number | undefined;
545
+ duration? : number | undefined; })
539
546
  => void;
540
547
 
541
548
  reject : (err? : Error) => void;
542
- fallback? : () => void; }
549
+ fallback : () => void; }
543
550
  ) =>
544
551
  // returns either the aborting callback or nothing
545
552
  (() => void)|void;
@@ -597,7 +604,7 @@ export interface ISegmentLoadingProgressInformation {
597
604
  /** Size of the data already downloaded, in bytes. */
598
605
  size : number;
599
606
  /** Size of whole data to download (data already-loaded included), in bytes. */
600
- totalSize? : number;
607
+ totalSize? : number | undefined;
601
608
  }
602
609
 
603
610
  /**
@@ -646,19 +653,19 @@ export interface IChunkCompleteInformation {
646
653
  * This property should only be set when a unique URL is sufficient to
647
654
  * retrieve the whole data.
648
655
  */
649
- url? : string;
656
+ url? : string | undefined;
650
657
  /**
651
658
  * Time at which the request began in terms of `performance.now`.
652
659
  * If fetching the corresponding data necessitated to perform multiple
653
660
  * requests, this time corresponds to the first request made.
654
661
  */
655
- sendingTime? : number;
662
+ sendingTime? : number | undefined;
656
663
  /**
657
664
  * Time at which the request ended in terms of `performance.now`.
658
665
  * If fetching the corresponding data necessitated to perform multiple
659
666
  * requests, this time corresponds to the last request to end.
660
667
  */
661
- receivedTime? : number;
668
+ receivedTime? : number | undefined;
662
669
  /** Size in bytes of the loaded data. `undefined` if we don't know. */
663
670
  size : number | undefined;
664
671
  }
@@ -702,7 +709,7 @@ export interface ISegmentParserParsedInitChunk<DataType> {
702
709
  * Timescale metadata found inside this initialization segment.
703
710
  * That timescale might be useful when parsing further merdia segments.
704
711
  */
705
- initTimescale? : number;
712
+ initTimescale? : number | undefined;
706
713
  /**
707
714
  * If set to `true`, some protection information has been found in this
708
715
  * initialization segment and lead the corresponding `Representation`
@@ -757,7 +764,7 @@ export interface ISegmentParserParsedMediaChunk<DataType> {
757
764
  * If set and not empty, then "events" have been encountered in this parsed
758
765
  * chunks.
759
766
  */
760
- inbandEvents? : IInbandEvent[];
767
+ inbandEvents? : IInbandEvent[] | undefined;
761
768
  /**
762
769
  * If set to `true`, then parsing this chunk revealed that the current
763
770
  * Manifest instance needs to be refreshed.
@@ -791,19 +798,19 @@ export interface IRequestedData<T> {
791
798
  * This property should only be set when a unique URL is sufficient to
792
799
  * retrieve the whole data.
793
800
  */
794
- url? : string;
801
+ url? : string | undefined;
795
802
  /**
796
803
  * Time at which the request began in terms of `performance.now`.
797
804
  * If fetching the corresponding data necessitated to perform multiple
798
805
  * requests, this time corresponds to the first request made.
799
806
  */
800
- sendingTime? : number;
807
+ sendingTime? : number | undefined;
801
808
  /**
802
809
  * Time at which the request ended in terms of `performance.now`.
803
810
  * If fetching the corresponding data necessitated to perform multiple
804
811
  * requests, this time corresponds to the last request to end.
805
812
  */
806
- receivedTime? : number;
813
+ receivedTime? : number | undefined;
807
814
  /** Size in bytes of the loaded data. `undefined` if we don't know. */
808
815
  size : number | undefined;
809
816
  }
@@ -14,8 +14,8 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import { CustomLoaderError } from "../../errors";
18
+ import PPromise from "../../utils/promise";
19
19
  import {
20
20
  CancellationError,
21
21
  CancellationSignal,
@@ -51,11 +51,11 @@ export default function callCustomManifestLoader(
51
51
  * @param {Object} args
52
52
  */
53
53
  const resolve = (_args : { data : ILoadedManifestFormat;
54
- size? : number;
55
- duration? : number;
56
- url? : string;
57
- receivingTime? : number;
58
- sendingTime? : number; }) =>
54
+ size? : number | undefined;
55
+ duration? : number | undefined;
56
+ url? : string | undefined;
57
+ receivingTime? : number | undefined;
58
+ sendingTime? : number | undefined; }) =>
59
59
  {
60
60
  if (hasFinished || cancelSignal.isCancelled) {
61
61
  return;
@@ -66,7 +66,7 @@ function generateRegularManifestLoader(
66
66
  * @returns {Function}
67
67
  */
68
68
  export default function generateManifestLoader(
69
- { customManifestLoader } : { customManifestLoader?: ICustomManifestLoader },
69
+ { customManifestLoader } : { customManifestLoader?: ICustomManifestLoader | undefined },
70
70
  preferredType: "arraybuffer" | "text" | "document"
71
71
  ) : (
72
72
  url : string | undefined,
@@ -19,12 +19,15 @@
19
19
 
20
20
  import flatMap from "../flat_map";
21
21
 
22
- const proto = Array.prototype as unknown as {
23
- flatMap?<U, This = undefined>(
22
+ interface IProtoWithFlatMap {
23
+ flatMap? : (<U, This = undefined>(
24
24
  callback: (this: This, value: unknown, index: number, array: unknown[]) => U | U[],
25
- thisArg?: This
26
- ): U[];
27
- };
25
+ thisArg?: This | undefined
26
+ ) => U[]) | undefined;
27
+ }
28
+
29
+
30
+ const proto = Array.prototype as unknown as IProtoWithFlatMap;
28
31
 
29
32
  /* eslint-disable @typescript-eslint/unbound-method */
30
33
  const initialFlatMap = proto.flatMap;
@@ -32,7 +35,7 @@ const initialFlatMap = proto.flatMap;
32
35
 
33
36
  describe("utils - starts-with", () => {
34
37
  beforeEach(() => {
35
- proto.flatMap = undefined;
38
+ delete proto.flatMap;
36
39
  });
37
40
 
38
41
  afterEach(() => {
@@ -49,7 +52,9 @@ describe("utils - starts-with", () => {
49
52
  if (typeof initialFlatMap === "function") {
50
53
  it("should call the original flatMap function if available", () => {
51
54
  proto.flatMap = initialFlatMap;
52
- const flatMapSpy = jest.spyOn(proto, "flatMap");
55
+ // TODO find what bother typescript here instead of adding "as any"
56
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
57
+ const flatMapSpy = jest.spyOn(proto as any, "flatMap");
53
58
  const func1 = (x : number) : number[] => [x, x + 1, x - 1];
54
59
  const func2 = (x : number) : string => String(x) + "a";
55
60
  expect(flatMap([1, 2, 3], func1))
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
17
+ import PPromise from "./promise";
18
18
  import {
19
19
  CancellationError,
20
20
  CancellationSignal,
@@ -14,13 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import {
19
18
  from as observableFrom,
20
19
  Observable,
21
20
  of as observableOf,
22
21
  } from "rxjs";
23
22
  import isNullOrUndefined from "./is_null_or_undefined";
23
+ import PPromise from "./promise";
24
24
 
25
25
  /**
26
26
  * Try to cast the given value into an observable.
@@ -30,7 +30,6 @@ import isNullOrUndefined from "./is_null_or_undefined";
30
30
  */
31
31
  function castToObservable<T>(value : Observable<T> |
32
32
  Promise<T> |
33
- PPromise<T> |
34
33
  Exclude<T, Observable<T>>) : Observable<T> {
35
34
  if (value instanceof Observable) {
36
35
  return value;
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import config from "../../config";
19
18
  import {
20
19
  NetworkErrorTypes,
@@ -61,14 +60,14 @@ export interface IFetchedDataObject {
61
60
  * Value of the "Content-Length" header, which should (yet also might not be)
62
61
  * the size of the complete data that will be fetched.
63
62
  */
64
- totalSize? : number;
63
+ totalSize : number | undefined;
65
64
  /**
66
65
  * Current available chunk, which might only be a sub-part of the whole
67
66
  * data.
68
67
  * To retrieve the whole data, all `chunk` received from `fetchRequest` can be
69
68
  * concatenated.
70
69
  */
71
- chunk: ArrayBuffer;
70
+ chunk : ArrayBuffer;
72
71
  }
73
72
 
74
73
  /** Options for the `fetchRequest` utils function. */
@@ -88,13 +87,13 @@ export interface IFetchOptions {
88
87
  */
89
88
  cancelSignal : CancellationSignal;
90
89
  /** Optional headers for the HTTP GET request perfomed by `fetchRequest`. */
91
- headers? : { [ header: string ] : string }|null;
90
+ headers? : { [ header: string ] : string } | undefined | null;
92
91
  /**
93
92
  * Optional timeout for the HTTP GET request perfomed by `fetchRequest`.
94
93
  * This timeout is just enabled until the HTTP response from the server, even
95
94
  * if not all data has been received yet.
96
95
  */
97
- timeout? : number;
96
+ timeout? : number | undefined;
98
97
  }
99
98
 
100
99
  const { DEFAULT_REQUEST_TIMEOUT } = config;
@@ -112,7 +111,7 @@ const _AbortController : IAbortControllerConstructor|null =
112
111
 
113
112
  export default function fetchRequest(
114
113
  options : IFetchOptions
115
- ) : PPromise<IFetchedStreamComplete> {
114
+ ) : Promise<IFetchedStreamComplete> {
116
115
  let headers : Headers | { [key : string ] : string } | undefined;
117
116
  if (!isNullOrUndefined(options.headers)) {
118
117
  if (isNullOrUndefined(_Headers)) {
@@ -161,12 +160,16 @@ export default function fetchRequest(
161
160
  abortFetch();
162
161
  });
163
162
 
164
- return fetch(options.url,
165
- { headers,
166
- method: "GET",
167
- signal: !isNullOrUndefined(abortController) ? abortController.signal :
168
- undefined }
169
- ).then((response : Response) : PPromise<IFetchedStreamComplete> => {
163
+ const fetchOpts : RequestInit = { method: "GET" };
164
+ if (headers !== undefined) {
165
+ fetchOpts.headers = headers;
166
+ }
167
+ fetchOpts.signal = !isNullOrUndefined(abortController) ? abortController.signal :
168
+ null;
169
+ return fetch(
170
+ options.url,
171
+ fetchOpts
172
+ ).then((response : Response) : Promise<IFetchedStreamComplete> => {
170
173
  if (!isNullOrUndefined(timeout)) {
171
174
  clearTimeout(timeout);
172
175
  }
@@ -192,7 +195,7 @@ export default function fetchRequest(
192
195
 
193
196
  return readBufferAndSendEvents();
194
197
 
195
- async function readBufferAndSendEvents() : PPromise<IFetchedStreamComplete> {
198
+ async function readBufferAndSendEvents() : Promise<IFetchedStreamComplete> {
196
199
  const data = await reader.read();
197
200
 
198
201
  if (!data.done && !isNullOrUndefined(data.value)) {
@@ -18,6 +18,7 @@ import config from "../../config";
18
18
  import { RequestError } from "../../errors";
19
19
  import isNonEmptyString from "../is_non_empty_string";
20
20
  import isNullOrUndefined from "../is_null_or_undefined";
21
+ import PPromise from "../promise";
21
22
  import {
22
23
  CancellationError,
23
24
  CancellationSignal,
@@ -138,7 +139,7 @@ export default function request<T>(
138
139
  options.timeout,
139
140
  };
140
141
 
141
- return new Promise((resolve, reject) => {
142
+ return new PPromise((resolve, reject) => {
142
143
  const { onProgress, cancelSignal } = options;
143
144
  const { url,
144
145
  headers,
@@ -279,25 +280,26 @@ export interface IRequestOptions<ResponseType> {
279
280
  url : string;
280
281
  /** Dictionary of headers you want to set. `null` or `undefined` for no header. */
281
282
  headers? : { [ header: string ] : string } |
282
- null;
283
+ null |
284
+ undefined;
283
285
  /** Wanted format for the response */
284
- responseType? : ResponseType;
286
+ responseType? : ResponseType | undefined;
285
287
  /**
286
288
  * Optional timeout, in milliseconds, after which we will cancel a request.
287
289
  * Set to DEFAULT_REQUEST_TIMEOUT by default.
288
290
  */
289
- timeout? : number;
291
+ timeout? : number | undefined;
290
292
  /**
291
293
  * "Cancelation token" used to be able to cancel the request.
292
294
  * When this token is "cancelled", the request will be aborted and the Promise
293
295
  * returned by `request` will be rejected.
294
296
  */
295
- cancelSignal? : CancellationSignal;
297
+ cancelSignal? : CancellationSignal | undefined;
296
298
  /**
297
299
  * When defined, this callback will be called on each XHR "progress" event
298
300
  * with data related to this request's progress.
299
301
  */
300
- onProgress? : (info : IProgressInfo) => void;
302
+ onProgress? : ((info : IProgressInfo) => void) | undefined;
301
303
  }
302
304
 
303
305
  /** Data emitted by `request`'s Promise when the request succeeded. */
@@ -330,5 +332,5 @@ export interface IProgressInfo {
330
332
  size : number;
331
333
  sendingTime : number;
332
334
  url : string;
333
- totalSize? : number;
335
+ totalSize? : number | undefined;
334
336
  }
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import PPromise from "pinkie";
18
17
  import { Observable } from "rxjs";
19
18
  import TaskCanceller from "./task_canceller";
20
19
 
@@ -41,7 +40,7 @@ import TaskCanceller from "./task_canceller";
41
40
  */
42
41
  export default function fromCancellablePromise<T>(
43
42
  canceller : TaskCanceller,
44
- fn : () => PPromise<T>
43
+ fn : () => Promise<T>
45
44
  ) : Observable<T> {
46
45
  return new Observable((obs) => {
47
46
  let isUnsubscribedFrom = false;
package/tsconfig.json CHANGED
@@ -4,8 +4,7 @@
4
4
  "allowJs": true,
5
5
  "target": "es2017",
6
6
  "lib": ["es2017", "dom"],
7
- // TODO
8
- // "exactOptionalPropertyTypes": true,
7
+ "exactOptionalPropertyTypes": true,
9
8
  "forceConsistentCasingInFileNames": true,
10
9
  "skipLibCheck": false,
11
10
  "noImplicitAny": true,
@@ -4,8 +4,7 @@
4
4
  "declaration": true,
5
5
  "target": "es5",
6
6
  "lib": ["es2017", "dom"],
7
- // TODO
8
- // "exactOptionalPropertyTypes": true,
7
+ "exactOptionalPropertyTypes": true,
9
8
  "forceConsistentCasingInFileNames": true,
10
9
  "skipLibCheck": false,
11
10
  "noImplicitAny": true,
@@ -1,29 +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
- export interface IBufferBasedChooserPlaybackObservation {
17
- bufferGap: number;
18
- currentBitrate?: number;
19
- currentScore?: number;
20
- speed: number;
21
- }
22
- /**
23
- * From the buffer gap, choose a representation.
24
- * @param {Object} playbackObservation
25
- * @param {Array.<Number>} bitrates
26
- * @param {Array.<Number>} bufferLevels
27
- * @returns {Object|undefined}
28
- */
29
- export default function getEstimateFromBufferLevels(playbackObservation: IBufferBasedChooserPlaybackObservation, bitrates: number[], bufferLevels: number[]): number | undefined;