@amazon/vinyl 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/dist/index.cjs +24 -6
  2. package/dist/index.cjs.map +2 -2
  3. package/dist/index.js +33 -13
  4. package/dist/index.js.map +3 -3
  5. package/dist/test/integ.es5.js +62 -62
  6. package/dist/test/integ.js +119 -6
  7. package/dist/test/integ.js.map +2 -2
  8. package/dist/types/current/ad/AdBreakInfo.d.ts +160 -0
  9. package/dist/types/current/ad/AdBreakInfo.d.ts.map +1 -0
  10. package/dist/types/current/ad/AdBreakInfo.js +5 -0
  11. package/dist/types/current/ad/AdController.d.ts +229 -0
  12. package/dist/types/current/ad/AdController.d.ts.map +1 -0
  13. package/dist/types/current/ad/AdController.js +19 -0
  14. package/dist/types/current/ad/AdControllerImpl.d.ts +162 -0
  15. package/dist/types/current/ad/AdControllerImpl.d.ts.map +1 -0
  16. package/dist/types/current/ad/AdControllerImpl.js +741 -0
  17. package/dist/types/current/ad/AdError.d.ts +6 -0
  18. package/dist/types/current/ad/AdError.d.ts.map +1 -0
  19. package/dist/types/current/ad/AdError.js +14 -0
  20. package/dist/types/current/ad/AdsProvider.d.ts +28 -0
  21. package/dist/types/current/ad/AdsProvider.d.ts.map +1 -0
  22. package/dist/types/current/ad/AdsProvider.js +5 -0
  23. package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  24. package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts.map +1 -0
  25. package/dist/types/current/ad/defaultAdLoadOptionsResolver.js +26 -0
  26. package/dist/types/current/ad/discoverHlsInterstitials.d.ts +22 -0
  27. package/dist/types/current/ad/discoverHlsInterstitials.d.ts.map +1 -0
  28. package/dist/types/current/ad/discoverHlsInterstitials.js +248 -0
  29. package/dist/types/current/drm/DrmControllerImpl.d.ts +6 -0
  30. package/dist/types/current/drm/DrmControllerImpl.d.ts.map +1 -1
  31. package/dist/types/current/drm/DrmControllerImpl.js +23 -1
  32. package/dist/types/current/playback/PlaybackControllerImpl.d.ts +1 -1
  33. package/dist/types/current/playback/createStallDetector.d.ts +43 -0
  34. package/dist/types/current/playback/createStallDetector.d.ts.map +1 -0
  35. package/dist/types/current/playback/createStallDetector.js +101 -0
  36. package/dist/types/current/playback/createStallMonitor.d.ts +45 -0
  37. package/dist/types/current/playback/createStallMonitor.d.ts.map +1 -0
  38. package/dist/types/current/playback/createStallMonitor.js +99 -0
  39. package/dist/types/current/streaming/AudioOptions.d.ts +66 -0
  40. package/dist/types/current/streaming/AudioOptions.d.ts.map +1 -0
  41. package/dist/types/current/streaming/AudioOptions.js +19 -0
  42. package/dist/types/current/streaming/LoadMetric.d.ts +72 -0
  43. package/dist/types/current/streaming/LoadMetric.d.ts.map +1 -0
  44. package/dist/types/current/streaming/LoadMetric.js +5 -0
  45. package/dist/types/current/streaming/ManifestControllerImpl.d.ts +43 -0
  46. package/dist/types/current/streaming/ManifestControllerImpl.d.ts.map +1 -0
  47. package/dist/types/current/streaming/ManifestControllerImpl.js +104 -0
  48. package/dist/types/current/streaming/buffering/codecDenylist.d.ts +23 -0
  49. package/dist/types/current/streaming/buffering/codecDenylist.d.ts.map +1 -0
  50. package/dist/types/current/streaming/buffering/codecDenylist.js +62 -0
  51. package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts +30 -0
  52. package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts.map +1 -0
  53. package/dist/types/current/streaming/createAllowedContentTypesValue.js +43 -0
  54. package/dist/types/current/streaming/createTimelineContentTypesValue.d.ts +21 -0
  55. package/dist/types/current/streaming/createTimelineContentTypesValue.d.ts.map +1 -0
  56. package/dist/types/current/streaming/createTimelineContentTypesValue.js +25 -0
  57. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  58. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts.map +1 -0
  59. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.js +75 -0
  60. package/dist/types/current/text/HtmlTextTrackRenderer.d.ts +60 -0
  61. package/dist/types/current/text/HtmlTextTrackRenderer.d.ts.map +1 -0
  62. package/dist/types/current/text/HtmlTextTrackRenderer.js +231 -0
  63. package/dist/types/current/text/SidecarTextTrackController.d.ts +103 -0
  64. package/dist/types/current/text/SidecarTextTrackController.d.ts.map +1 -0
  65. package/dist/types/current/text/SidecarTextTrackController.js +250 -0
  66. package/dist/types/current/text/SidecarTextTrackLoader.d.ts +65 -0
  67. package/dist/types/current/text/SidecarTextTrackLoader.d.ts.map +1 -0
  68. package/dist/types/current/text/SidecarTextTrackLoader.js +150 -0
  69. package/dist/types/current/text/TextTrack.d.ts +179 -0
  70. package/dist/types/current/text/TextTrack.d.ts.map +1 -0
  71. package/dist/types/current/text/TextTrack.js +29 -0
  72. package/dist/types/current/text/TextTrackRenderer.d.ts +24 -0
  73. package/dist/types/current/text/TextTrackRenderer.d.ts.map +1 -0
  74. package/dist/types/current/text/TextTrackRenderer.js +5 -0
  75. package/dist/types/current/text/VttCueStyle.d.ts +41 -0
  76. package/dist/types/current/text/VttCueStyle.d.ts.map +1 -0
  77. package/dist/types/current/text/VttCueStyle.js +45 -0
  78. package/dist/types/current/text/discoverDashTextTracks.d.ts +24 -0
  79. package/dist/types/current/text/discoverDashTextTracks.d.ts.map +1 -0
  80. package/dist/types/current/text/discoverDashTextTracks.js +110 -0
  81. package/dist/types/current/text/discoverHlsTextTracks.d.ts +19 -0
  82. package/dist/types/current/text/discoverHlsTextTracks.d.ts.map +1 -0
  83. package/dist/types/current/text/discoverHlsTextTracks.js +49 -0
  84. package/dist/types/current/text/mediaTextTrackProvider.d.ts +34 -0
  85. package/dist/types/current/text/mediaTextTrackProvider.d.ts.map +1 -0
  86. package/dist/types/current/text/mediaTextTrackProvider.js +42 -0
  87. package/dist/types/current/text/parseWebVtt.d.ts +60 -0
  88. package/dist/types/current/text/parseWebVtt.d.ts.map +1 -0
  89. package/dist/types/current/text/parseWebVtt.js +249 -0
  90. package/dist/types/current/text/pickPreferredTextTrack.d.ts +15 -0
  91. package/dist/types/current/text/pickPreferredTextTrack.d.ts.map +1 -0
  92. package/dist/types/current/text/pickPreferredTextTrack.js +71 -0
  93. package/dist/types/current/track/SeekRange.d.ts +9 -0
  94. package/dist/types/current/track/SeekRange.d.ts.map +1 -0
  95. package/dist/types/current/track/SeekRange.js +5 -0
  96. package/dist/types/current/track/hls/HlsManifestData.d.ts +19 -0
  97. package/dist/types/current/track/hls/HlsManifestData.d.ts.map +1 -0
  98. package/dist/types/current/track/hls/HlsManifestData.js +5 -0
  99. package/dist/types/current/track/hls/createHlsManifestProvider.d.ts +6 -0
  100. package/dist/types/current/track/hls/createHlsManifestProvider.d.ts.map +1 -0
  101. package/dist/types/current/track/hls/createHlsManifestProvider.js +9 -0
  102. package/dist/types/current/track/inferLoadOptionsFromUri.d.ts +15 -0
  103. package/dist/types/current/track/inferLoadOptionsFromUri.d.ts.map +1 -0
  104. package/dist/types/current/track/inferLoadOptionsFromUri.js +55 -0
  105. package/dist/types/current/track/mse/MseTrack.d.ts +0 -1
  106. package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
  107. package/dist/types/current/track/mse/MseTrack.js +4 -5
  108. package/dist/types/current/tsconfig.tsbuildinfo +1 -1
  109. package/dist/types/current/util/media/codecOverrides.d.ts +33 -0
  110. package/dist/types/current/util/media/codecOverrides.d.ts.map +1 -0
  111. package/dist/types/current/util/media/codecOverrides.js +37 -0
  112. package/dist/types/current/util/media/codecSupport.d.ts +6 -0
  113. package/dist/types/current/util/media/codecSupport.d.ts.map +1 -0
  114. package/dist/types/current/util/media/codecSupport.js +17 -0
  115. package/dist/types/current/util/media/mimeType.d.ts +8 -0
  116. package/dist/types/current/util/media/mimeType.d.ts.map +1 -0
  117. package/dist/types/current/util/media/mimeType.js +13 -0
  118. package/dist/types/ts3.7/ad/AdBreakInfo.d.ts +160 -0
  119. package/dist/types/ts3.7/ad/AdController.d.ts +243 -0
  120. package/dist/types/ts3.7/ad/AdControllerImpl.d.ts +162 -0
  121. package/dist/types/ts3.7/ad/AdError.d.ts +6 -0
  122. package/dist/types/ts3.7/ad/AdsProvider.d.ts +28 -0
  123. package/dist/types/ts3.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  124. package/dist/types/ts3.7/ad/discoverHlsInterstitials.d.ts +22 -0
  125. package/dist/types/ts3.7/drm/DrmControllerImpl.d.ts +6 -0
  126. package/dist/types/ts3.7/playback/PlaybackControllerImpl.d.ts +1 -1
  127. package/dist/types/ts3.7/playback/createStallDetector.d.ts +43 -0
  128. package/dist/types/ts3.7/playback/createStallMonitor.d.ts +45 -0
  129. package/dist/types/ts3.7/streaming/AudioOptions.d.ts +66 -0
  130. package/dist/types/ts3.7/streaming/LoadMetric.d.ts +72 -0
  131. package/dist/types/ts3.7/streaming/ManifestControllerImpl.d.ts +40 -0
  132. package/dist/types/ts3.7/streaming/buffering/codecDenylist.d.ts +23 -0
  133. package/dist/types/ts3.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
  134. package/dist/types/ts3.7/streaming/createTimelineContentTypesValue.d.ts +21 -0
  135. package/dist/types/ts3.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  136. package/dist/types/ts3.7/text/HtmlTextTrackRenderer.d.ts +60 -0
  137. package/dist/types/ts3.7/text/SidecarTextTrackController.d.ts +103 -0
  138. package/dist/types/ts3.7/text/SidecarTextTrackLoader.d.ts +65 -0
  139. package/dist/types/ts3.7/text/TextTrack.d.ts +183 -0
  140. package/dist/types/ts3.7/text/TextTrackRenderer.d.ts +24 -0
  141. package/dist/types/ts3.7/text/VttCueStyle.d.ts +41 -0
  142. package/dist/types/ts3.7/text/discoverDashTextTracks.d.ts +24 -0
  143. package/dist/types/ts3.7/text/discoverHlsTextTracks.d.ts +19 -0
  144. package/dist/types/ts3.7/text/mediaTextTrackProvider.d.ts +34 -0
  145. package/dist/types/ts3.7/text/parseWebVtt.d.ts +60 -0
  146. package/dist/types/ts3.7/text/pickPreferredTextTrack.d.ts +15 -0
  147. package/dist/types/ts3.7/track/SeekRange.d.ts +9 -0
  148. package/dist/types/ts3.7/track/hls/HlsManifestData.d.ts +19 -0
  149. package/dist/types/ts3.7/track/hls/createHlsManifestProvider.d.ts +6 -0
  150. package/dist/types/ts3.7/track/inferLoadOptionsFromUri.d.ts +15 -0
  151. package/dist/types/ts3.7/track/mse/MseTrack.d.ts +0 -1
  152. package/dist/types/ts3.7/util/media/codecOverrides.d.ts +33 -0
  153. package/dist/types/ts3.7/util/media/codecSupport.d.ts +6 -0
  154. package/dist/types/ts3.7/util/media/mimeType.d.ts +8 -0
  155. package/dist/types/ts4.1/ad/AdBreakInfo.d.ts +160 -0
  156. package/dist/types/ts4.1/ad/AdController.d.ts +243 -0
  157. package/dist/types/ts4.1/ad/AdControllerImpl.d.ts +162 -0
  158. package/dist/types/ts4.1/ad/AdError.d.ts +6 -0
  159. package/dist/types/ts4.1/ad/AdsProvider.d.ts +28 -0
  160. package/dist/types/ts4.1/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  161. package/dist/types/ts4.1/ad/discoverHlsInterstitials.d.ts +22 -0
  162. package/dist/types/ts4.1/drm/DrmControllerImpl.d.ts +6 -0
  163. package/dist/types/ts4.1/playback/PlaybackControllerImpl.d.ts +1 -1
  164. package/dist/types/ts4.1/playback/createStallDetector.d.ts +43 -0
  165. package/dist/types/ts4.1/playback/createStallMonitor.d.ts +45 -0
  166. package/dist/types/ts4.1/streaming/AudioOptions.d.ts +66 -0
  167. package/dist/types/ts4.1/streaming/LoadMetric.d.ts +72 -0
  168. package/dist/types/ts4.1/streaming/ManifestControllerImpl.d.ts +40 -0
  169. package/dist/types/ts4.1/streaming/buffering/codecDenylist.d.ts +23 -0
  170. package/dist/types/ts4.1/streaming/createAllowedContentTypesValue.d.ts +30 -0
  171. package/dist/types/ts4.1/streaming/createTimelineContentTypesValue.d.ts +21 -0
  172. package/dist/types/ts4.1/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  173. package/dist/types/ts4.1/text/HtmlTextTrackRenderer.d.ts +60 -0
  174. package/dist/types/ts4.1/text/SidecarTextTrackController.d.ts +104 -0
  175. package/dist/types/ts4.1/text/SidecarTextTrackLoader.d.ts +65 -0
  176. package/dist/types/ts4.1/text/TextTrack.d.ts +183 -0
  177. package/dist/types/ts4.1/text/TextTrackRenderer.d.ts +24 -0
  178. package/dist/types/ts4.1/text/VttCueStyle.d.ts +41 -0
  179. package/dist/types/ts4.1/text/discoverDashTextTracks.d.ts +24 -0
  180. package/dist/types/ts4.1/text/discoverHlsTextTracks.d.ts +19 -0
  181. package/dist/types/ts4.1/text/mediaTextTrackProvider.d.ts +34 -0
  182. package/dist/types/ts4.1/text/parseWebVtt.d.ts +60 -0
  183. package/dist/types/ts4.1/text/pickPreferredTextTrack.d.ts +15 -0
  184. package/dist/types/ts4.1/track/SeekRange.d.ts +9 -0
  185. package/dist/types/ts4.1/track/hls/HlsManifestData.d.ts +19 -0
  186. package/dist/types/ts4.1/track/hls/createHlsManifestProvider.d.ts +6 -0
  187. package/dist/types/ts4.1/track/inferLoadOptionsFromUri.d.ts +15 -0
  188. package/dist/types/ts4.1/track/mse/MseTrack.d.ts +0 -1
  189. package/dist/types/ts4.1/util/media/codecOverrides.d.ts +33 -0
  190. package/dist/types/ts4.1/util/media/codecSupport.d.ts +6 -0
  191. package/dist/types/ts4.1/util/media/mimeType.d.ts +8 -0
  192. package/dist/types/ts4.7/ad/AdBreakInfo.d.ts +160 -0
  193. package/dist/types/ts4.7/ad/AdController.d.ts +243 -0
  194. package/dist/types/ts4.7/ad/AdControllerImpl.d.ts +162 -0
  195. package/dist/types/ts4.7/ad/AdError.d.ts +6 -0
  196. package/dist/types/ts4.7/ad/AdsProvider.d.ts +28 -0
  197. package/dist/types/ts4.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  198. package/dist/types/ts4.7/ad/discoverHlsInterstitials.d.ts +22 -0
  199. package/dist/types/ts4.7/drm/DrmControllerImpl.d.ts +6 -0
  200. package/dist/types/ts4.7/playback/PlaybackControllerImpl.d.ts +1 -1
  201. package/dist/types/ts4.7/playback/createStallDetector.d.ts +43 -0
  202. package/dist/types/ts4.7/playback/createStallMonitor.d.ts +45 -0
  203. package/dist/types/ts4.7/streaming/AudioOptions.d.ts +66 -0
  204. package/dist/types/ts4.7/streaming/LoadMetric.d.ts +72 -0
  205. package/dist/types/ts4.7/streaming/ManifestControllerImpl.d.ts +43 -0
  206. package/dist/types/ts4.7/streaming/buffering/codecDenylist.d.ts +23 -0
  207. package/dist/types/ts4.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
  208. package/dist/types/ts4.7/streaming/createTimelineContentTypesValue.d.ts +21 -0
  209. package/dist/types/ts4.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  210. package/dist/types/ts4.7/text/HtmlTextTrackRenderer.d.ts +60 -0
  211. package/dist/types/ts4.7/text/SidecarTextTrackController.d.ts +103 -0
  212. package/dist/types/ts4.7/text/SidecarTextTrackLoader.d.ts +65 -0
  213. package/dist/types/ts4.7/text/TextTrack.d.ts +183 -0
  214. package/dist/types/ts4.7/text/TextTrackRenderer.d.ts +24 -0
  215. package/dist/types/ts4.7/text/VttCueStyle.d.ts +41 -0
  216. package/dist/types/ts4.7/text/discoverDashTextTracks.d.ts +24 -0
  217. package/dist/types/ts4.7/text/discoverHlsTextTracks.d.ts +19 -0
  218. package/dist/types/ts4.7/text/mediaTextTrackProvider.d.ts +34 -0
  219. package/dist/types/ts4.7/text/parseWebVtt.d.ts +60 -0
  220. package/dist/types/ts4.7/text/pickPreferredTextTrack.d.ts +15 -0
  221. package/dist/types/ts4.7/track/SeekRange.d.ts +9 -0
  222. package/dist/types/ts4.7/track/hls/HlsManifestData.d.ts +19 -0
  223. package/dist/types/ts4.7/track/hls/createHlsManifestProvider.d.ts +6 -0
  224. package/dist/types/ts4.7/track/inferLoadOptionsFromUri.d.ts +15 -0
  225. package/dist/types/ts4.7/track/mse/MseTrack.d.ts +0 -1
  226. package/dist/types/ts4.7/util/media/codecOverrides.d.ts +33 -0
  227. package/dist/types/ts4.7/util/media/codecSupport.d.ts +6 -0
  228. package/dist/types/ts4.7/util/media/mimeType.d.ts +8 -0
  229. package/dist/unit/types/current/ad/AdController.test.d.ts +2 -0
  230. package/dist/unit/types/current/ad/AdController.test.d.ts.map +1 -0
  231. package/dist/unit/types/current/ad/AdController.test.js +10 -0
  232. package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts +2 -0
  233. package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts.map +1 -0
  234. package/dist/unit/types/current/ad/AdControllerImpl.test.js +1654 -0
  235. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts +2 -0
  236. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts.map +1 -0
  237. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.js +56 -0
  238. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts +2 -0
  239. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts.map +1 -0
  240. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.js +757 -0
  241. package/dist/unit/types/current/drm/DrmControllerImpl.test.js +96 -2
  242. package/dist/unit/types/current/playback/createStallDetector.test.d.ts +2 -0
  243. package/dist/unit/types/current/playback/createStallDetector.test.d.ts.map +1 -0
  244. package/dist/unit/types/current/playback/createStallDetector.test.js +163 -0
  245. package/dist/unit/types/current/playback/createStallMonitor.test.d.ts +2 -0
  246. package/dist/unit/types/current/playback/createStallMonitor.test.d.ts.map +1 -0
  247. package/dist/unit/types/current/playback/createStallMonitor.test.js +163 -0
  248. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts +2 -0
  249. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts.map +1 -0
  250. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.js +197 -0
  251. package/dist/unit/types/current/streaming/MseTrack.test.js +15 -0
  252. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts +2 -0
  253. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts.map +1 -0
  254. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.js +56 -0
  255. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts +2 -0
  256. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts.map +1 -0
  257. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.js +77 -0
  258. package/dist/unit/types/current/streaming/createTimelineContentTypesValue.test.d.ts +2 -0
  259. package/dist/unit/types/current/streaming/createTimelineContentTypesValue.test.d.ts.map +1 -0
  260. package/dist/unit/types/current/streaming/createTimelineContentTypesValue.test.js +57 -0
  261. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts +2 -0
  262. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts.map +1 -0
  263. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.js +99 -0
  264. package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.d.ts +2 -0
  265. package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.d.ts.map +1 -0
  266. package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.js +231 -0
  267. package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts +2 -0
  268. package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts.map +1 -0
  269. package/dist/unit/types/current/text/SidecarTextTrackController.test.js +686 -0
  270. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts +2 -0
  271. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts.map +1 -0
  272. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.js +365 -0
  273. package/dist/unit/types/current/text/TextTrack.test.d.ts +2 -0
  274. package/dist/unit/types/current/text/TextTrack.test.d.ts.map +1 -0
  275. package/dist/unit/types/current/text/TextTrack.test.js +12 -0
  276. package/dist/unit/types/current/text/VttCueStyle.test.d.ts +2 -0
  277. package/dist/unit/types/current/text/VttCueStyle.test.d.ts.map +1 -0
  278. package/dist/unit/types/current/text/VttCueStyle.test.js +76 -0
  279. package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts +2 -0
  280. package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts.map +1 -0
  281. package/dist/unit/types/current/text/discoverDashTextTracks.test.js +216 -0
  282. package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts +2 -0
  283. package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts.map +1 -0
  284. package/dist/unit/types/current/text/discoverHlsTextTracks.test.js +177 -0
  285. package/dist/unit/types/current/text/mediaTextTrackProvider.test.d.ts +2 -0
  286. package/dist/unit/types/current/text/mediaTextTrackProvider.test.d.ts.map +1 -0
  287. package/dist/unit/types/current/text/mediaTextTrackProvider.test.js +86 -0
  288. package/dist/unit/types/current/text/parseWebVtt.test.d.ts +2 -0
  289. package/dist/unit/types/current/text/parseWebVtt.test.d.ts.map +1 -0
  290. package/dist/unit/types/current/text/parseWebVtt.test.js +419 -0
  291. package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts +2 -0
  292. package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts.map +1 -0
  293. package/dist/unit/types/current/text/pickPreferredTextTrack.test.js +78 -0
  294. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts +2 -0
  295. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts.map +1 -0
  296. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.js +165 -0
  297. package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
  298. package/dist/unit/types/current/util/media/codecOverrides.test.d.ts +2 -0
  299. package/dist/unit/types/current/util/media/codecOverrides.test.d.ts.map +1 -0
  300. package/dist/unit/types/current/util/media/codecOverrides.test.js +42 -0
  301. package/dist/unit/types/current/util/media/codecSupport.test.d.ts +2 -0
  302. package/dist/unit/types/current/util/media/codecSupport.test.d.ts.map +1 -0
  303. package/dist/unit/types/current/util/media/codecSupport.test.js +26 -0
  304. package/dist/unit/types/current/util/media/mimeType.test.d.ts +2 -0
  305. package/dist/unit/types/current/util/media/mimeType.test.d.ts.map +1 -0
  306. package/dist/unit/types/current/util/media/mimeType.test.js +22 -0
  307. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts +2 -0
  308. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts.map +1 -0
  309. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.js +142 -0
  310. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts +2 -0
  311. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts.map +1 -0
  312. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.js +188 -0
  313. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts +15 -0
  314. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts.map +1 -0
  315. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.js +26 -0
  316. package/dist/vinylTestUtil/types/current/mock/dash/mockDashManifest.d.ts +84 -84
  317. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts +10 -0
  318. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts.map +1 -0
  319. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.js +14 -0
  320. package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
  321. package/dist/vinylTestUtil/types/ts3.7/mock/ad/MockAdController.d.ts +15 -0
  322. package/dist/vinylTestUtil/types/ts3.7/mock/dash/mockDashManifest.d.ts +84 -84
  323. package/dist/vinylTestUtil/types/ts3.7/mock/text/MockTextTrackController.d.ts +10 -0
  324. package/dist/vinylTestUtil/types/ts4.1/mock/ad/MockAdController.d.ts +15 -0
  325. package/dist/vinylTestUtil/types/ts4.1/mock/dash/mockDashManifest.d.ts +84 -84
  326. package/dist/vinylTestUtil/types/ts4.1/mock/text/MockTextTrackController.d.ts +10 -0
  327. package/dist/vinylTestUtil/types/ts4.7/mock/ad/MockAdController.d.ts +15 -0
  328. package/dist/vinylTestUtil/types/ts4.7/mock/dash/mockDashManifest.d.ts +84 -84
  329. package/dist/vinylTestUtil/types/ts4.7/mock/text/MockTextTrackController.d.ts +10 -0
  330. package/package.json +10 -11
@@ -0,0 +1,249 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { ErrorOrigin, ValidationError } from '@amazon/vinyl-util';
6
+ const WEBVTT_HEADER = 'WEBVTT';
7
+ // A single WebVTT timestamp anchored at the start: `[ hours ":" ] minutes ":"
8
+ // seconds "." ms`, with hours two-or-more digits (optional), minutes/seconds
9
+ // two digits in 0-59, and milliseconds three digits (per the spec's "collect a
10
+ // WebVTT timestamp"). Timestamp collection stops after the milliseconds — it is
11
+ // NOT anchored at the end — so the start match must be checked to consume its
12
+ // whole (pre-`-->`) token, while for the end match any remainder is cue
13
+ // settings. The only unbounded quantifier is `\d+`, followed by a literal `:`
14
+ // (no nested/overlapping quantifiers), so it matches in linear time, and it
15
+ // only ever runs against a single short token — backtracking is a non-issue.
16
+ const TIMESTAMP_RE = /^(?:(\d+):)?([0-5]\d):([0-5]\d)\.(\d{3})/;
17
+ /**
18
+ * Parses a WebVTT document into a list of cues.
19
+ *
20
+ * Implements a forgiving subset of the WebVTT 1.0 specification: header
21
+ * detection, comment blocks (lines starting with `NOTE`), styling/region
22
+ * blocks (STYLE bodies are captured, REGION skipped), cue identifiers, and
23
+ * HH:MM:SS.mmm or MM:SS.mmm timestamps with optional cue settings.
24
+ *
25
+ * @param input The raw WebVTT document text. Both LF and CRLF line endings
26
+ * are supported, and a leading BOM is stripped if present.
27
+ * @throws ValidationError if the input is missing the WEBVTT header.
28
+ * @see https://www.w3.org/TR/webvtt1/#webvtt-timestamp
29
+ */
30
+ export function parseWebVtt(input) {
31
+ if (typeof input !== 'string') {
32
+ throw new ValidationError('WebVTT input must be a string', ErrorOrigin.MEDIA);
33
+ }
34
+ let text = input;
35
+ // Strip a leading BOM, then normalize line endings.
36
+ if (text.charCodeAt(0) === 0xfeff)
37
+ text = text.slice(1);
38
+ const lines = text.split(/\r\n|\r|\n/);
39
+ if (lines.length === 0 || !isWebVttHeader(lines[0])) {
40
+ throw new ValidationError('WebVTT must begin with a WEBVTT header', ErrorOrigin.MEDIA);
41
+ }
42
+ const cues = [];
43
+ const styles = [];
44
+ // Per the WebVTT spec, everything from the `WEBVTT` signature up to (and
45
+ // including) the first blank line is the file header — metadata lines (e.g.
46
+ // HLS's `X-TIMESTAMP-MAP=...`) belong in that block and MUST NOT be
47
+ // interpreted as cue content. The header also ends at a timing line, so a
48
+ // document that omits the blank line still has its first cue parsed.
49
+ let i = 1;
50
+ while (i < lines.length && lines[i] !== '' && !lines[i].includes('-->'))
51
+ i++;
52
+ while (i < lines.length) {
53
+ // Skip blank lines between blocks.
54
+ if (lines[i] === '') {
55
+ i++;
56
+ continue;
57
+ }
58
+ // NOTE comment / REGION blocks: skip until the blank line. A NOTE line
59
+ // is `NOTE` alone or `NOTE` followed by whitespace (space or tab).
60
+ if (lines[i] === 'NOTE' ||
61
+ lines[i].startsWith('NOTE ') ||
62
+ lines[i].startsWith('NOTE\t') ||
63
+ lines[i] === 'REGION') {
64
+ i++;
65
+ while (i < lines.length && lines[i] !== '')
66
+ i++;
67
+ continue;
68
+ }
69
+ // STYLE block: capture its CSS body (up to the blank line).
70
+ if (lines[i] === 'STYLE') {
71
+ i++;
72
+ const start = i;
73
+ while (i < lines.length && lines[i] !== '')
74
+ i++;
75
+ const css = lines.slice(start, i).join('\n').trim();
76
+ if (css)
77
+ styles.push(css);
78
+ continue;
79
+ }
80
+ // Cue: an optional identifier line, then a timing line, then payload.
81
+ // A cue identifier never contains `-->`, so a line without it is the
82
+ // identifier and the timing line follows (spec: "collect a WebVTT
83
+ // block").
84
+ let id = null;
85
+ if (!lines[i].includes('-->')) {
86
+ id = lines[i];
87
+ i++;
88
+ if (i >= lines.length)
89
+ break; // identifier with no timing line
90
+ }
91
+ const timing = parseTiming(lines[i]);
92
+ i++;
93
+ if (!timing) {
94
+ // Malformed timing line: drain to the next blank line.
95
+ while (i < lines.length && lines[i] !== '')
96
+ i++;
97
+ continue;
98
+ }
99
+ const payloadLines = [];
100
+ while (i < lines.length && lines[i] !== '') {
101
+ payloadLines.push(lines[i]);
102
+ i++;
103
+ }
104
+ const text = payloadLines.join('\n');
105
+ // Omit the optional `settings` key entirely when there are none.
106
+ cues.push(timing.settings === undefined
107
+ ? {
108
+ id,
109
+ startTime: timing.startTime,
110
+ endTime: timing.endTime,
111
+ text,
112
+ }
113
+ : {
114
+ id,
115
+ startTime: timing.startTime,
116
+ endTime: timing.endTime,
117
+ text,
118
+ settings: timing.settings,
119
+ });
120
+ }
121
+ return { cues, styles };
122
+ }
123
+ /**
124
+ * Parses a WebVTT timing line ("start --> end settings"), returning the two
125
+ * times (in seconds) and any parsed cue settings, or null if it is not a valid
126
+ * timing line. Splitting on the literal `-->` (and on the whitespace before the
127
+ * settings) keeps each timestamp match a fixed, anchored token.
128
+ */
129
+ function parseTiming(line) {
130
+ const arrow = line.indexOf('-->');
131
+ if (arrow < 0)
132
+ return null;
133
+ // Before the arrow: only the start timestamp (whitespace-trimmed), so the
134
+ // match must consume the whole token.
135
+ const before = line.slice(0, arrow).trim();
136
+ const start = TIMESTAMP_RE.exec(before);
137
+ if (!start || start[0].length !== before.length)
138
+ return null;
139
+ // After the arrow: the end timestamp, then whatever follows is cue settings.
140
+ const rest = line.slice(arrow + 3).trim();
141
+ const end = TIMESTAMP_RE.exec(rest);
142
+ if (!end)
143
+ return null;
144
+ return {
145
+ startTime: toSeconds(start[1], start[2], start[3], start[4]),
146
+ endTime: toSeconds(end[1], end[2], end[3], end[4]),
147
+ settings: parseCueSettings(rest.slice(end[0].length)),
148
+ };
149
+ }
150
+ function toSeconds(hours, minutes, seconds, millis) {
151
+ return ((hours ? Number(hours) * 3600 : 0) +
152
+ Number(minutes) * 60 +
153
+ Number(seconds) +
154
+ Number(millis) / 1000);
155
+ }
156
+ function isWebVttHeader(line) {
157
+ if (!line.startsWith(WEBVTT_HEADER))
158
+ return false;
159
+ if (line.length === WEBVTT_HEADER.length)
160
+ return true;
161
+ const next = line.charCodeAt(WEBVTT_HEADER.length);
162
+ // Header may be followed by space, tab, or any text after a separator.
163
+ return next === 0x20 || next === 0x09;
164
+ }
165
+ const ALIGN = new Set(['start', 'center', 'end', 'left', 'right']);
166
+ const LINE_ALIGN = new Set(['start', 'center', 'end']);
167
+ const POSITION_ALIGN = new Set(['line-left', 'center', 'line-right', 'auto']);
168
+ const VERTICAL = new Set(['rl', 'lr']);
169
+ /**
170
+ * Parses the cue-settings tail of a timing line (e.g.
171
+ * `align:center line:80% position:50%,center size:90% vertical:rl`) into a
172
+ * {@link VttCueStyle}. Unknown keys and malformed values are skipped; returns
173
+ * undefined when nothing valid was found.
174
+ */
175
+ function parseCueSettings(text) {
176
+ if (!text)
177
+ return undefined;
178
+ const settings = {};
179
+ for (const token of text.trim().split(/\s+/)) {
180
+ const colon = token.indexOf(':');
181
+ if (colon <= 0)
182
+ continue;
183
+ const key = token.slice(0, colon);
184
+ const value = token.slice(colon + 1);
185
+ switch (key) {
186
+ case 'align': {
187
+ // 'middle' is the legacy spelling of 'center'.
188
+ const align = value === 'middle' ? 'center' : value;
189
+ if (ALIGN.has(align))
190
+ settings.align = align;
191
+ break;
192
+ }
193
+ case 'vertical':
194
+ if (VERTICAL.has(value))
195
+ settings.vertical = value;
196
+ break;
197
+ case 'size': {
198
+ const size = parsePercent(value);
199
+ if (size != null)
200
+ settings.size = size;
201
+ break;
202
+ }
203
+ case 'line':
204
+ parseLine(value, settings);
205
+ break;
206
+ case 'position':
207
+ parsePosition(value, settings);
208
+ break;
209
+ }
210
+ }
211
+ return Object.keys(settings).length > 0 ? settings : undefined;
212
+ }
213
+ function parseLine(value, settings) {
214
+ const [pos, align] = value.split(',');
215
+ if (pos.endsWith('%')) {
216
+ const percent = parsePercent(pos);
217
+ if (percent == null)
218
+ return;
219
+ settings.line = percent;
220
+ settings.snapToLines = false;
221
+ }
222
+ else {
223
+ const n = Number(pos);
224
+ if (!Number.isInteger(n))
225
+ return;
226
+ settings.line = n;
227
+ settings.snapToLines = true;
228
+ }
229
+ const lineAlign = align === 'middle' ? 'center' : align;
230
+ if (lineAlign && LINE_ALIGN.has(lineAlign))
231
+ settings.lineAlign = lineAlign;
232
+ }
233
+ function parsePosition(value, settings) {
234
+ const [pos, align] = value.split(',');
235
+ const percent = parsePercent(pos);
236
+ if (percent == null)
237
+ return;
238
+ settings.position = percent;
239
+ const positionAlign = align === 'middle' ? 'center' : align;
240
+ if (positionAlign && POSITION_ALIGN.has(positionAlign))
241
+ settings.positionAlign = positionAlign;
242
+ }
243
+ /** Parses an `N%` token to its numeric percentage, or null when malformed. */
244
+ function parsePercent(value) {
245
+ if (!value.endsWith('%'))
246
+ return null;
247
+ const n = Number(value.slice(0, -1));
248
+ return Number.isFinite(n) ? n : null;
249
+ }
@@ -0,0 +1,15 @@
1
+ import type { TextTrackInfo } from './TextTrack';
2
+ import type { Maybe } from '@amazon/vinyl-util';
3
+ /**
4
+ * Chooses the text track that best matches the preferred language(s), or null
5
+ * when none relate (or there is no preference / no tracks).
6
+ *
7
+ * Language dominates: a track is ranked first by which preference it relates to
8
+ * (earlier entries win) and how closely (see {@link languageRelatedness}).
9
+ * Within a single language, a full track is preferred over a forced-only track
10
+ * (a user asking for a caption language wants the full captions, not just the
11
+ * forced foreign-dialogue cues), and a manifest-default track breaks any
12
+ * remaining tie.
13
+ */
14
+ export declare function pickPreferredTextTrack(tracks: readonly TextTrackInfo[], preferred: Maybe<string | readonly string[]>): TextTrackInfo | null;
15
+ //# sourceMappingURL=pickPreferredTextTrack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pickPreferredTextTrack.d.ts","sourceRoot":"","sources":["../../../../src/text/pickPreferredTextTrack.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAkB/C;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,GAC7C,aAAa,GAAG,IAAI,CActB"}
@@ -0,0 +1,71 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { languageRelatedness } from '../track/filters/languageFilter';
6
+ /**
7
+ * Resolves the preferred-text-language option to an ordered list of BCP 47
8
+ * tags, most-preferred first. A string becomes a single-element list; an array
9
+ * is used as-is; unset (null/undefined) falls back to the platform's
10
+ * `navigator.languages`. Returns an empty list only when there is no preference
11
+ * and no `navigator.languages` — in which case nothing is selected.
12
+ */
13
+ function resolvePreferredTextLanguages(preferred) {
14
+ if (typeof preferred === 'string')
15
+ return [preferred];
16
+ if (preferred)
17
+ return preferred;
18
+ if (typeof navigator !== 'undefined')
19
+ return [...navigator.languages];
20
+ return [];
21
+ }
22
+ /**
23
+ * Chooses the text track that best matches the preferred language(s), or null
24
+ * when none relate (or there is no preference / no tracks).
25
+ *
26
+ * Language dominates: a track is ranked first by which preference it relates to
27
+ * (earlier entries win) and how closely (see {@link languageRelatedness}).
28
+ * Within a single language, a full track is preferred over a forced-only track
29
+ * (a user asking for a caption language wants the full captions, not just the
30
+ * forced foreign-dialogue cues), and a manifest-default track breaks any
31
+ * remaining tie.
32
+ */
33
+ export function pickPreferredTextTrack(tracks, preferred) {
34
+ const prefs = resolvePreferredTextLanguages(preferred);
35
+ if (tracks.length === 0 || prefs.length === 0)
36
+ return null;
37
+ let best = null;
38
+ let bestScore = 0;
39
+ for (const track of tracks) {
40
+ const score = scoreTextTrack(track, prefs);
41
+ if (score > bestScore) {
42
+ bestScore = score;
43
+ best = track;
44
+ }
45
+ }
46
+ return best;
47
+ }
48
+ /**
49
+ * Scores a track against the ordered preference list. 0 means unrelated to
50
+ * every preference (never selected). Preference position and language
51
+ * relatedness are weighted so they dominate the full/forced/default tiebreaks.
52
+ */
53
+ function scoreTextTrack(track, prefs) {
54
+ if (track.language == null)
55
+ return 0;
56
+ let best = 0;
57
+ for (let i = 0; i < prefs.length; i++) {
58
+ const rel = languageRelatedness(prefs[i], track.language);
59
+ if (rel > 0) {
60
+ best = Math.max(best, (prefs.length - i) * 100 + rel * 10);
61
+ }
62
+ }
63
+ if (best === 0)
64
+ return 0;
65
+ // Tiebreaks within the same language: prefer full over forced, then default.
66
+ if (!track.forced)
67
+ best += 2;
68
+ if (track.default)
69
+ best += 1;
70
+ return best;
71
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The seekable time range on the media timeline, in seconds.
3
+ * `end` will be `Infinity` when a live stream.
4
+ */
5
+ export type SeekRange = {
6
+ readonly start: number;
7
+ readonly end: number;
8
+ };
9
+ //# sourceMappingURL=SeekRange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeekRange.d.ts","sourceRoot":"","sources":["../../../../src/track/SeekRange.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA"}
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ export {};
@@ -0,0 +1,19 @@
1
+ import type { HlsMainPlaylist, HlsMediaPlaylist } from '@amazon/vinyl-hls-parser';
2
+ export interface HlsManifestData {
3
+ /**
4
+ * The main HLS playlist manifest.
5
+ * Use getMediaPlaylist to resolve bitrate manifests.
6
+ */
7
+ readonly mainPlaylist: HlsMainPlaylist;
8
+ /**
9
+ * The URL to be used for relative requests. Guaranteed to be absolute.
10
+ *
11
+ * Media with relative paths in the manifests will be resolved relative to this URL.
12
+ */
13
+ readonly baseUrl: string;
14
+ /**
15
+ * Lazily fetches and caches a media playlist by variant URI.
16
+ */
17
+ readonly getMediaPlaylist: (uri: string) => Promise<HlsMediaPlaylist>;
18
+ }
19
+ //# sourceMappingURL=HlsManifestData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HlsManifestData.d.ts","sourceRoot":"","sources":["../../../../../src/track/hls/HlsManifestData.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,eAAe,EACf,gBAAgB,EACnB,MAAM,0BAA0B,CAAA;AAEjC,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAA;IAEtC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACxE"}
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { HlsTrackLoadOptions } from './HlsTrack';
2
+ import type { ManifestProvider } from '../../streaming/ManifestController';
3
+ import type { HlsManifestData } from './HlsManifestData';
4
+ export declare function createHlsManifestProvider(loadOptions: HlsTrackLoadOptions): HlsManifestProvider;
5
+ export type HlsManifestProvider = ManifestProvider<HlsManifestData>;
6
+ //# sourceMappingURL=createHlsManifestProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createHlsManifestProvider.d.ts","sourceRoot":"","sources":["../../../../../src/track/hls/createHlsManifestProvider.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,wBAAgB,yBAAyB,CACrC,WAAW,EAAE,mBAAmB,GACjC,mBAAmB,CAQrB;AAED,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { createUrlHlsManifestProvider } from './createUrlHlsManifestProvider';
6
+ export function createHlsManifestProvider(loadOptions) {
7
+ return (loadOptions.manifestProvider ||
8
+ createUrlHlsManifestProvider(loadOptions.uri, loadOptions.requestInit || undefined));
9
+ }
@@ -0,0 +1,15 @@
1
+ import type { VinylTrackLoadOptions } from './createVinylTrackFactories';
2
+ /**
3
+ * The built-in track types Vinyl can infer from a URI.
4
+ */
5
+ export type TrackType = 'hls' | 'dash' | 'src';
6
+ /**
7
+ * Infers the track type from a URI based first on its file extension
8
+ * then mime type.
9
+ *
10
+ * Returns null if the type cannot be determined.
11
+ */
12
+ export declare function inferTrackTypeFromUrl(url: string): Promise<TrackType | null>;
13
+ export declare function inferTrackTypeFromUrlPath(url: string): TrackType | null;
14
+ export declare function createTrackLoadOptionsFromUrl(url: string): Promise<VinylTrackLoadOptions | null>;
15
+ //# sourceMappingURL=inferLoadOptionsFromUri.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferLoadOptionsFromUri.d.ts","sourceRoot":"","sources":["../../../../src/track/inferLoadOptionsFromUri.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAGxE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAA;AAE9C;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACvC,GAAG,EAAE,MAAM,GACZ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAE3B;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAMvE;AAED,wBAAsB,6BAA6B,CAC/C,GAAG,EAAE,MAAM,GACZ,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAKvC"}
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { memoize, requestWithRetry } from '@amazon/vinyl-util';
6
+ /**
7
+ * Infers the track type from a URI based first on its file extension
8
+ * then mime type.
9
+ *
10
+ * Returns null if the type cannot be determined.
11
+ */
12
+ export async function inferTrackTypeFromUrl(url) {
13
+ return inferTrackTypeFromUrlPath(url) ?? (await probeType(url));
14
+ }
15
+ export function inferTrackTypeFromUrlPath(url) {
16
+ if (url.endsWith('.m3u8') || url.includes('.m3u8?'))
17
+ return 'hls';
18
+ if (url.endsWith('.mpd') || url.includes('.mpd?'))
19
+ return 'dash';
20
+ if (/\.(mp3|mp4|m4a|m4v|aac|ogg|opus|wav|webm)(\?|$)/i.test(url))
21
+ return 'src';
22
+ return null;
23
+ }
24
+ export async function createTrackLoadOptionsFromUrl(url) {
25
+ if (!url)
26
+ return null;
27
+ const type = await inferTrackTypeFromUrl(url);
28
+ if (!type)
29
+ return null;
30
+ return { uri: url, type };
31
+ }
32
+ /**
33
+ * Performs a HEAD request on the given URL to determine its track type by its
34
+ * content-type response.
35
+ * The result is cached.
36
+ */
37
+ const probeType = memoize(async (url) => {
38
+ try {
39
+ const res = await requestWithRetry(url, { method: 'HEAD' });
40
+ if (!res.ok)
41
+ return null;
42
+ const mime = (res.headers.get('content-type') ?? '').toLowerCase();
43
+ if (mime.includes('dash+xml'))
44
+ return 'dash';
45
+ if (mime.includes('mpegurl'))
46
+ return 'hls';
47
+ if (mime.startsWith('video/') || mime.startsWith('audio/'))
48
+ return 'src';
49
+ return null;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }, (url) => url,
55
+ /* capacity */ 30);
@@ -26,7 +26,6 @@ export declare class MseTrack extends TrackBase {
26
26
  get [Symbol.toStringTag](): string;
27
27
  protected readonly deps: MseTrackDeps;
28
28
  private readonly streams;
29
- private readonly disposeAbort;
30
29
  private lastPreloadOptions;
31
30
  private activateOptions;
32
31
  private readonly allFetchedRanges;
@@ -1 +1 @@
1
- {"version":3,"file":"MseTrack.d.ts","sourceRoot":"","sources":["../../../../../src/track/mse/MseTrack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MseTrack.d.ts","sourceRoot":"","sources":["../../../../../src/track/mse/MseTrack.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { TrackBase, } from '../TrackBase';
6
- import { Abort, equalDeep, IntersectionRanges, logDebug, redispatchEvents, } from '@amazon/vinyl-util';
6
+ import { equalDeep, IntersectionRanges, logDebug, redispatchEvents, } from '@amazon/vinyl-util';
7
7
  import { createContainer } from '@amazon/vinyl-di';
8
8
  import { getMediaPeriodAtTime, } from '../../streaming/MediaTimeline';
9
9
  /**
@@ -14,7 +14,6 @@ export class MseTrack extends TrackBase {
14
14
  return 'MseTrack';
15
15
  }
16
16
  streams = [];
17
- disposeAbort = new Abort();
18
17
  lastPreloadOptions = null;
19
18
  activateOptions = null;
20
19
  allFetchedRanges = [];
@@ -52,11 +51,11 @@ export class MseTrack extends TrackBase {
52
51
  // DRM
53
52
  this.on('streamingQualityChange', (event) => {
54
53
  if (this.activateOptions) {
55
- this.deps.drmController.initializeForPlayback(event.current, this.disposeAbort);
54
+ this.deps.drmController.initializeForPlayback(event.current, this.drmSessionAbort.value);
56
55
  }
57
56
  });
58
57
  this.on('bufferingQualityChange', (event) => {
59
- this.deps.drmController.setBufferingDrmInfo(event.current, this.disposeAbort);
58
+ this.deps.drmController.setBufferingDrmInfo(event.current, this.drmSessionAbort.value);
60
59
  });
61
60
  // Listen for timeline changes to update qualities.
62
61
  add(deps.mediaTimelineTransformed.onData(() => {
@@ -216,7 +215,7 @@ export class MseTrack extends TrackBase {
216
215
  // AirPlay not supported using managed media sources
217
216
  this.deps.playbackSource.disableRemotePlayback = true;
218
217
  this.streams.forEach((stream) => {
219
- this.deps.drmController.initializeForPlayback(stream.streamingQuality, this.disposeAbort);
218
+ this.deps.drmController.initializeForPlayback(stream.streamingQuality, this.drmSessionAbort.value);
220
219
  });
221
220
  this.deps.playbackSource.src =
222
221
  this.deps.mediaSourceController.createUrl();