mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			190 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
 | 
						|
import { OutgoingHttpHeaders } from 'http'
 | 
						|
import { RegisterServerAuthExternalOptions } from '@server/types'
 | 
						|
import {
 | 
						|
  MAbuseMessage,
 | 
						|
  MAbuseReporter,
 | 
						|
  MAccountBlocklist,
 | 
						|
  MActorFollowActorsDefault,
 | 
						|
  MActorUrl,
 | 
						|
  MChannelBannerAccountDefault,
 | 
						|
  MStreamingPlaylist,
 | 
						|
  MVideoChangeOwnershipFull,
 | 
						|
  MVideoFile,
 | 
						|
  MVideoFormattableDetails,
 | 
						|
  MVideoId,
 | 
						|
  MVideoImmutable,
 | 
						|
  MVideoLive,
 | 
						|
  MVideoPlaylistFull,
 | 
						|
  MVideoPlaylistFullSummary
 | 
						|
} from '@server/types/models'
 | 
						|
import { MOAuthTokenUser } from '@server/types/models/oauth/oauth-token'
 | 
						|
import { MPlugin, MServer, MServerBlocklist } from '@server/types/models/server'
 | 
						|
import { MVideoImportDefault } from '@server/types/models/video/video-import'
 | 
						|
import { MVideoPlaylistElement, MVideoPlaylistElementVideoUrlPlaylistPrivacy } from '@server/types/models/video/video-playlist-element'
 | 
						|
import { MAccountVideoRateAccountVideo } from '@server/types/models/video/video-rate'
 | 
						|
import { HttpMethod, PeerTubeProblemDocumentData, ServerErrorCode, VideoCreate } from '@shared/models'
 | 
						|
import { File as UploadXFile, Metadata } from '@uploadx/core'
 | 
						|
import { RegisteredPlugin } from '../../lib/plugins/plugin-manager'
 | 
						|
import {
 | 
						|
  MAccountDefault,
 | 
						|
  MActorAccountChannelId,
 | 
						|
  MActorFollowActorsDefaultSubscription,
 | 
						|
  MActorFull,
 | 
						|
  MComment,
 | 
						|
  MCommentOwnerVideoReply,
 | 
						|
  MUserDefault,
 | 
						|
  MVideoBlacklist,
 | 
						|
  MVideoCaptionVideo,
 | 
						|
  MVideoFullLight,
 | 
						|
  MVideoRedundancyVideo,
 | 
						|
  MVideoShareActor,
 | 
						|
  MVideoThumbnail
 | 
						|
} from '../../types/models'
 | 
						|
import { Writable } from 'stream'
 | 
						|
 | 
						|
declare module 'express' {
 | 
						|
  export interface Request {
 | 
						|
    query: any
 | 
						|
    method: HttpMethod
 | 
						|
  }
 | 
						|
 | 
						|
  // Upload using multer or uploadx middleware
 | 
						|
  export type MulterOrUploadXFile = UploadXFile | Express.Multer.File
 | 
						|
 | 
						|
  export type UploadFiles = {
 | 
						|
    [fieldname: string]: MulterOrUploadXFile[]
 | 
						|
  } | MulterOrUploadXFile[]
 | 
						|
 | 
						|
  // Partial object used by some functions to check the file mimetype/extension
 | 
						|
  export type UploadFileForCheck = {
 | 
						|
    originalname: string
 | 
						|
    mimetype: string
 | 
						|
  }
 | 
						|
 | 
						|
  export type UploadFilesForCheck = {
 | 
						|
    [fieldname: string]: UploadFileForCheck[]
 | 
						|
  } | UploadFileForCheck[]
 | 
						|
 | 
						|
  // Upload file with a duration added by our middleware
 | 
						|
  export type VideoUploadFile = Pick<Express.Multer.File, 'path' | 'filename' | 'size'> & {
 | 
						|
    duration: number
 | 
						|
  }
 | 
						|
 | 
						|
  // Extends Metadata property of UploadX object
 | 
						|
  export type UploadXFileMetadata = Metadata & VideoCreate & {
 | 
						|
    previewfile: Express.Multer.File[]
 | 
						|
    thumbnailfile: Express.Multer.File[]
 | 
						|
  }
 | 
						|
 | 
						|
  // Our custom UploadXFile object using our custom metadata
 | 
						|
  export type CustomUploadXFile <T extends Metadata> = UploadXFile & { metadata: T }
 | 
						|
 | 
						|
  export type EnhancedUploadXFile = CustomUploadXFile<UploadXFileMetadata> & {
 | 
						|
    duration: number
 | 
						|
    path: string
 | 
						|
    filename: string
 | 
						|
  }
 | 
						|
 | 
						|
  // Extends Response with added functions and potential variables passed by middlewares
 | 
						|
  interface Response {
 | 
						|
    fail: (options: {
 | 
						|
      message: string
 | 
						|
 | 
						|
      title?: string
 | 
						|
      status?: number
 | 
						|
      type?: ServerErrorCode
 | 
						|
      instance?: string
 | 
						|
 | 
						|
      data?: PeerTubeProblemDocumentData
 | 
						|
    }) => void
 | 
						|
 | 
						|
    locals: {
 | 
						|
      apicache: {
 | 
						|
        content: string | Buffer
 | 
						|
        write: Writable['write']
 | 
						|
        writeHead: Response['writeHead']
 | 
						|
        end: Response['end']
 | 
						|
        cacheable: boolean
 | 
						|
        headers: OutgoingHttpHeaders
 | 
						|
      }
 | 
						|
 | 
						|
      docUrl?: string
 | 
						|
 | 
						|
      videoAPI?: MVideoFormattableDetails
 | 
						|
      videoAll?: MVideoFullLight
 | 
						|
      onlyImmutableVideo?: MVideoImmutable
 | 
						|
      onlyVideo?: MVideoThumbnail
 | 
						|
      videoId?: MVideoId
 | 
						|
 | 
						|
      videoLive?: MVideoLive
 | 
						|
 | 
						|
      videoShare?: MVideoShareActor
 | 
						|
 | 
						|
      videoFile?: MVideoFile
 | 
						|
 | 
						|
      videoFileResumable?: EnhancedUploadXFile
 | 
						|
 | 
						|
      videoImport?: MVideoImportDefault
 | 
						|
 | 
						|
      videoBlacklist?: MVideoBlacklist
 | 
						|
 | 
						|
      videoCaption?: MVideoCaptionVideo
 | 
						|
 | 
						|
      abuse?: MAbuseReporter
 | 
						|
      abuseMessage?: MAbuseMessage
 | 
						|
 | 
						|
      videoStreamingPlaylist?: MStreamingPlaylist
 | 
						|
 | 
						|
      videoChannel?: MChannelBannerAccountDefault
 | 
						|
 | 
						|
      videoPlaylistFull?: MVideoPlaylistFull
 | 
						|
      videoPlaylistSummary?: MVideoPlaylistFullSummary
 | 
						|
 | 
						|
      videoPlaylistElement?: MVideoPlaylistElement
 | 
						|
      videoPlaylistElementAP?: MVideoPlaylistElementVideoUrlPlaylistPrivacy
 | 
						|
 | 
						|
      accountVideoRate?: MAccountVideoRateAccountVideo
 | 
						|
 | 
						|
      videoCommentFull?: MCommentOwnerVideoReply
 | 
						|
      videoCommentThread?: MComment
 | 
						|
 | 
						|
      follow?: MActorFollowActorsDefault
 | 
						|
      subscription?: MActorFollowActorsDefaultSubscription
 | 
						|
 | 
						|
      nextOwner?: MAccountDefault
 | 
						|
      videoChangeOwnership?: MVideoChangeOwnershipFull
 | 
						|
 | 
						|
      account?: MAccountDefault
 | 
						|
 | 
						|
      actorUrl?: MActorUrl
 | 
						|
      actorFull?: MActorFull
 | 
						|
 | 
						|
      user?: MUserDefault
 | 
						|
 | 
						|
      server?: MServer
 | 
						|
 | 
						|
      videoRedundancy?: MVideoRedundancyVideo
 | 
						|
 | 
						|
      accountBlock?: MAccountBlocklist
 | 
						|
      serverBlock?: MServerBlocklist
 | 
						|
 | 
						|
      oauth?: {
 | 
						|
        token: MOAuthTokenUser
 | 
						|
      }
 | 
						|
 | 
						|
      signature?: {
 | 
						|
        actor: MActorAccountChannelId
 | 
						|
      }
 | 
						|
 | 
						|
      authenticated?: boolean
 | 
						|
 | 
						|
      registeredPlugin?: RegisteredPlugin
 | 
						|
 | 
						|
      externalAuth?: RegisterServerAuthExternalOptions
 | 
						|
 | 
						|
      plugin?: MPlugin
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |