@byomakase/omakase-player
Version:
## Omakase Player - Open source JavaScript framework for building frame accurate video experiences
173 lines (172 loc) • 15 kB
TypeScript
import { OmpBroadcastChannelActionsMap } from '../common/omp-broadcast-channel';
import { VideoControllerApi } from './video-controller-api';
import { UnwrapObservable } from '../types';
import { Observable } from 'rxjs';
type ExtractType<T, K extends keyof T> = T[K];
type ExtractReturnType<T, K extends keyof T> = T[K] extends (...args: any[]) => infer R ? R : never;
type ExtractParameterTypes<T, K extends keyof T> = T[K] extends (...args: infer A) => any ? A : never;
type ExtractPropertyTypes<T, K extends keyof T> = {
requestType: UnwrapObservable<ExtractType<T, K>>;
responseType: ExtractType<T, K>;
};
type ExtractMethodTypes<T, K extends keyof T> = {
requestType: ExtractParameterTypes<T, K>;
responseType: ExtractReturnType<T, K>;
};
export type HandshakeChannelActionsMap = OmpBroadcastChannelActionsMap<{
'DetachedControllerProxy.connect': {
requestType: {
proxyId: string;
};
responseType: {
proxyId: string;
messageChannelId: string;
};
};
'DetachedControllerProxy.connected': {
requestType: {
proxyId: string;
messageChannelId: string;
};
responseType: {
proxyId: string;
};
};
'DetachedControllerProxy.heartbeat': {
requestType: {
proxyId: string;
heartbeat: number;
};
responseType: {
proxyId: string;
heartbeat: number;
};
};
}>;
export type FlattenObservableToVoid<T> = T extends Observable<infer U> ? Observable<void> : T;
export type MessageChannelActionsMap = OmpBroadcastChannelActionsMap<{
'VideoControllerApi.onVideoLoading$': ExtractPropertyTypes<VideoControllerApi, 'onVideoLoading$'>;
'VideoControllerApi.onVideoLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onVideoLoaded$'>;
'VideoControllerApi.onPlay$': ExtractPropertyTypes<VideoControllerApi, 'onPlay$'>;
'VideoControllerApi.onPause$': ExtractPropertyTypes<VideoControllerApi, 'onPause$'>;
'VideoControllerApi.onVideoTimeChange$': ExtractPropertyTypes<VideoControllerApi, 'onVideoTimeChange$'>;
'VideoControllerApi.onSeeking$': ExtractPropertyTypes<VideoControllerApi, 'onSeeking$'>;
'VideoControllerApi.onSeeked$': ExtractPropertyTypes<VideoControllerApi, 'onSeeked$'>;
'VideoControllerApi.onBuffering$': ExtractPropertyTypes<VideoControllerApi, 'onBuffering$'>;
'VideoControllerApi.onEnded$': ExtractPropertyTypes<VideoControllerApi, 'onEnded$'>;
'VideoControllerApi.onAudioSwitched$': ExtractPropertyTypes<VideoControllerApi, 'onAudioSwitched$'>;
'VideoControllerApi.onAudioUpdated$': ExtractPropertyTypes<VideoControllerApi, 'onAudioUpdated$'>;
'VideoControllerApi.onAudioOutputVolumeChange$': ExtractPropertyTypes<VideoControllerApi, 'onAudioOutputVolumeChange$'>;
'VideoControllerApi.onVideoWindowPlaybackStateChange$': ExtractPropertyTypes<VideoControllerApi, 'onVideoWindowPlaybackStateChange$'>;
'VideoControllerApi.onVideoError$': ExtractPropertyTypes<VideoControllerApi, 'onVideoError$'>;
'VideoControllerApi.onVolumeChange$': ExtractPropertyTypes<VideoControllerApi, 'onVolumeChange$'>;
'VideoControllerApi.onFullscreenChange$': ExtractPropertyTypes<VideoControllerApi, 'onFullscreenChange$'>;
'VideoControllerApi.onVideoSafeZoneChange$': ExtractPropertyTypes<VideoControllerApi, 'onVideoSafeZoneChange$'>;
'VideoControllerApi.onPlaybackRateChange$': ExtractPropertyTypes<VideoControllerApi, 'onPlaybackRateChange$'>;
'VideoControllerApi.onHelpMenuChange$': ExtractPropertyTypes<VideoControllerApi, 'onHelpMenuChange$'>;
'VideoControllerApi.onPlaybackState$': ExtractPropertyTypes<VideoControllerApi, 'onPlaybackState$'>;
'VideoControllerApi.onAudioLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onAudioLoaded$'>;
'VideoControllerApi.onSubtitlesLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesLoaded$'>;
'VideoControllerApi.onSubtitlesCreate$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesCreate$'>;
'VideoControllerApi.onSubtitlesHide$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesHide$'>;
'VideoControllerApi.onSubtitlesRemove$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesRemove$'>;
'VideoControllerApi.onSubtitlesShow$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesShow$'>;
'VideoControllerApi.onMainAudioChange$': ExtractPropertyTypes<VideoControllerApi, 'onMainAudioChange$'>;
'VideoControllerApi.onMainAudioPeakProcessorMessage$': ExtractPropertyTypes<VideoControllerApi, 'onMainAudioPeakProcessorMessage$'>;
'VideoControllerApi.onMainAudioInputSoloMute$': ExtractPropertyTypes<VideoControllerApi, 'onMainAudioInputSoloMute$'>;
'VideoControllerApi.onSidecarAudioCreate$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioCreate$'>;
'VideoControllerApi.onSidecarAudioLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioLoaded$'>;
'VideoControllerApi.onSidecarAudioRemove$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioRemove$'>;
'VideoControllerApi.onSidecarAudioChange$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioChange$'>;
'VideoControllerApi.onSidecarAudioVolumeChange$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioVolumeChange$'>;
'VideoControllerApi.onSidecarAudioPeakProcessorMessage$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioPeakProcessorMessage$'>;
'VideoControllerApi.onSidecarAudioInputSoloMute$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioInputSoloMute$'>;
'VideoControllerApi.onSidecarAudiosChange$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudiosChange$'>;
'VideoControllerApi.onThumbnailVttUrlChanged$': ExtractPropertyTypes<VideoControllerApi, 'onThumbnailVttUrlChanged$'>;
'VideoControllerApi.onActiveNamedEventStreamsChange$': ExtractPropertyTypes<VideoControllerApi, 'onActiveNamedEventStreamsChange$'>;
'VideoControllerApi.onNamedEvent$': ExtractPropertyTypes<VideoControllerApi, 'onNamedEvent$'>;
'VideoControllerApi.loadVideoInternal': ExtractMethodTypes<VideoControllerApi, 'loadVideoInternal'>;
'VideoControllerApi.loadVideo': ExtractMethodTypes<VideoControllerApi, 'loadVideo'>;
'VideoControllerApi.reloadVideo': ExtractMethodTypes<VideoControllerApi, 'reloadVideo'>;
'VideoControllerApi.setVolume': ExtractMethodTypes<VideoControllerApi, 'setVolume'>;
'VideoControllerApi.setPlaybackRate': ExtractMethodTypes<VideoControllerApi, 'setPlaybackRate'>;
'VideoControllerApi.play': ExtractMethodTypes<VideoControllerApi, 'play'>;
'VideoControllerApi.pause': ExtractMethodTypes<VideoControllerApi, 'pause'>;
'VideoControllerApi.togglePlayPause': ExtractMethodTypes<VideoControllerApi, 'togglePlayPause'>;
'VideoControllerApi.seekToFrame': ExtractMethodTypes<VideoControllerApi, 'seekToFrame'>;
'VideoControllerApi.seekFromCurrentFrame': ExtractMethodTypes<VideoControllerApi, 'seekFromCurrentFrame'>;
'VideoControllerApi.seekFromCurrentTime': ExtractMethodTypes<VideoControllerApi, 'seekFromCurrentTime'>;
'VideoControllerApi.seekPreviousFrame': ExtractMethodTypes<VideoControllerApi, 'seekPreviousFrame'>;
'VideoControllerApi.seekNextFrame': ExtractMethodTypes<VideoControllerApi, 'seekNextFrame'>;
'VideoControllerApi.seekToTime': ExtractMethodTypes<VideoControllerApi, 'seekToTime'>;
'VideoControllerApi.seekToTimecode': ExtractMethodTypes<VideoControllerApi, 'seekToTimecode'>;
'VideoControllerApi.seekToPercent': ExtractMethodTypes<VideoControllerApi, 'seekToPercent'>;
'VideoControllerApi.seekToEnd': ExtractMethodTypes<VideoControllerApi, 'seekToEnd'>;
'VideoControllerApi.mute': ExtractMethodTypes<VideoControllerApi, 'mute'>;
'VideoControllerApi.unmute': ExtractMethodTypes<VideoControllerApi, 'unmute'>;
'VideoControllerApi.toggleMuteUnmute': ExtractMethodTypes<VideoControllerApi, 'toggleMuteUnmute'>;
'VideoControllerApi.toggleFullscreen': ExtractMethodTypes<VideoControllerApi, 'toggleFullscreen'>;
'VideoControllerApi.appendHelpMenuGroup': ExtractMethodTypes<VideoControllerApi, 'appendHelpMenuGroup'>;
'VideoControllerApi.prependHelpMenuGroup': ExtractMethodTypes<VideoControllerApi, 'prependHelpMenuGroup'>;
'VideoControllerApi.clearHelpMenuGroups': ExtractMethodTypes<VideoControllerApi, 'clearHelpMenuGroups'>;
'VideoControllerApi.addSafeZone': ExtractMethodTypes<VideoControllerApi, 'addSafeZone'>;
'VideoControllerApi.removeSafeZone': ExtractMethodTypes<VideoControllerApi, 'removeSafeZone'>;
'VideoControllerApi.clearSafeZones': ExtractMethodTypes<VideoControllerApi, 'clearSafeZones'>;
'VideoControllerApi.createSubtitlesVttTrack': ExtractMethodTypes<VideoControllerApi, 'createSubtitlesVttTrack'>;
'VideoControllerApi.hideSubtitlesTrack': ExtractMethodTypes<VideoControllerApi, 'hideSubtitlesTrack'>;
'VideoControllerApi.removeAllSubtitlesTracks': ExtractMethodTypes<VideoControllerApi, 'removeAllSubtitlesTracks'>;
'VideoControllerApi.removeSubtitlesTrack': ExtractMethodTypes<VideoControllerApi, 'removeSubtitlesTrack'>;
'VideoControllerApi.showSubtitlesTrack': ExtractMethodTypes<VideoControllerApi, 'showSubtitlesTrack'>;
'VideoControllerApi.setActiveAudioTrack': ExtractMethodTypes<VideoControllerApi, 'setActiveAudioTrack'>;
'VideoControllerApi.updateAudioTrack': ExtractMethodTypes<VideoControllerApi, 'updateAudioTrack'>;
'VideoControllerApi.activateMainAudio': ExtractMethodTypes<VideoControllerApi, 'activateMainAudio'>;
'VideoControllerApi.deactivateMainAudio': ExtractMethodTypes<VideoControllerApi, 'deactivateMainAudio'>;
'VideoControllerApi.createMainAudioRouter': ExtractMethodTypes<VideoControllerApi, 'createMainAudioRouter'>;
'VideoControllerApi.setAudioOutputVolume': ExtractMethodTypes<VideoControllerApi, 'setAudioOutputVolume'>;
'VideoControllerApi.setAudioOutputMuted': ExtractMethodTypes<VideoControllerApi, 'setAudioOutputMuted'>;
'VideoControllerApi.toggleAudioOutputMuteUnmute': ExtractMethodTypes<VideoControllerApi, 'toggleAudioOutputMuteUnmute'>;
'VideoControllerApi.muteAudioOutput': ExtractMethodTypes<VideoControllerApi, 'muteAudioOutput'>;
'VideoControllerApi.unmuteAudioOutput': ExtractMethodTypes<VideoControllerApi, 'unmuteAudioOutput'>;
'VideoControllerApi.createMainAudioPeakProcessor': {
requestType: ExtractParameterTypes<VideoControllerApi, 'createMainAudioPeakProcessor'>;
responseType: FlattenObservableToVoid<ExtractReturnType<VideoControllerApi, 'createMainAudioPeakProcessor'>>;
};
'VideoControllerApi.updateMainAudioRouterConnections': ExtractMethodTypes<VideoControllerApi, 'updateMainAudioRouterConnections'>;
'VideoControllerApi.toggleMainAudioRouterSolo': ExtractMethodTypes<VideoControllerApi, 'toggleMainAudioRouterSolo'>;
'VideoControllerApi.toggleMainAudioRouterMute': ExtractMethodTypes<VideoControllerApi, 'toggleMainAudioRouterMute'>;
'VideoControllerApi.setMainAudioRouterInitialRoutingConnections': ExtractMethodTypes<VideoControllerApi, 'setMainAudioRouterInitialRoutingConnections'>;
'VideoControllerApi.setMainAudioEffectsGraphs': ExtractMethodTypes<VideoControllerApi, 'setMainAudioEffectsGraphs'>;
'VideoControllerApi.removeMainAudioEffectsGraphs': ExtractMethodTypes<VideoControllerApi, 'removeMainAudioEffectsGraphs'>;
'VideoControllerApi.setMainAudioEffectsParams': ExtractMethodTypes<VideoControllerApi, 'setMainAudioEffectsParams'>;
'VideoControllerApi.createSidecarAudioTrack': ExtractMethodTypes<VideoControllerApi, 'createSidecarAudioTrack'>;
'VideoControllerApi.createSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'createSidecarAudioTracks'>;
'VideoControllerApi.removeSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'removeSidecarAudioTracks'>;
'VideoControllerApi.activateSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'activateSidecarAudioTracks'>;
'VideoControllerApi.deactivateSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'deactivateSidecarAudioTracks'>;
'VideoControllerApi.setSidecarVolume': ExtractMethodTypes<VideoControllerApi, 'setSidecarVolume'>;
'VideoControllerApi.setSidecarMuted': ExtractMethodTypes<VideoControllerApi, 'setSidecarMuted'>;
'VideoControllerApi.muteSidecar': ExtractMethodTypes<VideoControllerApi, 'muteSidecar'>;
'VideoControllerApi.unmuteSidecar': ExtractMethodTypes<VideoControllerApi, 'unmuteSidecar'>;
'VideoControllerApi.removeAllSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'removeAllSidecarAudioTracks'>;
'VideoControllerApi.createSidecarAudioRouter': ExtractMethodTypes<VideoControllerApi, 'createSidecarAudioRouter'>;
'VideoControllerApi.setSidecarAudioRouterInitialRoutingConnections': ExtractMethodTypes<VideoControllerApi, 'setSidecarAudioRouterInitialRoutingConnections'>;
'VideoControllerApi.updateSidecarAudioRouterConnections': ExtractMethodTypes<VideoControllerApi, 'updateSidecarAudioRouterConnections'>;
'VideoControllerApi.toggleSidecarAudioRouterSolo': ExtractMethodTypes<VideoControllerApi, 'toggleSidecarAudioRouterSolo'>;
'VideoControllerApi.toggleSidecarAudioRouterMute': ExtractMethodTypes<VideoControllerApi, 'toggleSidecarAudioRouterMute'>;
'VideoControllerApi.setSidecarAudioEffectsGraph': ExtractMethodTypes<VideoControllerApi, 'setSidecarAudioEffectsGraph'>;
'VideoControllerApi.removeSidecarAudioEffectsGraphs': ExtractMethodTypes<VideoControllerApi, 'removeSidecarAudioEffectsGraphs'>;
'VideoControllerApi.setSidecarAudioEffectsParams': ExtractMethodTypes<VideoControllerApi, 'setSidecarAudioEffectsParams'>;
'VideoControllerApi.createSidecarAudioPeakProcessor': {
requestType: ExtractParameterTypes<VideoControllerApi, 'createSidecarAudioPeakProcessor'>;
responseType: FlattenObservableToVoid<ExtractReturnType<VideoControllerApi, 'createSidecarAudioPeakProcessor'>>;
};
'VideoControllerApi.exportMainAudioTrackToSidecar': ExtractMethodTypes<VideoControllerApi, 'exportMainAudioTrackToSidecar'>;
'VideoControllerApi.exportMainAudioTracksToSidecar': ExtractMethodTypes<VideoControllerApi, 'exportMainAudioTracksToSidecar'>;
'VideoControllerApi.loadThumbnailVttUrl': ExtractMethodTypes<VideoControllerApi, 'loadThumbnailVttUrl'>;
'VideoControllerApi.updateActiveNamedEventStreams': ExtractMethodTypes<VideoControllerApi, 'updateActiveNamedEventStreams'>;
'VideoControllerApi.getActiveNamedEventStreams': ExtractMethodTypes<VideoControllerApi, 'getActiveNamedEventStreams'>;
'VideoControllerApi.loadBlackVideo': ExtractMethodTypes<VideoControllerApi, 'loadBlackVideo'>;
'VideoControllerApi.extractVideoKeyframe': ExtractMethodTypes<VideoControllerApi, 'extractVideoKeyframe'>;
'VideoControllerApi.attachVideoWindow': ExtractMethodTypes<VideoControllerApi, 'attachVideoWindow'>;
}>;
export {};