@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.
- package/dist/index.cjs +24 -6
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +33 -13
- package/dist/index.js.map +3 -3
- package/dist/test/integ.es5.js +62 -62
- package/dist/test/integ.js +119 -6
- package/dist/test/integ.js.map +2 -2
- package/dist/types/current/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/current/ad/AdBreakInfo.d.ts.map +1 -0
- package/dist/types/current/ad/AdBreakInfo.js +5 -0
- package/dist/types/current/ad/AdController.d.ts +229 -0
- package/dist/types/current/ad/AdController.d.ts.map +1 -0
- package/dist/types/current/ad/AdController.js +19 -0
- package/dist/types/current/ad/AdControllerImpl.d.ts +162 -0
- package/dist/types/current/ad/AdControllerImpl.d.ts.map +1 -0
- package/dist/types/current/ad/AdControllerImpl.js +741 -0
- package/dist/types/current/ad/AdError.d.ts +6 -0
- package/dist/types/current/ad/AdError.d.ts.map +1 -0
- package/dist/types/current/ad/AdError.js +14 -0
- package/dist/types/current/ad/AdsProvider.d.ts +28 -0
- package/dist/types/current/ad/AdsProvider.d.ts.map +1 -0
- package/dist/types/current/ad/AdsProvider.js +5 -0
- package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts.map +1 -0
- package/dist/types/current/ad/defaultAdLoadOptionsResolver.js +26 -0
- package/dist/types/current/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/current/ad/discoverHlsInterstitials.d.ts.map +1 -0
- package/dist/types/current/ad/discoverHlsInterstitials.js +248 -0
- package/dist/types/current/drm/DrmControllerImpl.d.ts +6 -0
- package/dist/types/current/drm/DrmControllerImpl.d.ts.map +1 -1
- package/dist/types/current/drm/DrmControllerImpl.js +23 -1
- package/dist/types/current/playback/PlaybackControllerImpl.d.ts +1 -1
- package/dist/types/current/playback/createStallDetector.d.ts +43 -0
- package/dist/types/current/playback/createStallDetector.d.ts.map +1 -0
- package/dist/types/current/playback/createStallDetector.js +101 -0
- package/dist/types/current/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/current/playback/createStallMonitor.d.ts.map +1 -0
- package/dist/types/current/playback/createStallMonitor.js +99 -0
- package/dist/types/current/streaming/AudioOptions.d.ts +66 -0
- package/dist/types/current/streaming/AudioOptions.d.ts.map +1 -0
- package/dist/types/current/streaming/AudioOptions.js +19 -0
- package/dist/types/current/streaming/LoadMetric.d.ts +72 -0
- package/dist/types/current/streaming/LoadMetric.d.ts.map +1 -0
- package/dist/types/current/streaming/LoadMetric.js +5 -0
- package/dist/types/current/streaming/ManifestControllerImpl.d.ts +43 -0
- package/dist/types/current/streaming/ManifestControllerImpl.d.ts.map +1 -0
- package/dist/types/current/streaming/ManifestControllerImpl.js +104 -0
- package/dist/types/current/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/current/streaming/buffering/codecDenylist.d.ts.map +1 -0
- package/dist/types/current/streaming/buffering/codecDenylist.js +62 -0
- package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts.map +1 -0
- package/dist/types/current/streaming/createAllowedContentTypesValue.js +43 -0
- package/dist/types/current/streaming/createTimelineContentTypesValue.d.ts +21 -0
- package/dist/types/current/streaming/createTimelineContentTypesValue.d.ts.map +1 -0
- package/dist/types/current/streaming/createTimelineContentTypesValue.js +25 -0
- package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts.map +1 -0
- package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.js +75 -0
- package/dist/types/current/text/HtmlTextTrackRenderer.d.ts +60 -0
- package/dist/types/current/text/HtmlTextTrackRenderer.d.ts.map +1 -0
- package/dist/types/current/text/HtmlTextTrackRenderer.js +231 -0
- package/dist/types/current/text/SidecarTextTrackController.d.ts +103 -0
- package/dist/types/current/text/SidecarTextTrackController.d.ts.map +1 -0
- package/dist/types/current/text/SidecarTextTrackController.js +250 -0
- package/dist/types/current/text/SidecarTextTrackLoader.d.ts +65 -0
- package/dist/types/current/text/SidecarTextTrackLoader.d.ts.map +1 -0
- package/dist/types/current/text/SidecarTextTrackLoader.js +150 -0
- package/dist/types/current/text/TextTrack.d.ts +179 -0
- package/dist/types/current/text/TextTrack.d.ts.map +1 -0
- package/dist/types/current/text/TextTrack.js +29 -0
- package/dist/types/current/text/TextTrackRenderer.d.ts +24 -0
- package/dist/types/current/text/TextTrackRenderer.d.ts.map +1 -0
- package/dist/types/current/text/TextTrackRenderer.js +5 -0
- package/dist/types/current/text/VttCueStyle.d.ts +41 -0
- package/dist/types/current/text/VttCueStyle.d.ts.map +1 -0
- package/dist/types/current/text/VttCueStyle.js +45 -0
- package/dist/types/current/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/current/text/discoverDashTextTracks.d.ts.map +1 -0
- package/dist/types/current/text/discoverDashTextTracks.js +110 -0
- package/dist/types/current/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/current/text/discoverHlsTextTracks.d.ts.map +1 -0
- package/dist/types/current/text/discoverHlsTextTracks.js +49 -0
- package/dist/types/current/text/mediaTextTrackProvider.d.ts +34 -0
- package/dist/types/current/text/mediaTextTrackProvider.d.ts.map +1 -0
- package/dist/types/current/text/mediaTextTrackProvider.js +42 -0
- package/dist/types/current/text/parseWebVtt.d.ts +60 -0
- package/dist/types/current/text/parseWebVtt.d.ts.map +1 -0
- package/dist/types/current/text/parseWebVtt.js +249 -0
- package/dist/types/current/text/pickPreferredTextTrack.d.ts +15 -0
- package/dist/types/current/text/pickPreferredTextTrack.d.ts.map +1 -0
- package/dist/types/current/text/pickPreferredTextTrack.js +71 -0
- package/dist/types/current/track/SeekRange.d.ts +9 -0
- package/dist/types/current/track/SeekRange.d.ts.map +1 -0
- package/dist/types/current/track/SeekRange.js +5 -0
- package/dist/types/current/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/current/track/hls/HlsManifestData.d.ts.map +1 -0
- package/dist/types/current/track/hls/HlsManifestData.js +5 -0
- package/dist/types/current/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/current/track/hls/createHlsManifestProvider.d.ts.map +1 -0
- package/dist/types/current/track/hls/createHlsManifestProvider.js +9 -0
- package/dist/types/current/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/current/track/inferLoadOptionsFromUri.d.ts.map +1 -0
- package/dist/types/current/track/inferLoadOptionsFromUri.js +55 -0
- package/dist/types/current/track/mse/MseTrack.d.ts +0 -1
- package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
- package/dist/types/current/track/mse/MseTrack.js +4 -5
- package/dist/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/types/current/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/current/util/media/codecOverrides.d.ts.map +1 -0
- package/dist/types/current/util/media/codecOverrides.js +37 -0
- package/dist/types/current/util/media/codecSupport.d.ts +6 -0
- package/dist/types/current/util/media/codecSupport.d.ts.map +1 -0
- package/dist/types/current/util/media/codecSupport.js +17 -0
- package/dist/types/current/util/media/mimeType.d.ts +8 -0
- package/dist/types/current/util/media/mimeType.d.ts.map +1 -0
- package/dist/types/current/util/media/mimeType.js +13 -0
- package/dist/types/ts3.7/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/ts3.7/ad/AdController.d.ts +243 -0
- package/dist/types/ts3.7/ad/AdControllerImpl.d.ts +162 -0
- package/dist/types/ts3.7/ad/AdError.d.ts +6 -0
- package/dist/types/ts3.7/ad/AdsProvider.d.ts +28 -0
- package/dist/types/ts3.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/ts3.7/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/ts3.7/drm/DrmControllerImpl.d.ts +6 -0
- package/dist/types/ts3.7/playback/PlaybackControllerImpl.d.ts +1 -1
- package/dist/types/ts3.7/playback/createStallDetector.d.ts +43 -0
- package/dist/types/ts3.7/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/ts3.7/streaming/AudioOptions.d.ts +66 -0
- package/dist/types/ts3.7/streaming/LoadMetric.d.ts +72 -0
- package/dist/types/ts3.7/streaming/ManifestControllerImpl.d.ts +40 -0
- package/dist/types/ts3.7/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/ts3.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/ts3.7/streaming/createTimelineContentTypesValue.d.ts +21 -0
- package/dist/types/ts3.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts3.7/text/HtmlTextTrackRenderer.d.ts +60 -0
- package/dist/types/ts3.7/text/SidecarTextTrackController.d.ts +103 -0
- package/dist/types/ts3.7/text/SidecarTextTrackLoader.d.ts +65 -0
- package/dist/types/ts3.7/text/TextTrack.d.ts +183 -0
- package/dist/types/ts3.7/text/TextTrackRenderer.d.ts +24 -0
- package/dist/types/ts3.7/text/VttCueStyle.d.ts +41 -0
- package/dist/types/ts3.7/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/ts3.7/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/ts3.7/text/mediaTextTrackProvider.d.ts +34 -0
- package/dist/types/ts3.7/text/parseWebVtt.d.ts +60 -0
- package/dist/types/ts3.7/text/pickPreferredTextTrack.d.ts +15 -0
- package/dist/types/ts3.7/track/SeekRange.d.ts +9 -0
- package/dist/types/ts3.7/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/ts3.7/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts3.7/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts3.7/track/mse/MseTrack.d.ts +0 -1
- package/dist/types/ts3.7/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/ts3.7/util/media/codecSupport.d.ts +6 -0
- package/dist/types/ts3.7/util/media/mimeType.d.ts +8 -0
- package/dist/types/ts4.1/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/ts4.1/ad/AdController.d.ts +243 -0
- package/dist/types/ts4.1/ad/AdControllerImpl.d.ts +162 -0
- package/dist/types/ts4.1/ad/AdError.d.ts +6 -0
- package/dist/types/ts4.1/ad/AdsProvider.d.ts +28 -0
- package/dist/types/ts4.1/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/ts4.1/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/ts4.1/drm/DrmControllerImpl.d.ts +6 -0
- package/dist/types/ts4.1/playback/PlaybackControllerImpl.d.ts +1 -1
- package/dist/types/ts4.1/playback/createStallDetector.d.ts +43 -0
- package/dist/types/ts4.1/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/ts4.1/streaming/AudioOptions.d.ts +66 -0
- package/dist/types/ts4.1/streaming/LoadMetric.d.ts +72 -0
- package/dist/types/ts4.1/streaming/ManifestControllerImpl.d.ts +40 -0
- package/dist/types/ts4.1/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/ts4.1/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/ts4.1/streaming/createTimelineContentTypesValue.d.ts +21 -0
- package/dist/types/ts4.1/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts4.1/text/HtmlTextTrackRenderer.d.ts +60 -0
- package/dist/types/ts4.1/text/SidecarTextTrackController.d.ts +104 -0
- package/dist/types/ts4.1/text/SidecarTextTrackLoader.d.ts +65 -0
- package/dist/types/ts4.1/text/TextTrack.d.ts +183 -0
- package/dist/types/ts4.1/text/TextTrackRenderer.d.ts +24 -0
- package/dist/types/ts4.1/text/VttCueStyle.d.ts +41 -0
- package/dist/types/ts4.1/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/ts4.1/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/ts4.1/text/mediaTextTrackProvider.d.ts +34 -0
- package/dist/types/ts4.1/text/parseWebVtt.d.ts +60 -0
- package/dist/types/ts4.1/text/pickPreferredTextTrack.d.ts +15 -0
- package/dist/types/ts4.1/track/SeekRange.d.ts +9 -0
- package/dist/types/ts4.1/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/ts4.1/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts4.1/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts4.1/track/mse/MseTrack.d.ts +0 -1
- package/dist/types/ts4.1/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/ts4.1/util/media/codecSupport.d.ts +6 -0
- package/dist/types/ts4.1/util/media/mimeType.d.ts +8 -0
- package/dist/types/ts4.7/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/ts4.7/ad/AdController.d.ts +243 -0
- package/dist/types/ts4.7/ad/AdControllerImpl.d.ts +162 -0
- package/dist/types/ts4.7/ad/AdError.d.ts +6 -0
- package/dist/types/ts4.7/ad/AdsProvider.d.ts +28 -0
- package/dist/types/ts4.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/ts4.7/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/ts4.7/drm/DrmControllerImpl.d.ts +6 -0
- package/dist/types/ts4.7/playback/PlaybackControllerImpl.d.ts +1 -1
- package/dist/types/ts4.7/playback/createStallDetector.d.ts +43 -0
- package/dist/types/ts4.7/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/ts4.7/streaming/AudioOptions.d.ts +66 -0
- package/dist/types/ts4.7/streaming/LoadMetric.d.ts +72 -0
- package/dist/types/ts4.7/streaming/ManifestControllerImpl.d.ts +43 -0
- package/dist/types/ts4.7/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/ts4.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/ts4.7/streaming/createTimelineContentTypesValue.d.ts +21 -0
- package/dist/types/ts4.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts4.7/text/HtmlTextTrackRenderer.d.ts +60 -0
- package/dist/types/ts4.7/text/SidecarTextTrackController.d.ts +103 -0
- package/dist/types/ts4.7/text/SidecarTextTrackLoader.d.ts +65 -0
- package/dist/types/ts4.7/text/TextTrack.d.ts +183 -0
- package/dist/types/ts4.7/text/TextTrackRenderer.d.ts +24 -0
- package/dist/types/ts4.7/text/VttCueStyle.d.ts +41 -0
- package/dist/types/ts4.7/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/ts4.7/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/ts4.7/text/mediaTextTrackProvider.d.ts +34 -0
- package/dist/types/ts4.7/text/parseWebVtt.d.ts +60 -0
- package/dist/types/ts4.7/text/pickPreferredTextTrack.d.ts +15 -0
- package/dist/types/ts4.7/track/SeekRange.d.ts +9 -0
- package/dist/types/ts4.7/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/ts4.7/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts4.7/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts4.7/track/mse/MseTrack.d.ts +0 -1
- package/dist/types/ts4.7/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/ts4.7/util/media/codecSupport.d.ts +6 -0
- package/dist/types/ts4.7/util/media/mimeType.d.ts +8 -0
- package/dist/unit/types/current/ad/AdController.test.d.ts +2 -0
- package/dist/unit/types/current/ad/AdController.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/AdController.test.js +10 -0
- package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts +2 -0
- package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/AdControllerImpl.test.js +1654 -0
- package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts +2 -0
- package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.js +56 -0
- package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts +2 -0
- package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/discoverHlsInterstitials.test.js +757 -0
- package/dist/unit/types/current/drm/DrmControllerImpl.test.js +96 -2
- package/dist/unit/types/current/playback/createStallDetector.test.d.ts +2 -0
- package/dist/unit/types/current/playback/createStallDetector.test.d.ts.map +1 -0
- package/dist/unit/types/current/playback/createStallDetector.test.js +163 -0
- package/dist/unit/types/current/playback/createStallMonitor.test.d.ts +2 -0
- package/dist/unit/types/current/playback/createStallMonitor.test.d.ts.map +1 -0
- package/dist/unit/types/current/playback/createStallMonitor.test.js +163 -0
- package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/ManifestControllerImpl.test.js +197 -0
- package/dist/unit/types/current/streaming/MseTrack.test.js +15 -0
- package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/buffering/codecDenylist.test.js +56 -0
- package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.js +77 -0
- package/dist/unit/types/current/streaming/createTimelineContentTypesValue.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/createTimelineContentTypesValue.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/createTimelineContentTypesValue.test.js +57 -0
- package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.js +99 -0
- package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.d.ts +2 -0
- package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/HtmlTextTrackRenderer.test.js +231 -0
- package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts +2 -0
- package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/SidecarTextTrackController.test.js +686 -0
- package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts +2 -0
- package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/SidecarTextTrackLoader.test.js +365 -0
- package/dist/unit/types/current/text/TextTrack.test.d.ts +2 -0
- package/dist/unit/types/current/text/TextTrack.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/TextTrack.test.js +12 -0
- package/dist/unit/types/current/text/VttCueStyle.test.d.ts +2 -0
- package/dist/unit/types/current/text/VttCueStyle.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/VttCueStyle.test.js +76 -0
- package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts +2 -0
- package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/discoverDashTextTracks.test.js +216 -0
- package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts +2 -0
- package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/discoverHlsTextTracks.test.js +177 -0
- package/dist/unit/types/current/text/mediaTextTrackProvider.test.d.ts +2 -0
- package/dist/unit/types/current/text/mediaTextTrackProvider.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/mediaTextTrackProvider.test.js +86 -0
- package/dist/unit/types/current/text/parseWebVtt.test.d.ts +2 -0
- package/dist/unit/types/current/text/parseWebVtt.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/parseWebVtt.test.js +419 -0
- package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts +2 -0
- package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/pickPreferredTextTrack.test.js +78 -0
- package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts +2 -0
- package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts.map +1 -0
- package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.js +165 -0
- package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/unit/types/current/util/media/codecOverrides.test.d.ts +2 -0
- package/dist/unit/types/current/util/media/codecOverrides.test.d.ts.map +1 -0
- package/dist/unit/types/current/util/media/codecOverrides.test.js +42 -0
- package/dist/unit/types/current/util/media/codecSupport.test.d.ts +2 -0
- package/dist/unit/types/current/util/media/codecSupport.test.d.ts.map +1 -0
- package/dist/unit/types/current/util/media/codecSupport.test.js +26 -0
- package/dist/unit/types/current/util/media/mimeType.test.d.ts +2 -0
- package/dist/unit/types/current/util/media/mimeType.test.d.ts.map +1 -0
- package/dist/unit/types/current/util/media/mimeType.test.js +22 -0
- package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts +2 -0
- package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts.map +1 -0
- package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.js +142 -0
- package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts +2 -0
- package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts.map +1 -0
- package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.js +188 -0
- package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts.map +1 -0
- package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.js +26 -0
- package/dist/vinylTestUtil/types/current/mock/dash/mockDashManifest.d.ts +84 -84
- package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts.map +1 -0
- package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.js +14 -0
- package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/vinylTestUtil/types/ts3.7/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/dash/mockDashManifest.d.ts +84 -84
- package/dist/vinylTestUtil/types/ts3.7/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/dash/mockDashManifest.d.ts +84 -84
- package/dist/vinylTestUtil/types/ts4.1/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/dash/mockDashManifest.d.ts +84 -84
- package/dist/vinylTestUtil/types/ts4.7/mock/text/MockTextTrackController.d.ts +10 -0
- 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 @@
|
|
|
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,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,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":"AAKA,OAAO,EACH,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACxB,MAAM,cAAc,CAAA;AACrB,OAAO,
|
|
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 {
|
|
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.
|
|
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.
|
|
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.
|
|
218
|
+
this.deps.drmController.initializeForPlayback(stream.streamingQuality, this.drmSessionAbort.value);
|
|
220
219
|
});
|
|
221
220
|
this.deps.playbackSource.src =
|
|
222
221
|
this.deps.mediaSourceController.createUrl();
|