@amazon/vinyl 1.2.0 → 2.0.4

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 +18 -18
  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
@@ -1 +1 @@
1
- {"version":3,"file":"mediaTimelineLanguageFilter.d.ts","sourceRoot":"","sources":["../../../../src/streaming/mediaTimelineLanguageFilter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAOzD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,WAAW,EAAE,MAAM,GACpB,eAAe,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAyB9C"}
1
+ {"version":3,"file":"mediaTimelineLanguageFilter.d.ts","sourceRoot":"","sources":["../../../../src/streaming/mediaTimelineLanguageFilter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAIzD;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACrC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,GAC7C,SAAS,MAAM,EAAE,CAKnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAChC,iBAAiB,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,EACpD,WAAW,EAAE,MAAM,GACpB,eAAe,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAyC9C"}
@@ -3,34 +3,79 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { memoize } from '@amazon/vinyl-util';
6
- import { findBestLanguageMatch, languageRelatedness, } from '../track/filters/languageFilter';
6
+ import { languageRelatedness } from '../track/filters/languageFilter';
7
7
  /**
8
- * Creates a filter predicate that keeps qualities matching the preferred language.
9
- * The best language match is computed per period (per unique array reference),
10
- * so periods with different available languages are handled independently.
8
+ * Resolves the preferred-language option to an ordered list of BCP 47 tags,
9
+ * most-preferred first.
11
10
  *
12
- * Qualities not matching the content type or without a language tag are always kept.
11
+ * - a string becomes a single-element list
12
+ * - an array is used as-is (already ordered)
13
+ * - `null` falls back to the platform's `navigator.languages` order — `null`
14
+ * means "use the platform preference", not "no preference"
15
+ * - an empty list (empty array, or `navigator.languages` unavailable) means no
16
+ * preference: keep all languages
17
+ */
18
+ export function resolvePreferredLanguages(preferred) {
19
+ if (typeof preferred === 'string')
20
+ return [preferred];
21
+ if (preferred)
22
+ return preferred;
23
+ if (typeof navigator !== 'undefined')
24
+ return [...navigator.languages];
25
+ return [];
26
+ }
27
+ /**
28
+ * Creates a filter predicate that keeps the qualities best matching the
29
+ * preferred language(s). The preference is an ordered list (see
30
+ * {@link resolvePreferredLanguages}): earlier entries win, and relatedness
31
+ * (exact > parent > sibling > child) breaks ties within a single preference.
13
32
  *
14
- * @param preferredLanguage BCP 47 language tag, or null to keep all.
33
+ * The best match is computed per period (per unique array reference), so
34
+ * periods with different available languages are handled independently. When no
35
+ * available language relates to any preference, all are kept (playback is never
36
+ * stranded). Qualities not matching the content type, or without a language
37
+ * tag, are always kept.
38
+ *
39
+ * @param preferredLanguage BCP 47 tag, ordered list of tags, or null (which
40
+ * falls back to `navigator.languages`).
15
41
  * @param contentType Only filter qualities matching this content type (e.g. 'audio').
16
42
  */
17
43
  export function createLanguageFilter(preferredLanguage, contentType) {
18
- if (!preferredLanguage)
44
+ const preferences = resolvePreferredLanguages(preferredLanguage);
45
+ if (preferences.length === 0)
19
46
  return null;
20
- // Finds the best language for the period by relevance.
21
- // If no languages are related, the first language will be chosen.
22
- const bestRelevanceForPeriod = memoize((array) => {
23
- const langs = Array.from(array)
24
- .filter((q) => q.contentType === contentType && q.lang)
25
- .map((q) => q.lang);
26
- return languageRelatedness(preferredLanguage, findBestLanguageMatch(preferredLanguage, langs));
47
+ // Ranks a language against the ordered preference list. Earlier preferences
48
+ // dominate (weighted by list position); relatedness breaks ties within one.
49
+ // 0 means the language is unrelated to every preference.
50
+ const scoreLang = (lang) => {
51
+ let best = 0;
52
+ for (let i = 0; i < preferences.length; i++) {
53
+ const rel = languageRelatedness(preferences[i], lang);
54
+ if (rel > 0) {
55
+ best = Math.max(best, (preferences.length - i) * 10 + rel);
56
+ }
57
+ }
58
+ return best;
59
+ };
60
+ // The best score among the period's languages, memoized per unique array.
61
+ const bestScoreForPeriod = memoize((array) => {
62
+ let best = 0;
63
+ for (const quality of Array.from(array)) {
64
+ if (quality.contentType === contentType && quality.lang) {
65
+ best = Math.max(best, scoreLang(quality.lang));
66
+ }
67
+ }
68
+ return best;
27
69
  }, (array) => array, 1);
28
70
  return (quality, _index, array) => {
29
71
  if (quality.contentType !== contentType)
30
72
  return true;
31
73
  if (!quality.lang)
32
74
  return true;
33
- const bestScore = bestRelevanceForPeriod(array);
34
- return languageRelatedness(preferredLanguage, quality.lang) >= bestScore;
75
+ const best = bestScoreForPeriod(array);
76
+ // Nothing matched any preference; keep all rather than strand playback.
77
+ if (best === 0)
78
+ return true;
79
+ return scoreLang(quality.lang) === best;
35
80
  };
36
81
  }
@@ -0,0 +1,91 @@
1
+ import { EventHostImpl, type Maybe, type RequestInitOptions } from '@amazon/vinyl-util';
2
+ import type { TextTrackController, TextTrackEventMap, TextTrackInfo } from './TextTrack';
3
+ import type { ObservableValue } from '@amazon/vinyl-observable';
4
+ import { type VttCueStyle } from './VttCueStyle';
5
+ export interface SidecarTextTrackControllerDeps {
6
+ /**
7
+ * The HTML media element on which to attach the in-band TextTrack
8
+ * representation. Cues for the active text track are added to a TextTrack
9
+ * created via `media.addTextTrack`. Setting this to null disables DOM
10
+ * integration; cues are still loaded and surfaced via events.
11
+ */
12
+ readonly media: HTMLMediaElement | null;
13
+ /**
14
+ * Optional request init options forwarded with each VTT fetch (e.g. CORS).
15
+ */
16
+ readonly requestInit?: Maybe<RequestInitOptions>;
17
+ /**
18
+ * Preferred caption language(s), most-preferred first. A non-null
19
+ * preference auto-selects the best-matching track, re-applied as the track
20
+ * list changes. Changing the preference to null clears the selection
21
+ * (captions off). An initial null (or an absent observable) is "no
22
+ * preference": forced tracks still auto-select until the app makes an
23
+ * explicit choice — it does not force captions off.
24
+ */
25
+ readonly preferredTextLanguage?: ObservableValue<string | readonly string[] | null>;
26
+ /**
27
+ * Layout style applied to each rendered VTTCue (see
28
+ * {@link VttCueStyle}). Read per cue as it is appended, so a change affects
29
+ * subsequently-rendered cues. Absent means no styling (browser defaults).
30
+ */
31
+ readonly cueStyle?: ObservableValue<VttCueStyle | null>;
32
+ }
33
+ /**
34
+ * Manages a sidecar WebVTT-based text track lifecycle:
35
+ *
36
+ * - holds a discovered list of {@link TextTrackInfo}
37
+ * - on activation, fetches the chosen track's WebVTT and pushes cues to a
38
+ * `TextTrack` created on the `HTMLMediaElement`
39
+ * - clears any previously activated cues when switching tracks
40
+ *
41
+ * The controller is intentionally agnostic of HLS/DASH discovery details. Its
42
+ * input is whatever list of {@link TextTrackInfo} entries the manifest layer
43
+ * decides to surface.
44
+ */
45
+ export declare class SidecarTextTrackController extends EventHostImpl<TextTrackEventMap> implements TextTrackController {
46
+ private readonly deps;
47
+ get [Symbol.toStringTag](): string;
48
+ private _tracks;
49
+ private _active;
50
+ private _domTrack;
51
+ private loadAbort;
52
+ private _userSelected;
53
+ private readonly preferredLanguageSub;
54
+ constructor(deps: SidecarTextTrackControllerDeps);
55
+ get textTracks(): readonly TextTrackInfo[];
56
+ get activeTextTrack(): TextTrackInfo | null;
57
+ /**
58
+ * Replaces the discovered text track list. Emits `textTracksChange`. If
59
+ * the previously active track is no longer present, clears the active
60
+ * selection and emits `activeTextTrackChange`.
61
+ */
62
+ setTextTracks(tracks: readonly TextTrackInfo[]): void;
63
+ setActiveTextTrack(id: string | null): void;
64
+ /**
65
+ * Selects the track best matching the preferred language(s), or clears the
66
+ * selection when the preference is null or nothing matches.
67
+ */
68
+ private applyPreferredLanguage;
69
+ /**
70
+ * Applies a selection by id (null clears it) without marking it as an
71
+ * explicit user choice. Shared by setActiveTextTrack and forced auto-select.
72
+ */
73
+ private selectById;
74
+ /**
75
+ * The forced track to auto-select, or null. Prefers the default track's
76
+ * language, else the first forced track.
77
+ */
78
+ private pickForcedTrack;
79
+ suspend(): void;
80
+ resume(): void;
81
+ /**
82
+ * Cancels any in-flight load, clears the DOM TextTrack, and resets state.
83
+ * Called by the host when the underlying media is unloaded.
84
+ */
85
+ dispose(): void;
86
+ private startLoad;
87
+ private ensureDomTrack;
88
+ private appendCues;
89
+ private clearDomTrack;
90
+ }
91
+ //# sourceMappingURL=SidecarTextTrackController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidecarTextTrackController.d.ts","sourceRoot":"","sources":["../../../../src/text/SidecarTextTrackController.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,aAAa,EACb,KAAK,KAAK,EACV,KAAK,kBAAkB,EAE1B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EACR,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EAChB,MAAM,aAAa,CAAA;AAGpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D,OAAO,EAA8B,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAE5E,MAAM,WAAW,8BAA8B;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAEvC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAEhD;;;;;;;OAOG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,eAAe,CAC5C,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CACpC,CAAA;IAED;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;CAC1D;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,0BACT,SAAQ,aAAa,CAAC,iBAAiB,CACvC,YAAW,mBAAmB;IAelB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAbjC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;IAED,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAqB;IAGtC,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAoB;gBAE5B,IAAI,EAAE,8BAA8B;IAQjE,IAAI,UAAU,IAAI,SAAS,aAAa,EAAE,CAEzC;IAED,IAAI,eAAe,IAAI,aAAa,GAAG,IAAI,CAE1C;IAED;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI;IAuBrD,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAM3C;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAiBlB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB,OAAO,IAAI,IAAI;IAMf,MAAM,IAAI,IAAI;IAQd;;;OAGG;IACH,OAAO,IAAI,IAAI;IAUf,OAAO,CAAC,SAAS;IAoCjB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,aAAa;CAexB"}
@@ -0,0 +1,237 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { Abort, equalDeep, EventHostImpl, } from '@amazon/vinyl-util';
6
+ import { loadWebVttCues } from './SidecarTextTrackLoader';
7
+ import { pickPreferredTextTrack } from './pickPreferredTextTrack';
8
+ import { applyVttCueStyle, isVttCue } from './VttCueStyle';
9
+ /**
10
+ * Manages a sidecar WebVTT-based text track lifecycle:
11
+ *
12
+ * - holds a discovered list of {@link TextTrackInfo}
13
+ * - on activation, fetches the chosen track's WebVTT and pushes cues to a
14
+ * `TextTrack` created on the `HTMLMediaElement`
15
+ * - clears any previously activated cues when switching tracks
16
+ *
17
+ * The controller is intentionally agnostic of HLS/DASH discovery details. Its
18
+ * input is whatever list of {@link TextTrackInfo} entries the manifest layer
19
+ * decides to surface.
20
+ */
21
+ export class SidecarTextTrackController extends EventHostImpl {
22
+ deps;
23
+ get [Symbol.toStringTag]() {
24
+ return 'SidecarTextTrackController';
25
+ }
26
+ _tracks = [];
27
+ _active = null;
28
+ _domTrack = null;
29
+ loadAbort = null;
30
+ // True once the app has made an explicit selection (including null). Until
31
+ // then, forced tracks auto-select on discovery.
32
+ _userSelected = false;
33
+ preferredLanguageSub;
34
+ constructor(deps) {
35
+ super();
36
+ this.deps = deps;
37
+ this.preferredLanguageSub =
38
+ deps.preferredTextLanguage?.onData((value, previous) => {
39
+ if (previous !== undefined)
40
+ this.applyPreferredLanguage(value);
41
+ }) ?? null;
42
+ }
43
+ get textTracks() {
44
+ return this._tracks;
45
+ }
46
+ get activeTextTrack() {
47
+ return this._active;
48
+ }
49
+ /**
50
+ * Replaces the discovered text track list. Emits `textTracksChange`. If
51
+ * the previously active track is no longer present, clears the active
52
+ * selection and emits `activeTextTrackChange`.
53
+ */
54
+ setTextTracks(tracks) {
55
+ if (equalDeep(this._tracks, tracks))
56
+ return;
57
+ const previous = this._tracks;
58
+ this._tracks = tracks;
59
+ this.dispatch('textTracksChange', { previous, current: tracks });
60
+ if (this._active && !tracks.some((t) => t.id === this._active.id)) {
61
+ // Clear a now-absent selection, but keep _userSelected intact.
62
+ this.selectById(null);
63
+ }
64
+ // A preferred language re-selects the best match as the list changes;
65
+ // otherwise auto-show forced captions until the app makes an explicit
66
+ // choice.
67
+ const preferred = this.deps.preferredTextLanguage?.value;
68
+ if (preferred != null) {
69
+ this.applyPreferredLanguage(preferred);
70
+ }
71
+ else if (!this._userSelected && !this._active) {
72
+ const forced = this.pickForcedTrack(tracks);
73
+ if (forced)
74
+ this.selectById(forced.id);
75
+ }
76
+ }
77
+ setActiveTextTrack(id) {
78
+ // An explicit app choice; stop auto-selecting forced tracks.
79
+ this._userSelected = true;
80
+ this.selectById(id);
81
+ }
82
+ /**
83
+ * Selects the track best matching the preferred language(s), or clears the
84
+ * selection when the preference is null or nothing matches.
85
+ */
86
+ applyPreferredLanguage(preferred) {
87
+ const target = pickPreferredTextTrack(this._tracks, preferred);
88
+ this.setActiveTextTrack(target?.id ?? null);
89
+ }
90
+ /**
91
+ * Applies a selection by id (null clears it) without marking it as an
92
+ * explicit user choice. Shared by setActiveTextTrack and forced auto-select.
93
+ */
94
+ selectById(id) {
95
+ const next = id == null ? null : this._tracks.find((t) => t.id === id);
96
+ if (id != null && !next)
97
+ return; // unknown id is a no-op
98
+ const target = next ?? null;
99
+ if (target?.id === this._active?.id)
100
+ return;
101
+ const previous = this._active;
102
+ this.clearDomTrack();
103
+ this.loadAbort?.abort();
104
+ this.loadAbort = null;
105
+ this._active = target;
106
+ this.dispatch('activeTextTrackChange', {
107
+ previous,
108
+ current: target,
109
+ });
110
+ if (target)
111
+ this.startLoad(target);
112
+ }
113
+ /**
114
+ * The forced track to auto-select, or null. Prefers the default track's
115
+ * language, else the first forced track.
116
+ */
117
+ pickForcedTrack(tracks) {
118
+ const forced = tracks.filter((t) => t.forced);
119
+ if (forced.length === 0)
120
+ return null;
121
+ const defaultLang = tracks.find((t) => t.default)?.language;
122
+ if (defaultLang != null) {
123
+ const match = forced.find((t) => t.language === defaultLang);
124
+ if (match)
125
+ return match;
126
+ }
127
+ return forced[0];
128
+ }
129
+ suspend() {
130
+ this.loadAbort?.abort();
131
+ this.loadAbort = null;
132
+ this.clearDomTrack();
133
+ }
134
+ resume() {
135
+ // Rebuild only when an active selection exists and it isn't already
136
+ // rendering (clearDomTrack/suspend nulls _domTrack; setActiveTextTrack
137
+ // sets it).
138
+ if (!this._active || this._domTrack)
139
+ return;
140
+ this.startLoad(this._active);
141
+ }
142
+ /**
143
+ * Cancels any in-flight load, clears the DOM TextTrack, and resets state.
144
+ * Called by the host when the underlying media is unloaded.
145
+ */
146
+ dispose() {
147
+ super.dispose();
148
+ this.preferredLanguageSub?.();
149
+ this.loadAbort?.abort();
150
+ this.loadAbort = null;
151
+ this.clearDomTrack();
152
+ this._tracks = [];
153
+ this._active = null;
154
+ }
155
+ startLoad(track) {
156
+ const media = this.deps.media;
157
+ // Without a media element there's nowhere to render cues and no
158
+ // playhead to drive segment selection, so skip fetching entirely.
159
+ // The active-selection state still surfaces via events.
160
+ if (!media)
161
+ return;
162
+ const abort = new Abort();
163
+ this.loadAbort = abort;
164
+ // Create the DOM TextTrack up front so cues render incrementally as
165
+ // segments arrive rather than after the whole playlist loads.
166
+ const dom = this.ensureDomTrack(media, track);
167
+ const CueCtor = getVttCueConstructor();
168
+ // Adjacent HLS caption segments commonly repeat the boundary cue in
169
+ // both segments (packagers do this so a client that only fetches one
170
+ // segment still renders the overlapping cue). Track seen keys per
171
+ // active load so we don't push the same cue twice.
172
+ const seen = new Set();
173
+ loadWebVttCues(track.uri, {
174
+ abort,
175
+ requestInit: this.deps.requestInit,
176
+ variables: track.variables,
177
+ getCurrentTime: () => media.currentTime,
178
+ onCues: (cues) => {
179
+ if (abort.aborted())
180
+ return;
181
+ if (CueCtor)
182
+ this.appendCues(dom, CueCtor, cues, seen);
183
+ },
184
+ }).catch((error) => {
185
+ if (abort.aborted())
186
+ return;
187
+ this.dispatch('textTrackError', {
188
+ track,
189
+ error: error instanceof Error ? error : new Error(String(error)),
190
+ });
191
+ });
192
+ }
193
+ ensureDomTrack(media, track) {
194
+ const dom = media.addTextTrack(track.kind, track.label, track.language ?? undefined);
195
+ dom.mode = 'showing';
196
+ this._domTrack = dom;
197
+ return dom;
198
+ }
199
+ appendCues(dom, CueCtor, cues, seen) {
200
+ for (const cue of cues) {
201
+ const key = `${cue.startTime}|${cue.endTime}|${cue.text}`;
202
+ if (seen.has(key))
203
+ continue;
204
+ seen.add(key);
205
+ const domCue = new CueCtor(cue.startTime, cue.endTime, cue.text);
206
+ if (cue.id != null)
207
+ domCue.id = cue.id;
208
+ // Apply the configured cue layout style (e.g. the default `size: 90`
209
+ // inset so long lines don't clip in fullscreen, which `::cue` CSS
210
+ // cannot fix). Only VTTCues carry these properties.
211
+ const cueStyle = this.deps.cueStyle?.value;
212
+ if (cueStyle && isVttCue(domCue)) {
213
+ applyVttCueStyle(domCue, cueStyle);
214
+ }
215
+ dom.addCue(domCue);
216
+ }
217
+ }
218
+ clearDomTrack() {
219
+ const dom = this._domTrack;
220
+ if (!dom)
221
+ return;
222
+ dom.mode = 'disabled';
223
+ // Best-effort: remove any cues we added so a future activation starts
224
+ // from a clean slate. Some platforms recreate the underlying TextTrack
225
+ // when the source changes; this is defensive.
226
+ if (dom.cues) {
227
+ const all = Array.from(dom.cues);
228
+ for (const cue of all)
229
+ dom.removeCue(cue);
230
+ }
231
+ this._domTrack = null;
232
+ }
233
+ }
234
+ function getVttCueConstructor() {
235
+ const g = globalThis;
236
+ return g.VTTCue ?? g.TextTrackCue ?? null;
237
+ }
@@ -0,0 +1,60 @@
1
+ import type { Maybe, ReadonlyAbort, RequestInitOptions } from '@amazon/vinyl-util';
2
+ import { type WebVttCue } from './parseWebVtt';
3
+ /**
4
+ * Seconds ahead of the playhead to keep cues buffered. Mirrors the media
5
+ * pipeline's default HLS `minBufferTime` so captions stay in step with the
6
+ * audio/video buffer.
7
+ */
8
+ export declare const DEFAULT_TEXT_LOOK_AHEAD = 10;
9
+ /**
10
+ * Seconds behind the playhead to keep cues buffered. Small window so that a
11
+ * short rewind (e.g. accidental skip-back) doesn't force a refetch.
12
+ */
13
+ export declare const DEFAULT_TEXT_LOOK_BEHIND = 2;
14
+ export interface LoadWebVttCuesOptions {
15
+ readonly abort?: Maybe<ReadonlyAbort>;
16
+ readonly requestInit?: Maybe<RequestInitOptions>;
17
+ /**
18
+ * HLS EXT-X-DEFINE variables to make available for `IMPORT` and for
19
+ * substitution of segment URIs when loading from an HLS media playlist.
20
+ */
21
+ readonly variables?: Maybe<Readonly<Record<string, string>>>;
22
+ /**
23
+ * Invoked with each batch of cues as soon as they are parsed. Called once
24
+ * per HLS segment, or once for a direct `.vtt` document.
25
+ */
26
+ readonly onCues: (cues: readonly WebVttCue[]) => void;
27
+ /**
28
+ * Returns the current playback time (seconds on the presentation
29
+ * timeline). Used to fetch caption segments in a window around the
30
+ * playhead rather than draining the entire playlist up front.
31
+ */
32
+ readonly getCurrentTime: () => number;
33
+ /**
34
+ * Seconds ahead of the playhead to keep buffered. Default 10s.
35
+ */
36
+ readonly lookAhead?: Maybe<number>;
37
+ /**
38
+ * Seconds behind the playhead to keep buffered. Default 2s.
39
+ */
40
+ readonly lookBehind?: Maybe<number>;
41
+ }
42
+ /**
43
+ * Loads WebVTT cues from a URI, streaming them by playhead position.
44
+ *
45
+ * Two URI shapes are accepted:
46
+ * - Direct `.vtt` document: fetched once and delivered via `onCues`.
47
+ * - HLS media playlist (`.m3u8`): the playlist is parsed, then segments
48
+ * whose time range overlaps the buffer window around `getCurrentTime()`
49
+ * are fetched (closest to the playhead first), one at a time. Each
50
+ * segment's cues are delivered via `onCues` as it is parsed.
51
+ *
52
+ * Cue start/end times are expected to already be on the presentation
53
+ * timeline (Shaka packager's default WebVTT output), so segments are joined
54
+ * without offset.
55
+ *
56
+ * The returned promise resolves once every segment has been fetched, or the
57
+ * abort signal fires. Fetch failures reject the promise.
58
+ */
59
+ export declare function loadWebVttCues(uri: string, options: LoadWebVttCuesOptions): Promise<void>;
60
+ //# sourceMappingURL=SidecarTextTrackLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidecarTextTrackLoader.d.ts","sourceRoot":"","sources":["../../../../src/text/SidecarTextTrackLoader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,KAAK,EACL,aAAa,EACb,kBAAkB,EACrB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAA;AAQzC,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAEhD;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IAE5D;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,KAAK,IAAI,CAAA;IAErD;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAA;IAErC;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAElC;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CACtC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,qBAAqB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAsCf"}
@@ -0,0 +1,144 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { requestWithRetry, resolveUrl, sleep } from '@amazon/vinyl-util';
6
+ import { parseMediaPlaylist } from '@amazon/vinyl-hls-parser';
7
+ import { parseWebVtt } from './parseWebVtt';
8
+ /**
9
+ * Seconds ahead of the playhead to keep cues buffered. Mirrors the media
10
+ * pipeline's default HLS `minBufferTime` so captions stay in step with the
11
+ * audio/video buffer.
12
+ */
13
+ export const DEFAULT_TEXT_LOOK_AHEAD = 10;
14
+ /**
15
+ * Seconds behind the playhead to keep cues buffered. Small window so that a
16
+ * short rewind (e.g. accidental skip-back) doesn't force a refetch.
17
+ */
18
+ export const DEFAULT_TEXT_LOOK_BEHIND = 2;
19
+ /**
20
+ * Polling interval, in seconds, when no segment is currently in the buffer
21
+ * window. Short enough to feel responsive after a seek without spinning.
22
+ */
23
+ const IDLE_POLL_SECONDS = 0.25;
24
+ /**
25
+ * Loads WebVTT cues from a URI, streaming them by playhead position.
26
+ *
27
+ * Two URI shapes are accepted:
28
+ * - Direct `.vtt` document: fetched once and delivered via `onCues`.
29
+ * - HLS media playlist (`.m3u8`): the playlist is parsed, then segments
30
+ * whose time range overlaps the buffer window around `getCurrentTime()`
31
+ * are fetched (closest to the playhead first), one at a time. Each
32
+ * segment's cues are delivered via `onCues` as it is parsed.
33
+ *
34
+ * Cue start/end times are expected to already be on the presentation
35
+ * timeline (Shaka packager's default WebVTT output), so segments are joined
36
+ * without offset.
37
+ *
38
+ * The returned promise resolves once every segment has been fetched, or the
39
+ * abort signal fires. Fetch failures reject the promise.
40
+ */
41
+ export async function loadWebVttCues(uri, options) {
42
+ const { abort, requestInit, variables, onCues, getCurrentTime } = options;
43
+ const lookAhead = options.lookAhead ?? DEFAULT_TEXT_LOOK_AHEAD;
44
+ const lookBehind = options.lookBehind ?? DEFAULT_TEXT_LOOK_BEHIND;
45
+ const init = requestInit ?? undefined;
46
+ if (looksLikeMediaPlaylist(uri)) {
47
+ return streamMediaPlaylist({
48
+ uri,
49
+ init,
50
+ abort,
51
+ variables: variables ?? undefined,
52
+ onCues,
53
+ getCurrentTime,
54
+ lookAhead,
55
+ lookBehind,
56
+ });
57
+ }
58
+ const response = await requestWithRetry(uri, init, { abort });
59
+ const contentType = (response.headers.get('content-type') ?? '').toLowerCase();
60
+ const body = await response.text();
61
+ if (contentType.includes('mpegurl') || body.startsWith('#EXTM3U')) {
62
+ return streamMediaPlaylistText({
63
+ text: body,
64
+ baseUrl: response.url || uri,
65
+ init,
66
+ abort,
67
+ variables: variables ?? undefined,
68
+ onCues,
69
+ getCurrentTime,
70
+ lookAhead,
71
+ lookBehind,
72
+ });
73
+ }
74
+ const cues = parseWebVtt(body).cues;
75
+ if (cues.length > 0)
76
+ onCues(cues);
77
+ }
78
+ function looksLikeMediaPlaylist(uri) {
79
+ const path = uri.split(/[?#]/)[0];
80
+ return path.toLowerCase().endsWith('.m3u8');
81
+ }
82
+ async function streamMediaPlaylist(ctx) {
83
+ const response = await requestWithRetry(ctx.uri, ctx.init, {
84
+ abort: ctx.abort,
85
+ });
86
+ const text = await response.text();
87
+ return streamMediaPlaylistText({
88
+ ...ctx,
89
+ text,
90
+ baseUrl: response.url || ctx.uri,
91
+ });
92
+ }
93
+ async function streamMediaPlaylistText(ctx) {
94
+ const playlist = parseMediaPlaylist(ctx.text, ctx.variables);
95
+ const segments = playlist.segments;
96
+ // Precompute each segment's [start, end] on the presentation timeline.
97
+ const ranges = [];
98
+ let cursor = 0;
99
+ for (const seg of segments) {
100
+ ranges.push({ start: cursor, end: cursor + seg.duration });
101
+ cursor += seg.duration;
102
+ }
103
+ const pending = new Set(segments.map((_, i) => i));
104
+ while (pending.size > 0 && !ctx.abort?.aborted()) {
105
+ const idx = pickInWindow(pending, ranges, ctx);
106
+ if (idx < 0) {
107
+ await sleep(IDLE_POLL_SECONDS, ctx.abort).catch(() => { });
108
+ continue;
109
+ }
110
+ pending.delete(idx);
111
+ const segUri = resolveUrl(segments[idx].uri, ctx.baseUrl);
112
+ const res = await requestWithRetry(segUri, ctx.init, {
113
+ abort: ctx.abort,
114
+ });
115
+ const body = await res.text();
116
+ const cues = parseWebVtt(body).cues;
117
+ if (cues.length > 0)
118
+ ctx.onCues(cues);
119
+ }
120
+ }
121
+ /**
122
+ * Selects the pending segment closest to the playhead whose time range
123
+ * overlaps [now - lookBehind, now + lookAhead]. Returns -1 when no pending
124
+ * segment intersects the window — the caller should sleep and re-check.
125
+ */
126
+ function pickInWindow(pending, ranges, ctx) {
127
+ const now = ctx.getCurrentTime();
128
+ const windowStart = now - ctx.lookBehind;
129
+ const windowEnd = now + ctx.lookAhead;
130
+ let best = -1;
131
+ let bestDist = Number.POSITIVE_INFINITY;
132
+ for (const idx of pending) {
133
+ const r = ranges[idx];
134
+ if (r.end < windowStart || r.start > windowEnd)
135
+ continue;
136
+ const mid = (r.start + r.end) / 2;
137
+ const dist = Math.abs(mid - now);
138
+ if (dist < bestDist) {
139
+ bestDist = dist;
140
+ best = idx;
141
+ }
142
+ }
143
+ return best;
144
+ }