? [].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<T> (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) ]
)
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)
})).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)
searchReportee?: string
searchVideo?: string
searchVideoChannel?: string
+
// filters
id?: number
state?: VideoAbuseState
- is?: any
+ is?: 'deleted' | 'blacklisted'
+
// accountIds
serverAccountId: number
userAccountId: number
}
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
}
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
}
},