diff --git a/server/models/utils.ts b/server/models/utils.ts index 956562e70..fe4596d31 100644 --- a/server/models/utils.ts +++ b/server/models/utils.ts @@ -231,15 +231,7 @@ function parseQueryStringFilter (q: string, prefixes: QueryStringFilterPrefixes) ? [].concat.apply([], q.split('"').map((v, i) => i % 2 ? v : v.split(' '))).filter(Boolean) // split by space unless using double quotes : [] - // TODO: when Typescript supports Object.fromEntries, replace with the Object method - function fromEntries (entries: [keyof T, T[keyof T]][]): T { - return entries.reduce( - (acc, [ key, value ]) => ({ ...acc, [key]: value }), - {} as T - ) - } - - const objectMap = (obj, fn) => fromEntries( + const objectMap = (obj, fn) => Object.fromEntries( Object.entries(obj).map( ([ k, v ], i) => [ k, fn(v, k, i) ] ) @@ -248,7 +240,7 @@ function parseQueryStringFilter (q: string, prefixes: QueryStringFilterPrefixes) return { // search is the querystring minus defined filters search: tokens.filter(e => !Object.values(prefixes).some(p => { - if (typeof p === "string") { + if (typeof p === 'string') { return e.startsWith(p) } else { return e.startsWith(p.prefix) @@ -256,7 +248,7 @@ function parseQueryStringFilter (q: string, prefixes: QueryStringFilterPrefixes) })).join(' '), // filters defined in prefixes are added under their own name ...objectMap(prefixes, p => { - if (typeof p === "string") { + if (typeof p === 'string') { return tokens.filter(e => e.startsWith(p)).map(e => e.slice(p.length)) // we keep the matched item, and remove its prefix } else { const _tokens = tokens.filter(e => e.startsWith(p.prefix)).map(e => e.slice(p.prefix.length)).map(p.handler) diff --git a/server/models/video/video-abuse.ts b/server/models/video/video-abuse.ts index f6b546825..6cd2c0418 100644 --- a/server/models/video/video-abuse.ts +++ b/server/models/video/video-abuse.ts @@ -32,10 +32,12 @@ export enum ScopeNames { searchReportee?: string searchVideo?: string searchVideoChannel?: string + // filters id?: number state?: VideoAbuseState - is?: any + is?: 'deleted' | 'blacklisted' + // accountIds serverAccountId: number userAccountId: number @@ -91,11 +93,11 @@ export enum ScopeNames { } let onlyBlacklisted = false - if (options.is === "deleted") { + if (options.is === 'deleted') { where = Object.assign(where, { deletedVideo: { [Op.not]: null } }) - } else if (options.is === "blacklisted") { + } else if (options.is === 'blacklisted') { onlyBlacklisted = true } @@ -323,17 +325,17 @@ export class VideoAbuseModel extends Model { state: { prefix: 'state:', handler: v => { - if (v === "accepted") return VideoAbuseState.ACCEPTED - if (v === "pending") return VideoAbuseState.PENDING - if (v === "rejected") return VideoAbuseState.REJECTED + if (v === 'accepted') return VideoAbuseState.ACCEPTED + if (v === 'pending') return VideoAbuseState.PENDING + if (v === 'rejected') return VideoAbuseState.REJECTED return undefined } }, is: { prefix: 'is:', handler: v => { - if (v === "deleted") return v - if (v === "blacklisted") return v + if (v === 'deleted') return v + if (v === 'blacklisted') return v return undefined } }, diff --git a/tsconfig.json b/tsconfig.json index 7eed7d0cd..058da4f78 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,7 +12,9 @@ "dom", "es2015", "es2016", - "es2017" + "es2017", + "es2018", + "es2019" ], "typeRoots": [ "node_modules/sitemap/node_modules/@types",