Cleanup shared models

pull/4083/head
Chocobozzz 2021-05-11 11:27:40 +02:00
parent 7d9ba5c089
commit 2b02c520e6
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
31 changed files with 125 additions and 106 deletions

View File

@ -1,7 +1,7 @@
import * as express from 'express' import * as express from 'express'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import { ResultList, ThreadsResultList, UserRight } from '../../../../shared/models' import { ResultList, ThreadsResultList, UserRight } from '../../../../shared/models'
import { VideoCommentCreate } from '../../../../shared/models/videos/video-comment.model' import { VideoCommentCreate } from '../../../../shared/models/videos/comment/video-comment.model'
import { auditLoggerFactory, CommentAuditView, getAuditIdFromRes } from '../../../helpers/audit-logger' import { auditLoggerFactory, CommentAuditView, getAuditIdFromRes } from '../../../helpers/audit-logger'
import { getFormattedObjects } from '../../../helpers/utils' import { getFormattedObjects } from '../../../helpers/utils'
import { sequelizeTypescript } from '../../../initializers/database' import { sequelizeTypescript } from '../../../initializers/database'

View File

@ -4,7 +4,7 @@ import { join } from 'path'
import { serveIndexHTML } from '@server/lib/client-html' import { serveIndexHTML } from '@server/lib/client-html'
import { getEnabledResolutions, getRegisteredPlugins, getRegisteredThemes } from '@server/lib/config' import { getEnabledResolutions, getRegisteredPlugins, getRegisteredThemes } from '@server/lib/config'
import { HttpStatusCode } from '@shared/core-utils/miscs/http-error-codes' import { HttpStatusCode } from '@shared/core-utils/miscs/http-error-codes'
import { HttpNodeinfoDiasporaSoftwareNsSchema20 } from '../../shared/models/nodeinfo' import { HttpNodeinfoDiasporaSoftwareNsSchema20 } from '../../shared/models/nodeinfo/nodeinfo.model'
import { root } from '../helpers/core-utils' import { root } from '../helpers/core-utils'
import { CONFIG, isEmailEnabled } from '../initializers/config' import { CONFIG, isEmailEnabled } from '../initializers/config'
import { import {

View File

@ -7,7 +7,7 @@ import * as winston from 'winston'
import { AUDIT_LOG_FILENAME } from '@server/initializers/constants' import { AUDIT_LOG_FILENAME } from '@server/initializers/constants'
import { AdminAbuse, User, VideoChannel, VideoDetails, VideoImport } from '../../shared' import { AdminAbuse, User, VideoChannel, VideoDetails, VideoImport } from '../../shared'
import { CustomConfig } from '../../shared/models/server/custom-config.model' import { CustomConfig } from '../../shared/models/server/custom-config.model'
import { VideoComment } from '../../shared/models/videos/video-comment.model' import { VideoComment } from '../../shared/models/videos/comment/video-comment.model'
import { CONFIG } from '../initializers/config' import { CONFIG } from '../initializers/config'
import { jsonLoggerFormat, labelFormatter } from './logger' import { jsonLoggerFormat, labelFormatter } from './logger'

View File

@ -1,6 +1,5 @@
import * as ffmpeg from 'fluent-ffmpeg' import * as ffmpeg from 'fluent-ffmpeg'
import { VideoFileMetadata } from '@shared/models/videos/video-file-metadata' import { getMaxBitrate, VideoFileMetadata, VideoResolution } from '../../shared/models/videos'
import { getMaxBitrate, VideoResolution } from '../../shared/models/videos'
import { CONFIG } from '../initializers/config' import { CONFIG } from '../initializers/config'
import { VIDEO_TRANSCODING_FPS } from '../initializers/constants' import { VIDEO_TRANSCODING_FPS } from '../initializers/constants'
import { logger } from './logger' import { logger } from './logger'

View File

@ -23,9 +23,9 @@ import { ActivityCreate } from '../../shared/models/activitypub'
import { VideoObject } from '../../shared/models/activitypub/objects' import { VideoObject } from '../../shared/models/activitypub/objects'
import { VideoCommentObject } from '../../shared/models/activitypub/objects/video-comment-object' import { VideoCommentObject } from '../../shared/models/activitypub/objects/video-comment-object'
import { LiveVideoCreate, VideoCreate, VideoImportCreate } from '../../shared/models/videos' import { LiveVideoCreate, VideoCreate, VideoImportCreate } from '../../shared/models/videos'
import { VideoCommentCreate } from '../../shared/models/videos/video-comment.model' import { VideoCommentCreate } from '../../shared/models/videos/comment/video-comment.model'
import { UserModel } from '../models/user/user'
import { ActorModel } from '../models/actor/actor' import { ActorModel } from '../models/actor/actor'
import { UserModel } from '../models/user/user'
import { VideoModel } from '../models/video/video' import { VideoModel } from '../models/video/video'
import { VideoCommentModel } from '../models/video/video-comment' import { VideoCommentModel } from '../models/video/video-comment'
import { sendAbuse } from './activitypub/send/send-flag' import { sendAbuse } from './activitypub/send/send-flag'

View File

@ -3,7 +3,7 @@ import * as Sequelize from 'sequelize'
import { logger } from '@server/helpers/logger' import { logger } from '@server/helpers/logger'
import { sequelizeTypescript } from '@server/initializers/database' import { sequelizeTypescript } from '@server/initializers/database'
import { ResultList } from '../../shared/models' import { ResultList } from '../../shared/models'
import { VideoCommentThreadTree } from '../../shared/models/videos/video-comment.model' import { VideoCommentThreadTree } from '../../shared/models/videos/comment/video-comment.model'
import { VideoCommentModel } from '../models/video/video-comment' import { VideoCommentModel } from '../models/video/video-comment'
import { MAccountDefault, MComment, MCommentOwnerVideo, MCommentOwnerVideoReply, MVideoFullLight } from '../types/models' import { MAccountDefault, MComment, MCommentOwnerVideo, MCommentOwnerVideoReply, MVideoFullLight } from '../types/models'
import { sendCreateVideoComment, sendDeleteVideoComment } from './activitypub/send' import { sendCreateVideoComment, sendDeleteVideoComment } from './activitypub/send'

View File

@ -7,7 +7,7 @@ import { ExpressPromiseHandler } from '@server/types/express'
import { MUserAccountId, MVideoWithRights } from '@server/types/models' import { MUserAccountId, MVideoWithRights } from '@server/types/models'
import { ServerErrorCode, UserRight, VideoChangeOwnershipStatus, VideoPrivacy } from '../../../../shared' import { ServerErrorCode, UserRight, VideoChangeOwnershipStatus, VideoPrivacy } from '../../../../shared'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import { VideoChangeOwnershipAccept } from '../../../../shared/models/videos/video-change-ownership-accept.model' import { VideoChangeOwnershipAccept } from '../../../../shared/models/videos/change-ownership/video-change-ownership-accept.model'
import { import {
exists, exists,
isBooleanValid, isBooleanValid,

View File

@ -19,7 +19,7 @@ import { MAccount, MAccountId, MUserAccountId } from '@server/types/models'
import { VideoPrivacy } from '@shared/models' import { VideoPrivacy } from '@shared/models'
import { ActivityTagObject, ActivityTombstoneObject } from '../../../shared/models/activitypub/objects/common-objects' import { ActivityTagObject, ActivityTombstoneObject } from '../../../shared/models/activitypub/objects/common-objects'
import { VideoCommentObject } from '../../../shared/models/activitypub/objects/video-comment-object' import { VideoCommentObject } from '../../../shared/models/activitypub/objects/video-comment-object'
import { VideoComment, VideoCommentAdmin } from '../../../shared/models/videos/video-comment.model' import { VideoComment, VideoCommentAdmin } from '../../../shared/models/videos/comment/video-comment.model'
import { actorNameAlphabet } from '../../helpers/custom-validators/activitypub/actor' import { actorNameAlphabet } from '../../helpers/custom-validators/activitypub/actor'
import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc'
import { regexpCapture } from '../../helpers/regexp' import { regexpCapture } from '../../helpers/regexp'

View File

@ -1,46 +1,50 @@
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
import * as chai from 'chai'
import 'mocha' import 'mocha'
import { AccountBlock, ServerBlock, Video, UserNotification, UserNotificationType } from '../../../../shared/index' import * as chai from 'chai'
import {
cleanupTests,
createUser,
deleteVideoComment,
doubleFollow,
flushAndRunMultipleServers,
ServerInfo,
uploadVideo,
userLogin,
follow,
unfollow
} from '../../../../shared/extra-utils/index'
import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/login'
import { getVideosList, getVideosListWithToken } from '../../../../shared/extra-utils/videos/videos'
import {
addVideoCommentReply,
addVideoCommentThread,
getVideoCommentThreads,
getVideoThreadComments,
findCommentId
} from '../../../../shared/extra-utils/videos/video-comments'
import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
import { import {
addAccountToAccountBlocklist, addAccountToAccountBlocklist,
addAccountToServerBlocklist, addAccountToServerBlocklist,
addServerToAccountBlocklist, addServerToAccountBlocklist,
addServerToServerBlocklist, addServerToServerBlocklist,
addVideoCommentReply,
addVideoCommentThread,
cleanupTests,
createUser,
deleteVideoComment,
doubleFollow,
findCommentId,
flushAndRunMultipleServers,
follow,
getAccountBlocklistByAccount, getAccountBlocklistByAccount,
getAccountBlocklistByServer, getAccountBlocklistByServer,
getServerBlocklistByAccount, getServerBlocklistByAccount,
getServerBlocklistByServer, getServerBlocklistByServer,
getUserNotifications,
getVideoCommentThreads,
getVideosList,
getVideosListWithToken,
getVideoThreadComments,
removeAccountFromAccountBlocklist, removeAccountFromAccountBlocklist,
removeAccountFromServerBlocklist, removeAccountFromServerBlocklist,
removeServerFromAccountBlocklist, removeServerFromAccountBlocklist,
removeServerFromServerBlocklist removeServerFromServerBlocklist,
} from '../../../../shared/extra-utils/users/blocklist' ServerInfo,
import { getUserNotifications } from '../../../../shared/extra-utils/users/user-notifications' setAccessTokensToServers,
unfollow,
uploadVideo,
userLogin,
waitJobs
} from '@shared/extra-utils'
import {
AccountBlock,
ServerBlock,
UserNotification,
UserNotificationType,
Video,
VideoComment,
VideoCommentThreadTree
} from '@shared/models'
const expect = chai.expect const expect = chai.expect

View File

@ -2,20 +2,25 @@
import 'mocha' import 'mocha'
import * as chai from 'chai' import * as chai from 'chai'
import { cleanupTests, getVideoCommentThreads, getVideoThreadComments, updateMyUser } from '../../../../shared/extra-utils'
import { ServerInfo, uploadVideo } from '../../../../shared/extra-utils/index'
import { MockSmtpServer } from '../../../../shared/extra-utils/miscs/email'
import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
import { addAccountToAccountBlocklist, removeAccountFromAccountBlocklist } from '../../../../shared/extra-utils/users/blocklist'
import { import {
addAccountToAccountBlocklist,
addVideoCommentReply,
addVideoCommentThread,
checkCommentMention, checkCommentMention,
CheckerBaseParams, CheckerBaseParams,
checkNewCommentOnMyVideo, checkNewCommentOnMyVideo,
prepareNotificationsTest cleanupTests,
} from '../../../../shared/extra-utils/users/user-notifications' getVideoCommentThreads,
import { addVideoCommentReply, addVideoCommentThread } from '../../../../shared/extra-utils/videos/video-comments' getVideoThreadComments,
import { UserNotification } from '../../../../shared/models/users' MockSmtpServer,
import { VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' prepareNotificationsTest,
removeAccountFromAccountBlocklist,
ServerInfo,
updateMyUser,
uploadVideo,
waitJobs
} from '@shared/extra-utils'
import { UserNotification, VideoCommentThreadTree } from '@shared/models'
const expect = chai.expect const expect = chai.expect

View File

@ -2,12 +2,14 @@
import 'mocha' import 'mocha'
import * as chai from 'chai' import * as chai from 'chai'
import { VideoComment } from '@shared/models/videos/video-comment.model' import { Video, VideoComment } from '@shared/models'
import { import {
addVideoCommentReply,
addVideoCommentThread, addVideoCommentThread,
bulkRemoveCommentsOf, bulkRemoveCommentsOf,
cleanupTests, cleanupTests,
createUser, createUser,
doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
getVideoCommentThreads, getVideoCommentThreads,
getVideosList, getVideosList,
@ -15,11 +17,8 @@ import {
setAccessTokensToServers, setAccessTokensToServers,
uploadVideo, uploadVideo,
userLogin, userLogin,
waitJobs, waitJobs
addVideoCommentReply
} from '../../../../shared/extra-utils/index' } from '../../../../shared/extra-utils/index'
import { doubleFollow } from '../../../../shared/extra-utils/server/follows'
import { Video } from '@shared/models'
const expect = chai.expect const expect = chai.expect

View File

@ -1,37 +1,35 @@
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
import * as chai from 'chai'
import 'mocha' import 'mocha'
import { Video, VideoPrivacy } from '../../../../shared/models/videos' import * as chai from 'chai'
import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
import { cleanupTests, completeVideoCheck, deleteVideoComment } from '../../../../shared/extra-utils'
import {
flushAndRunMultipleServers,
getVideosList,
ServerInfo,
setAccessTokensToServers,
uploadVideo
} from '../../../../shared/extra-utils/index'
import { dateIsValid } from '../../../../shared/extra-utils/miscs/miscs'
import {
follow,
getFollowersListPaginationAndSort,
getFollowingListPaginationAndSort,
unfollow
} from '../../../../shared/extra-utils/server/follows'
import { expectAccountFollows } from '../../../../shared/extra-utils/users/accounts'
import { userLogin } from '../../../../shared/extra-utils/users/login'
import { createUser } from '../../../../shared/extra-utils/users/users'
import { import {
addVideoCommentReply, addVideoCommentReply,
addVideoCommentThread, addVideoCommentThread,
cleanupTests,
completeVideoCheck,
createUser,
createVideoCaption,
dateIsValid,
deleteVideoComment,
expectAccountFollows,
flushAndRunMultipleServers,
follow,
getFollowersListPaginationAndSort,
getFollowingListPaginationAndSort,
getVideoCommentThreads, getVideoCommentThreads,
getVideoThreadComments getVideosList,
} from '../../../../shared/extra-utils/videos/video-comments' getVideoThreadComments,
import { rateVideo } from '../../../../shared/extra-utils/videos/videos' listVideoCaptions,
import { waitJobs } from '../../../../shared/extra-utils/server/jobs' rateVideo,
import { createVideoCaption, listVideoCaptions, testCaptionFile } from '../../../../shared/extra-utils/videos/video-captions' ServerInfo,
import { VideoCaption } from '../../../../shared/models/videos/caption/video-caption.model' setAccessTokensToServers,
testCaptionFile,
unfollow,
uploadVideo,
userLogin,
waitJobs
} from '@shared/extra-utils'
import { Video, VideoCaption, VideoComment, VideoCommentThreadTree, VideoPrivacy } from '@shared/models'
const expect = chai.expect const expect = chai.expect

View File

@ -4,7 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { JobState, Video } from '../../../../shared/models' import { JobState, Video } from '../../../../shared/models'
import { VideoPrivacy } from '../../../../shared/models/videos' import { VideoPrivacy } from '../../../../shared/models/videos'
import { VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' import { VideoCommentThreadTree } from '../../../../shared/models/videos/comment/video-comment.model'
import { import {
cleanupTests, cleanupTests,

View File

@ -1,11 +1,10 @@
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
import * as chai from 'chai'
import 'mocha' import 'mocha'
import * as chai from 'chai'
import { join } from 'path' import { join } from 'path'
import * as request from 'supertest' import * as request from 'supertest'
import { VideoPrivacy } from '../../../../shared/models/videos' import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
import { import {
addVideoChannel, addVideoChannel,
checkTmpIsEmpty, checkTmpIsEmpty,
@ -32,16 +31,16 @@ import {
wait, wait,
webtorrentAdd webtorrentAdd
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
import { import {
addVideoCommentReply, addVideoCommentReply,
addVideoCommentThread, addVideoCommentThread,
deleteVideoComment, deleteVideoComment,
findCommentId,
getVideoCommentThreads, getVideoCommentThreads,
getVideoThreadComments, getVideoThreadComments
findCommentId
} from '../../../../shared/extra-utils/videos/video-comments' } from '../../../../shared/extra-utils/videos/video-comments'
import { waitJobs } from '../../../../shared/extra-utils/server/jobs' import { VideoComment, VideoCommentThreadTree, VideoPrivacy } from '../../../../shared/models/videos'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
const expect = chai.expect const expect = chai.expect

View File

@ -2,7 +2,7 @@
import 'mocha' import 'mocha'
import * as chai from 'chai' import * as chai from 'chai'
import { VideoComment, VideoCommentAdmin, VideoCommentThreadTree } from '@shared/models'
import { cleanupTests, testImage } from '../../../../shared/extra-utils' import { cleanupTests, testImage } from '../../../../shared/extra-utils'
import { import {
createUser, createUser,
@ -22,7 +22,6 @@ import {
getVideoCommentThreads, getVideoCommentThreads,
getVideoThreadComments getVideoThreadComments
} from '../../../../shared/extra-utils/videos/video-comments' } from '../../../../shared/extra-utils/videos/video-comments'
import { VideoComment, VideoCommentAdmin, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
const expect = chai.expect const expect = chai.expect

View File

@ -38,6 +38,7 @@ import {
import { cleanupTests, flushAndRunMultipleServers, ServerInfo, waitUntilLog } from '../../../shared/extra-utils/server/servers' import { cleanupTests, flushAndRunMultipleServers, ServerInfo, waitUntilLog } from '../../../shared/extra-utils/server/servers'
import { getGoodVideoUrl, getMyVideoImports, importVideo } from '../../../shared/extra-utils/videos/video-imports' import { getGoodVideoUrl, getMyVideoImports, importVideo } from '../../../shared/extra-utils/videos/video-imports'
import { import {
VideoCommentThreadTree,
VideoDetails, VideoDetails,
VideoImport, VideoImport,
VideoImportState, VideoImportState,
@ -45,7 +46,6 @@ import {
VideoPlaylistPrivacy, VideoPlaylistPrivacy,
VideoPrivacy VideoPrivacy
} from '../../../shared/models/videos' } from '../../../shared/models/videos'
import { VideoCommentThreadTree } from '../../../shared/models/videos/video-comment.model'
const expect = chai.expect const expect = chai.expect

View File

@ -1,15 +1,24 @@
export * from './bulk/bulk' export * from './bulk/bulk'
export * from './cli/cli' export * from './cli/cli'
export * from './feeds/feeds' export * from './feeds/feeds'
export * from './mock-servers/mock-instances-index' export * from './mock-servers/mock-instances-index'
export * from './miscs/miscs'
export * from './miscs/email'
export * from './miscs/sql' export * from './miscs/sql'
export * from './miscs/miscs'
export * from './miscs/stubs' export * from './miscs/stubs'
export * from './moderation/abuses' export * from './moderation/abuses'
export * from './plugins/mock-blocklist' export * from './plugins/mock-blocklist'
export * from './requests/check-api-params' export * from './requests/check-api-params'
export * from './requests/requests' export * from './requests/requests'
export * from './search/videos' export * from './search/videos'
export * from './server/activitypub' export * from './server/activitypub'
export * from './server/clients' export * from './server/clients'
export * from './server/config' export * from './server/config'
@ -18,9 +27,14 @@ export * from './server/follows'
export * from './server/jobs' export * from './server/jobs'
export * from './server/plugins' export * from './server/plugins'
export * from './server/servers' export * from './server/servers'
export * from './users/accounts' export * from './users/accounts'
export * from './users/blocklist'
export * from './users/login' export * from './users/login'
export * from './users/user-notifications'
export * from './users/user-subscriptions'
export * from './users/users' export * from './users/users'
export * from './videos/live' export * from './videos/live'
export * from './videos/services' export * from './videos/services'
export * from './videos/video-blacklist' export * from './videos/video-blacklist'

View File

@ -0,0 +1 @@
export * from './nodeinfo.model'

View File

@ -1 +1 @@
export * from './videos-overview' export * from './videos-overview.model'

View File

@ -1,3 +1,4 @@
export * from './videos-redundancy-strategy.model'
export * from './video-redundancies-filters.model' export * from './video-redundancies-filters.model'
export * from './video-redundancy-config-filter.type'
export * from './video-redundancy.model' export * from './video-redundancy.model'
export * from './videos-redundancy-strategy.model'

View File

@ -0,0 +1,3 @@
export * from './video-change-ownership-accept.model'
export * from './video-change-ownership-create.model'
export * from './video-change-ownership.model'

View File

@ -1,5 +1,5 @@
import { Account } from '../actors' import { Account } from '../../actors'
import { Video } from './video.model' import { Video } from '../video.model'
export interface VideoChangeOwnership { export interface VideoChangeOwnership {
id: number id: number

View File

@ -0,0 +1 @@
export * from './video-comment.model'

View File

@ -1,4 +1,4 @@
import { Account } from '../actors' import { Account } from '../../actors'
export interface VideoComment { export interface VideoComment {
id: number id: number

View File

@ -1,6 +1,8 @@
export * from './blacklist' export * from './blacklist'
export * from './caption' export * from './caption'
export * from './change-ownership'
export * from './channel' export * from './channel'
export * from './comment'
export * from './live' export * from './live'
export * from './import' export * from './import'
export * from './playlist' export * from './playlist'
@ -10,17 +12,11 @@ export * from './nsfw-policy.type'
export * from './thumbnail.type' export * from './thumbnail.type'
export * from './video-change-ownership-accept.model'
export * from './video-change-ownership-create.model'
export * from './video-change-ownership.model'
export * from './video-comment.model'
export * from './video-constant.model' export * from './video-constant.model'
export * from './video-create.model' export * from './video-create.model'
export * from './video-file-metadata'
export * from './video-file.model'
export * from './live/live-video.model' export * from './video-file-metadata.model'
export * from './video-file.model'
export * from './video-privacy.enum' export * from './video-privacy.enum'
export * from './video-query.type' export * from './video-query.type'

View File

@ -1,5 +1,5 @@
import { VideoConstant } from './video-constant.model' import { VideoConstant } from './video-constant.model'
import { VideoFileMetadata } from './video-file-metadata' import { VideoFileMetadata } from './video-file-metadata.model'
import { VideoResolution } from './video-resolution.enum' import { VideoResolution } from './video-resolution.enum'
export interface VideoFile { export interface VideoFile {