// ---------------------------------------------------------------------------
-const LAST_MIGRATION_VERSION = 140
+const LAST_MIGRATION_VERSION = 160
// ---------------------------------------------------------------------------
// Sortable columns per schema
const SORTABLE_COLUMNS = {
USERS: [ 'id', 'username', 'createdAt' ],
+ ACCOUNTS: [ 'createdAt' ],
JOBS: [ 'id', 'createdAt' ],
VIDEO_ABUSES: [ 'id', 'createdAt' ],
VIDEO_CHANNELS: [ 'id', 'name', 'updatedAt', 'createdAt' ],
VIDEOS: [ 'name', 'duration', 'createdAt', 'views', 'likes' ],
+ VIDEO_COMMENT_THREADS: [ 'createdAt' ],
BLACKLISTS: [ 'id', 'name', 'duration', 'views', 'likes', 'dislikes', 'uuid', 'createdAt' ],
FOLLOWERS: [ 'createdAt' ],
FOLLOWING: [ 'createdAt' ]
}
}
-const AVATARS_DIR = {
- ACCOUNT: join(CONFIG.STORAGE.AVATARS_DIR, 'account')
-}
// ---------------------------------------------------------------------------
const CONSTRAINTS_FIELDS = {
FILE_SIZE: { min: 10 },
URL: { min: 3, max: 2000 } // Length
},
- ACTOR: {
+ ACTORS: {
PUBLIC_KEY: { min: 10, max: 5000 }, // Length
PRIVATE_KEY: { min: 10, max: 5000 }, // Length
- URL: { min: 3, max: 2000 } // Length
+ URL: { min: 3, max: 2000 }, // Length
+ AVATAR: {
+ EXTNAME: [ '.png', '.jpeg', '.jpg' ],
+ FILE_SIZE: {
+ max: 2 * 1024 * 1024 // 2MB
+ }
+ }
},
VIDEO_EVENTS: {
COUNT: { min: 0 }
+ },
+ VIDEO_COMMENTS: {
+ TEXT: { min: 2, max: 3000 }, // Length
+ URL: { min: 3, max: 2000 } // Length
}
}
'video/mp4': '.mp4'
}
+const AVATAR_MIMETYPE_EXT = {
+ 'image/png': '.png',
+ 'image/jpg': '.jpg',
+ 'image/jpeg': '.jpg'
+}
+
// ---------------------------------------------------------------------------
const SERVER_ACTOR_NAME = 'peertube'
VIDEO: [ 'video/mp4', 'video/webm', 'video/ogg' ], // TODO: Merge with VIDEO_MIMETYPE_EXT
TORRENT: [ 'application/x-bittorrent' ],
MAGNET: [ 'application/x-bittorrent;x-scheme-handler/magnet' ]
- }
+ },
+ ACTOR_REFRESH_INTERVAL: 3600 * 24 // 1 day
}
const ACTIVITY_PUB_ACTOR_TYPES: { [ id: string ]: ActivityPubActorType } = {
PREVIEWS: '/static/previews/',
THUMBNAILS: '/static/thumbnails/',
TORRENTS: '/static/torrents/',
- WEBSEED: '/static/webseed/'
+ WEBSEED: '/static/webseed/',
+ AVATARS: '/static/avatars/'
}
// Cache control
width: 560,
height: 315
}
+const AVATARS_SIZE = {
+ width: 120,
+ height: 120
+}
const EMBED_SIZE = {
width: 560,
REMOTE_SCHEME.WS = 'ws'
STATIC_MAX_AGE = '0'
ACTIVITY_PUB.COLLECTION_ITEMS_PER_PAGE = 2
+ ACTIVITY_PUB.ACTOR_REFRESH_INTERVAL = 60 // 1 minute
+ CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max = 100 * 1024 // 100KB
}
CONFIG.WEBSERVER.URL = sanitizeUrl(CONFIG.WEBSERVER.SCHEME + '://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT)
export {
API_VERSION,
+ AVATARS_SIZE,
ACCEPT_HEADERS,
BCRYPT_SALT_SIZE,
CACHE,
PREVIEWS_SIZE,
REMOTE_SCHEME,
FOLLOW_STATES,
- AVATARS_DIR,
SERVER_ACTOR_NAME,
PRIVATE_RSA_KEY_SIZE,
SORTABLE_COLUMNS,
VIDEO_PRIVACIES,
VIDEO_LICENCES,
VIDEO_RATE_TYPES,
- VIDEO_MIMETYPE_EXT
+ VIDEO_MIMETYPE_EXT,
+ AVATAR_MIMETYPE_EXT
}