@amazon/vinyl 1.1.1 → 1.2.1
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 +286 -201
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +294 -206
- package/dist/index.js.map +4 -4
- package/dist/test/benchmark.es5.js +169 -232
- package/dist/test/benchmark.js +1475 -1933
- package/dist/test/benchmark.js.map +4 -4
- package/dist/test/integ.es5.js +771 -394
- package/dist/test/integ.js +5996 -5138
- package/dist/test/integ.js.map +4 -4
- package/dist/test/jasmineHtml.es5.js +8 -8
- package/dist/test/jasmineHtml.js +8 -4
- package/dist/test/jasmineHtml.js.map +3 -3
- 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 +146 -0
- package/dist/types/current/ad/AdControllerImpl.d.ts.map +1 -0
- package/dist/types/current/ad/AdControllerImpl.js +705 -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 +246 -0
- package/dist/types/current/client/Capabilities.d.ts.map +1 -1
- package/dist/types/current/client/CapabilitiesImpl.d.ts.map +1 -1
- package/dist/types/current/drm/DrmController.d.ts +2 -2
- package/dist/types/current/drm/DrmController.d.ts.map +1 -1
- package/dist/types/current/drm/DrmControllerImpl.d.ts +3 -3
- package/dist/types/current/drm/DrmControllerImpl.d.ts.map +1 -1
- package/dist/types/current/drm/DrmControllerImpl.js +18 -8
- package/dist/types/current/drm/DrmKeySystemResolver.d.ts +1 -1
- package/dist/types/current/drm/DrmKeySystemResolver.d.ts.map +1 -1
- package/dist/types/current/drm/DrmKeySystemResolver.js +1 -1
- package/dist/types/current/drm/DrmOptions.d.ts +1 -1
- package/dist/types/current/drm/DrmOptions.d.ts.map +1 -1
- package/dist/types/current/drm/DrmOptions.js +1 -1
- package/dist/types/current/drm/commonEme/CommonEme.d.ts +2 -2
- package/dist/types/current/drm/commonEme/CommonEme.d.ts.map +1 -1
- package/dist/types/current/drm/commonEme/CommonEmeFactory.d.ts +1 -1
- package/dist/types/current/drm/commonEme/CommonEmeFactory.d.ts.map +1 -1
- package/dist/types/current/drm/commonEme/MsCommonEme.d.ts +1 -1
- package/dist/types/current/drm/commonEme/MsCommonEme.d.ts.map +1 -1
- package/dist/types/current/drm/commonEme/MsCommonEme.js +1 -1
- package/dist/types/current/drm/commonEme/StandardCommonEme.d.ts +1 -1
- package/dist/types/current/drm/commonEme/StandardCommonEme.d.ts.map +1 -1
- package/dist/types/current/drm/commonEme/WebKitCommonEme.d.ts +2 -2
- package/dist/types/current/drm/commonEme/WebKitCommonEme.d.ts.map +1 -1
- package/dist/types/current/drm/commonEme/WebKitCommonEme.js +1 -1
- package/dist/types/current/drm/commonEme/createDrmErrorHandler.js +1 -1
- package/dist/types/current/drm/licenseProvider/LicenseProvider.d.ts +1 -1
- package/dist/types/current/drm/licenseProvider/LicenseProvider.d.ts.map +1 -1
- package/dist/types/current/global/environment.d.ts +6 -2
- package/dist/types/current/global/environment.d.ts.map +1 -1
- package/dist/types/current/global/environment.js +4 -3
- package/dist/types/current/global/initializeVinylGlobal.js +1 -1
- package/dist/types/current/patch/media/MediaElementPatchOptions.js +1 -1
- package/dist/types/current/patch/media/patchMediaElement.js +1 -1
- package/dist/types/current/patch/media/patches/createPreventStallsPatch.d.ts +1 -1
- package/dist/types/current/patch/media/patches/createPreventStallsPatch.d.ts.map +1 -1
- package/dist/types/current/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +1 -1
- package/dist/types/current/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts.map +1 -1
- package/dist/types/current/playback/PlaybackControllerImpl.d.ts +2 -2
- package/dist/types/current/playback/PlaybackControllerImpl.d.ts.map +1 -1
- package/dist/types/current/playback/PlaybackControllerImpl.js +4 -4
- package/dist/types/current/playback/ReadonlyPlaybackController.d.ts.map +1 -1
- package/dist/types/current/playback/error/ReportableMediaError.js +1 -1
- package/dist/types/current/playback/logging/playbackStateLoggingHandler.d.ts +1 -1
- package/dist/types/current/playback/logging/playbackStateLoggingHandler.d.ts.map +1 -1
- package/dist/types/current/playback/logging/playbackStateLoggingHandler.js +1 -1
- package/dist/types/current/playback/nextHasMetadata.d.ts +1 -1
- package/dist/types/current/playback/nextHasMetadata.d.ts.map +1 -1
- package/dist/types/current/streaming/AudioOptions.d.ts +39 -0
- package/dist/types/current/streaming/AudioOptions.d.ts.map +1 -0
- package/dist/types/current/streaming/AudioOptions.js +15 -0
- package/dist/types/current/streaming/ContentStream.d.ts +4 -4
- package/dist/types/current/streaming/ContentStream.d.ts.map +1 -1
- package/dist/types/current/streaming/ContentStreamingOptions.d.ts +2 -2
- package/dist/types/current/streaming/ContentStreamingOptions.d.ts.map +1 -1
- package/dist/types/current/streaming/LoadMetric.d.ts +58 -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/MediaQualityMetadata.d.ts +2 -2
- package/dist/types/current/streaming/MediaQualityMetadata.d.ts.map +1 -1
- package/dist/types/current/streaming/MediaQualityMetadata.js +1 -1
- package/dist/types/current/streaming/MediaTimeline.d.ts +6 -5
- package/dist/types/current/streaming/MediaTimeline.d.ts.map +1 -1
- package/dist/types/current/streaming/SegmentController.d.ts +2 -7
- package/dist/types/current/streaming/SegmentController.d.ts.map +1 -1
- package/dist/types/current/streaming/SegmentControllerImpl.d.ts +5 -6
- package/dist/types/current/streaming/SegmentControllerImpl.d.ts.map +1 -1
- package/dist/types/current/streaming/SegmentControllerImpl.js +5 -15
- package/dist/types/current/streaming/SegmentReference.d.ts +1 -1
- package/dist/types/current/streaming/SegmentReference.d.ts.map +1 -1
- package/dist/types/current/streaming/StreamingEventMap.d.ts +1 -1
- package/dist/types/current/streaming/StreamingEventMap.d.ts.map +1 -1
- package/dist/types/current/streaming/abr/QualitySelector.d.ts +1 -1
- package/dist/types/current/streaming/abr/QualitySelector.d.ts.map +1 -1
- package/dist/types/current/streaming/abr/QualitySelectorImpl.d.ts +18 -3
- package/dist/types/current/streaming/abr/QualitySelectorImpl.d.ts.map +1 -1
- package/dist/types/current/streaming/abr/QualitySelectorImpl.js +8 -2
- package/dist/types/current/streaming/buffering/BufferingController.d.ts +3 -13
- package/dist/types/current/streaming/buffering/BufferingController.d.ts.map +1 -1
- package/dist/types/current/streaming/buffering/BufferingController.js +1 -24
- package/dist/types/current/streaming/buffering/MediaSourceController.d.ts +41 -15
- package/dist/types/current/streaming/buffering/MediaSourceController.d.ts.map +1 -1
- package/dist/types/current/streaming/buffering/MediaSourceController.js +74 -17
- package/dist/types/current/streaming/buffering/SourceBufferController.d.ts +1 -1
- package/dist/types/current/streaming/buffering/SourceBufferController.d.ts.map +1 -1
- 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/createDefaultMediaTimelineTransformer.d.ts +1 -1
- package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts.map +1 -1
- package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.js +2 -2
- 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/streaming/mediaTimelineFilter.d.ts +3 -3
- package/dist/types/current/streaming/mediaTimelineFilter.d.ts.map +1 -1
- package/dist/types/current/streaming/mediaTimelineFilter.js +1 -1
- package/dist/types/current/streaming/mediaTimelineLanguageFilter.d.ts +1 -1
- package/dist/types/current/streaming/mediaTimelineLanguageFilter.d.ts.map +1 -1
- package/dist/types/current/streaming/util/segment.d.ts +1 -1
- package/dist/types/current/streaming/util/segment.d.ts.map +1 -1
- 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 +109 -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 +248 -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/AutoResetController.d.ts +37 -12
- package/dist/types/current/track/AutoResetController.d.ts.map +1 -1
- package/dist/types/current/track/AutoResetController.js +38 -28
- 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/Track.d.ts.map +1 -1
- package/dist/types/current/track/TrackBase.d.ts.map +1 -1
- package/dist/types/current/track/TrackController.d.ts +2 -2
- package/dist/types/current/track/TrackController.d.ts.map +1 -1
- package/dist/types/current/track/TrackFactory.d.ts +1 -1
- package/dist/types/current/track/TrackFactory.d.ts.map +1 -1
- package/dist/types/current/track/createSegmentDataProvider.d.ts.map +1 -1
- package/dist/types/current/track/createVinylTrackFactories.d.ts +5 -5
- package/dist/types/current/track/createVinylTrackFactories.d.ts.map +1 -1
- package/dist/types/current/track/createVinylTrackFactories.js +4 -4
- package/dist/types/current/track/dash/DashManifestController.d.ts +1 -1
- package/dist/types/current/track/dash/DashManifestController.d.ts.map +1 -1
- package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.d.ts.map +1 -1
- package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.js +1 -1
- package/dist/types/current/track/dash/DashTrack.d.ts +4 -4
- package/dist/types/current/track/dash/DashTrack.d.ts.map +1 -1
- package/dist/types/current/track/dash/DashTrack.js +2 -2
- package/dist/types/current/track/dash/buildDashMediaTimeline.d.ts +2 -2
- package/dist/types/current/track/dash/buildDashMediaTimeline.d.ts.map +1 -1
- package/dist/types/current/track/dash/buildDashMediaTimeline.js +2 -2
- package/dist/types/current/track/dash/createDashContentStreamFactories.d.ts.map +1 -1
- package/dist/types/current/track/dash/createDashContentTypesValue.d.ts +2 -2
- package/dist/types/current/track/dash/createDashContentTypesValue.d.ts.map +1 -1
- package/dist/types/current/track/dash/createDashContentTypesValue.js +1 -1
- package/dist/types/current/track/dash/createDashFactories.d.ts +12 -12
- package/dist/types/current/track/dash/createDashFactories.d.ts.map +1 -1
- package/dist/types/current/track/dash/createDashFactories.js +8 -8
- package/dist/types/current/track/dash/createDashManifestProvider.d.ts +1 -1
- package/dist/types/current/track/dash/createDashManifestProvider.d.ts.map +1 -1
- package/dist/types/current/track/dash/createDashManifestProvider.js +1 -1
- package/dist/types/current/track/dash/createDefaultDashManifestTransformer.d.ts +1 -1
- package/dist/types/current/track/dash/createDefaultDashManifestTransformer.d.ts.map +1 -1
- package/dist/types/current/track/dash/createDefaultDashManifestTransformer.js +1 -1
- package/dist/types/current/track/dash/createSegmentControllerFactory.d.ts.map +1 -1
- package/dist/types/current/track/dash/manifestTransformUtils.d.ts +1 -1
- package/dist/types/current/track/dash/manifestTransformUtils.d.ts.map +1 -1
- package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.d.ts +3 -3
- package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.d.ts.map +1 -1
- package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.js +3 -3
- package/dist/types/current/track/dash/urlDashManifestProvider.d.ts +1 -1
- package/dist/types/current/track/dash/urlDashManifestProvider.d.ts.map +1 -1
- package/dist/types/current/track/dash/util/mimeType.d.ts.map +1 -1
- package/dist/types/current/track/dash/util/mimeType.js +1 -1
- package/dist/types/current/track/dash/util/mpd.d.ts +3 -2
- package/dist/types/current/track/dash/util/mpd.d.ts.map +1 -1
- package/dist/types/current/track/dash/util/mpd.js +13 -3
- package/dist/types/current/track/dash/util/uriResolution.js +1 -1
- package/dist/types/current/track/filters/keySystemFilter.d.ts.map +1 -1
- package/dist/types/current/track/filters/resourceTypeFilter.d.ts.map +1 -1
- package/dist/types/current/track/filters/sampleRateFilter.d.ts.map +1 -1
- 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/HlsTrack.d.ts.map +1 -1
- package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts +3 -3
- package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts.map +1 -1
- package/dist/types/current/track/hls/buildHlsMediaTimeline.js +16 -14
- package/dist/types/current/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
- package/dist/types/current/track/hls/createDefaultHlsManifestTransformer.d.ts.map +1 -1
- package/dist/types/current/track/hls/createHlsContentStreamFactories.d.ts.map +1 -1
- 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/hls/util/hlsSegmentTime.d.ts +1 -1
- package/dist/types/current/track/hls/util/hlsSegmentTime.d.ts.map +1 -1
- package/dist/types/current/track/hls/util/hlsSegmentTime.js +1 -1
- 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 +2 -2
- package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
- package/dist/types/current/track/mse/MseTrack.js +2 -1
- package/dist/types/current/track/mse/codec.d.ts.map +1 -1
- package/dist/types/current/track/source/FixedPlaybackQuality.d.ts +1 -1
- package/dist/types/current/track/source/FixedPlaybackQuality.d.ts.map +1 -1
- package/dist/types/current/track/source/SourceObjectTrack.d.ts +4 -4
- package/dist/types/current/track/source/SourceObjectTrack.d.ts.map +1 -1
- package/dist/types/current/track/source/SourceObjectTrack.js +2 -2
- package/dist/types/current/track/source/SourceTrack.d.ts +4 -4
- package/dist/types/current/track/source/SourceTrack.d.ts.map +1 -1
- package/dist/types/current/track/source/SourceTrack.js +2 -2
- package/dist/types/current/track/source/SourceTrackBase.d.ts +2 -2
- package/dist/types/current/track/source/SourceTrackBase.d.ts.map +1 -1
- package/dist/types/current/track/source/SourceTrackBase.js +2 -2
- 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/current/vinyl/ReadonlyPlaybackStreamingState.d.ts.map +1 -1
- package/dist/types/current/vinyl/VinylDeps.d.ts +1 -1
- package/dist/types/current/vinyl/VinylDeps.d.ts.map +1 -1
- package/dist/types/current/vinyl/VinylOptions.d.ts.map +1 -1
- package/dist/types/current/vinyl/VinylPatchOptions.d.ts.map +1 -1
- package/dist/types/current/vinyl/VinylPlayer.d.ts +26 -2
- package/dist/types/current/vinyl/VinylPlayer.d.ts.map +1 -1
- package/dist/types/current/vinyl/VinylPlayer.js +18 -3
- package/dist/types/current/vinyl/createVinylFactories.d.ts +9 -11
- package/dist/types/current/vinyl/createVinylFactories.d.ts.map +1 -1
- package/dist/types/current/vinyl/createVinylFactories.js +2 -2
- 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 +146 -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/DrmController.d.ts +2 -2
- package/dist/types/ts3.7/drm/DrmControllerImpl.d.ts +3 -3
- package/dist/types/ts3.7/drm/DrmKeySystemResolver.d.ts +1 -1
- package/dist/types/ts3.7/drm/DrmOptions.d.ts +1 -1
- package/dist/types/ts3.7/drm/commonEme/CommonEme.d.ts +2 -2
- package/dist/types/ts3.7/drm/commonEme/CommonEmeFactory.d.ts +1 -1
- package/dist/types/ts3.7/drm/commonEme/MsCommonEme.d.ts +1 -1
- package/dist/types/ts3.7/drm/commonEme/StandardCommonEme.d.ts +1 -1
- package/dist/types/ts3.7/drm/commonEme/WebKitCommonEme.d.ts +2 -2
- package/dist/types/ts3.7/drm/licenseProvider/LicenseProvider.d.ts +1 -1
- package/dist/types/ts3.7/global/environment.d.ts +6 -2
- package/dist/types/ts3.7/patch/media/patches/createPreventStallsPatch.d.ts +1 -1
- package/dist/types/ts3.7/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +1 -1
- package/dist/types/ts3.7/playback/PlaybackControllerImpl.d.ts +2 -2
- package/dist/types/ts3.7/playback/logging/playbackStateLoggingHandler.d.ts +1 -1
- package/dist/types/ts3.7/playback/nextHasMetadata.d.ts +1 -1
- package/dist/types/ts3.7/streaming/AudioOptions.d.ts +39 -0
- package/dist/types/ts3.7/streaming/ContentStream.d.ts +4 -4
- package/dist/types/ts3.7/streaming/ContentStreamingOptions.d.ts +2 -2
- package/dist/types/ts3.7/streaming/LoadMetric.d.ts +58 -0
- package/dist/types/ts3.7/streaming/ManifestControllerImpl.d.ts +40 -0
- package/dist/types/ts3.7/streaming/MediaQualityMetadata.d.ts +2 -2
- package/dist/types/ts3.7/streaming/MediaTimeline.d.ts +6 -5
- package/dist/types/ts3.7/streaming/SegmentController.d.ts +2 -7
- package/dist/types/ts3.7/streaming/SegmentControllerImpl.d.ts +5 -6
- package/dist/types/ts3.7/streaming/SegmentReference.d.ts +1 -1
- package/dist/types/ts3.7/streaming/StreamingEventMap.d.ts +1 -1
- package/dist/types/ts3.7/streaming/abr/QualitySelector.d.ts +1 -1
- package/dist/types/ts3.7/streaming/abr/QualitySelectorImpl.d.ts +18 -3
- package/dist/types/ts3.7/streaming/buffering/BufferingController.d.ts +3 -13
- package/dist/types/ts3.7/streaming/buffering/MediaSourceController.d.ts +41 -15
- package/dist/types/ts3.7/streaming/buffering/SourceBufferController.d.ts +1 -1
- 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/createDefaultMediaTimelineTransformer.d.ts +1 -1
- package/dist/types/ts3.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts3.7/streaming/mediaTimelineFilter.d.ts +3 -3
- package/dist/types/ts3.7/streaming/mediaTimelineLanguageFilter.d.ts +1 -1
- package/dist/types/ts3.7/streaming/util/segment.d.ts +1 -1
- 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/AutoResetController.d.ts +37 -12
- package/dist/types/ts3.7/track/SeekRange.d.ts +9 -0
- package/dist/types/ts3.7/track/TrackController.d.ts +2 -2
- package/dist/types/ts3.7/track/TrackFactory.d.ts +1 -1
- package/dist/types/ts3.7/track/createVinylTrackFactories.d.ts +5 -5
- package/dist/types/ts3.7/track/dash/DashManifestController.d.ts +1 -1
- package/dist/types/ts3.7/track/dash/DashTrack.d.ts +4 -4
- package/dist/types/ts3.7/track/dash/buildDashMediaTimeline.d.ts +2 -2
- package/dist/types/ts3.7/track/dash/createDashContentTypesValue.d.ts +2 -2
- package/dist/types/ts3.7/track/dash/createDashFactories.d.ts +12 -12
- package/dist/types/ts3.7/track/dash/createDashManifestProvider.d.ts +1 -1
- package/dist/types/ts3.7/track/dash/createDefaultDashManifestTransformer.d.ts +1 -1
- package/dist/types/ts3.7/track/dash/manifestTransformUtils.d.ts +1 -1
- package/dist/types/ts3.7/track/dash/timeline/DashRepresentationSegmentProvider.d.ts +3 -3
- package/dist/types/ts3.7/track/dash/urlDashManifestProvider.d.ts +1 -1
- package/dist/types/ts3.7/track/dash/util/mpd.d.ts +3 -2
- package/dist/types/ts3.7/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/ts3.7/track/hls/buildHlsMediaTimeline.d.ts +3 -3
- package/dist/types/ts3.7/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
- package/dist/types/ts3.7/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts3.7/track/hls/util/hlsSegmentTime.d.ts +1 -1
- package/dist/types/ts3.7/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts3.7/track/mse/MseTrack.d.ts +2 -2
- package/dist/types/ts3.7/track/source/FixedPlaybackQuality.d.ts +1 -1
- package/dist/types/ts3.7/track/source/SourceObjectTrack.d.ts +4 -4
- package/dist/types/ts3.7/track/source/SourceTrack.d.ts +4 -4
- package/dist/types/ts3.7/track/source/SourceTrackBase.d.ts +2 -2
- 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/ts3.7/vinyl/VinylDeps.d.ts +1 -1
- package/dist/types/ts3.7/vinyl/VinylPlayer.d.ts +18 -2
- package/dist/types/ts3.7/vinyl/createVinylFactories.d.ts +9 -11
- 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 +146 -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/DrmController.d.ts +2 -2
- package/dist/types/ts4.1/drm/DrmControllerImpl.d.ts +3 -3
- package/dist/types/ts4.1/drm/DrmKeySystemResolver.d.ts +1 -1
- package/dist/types/ts4.1/drm/DrmOptions.d.ts +1 -1
- package/dist/types/ts4.1/drm/commonEme/CommonEme.d.ts +2 -2
- package/dist/types/ts4.1/drm/commonEme/CommonEmeFactory.d.ts +1 -1
- package/dist/types/ts4.1/drm/commonEme/MsCommonEme.d.ts +1 -1
- package/dist/types/ts4.1/drm/commonEme/StandardCommonEme.d.ts +1 -1
- package/dist/types/ts4.1/drm/commonEme/WebKitCommonEme.d.ts +2 -2
- package/dist/types/ts4.1/drm/licenseProvider/LicenseProvider.d.ts +1 -1
- package/dist/types/ts4.1/global/environment.d.ts +6 -2
- package/dist/types/ts4.1/patch/media/patches/createPreventStallsPatch.d.ts +1 -1
- package/dist/types/ts4.1/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +1 -1
- package/dist/types/ts4.1/playback/PlaybackControllerImpl.d.ts +2 -2
- package/dist/types/ts4.1/playback/logging/playbackStateLoggingHandler.d.ts +1 -1
- package/dist/types/ts4.1/playback/nextHasMetadata.d.ts +1 -1
- package/dist/types/ts4.1/streaming/AudioOptions.d.ts +39 -0
- package/dist/types/ts4.1/streaming/ContentStream.d.ts +4 -4
- package/dist/types/ts4.1/streaming/ContentStreamingOptions.d.ts +2 -2
- package/dist/types/ts4.1/streaming/LoadMetric.d.ts +58 -0
- package/dist/types/ts4.1/streaming/ManifestControllerImpl.d.ts +40 -0
- package/dist/types/ts4.1/streaming/MediaQualityMetadata.d.ts +2 -2
- package/dist/types/ts4.1/streaming/MediaTimeline.d.ts +6 -5
- package/dist/types/ts4.1/streaming/SegmentController.d.ts +2 -7
- package/dist/types/ts4.1/streaming/SegmentControllerImpl.d.ts +5 -6
- package/dist/types/ts4.1/streaming/SegmentReference.d.ts +1 -1
- package/dist/types/ts4.1/streaming/StreamingEventMap.d.ts +1 -1
- package/dist/types/ts4.1/streaming/abr/QualitySelector.d.ts +1 -1
- package/dist/types/ts4.1/streaming/abr/QualitySelectorImpl.d.ts +18 -3
- package/dist/types/ts4.1/streaming/buffering/BufferingController.d.ts +3 -13
- package/dist/types/ts4.1/streaming/buffering/MediaSourceController.d.ts +41 -15
- package/dist/types/ts4.1/streaming/buffering/SourceBufferController.d.ts +1 -1
- 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/createDefaultMediaTimelineTransformer.d.ts +1 -1
- package/dist/types/ts4.1/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts4.1/streaming/mediaTimelineFilter.d.ts +3 -3
- package/dist/types/ts4.1/streaming/mediaTimelineLanguageFilter.d.ts +1 -1
- package/dist/types/ts4.1/streaming/util/segment.d.ts +1 -1
- 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/AutoResetController.d.ts +37 -12
- package/dist/types/ts4.1/track/SeekRange.d.ts +9 -0
- package/dist/types/ts4.1/track/TrackController.d.ts +2 -2
- package/dist/types/ts4.1/track/TrackFactory.d.ts +1 -1
- package/dist/types/ts4.1/track/createVinylTrackFactories.d.ts +5 -5
- package/dist/types/ts4.1/track/dash/DashManifestController.d.ts +1 -1
- package/dist/types/ts4.1/track/dash/DashTrack.d.ts +4 -4
- package/dist/types/ts4.1/track/dash/buildDashMediaTimeline.d.ts +2 -2
- package/dist/types/ts4.1/track/dash/createDashContentTypesValue.d.ts +2 -2
- package/dist/types/ts4.1/track/dash/createDashFactories.d.ts +12 -12
- package/dist/types/ts4.1/track/dash/createDashManifestProvider.d.ts +1 -1
- package/dist/types/ts4.1/track/dash/createDefaultDashManifestTransformer.d.ts +1 -1
- package/dist/types/ts4.1/track/dash/manifestTransformUtils.d.ts +1 -1
- package/dist/types/ts4.1/track/dash/timeline/DashRepresentationSegmentProvider.d.ts +3 -3
- package/dist/types/ts4.1/track/dash/urlDashManifestProvider.d.ts +1 -1
- package/dist/types/ts4.1/track/dash/util/mpd.d.ts +3 -2
- package/dist/types/ts4.1/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/ts4.1/track/hls/buildHlsMediaTimeline.d.ts +3 -3
- package/dist/types/ts4.1/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
- package/dist/types/ts4.1/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts4.1/track/hls/util/hlsSegmentTime.d.ts +1 -1
- package/dist/types/ts4.1/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts4.1/track/mse/MseTrack.d.ts +3 -3
- package/dist/types/ts4.1/track/source/FixedPlaybackQuality.d.ts +1 -1
- package/dist/types/ts4.1/track/source/SourceObjectTrack.d.ts +5 -5
- package/dist/types/ts4.1/track/source/SourceTrack.d.ts +5 -5
- package/dist/types/ts4.1/track/source/SourceTrackBase.d.ts +3 -3
- 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.1/vinyl/VinylDeps.d.ts +1 -1
- package/dist/types/ts4.1/vinyl/VinylPlayer.d.ts +18 -2
- package/dist/types/ts4.1/vinyl/createVinylFactories.d.ts +9 -11
- 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 +146 -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/DrmController.d.ts +2 -2
- package/dist/types/ts4.7/drm/DrmControllerImpl.d.ts +3 -3
- package/dist/types/ts4.7/drm/DrmKeySystemResolver.d.ts +1 -1
- package/dist/types/ts4.7/drm/DrmOptions.d.ts +1 -1
- package/dist/types/ts4.7/drm/commonEme/CommonEme.d.ts +2 -2
- package/dist/types/ts4.7/drm/commonEme/CommonEmeFactory.d.ts +1 -1
- package/dist/types/ts4.7/drm/commonEme/MsCommonEme.d.ts +1 -1
- package/dist/types/ts4.7/drm/commonEme/StandardCommonEme.d.ts +1 -1
- package/dist/types/ts4.7/drm/commonEme/WebKitCommonEme.d.ts +2 -2
- package/dist/types/ts4.7/drm/licenseProvider/LicenseProvider.d.ts +1 -1
- package/dist/types/ts4.7/global/environment.d.ts +6 -2
- package/dist/types/ts4.7/patch/media/patches/createPreventStallsPatch.d.ts +1 -1
- package/dist/types/ts4.7/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +1 -1
- package/dist/types/ts4.7/playback/PlaybackControllerImpl.d.ts +2 -2
- package/dist/types/ts4.7/playback/logging/playbackStateLoggingHandler.d.ts +1 -1
- package/dist/types/ts4.7/playback/nextHasMetadata.d.ts +1 -1
- package/dist/types/ts4.7/streaming/AudioOptions.d.ts +39 -0
- package/dist/types/ts4.7/streaming/ContentStream.d.ts +4 -4
- package/dist/types/ts4.7/streaming/ContentStreamingOptions.d.ts +2 -2
- package/dist/types/ts4.7/streaming/LoadMetric.d.ts +58 -0
- package/dist/types/ts4.7/streaming/ManifestControllerImpl.d.ts +43 -0
- package/dist/types/ts4.7/streaming/MediaQualityMetadata.d.ts +2 -2
- package/dist/types/ts4.7/streaming/MediaTimeline.d.ts +6 -5
- package/dist/types/ts4.7/streaming/SegmentController.d.ts +2 -7
- package/dist/types/ts4.7/streaming/SegmentControllerImpl.d.ts +5 -6
- package/dist/types/ts4.7/streaming/SegmentReference.d.ts +1 -1
- package/dist/types/ts4.7/streaming/StreamingEventMap.d.ts +1 -1
- package/dist/types/ts4.7/streaming/abr/QualitySelector.d.ts +1 -1
- package/dist/types/ts4.7/streaming/abr/QualitySelectorImpl.d.ts +18 -3
- package/dist/types/ts4.7/streaming/buffering/BufferingController.d.ts +3 -13
- package/dist/types/ts4.7/streaming/buffering/MediaSourceController.d.ts +41 -15
- package/dist/types/ts4.7/streaming/buffering/SourceBufferController.d.ts +1 -1
- 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/createDefaultMediaTimelineTransformer.d.ts +1 -1
- package/dist/types/ts4.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts4.7/streaming/mediaTimelineFilter.d.ts +3 -3
- package/dist/types/ts4.7/streaming/mediaTimelineLanguageFilter.d.ts +1 -1
- package/dist/types/ts4.7/streaming/util/segment.d.ts +1 -1
- 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/AutoResetController.d.ts +37 -12
- package/dist/types/ts4.7/track/SeekRange.d.ts +9 -0
- package/dist/types/ts4.7/track/TrackController.d.ts +2 -2
- package/dist/types/ts4.7/track/TrackFactory.d.ts +1 -1
- package/dist/types/ts4.7/track/createVinylTrackFactories.d.ts +5 -5
- package/dist/types/ts4.7/track/dash/DashManifestController.d.ts +1 -1
- package/dist/types/ts4.7/track/dash/DashTrack.d.ts +4 -4
- package/dist/types/ts4.7/track/dash/buildDashMediaTimeline.d.ts +2 -2
- package/dist/types/ts4.7/track/dash/createDashContentTypesValue.d.ts +2 -2
- package/dist/types/ts4.7/track/dash/createDashFactories.d.ts +12 -12
- package/dist/types/ts4.7/track/dash/createDashManifestProvider.d.ts +1 -1
- package/dist/types/ts4.7/track/dash/createDefaultDashManifestTransformer.d.ts +1 -1
- package/dist/types/ts4.7/track/dash/manifestTransformUtils.d.ts +1 -1
- package/dist/types/ts4.7/track/dash/timeline/DashRepresentationSegmentProvider.d.ts +3 -3
- package/dist/types/ts4.7/track/dash/urlDashManifestProvider.d.ts +1 -1
- package/dist/types/ts4.7/track/dash/util/mpd.d.ts +3 -2
- package/dist/types/ts4.7/track/hls/HlsManifestData.d.ts +19 -0
- package/dist/types/ts4.7/track/hls/buildHlsMediaTimeline.d.ts +3 -3
- package/dist/types/ts4.7/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
- package/dist/types/ts4.7/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts4.7/track/hls/util/hlsSegmentTime.d.ts +1 -1
- package/dist/types/ts4.7/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts4.7/track/mse/MseTrack.d.ts +2 -2
- package/dist/types/ts4.7/track/source/FixedPlaybackQuality.d.ts +1 -1
- package/dist/types/ts4.7/track/source/SourceObjectTrack.d.ts +4 -4
- package/dist/types/ts4.7/track/source/SourceTrack.d.ts +4 -4
- package/dist/types/ts4.7/track/source/SourceTrackBase.d.ts +2 -2
- 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/types/ts4.7/vinyl/VinylDeps.d.ts +1 -1
- package/dist/types/ts4.7/vinyl/VinylPlayer.d.ts +26 -2
- package/dist/types/ts4.7/vinyl/createVinylFactories.d.ts +9 -11
- 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 +1456 -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 +756 -0
- package/dist/unit/types/current/drm/DrmControllerImpl.test.js +66 -1
- 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/MediaTimeline.test.js +6 -1
- package/dist/unit/types/current/streaming/MseTrack.test.js +4 -0
- package/dist/unit/types/current/streaming/SegmentControllerImpl.test.js +3 -33
- package/dist/unit/types/current/streaming/abr/QualitySelectorImpl.test.js +73 -0
- package/dist/unit/types/current/streaming/buffering/BufferingController.test.js +1 -41
- package/dist/unit/types/current/streaming/buffering/MediaSourceController.test.js +97 -17
- 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/createDefaultMediaTimelineTransformer.test.js +6 -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/streaming/mediaTimelineFilter.test.js +2 -0
- package/dist/unit/types/current/streaming/mediaTimelineLanguageFilter.test.js +7 -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/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 +199 -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 +393 -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/AutoResetController.test.js +134 -22
- package/dist/unit/types/current/track/dash/createDashContentStreamFactories.test.js +5 -1
- package/dist/unit/types/current/track/dash/createSegmentControllerFactory.test.js +5 -1
- package/dist/unit/types/current/track/dash/util/mpd.test.js +29 -0
- package/dist/unit/types/current/track/hls/buildHlsMediaTimeline.test.js +16 -8
- package/dist/unit/types/current/track/hls/createHlsContentStreamFactories.test.js +5 -1
- 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/VinylPlayer.test.js +35 -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/index.js +20 -14
- package/dist/vinylTestUtil/index.js.map +2 -2
- package/dist/vinylTestUtil/types/current/media/FrequencyAnalyzer.js +1 -1
- package/dist/vinylTestUtil/types/current/mediaSource/ControlledMediaSource.d.ts.map +1 -1
- 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 +72 -72
- package/dist/vinylTestUtil/types/current/mock/dom/ms/MockMSMediaKeySession.d.ts +2 -2
- package/dist/vinylTestUtil/types/current/mock/dom/webkit/MockWebKitMediaKeySession.d.ts +2 -2
- package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts +6 -6
- package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.js +7 -7
- package/dist/vinylTestUtil/types/current/mock/streaming/MockSegmentController.d.ts +0 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/MockSegmentController.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/MockSegmentController.js +0 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.d.ts +0 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.js +0 -1
- 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/mock/track/MockAutoResetController.d.ts +1 -0
- package/dist/vinylTestUtil/types/current/mock/track/MockAutoResetController.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/track/MockAutoResetController.js +1 -0
- package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts +5 -5
- package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.js +11 -7
- package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts +5 -5
- package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.js +11 -7
- package/dist/vinylTestUtil/types/current/player/createVinylSuite.js +1 -1
- package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/vinylTestUtil/types/current/util/playback/expectTrackCanSeek.js +1 -1
- package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlays.js +2 -2
- package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlaysUntil.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlaysUntil.js +1 -2
- package/dist/vinylTestUtil/types/ts3.7/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/dash/mockDashManifest.d.ts +72 -72
- package/dist/vinylTestUtil/types/ts3.7/mock/dom/ms/MockMSMediaKeySession.d.ts +2 -2
- package/dist/vinylTestUtil/types/ts3.7/mock/dom/webkit/MockWebKitMediaKeySession.d.ts +2 -2
- package/dist/vinylTestUtil/types/ts3.7/mock/player/MockVinylPlayerDependencies.d.ts +6 -6
- package/dist/vinylTestUtil/types/ts3.7/mock/streaming/MockSegmentController.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts3.7/mock/streaming/buffering/MockMediaSourceController.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts3.7/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/track/MockAutoResetController.d.ts +1 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/track/dash/createMockDashDependencies.d.ts +5 -5
- package/dist/vinylTestUtil/types/ts3.7/mock/track/hls/createMockHlsDependencies.d.ts +5 -5
- package/dist/vinylTestUtil/types/ts4.1/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/dash/mockDashManifest.d.ts +72 -72
- package/dist/vinylTestUtil/types/ts4.1/mock/dom/ms/MockMSMediaKeySession.d.ts +2 -2
- package/dist/vinylTestUtil/types/ts4.1/mock/dom/webkit/MockWebKitMediaKeySession.d.ts +2 -2
- package/dist/vinylTestUtil/types/ts4.1/mock/player/MockVinylPlayerDependencies.d.ts +6 -6
- package/dist/vinylTestUtil/types/ts4.1/mock/streaming/MockSegmentController.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts4.1/mock/streaming/buffering/MockMediaSourceController.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts4.1/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/track/MockAutoResetController.d.ts +1 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/track/dash/createMockDashDependencies.d.ts +5 -5
- package/dist/vinylTestUtil/types/ts4.1/mock/track/hls/createMockHlsDependencies.d.ts +5 -5
- package/dist/vinylTestUtil/types/ts4.7/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/dash/mockDashManifest.d.ts +72 -72
- package/dist/vinylTestUtil/types/ts4.7/mock/dom/ms/MockMSMediaKeySession.d.ts +2 -2
- package/dist/vinylTestUtil/types/ts4.7/mock/dom/webkit/MockWebKitMediaKeySession.d.ts +2 -2
- package/dist/vinylTestUtil/types/ts4.7/mock/player/MockVinylPlayerDependencies.d.ts +6 -6
- package/dist/vinylTestUtil/types/ts4.7/mock/streaming/MockSegmentController.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts4.7/mock/streaming/buffering/MockMediaSourceController.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts4.7/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/track/MockAutoResetController.d.ts +1 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/track/dash/createMockDashDependencies.d.ts +5 -5
- package/dist/vinylTestUtil/types/ts4.7/mock/track/hls/createMockHlsDependencies.d.ts +5 -5
- package/docs/USAGE.md +33 -0
- package/package.json +13 -16
|
@@ -2,28 +2,49 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { MediaSourceControllerImpl, MediaSourceError, } from '@amazon/vinyl';
|
|
6
|
-
import { Deferred } from '@amazon/vinyl-util';
|
|
7
|
-
import { flushPromises, MockMediaSource, MockSourceBuffer, } from '@amazon/vinyl-util/browserTestUtil';
|
|
5
|
+
import { DURATION_PADDING, LIVE_DURATION, MediaSourceControllerImpl, MediaSourceError, } from '@amazon/vinyl';
|
|
6
|
+
import { AbortError, Deferred } from '@amazon/vinyl-util';
|
|
7
|
+
import { flushPromises, implementEventFakes, mockEvent, MockMediaSource, MockSourceBuffer, } from '@amazon/vinyl-util/browserTestUtil';
|
|
8
8
|
import { data } from '@amazon/vinyl-observable';
|
|
9
9
|
var createSpy = jasmine.createSpy;
|
|
10
10
|
var objectContaining = jasmine.objectContaining;
|
|
11
11
|
import { createEventSpy } from '@amazon/vinyl-util/testUtil';
|
|
12
|
+
const VOD_DURATION = 60;
|
|
13
|
+
function createVodTimeline(duration = VOD_DURATION) {
|
|
14
|
+
return {
|
|
15
|
+
periods: [],
|
|
16
|
+
minBufferTime: 0,
|
|
17
|
+
getDuration: () => Promise.resolve(duration),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const liveTimeline = {
|
|
21
|
+
periods: [],
|
|
22
|
+
minBufferTime: 0,
|
|
23
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
24
|
+
};
|
|
12
25
|
describe('MediaSourceControllerImpl', () => {
|
|
13
26
|
let mediaSourceFactory;
|
|
14
27
|
let contentTypesValue;
|
|
28
|
+
let mediaTimelineTransformed;
|
|
15
29
|
let mockMediaSource;
|
|
16
30
|
let deps;
|
|
17
31
|
let controller;
|
|
32
|
+
function open() {
|
|
33
|
+
mockMediaSource.readyState = 'open';
|
|
34
|
+
mockMediaSource.dispatchEvent(mockEvent('sourceopen'));
|
|
35
|
+
}
|
|
18
36
|
beforeEach(() => {
|
|
19
37
|
mockMediaSource = new MockMediaSource();
|
|
38
|
+
implementEventFakes(mockMediaSource);
|
|
20
39
|
mockMediaSource.addSourceBuffer.and.callFake(() => new MockSourceBuffer());
|
|
21
40
|
mediaSourceFactory =
|
|
22
41
|
createSpy('mediaSourceFactory').and.returnValue(mockMediaSource);
|
|
23
42
|
contentTypesValue = data(Promise.resolve(new Set(['audio'])));
|
|
43
|
+
mediaTimelineTransformed = data(Promise.resolve(createVodTimeline()));
|
|
24
44
|
deps = {
|
|
25
45
|
mediaSourceFactory,
|
|
26
46
|
contentTypesValue,
|
|
47
|
+
mediaTimelineTransformed,
|
|
27
48
|
};
|
|
28
49
|
controller = new MediaSourceControllerImpl(deps);
|
|
29
50
|
});
|
|
@@ -42,13 +63,71 @@ describe('MediaSourceControllerImpl', () => {
|
|
|
42
63
|
});
|
|
43
64
|
});
|
|
44
65
|
describe('duration', () => {
|
|
45
|
-
it('
|
|
46
|
-
|
|
47
|
-
|
|
66
|
+
it('sets media source duration after sourceopen', async () => {
|
|
67
|
+
open();
|
|
68
|
+
await flushPromises();
|
|
69
|
+
expect(mockMediaSource.duration).toBe(VOD_DURATION + DURATION_PADDING);
|
|
70
|
+
});
|
|
71
|
+
it('uses LIVE_DURATION for live timelines', async () => {
|
|
72
|
+
mediaTimelineTransformed.value = Promise.resolve(liveTimeline);
|
|
73
|
+
open();
|
|
74
|
+
await flushPromises();
|
|
75
|
+
expect(mockMediaSource.duration).toBe(LIVE_DURATION);
|
|
76
|
+
});
|
|
77
|
+
it('does not set duration when media source is not open', async () => {
|
|
78
|
+
await flushPromises();
|
|
79
|
+
expect(mockMediaSource.duration).toBe(0);
|
|
80
|
+
});
|
|
81
|
+
it('refreshes duration when timeline changes', async () => {
|
|
82
|
+
open();
|
|
83
|
+
await flushPromises();
|
|
84
|
+
expect(mockMediaSource.duration).toBe(VOD_DURATION + DURATION_PADDING);
|
|
85
|
+
mediaTimelineTransformed.value = Promise.resolve(createVodTimeline(120));
|
|
86
|
+
await flushPromises();
|
|
87
|
+
expect(mockMediaSource.duration).toBe(120 + DURATION_PADDING);
|
|
88
|
+
});
|
|
89
|
+
it('emits an error if getDuration rejects', async () => {
|
|
90
|
+
const errorSpy = createEventSpy(controller, 'error');
|
|
91
|
+
const error = new Error('expected');
|
|
92
|
+
mediaTimelineTransformed.value = Promise.resolve({
|
|
93
|
+
periods: [],
|
|
94
|
+
minBufferTime: 0,
|
|
95
|
+
getDuration: () => Promise.reject(error),
|
|
96
|
+
});
|
|
97
|
+
open();
|
|
98
|
+
await flushPromises();
|
|
99
|
+
expect(errorSpy).toHaveBeenCalledWith({
|
|
100
|
+
target: controller,
|
|
101
|
+
error,
|
|
102
|
+
});
|
|
48
103
|
});
|
|
49
|
-
it('
|
|
50
|
-
|
|
51
|
-
|
|
104
|
+
it('does not emit silent (abort) errors', async () => {
|
|
105
|
+
const errorSpy = createEventSpy(controller, 'error');
|
|
106
|
+
mediaTimelineTransformed.value = Promise.resolve({
|
|
107
|
+
periods: [],
|
|
108
|
+
minBufferTime: 0,
|
|
109
|
+
getDuration: () => Promise.reject(new AbortError()),
|
|
110
|
+
});
|
|
111
|
+
open();
|
|
112
|
+
await flushPromises();
|
|
113
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
114
|
+
});
|
|
115
|
+
it('discards a duration result if the source closed before it resolved', async () => {
|
|
116
|
+
const deferred = new Deferred();
|
|
117
|
+
mediaTimelineTransformed.value = Promise.resolve({
|
|
118
|
+
periods: [],
|
|
119
|
+
minBufferTime: 0,
|
|
120
|
+
getDuration: () => deferred,
|
|
121
|
+
});
|
|
122
|
+
open();
|
|
123
|
+
await flushPromises();
|
|
124
|
+
// Close before the duration resolves; the late result should be ignored.
|
|
125
|
+
mockMediaSource.readyState = 'closed';
|
|
126
|
+
mockMediaSource.dispatchEvent(mockEvent('sourceclose'));
|
|
127
|
+
deferred.resolve(123);
|
|
128
|
+
await flushPromises();
|
|
129
|
+
expect(mockMediaSource.duration).toBe(0);
|
|
130
|
+
expect(controller.readyToAppend).toBeFalse();
|
|
52
131
|
});
|
|
53
132
|
});
|
|
54
133
|
describe('createSourceBuffer', () => {
|
|
@@ -58,18 +137,15 @@ describe('MediaSourceControllerImpl', () => {
|
|
|
58
137
|
mockMediaSource.addSourceBuffer.and.returnValue(mockSourceBuffer);
|
|
59
138
|
});
|
|
60
139
|
it('creates source buffer with correct mime type', () => {
|
|
61
|
-
const controller = new MediaSourceControllerImpl(deps);
|
|
62
140
|
const ref = controller.createSourceBuffer('audio', 'audio/mp4');
|
|
63
141
|
expect(mockMediaSource.addSourceBuffer).toHaveBeenCalledWith('audio/mp4');
|
|
64
142
|
expect(ref.value).toBe(mockSourceBuffer);
|
|
65
143
|
});
|
|
66
144
|
it('sets source buffer mode to sequence', () => {
|
|
67
|
-
const controller = new MediaSourceControllerImpl(deps);
|
|
68
145
|
controller.createSourceBuffer('audio', 'audio/mp4');
|
|
69
146
|
expect(mockSourceBuffer.mode).toBe('sequence');
|
|
70
147
|
});
|
|
71
148
|
it('emits error events when contentTypesValue rejects', async () => {
|
|
72
|
-
const controller = new MediaSourceControllerImpl(deps);
|
|
73
149
|
const errorSpy = createEventSpy(controller, 'error');
|
|
74
150
|
const error = new Error('expected error');
|
|
75
151
|
contentTypesValue.value = Promise.reject(error);
|
|
@@ -80,13 +156,20 @@ describe('MediaSourceControllerImpl', () => {
|
|
|
80
156
|
});
|
|
81
157
|
});
|
|
82
158
|
describe('readyToAppend', () => {
|
|
83
|
-
it('is true
|
|
84
|
-
|
|
159
|
+
it('is true only after duration is set and all source buffers are created', async () => {
|
|
160
|
+
// Each createSourceBuffer must return a distinct SourceBuffer because
|
|
161
|
+
// the controller dedupes buffers by identity.
|
|
162
|
+
mockMediaSource.addSourceBuffer.and.callFake(() => new MockSourceBuffer());
|
|
85
163
|
const readyToAppendSpy = createEventSpy(controller, 'readyToAppend');
|
|
86
164
|
expect(controller.readyToAppend).toBeFalse();
|
|
87
165
|
await flushPromises();
|
|
88
166
|
expect(readyToAppendSpy).not.toHaveBeenCalled();
|
|
167
|
+
// Source buffer alone is not enough — duration must be set.
|
|
89
168
|
controller.createSourceBuffer('audio', 'audio/mp4');
|
|
169
|
+
expect(controller.readyToAppend).toBeFalse();
|
|
170
|
+
expect(readyToAppendSpy).not.toHaveBeenCalled();
|
|
171
|
+
open();
|
|
172
|
+
await flushPromises();
|
|
90
173
|
expect(controller.readyToAppend).toBeTrue();
|
|
91
174
|
expect(readyToAppendSpy).toHaveBeenCalledTimes(1);
|
|
92
175
|
readyToAppendSpy.calls.reset();
|
|
@@ -104,21 +187,18 @@ describe('MediaSourceControllerImpl', () => {
|
|
|
104
187
|
});
|
|
105
188
|
});
|
|
106
189
|
it('throws MediaSourceError when addSourceBuffer fails', () => {
|
|
107
|
-
const controller = new MediaSourceControllerImpl(deps);
|
|
108
190
|
const error = new Error('test error');
|
|
109
191
|
mockMediaSource.addSourceBuffer.and.throwError(error);
|
|
110
192
|
expect(() => controller.createSourceBuffer('audio', 'invalid/type')).toThrowError(MediaSourceError, 'error creating source buffer');
|
|
111
193
|
});
|
|
112
194
|
describe('SourceBufferRef disposal', () => {
|
|
113
195
|
it('removes source buffer from media source', () => {
|
|
114
|
-
const controller = new MediaSourceControllerImpl(deps);
|
|
115
196
|
mockMediaSource.readyState = 'open';
|
|
116
197
|
const ref = controller.createSourceBuffer('audio', 'audio/mp4');
|
|
117
198
|
ref.dispose();
|
|
118
199
|
expect(mockMediaSource.removeSourceBuffer).toHaveBeenCalledWith(mockSourceBuffer);
|
|
119
200
|
});
|
|
120
201
|
it('does not remove source buffer when media source is closed', () => {
|
|
121
|
-
const controller = new MediaSourceControllerImpl(deps);
|
|
122
202
|
mockMediaSource.readyState = 'open';
|
|
123
203
|
const ref = controller.createSourceBuffer('audio', 'audio/mp4');
|
|
124
204
|
mockMediaSource.readyState = 'closed';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codecDenylist.test.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/streaming/buffering/codecDenylist.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { clearCodecDenylist, denylistCodecsFromMimeType, getDenylistedCodecs, isMimeTypeDenylisted, } from '@amazon/vinyl';
|
|
6
|
+
describe('codecDenylist', () => {
|
|
7
|
+
afterEach(() => {
|
|
8
|
+
clearCodecDenylist();
|
|
9
|
+
});
|
|
10
|
+
describe('denylistCodecsFromMimeType', () => {
|
|
11
|
+
it('adds codecs and returns true on first denylist', () => {
|
|
12
|
+
expect(denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"')).toBeTrue();
|
|
13
|
+
expect(getDenylistedCodecs()).toContain('hvc1.1');
|
|
14
|
+
});
|
|
15
|
+
it('returns false when all codecs are already denylisted', () => {
|
|
16
|
+
denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
|
|
17
|
+
expect(denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"')).toBeFalse();
|
|
18
|
+
});
|
|
19
|
+
it('returns true when at least one codec is newly added', () => {
|
|
20
|
+
denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
|
|
21
|
+
expect(denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1,ec-3"')).toBeTrue();
|
|
22
|
+
});
|
|
23
|
+
it('returns false for a mimeType with no codecs', () => {
|
|
24
|
+
expect(denylistCodecsFromMimeType('video/mp4')).toBeFalse();
|
|
25
|
+
});
|
|
26
|
+
it('stores codecs lowercased', () => {
|
|
27
|
+
denylistCodecsFromMimeType('video/mp4; codecs="HVC1.1"');
|
|
28
|
+
expect(getDenylistedCodecs()).toContain('hvc1.1');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe('isMimeTypeDenylisted', () => {
|
|
32
|
+
it('returns true when a codec is denylisted', () => {
|
|
33
|
+
denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
|
|
34
|
+
expect(isMimeTypeDenylisted('video/mp4; codecs="hvc1.1"')).toBeTrue();
|
|
35
|
+
});
|
|
36
|
+
it('is case-insensitive', () => {
|
|
37
|
+
denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
|
|
38
|
+
expect(isMimeTypeDenylisted('video/mp4; codecs="HVC1.1"')).toBeTrue();
|
|
39
|
+
});
|
|
40
|
+
it('returns false when no codec is denylisted', () => {
|
|
41
|
+
denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
|
|
42
|
+
expect(isMimeTypeDenylisted('video/mp4; codecs="avc1.64001f"')).toBeFalse();
|
|
43
|
+
});
|
|
44
|
+
it('returns false for a mimeType with no codecs', () => {
|
|
45
|
+
denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
|
|
46
|
+
expect(isMimeTypeDenylisted('video/mp4')).toBeFalse();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe('clearCodecDenylist', () => {
|
|
50
|
+
it('empties the denylist', () => {
|
|
51
|
+
denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
|
|
52
|
+
clearCodecDenylist();
|
|
53
|
+
expect(getDenylistedCodecs()).toEqual([]);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAllowedContentTypesValue.test.d.ts","sourceRoot":"","sources":["../../../../../test/unit/streaming/createAllowedContentTypesValue.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { createAllowedContentTypesValue, } from '@amazon/vinyl';
|
|
6
|
+
import { data } from '@amazon/vinyl-observable';
|
|
7
|
+
describe('createAllowedContentTypesValue', () => {
|
|
8
|
+
let baseContentTypesValue;
|
|
9
|
+
let options;
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
baseContentTypesValue = data(Promise.resolve(new Set(['audio', 'video', 'text'])));
|
|
12
|
+
options = data({ allowedContentTypes: null });
|
|
13
|
+
});
|
|
14
|
+
it('passes all content types through when the allow list is null', async () => {
|
|
15
|
+
const result = await createAllowedContentTypesValue({
|
|
16
|
+
baseContentTypesValue,
|
|
17
|
+
options,
|
|
18
|
+
}).value;
|
|
19
|
+
expect(result).toEqual(new Set(['audio', 'video', 'text']));
|
|
20
|
+
});
|
|
21
|
+
it('keeps only the allowed media content types', async () => {
|
|
22
|
+
options.value = { allowedContentTypes: ['audio'] };
|
|
23
|
+
const result = await createAllowedContentTypesValue({
|
|
24
|
+
baseContentTypesValue,
|
|
25
|
+
options,
|
|
26
|
+
}).value;
|
|
27
|
+
// Text always passes through; video is dropped.
|
|
28
|
+
expect(result).toEqual(new Set(['audio', 'text']));
|
|
29
|
+
});
|
|
30
|
+
it('always keeps text even when only video is allowed', async () => {
|
|
31
|
+
options.value = { allowedContentTypes: ['video'] };
|
|
32
|
+
const result = await createAllowedContentTypesValue({
|
|
33
|
+
baseContentTypesValue,
|
|
34
|
+
options,
|
|
35
|
+
}).value;
|
|
36
|
+
expect(result).toEqual(new Set(['video', 'text']));
|
|
37
|
+
});
|
|
38
|
+
it('keeps text even when the allow list is empty', async () => {
|
|
39
|
+
options.value = { allowedContentTypes: [] };
|
|
40
|
+
const result = await createAllowedContentTypesValue({
|
|
41
|
+
baseContentTypesValue,
|
|
42
|
+
options,
|
|
43
|
+
}).value;
|
|
44
|
+
expect(result).toEqual(new Set(['text']));
|
|
45
|
+
});
|
|
46
|
+
it('ignores allowed types not present in the manifest', async () => {
|
|
47
|
+
baseContentTypesValue.value = Promise.resolve(new Set(['audio']));
|
|
48
|
+
options.value = { allowedContentTypes: ['audio', 'video'] };
|
|
49
|
+
const result = await createAllowedContentTypesValue({
|
|
50
|
+
baseContentTypesValue,
|
|
51
|
+
options,
|
|
52
|
+
}).value;
|
|
53
|
+
expect(result).toEqual(new Set(['audio']));
|
|
54
|
+
});
|
|
55
|
+
it('re-emits a newly filtered set when the allow list changes', async () => {
|
|
56
|
+
const value = createAllowedContentTypesValue({
|
|
57
|
+
baseContentTypesValue,
|
|
58
|
+
options,
|
|
59
|
+
});
|
|
60
|
+
const emissions = [];
|
|
61
|
+
const unsub = value.onData((promise) => {
|
|
62
|
+
void promise.then((set) => emissions.push(set));
|
|
63
|
+
});
|
|
64
|
+
// Changing the allow list should produce a new, filtered emission,
|
|
65
|
+
// which is what drives the track to reload with only these types.
|
|
66
|
+
options.value = { allowedContentTypes: ['audio'] };
|
|
67
|
+
expect(await value.value).toEqual(new Set(['audio', 'text']));
|
|
68
|
+
unsub();
|
|
69
|
+
// Wait for all pending promise callbacks to resolve.
|
|
70
|
+
await Promise.resolve();
|
|
71
|
+
await Promise.resolve();
|
|
72
|
+
expect(emissions).toEqual([
|
|
73
|
+
new Set(['audio', 'video', 'text']),
|
|
74
|
+
new Set(['audio', 'text']),
|
|
75
|
+
]);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
@@ -48,6 +48,7 @@ describe('createDefaultMediaTimelineTransformer', () => {
|
|
|
48
48
|
},
|
|
49
49
|
],
|
|
50
50
|
minBufferTime: 2,
|
|
51
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
51
52
|
};
|
|
52
53
|
const result = await createDefaultMediaTimelineTransformer(createDeps(timeline)).value;
|
|
53
54
|
expect(result.periods[0].qualities.length).toBe(1);
|
|
@@ -75,6 +76,7 @@ describe('createDefaultMediaTimelineTransformer', () => {
|
|
|
75
76
|
},
|
|
76
77
|
],
|
|
77
78
|
minBufferTime: 2,
|
|
79
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
78
80
|
};
|
|
79
81
|
const result = await createDefaultMediaTimelineTransformer(createDeps(timeline)).value;
|
|
80
82
|
expect(result.periods[0].qualities.length).toBe(1);
|
|
@@ -107,6 +109,7 @@ describe('createDefaultMediaTimelineTransformer', () => {
|
|
|
107
109
|
},
|
|
108
110
|
],
|
|
109
111
|
minBufferTime: 2,
|
|
112
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
110
113
|
};
|
|
111
114
|
const result = await createDefaultMediaTimelineTransformer(createDeps(timeline)).value;
|
|
112
115
|
expect(result.periods[0].qualities.length).toBe(1);
|
|
@@ -135,6 +138,7 @@ describe('createDefaultMediaTimelineTransformer', () => {
|
|
|
135
138
|
},
|
|
136
139
|
],
|
|
137
140
|
minBufferTime: 2,
|
|
141
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
138
142
|
};
|
|
139
143
|
const result = await createDefaultMediaTimelineTransformer(createDeps(timeline, 'en')).value;
|
|
140
144
|
expect(result.periods[0].qualities.length).toBe(1);
|
|
@@ -163,6 +167,7 @@ describe('createDefaultMediaTimelineTransformer', () => {
|
|
|
163
167
|
},
|
|
164
168
|
],
|
|
165
169
|
minBufferTime: 2,
|
|
170
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
166
171
|
};
|
|
167
172
|
const options = data({
|
|
168
173
|
preferredAudioLanguage: 'en',
|
|
@@ -197,6 +202,7 @@ describe('createDefaultMediaTimelineTransformer', () => {
|
|
|
197
202
|
},
|
|
198
203
|
],
|
|
199
204
|
minBufferTime: 5,
|
|
205
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
200
206
|
};
|
|
201
207
|
const result = await createDefaultMediaTimelineTransformer(createDeps(timeline)).value;
|
|
202
208
|
expect(result.minBufferTime).toBe(5);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaTimelineAccessibilityFilter.test.d.ts","sourceRoot":"","sources":["../../../../../test/unit/streaming/mediaTimelineAccessibilityFilter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { createAudioDescriptionFilter, createEmptyMediaQualityMetadata, filterTimelineQualities, isAudioDescription, throwNoPlayableAudio, } from '@amazon/vinyl';
|
|
6
|
+
function audioQuality(id, characteristics) {
|
|
7
|
+
return {
|
|
8
|
+
metadata: {
|
|
9
|
+
...createEmptyMediaQualityMetadata(),
|
|
10
|
+
qualityId: id,
|
|
11
|
+
contentType: 'audio',
|
|
12
|
+
lang: 'en',
|
|
13
|
+
characteristics,
|
|
14
|
+
},
|
|
15
|
+
getSegment: () => Promise.resolve(null),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function videoQuality() {
|
|
19
|
+
return {
|
|
20
|
+
metadata: {
|
|
21
|
+
...createEmptyMediaQualityMetadata(),
|
|
22
|
+
qualityId: 'video',
|
|
23
|
+
contentType: 'video',
|
|
24
|
+
},
|
|
25
|
+
getSegment: () => Promise.resolve(null),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function timelineOf(qualities) {
|
|
29
|
+
return {
|
|
30
|
+
periods: [{ startTime: 0, endTime: 10, qualities: [...qualities] }],
|
|
31
|
+
minBufferTime: 2,
|
|
32
|
+
getAdBreaks: () => Promise.resolve([]),
|
|
33
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** The audio qualityIds kept after applying the filter. */
|
|
37
|
+
function keptAudio(qualities, preferDescription) {
|
|
38
|
+
const filtered = filterTimelineQualities(createAudioDescriptionFilter(preferDescription), throwNoPlayableAudio, timelineOf(qualities));
|
|
39
|
+
return filtered.periods[0].qualities
|
|
40
|
+
.filter((q) => q.metadata.contentType === 'audio')
|
|
41
|
+
.map((q) => q.metadata.qualityId);
|
|
42
|
+
}
|
|
43
|
+
const DVS = 'public.accessibility.describes-video';
|
|
44
|
+
describe('throwNoPlayableAudio', () => {
|
|
45
|
+
it('throws (defensive guard — the filter never strands audio)', () => {
|
|
46
|
+
expect(() => throwNoPlayableAudio()).toThrowError(/No playable audio rendition/);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe('isAudioDescription', () => {
|
|
50
|
+
it('detects the HLS describes-video characteristic', () => {
|
|
51
|
+
expect(isAudioDescription({
|
|
52
|
+
...createEmptyMediaQualityMetadata(),
|
|
53
|
+
characteristics: [DVS],
|
|
54
|
+
})).toBeTrue();
|
|
55
|
+
});
|
|
56
|
+
it('detects the DASH description role', () => {
|
|
57
|
+
expect(isAudioDescription({
|
|
58
|
+
...createEmptyMediaQualityMetadata(),
|
|
59
|
+
characteristics: ['description'],
|
|
60
|
+
})).toBeTrue();
|
|
61
|
+
});
|
|
62
|
+
it('is false for a plain rendition', () => {
|
|
63
|
+
expect(isAudioDescription(createEmptyMediaQualityMetadata())).toBeFalse();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('createAudioDescriptionFilter', () => {
|
|
67
|
+
it('drops the description track when a main alternative exists (default)', () => {
|
|
68
|
+
const kept = keptAudio([
|
|
69
|
+
audioQuality('dvs', [DVS]),
|
|
70
|
+
audioQuality('main', []),
|
|
71
|
+
videoQuality(),
|
|
72
|
+
], false);
|
|
73
|
+
expect(kept).toEqual(['main']);
|
|
74
|
+
});
|
|
75
|
+
it('keeps the description track when it is the only audio (never strands)', () => {
|
|
76
|
+
const kept = keptAudio([audioQuality('dvs', [DVS]), videoQuality()], false);
|
|
77
|
+
expect(kept).toEqual(['dvs']);
|
|
78
|
+
});
|
|
79
|
+
it('keeps only the description track when opted in', () => {
|
|
80
|
+
const kept = keptAudio([
|
|
81
|
+
audioQuality('dvs', [DVS]),
|
|
82
|
+
audioQuality('main', []),
|
|
83
|
+
videoQuality(),
|
|
84
|
+
], true);
|
|
85
|
+
expect(kept).toEqual(['dvs']);
|
|
86
|
+
});
|
|
87
|
+
it('keeps all audio when opted in but no description exists', () => {
|
|
88
|
+
const kept = keptAudio([audioQuality('a', []), audioQuality('b', []), videoQuality()], true);
|
|
89
|
+
expect(kept).toEqual(['a', 'b']);
|
|
90
|
+
});
|
|
91
|
+
it('leaves non-audio qualities untouched', () => {
|
|
92
|
+
const filtered = filterTimelineQualities(createAudioDescriptionFilter(false), throwNoPlayableAudio, timelineOf([
|
|
93
|
+
audioQuality('dvs', [DVS]),
|
|
94
|
+
audioQuality('main', []),
|
|
95
|
+
videoQuality(),
|
|
96
|
+
]));
|
|
97
|
+
expect(filtered.periods[0].qualities.some((q) => q.metadata.contentType === 'video')).toBeTrue();
|
|
98
|
+
});
|
|
99
|
+
});
|
|
@@ -27,6 +27,7 @@ describe('filterTimelineQualities', () => {
|
|
|
27
27
|
},
|
|
28
28
|
],
|
|
29
29
|
minBufferTime: 2,
|
|
30
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
30
31
|
};
|
|
31
32
|
it('filters qualities by predicate', () => {
|
|
32
33
|
const result = filterTimelineQualities((q) => q.contentType === 'audio', () => {
|
|
@@ -60,6 +61,7 @@ describe('filterTimelineQualitiesAsync', () => {
|
|
|
60
61
|
},
|
|
61
62
|
],
|
|
62
63
|
minBufferTime: 2,
|
|
64
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
63
65
|
};
|
|
64
66
|
it('filters qualities by async predicate', async () => {
|
|
65
67
|
const result = await filterTimelineQualitiesAsync((q) => Promise.resolve(q.contentType === 'audio'), () => {
|
|
@@ -41,6 +41,7 @@ describe('createLanguageFilter', () => {
|
|
|
41
41
|
},
|
|
42
42
|
],
|
|
43
43
|
minBufferTime: 2,
|
|
44
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
44
45
|
};
|
|
45
46
|
const result = applyLanguageFilter(timeline, 'en', 'audio');
|
|
46
47
|
expect(result.periods[0].qualities.length).toBe(2); // en audio + video
|
|
@@ -59,6 +60,7 @@ describe('createLanguageFilter', () => {
|
|
|
59
60
|
},
|
|
60
61
|
],
|
|
61
62
|
minBufferTime: 2,
|
|
63
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
62
64
|
};
|
|
63
65
|
const result = applyLanguageFilter(timeline, 'en', 'audio');
|
|
64
66
|
expect(result.periods[0].qualities.length).toBe(2); // en + null
|
|
@@ -73,6 +75,7 @@ describe('createLanguageFilter', () => {
|
|
|
73
75
|
},
|
|
74
76
|
],
|
|
75
77
|
minBufferTime: 5,
|
|
78
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
76
79
|
};
|
|
77
80
|
const result = applyLanguageFilter(timeline, 'en', 'audio');
|
|
78
81
|
expect(result.minBufferTime).toBe(5);
|
|
@@ -91,6 +94,7 @@ describe('createLanguageFilter', () => {
|
|
|
91
94
|
},
|
|
92
95
|
],
|
|
93
96
|
minBufferTime: 2,
|
|
97
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
94
98
|
};
|
|
95
99
|
const result = applyLanguageFilter(timeline, 'en', 'audio');
|
|
96
100
|
expect(result.periods[0].qualities.some((q) => q.metadata.contentType === 'video')).toBeTrue();
|
|
@@ -105,6 +109,7 @@ describe('createLanguageFilter', () => {
|
|
|
105
109
|
},
|
|
106
110
|
],
|
|
107
111
|
minBufferTime: 2,
|
|
112
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
108
113
|
};
|
|
109
114
|
// 'xx' doesn't match 'ja', so all kept
|
|
110
115
|
const result = applyLanguageFilter(timeline, 'xx', 'audio');
|
|
@@ -131,6 +136,7 @@ describe('createLanguageFilter', () => {
|
|
|
131
136
|
},
|
|
132
137
|
],
|
|
133
138
|
minBufferTime: 2,
|
|
139
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
134
140
|
};
|
|
135
141
|
// 'en' matches period 1 but not period 2
|
|
136
142
|
// Period 1: filtered to 'en' only
|
|
@@ -161,6 +167,7 @@ describe('createLanguageFilter', () => {
|
|
|
161
167
|
},
|
|
162
168
|
],
|
|
163
169
|
minBufferTime: 2,
|
|
170
|
+
getDuration: () => Promise.resolve(Infinity),
|
|
164
171
|
};
|
|
165
172
|
const result = applyLanguageFilter(timeline, 'en', 'audio');
|
|
166
173
|
// Period 1: filtered to 'en'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HtmlTextTrackRenderer.test.d.ts","sourceRoot":"","sources":["../../../../../test/unit/text/HtmlTextTrackRenderer.test.ts"],"names":[],"mappings":""}
|