@amazon/vinyl 1.2.0 → 2.0.0

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 (653) hide show
  1. package/dist/index.cjs +9225 -6633
  2. package/dist/index.cjs.map +4 -4
  3. package/dist/index.js +9080 -6435
  4. package/dist/index.js.map +4 -4
  5. package/dist/test/benchmark.es5.js +266 -253
  6. package/dist/test/benchmark.js +3256 -3190
  7. package/dist/test/benchmark.js.map +4 -4
  8. package/dist/test/integ.es5.js +1404 -1093
  9. package/dist/test/integ.js +45924 -33873
  10. package/dist/test/integ.js.map +4 -4
  11. package/dist/types/current/ad/AdBreakInfo.d.ts +160 -0
  12. package/dist/types/current/ad/AdBreakInfo.d.ts.map +1 -0
  13. package/dist/types/current/ad/AdController.d.ts +229 -0
  14. package/dist/types/current/ad/AdController.d.ts.map +1 -0
  15. package/dist/types/current/ad/AdController.js +19 -0
  16. package/dist/types/current/ad/AdControllerImpl.d.ts +146 -0
  17. package/dist/types/current/ad/AdControllerImpl.d.ts.map +1 -0
  18. package/dist/types/current/ad/AdControllerImpl.js +705 -0
  19. package/dist/types/current/ad/AdError.d.ts +6 -0
  20. package/dist/types/current/ad/AdError.d.ts.map +1 -0
  21. package/dist/types/current/ad/AdError.js +14 -0
  22. package/dist/types/current/ad/AdsProvider.d.ts +28 -0
  23. package/dist/types/current/ad/AdsProvider.d.ts.map +1 -0
  24. package/dist/types/current/ad/AdsProvider.js +5 -0
  25. package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  26. package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts.map +1 -0
  27. package/dist/types/current/ad/defaultAdLoadOptionsResolver.js +26 -0
  28. package/dist/types/current/ad/discoverHlsInterstitials.d.ts +22 -0
  29. package/dist/types/current/ad/discoverHlsInterstitials.d.ts.map +1 -0
  30. package/dist/types/current/ad/discoverHlsInterstitials.js +246 -0
  31. package/dist/types/current/drm/DrmController.d.ts +29 -4
  32. package/dist/types/current/drm/DrmController.d.ts.map +1 -1
  33. package/dist/types/current/drm/DrmControllerImpl.d.ts +13 -4
  34. package/dist/types/current/drm/DrmControllerImpl.d.ts.map +1 -1
  35. package/dist/types/current/drm/DrmControllerImpl.js +85 -14
  36. package/dist/types/current/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  37. package/dist/types/current/drm/util/unpackPlayReadyChallenge.d.ts.map +1 -1
  38. package/dist/types/current/drm/util/unpackPlayReadyChallenge.js +5 -0
  39. package/dist/types/current/index.d.ts +151 -126
  40. package/dist/types/current/index.d.ts.map +1 -1
  41. package/dist/types/current/index.js +151 -126
  42. package/dist/types/current/playback/PlaybackControllerImpl.d.ts +1 -0
  43. package/dist/types/current/playback/PlaybackControllerImpl.d.ts.map +1 -1
  44. package/dist/types/current/playback/PlaybackControllerImpl.js +44 -5
  45. package/dist/types/current/playback/PlaybackSource.d.ts +1 -1
  46. package/dist/types/current/playback/ReadonlyPlaybackController.d.ts +6 -1
  47. package/dist/types/current/playback/ReadonlyPlaybackController.d.ts.map +1 -1
  48. package/dist/types/current/playback/ReadonlyPlaybackController.js +1 -0
  49. package/dist/types/current/streaming/ContentStream.d.ts +8 -1
  50. package/dist/types/current/streaming/ContentStream.d.ts.map +1 -1
  51. package/dist/types/current/streaming/ContentStream.js +19 -2
  52. package/dist/types/current/streaming/LoadMetric.d.ts +58 -0
  53. package/dist/types/current/streaming/LoadMetric.d.ts.map +1 -0
  54. package/dist/types/current/streaming/LoadMetric.js +5 -0
  55. package/dist/types/current/streaming/ManifestController.d.ts +16 -1
  56. package/dist/types/current/streaming/ManifestController.d.ts.map +1 -1
  57. package/dist/types/current/streaming/ManifestControllerImpl.d.ts +43 -0
  58. package/dist/types/current/streaming/ManifestControllerImpl.d.ts.map +1 -0
  59. package/dist/types/current/streaming/ManifestControllerImpl.js +104 -0
  60. package/dist/types/current/streaming/MediaQualityMetadata.d.ts +16 -0
  61. package/dist/types/current/streaming/MediaQualityMetadata.d.ts.map +1 -1
  62. package/dist/types/current/streaming/MediaQualityMetadata.js +6 -0
  63. package/dist/types/current/streaming/MediaTimeline.d.ts +6 -0
  64. package/dist/types/current/streaming/MediaTimeline.d.ts.map +1 -1
  65. package/dist/types/current/streaming/SegmentController.d.ts +5 -0
  66. package/dist/types/current/streaming/SegmentController.d.ts.map +1 -1
  67. package/dist/types/current/streaming/SegmentControllerImpl.d.ts +12 -0
  68. package/dist/types/current/streaming/SegmentControllerImpl.d.ts.map +1 -1
  69. package/dist/types/current/streaming/SegmentControllerImpl.js +67 -10
  70. package/dist/types/current/streaming/StreamingEventMap.d.ts +38 -1
  71. package/dist/types/current/streaming/StreamingEventMap.d.ts.map +1 -1
  72. package/dist/types/current/streaming/StreamingEventMap.js +4 -0
  73. package/dist/types/current/streaming/abr/QualitySelectorImpl.d.ts +28 -0
  74. package/dist/types/current/streaming/abr/QualitySelectorImpl.d.ts.map +1 -1
  75. package/dist/types/current/streaming/abr/QualitySelectorImpl.js +39 -4
  76. package/dist/types/current/streaming/buffering/BufferingController.d.ts +37 -0
  77. package/dist/types/current/streaming/buffering/BufferingController.d.ts.map +1 -1
  78. package/dist/types/current/streaming/buffering/BufferingController.js +79 -3
  79. package/dist/types/current/streaming/buffering/MediaSourceController.d.ts +16 -11
  80. package/dist/types/current/streaming/buffering/MediaSourceController.d.ts.map +1 -1
  81. package/dist/types/current/streaming/buffering/MediaSourceController.js +76 -51
  82. package/dist/types/current/streaming/buffering/SourceBufferController.d.ts.map +1 -1
  83. package/dist/types/current/streaming/buffering/SourceBufferController.js +5 -2
  84. package/dist/types/current/streaming/buffering/codecDenylist.d.ts +23 -0
  85. package/dist/types/current/streaming/buffering/codecDenylist.d.ts.map +1 -0
  86. package/dist/types/current/streaming/buffering/codecDenylist.js +62 -0
  87. package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts +30 -0
  88. package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts.map +1 -0
  89. package/dist/types/current/streaming/createAllowedContentTypesValue.js +43 -0
  90. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
  91. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts.map +1 -1
  92. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.js +32 -1
  93. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  94. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts.map +1 -0
  95. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.js +75 -0
  96. package/dist/types/current/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
  97. package/dist/types/current/streaming/mediaTimelineLanguageFilter.d.ts.map +1 -1
  98. package/dist/types/current/streaming/mediaTimelineLanguageFilter.js +61 -16
  99. package/dist/types/current/text/SidecarTextTrackController.d.ts +91 -0
  100. package/dist/types/current/text/SidecarTextTrackController.d.ts.map +1 -0
  101. package/dist/types/current/text/SidecarTextTrackController.js +237 -0
  102. package/dist/types/current/text/SidecarTextTrackLoader.d.ts +60 -0
  103. package/dist/types/current/text/SidecarTextTrackLoader.d.ts.map +1 -0
  104. package/dist/types/current/text/SidecarTextTrackLoader.js +144 -0
  105. package/dist/types/current/text/TextTrack.d.ts +125 -0
  106. package/dist/types/current/text/TextTrack.d.ts.map +1 -0
  107. package/dist/types/current/text/TextTrack.js +9 -0
  108. package/dist/types/current/text/VttCueStyle.d.ts +41 -0
  109. package/dist/types/current/text/VttCueStyle.d.ts.map +1 -0
  110. package/dist/types/current/text/VttCueStyle.js +45 -0
  111. package/dist/types/current/text/discoverDashTextTracks.d.ts +24 -0
  112. package/dist/types/current/text/discoverDashTextTracks.d.ts.map +1 -0
  113. package/dist/types/current/text/discoverDashTextTracks.js +109 -0
  114. package/dist/types/current/text/discoverHlsTextTracks.d.ts +19 -0
  115. package/dist/types/current/text/discoverHlsTextTracks.d.ts.map +1 -0
  116. package/dist/types/current/text/discoverHlsTextTracks.js +49 -0
  117. package/dist/types/current/text/parseWebVtt.d.ts +46 -0
  118. package/dist/types/current/text/parseWebVtt.d.ts.map +1 -0
  119. package/dist/types/current/text/parseWebVtt.js +120 -0
  120. package/dist/types/current/text/pickPreferredTextTrack.d.ts +14 -0
  121. package/dist/types/current/text/pickPreferredTextTrack.d.ts.map +1 -0
  122. package/dist/types/current/text/pickPreferredTextTrack.js +68 -0
  123. package/dist/types/current/track/SeekRange.d.ts +9 -0
  124. package/dist/types/current/track/SeekRange.d.ts.map +1 -0
  125. package/dist/types/current/track/SeekRange.js +5 -0
  126. package/dist/types/current/track/Track.d.ts +50 -7
  127. package/dist/types/current/track/Track.d.ts.map +1 -1
  128. package/dist/types/current/track/TrackBase.d.ts +30 -29
  129. package/dist/types/current/track/TrackBase.d.ts.map +1 -1
  130. package/dist/types/current/track/TrackBase.js +68 -16
  131. package/dist/types/current/track/TrackController.d.ts +100 -36
  132. package/dist/types/current/track/TrackController.d.ts.map +1 -1
  133. package/dist/types/current/track/TrackController.js +368 -115
  134. package/dist/types/current/track/TrackFactory.d.ts +23 -3
  135. package/dist/types/current/track/TrackFactory.d.ts.map +1 -1
  136. package/dist/types/current/track/TrackFactory.js +9 -3
  137. package/dist/types/current/track/dash/DashManifestController.d.ts +1 -40
  138. package/dist/types/current/track/dash/DashManifestController.d.ts.map +1 -1
  139. package/dist/types/current/track/dash/DashManifestController.js +1 -79
  140. package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.d.ts.map +1 -1
  141. package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.js +13 -0
  142. package/dist/types/current/track/dash/DashTrack.d.ts +4 -5
  143. package/dist/types/current/track/dash/DashTrack.d.ts.map +1 -1
  144. package/dist/types/current/track/dash/DashTrack.js +3 -5
  145. package/dist/types/current/track/dash/buildDashMediaTimeline.d.ts.map +1 -1
  146. package/dist/types/current/track/dash/buildDashMediaTimeline.js +3 -2
  147. package/dist/types/current/track/dash/createDashContentTypesValue.js +2 -2
  148. package/dist/types/current/track/dash/createDashFactories.d.ts +39 -12
  149. package/dist/types/current/track/dash/createDashFactories.d.ts.map +1 -1
  150. package/dist/types/current/track/dash/createDashFactories.js +33 -5
  151. package/dist/types/current/track/dash/createSegmentControllerFactory.d.ts +0 -5
  152. package/dist/types/current/track/dash/createSegmentControllerFactory.d.ts.map +1 -1
  153. package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.d.ts.map +1 -1
  154. package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.js +2 -1
  155. package/dist/types/current/track/dash/util/mpd.d.ts +10 -0
  156. package/dist/types/current/track/dash/util/mpd.d.ts.map +1 -1
  157. package/dist/types/current/track/dash/util/mpd.js +16 -0
  158. package/dist/types/current/track/hls/HlsManifestController.d.ts +1 -25
  159. package/dist/types/current/track/hls/HlsManifestController.d.ts.map +1 -1
  160. package/dist/types/current/track/hls/HlsManifestController.js +1 -68
  161. package/dist/types/{ts3.7/track/hls/HlsManifestProvider.d.ts → current/track/hls/HlsManifestData.d.ts} +4 -6
  162. package/dist/types/current/track/hls/HlsManifestData.d.ts.map +1 -0
  163. package/dist/types/current/track/hls/HlsManifestData.js +5 -0
  164. package/dist/types/current/track/hls/HlsMediaQualityMetadataResolver.js +9 -6
  165. package/dist/types/current/track/hls/HlsTrack.d.ts +5 -6
  166. package/dist/types/current/track/hls/HlsTrack.d.ts.map +1 -1
  167. package/dist/types/current/track/hls/HlsTrack.js +3 -5
  168. package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts +8 -1
  169. package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts.map +1 -1
  170. package/dist/types/current/track/hls/buildHlsMediaTimeline.js +134 -67
  171. package/dist/types/current/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  172. package/dist/types/current/track/hls/createDefaultHlsManifestTransformer.d.ts.map +1 -1
  173. package/dist/types/current/track/hls/createHlsContentTypesValue.d.ts +1 -1
  174. package/dist/types/current/track/hls/createHlsContentTypesValue.d.ts.map +1 -1
  175. package/dist/types/current/track/hls/createHlsFactories.d.ts +40 -13
  176. package/dist/types/current/track/hls/createHlsFactories.d.ts.map +1 -1
  177. package/dist/types/current/track/hls/createHlsFactories.js +35 -6
  178. package/dist/types/current/track/hls/createHlsManifestProvider.d.ts +6 -0
  179. package/dist/types/current/track/hls/createHlsManifestProvider.d.ts.map +1 -0
  180. package/dist/types/current/track/hls/createHlsManifestProvider.js +9 -0
  181. package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  182. package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts.map +1 -1
  183. package/dist/types/current/track/hls/createUrlHlsManifestProvider.js +22 -3
  184. package/dist/types/current/track/hls/index.d.ts +1 -1
  185. package/dist/types/current/track/hls/index.d.ts.map +1 -1
  186. package/dist/types/current/track/hls/index.js +1 -1
  187. package/dist/types/current/track/inferLoadOptionsFromUri.d.ts +15 -0
  188. package/dist/types/current/track/inferLoadOptionsFromUri.d.ts.map +1 -0
  189. package/dist/types/current/track/inferLoadOptionsFromUri.js +55 -0
  190. package/dist/types/current/track/mse/MseTrack.d.ts +66 -8
  191. package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
  192. package/dist/types/current/track/mse/MseTrack.js +216 -52
  193. package/dist/types/current/track/source/SourceObjectTrack.d.ts +2 -2
  194. package/dist/types/current/track/source/SourceObjectTrack.d.ts.map +1 -1
  195. package/dist/types/current/track/source/SourceTrack.d.ts +2 -2
  196. package/dist/types/current/track/source/SourceTrack.d.ts.map +1 -1
  197. package/dist/types/current/track/source/SourceTrack.js +1 -2
  198. package/dist/types/current/track/source/SourceTrackBase.d.ts +7 -5
  199. package/dist/types/current/track/source/SourceTrackBase.d.ts.map +1 -1
  200. package/dist/types/current/track/source/SourceTrackBase.js +26 -9
  201. package/dist/types/current/tsconfig.tsbuildinfo +1 -1
  202. package/dist/types/current/util/media/codecOverrides.d.ts +33 -0
  203. package/dist/types/current/util/media/codecOverrides.d.ts.map +1 -0
  204. package/dist/types/current/util/media/codecOverrides.js +37 -0
  205. package/dist/types/current/util/media/codecSupport.d.ts +6 -0
  206. package/dist/types/current/util/media/codecSupport.d.ts.map +1 -0
  207. package/dist/types/current/util/media/codecSupport.js +17 -0
  208. package/dist/types/current/util/media/mediaSource.d.ts +5 -0
  209. package/dist/types/current/util/media/mediaSource.d.ts.map +1 -1
  210. package/dist/types/current/util/media/mediaSource.js +6 -1
  211. package/dist/types/current/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  212. package/dist/types/current/vinyl/ReadonlyPlaybackStreamingState.d.ts.map +1 -1
  213. package/dist/types/current/vinyl/VinylDeps.d.ts +5 -0
  214. package/dist/types/current/vinyl/VinylDeps.d.ts.map +1 -1
  215. package/dist/types/current/vinyl/VinylOptions.d.ts +68 -4
  216. package/dist/types/current/vinyl/VinylOptions.d.ts.map +1 -1
  217. package/dist/types/current/vinyl/VinylOptions.js +17 -2
  218. package/dist/types/current/vinyl/VinylPlayer.d.ts +63 -4
  219. package/dist/types/current/vinyl/VinylPlayer.d.ts.map +1 -1
  220. package/dist/types/current/vinyl/VinylPlayer.js +216 -36
  221. package/dist/types/current/vinyl/createVinylFactories.d.ts +55 -12
  222. package/dist/types/current/vinyl/createVinylFactories.d.ts.map +1 -1
  223. package/dist/types/current/vinyl/createVinylFactories.js +4 -0
  224. package/dist/types/ts3.7/ad/AdBreakInfo.d.ts +160 -0
  225. package/dist/types/ts3.7/ad/AdController.d.ts +243 -0
  226. package/dist/types/ts3.7/ad/AdControllerImpl.d.ts +146 -0
  227. package/dist/types/ts3.7/ad/AdError.d.ts +6 -0
  228. package/dist/types/ts3.7/ad/AdsProvider.d.ts +28 -0
  229. package/dist/types/ts3.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  230. package/dist/types/ts3.7/ad/discoverHlsInterstitials.d.ts +22 -0
  231. package/dist/types/ts3.7/drm/DrmController.d.ts +29 -4
  232. package/dist/types/ts3.7/drm/DrmControllerImpl.d.ts +13 -4
  233. package/dist/types/ts3.7/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  234. package/dist/types/ts3.7/index.d.ts +151 -126
  235. package/dist/types/ts3.7/playback/PlaybackControllerImpl.d.ts +1 -0
  236. package/dist/types/ts3.7/playback/PlaybackSource.d.ts +1 -1
  237. package/dist/types/ts3.7/playback/ReadonlyPlaybackController.d.ts +6 -0
  238. package/dist/types/ts3.7/streaming/ContentStream.d.ts +8 -1
  239. package/dist/types/ts3.7/streaming/LoadMetric.d.ts +58 -0
  240. package/dist/types/ts3.7/streaming/ManifestController.d.ts +16 -1
  241. package/dist/types/ts3.7/streaming/ManifestControllerImpl.d.ts +40 -0
  242. package/dist/types/ts3.7/streaming/MediaQualityMetadata.d.ts +19 -0
  243. package/dist/types/ts3.7/streaming/MediaTimeline.d.ts +6 -0
  244. package/dist/types/ts3.7/streaming/SegmentController.d.ts +5 -0
  245. package/dist/types/ts3.7/streaming/SegmentControllerImpl.d.ts +12 -0
  246. package/dist/types/ts3.7/streaming/StreamingEventMap.d.ts +42 -1
  247. package/dist/types/ts3.7/streaming/abr/QualitySelectorImpl.d.ts +28 -0
  248. package/dist/types/ts3.7/streaming/buffering/BufferingController.d.ts +37 -0
  249. package/dist/types/ts3.7/streaming/buffering/MediaSourceController.d.ts +16 -11
  250. package/dist/types/ts3.7/streaming/buffering/codecDenylist.d.ts +23 -0
  251. package/dist/types/ts3.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
  252. package/dist/types/ts3.7/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
  253. package/dist/types/ts3.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  254. package/dist/types/ts3.7/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
  255. package/dist/types/ts3.7/text/SidecarTextTrackController.d.ts +91 -0
  256. package/dist/types/ts3.7/text/SidecarTextTrackLoader.d.ts +60 -0
  257. package/dist/types/ts3.7/text/TextTrack.d.ts +129 -0
  258. package/dist/types/ts3.7/text/VttCueStyle.d.ts +41 -0
  259. package/dist/types/ts3.7/text/discoverDashTextTracks.d.ts +24 -0
  260. package/dist/types/ts3.7/text/discoverHlsTextTracks.d.ts +19 -0
  261. package/dist/types/ts3.7/text/parseWebVtt.d.ts +46 -0
  262. package/dist/types/ts3.7/text/pickPreferredTextTrack.d.ts +14 -0
  263. package/dist/types/ts3.7/track/SeekRange.d.ts +9 -0
  264. package/dist/types/ts3.7/track/Track.d.ts +50 -7
  265. package/dist/types/ts3.7/track/TrackBase.d.ts +21 -29
  266. package/dist/types/ts3.7/track/TrackController.d.ts +102 -37
  267. package/dist/types/ts3.7/track/TrackFactory.d.ts +22 -2
  268. package/dist/types/ts3.7/track/dash/DashManifestController.d.ts +1 -36
  269. package/dist/types/ts3.7/track/dash/DashTrack.d.ts +4 -5
  270. package/dist/types/ts3.7/track/dash/createDashFactories.d.ts +39 -12
  271. package/dist/types/ts3.7/track/dash/createSegmentControllerFactory.d.ts +0 -5
  272. package/dist/types/ts3.7/track/dash/util/mpd.d.ts +10 -0
  273. package/dist/types/ts3.7/track/hls/HlsManifestController.d.ts +1 -22
  274. package/dist/types/{current/track/hls/HlsManifestProvider.d.ts → ts3.7/track/hls/HlsManifestData.d.ts} +4 -6
  275. package/dist/types/ts3.7/track/hls/HlsTrack.d.ts +5 -6
  276. package/dist/types/ts3.7/track/hls/buildHlsMediaTimeline.d.ts +8 -1
  277. package/dist/types/ts3.7/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  278. package/dist/types/ts3.7/track/hls/createHlsContentTypesValue.d.ts +1 -1
  279. package/dist/types/ts3.7/track/hls/createHlsFactories.d.ts +40 -13
  280. package/dist/types/ts3.7/track/hls/createHlsManifestProvider.d.ts +6 -0
  281. package/dist/types/ts3.7/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  282. package/dist/types/ts3.7/track/hls/index.d.ts +1 -1
  283. package/dist/types/ts3.7/track/inferLoadOptionsFromUri.d.ts +15 -0
  284. package/dist/types/ts3.7/track/mse/MseTrack.d.ts +65 -7
  285. package/dist/types/ts3.7/track/source/SourceObjectTrack.d.ts +2 -2
  286. package/dist/types/ts3.7/track/source/SourceTrack.d.ts +2 -2
  287. package/dist/types/ts3.7/track/source/SourceTrackBase.d.ts +7 -5
  288. package/dist/types/ts3.7/util/media/codecOverrides.d.ts +33 -0
  289. package/dist/types/ts3.7/util/media/codecSupport.d.ts +6 -0
  290. package/dist/types/ts3.7/util/media/mediaSource.d.ts +5 -0
  291. package/dist/types/ts3.7/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  292. package/dist/types/ts3.7/vinyl/VinylDeps.d.ts +5 -0
  293. package/dist/types/ts3.7/vinyl/VinylOptions.d.ts +68 -4
  294. package/dist/types/ts3.7/vinyl/VinylPlayer.d.ts +33 -4
  295. package/dist/types/ts3.7/vinyl/createVinylFactories.d.ts +55 -12
  296. package/dist/types/ts4.1/ad/AdBreakInfo.d.ts +160 -0
  297. package/dist/types/ts4.1/ad/AdController.d.ts +243 -0
  298. package/dist/types/ts4.1/ad/AdControllerImpl.d.ts +146 -0
  299. package/dist/types/ts4.1/ad/AdError.d.ts +6 -0
  300. package/dist/types/ts4.1/ad/AdsProvider.d.ts +28 -0
  301. package/dist/types/ts4.1/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  302. package/dist/types/ts4.1/ad/discoverHlsInterstitials.d.ts +22 -0
  303. package/dist/types/ts4.1/drm/DrmController.d.ts +29 -4
  304. package/dist/types/ts4.1/drm/DrmControllerImpl.d.ts +13 -4
  305. package/dist/types/ts4.1/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  306. package/dist/types/ts4.1/index.d.ts +151 -126
  307. package/dist/types/ts4.1/playback/PlaybackControllerImpl.d.ts +1 -0
  308. package/dist/types/ts4.1/playback/PlaybackSource.d.ts +1 -1
  309. package/dist/types/ts4.1/playback/ReadonlyPlaybackController.d.ts +6 -0
  310. package/dist/types/ts4.1/streaming/ContentStream.d.ts +8 -1
  311. package/dist/types/ts4.1/streaming/LoadMetric.d.ts +58 -0
  312. package/dist/types/ts4.1/streaming/ManifestController.d.ts +16 -1
  313. package/dist/types/ts4.1/streaming/ManifestControllerImpl.d.ts +40 -0
  314. package/dist/types/ts4.1/streaming/MediaQualityMetadata.d.ts +19 -0
  315. package/dist/types/ts4.1/streaming/MediaTimeline.d.ts +6 -0
  316. package/dist/types/ts4.1/streaming/SegmentController.d.ts +5 -0
  317. package/dist/types/ts4.1/streaming/SegmentControllerImpl.d.ts +12 -0
  318. package/dist/types/ts4.1/streaming/StreamingEventMap.d.ts +42 -1
  319. package/dist/types/ts4.1/streaming/abr/QualitySelectorImpl.d.ts +28 -0
  320. package/dist/types/ts4.1/streaming/buffering/BufferingController.d.ts +37 -0
  321. package/dist/types/ts4.1/streaming/buffering/MediaSourceController.d.ts +16 -11
  322. package/dist/types/ts4.1/streaming/buffering/codecDenylist.d.ts +23 -0
  323. package/dist/types/ts4.1/streaming/createAllowedContentTypesValue.d.ts +30 -0
  324. package/dist/types/ts4.1/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
  325. package/dist/types/ts4.1/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  326. package/dist/types/ts4.1/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
  327. package/dist/types/ts4.1/text/SidecarTextTrackController.d.ts +92 -0
  328. package/dist/types/ts4.1/text/SidecarTextTrackLoader.d.ts +60 -0
  329. package/dist/types/ts4.1/text/TextTrack.d.ts +129 -0
  330. package/dist/types/ts4.1/text/VttCueStyle.d.ts +41 -0
  331. package/dist/types/ts4.1/text/discoverDashTextTracks.d.ts +24 -0
  332. package/dist/types/ts4.1/text/discoverHlsTextTracks.d.ts +19 -0
  333. package/dist/types/ts4.1/text/parseWebVtt.d.ts +46 -0
  334. package/dist/types/ts4.1/text/pickPreferredTextTrack.d.ts +14 -0
  335. package/dist/types/ts4.1/track/SeekRange.d.ts +9 -0
  336. package/dist/types/ts4.1/track/Track.d.ts +50 -7
  337. package/dist/types/ts4.1/track/TrackBase.d.ts +21 -29
  338. package/dist/types/ts4.1/track/TrackController.d.ts +102 -37
  339. package/dist/types/ts4.1/track/TrackFactory.d.ts +22 -2
  340. package/dist/types/ts4.1/track/dash/DashManifestController.d.ts +1 -36
  341. package/dist/types/ts4.1/track/dash/DashTrack.d.ts +4 -5
  342. package/dist/types/ts4.1/track/dash/createDashFactories.d.ts +39 -12
  343. package/dist/types/ts4.1/track/dash/createSegmentControllerFactory.d.ts +0 -5
  344. package/dist/types/ts4.1/track/dash/util/mpd.d.ts +10 -0
  345. package/dist/types/ts4.1/track/hls/HlsManifestController.d.ts +1 -22
  346. package/dist/types/ts4.1/track/hls/{HlsManifestProvider.d.ts → HlsManifestData.d.ts} +4 -6
  347. package/dist/types/ts4.1/track/hls/HlsTrack.d.ts +5 -6
  348. package/dist/types/ts4.1/track/hls/buildHlsMediaTimeline.d.ts +8 -1
  349. package/dist/types/ts4.1/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  350. package/dist/types/ts4.1/track/hls/createHlsContentTypesValue.d.ts +1 -1
  351. package/dist/types/ts4.1/track/hls/createHlsFactories.d.ts +41 -13
  352. package/dist/types/ts4.1/track/hls/createHlsManifestProvider.d.ts +6 -0
  353. package/dist/types/ts4.1/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  354. package/dist/types/ts4.1/track/hls/index.d.ts +1 -1
  355. package/dist/types/ts4.1/track/inferLoadOptionsFromUri.d.ts +15 -0
  356. package/dist/types/ts4.1/track/mse/MseTrack.d.ts +65 -7
  357. package/dist/types/ts4.1/track/source/SourceObjectTrack.d.ts +2 -2
  358. package/dist/types/ts4.1/track/source/SourceTrack.d.ts +2 -2
  359. package/dist/types/ts4.1/track/source/SourceTrackBase.d.ts +7 -5
  360. package/dist/types/ts4.1/util/media/codecOverrides.d.ts +33 -0
  361. package/dist/types/ts4.1/util/media/codecSupport.d.ts +6 -0
  362. package/dist/types/ts4.1/util/media/mediaSource.d.ts +5 -0
  363. package/dist/types/ts4.1/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  364. package/dist/types/ts4.1/vinyl/VinylDeps.d.ts +5 -0
  365. package/dist/types/ts4.1/vinyl/VinylOptions.d.ts +68 -4
  366. package/dist/types/ts4.1/vinyl/VinylPlayer.d.ts +33 -4
  367. package/dist/types/ts4.1/vinyl/createVinylFactories.d.ts +56 -12
  368. package/dist/types/ts4.7/ad/AdBreakInfo.d.ts +160 -0
  369. package/dist/types/ts4.7/ad/AdController.d.ts +243 -0
  370. package/dist/types/ts4.7/ad/AdControllerImpl.d.ts +146 -0
  371. package/dist/types/ts4.7/ad/AdError.d.ts +6 -0
  372. package/dist/types/ts4.7/ad/AdsProvider.d.ts +28 -0
  373. package/dist/types/ts4.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  374. package/dist/types/ts4.7/ad/discoverHlsInterstitials.d.ts +22 -0
  375. package/dist/types/ts4.7/drm/DrmController.d.ts +29 -4
  376. package/dist/types/ts4.7/drm/DrmControllerImpl.d.ts +13 -4
  377. package/dist/types/ts4.7/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  378. package/dist/types/ts4.7/index.d.ts +151 -126
  379. package/dist/types/ts4.7/playback/PlaybackControllerImpl.d.ts +1 -0
  380. package/dist/types/ts4.7/playback/PlaybackSource.d.ts +1 -1
  381. package/dist/types/ts4.7/playback/ReadonlyPlaybackController.d.ts +6 -0
  382. package/dist/types/ts4.7/streaming/ContentStream.d.ts +8 -1
  383. package/dist/types/ts4.7/streaming/LoadMetric.d.ts +58 -0
  384. package/dist/types/ts4.7/streaming/ManifestController.d.ts +16 -1
  385. package/dist/types/ts4.7/streaming/ManifestControllerImpl.d.ts +43 -0
  386. package/dist/types/ts4.7/streaming/MediaQualityMetadata.d.ts +19 -0
  387. package/dist/types/ts4.7/streaming/MediaTimeline.d.ts +6 -0
  388. package/dist/types/ts4.7/streaming/SegmentController.d.ts +5 -0
  389. package/dist/types/ts4.7/streaming/SegmentControllerImpl.d.ts +12 -0
  390. package/dist/types/ts4.7/streaming/StreamingEventMap.d.ts +42 -1
  391. package/dist/types/ts4.7/streaming/abr/QualitySelectorImpl.d.ts +28 -0
  392. package/dist/types/ts4.7/streaming/buffering/BufferingController.d.ts +37 -0
  393. package/dist/types/ts4.7/streaming/buffering/MediaSourceController.d.ts +16 -11
  394. package/dist/types/ts4.7/streaming/buffering/codecDenylist.d.ts +23 -0
  395. package/dist/types/ts4.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
  396. package/dist/types/ts4.7/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
  397. package/dist/types/ts4.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  398. package/dist/types/ts4.7/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
  399. package/dist/types/ts4.7/text/SidecarTextTrackController.d.ts +91 -0
  400. package/dist/types/ts4.7/text/SidecarTextTrackLoader.d.ts +60 -0
  401. package/dist/types/ts4.7/text/TextTrack.d.ts +129 -0
  402. package/dist/types/ts4.7/text/VttCueStyle.d.ts +41 -0
  403. package/dist/types/ts4.7/text/discoverDashTextTracks.d.ts +24 -0
  404. package/dist/types/ts4.7/text/discoverHlsTextTracks.d.ts +19 -0
  405. package/dist/types/ts4.7/text/parseWebVtt.d.ts +46 -0
  406. package/dist/types/ts4.7/text/pickPreferredTextTrack.d.ts +14 -0
  407. package/dist/types/ts4.7/track/SeekRange.d.ts +9 -0
  408. package/dist/types/ts4.7/track/Track.d.ts +50 -7
  409. package/dist/types/ts4.7/track/TrackBase.d.ts +30 -29
  410. package/dist/types/ts4.7/track/TrackController.d.ts +102 -37
  411. package/dist/types/ts4.7/track/TrackFactory.d.ts +23 -3
  412. package/dist/types/ts4.7/track/dash/DashManifestController.d.ts +1 -40
  413. package/dist/types/ts4.7/track/dash/DashTrack.d.ts +4 -5
  414. package/dist/types/ts4.7/track/dash/createDashFactories.d.ts +39 -12
  415. package/dist/types/ts4.7/track/dash/createSegmentControllerFactory.d.ts +0 -5
  416. package/dist/types/ts4.7/track/dash/util/mpd.d.ts +10 -0
  417. package/dist/types/ts4.7/track/hls/HlsManifestController.d.ts +1 -25
  418. package/dist/types/ts4.7/track/hls/{HlsManifestProvider.d.ts → HlsManifestData.d.ts} +4 -6
  419. package/dist/types/ts4.7/track/hls/HlsTrack.d.ts +5 -6
  420. package/dist/types/ts4.7/track/hls/buildHlsMediaTimeline.d.ts +8 -1
  421. package/dist/types/ts4.7/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  422. package/dist/types/ts4.7/track/hls/createHlsContentTypesValue.d.ts +1 -1
  423. package/dist/types/ts4.7/track/hls/createHlsFactories.d.ts +40 -13
  424. package/dist/types/ts4.7/track/hls/createHlsManifestProvider.d.ts +6 -0
  425. package/dist/types/ts4.7/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  426. package/dist/types/ts4.7/track/hls/index.d.ts +1 -1
  427. package/dist/types/ts4.7/track/inferLoadOptionsFromUri.d.ts +15 -0
  428. package/dist/types/ts4.7/track/mse/MseTrack.d.ts +66 -8
  429. package/dist/types/ts4.7/track/source/SourceObjectTrack.d.ts +2 -2
  430. package/dist/types/ts4.7/track/source/SourceTrack.d.ts +2 -2
  431. package/dist/types/ts4.7/track/source/SourceTrackBase.d.ts +7 -5
  432. package/dist/types/ts4.7/util/media/codecOverrides.d.ts +33 -0
  433. package/dist/types/ts4.7/util/media/codecSupport.d.ts +6 -0
  434. package/dist/types/ts4.7/util/media/mediaSource.d.ts +5 -0
  435. package/dist/types/ts4.7/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  436. package/dist/types/ts4.7/vinyl/VinylDeps.d.ts +5 -0
  437. package/dist/types/ts4.7/vinyl/VinylOptions.d.ts +68 -4
  438. package/dist/types/ts4.7/vinyl/VinylPlayer.d.ts +63 -4
  439. package/dist/types/ts4.7/vinyl/createVinylFactories.d.ts +55 -12
  440. package/dist/unit/types/current/ad/AdController.test.d.ts +2 -0
  441. package/dist/unit/types/current/ad/AdController.test.d.ts.map +1 -0
  442. package/dist/unit/types/current/ad/AdController.test.js +10 -0
  443. package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts +2 -0
  444. package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts.map +1 -0
  445. package/dist/unit/types/current/ad/AdControllerImpl.test.js +1456 -0
  446. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts +2 -0
  447. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts.map +1 -0
  448. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.js +56 -0
  449. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts +2 -0
  450. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts.map +1 -0
  451. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.js +756 -0
  452. package/dist/unit/types/current/drm/DrmControllerImpl.test.js +205 -4
  453. package/dist/unit/types/current/index.d.ts +117 -98
  454. package/dist/unit/types/current/index.d.ts.map +1 -1
  455. package/dist/unit/types/current/index.js +117 -98
  456. package/dist/unit/types/current/playback/PlaybackControllerImpl.test.js +92 -3
  457. package/dist/unit/types/current/streaming/ContentStream.test.js +11 -0
  458. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts +2 -0
  459. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts.map +1 -0
  460. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.js +197 -0
  461. package/dist/unit/types/current/streaming/MediaTimeline.test.js +2 -0
  462. package/dist/unit/types/current/streaming/MseTrack.test.js +478 -14
  463. package/dist/unit/types/current/streaming/SegmentControllerImpl.test.js +66 -0
  464. package/dist/unit/types/current/streaming/StreamingEventMap.test.js +2 -2
  465. package/dist/unit/types/current/streaming/abr/QualitySelectorImpl.test.js +110 -0
  466. package/dist/unit/types/current/streaming/buffering/BufferingController.test.js +123 -21
  467. package/dist/unit/types/current/streaming/buffering/MediaSourceController.test.js +37 -10
  468. package/dist/unit/types/current/streaming/buffering/SourceBufferController.test.js +4 -0
  469. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts +2 -0
  470. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts.map +1 -0
  471. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.js +56 -0
  472. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts +2 -0
  473. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts.map +1 -0
  474. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.js +77 -0
  475. package/dist/unit/types/current/streaming/createDefaultMediaTimelineTransformer.test.js +144 -2
  476. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts +2 -0
  477. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts.map +1 -0
  478. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.js +99 -0
  479. package/dist/unit/types/current/streaming/mediaTimelineFilter.test.js +9 -0
  480. package/dist/unit/types/current/streaming/mediaTimelineLanguageFilter.test.js +92 -3
  481. package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts +2 -0
  482. package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts.map +1 -0
  483. package/dist/unit/types/current/text/SidecarTextTrackController.test.js +587 -0
  484. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts +2 -0
  485. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts.map +1 -0
  486. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.js +336 -0
  487. package/dist/unit/types/current/text/VttCueStyle.test.d.ts +2 -0
  488. package/dist/unit/types/current/text/VttCueStyle.test.d.ts.map +1 -0
  489. package/dist/unit/types/current/text/VttCueStyle.test.js +76 -0
  490. package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts +2 -0
  491. package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts.map +1 -0
  492. package/dist/unit/types/current/text/discoverDashTextTracks.test.js +199 -0
  493. package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts +2 -0
  494. package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts.map +1 -0
  495. package/dist/unit/types/current/text/discoverHlsTextTracks.test.js +177 -0
  496. package/dist/unit/types/current/text/parseWebVtt.test.d.ts +2 -0
  497. package/dist/unit/types/current/text/parseWebVtt.test.d.ts.map +1 -0
  498. package/dist/unit/types/current/text/parseWebVtt.test.js +212 -0
  499. package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts +2 -0
  500. package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts.map +1 -0
  501. package/dist/unit/types/current/text/pickPreferredTextTrack.test.js +67 -0
  502. package/dist/unit/types/current/track/TrackBase.test.js +50 -5
  503. package/dist/unit/types/current/track/TrackController.test.js +712 -109
  504. package/dist/unit/types/current/track/TrackFactory.test.js +13 -25
  505. package/dist/unit/types/current/track/dash/createDashContentStreamFactories.test.js +1 -0
  506. package/dist/unit/types/current/track/dash/createDashFactories.test.js +63 -2
  507. package/dist/unit/types/current/track/dash/createSegmentControllerFactory.test.js +1 -0
  508. package/dist/unit/types/current/track/dash/util/mpd.test.js +24 -1
  509. package/dist/unit/types/current/track/hls/HlsManifestController.test.js +4 -4
  510. package/dist/unit/types/current/track/hls/HlsMediaQualityMetadataResolver.test.js +4 -2
  511. package/dist/unit/types/current/track/hls/buildHlsMediaTimeline.test.js +260 -14
  512. package/dist/unit/types/current/track/hls/createHlsContentStreamFactories.test.js +1 -0
  513. package/dist/unit/types/current/track/hls/createHlsFactories.test.js +182 -4
  514. package/dist/unit/types/current/track/hls/createUrlHlsManifestProvider.test.js +19 -0
  515. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts +2 -0
  516. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts.map +1 -0
  517. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.js +165 -0
  518. package/dist/unit/types/current/track/source/SourceTrack.test.js +5 -0
  519. package/dist/unit/types/current/track/source/SourceTrackBase.test.js +24 -3
  520. package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
  521. package/dist/unit/types/current/util/media/codecOverrides.test.d.ts +2 -0
  522. package/dist/unit/types/current/util/media/codecOverrides.test.d.ts.map +1 -0
  523. package/dist/unit/types/current/util/media/codecOverrides.test.js +42 -0
  524. package/dist/unit/types/current/util/media/codecSupport.test.d.ts +2 -0
  525. package/dist/unit/types/current/util/media/codecSupport.test.d.ts.map +1 -0
  526. package/dist/unit/types/current/util/media/codecSupport.test.js +26 -0
  527. package/dist/unit/types/current/util/media/mediaSource.test.js +6 -0
  528. package/dist/unit/types/current/vinyl/VinylPlayer.test.js +177 -75
  529. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts +2 -0
  530. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts.map +1 -0
  531. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.js +142 -0
  532. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts +2 -0
  533. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts.map +1 -0
  534. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.js +263 -0
  535. package/dist/vinylTestUtil/index.js +2393 -2232
  536. package/dist/vinylTestUtil/index.js.map +4 -4
  537. package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.d.ts +14 -0
  538. package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.d.ts.map +1 -1
  539. package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.js +49 -30
  540. package/dist/vinylTestUtil/types/current/index.d.ts +53 -51
  541. package/dist/vinylTestUtil/types/current/index.d.ts.map +1 -1
  542. package/dist/vinylTestUtil/types/current/index.js +53 -51
  543. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts +15 -0
  544. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts.map +1 -0
  545. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.js +26 -0
  546. package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.d.ts +8 -1
  547. package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.d.ts.map +1 -1
  548. package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.js +15 -0
  549. package/dist/vinylTestUtil/types/current/mock/dash/mockDashManifest.d.ts +12 -12
  550. package/dist/vinylTestUtil/types/current/mock/drm/MockDrmController.d.ts +2 -2
  551. package/dist/vinylTestUtil/types/current/mock/drm/MockDrmController.d.ts.map +1 -1
  552. package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.d.ts +7 -1
  553. package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.d.ts.map +1 -1
  554. package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.js +12 -0
  555. package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.d.ts +3 -3
  556. package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.d.ts.map +1 -1
  557. package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.js +1 -0
  558. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
  559. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts.map +1 -1
  560. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.js +17 -1
  561. package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.d.ts +2 -1
  562. package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.d.ts.map +1 -1
  563. package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.js +1 -0
  564. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  565. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.d.ts.map +1 -1
  566. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.js +1 -0
  567. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
  568. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.d.ts.map +1 -1
  569. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.js +2 -1
  570. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts +10 -0
  571. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts.map +1 -0
  572. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.js +14 -0
  573. package/dist/vinylTestUtil/types/current/mock/track/MockTrack.d.ts +13 -4
  574. package/dist/vinylTestUtil/types/current/mock/track/MockTrack.d.ts.map +1 -1
  575. package/dist/vinylTestUtil/types/current/mock/track/MockTrack.js +11 -0
  576. package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.d.ts +3 -2
  577. package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.d.ts.map +1 -1
  578. package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.js +2 -1
  579. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts +6 -0
  580. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts.map +1 -1
  581. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.js +8 -1
  582. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
  583. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts.map +1 -1
  584. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.js +6 -1
  585. package/dist/vinylTestUtil/types/current/player/createVinylSuite.d.ts.map +1 -1
  586. package/dist/vinylTestUtil/types/current/player/createVinylSuite.js +18 -7
  587. package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
  588. package/dist/vinylTestUtil/types/current/util/playback/eventPromises.d.ts.map +1 -1
  589. package/dist/vinylTestUtil/types/current/util/playback/eventPromises.js +1 -1
  590. package/dist/vinylTestUtil/types/current/util/playback/expectTrackCanSeek.d.ts.map +1 -1
  591. package/dist/vinylTestUtil/types/current/util/playback/expectTrackCanSeek.js +5 -2
  592. package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlays.js +3 -3
  593. package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlaysUntil.d.ts.map +1 -1
  594. package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlaysUntil.js +11 -7
  595. package/dist/vinylTestUtil/types/ts3.7/assets/vinylTestAssets.d.ts +14 -0
  596. package/dist/vinylTestUtil/types/ts3.7/index.d.ts +53 -51
  597. package/dist/vinylTestUtil/types/ts3.7/mock/ad/MockAdController.d.ts +15 -0
  598. package/dist/vinylTestUtil/types/ts3.7/mock/dash/MockDashManifestController.d.ts +8 -1
  599. package/dist/vinylTestUtil/types/ts3.7/mock/dash/mockDashManifest.d.ts +12 -12
  600. package/dist/vinylTestUtil/types/ts3.7/mock/drm/MockDrmController.d.ts +2 -2
  601. package/dist/vinylTestUtil/types/ts3.7/mock/hls/MockHlsManifestController.d.ts +7 -1
  602. package/dist/vinylTestUtil/types/ts3.7/mock/hls/mockHlsManifest.d.ts +3 -3
  603. package/dist/vinylTestUtil/types/ts3.7/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
  604. package/dist/vinylTestUtil/types/ts3.7/mock/streaming/MockContentStream.d.ts +2 -1
  605. package/dist/vinylTestUtil/types/ts3.7/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  606. package/dist/vinylTestUtil/types/ts3.7/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
  607. package/dist/vinylTestUtil/types/ts3.7/mock/text/MockTextTrackController.d.ts +10 -0
  608. package/dist/vinylTestUtil/types/ts3.7/mock/track/MockTrack.d.ts +13 -4
  609. package/dist/vinylTestUtil/types/ts3.7/mock/track/MockTrackController.d.ts +3 -2
  610. package/dist/vinylTestUtil/types/ts3.7/mock/track/dash/createMockDashDependencies.d.ts +6 -0
  611. package/dist/vinylTestUtil/types/ts3.7/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
  612. package/dist/vinylTestUtil/types/ts4.1/assets/vinylTestAssets.d.ts +14 -0
  613. package/dist/vinylTestUtil/types/ts4.1/index.d.ts +53 -51
  614. package/dist/vinylTestUtil/types/ts4.1/mock/ad/MockAdController.d.ts +15 -0
  615. package/dist/vinylTestUtil/types/ts4.1/mock/dash/MockDashManifestController.d.ts +8 -1
  616. package/dist/vinylTestUtil/types/ts4.1/mock/dash/mockDashManifest.d.ts +12 -12
  617. package/dist/vinylTestUtil/types/ts4.1/mock/drm/MockDrmController.d.ts +2 -2
  618. package/dist/vinylTestUtil/types/ts4.1/mock/hls/MockHlsManifestController.d.ts +7 -1
  619. package/dist/vinylTestUtil/types/ts4.1/mock/hls/mockHlsManifest.d.ts +3 -3
  620. package/dist/vinylTestUtil/types/ts4.1/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
  621. package/dist/vinylTestUtil/types/ts4.1/mock/streaming/MockContentStream.d.ts +2 -1
  622. package/dist/vinylTestUtil/types/ts4.1/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  623. package/dist/vinylTestUtil/types/ts4.1/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
  624. package/dist/vinylTestUtil/types/ts4.1/mock/text/MockTextTrackController.d.ts +10 -0
  625. package/dist/vinylTestUtil/types/ts4.1/mock/track/MockTrack.d.ts +13 -4
  626. package/dist/vinylTestUtil/types/ts4.1/mock/track/MockTrackController.d.ts +3 -2
  627. package/dist/vinylTestUtil/types/ts4.1/mock/track/dash/createMockDashDependencies.d.ts +6 -0
  628. package/dist/vinylTestUtil/types/ts4.1/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
  629. package/dist/vinylTestUtil/types/ts4.7/assets/vinylTestAssets.d.ts +14 -0
  630. package/dist/vinylTestUtil/types/ts4.7/index.d.ts +53 -51
  631. package/dist/vinylTestUtil/types/ts4.7/mock/ad/MockAdController.d.ts +15 -0
  632. package/dist/vinylTestUtil/types/ts4.7/mock/dash/MockDashManifestController.d.ts +8 -1
  633. package/dist/vinylTestUtil/types/ts4.7/mock/dash/mockDashManifest.d.ts +12 -12
  634. package/dist/vinylTestUtil/types/ts4.7/mock/drm/MockDrmController.d.ts +2 -2
  635. package/dist/vinylTestUtil/types/ts4.7/mock/hls/MockHlsManifestController.d.ts +7 -1
  636. package/dist/vinylTestUtil/types/ts4.7/mock/hls/mockHlsManifest.d.ts +3 -3
  637. package/dist/vinylTestUtil/types/ts4.7/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
  638. package/dist/vinylTestUtil/types/ts4.7/mock/streaming/MockContentStream.d.ts +2 -1
  639. package/dist/vinylTestUtil/types/ts4.7/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  640. package/dist/vinylTestUtil/types/ts4.7/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
  641. package/dist/vinylTestUtil/types/ts4.7/mock/text/MockTextTrackController.d.ts +10 -0
  642. package/dist/vinylTestUtil/types/ts4.7/mock/track/MockTrack.d.ts +13 -4
  643. package/dist/vinylTestUtil/types/ts4.7/mock/track/MockTrackController.d.ts +3 -2
  644. package/dist/vinylTestUtil/types/ts4.7/mock/track/dash/createMockDashDependencies.d.ts +6 -0
  645. package/dist/vinylTestUtil/types/ts4.7/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
  646. package/docs/ADS.md +264 -0
  647. package/docs/USAGE.md +142 -9
  648. package/package.json +16 -16
  649. package/dist/types/current/track/hls/HlsManifestProvider.d.ts.map +0 -1
  650. package/dist/unit/types/current/track/dash/DashManifestController.test.d.ts +0 -2
  651. package/dist/unit/types/current/track/dash/DashManifestController.test.d.ts.map +0 -1
  652. package/dist/unit/types/current/track/dash/DashManifestController.test.js +0 -186
  653. /package/dist/types/current/{track/hls/HlsManifestProvider.js → ad/AdBreakInfo.js} +0 -0
@@ -2,16 +2,16 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { countElements, createDisposer, EventHostImpl, first, getOrSet, logDebug, logInfo, LruCache, noop, } from '@amazon/vinyl-util';
5
+ import { countElements, createDisposer, EventHostImpl, first, getOrSet, IllegalStateError, logDebug, logError, logInfo, logVerbose, logWarn, LruCache, noop, resolveValueProvider, } from '@amazon/vinyl-util';
6
6
  export const ALL_TRACK_CONTROLLER_EVENTS = [
7
- 'currentTrackChanging',
8
- 'currentTrackChange',
7
+ 'trackActivated',
8
+ 'trackDeactivated',
9
9
  'queueChange',
10
+ 'trackEnded',
10
11
  'queueEnded',
11
12
  ];
12
13
  const defaultTrackControllerImplOptions = {
13
14
  trackPrefetchCount: 2,
14
- loadTimeout: 60,
15
15
  preloadCapacity: 2,
16
16
  };
17
17
  /**
@@ -29,47 +29,184 @@ export class TrackControllerImpl extends EventHostImpl {
29
29
  }
30
30
  // When tracks are preloaded, the cache capacity may expand automatically to accommodate.
31
31
  _autoPreloadCapacity = 0;
32
+ // The primary content track cache. Bounded by preloadCapacity + prefetch.
32
33
  trackCache = new LruCache(0);
34
+ // A monotonically increasing id for a queue change, to allow for queue changes during events.
35
+ queueIdx = 0;
33
36
  _queue = [];
37
+ // The current content track data in the queue. This will never represent an ad.
34
38
  _current = null;
39
+ // The current Track, may be a content track or an ad track.
40
+ _currentTrack = null;
41
+ // The parent content track. Used as a reference to the track that initiated an ad break.
42
+ adParent = null;
43
+ // Current-track subscriptions (e.g. `error` → adController.failAd),
44
+ // re-bound per setCurrentTrack. Promote to a disposer if more are added.
45
+ currentTrackSub = null;
46
+ // Ad tracks keyed by parent content URI, kept out of the content cache.
47
+ // Pegged to the parent: disposed when the parent is evicted (see onEvict).
48
+ adTracksByParent = new Map();
35
49
  disposer = createDisposer();
36
50
  _options = defaultTrackControllerImplOptions;
37
- trackEndedTimeoutId = null;
38
51
  constructor(deps, initialOptions) {
39
52
  super();
40
53
  this.deps = deps;
41
54
  const { add } = this.disposer;
55
+ const { playbackController } = deps;
42
56
  this.trackCache.onEvicting = (track) => {
43
57
  // Do not evict tracks within the prefetch range.
44
- return (this.prefetched.find((value) => value.uri === track.uri) == null);
58
+ return (this.getPrefetched().find((value) => value.uri === track.uri) ==
59
+ null);
45
60
  };
46
61
  this.trackCache.onEvict = (track) => {
47
62
  logDebug(this, `Disposing track: ${track.uri}`);
63
+ // Ad tracks are pegged to their parent — disposing them here keeps
64
+ // them from outliving the content track they belong to.
65
+ this.disposeAdTracksFor(track.uri);
48
66
  track.dispose();
49
67
  return true;
50
68
  };
51
- add(deps.playbackController.on('ended', () => {
52
- this.trackEndedTimeoutId = setTimeout(() => {
53
- // Adds a frame delay to allow applications an opportunity to respond to 'ended' events before the
54
- // track is changed.
55
- this.trackEndedTimeoutId = null;
56
- if (this.hasNext()) {
57
- this.next();
69
+ add(playbackController.on('ended', this.onEnded));
70
+ this.initializeAdHandling();
71
+ this.configure(initialOptions);
72
+ }
73
+ initializeAdHandling() {
74
+ const { add } = this.disposer;
75
+ const { adController, adTrackLoadOptionsProvider, playbackController } = this.deps;
76
+ add(adController.on('adPreload', (event) => {
77
+ // The playhead is approaching a midroll/postroll break; warm its
78
+ // ad tracks for the current content track so they are ready on
79
+ // entry. Prerolls are already warmed by preloadPrerollAds.
80
+ const adParent = this.adParent;
81
+ if (adParent)
82
+ this.preloadBreakAds(adParent, event.adBreak);
83
+ }));
84
+ add(adController.on('adEntered', (event) => {
85
+ const adParent = this.adParent;
86
+ if (!adParent) {
87
+ logDebug(this, 'ad entered, no parent track');
88
+ return;
89
+ }
90
+ const interrupted = () => this.adParent !== adParent ||
91
+ adController.currentAd !== event.ad;
92
+ if (event.ad.uri) {
93
+ // Infer the track load options from the ad.
94
+ adTrackLoadOptionsProvider(event.ad)
95
+ .then((adTrack) => {
96
+ if (!interrupted()) {
97
+ // set adTrack
98
+ this.setCurrentTrack(this.getOrCreateAdTrack(adParent.uri, adTrack), {
99
+ isAd: true,
100
+ checkPreroll: false,
101
+ config: {},
102
+ });
103
+ playbackController.play().catch(noop);
104
+ }
105
+ })
106
+ .catch((error) => {
107
+ if (!interrupted())
108
+ adController.failAd(error);
109
+ });
110
+ }
111
+ }));
112
+ add(adController.on('adBreakCompleted', (event) => {
113
+ logDebug(this, 'adBreakCompleted');
114
+ const adParent = this.adParent;
115
+ if (!adParent) {
116
+ logDebug(this, 'ad break completed, no parent track');
117
+ return;
118
+ }
119
+ if (adController.currentAdBreak) {
120
+ logDebug(this, 'more adbreaks');
121
+ return;
122
+ }
123
+ if (adParent.active) {
124
+ logDebug(this, 'no ads began');
125
+ return;
126
+ }
127
+ const adParentLoad = this._current;
128
+ const placement = event.adBreak.placement;
129
+ const isPreroll = placement === 'preroll';
130
+ const isPostroll = placement === 'postroll';
131
+ // A completed postroll marks the end of the whole track
132
+ // (content + postroll); preroll/midroll only resume content.
133
+ if (isPostroll) {
134
+ logDebug(this, 'trackEnded after postroll');
135
+ this.dispatch('trackEnded', { track: adParentLoad });
136
+ }
137
+ if (isPostroll && this.hasNext()) {
138
+ this.next();
139
+ }
140
+ else {
141
+ // Overrides the config startTime to resume from the correct position.
142
+ const startTime = isPreroll
143
+ ? adParentLoad.config?.startTime
144
+ : event.resumePosition;
145
+ // Resume the main track.
146
+ this.setCurrentTrack(adParent, {
147
+ config: {
148
+ ...adParentLoad.config,
149
+ startTime,
150
+ },
151
+ isAd: false,
152
+ checkPreroll: false,
153
+ });
154
+ if (isPostroll) {
155
+ logInfo(this, 'queueEnded after postroll ad(s)');
156
+ this.dispatch('queueEnded', {});
58
157
  }
59
158
  else {
60
- logInfo(this, 'queueEnded');
61
- this.dispatch('queueEnded', {});
159
+ playbackController.play().catch(noop);
62
160
  }
63
- });
161
+ }
64
162
  }));
65
- this.configure(initialOptions);
66
163
  }
67
- clearTrackEndedTimeout() {
68
- if (this.trackEndedTimeoutId) {
69
- clearTimeout(this.trackEndedTimeoutId);
70
- this.trackEndedTimeoutId = null;
164
+ /**
165
+ * The current track has ended naturally. On the next tick advance the queue or emit queue ended.
166
+ */
167
+ onEnded = () => {
168
+ const { adController } = this.deps;
169
+ // `ended` fires for ad tracks too (they share the media element); an
170
+ // ad's end is the AdController's concern, the queue or content may be resumed on 'adBreakCompleted'
171
+ if (this.currentTrackIsAdTrack)
172
+ return;
173
+ const track = this._current;
174
+ if (!track) {
175
+ logWarn(this, 'an ended event was received with no current track');
176
+ return;
71
177
  }
72
- }
178
+ const interrupted = this.getQueueInterrupted();
179
+ adController
180
+ .enterPostroll()
181
+ .then((postroll) => {
182
+ if (postroll) {
183
+ // There is a pending postroll, do not advance the queue,
184
+ // a new adEntered event will fire.
185
+ logDebug(this, 'postroll entered');
186
+ }
187
+ else {
188
+ // The content ended with no postroll: the track is done.
189
+ logDebug(this, 'trackEnded');
190
+ this.dispatch('trackEnded', { track });
191
+ // Adds a microtask delay to allow applications an opportunity to respond to 'ended' and 'trackEnded'
192
+ // events before the queue is advanced.
193
+ queueMicrotask(() => {
194
+ if (interrupted())
195
+ return;
196
+ if (this.hasNext()) {
197
+ this.next();
198
+ }
199
+ else {
200
+ logInfo(this, 'queueEnded');
201
+ this.dispatch('queueEnded', {});
202
+ }
203
+ });
204
+ }
205
+ })
206
+ .catch((error) => {
207
+ logError(this, 'enterPostroll failed', error);
208
+ });
209
+ };
73
210
  /**
74
211
  * Returns the currently set configuration.
75
212
  */
@@ -106,7 +243,7 @@ export class TrackControllerImpl extends EventHostImpl {
106
243
  * Returns the subset of the queue that should be prefetched.
107
244
  * @private
108
245
  */
109
- get prefetched() {
246
+ getPrefetched() {
110
247
  const tracks = [];
111
248
  if (this._current)
112
249
  tracks.push(this._current);
@@ -136,7 +273,7 @@ export class TrackControllerImpl extends EventHostImpl {
136
273
  this._preload(loadOptionsList);
137
274
  }
138
275
  _preload(loadOptionsList) {
139
- const prefetched = this.prefetched;
276
+ const prefetched = this.getPrefetched();
140
277
  // Calculate the required preload capacity as the number of tracks requested that are not within the
141
278
  // prefetch window. If this value is greater than the current preloadCapacity, increase the cache size.
142
279
  const requiredPreloadCapacity = countElements(loadOptionsList, (loadOptions) => {
@@ -153,25 +290,77 @@ export class TrackControllerImpl extends EventHostImpl {
153
290
  trackPriority.value += loadOptionsList.length;
154
291
  let priority = trackPriority.value;
155
292
  for (const loadOptions of loadOptionsList) {
156
- const track = this.getOrCreateTrack(loadOptions.uri, loadOptions);
293
+ const track = this.getOrCreateTrack(loadOptions);
294
+ const prefetchPriority = priority--;
295
+ logVerbose(this, `preloading track ${track.uri} with priority ${prefetchPriority}`);
157
296
  track.preload({
158
- prefetchPriority: priority--,
297
+ prefetchPriority,
159
298
  }, loadOptions.config ?? {});
299
+ this.preloadPrerollAds(track, prefetchPriority);
160
300
  }
161
301
  }
302
+ preloadPrerollAds(parentTrack, parentTrackPriority) {
303
+ parentTrack
304
+ .getAds()
305
+ .then(async (trackAds) => {
306
+ for (const [index, adBreak] of trackAds.adBreaks.entries()) {
307
+ if (adBreak.placement !== 'preroll')
308
+ continue;
309
+ const ads = await resolveValueProvider(adBreak.ads);
310
+ for (const ad of ads) {
311
+ await this.preloadAd({
312
+ parentTrack,
313
+ // A prefetch priority fractionally higher than the
314
+ // parent track (so a preroll is warmed before its
315
+ // content), later breaks slightly higher than earlier.
316
+ prefetchPriority: parentTrackPriority + (index + 1) / 1000,
317
+ ad,
318
+ });
319
+ }
320
+ }
321
+ })
322
+ .catch((error) => {
323
+ // Preloading prerolls is best-effort: an ad-discovery, ad-list,
324
+ // or ad-options failure must not surface as an unhandled
325
+ // rejection (it just means the preroll isn't warmed up).
326
+ logVerbose(this, `preroll ad preload failed for ${parentTrack.uri}`, error);
327
+ });
328
+ }
329
+ /**
330
+ * Warms the ad tracks for an approaching midroll/postroll break (driven by
331
+ * the ad controller's `adPreload`). Best-effort: an ad-list or ad-options
332
+ * failure is logged, not thrown. The break is imminent, so its ad tracks
333
+ * get a prefetch priority above the current content prefetch window.
334
+ */
335
+ preloadBreakAds(parentTrack, adBreak) {
336
+ trackPriority.value += 1;
337
+ const prefetchPriority = trackPriority.value;
338
+ resolveValueProvider(adBreak.ads)
339
+ .then(async (ads) => {
340
+ for (const ad of ads) {
341
+ await this.preloadAd({ parentTrack, prefetchPriority, ad });
342
+ }
343
+ })
344
+ .catch((error) => {
345
+ logVerbose(this, `ad preload failed for break ${adBreak.id}`, error);
346
+ });
347
+ }
348
+ /** Preloads an ad for a parent track. Aborts if the parent track is disposed before the ad load options resolve. **/
349
+ async preloadAd({ parentTrack, prefetchPriority, ad, }) {
350
+ const { adTrackLoadOptionsProvider } = this.deps;
351
+ const loadOptions = await adTrackLoadOptionsProvider(ad);
352
+ if (parentTrack.disposed)
353
+ return;
354
+ logVerbose(this, `preloading ad id=${ad.id} uri=${ad.uri} priority=${prefetchPriority}`);
355
+ const adTrack = this.getOrCreateAdTrack(parentTrack.uri, loadOptions);
356
+ adTrack.preload({
357
+ prefetchPriority,
358
+ }, loadOptions.config ?? {});
359
+ }
162
360
  load(...loadOptionsList) {
163
361
  logDebug(this, `load ${loadOptionsList.length} items`);
164
362
  loadOptionsList.forEach(this.validateLoadOptions);
165
- this.clearTrackEndedTimeout();
166
- this._current = loadOptionsList[0] ?? null;
167
- const previousQueue = this._queue;
168
- this._queue = loadOptionsList.slice(1);
169
- this._preload(this.prefetched);
170
- this.activateCurrent();
171
- this.dispatch('queueChange', {
172
- previous: previousQueue,
173
- current: this._queue,
174
- });
363
+ this.setQueue(loadOptionsList[0], loadOptionsList.slice(1));
175
364
  }
176
365
  unload() {
177
366
  this.load();
@@ -179,56 +368,30 @@ export class TrackControllerImpl extends EventHostImpl {
179
368
  enqueue(...loadOptionsList) {
180
369
  logDebug(this, `enqueue ${loadOptionsList.length} items`);
181
370
  loadOptionsList.forEach(this.validateLoadOptions);
182
- const previousQueue = this._queue;
183
- this._queue = this._queue.concat(loadOptionsList);
184
- this._preload(this.prefetched);
185
- if (this.currentTrack == null && this.hasNext())
371
+ this.setQueue(this._current, this._queue.concat(loadOptionsList));
372
+ if (this._currentTrack == null && this.hasNext())
186
373
  this.next();
187
- this.dispatch('queueChange', {
188
- previous: previousQueue,
189
- current: this._queue,
190
- });
191
374
  }
192
375
  hasNext() {
193
376
  return this._queue.length > 0;
194
377
  }
195
378
  next() {
196
- this.clearTrackEndedTimeout();
197
379
  const playbackController = this.deps.playbackController;
198
380
  const shouldPlay = playbackController.ended || !playbackController.paused;
199
381
  const next = first(this._queue);
200
- const previousQueue = this._queue;
201
- this._queue = this._queue.slice(1);
202
- this._current = next ?? null;
203
- logDebug(this, 'next, nextTrack:', this._current);
204
- if (this.options.trackPrefetchCount > 0 &&
205
- this._queue.length >= this.options.trackPrefetchCount) {
206
- this._preload([this._queue[this.options.trackPrefetchCount - 1]]);
207
- }
208
- this.activateCurrent();
209
- if (shouldPlay)
210
- void playbackController.play().catch(noop);
211
- this.dispatch('queueChange', {
212
- previous: previousQueue,
213
- current: this._queue,
214
- });
382
+ logDebug(this, 'next, nextTrack:', next);
383
+ this.setQueue(next, this._queue.slice(1), { shouldPlay });
215
384
  }
216
385
  clearTrackCache() {
217
386
  logDebug(this, 'clearTrackCache');
218
- this.clearTrackEndedTimeout();
219
- const previousQueue = this._queue;
220
- this._queue = [];
221
387
  this.trackCache.forEach((track) => {
388
+ this.disposeAdTracksFor(track.uri);
222
389
  track.dispose();
223
390
  });
224
391
  this.trackCache.clear();
225
392
  this._autoPreloadCapacity = 0;
226
393
  this.checkCacheCapacity();
227
- this.clearCurrentTrack();
228
- this.dispatch('queueChange', {
229
- previous: previousQueue,
230
- current: this._queue,
231
- });
394
+ this.setQueue(null, []);
232
395
  }
233
396
  clearPrefetch() {
234
397
  for (const cachedTrack of this.trackCache.values()) {
@@ -236,72 +399,162 @@ export class TrackControllerImpl extends EventHostImpl {
236
399
  }
237
400
  }
238
401
  clearQueue() {
239
- this.clearTrackEndedTimeout();
240
- const previous = this._queue;
241
- this._queue = [];
242
- this.dispatch('queueChange', {
243
- previous,
244
- current: this._queue,
245
- });
402
+ // Clears the upcoming queue without unloading the current track.
403
+ this.setQueue(this._current, []);
246
404
  }
247
405
  /**
248
406
  * If the given track id is the current track or in the cache, returns that track.
249
407
  * Otherwise, constructs a new track, adds it to the cache, and returns it.
250
408
  *
251
- * @param uri The unique resource identifier.
252
409
  * @param loadOptions
253
410
  * @private
254
411
  */
255
- getOrCreateTrack(uri, loadOptions) {
256
- return getOrSet(this.trackCache, uri, () => {
257
- const newTrack = this.deps.trackFactory.createTrack(loadOptions);
258
- this.trackCache.set(uri, newTrack);
259
- return newTrack;
260
- });
412
+ getOrCreateTrack(loadOptions) {
413
+ return getOrSet(this.trackCache, loadOptions.uri, () => this.deps.trackFactory.createTrack(loadOptions));
261
414
  }
262
415
  /**
263
- * Get the current track from cache or create a new track, then activates that track.
416
+ * Gets the cached ad track, or creates a new one and sets it in the
417
+ * parent track mapping.
418
+ * When the parent track is disposed, this ad track will be as well.
419
+ *
420
+ * @param parentUri The URI of the parent track.
421
+ * @param loadOptions
422
+ * @private
264
423
  */
265
- activateCurrent() {
266
- const loadOptions = this._current;
267
- if (!loadOptions) {
268
- this.clearCurrentTrack();
269
- return;
424
+ getOrCreateAdTrack(parentUri, loadOptions) {
425
+ const parentTracks = getOrSet(this.adTracksByParent, parentUri, () => new Map());
426
+ return getOrSet(parentTracks, loadOptions.uri, () => this.deps.trackFactory.createTrack(loadOptions));
427
+ }
428
+ /**
429
+ * Sets the current track and following queue.
430
+ *
431
+ * If the given track is already current, it will be de-activated and re-activated and the
432
+ * trackDeactivated/trackActivated events will still be emitted. The same track may be in the
433
+ * queue multiple times.
434
+ */
435
+ setQueue(current, queue, options) {
436
+ const { playbackController } = this.deps;
437
+ ++this.queueIdx;
438
+ const interrupted = this.getQueueInterrupted();
439
+ const previousQueue = this._queue;
440
+ const previous = this._current;
441
+ if (previous !== current) {
442
+ // Update the pointers before materializing the track, so eviction
443
+ // protects the incoming track and its window, not the outgoing one.
444
+ this._current = current ?? null;
445
+ this._queue = queue;
446
+ this.setCurrentTrack(current ? this.getOrCreateTrack(current) : null, {
447
+ isAd: false,
448
+ checkPreroll: true,
449
+ config: current?.config,
450
+ });
451
+ if (options?.shouldPlay) {
452
+ // playback controller defers play until the new track is loaded
453
+ playbackController.play().catch(noop);
454
+ }
455
+ }
456
+ else {
457
+ // Current track unchanged but the queue may have (e.g. enqueue).
458
+ // Keep it in sync so hasNext()/next() work.
459
+ this._queue = queue;
460
+ }
461
+ this._preload(this.getPrefetched());
462
+ logDebug(this, `track change, previous: ${previous?.uri} current: ${current?.uri}`);
463
+ if (previousQueue !== queue) {
464
+ this.dispatch('queueChange', {
465
+ previous: previousQueue,
466
+ current: queue,
467
+ });
468
+ }
469
+ if (interrupted()) {
470
+ throw new IllegalStateError(`cannot change the queue on a 'queueChange' or 'trackDeactivated' event`);
270
471
  }
271
- this.setCurrentTrack(this.getOrCreateTrack(loadOptions.uri, loadOptions), loadOptions);
272
472
  }
273
- _currentTrack = null;
274
- get currentTrack() {
275
- return this._currentTrack;
473
+ get currentTrackIsAdTrack() {
474
+ return this._currentTrack !== this.adParent;
276
475
  }
277
476
  /**
278
- * Sets the current track. If the given track is already current, it will be de-activated and re-activated and
279
- * the currentTrackChange event will still be emitted.
280
- * The same track may be in the queue multiple times.
477
+ * Sets the active track.
478
+ * This may either be a content track created from `setQueue` or an ad track created from `adEntered`.
479
+ *
480
+ * @param newTrack
481
+ * @param options
482
+ * @private
281
483
  */
282
- setCurrentTrack(value, loadOptions) {
484
+ setCurrentTrack(newTrack, options) {
485
+ const { adController } = this.deps;
283
486
  const previousTrack = this._currentTrack;
284
- this.dispatch('currentTrackChanging', {
285
- previous: previousTrack,
286
- current: value,
287
- });
288
- this._currentTrack = value;
289
- if (previousTrack?.active === true)
290
- previousTrack.deactivate();
291
- const loadOptionsConfig = loadOptions?.config ?? {};
292
- if (value?.active === false)
293
- value.activate(loadOptionsConfig);
294
- logDebug(this, `currentTrackChange, previous: ${previousTrack} current: ${value}`);
295
- this.dispatch('currentTrackChange', {
296
- previous: previousTrack,
297
- current: value,
298
- });
487
+ const previousWasActive = previousTrack?.active ?? false;
488
+ this._currentTrack = newTrack;
489
+ const interrupted = () => this._currentTrack !== newTrack;
490
+ previousTrack?.deactivate();
491
+ if (previousTrack && previousWasActive) {
492
+ this.dispatch('trackDeactivated', { track: previousTrack });
493
+ }
494
+ // Forward the active track's errors to the ad controller. When an ad
495
+ // track errors (fails to load or errors mid-playback), this fails the
496
+ // ad so the break advances rather than stalling on the broken ad; on a
497
+ // content track failAd is a no-op (the error still surfaces as a player
498
+ // error). Re-subscribed per track and torn down on the next change.
499
+ this.currentTrackSub?.();
500
+ this.currentTrackSub =
501
+ newTrack?.on('error', (event) => adController.failAd(event.error)) ?? null;
502
+ if (!options.isAd) {
503
+ this.adParent = newTrack;
504
+ adController.setAdsProvider(newTrack);
505
+ }
506
+ if (newTrack) {
507
+ const activate = () => {
508
+ if (interrupted())
509
+ return;
510
+ newTrack.activate(options.config ?? {});
511
+ this.dispatch('trackActivated', { track: newTrack });
512
+ };
513
+ if (options.isAd || !options.checkPreroll) {
514
+ activate(); // Ads cannot have prerolls.
515
+ }
516
+ else {
517
+ adController
518
+ .enterPreroll()
519
+ .then((preroll) => {
520
+ if (preroll)
521
+ return; // preroll entered
522
+ activate();
523
+ })
524
+ .catch((error) => {
525
+ logError(this, 'enterPreroll failed', error);
526
+ activate();
527
+ });
528
+ }
529
+ }
530
+ }
531
+ /**
532
+ * Disposes all preloaded ad tracks belonging to the given parent content
533
+ * URI and drops the parent's entry from the ad map.
534
+ */
535
+ disposeAdTracksFor(parentUri) {
536
+ const adTracks = this.adTracksByParent.get(parentUri);
537
+ if (!adTracks)
538
+ return;
539
+ this.adTracksByParent.delete(parentUri);
540
+ for (const track of adTracks.values())
541
+ track.dispose();
542
+ }
543
+ /**
544
+ * Returns a callback that returns true if the queue has changed or the controller disposed.
545
+ */
546
+ getQueueInterrupted() {
547
+ const idx = this.queueIdx;
548
+ return () => this.disposed || this.queueIdx !== idx;
549
+ }
550
+ get activeTrack() {
551
+ return this._currentTrack?.active ? this._currentTrack : null;
299
552
  }
300
- clearCurrentTrack() {
301
- this.setCurrentTrack(null, null);
553
+ reset(hard = false) {
554
+ this._currentTrack?.reset(hard);
302
555
  }
303
- reset() {
304
- this._currentTrack?.reset();
556
+ get disposed() {
557
+ return this.disposer.disposed;
305
558
  }
306
559
  dispose() {
307
560
  logDebug(this, 'dispose');
@@ -1,6 +1,7 @@
1
- import type { AnyRecord, Maybe, ReadonlyRecord } from '@amazon/vinyl-util';
2
- import type { ObjectSchema } from '@amazon/vinyl-validation';
1
+ import { type Maybe, type ReadonlyRecord } from '@amazon/vinyl-util';
2
+ import { type ObjectSchema } from '@amazon/vinyl-validation';
3
3
  import type { Track, TrackTypeId, TrackUri } from './Track';
4
+ import { type DrmOptions } from '../drm/DrmOptions';
4
5
  export interface TrackLoadOptions {
5
6
  /**
6
7
  * The track type, used to map to a track factory.
@@ -13,8 +14,27 @@ export interface TrackLoadOptions {
13
14
  /**
14
15
  * The track configuration.
15
16
  */
16
- readonly config?: Maybe<AnyRecord>;
17
+ readonly config?: Maybe<TrackConfigOptions>;
17
18
  }
19
+ /**
20
+ * General configuration for tracks set in track load options.
21
+ */
22
+ export interface TrackConfigOptions {
23
+ /**
24
+ * The time to seek to when the track has been activated.
25
+ * For MSE tracks this will affect pre-fetching.
26
+ */
27
+ readonly startTime?: Maybe<number>;
28
+ /**
29
+ * Extra application data to associate with the track.
30
+ */
31
+ readonly extra?: any;
32
+ /**
33
+ * DRM Configuration overrides for this track.
34
+ */
35
+ readonly drm?: Partial<DrmOptions>;
36
+ }
37
+ export declare const trackConfigOptionsValidator: ObjectSchema<TrackConfigOptions>;
18
38
  export declare const trackLoadOptionsValidator: ObjectSchema<TrackLoadOptions>;
19
39
  /**
20
40
  * Produces a new Track for the given configuration options.
@@ -1 +1 @@
1
- {"version":3,"file":"TrackFactory.d.ts","sourceRoot":"","sources":["../../../../src/track/TrackFactory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAQ5D,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAE3D,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAE1B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CACrC;AAED,eAAO,MAAM,yBAAyB,EAAE,YAAY,CAAC,gBAAgB,CAMpE,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,oBAAoB,SAAS,gBAAgB;IACvE;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAE7C;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,KAAK,CAAA;CACpD;AAED,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,YAAY,CAAC,GAAG,CAAC,IAC/D,CAAC,SAAS,YAAY,CAAC,MAAM,WAAW,CAAC,GAAG,WAAW,GAAG,KAAK,CAAA;AAEnE,MAAM,MAAM,2BAA2B,CACnC,CAAC,SAAS,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,IACrE,2BAA2B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAE3C,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAC3C,WAAW,EACX,YAAY,CAAC,gBAAgB,CAAC,CACjC,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,kBAAkB,IAAI;IAChE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GACtE,CAAC,CAAC,CAAC,CAAC,GACJ,KAAK;CACd,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,kBAAkB,EAC3D,SAAS,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACtC,YAAY,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAa9C"}
1
+ {"version":3,"file":"TrackFactory.d.ts","sourceRoot":"","sources":["../../../../src/track/TrackFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,KAAK,KAAK,EAEV,KAAK,cAAc,EACtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAKH,KAAK,YAAY,EAGpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,mBAAmB,CAAA;AAExE,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAE1B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAElC;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAA;IAEpB;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;CACrC;AAED,eAAO,MAAM,2BAA2B,EAAE,YAAY,CAAC,kBAAkB,CAKnE,CAAA;AAEN,eAAO,MAAM,yBAAyB,EAAE,YAAY,CAAC,gBAAgB,CAMpE,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,oBAAoB,SAAS,gBAAgB;IACvE;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAE7C;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,KAAK,CAAA;CACpD;AAED,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,YAAY,CAAC,GAAG,CAAC,IAC/D,CAAC,SAAS,YAAY,CAAC,MAAM,WAAW,CAAC,GAAG,WAAW,GAAG,KAAK,CAAA;AAEnE,MAAM,MAAM,2BAA2B,CACnC,CAAC,SAAS,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,IACrE,2BAA2B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAE3C,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAC3C,WAAW,EACX,YAAY,CAAC,gBAAgB,CAAC,CACjC,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,kBAAkB,IAAI;IAChE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GACtE,CAAC,CAAC,CAAC,CAAC,GACJ,KAAK;CACd,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,kBAAkB,EAC3D,SAAS,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACtC,YAAY,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAa9C"}
@@ -2,12 +2,18 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { ErrorOrigin, ownKeys } from '@amazon/vinyl-util';
6
- import { isOneOf, object, string, } from '@amazon/vinyl-validation';
5
+ import { ErrorOrigin, ownKeys, } from '@amazon/vinyl-util';
6
+ import { any, isOneOf, number, object, string, } from '@amazon/vinyl-validation';
7
+ import { drmOptionsValidator } from '../drm/DrmOptions';
8
+ export const trackConfigOptionsValidator = object({
9
+ extra: any().optional(),
10
+ startTime: number().maybe().optional(),
11
+ drm: drmOptionsValidator.partial().optional(),
12
+ });
7
13
  export const trackLoadOptionsValidator = object({
8
14
  type: string(),
9
15
  uri: string().notEmpty(),
10
- config: object({}).maybe().optional(),
16
+ config: trackConfigOptionsValidator.maybe().optional(),
11
17
  });
12
18
  /**
13
19
  * Given a map of TrackTypeId => TrackFactory, returns a track factory