import * as express from 'express'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
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 { getFormattedObjects } from '../../../helpers/utils'
import { sequelizeTypescript } from '../../../initializers/database'
import { serveIndexHTML } from '@server/lib/client-html'
import { getEnabledResolutions, getRegisteredPlugins, getRegisteredThemes } from '@server/lib/config'
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 { CONFIG, isEmailEnabled } from '../initializers/config'
import {
import { AUDIT_LOG_FILENAME } from '@server/initializers/constants'
import { AdminAbuse, User, VideoChannel, VideoDetails, VideoImport } from '../../shared'
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 { jsonLoggerFormat, labelFormatter } from './logger'
import * as ffmpeg from 'fluent-ffmpeg'
-import { VideoFileMetadata } from '@shared/models/videos/video-file-metadata'
-import { getMaxBitrate, VideoResolution } from '../../shared/models/videos'
+import { getMaxBitrate, VideoFileMetadata, VideoResolution } from '../../shared/models/videos'
import { CONFIG } from '../initializers/config'
import { VIDEO_TRANSCODING_FPS } from '../initializers/constants'
import { logger } from './logger'
import { VideoObject } from '../../shared/models/activitypub/objects'
import { VideoCommentObject } from '../../shared/models/activitypub/objects/video-comment-object'
import { LiveVideoCreate, VideoCreate, VideoImportCreate } from '../../shared/models/videos'
-import { VideoCommentCreate } from '../../shared/models/videos/video-comment.model'
-import { UserModel } from '../models/user/user'
+import { VideoCommentCreate } from '../../shared/models/videos/comment/video-comment.model'
import { ActorModel } from '../models/actor/actor'
+import { UserModel } from '../models/user/user'
import { VideoModel } from '../models/video/video'
import { VideoCommentModel } from '../models/video/video-comment'
import { sendAbuse } from './activitypub/send/send-flag'
import { logger } from '@server/helpers/logger'
import { sequelizeTypescript } from '@server/initializers/database'
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 { MAccountDefault, MComment, MCommentOwnerVideo, MCommentOwnerVideoReply, MVideoFullLight } from '../types/models'
import { sendCreateVideoComment, sendDeleteVideoComment } from './activitypub/send'
import { MUserAccountId, MVideoWithRights } from '@server/types/models'
import { ServerErrorCode, UserRight, VideoChangeOwnershipStatus, VideoPrivacy } from '../../../../shared'
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 {
exists,
isBooleanValid,
import { VideoPrivacy } from '@shared/models'
import { ActivityTagObject, ActivityTombstoneObject } from '../../../shared/models/activitypub/objects/common-objects'
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 { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc'
import { regexpCapture } from '../../helpers/regexp'
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
-import * as chai from 'chai'
import 'mocha'
-import { AccountBlock, ServerBlock, Video, UserNotification, UserNotificationType } from '../../../../shared/index'
+import * as chai from 'chai'
import {
+ addAccountToAccountBlocklist,
+ addAccountToServerBlocklist,
+ addServerToAccountBlocklist,
+ addServerToServerBlocklist,
+ addVideoCommentReply,
+ addVideoCommentThread,
cleanupTests,
createUser,
deleteVideoComment,
doubleFollow,
+ findCommentId,
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 {
- addAccountToAccountBlocklist,
- addAccountToServerBlocklist,
- addServerToAccountBlocklist,
- addServerToServerBlocklist,
getAccountBlocklistByAccount,
getAccountBlocklistByServer,
getServerBlocklistByAccount,
getServerBlocklistByServer,
+ getUserNotifications,
+ getVideoCommentThreads,
+ getVideosList,
+ getVideosListWithToken,
+ getVideoThreadComments,
removeAccountFromAccountBlocklist,
removeAccountFromServerBlocklist,
removeServerFromAccountBlocklist,
- removeServerFromServerBlocklist
-} from '../../../../shared/extra-utils/users/blocklist'
-import { getUserNotifications } from '../../../../shared/extra-utils/users/user-notifications'
+ removeServerFromServerBlocklist,
+ ServerInfo,
+ setAccessTokensToServers,
+ unfollow,
+ uploadVideo,
+ userLogin,
+ waitJobs
+} from '@shared/extra-utils'
+import {
+ AccountBlock,
+ ServerBlock,
+ UserNotification,
+ UserNotificationType,
+ Video,
+ VideoComment,
+ VideoCommentThreadTree
+} from '@shared/models'
const expect = chai.expect
import 'mocha'
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 {
+ addAccountToAccountBlocklist,
+ addVideoCommentReply,
+ addVideoCommentThread,
checkCommentMention,
CheckerBaseParams,
checkNewCommentOnMyVideo,
- prepareNotificationsTest
-} from '../../../../shared/extra-utils/users/user-notifications'
-import { addVideoCommentReply, addVideoCommentThread } from '../../../../shared/extra-utils/videos/video-comments'
-import { UserNotification } from '../../../../shared/models/users'
-import { VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
+ cleanupTests,
+ getVideoCommentThreads,
+ getVideoThreadComments,
+ MockSmtpServer,
+ prepareNotificationsTest,
+ removeAccountFromAccountBlocklist,
+ ServerInfo,
+ updateMyUser,
+ uploadVideo,
+ waitJobs
+} from '@shared/extra-utils'
+import { UserNotification, VideoCommentThreadTree } from '@shared/models'
const expect = chai.expect
import 'mocha'
import * as chai from 'chai'
-import { VideoComment } from '@shared/models/videos/video-comment.model'
+import { Video, VideoComment } from '@shared/models'
import {
+ addVideoCommentReply,
addVideoCommentThread,
bulkRemoveCommentsOf,
cleanupTests,
createUser,
+ doubleFollow,
flushAndRunMultipleServers,
getVideoCommentThreads,
getVideosList,
setAccessTokensToServers,
uploadVideo,
userLogin,
- waitJobs,
- addVideoCommentReply
+ waitJobs
} from '../../../../shared/extra-utils/index'
-import { doubleFollow } from '../../../../shared/extra-utils/server/follows'
-import { Video } from '@shared/models'
const expect = chai.expect
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
-import * as chai from 'chai'
import 'mocha'
-import { Video, VideoPrivacy } from '../../../../shared/models/videos'
-import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
-import { cleanupTests, completeVideoCheck, deleteVideoComment } from '../../../../shared/extra-utils'
+import * as chai from 'chai'
import {
+ addVideoCommentReply,
+ addVideoCommentThread,
+ cleanupTests,
+ completeVideoCheck,
+ createUser,
+ createVideoCaption,
+ dateIsValid,
+ deleteVideoComment,
+ expectAccountFollows,
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 {
- addVideoCommentReply,
- addVideoCommentThread,
getVideoCommentThreads,
- getVideoThreadComments
-} from '../../../../shared/extra-utils/videos/video-comments'
-import { rateVideo } from '../../../../shared/extra-utils/videos/videos'
-import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
-import { createVideoCaption, listVideoCaptions, testCaptionFile } from '../../../../shared/extra-utils/videos/video-captions'
-import { VideoCaption } from '../../../../shared/models/videos/caption/video-caption.model'
+ getVideosList,
+ getVideoThreadComments,
+ listVideoCaptions,
+ rateVideo,
+ ServerInfo,
+ setAccessTokensToServers,
+ testCaptionFile,
+ unfollow,
+ uploadVideo,
+ userLogin,
+ waitJobs
+} from '@shared/extra-utils'
+import { Video, VideoCaption, VideoComment, VideoCommentThreadTree, VideoPrivacy } from '@shared/models'
const expect = chai.expect
import 'mocha'
import { JobState, Video } from '../../../../shared/models'
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 {
cleanupTests,
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
-import * as chai from 'chai'
import 'mocha'
+import * as chai from 'chai'
import { join } from 'path'
import * as request from 'supertest'
-import { VideoPrivacy } from '../../../../shared/models/videos'
-import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
+import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import {
addVideoChannel,
checkTmpIsEmpty,
wait,
webtorrentAdd
} from '../../../../shared/extra-utils'
+import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
import {
addVideoCommentReply,
addVideoCommentThread,
deleteVideoComment,
+ findCommentId,
getVideoCommentThreads,
- getVideoThreadComments,
- findCommentId
+ getVideoThreadComments
} from '../../../../shared/extra-utils/videos/video-comments'
-import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
-import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
+import { VideoComment, VideoCommentThreadTree, VideoPrivacy } from '../../../../shared/models/videos'
const expect = chai.expect
import 'mocha'
import * as chai from 'chai'
-
+import { VideoComment, VideoCommentAdmin, VideoCommentThreadTree } from '@shared/models'
import { cleanupTests, testImage } from '../../../../shared/extra-utils'
import {
createUser,
getVideoCommentThreads,
getVideoThreadComments
} from '../../../../shared/extra-utils/videos/video-comments'
-import { VideoComment, VideoCommentAdmin, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
const expect = chai.expect
import { cleanupTests, flushAndRunMultipleServers, ServerInfo, waitUntilLog } from '../../../shared/extra-utils/server/servers'
import { getGoodVideoUrl, getMyVideoImports, importVideo } from '../../../shared/extra-utils/videos/video-imports'
import {
+ VideoCommentThreadTree,
VideoDetails,
VideoImport,
VideoImportState,
VideoPlaylistPrivacy,
VideoPrivacy
} from '../../../shared/models/videos'
-import { VideoCommentThreadTree } from '../../../shared/models/videos/video-comment.model'
const expect = chai.expect
export * from './bulk/bulk'
+
export * from './cli/cli'
+
export * from './feeds/feeds'
+
export * from './mock-servers/mock-instances-index'
-export * from './miscs/miscs'
+
+export * from './miscs/email'
export * from './miscs/sql'
+export * from './miscs/miscs'
export * from './miscs/stubs'
+
export * from './moderation/abuses'
export * from './plugins/mock-blocklist'
+
export * from './requests/check-api-params'
export * from './requests/requests'
+
export * from './search/videos'
+
export * from './server/activitypub'
export * from './server/clients'
export * from './server/config'
export * from './server/jobs'
export * from './server/plugins'
export * from './server/servers'
+
export * from './users/accounts'
+export * from './users/blocklist'
export * from './users/login'
+export * from './users/user-notifications'
+export * from './users/user-subscriptions'
export * from './users/users'
+
export * from './videos/live'
export * from './videos/services'
export * from './videos/video-blacklist'
--- /dev/null
+export * from './nodeinfo.model'
-export * from './videos-overview'
+export * from './videos-overview.model'
-export * from './videos-redundancy-strategy.model'
export * from './video-redundancies-filters.model'
+export * from './video-redundancy-config-filter.type'
export * from './video-redundancy.model'
+export * from './videos-redundancy-strategy.model'
--- /dev/null
+export * from './video-change-ownership-accept.model'
+export * from './video-change-ownership-create.model'
+export * from './video-change-ownership.model'
-import { Account } from '../actors'
-import { Video } from './video.model'
+import { Account } from '../../actors'
+import { Video } from '../video.model'
export interface VideoChangeOwnership {
id: number
--- /dev/null
+export * from './video-comment.model'
-import { Account } from '../actors'
+import { Account } from '../../actors'
export interface VideoComment {
id: number
export * from './blacklist'
export * from './caption'
+export * from './change-ownership'
export * from './channel'
+export * from './comment'
export * from './live'
export * from './import'
export * from './playlist'
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-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-query.type'
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'
export interface VideoFile {