1 import { PickWith, PickWithOpt } from '@shared/typescript-utils'
2 import { VideoFileModel } from '../../../models/video/video-file'
3 import { MVideo, MVideoUUID } from './video'
4 import { MVideoRedundancy, MVideoRedundancyFileUrl } from './video-redundancy'
5 import { MStreamingPlaylist, MStreamingPlaylistVideo } from './video-streaming-playlist'
7 type Use<K extends keyof VideoFileModel, M> = PickWith<VideoFileModel, K, M>
9 // ############################################################################
11 export type MVideoFile = Omit<VideoFileModel, 'Video' | 'RedundancyVideos' | 'VideoStreamingPlaylist'>
13 export type MVideoFileVideo =
17 export type MVideoFileStreamingPlaylist =
19 Use<'VideoStreamingPlaylist', MStreamingPlaylist>
21 export type MVideoFileStreamingPlaylistVideo =
23 Use<'VideoStreamingPlaylist', MStreamingPlaylistVideo>
25 export type MVideoFileVideoUUID =
27 Use<'Video', MVideoUUID>
29 export type MVideoFileRedundanciesAll =
31 PickWithOpt<VideoFileModel, 'RedundancyVideos', MVideoRedundancy[]>
33 export type MVideoFileRedundanciesOpt =
35 PickWithOpt<VideoFileModel, 'RedundancyVideos', MVideoRedundancyFileUrl[]>
37 export function isStreamingPlaylistFile (file: any): file is MVideoFileStreamingPlaylist {
38 return !!file.videoStreamingPlaylistId
41 export function isWebtorrentFile (file: any): file is MVideoFileVideo {