mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-02-25 18:55:32 -06:00
Move typescript utils in its own directory
This commit is contained in:
parent
077f344891
commit
6b5f72beda
@ -2,7 +2,7 @@ import 'multer'
|
||||
import express from 'express'
|
||||
import { auditLoggerFactory, getAuditIdFromRes, UserAuditView } from '@server/helpers/audit-logger'
|
||||
import { Hooks } from '@server/lib/plugins/hooks'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ActorImageType, UserUpdateMe, UserVideoRate as FormattedUserVideoRate } from '../../../../shared'
|
||||
import { HttpStatusCode } from '../../../../shared/models/http/http-error-codes'
|
||||
import { UserVideoQuota } from '../../../../shared/models/users/user-video-quota.model'
|
||||
|
@ -9,7 +9,7 @@ import { VideoPlaylistModel } from '@server/models/video/video-playlist'
|
||||
import { VideoPlaylistElementModel } from '@server/models/video/video-playlist-element'
|
||||
import { FilteredModelAttributes } from '@server/types'
|
||||
import { MThumbnail, MVideoPlaylist, MVideoPlaylistFull, MVideoPlaylistVideosLength } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { PlaylistObject } from '@shared/models'
|
||||
import { getOrCreateAPActor } from '../actors'
|
||||
import { crawlCollectionPage } from '../crawl'
|
||||
|
@ -2,7 +2,7 @@ import { ACTIVITY_PUB } from '@server/initializers/constants'
|
||||
import { VideoPlaylistModel } from '@server/models/video/video-playlist'
|
||||
import { VideoPlaylistElementModel } from '@server/models/video/video-playlist-element'
|
||||
import { MVideoId, MVideoPlaylistId } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { PlaylistElementObject, PlaylistObject, VideoPlaylistPrivacy } from '@shared/models'
|
||||
|
||||
function playlistObjectToDBAttributes (playlistObject: PlaylistObject, to: string[]) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { isAbuseMessageValid } from '@server/helpers/custom-validators/abuses'
|
||||
import { MAbuseMessage, MAbuseMessageFormattable } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { AbuseMessage } from '@shared/models'
|
||||
import { AccountModel, ScopeNames as AccountScopeNames } from '../account/account'
|
||||
import { getSort, throwIfNotValid } from '../utils'
|
||||
|
@ -16,7 +16,7 @@ import {
|
||||
UpdatedAt
|
||||
} from 'sequelize-typescript'
|
||||
import { isAbuseModerationCommentValid, isAbuseReasonValid, isAbuseStateValid } from '@server/helpers/custom-validators/abuses'
|
||||
import { abusePredefinedReasonsMap, AttributesOnly } from '@shared/core-utils'
|
||||
import { abusePredefinedReasonsMap } from '@shared/core-utils'
|
||||
import {
|
||||
AbuseFilter,
|
||||
AbuseObject,
|
||||
@ -30,6 +30,7 @@ import {
|
||||
UserAbuse,
|
||||
UserVideoAbuse
|
||||
} from '@shared/models'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ABUSE_STATES, CONSTRAINTS_FIELDS } from '../../initializers/constants'
|
||||
import { MAbuseAdminFormattable, MAbuseAP, MAbuseFull, MAbuseReporter, MAbuseUserFormattable, MUserAccountId } from '../../types/models'
|
||||
import { AccountModel, ScopeNames as AccountScopeNames, SummaryOptions as AccountSummaryOptions } from '../account/account'
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoDetails } from '@shared/models'
|
||||
import { VideoModel } from '../video/video'
|
||||
import { AbuseModel } from './abuse'
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoCommentModel } from '../video/video-comment'
|
||||
import { AbuseModel } from './abuse'
|
||||
|
||||
|
@ -2,7 +2,7 @@ import { Op, QueryTypes } from 'sequelize'
|
||||
import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { handlesToNameAndHost } from '@server/helpers/actors'
|
||||
import { MAccountBlocklist, MAccountBlocklistAccounts, MAccountBlocklistFormattable } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { AccountBlock } from '../../../shared/models'
|
||||
import { ActorModel } from '../actor/actor'
|
||||
import { ServerModel } from '../server/server'
|
||||
|
@ -7,7 +7,7 @@ import {
|
||||
MAccountVideoRateAccountVideo,
|
||||
MAccountVideoRateFormattable
|
||||
} from '@server/types/models/video/video-rate'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { AccountVideoRate } from '../../../shared'
|
||||
import { VideoRateType } from '../../../shared/models/videos'
|
||||
import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc'
|
||||
|
@ -17,7 +17,7 @@ import {
|
||||
UpdatedAt
|
||||
} from 'sequelize-typescript'
|
||||
import { ModelCache } from '@server/models/model-cache'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { Account, AccountSummary } from '../../../shared/models/actors'
|
||||
import { isAccountDescriptionValid } from '../../helpers/custom-validators/accounts'
|
||||
import { CONSTRAINTS_FIELDS, SERVER_ACTOR_NAME, WEBSERVER } from '../../initializers/constants'
|
||||
|
@ -30,7 +30,7 @@ import {
|
||||
MActorFollowFormattable,
|
||||
MActorFollowSubscriptions
|
||||
} from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ActivityPubActorType } from '@shared/models'
|
||||
import { FollowState } from '../../../shared/models/actors'
|
||||
import { ActorFollow } from '../../../shared/models/actors/follow.model'
|
||||
|
@ -2,7 +2,7 @@ import { remove } from 'fs-extra'
|
||||
import { join } from 'path'
|
||||
import { AfterDestroy, AllowNull, Column, CreatedAt, Default, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { MActorImageFormattable } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ActorImageType } from '@shared/models'
|
||||
import { ActorImage } from '../../../shared/models/actors/actor-image.model'
|
||||
import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc'
|
||||
|
@ -17,7 +17,8 @@ import {
|
||||
UpdatedAt
|
||||
} from 'sequelize-typescript'
|
||||
import { ModelCache } from '@server/models/model-cache'
|
||||
import { getLowercaseExtension, AttributesOnly } from '@shared/core-utils'
|
||||
import { getLowercaseExtension } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ActivityIconObject, ActivityPubActorType } from '../../../shared/models/activitypub'
|
||||
import { ActorImage } from '../../../shared/models/actors/actor-image.model'
|
||||
import { activityPubContextify } from '../../helpers/activitypub'
|
||||
|
@ -1,6 +1,6 @@
|
||||
import memoizee from 'memoizee'
|
||||
import { AllowNull, Column, Default, DefaultScope, HasOne, IsInt, Model, Table } from 'sequelize-typescript'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { AccountModel } from '../account/account'
|
||||
|
||||
export const getServerActor = memoizee(async function () {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { AllowNull, Column, CreatedAt, DataType, HasMany, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { OAuthTokenModel } from './oauth-token'
|
||||
|
||||
@Table({
|
||||
|
@ -15,7 +15,7 @@ import {
|
||||
import { TokensCache } from '@server/lib/auth/tokens-cache'
|
||||
import { MUserAccountId } from '@server/types/models'
|
||||
import { MOAuthTokenUser } from '@server/types/models/oauth/oauth-token'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { logger } from '../../helpers/logger'
|
||||
import { AccountModel } from '../account/account'
|
||||
import { ActorModel } from '../actor/actor'
|
||||
|
@ -16,7 +16,7 @@ import {
|
||||
} from 'sequelize-typescript'
|
||||
import { getServerActor } from '@server/models/application/application'
|
||||
import { MActor, MVideoForRedundancyAPI, MVideoRedundancy, MVideoRedundancyAP, MVideoRedundancyVideo } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoRedundanciesTarget } from '@shared/models/redundancy/video-redundancies-filters.model'
|
||||
import {
|
||||
FileRedundancyInformation,
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { FindAndCountOptions, json, QueryTypes } from 'sequelize'
|
||||
import { AllowNull, Column, CreatedAt, DataType, DefaultScope, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { MPlugin, MPluginFormattable } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { PeerTubePlugin, PluginType, RegisterServerSettingOptions } from '../../../shared/models'
|
||||
import {
|
||||
isPluginDescriptionValid,
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Op, QueryTypes } from 'sequelize'
|
||||
import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { MServerBlocklist, MServerBlocklistAccountServer, MServerBlocklistFormattable } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ServerBlock } from '@shared/models'
|
||||
import { AccountModel } from '../account/account'
|
||||
import { createSafeIn, getSort, searchAttribute } from '../utils'
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Transaction } from 'sequelize'
|
||||
import { AllowNull, Column, CreatedAt, Default, HasMany, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { MServer, MServerFormattable } from '@server/types/models/server'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { isHostValid } from '../../helpers/custom-validators/servers'
|
||||
import { ActorModel } from '../actor/actor'
|
||||
import { throwIfNotValid } from '../utils'
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { AllowNull, BelongsToMany, Column, CreatedAt, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { Transaction } from 'sequelize/types'
|
||||
import { MTracker } from '@server/types/models/server/tracker'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoModel } from '../video/video'
|
||||
import { VideoTrackerModel } from './video-tracker'
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoModel } from '../video/video'
|
||||
import { TrackerModel } from './tracker'
|
||||
|
||||
|
@ -14,7 +14,7 @@ import {
|
||||
} from 'sequelize-typescript'
|
||||
import { TokensCache } from '@server/lib/auth/tokens-cache'
|
||||
import { MNotificationSettingFormattable } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { UserNotificationSetting, UserNotificationSettingValue } from '../../../shared/models/users/user-notification-setting.model'
|
||||
import { isUserNotificationSettingValid } from '../../helpers/custom-validators/user-notifications'
|
||||
import { throwIfNotValid } from '../utils'
|
||||
|
@ -2,7 +2,7 @@ import { FindOptions, ModelIndexesOptions, Op, WhereOptions } from 'sequelize'
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, Default, ForeignKey, Is, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { uuidToShort } from '@shared/core-utils/uuid'
|
||||
import { UserNotificationIncludes, UserNotificationModelForApi } from '@server/types/models/user'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { UserNotification, UserNotificationType } from '../../../shared'
|
||||
import { isBooleanValid } from '../../helpers/custom-validators/misc'
|
||||
import { isUserNotificationTypeValid } from '../../helpers/custom-validators/user-notifications'
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { DestroyOptions, Op, Transaction } from 'sequelize'
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, IsInt, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { MUserAccountId, MUserId } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoModel } from '../video/video'
|
||||
import { UserModel } from './user'
|
||||
import { getServerActor } from '../application/application'
|
||||
|
@ -31,7 +31,7 @@ import {
|
||||
MUserWithNotificationSetting,
|
||||
MVideoWithRights
|
||||
} from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { hasUserRight, USER_ROLE_LABELS } from '../../../shared/core-utils/users'
|
||||
import { AbuseState, MyUser, UserRight, VideoPlaylistType, VideoPrivacy } from '../../../shared/models'
|
||||
import { User, UserRole } from '../../../shared/models/users'
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Op, Transaction } from 'sequelize'
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, Default, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { MScheduleVideoUpdateFormattable, MScheduleVideoUpdate } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoPrivacy } from '../../../shared/models/videos'
|
||||
import { VideoModel } from './video'
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { col, fn, QueryTypes, Transaction } from 'sequelize'
|
||||
import { AllowNull, BelongsToMany, Column, CreatedAt, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { MTag } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoPrivacy, VideoState } from '../../../shared/models/videos'
|
||||
import { isVideoTagValid } from '../../helpers/custom-validators/videos'
|
||||
import { throwIfNotValid } from '../utils'
|
||||
|
@ -17,7 +17,7 @@ import {
|
||||
} from 'sequelize-typescript'
|
||||
import { afterCommitIfTransaction } from '@server/helpers/database-utils'
|
||||
import { MThumbnail, MThumbnailVideo, MVideo } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ThumbnailType } from '../../../shared/models/videos/thumbnail.type'
|
||||
import { logger } from '../../helpers/logger'
|
||||
import { CONFIG } from '../../initializers/config'
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { FindOptions } from 'sequelize'
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { MVideoBlacklist, MVideoBlacklistFormattable } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoBlacklist, VideoBlacklistType } from '../../../shared/models/videos'
|
||||
import { isVideoBlacklistReasonValid, isVideoBlacklistTypeValid } from '../../helpers/custom-validators/video-blacklist'
|
||||
import { CONSTRAINTS_FIELDS } from '../../initializers/constants'
|
||||
|
@ -17,7 +17,7 @@ import {
|
||||
} from 'sequelize-typescript'
|
||||
import { buildUUID } from '@shared/core-utils/uuid'
|
||||
import { MVideo, MVideoCaption, MVideoCaptionFormattable, MVideoCaptionVideo } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoCaption } from '../../../shared/models/videos/caption/video-caption.model'
|
||||
import { isVideoCaptionLanguageValid } from '../../helpers/custom-validators/video-captions'
|
||||
import { logger } from '../../helpers/logger'
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { MVideoChangeOwnershipFormattable, MVideoChangeOwnershipFull } from '@server/types/models/video/video-change-ownership'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoChangeOwnership, VideoChangeOwnershipStatus } from '../../../shared/models/videos'
|
||||
import { AccountModel } from '../account/account'
|
||||
import { getSort } from '../utils'
|
||||
|
@ -17,8 +17,10 @@ import {
|
||||
Table,
|
||||
UpdatedAt
|
||||
} from 'sequelize-typescript'
|
||||
import { CONFIG } from '@server/initializers/config'
|
||||
import { MAccountActor } from '@server/types/models'
|
||||
import { AttributesOnly, pick } from '@shared/core-utils'
|
||||
import { pick } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ActivityPubActor } from '../../../shared/models/activitypub'
|
||||
import { VideoChannel, VideoChannelSummary } from '../../../shared/models/videos'
|
||||
import {
|
||||
@ -44,7 +46,6 @@ import { setAsUpdated } from '../shared'
|
||||
import { buildServerIdsFollowedBy, buildTrigramSearchIndex, createSimilarityAttribute, getSort, throwIfNotValid } from '../utils'
|
||||
import { VideoModel } from './video'
|
||||
import { VideoPlaylistModel } from './video-playlist'
|
||||
import { CONFIG } from '@server/initializers/config'
|
||||
|
||||
export enum ScopeNames {
|
||||
FOR_API = 'FOR_API',
|
||||
|
@ -16,7 +16,7 @@ import {
|
||||
} from 'sequelize-typescript'
|
||||
import { getServerActor } from '@server/models/application/application'
|
||||
import { MAccount, MAccountId, MUserAccountId } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
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'
|
||||
|
@ -26,7 +26,7 @@ import { extractVideo } from '@server/helpers/video'
|
||||
import { getHLSPublicFileUrl, getWebTorrentPublicFileUrl } from '@server/lib/object-storage'
|
||||
import { getFSTorrentFilePath } from '@server/lib/paths'
|
||||
import { isStreamingPlaylist, MStreamingPlaylistVideo, MVideo, MVideoWithHost } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoStorage } from '@shared/models'
|
||||
import {
|
||||
isVideoFileExtnameValid,
|
||||
|
@ -15,7 +15,7 @@ import {
|
||||
} from 'sequelize-typescript'
|
||||
import { afterCommitIfTransaction } from '@server/helpers/database-utils'
|
||||
import { MVideoImportDefault, MVideoImportFormattable } from '@server/types/models/video/video-import'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoImport, VideoImportState } from '../../../shared'
|
||||
import { isVideoImportStateValid, isVideoImportTargetUrlValid } from '../../helpers/custom-validators/video-imports'
|
||||
import { isVideoMagnetUriValid } from '../../helpers/custom-validators/videos'
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Op, QueryTypes, Transaction } from 'sequelize'
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, Default, ForeignKey, IsInt, Model, Table, Unique, UpdatedAt } from 'sequelize-typescript'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoModel } from './video'
|
||||
|
||||
export type VideoJobInfoColumnType = 'pendingMove' | 'pendingTranscode'
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, DataType, DefaultScope, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { WEBSERVER } from '@server/initializers/constants'
|
||||
import { MVideoLive, MVideoLiveVideo } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { LiveVideo, VideoState } from '@shared/models'
|
||||
import { VideoModel } from './video'
|
||||
import { VideoBlacklistModel } from './video-blacklist'
|
||||
|
@ -32,7 +32,7 @@ import { AccountModel } from '../account/account'
|
||||
import { getSort, throwIfNotValid } from '../utils'
|
||||
import { ForAPIOptions, ScopeNames as VideoScopeNames, VideoModel } from './video'
|
||||
import { VideoPlaylistModel } from './video-playlist'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
|
||||
@Table({
|
||||
tableName: 'videoPlaylistElement',
|
||||
|
@ -17,9 +17,10 @@ import {
|
||||
Table,
|
||||
UpdatedAt
|
||||
} from 'sequelize-typescript'
|
||||
import { buildUUID, uuidToShort } from '@shared/core-utils/uuid'
|
||||
import { MAccountId, MChannelId } from '@server/types/models'
|
||||
import { AttributesOnly, buildPlaylistEmbedPath, buildPlaylistWatchPath, pick } from '@shared/core-utils'
|
||||
import { buildPlaylistEmbedPath, buildPlaylistWatchPath, pick } from '@shared/core-utils'
|
||||
import { buildUUID, uuidToShort } from '@shared/core-utils/uuid'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ActivityIconObject } from '../../../shared/models/activitypub/objects'
|
||||
import { PlaylistObject } from '../../../shared/models/activitypub/objects/playlist-object'
|
||||
import { VideoPlaylistPrivacy } from '../../../shared/models/videos/playlist/video-playlist-privacy.model'
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { literal, Op, QueryTypes, Transaction } from 'sequelize'
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Is, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc'
|
||||
import { CONSTRAINTS_FIELDS } from '../../initializers/constants'
|
||||
import { MActorDefault } from '../../types/models'
|
||||
|
@ -18,7 +18,7 @@ import {
|
||||
import { getHLSPublicFileUrl } from '@server/lib/object-storage'
|
||||
import { VideoFileModel } from '@server/models/video/video-file'
|
||||
import { MStreamingPlaylist, MVideo } from '@server/types/models'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoStorage } from '@shared/models'
|
||||
import { VideoStreamingPlaylistType } from '../../../shared/models/videos/video-streaming-playlist.type'
|
||||
import { sha1 } from '@shared/core-utils/crypto'
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { TagModel } from './tag'
|
||||
import { VideoModel } from './video'
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { literal, Op } from 'sequelize'
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Model, Table } from 'sequelize-typescript'
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { VideoModel } from './video'
|
||||
|
||||
@Table({
|
||||
|
@ -25,7 +25,6 @@ import {
|
||||
UpdatedAt
|
||||
} from 'sequelize-typescript'
|
||||
import { buildNSFWFilter } from '@server/helpers/express-utils'
|
||||
import { uuidToShort } from '@shared/core-utils/uuid'
|
||||
import { getPrivaciesForFederation, isPrivacyForFederation, isStateForFederation } from '@server/helpers/video'
|
||||
import { LiveManager } from '@server/lib/live/live-manager'
|
||||
import { removeHLSObjectStorage, removeWebTorrentObjectStorage } from '@server/lib/object-storage'
|
||||
@ -33,8 +32,10 @@ import { getHLSDirectory, getHLSRedundancyDirectory } from '@server/lib/paths'
|
||||
import { VideoPathManager } from '@server/lib/video-path-manager'
|
||||
import { getServerActor } from '@server/models/application/application'
|
||||
import { ModelCache } from '@server/models/model-cache'
|
||||
import { AttributesOnly, buildVideoEmbedPath, buildVideoWatchPath, pick } from '@shared/core-utils'
|
||||
import { buildVideoEmbedPath, buildVideoWatchPath, pick } from '@shared/core-utils'
|
||||
import { uuidToShort } from '@shared/core-utils/uuid'
|
||||
import { VideoFile, VideoInclude } from '@shared/models'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ResultList, UserRight, VideoPrivacy, VideoState } from '../../../shared'
|
||||
import { VideoObject } from '../../../shared/models/activitypub/objects'
|
||||
import { Video, VideoDetails, VideoRateType, VideoStorage } from '../../../shared/models/videos'
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { AbuseMessageModel } from '@server/models/abuse/abuse-message'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { AbuseModel } from '../../../models/abuse/abuse'
|
||||
import { MAccountFormattable } from '../account'
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { VideoAbuseModel } from '@server/models/abuse/video-abuse'
|
||||
import { VideoCommentAbuseModel } from '@server/models/abuse/video-comment-abuse'
|
||||
import { VideoCommentModel } from '@server/models/video/video-comment'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { AbuseModel } from '../../../models/abuse/abuse'
|
||||
import { MAccountDefault, MAccountFormattable, MAccountLight, MAccountUrl } from '../account'
|
||||
import { MComment, MCommentOwner, MCommentUrl, MCommentVideo, MVideoUrl } from '../video'
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { AccountBlocklistModel } from '../../../models/account/account-blocklist'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { MAccountDefault, MAccountFormattable } from './account'
|
||||
|
||||
type Use<K extends keyof AccountBlocklistModel, M> = PickWith<AccountBlocklistModel, K, M>
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { FunctionProperties, PickWith } from '@shared/core-utils'
|
||||
import { FunctionProperties, PickWith } from '@shared/typescript-utils'
|
||||
import { AccountModel } from '../../../models/account/account'
|
||||
import {
|
||||
MActor,
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
import { ActorCustomPageModel } from '../../../models/account/actor-custom-page'
|
||||
|
||||
export type MActorCustomPage = Omit<ActorCustomPageModel, 'Actor'>
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { ActorFollowModel } from '../../../models/actor/actor-follow'
|
||||
import {
|
||||
MActor,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { FunctionProperties } from '@shared/core-utils'
|
||||
import { FunctionProperties } from '@shared/typescript-utils'
|
||||
import { ActorImageModel } from '../../../models/actor/actor-image'
|
||||
|
||||
export type MActorImage = ActorImageModel
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { FunctionProperties, PickWith, PickWithOpt } from '@shared/core-utils'
|
||||
import { FunctionProperties, PickWith, PickWithOpt } from '@shared/typescript-utils'
|
||||
import { ActorModel } from '../../../models/actor/actor'
|
||||
import { MAccount, MAccountDefault, MAccountId, MAccountIdActor } from '../account'
|
||||
import { MServer, MServerHost, MServerHostBlocks, MServerRedundancyAllowed } from '../server'
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { OAuthTokenModel } from '@server/models/oauth/oauth-token'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { MUserAccountUrl } from '../user/user'
|
||||
|
||||
type Use<K extends keyof OAuthTokenModel, M> = PickWith<OAuthTokenModel, K, M>
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { ServerBlocklistModel } from '@server/models/server/server-blocklist'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { MAccountDefault, MAccountFormattable } from '../account/account'
|
||||
import { MServer, MServerFormattable } from './server'
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { FunctionProperties, PickWith } from '@shared/typescript-utils'
|
||||
import { ServerModel } from '../../../models/server/server'
|
||||
import { FunctionProperties, PickWith } from '@shared/core-utils'
|
||||
import { MAccountBlocklistId } from '../account'
|
||||
|
||||
type Use<K extends keyof ServerModel, M> = PickWith<ServerModel, K, M>
|
||||
|
@ -3,7 +3,7 @@ import { VideoCommentAbuseModel } from '@server/models/abuse/video-comment-abuse
|
||||
import { ApplicationModel } from '@server/models/application/application'
|
||||
import { PluginModel } from '@server/models/server/plugin'
|
||||
import { UserNotificationModel } from '@server/models/user/user-notification'
|
||||
import { PickWith, PickWithOpt } from '@shared/core-utils'
|
||||
import { PickWith, PickWithOpt } from '@shared/typescript-utils'
|
||||
import { AbuseModel } from '../../../models/abuse/abuse'
|
||||
import { AccountModel } from '../../../models/account/account'
|
||||
import { ActorModel } from '../../../models/actor/actor'
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { AccountModel } from '@server/models/account/account'
|
||||
import { UserModel } from '@server/models/user/user'
|
||||
import { MVideoPlaylist } from '@server/types/models'
|
||||
import { PickWith, PickWithOpt } from '@shared/core-utils'
|
||||
import { PickWith, PickWithOpt } from '@shared/typescript-utils'
|
||||
import {
|
||||
MAccount,
|
||||
MAccountDefault,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { ThumbnailModel } from '../../../models/video/thumbnail'
|
||||
import { MVideo } from './video'
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { VideoBlacklistModel } from '../../../models/video/video-blacklist'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { MVideo, MVideoFormattable } from './video'
|
||||
|
||||
type Use<K extends keyof VideoBlacklistModel, M> = PickWith<VideoBlacklistModel, K, M>
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { VideoCaptionModel } from '../../../models/video/video-caption'
|
||||
import { MVideo, MVideoUUID } from './video'
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { VideoChangeOwnershipModel } from '@server/models/video/video-change-ownership'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { MAccountDefault, MAccountFormattable } from '../account/account'
|
||||
import { MVideoWithAllFiles, MVideoFormattable } from './video'
|
||||
import { MVideoFormattable, MVideoWithAllFiles } from './video'
|
||||
|
||||
type Use<K extends keyof VideoChangeOwnershipModel, M> = PickWith<VideoChangeOwnershipModel, K, M>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { FunctionProperties, PickWith, PickWithOpt } from '@shared/core-utils'
|
||||
import { FunctionProperties, PickWith, PickWithOpt } from '@shared/typescript-utils'
|
||||
import { VideoChannelModel } from '../../../models/video/video-channel'
|
||||
import {
|
||||
MAccountActor,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { PickWith, PickWithOpt } from '@shared/core-utils'
|
||||
import { PickWith, PickWithOpt } from '@shared/typescript-utils'
|
||||
import { VideoCommentModel } from '../../../models/video/video-comment'
|
||||
import { MAccountDefault, MAccountFormattable, MAccountUrl } from '../account'
|
||||
import { MVideo, MVideoAccountLight, MVideoFeed, MVideoIdUrl, MVideoUrl } from './video'
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { PickWith, PickWithOpt } from '@shared/typescript-utils'
|
||||
import { VideoFileModel } from '../../../models/video/video-file'
|
||||
import { PickWith, PickWithOpt } from '@shared/core-utils'
|
||||
import { MVideo, MVideoUUID } from './video'
|
||||
import { MVideoRedundancy, MVideoRedundancyFileUrl } from './video-redundancy'
|
||||
import { MStreamingPlaylistVideo, MStreamingPlaylist } from './video-streaming-playlist'
|
||||
import { MStreamingPlaylist, MStreamingPlaylistVideo } from './video-streaming-playlist'
|
||||
|
||||
type Use<K extends keyof VideoFileModel, M> = PickWith<VideoFileModel, K, M>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { VideoImportModel } from '@server/models/video/video-import'
|
||||
import { PickWith, PickWithOpt } from '@shared/core-utils'
|
||||
import { MVideo, MVideoAccountLight, MVideoFormattable, MVideoTag, MVideoThumbnail, MVideoWithFile } from './video'
|
||||
import { PickWith, PickWithOpt } from '@shared/typescript-utils'
|
||||
import { MUser } from '../user/user'
|
||||
import { MVideo, MVideoAccountLight, MVideoFormattable, MVideoTag, MVideoThumbnail, MVideoWithFile } from './video'
|
||||
|
||||
type Use<K extends keyof VideoImportModel, M> = PickWith<VideoImportModel, K, M>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { VideoLiveModel } from '@server/models/video/video-live'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { MVideo } from './video'
|
||||
|
||||
type Use<K extends keyof VideoLiveModel, M> = PickWith<VideoLiveModel, K, M>
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { VideoPlaylistElementModel } from '@server/models/video/video-playlist-element'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { MVideoFormattable, MVideoThumbnail, MVideoUrl } from './video'
|
||||
import { MVideoPlaylistPrivacy } from './video-playlist'
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { MVideoPlaylistElementLight } from '@server/types/models/video/video-playlist-element'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { VideoPlaylistModel } from '../../../models/video/video-playlist'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { MAccount, MAccountDefault, MAccountSummary, MAccountSummaryFormattable } from '../account'
|
||||
import { MThumbnail } from './thumbnail'
|
||||
import { MChannelDefault, MChannelSummary, MChannelSummaryFormattable, MChannelUrl } from './video-channels'
|
||||
import { MVideoPlaylistElementLight } from '@server/types/models/video/video-playlist-element'
|
||||
|
||||
type Use<K extends keyof VideoPlaylistModel, M> = PickWith<VideoPlaylistModel, K, M>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { AccountVideoRateModel } from '@server/models/account/account-video-rate'
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { MAccountAudience, MAccountUrl } from '../account/account'
|
||||
import { MVideo, MVideoFormattable } from './video'
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
import { VideoRedundancyModel } from '../../../models/redundancy/video-redundancy'
|
||||
import { PickWith, PickWithOpt } from '@shared/core-utils'
|
||||
import { VideoStreamingPlaylistModel } from '@server/models/video/video-streaming-playlist'
|
||||
import { VideoFileModel } from '@server/models/video/video-file'
|
||||
import { VideoStreamingPlaylistModel } from '@server/models/video/video-streaming-playlist'
|
||||
import { PickWith, PickWithOpt } from '@shared/typescript-utils'
|
||||
import { VideoRedundancyModel } from '../../../models/redundancy/video-redundancy'
|
||||
import { MVideoUrl } from './video'
|
||||
import { MVideoFile, MVideoFileVideo } from './video-file'
|
||||
import { MStreamingPlaylistVideo } from './video-streaming-playlist'
|
||||
import { MVideoUrl } from './video'
|
||||
|
||||
type Use<K extends keyof VideoRedundancyModel, M> = PickWith<VideoRedundancyModel, K, M>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { PickWith } from '@shared/core-utils'
|
||||
import { PickWith } from '@shared/typescript-utils'
|
||||
import { VideoShareModel } from '../../../models/video/video-share'
|
||||
import { MActorDefault } from '../actor'
|
||||
import { MVideo } from './video'
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { PickWith, PickWithOpt } from '@shared/typescript-utils'
|
||||
import { VideoStreamingPlaylistModel } from '../../../models/video/video-streaming-playlist'
|
||||
import { PickWith, PickWithOpt } from '@shared/core-utils'
|
||||
import { MVideoRedundancyFileUrl, MVideoRedundancy } from './video-redundancy'
|
||||
import { MVideo } from './video'
|
||||
import { MVideoFile } from './video-file'
|
||||
import { MVideoRedundancy, MVideoRedundancyFileUrl } from './video-redundancy'
|
||||
|
||||
type Use<K extends keyof VideoStreamingPlaylistModel, M> = PickWith<VideoStreamingPlaylistModel, K, M>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { PickWith, PickWithOpt } from '@shared/core-utils'
|
||||
import { PickWith, PickWithOpt } from '@shared/typescript-utils'
|
||||
import { VideoModel } from '../../../models/video/video'
|
||||
import { MTrackerUrl } from '../server/tracker'
|
||||
import { MUserVideoHistoryTime } from '../user/user-video-history'
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { AttributesOnly } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { Model } from 'sequelize'
|
||||
|
||||
// Thanks to sequelize-typescript: https://github.com/RobinBuschmann/sequelize-typescript
|
||||
|
@ -2,5 +2,4 @@ export * from './date'
|
||||
export * from './miscs'
|
||||
export * from './regexp'
|
||||
export * from './promises'
|
||||
export * from './types'
|
||||
export * from './url'
|
||||
|
@ -1,45 +0,0 @@
|
||||
/* eslint-disable @typescript-eslint/array-type */
|
||||
|
||||
export type FunctionPropertyNames<T> = {
|
||||
[K in keyof T]: T[K] extends Function ? K : never
|
||||
}[keyof T]
|
||||
|
||||
export type FunctionProperties<T> = Pick<T, FunctionPropertyNames<T>>
|
||||
|
||||
export type AttributesOnly<T> = {
|
||||
[K in keyof T]: T[K] extends Function ? never : T[K]
|
||||
}
|
||||
|
||||
export type PickWith<T, KT extends keyof T, V> = {
|
||||
[P in KT]: T[P] extends V ? V : never
|
||||
}
|
||||
|
||||
export type PickWithOpt<T, KT extends keyof T, V> = {
|
||||
[P in KT]?: T[P] extends V ? V : never
|
||||
}
|
||||
|
||||
// https://github.com/krzkaczor/ts-essentials Rocks!
|
||||
export type DeepPartial<T> = {
|
||||
[P in keyof T]?: T[P] extends Array<infer U>
|
||||
? Array<DeepPartial<U>>
|
||||
: T[P] extends ReadonlyArray<infer U>
|
||||
? ReadonlyArray<DeepPartial<U>>
|
||||
: DeepPartial<T[P]>
|
||||
}
|
||||
|
||||
type Primitive = string | Function | number | boolean | Symbol | undefined | null
|
||||
export type DeepOmitHelper<T, K extends keyof T> = {
|
||||
[P in K]: // extra level of indirection needed to trigger homomorhic behavior
|
||||
T[P] extends infer TP // distribute over unions
|
||||
? TP extends Primitive
|
||||
? TP // leave primitives and functions alone
|
||||
: TP extends any[]
|
||||
? DeepOmitArray<TP, K> // Array special handling
|
||||
: DeepOmit<TP, K>
|
||||
: never
|
||||
}
|
||||
export type DeepOmit<T, K> = T extends Primitive ? T : DeepOmitHelper<T, Exclude<keyof T, K>>
|
||||
|
||||
export type DeepOmitArray<T extends any[], K> = {
|
||||
[P in keyof T]: DeepOmit<T[P], K>
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
import { merge } from 'lodash'
|
||||
import { DeepPartial } from '@shared/core-utils'
|
||||
import { DeepPartial } from '@shared/typescript-utils'
|
||||
import { About, HttpStatusCode, ServerConfig } from '@shared/models'
|
||||
import { CustomConfig } from '../../models/server/custom-config.model'
|
||||
import { AbstractCommand, OverrideCommandOptions } from '../shared'
|
||||
|
Loading…
Reference in New Issue
Block a user