1 import { OutgoingHttpHeaders } from 'http'
2 import { Writable } from 'stream'
3 import { RegisterServerAuthExternalOptions } from '@server/types'
8 MActorFollowActorsDefault,
10 MChannelBannerAccountDefault,
15 MVideoChangeOwnershipFull,
17 MVideoFormattableDetails,
20 MVideoLiveFormattable,
22 MVideoPlaylistFullSummary
23 } from '@server/types/models'
24 import { MOAuthTokenUser } from '@server/types/models/oauth/oauth-token'
25 import { MPlugin, MServer, MServerBlocklist } from '@server/types/models/server'
26 import { MVideoImportDefault } from '@server/types/models/video/video-import'
27 import { MVideoPlaylistElement, MVideoPlaylistElementVideoUrlPlaylistPrivacy } from '@server/types/models/video/video-playlist-element'
28 import { MAccountVideoRateAccountVideo } from '@server/types/models/video/video-rate'
29 import { HttpMethod, PeerTubeProblemDocumentData, ServerErrorCode, VideoCreate } from '@shared/models'
30 import { File as UploadXFile, Metadata } from '@uploadx/core'
31 import { RegisteredPlugin } from '../../lib/plugins/plugin-manager'
34 MActorAccountChannelId,
35 MActorFollowActorsDefaultSubscription,
38 MCommentOwnerVideoReply,
43 MVideoRedundancyVideo,
47 import { MRunner, MRunnerJobRunner, MRunnerRegistrationToken } from './models/runners'
48 import { MVideoSource } from './models/video/video-source'
50 declare module 'express' {
51 export interface Request {
56 // Upload using multer or uploadx middleware
57 export type MulterOrUploadXFile = UploadXFile | Express.Multer.File
59 export type UploadFiles = {
60 [fieldname: string]: MulterOrUploadXFile[]
61 } | MulterOrUploadXFile[]
63 // Partial object used by some functions to check the file mimetype/extension
64 export type UploadFileForCheck = {
70 export type UploadFilesForCheck = {
71 [fieldname: string]: UploadFileForCheck[]
72 } | UploadFileForCheck[]
74 // Upload file with a duration added by our middleware
75 export type VideoUploadFile = Pick<Express.Multer.File, 'path' | 'filename' | 'size', 'originalname'> & {
79 // Extends Metadata property of UploadX object
80 export type UploadXFileMetadata = Metadata & VideoCreate & {
81 previewfile: Express.Multer.File[]
82 thumbnailfile: Express.Multer.File[]
85 // Our custom UploadXFile object using our custom metadata
86 export type CustomUploadXFile <T extends Metadata> = UploadXFile & { metadata: T }
88 export type EnhancedUploadXFile = CustomUploadXFile<UploadXFileMetadata> & {
95 // Extends Response with added functions and potential variables passed by middlewares
102 type?: ServerErrorCode | string
105 data?: PeerTubeProblemDocumentData
114 content: string | Buffer
115 write: Writable['write']
116 writeHead: Response['writeHead']
119 headers: OutgoingHttpHeaders
124 videoAPI?: MVideoFormattableDetails
125 videoAll?: MVideoFullLight
126 onlyImmutableVideo?: MVideoImmutable
127 onlyVideo?: MVideoThumbnail
130 videoLive?: MVideoLiveFormattable
131 videoLiveSession?: MVideoLiveSession
133 videoShare?: MVideoShareActor
135 videoSource?: MVideoSource
137 videoFile?: MVideoFile
139 videoFileResumable?: EnhancedUploadXFile
141 videoImport?: MVideoImportDefault
143 videoBlacklist?: MVideoBlacklist
145 videoCaption?: MVideoCaptionVideo
147 abuse?: MAbuseReporter
148 abuseMessage?: MAbuseMessage
150 videoStreamingPlaylist?: MStreamingPlaylist
152 videoChannel?: MChannelBannerAccountDefault
153 videoChannelSync?: MChannelSyncChannel
155 videoPlaylistFull?: MVideoPlaylistFull
156 videoPlaylistSummary?: MVideoPlaylistFullSummary
158 videoPlaylistElement?: MVideoPlaylistElement
159 videoPlaylistElementAP?: MVideoPlaylistElementVideoUrlPlaylistPrivacy
161 accountVideoRate?: MAccountVideoRateAccountVideo
163 videoCommentFull?: MCommentOwnerVideoReply
164 videoCommentThread?: MComment
166 follow?: MActorFollowActorsDefault
167 subscription?: MActorFollowActorsDefaultSubscription
169 nextOwner?: MAccountDefault
170 videoChangeOwnership?: MVideoChangeOwnershipFull
172 account?: MAccountDefault
175 actorFull?: MActorFull
178 userRegistration?: MRegistration
182 videoRedundancy?: MVideoRedundancyVideo
184 accountBlock?: MAccountBlocklist
185 serverBlock?: MServerBlocklist
188 token: MOAuthTokenUser
192 actor: MActorAccountChannelId
196 user: MUserAccountUrl
199 authenticated?: boolean
201 registeredPlugin?: RegisteredPlugin
203 externalAuth?: RegisterServerAuthExternalOptions
207 localViewerFull?: MLocalVideoViewerWithWatchSections
210 runnerRegistrationToken?: MRunnerRegistrationToken
211 runnerJob?: MRunnerJobRunner