mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2024-11-25 18:20:31 -06:00
Prefer using Object.values
This commit is contained in:
parent
bbd5aa7ead
commit
690bb8f9f3
@ -18,7 +18,7 @@ function sortBy (obj: any[], key1: string, key2?: string) {
|
||||
})
|
||||
}
|
||||
|
||||
function intoArray (value: any) {
|
||||
function splitIntoArray (value: any) {
|
||||
if (!value) return undefined
|
||||
if (Array.isArray(value)) return value
|
||||
|
||||
@ -42,6 +42,6 @@ export {
|
||||
sortBy,
|
||||
immutableAssign,
|
||||
removeElementFromArray,
|
||||
intoArray,
|
||||
splitIntoArray,
|
||||
toBoolean
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { intoArray } from '@app/helpers'
|
||||
import { splitIntoArray } from '@app/helpers'
|
||||
import {
|
||||
BooleanBothQuery,
|
||||
BooleanQuery,
|
||||
@ -76,8 +76,8 @@ export class AdvancedSearch {
|
||||
this.categoryOneOf = options.categoryOneOf || undefined
|
||||
this.licenceOneOf = options.licenceOneOf || undefined
|
||||
this.languageOneOf = options.languageOneOf || undefined
|
||||
this.tagsOneOf = intoArray(options.tagsOneOf)
|
||||
this.tagsAllOf = intoArray(options.tagsAllOf)
|
||||
this.tagsOneOf = splitIntoArray(options.tagsOneOf)
|
||||
this.tagsAllOf = splitIntoArray(options.tagsAllOf)
|
||||
this.durationMin = options.durationMin ? parseInt(options.durationMin, 10) : undefined
|
||||
this.durationMax = options.durationMax ? parseInt(options.durationMax, 10) : undefined
|
||||
|
||||
@ -152,9 +152,9 @@ export class AdvancedSearch {
|
||||
originallyPublishedStartDate: this.originallyPublishedStartDate,
|
||||
originallyPublishedEndDate: this.originallyPublishedEndDate,
|
||||
nsfw: this.nsfw,
|
||||
categoryOneOf: intoArray(this.categoryOneOf),
|
||||
licenceOneOf: intoArray(this.licenceOneOf),
|
||||
languageOneOf: intoArray(this.languageOneOf),
|
||||
categoryOneOf: splitIntoArray(this.categoryOneOf),
|
||||
licenceOneOf: splitIntoArray(this.licenceOneOf),
|
||||
languageOneOf: splitIntoArray(this.languageOneOf),
|
||||
tagsOneOf: this.tagsOneOf,
|
||||
tagsAllOf: this.tagsAllOf,
|
||||
durationMin: this.durationMin,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { intoArray, toBoolean } from '@app/helpers'
|
||||
import { splitIntoArray, toBoolean } from '@app/helpers'
|
||||
import { getAllPrivacies } from '@shared/core-utils'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { BooleanBothQuery, NSFWPolicyType, VideoInclude, VideoPrivacy, VideoSortField } from '@shared/models'
|
||||
@ -94,8 +94,8 @@ export class VideoFilters {
|
||||
|
||||
if (obj.nsfw !== undefined) this.nsfw = obj.nsfw
|
||||
|
||||
if (obj.languageOneOf !== undefined) this.languageOneOf = intoArray(obj.languageOneOf)
|
||||
if (obj.categoryOneOf !== undefined) this.categoryOneOf = intoArray(obj.categoryOneOf)
|
||||
if (obj.languageOneOf !== undefined) this.languageOneOf = splitIntoArray(obj.languageOneOf)
|
||||
if (obj.categoryOneOf !== undefined) this.categoryOneOf = splitIntoArray(obj.categoryOneOf)
|
||||
|
||||
if (obj.scope !== undefined) this.scope = obj.scope
|
||||
if (obj.allVideos !== undefined) this.allVideos = toBoolean(obj.allVideos)
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { writeJSON } from 'fs-extra'
|
||||
import { values } from 'lodash'
|
||||
import { join } from 'path'
|
||||
import { root } from '@shared/core-utils'
|
||||
import {
|
||||
@ -65,13 +64,13 @@ Object.assign(playerKeys, videojs)
|
||||
|
||||
// Server keys
|
||||
const serverKeys: any = {}
|
||||
values(VIDEO_CATEGORIES)
|
||||
.concat(values(VIDEO_LICENCES))
|
||||
.concat(values(VIDEO_PRIVACIES))
|
||||
.concat(values(VIDEO_STATES))
|
||||
.concat(values(VIDEO_IMPORT_STATES))
|
||||
.concat(values(VIDEO_PLAYLIST_PRIVACIES))
|
||||
.concat(values(VIDEO_PLAYLIST_TYPES))
|
||||
Object.values(VIDEO_CATEGORIES)
|
||||
.concat(Object.values(VIDEO_LICENCES))
|
||||
.concat(Object.values(VIDEO_PRIVACIES))
|
||||
.concat(Object.values(VIDEO_STATES))
|
||||
.concat(Object.values(VIDEO_IMPORT_STATES))
|
||||
.concat(Object.values(VIDEO_PLAYLIST_PRIVACIES))
|
||||
.concat(Object.values(VIDEO_PLAYLIST_TYPES))
|
||||
.concat([
|
||||
'This video does not exist.',
|
||||
'We cannot fetch the video. Please try again later.',
|
||||
|
@ -1,11 +1,11 @@
|
||||
import { map } from 'bluebird'
|
||||
import { readdir, remove, stat } from 'fs-extra'
|
||||
import { uniq, values } from 'lodash'
|
||||
import { basename, join } from 'path'
|
||||
import { get, start } from 'prompt'
|
||||
import { HLS_REDUNDANCY_DIRECTORY, HLS_STREAMING_PLAYLIST_DIRECTORY } from '@server/initializers/constants'
|
||||
import { VideoFileModel } from '@server/models/video/video-file'
|
||||
import { VideoStreamingPlaylistModel } from '@server/models/video/video-streaming-playlist'
|
||||
import { uniqify } from '@shared/core-utils'
|
||||
import { ThumbnailType } from '@shared/models'
|
||||
import { getUUIDFromFilename } from '../server/helpers/utils'
|
||||
import { CONFIG } from '../server/initializers/config'
|
||||
@ -23,9 +23,9 @@ run()
|
||||
})
|
||||
|
||||
async function run () {
|
||||
const dirs = values(CONFIG.STORAGE)
|
||||
const dirs = Object.values(CONFIG.STORAGE)
|
||||
|
||||
if (uniq(dirs).length !== dirs.length) {
|
||||
if (uniqify(dirs).length !== dirs.length) {
|
||||
console.error('Cannot prune storage because you put multiple storage keys in the same directory.')
|
||||
process.exit(0)
|
||||
}
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { values } from 'lodash'
|
||||
import validator from 'validator'
|
||||
import { UserRole } from '@shared/models'
|
||||
import { isEmailEnabled } from '../../initializers/config'
|
||||
@ -44,9 +43,9 @@ function isUserEmailVerifiedValid (value: any) {
|
||||
return isBooleanValid(value)
|
||||
}
|
||||
|
||||
const nsfwPolicies = values(NSFW_POLICY_TYPES)
|
||||
const nsfwPolicies = new Set(Object.values(NSFW_POLICY_TYPES))
|
||||
function isUserNSFWPolicyValid (value: any) {
|
||||
return exists(value) && nsfwPolicies.includes(value)
|
||||
return exists(value) && nsfwPolicies.has(value)
|
||||
}
|
||||
|
||||
function isUserP2PEnabledValid (value: any) {
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { UploadFilesForCheck } from 'express'
|
||||
import { values } from 'lodash'
|
||||
import magnetUtil from 'magnet-uri'
|
||||
import validator from 'validator'
|
||||
import { VideoFilter, VideoInclude, VideoPrivacy, VideoRateType } from '@shared/models'
|
||||
@ -78,8 +77,9 @@ function isVideoViewsValid (value: string) {
|
||||
return exists(value) && validator.isInt(value + '', VIDEOS_CONSTRAINTS_FIELDS.VIEWS)
|
||||
}
|
||||
|
||||
const ratingTypes = new Set(Object.values(VIDEO_RATE_TYPES))
|
||||
function isVideoRatingTypeValid (value: string) {
|
||||
return value === 'none' || values(VIDEO_RATE_TYPES).includes(value as VideoRateType)
|
||||
return value === 'none' || ratingTypes.has(value as VideoRateType)
|
||||
}
|
||||
|
||||
function isVideoFileExtnameValid (value: string) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import config from 'config'
|
||||
import { uniq } from 'lodash'
|
||||
import { URL } from 'url'
|
||||
import { getFFmpegVersion } from '@server/helpers/ffmpeg'
|
||||
import { uniqify } from '@shared/core-utils'
|
||||
import { VideoRedundancyConfigFilter } from '@shared/models/redundancy/video-redundancy-config-filter.type'
|
||||
import { RecentlyAddedStrategy } from '../../shared/models/redundancy'
|
||||
import { isProdInstance, parseSemVersion } from '../helpers/core-utils'
|
||||
@ -141,7 +141,7 @@ function checkLocalRedundancyConfig () {
|
||||
}
|
||||
}
|
||||
|
||||
const filtered = uniq(redundancyVideos.map(r => r.strategy))
|
||||
const filtered = uniqify(redundancyVideos.map(r => r.strategy))
|
||||
if (filtered.length !== redundancyVideos.length) {
|
||||
throw new Error('Redundancy video entries should have unique strategies')
|
||||
}
|
||||
|
@ -2,8 +2,7 @@ import { readFileSync } from 'fs-extra'
|
||||
import { merge } from 'lodash'
|
||||
import { createTransport, Transporter } from 'nodemailer'
|
||||
import { join } from 'path'
|
||||
import { toArray } from '@server/helpers/custom-validators/misc'
|
||||
import { root } from '@shared/core-utils'
|
||||
import { arrayify, root } from '@shared/core-utils'
|
||||
import { EmailPayload } from '@shared/models'
|
||||
import { SendEmailDefaultOptions } from '../../shared/models/server/emailer.model'
|
||||
import { isTestOrDevInstance } from '../helpers/core-utils'
|
||||
@ -159,7 +158,7 @@ class Emailer {
|
||||
subjectPrefix: CONFIG.EMAIL.SUBJECT.PREFIX
|
||||
})
|
||||
|
||||
const toEmails = toArray(options.to)
|
||||
const toEmails = arrayify(options.to)
|
||||
|
||||
for (const to of toEmails) {
|
||||
const baseOptions: SendEmailDefaultOptions = {
|
||||
|
@ -1,8 +1,9 @@
|
||||
import { close, ensureDir, move, open, outputJSON, read, readFile, remove, stat, writeFile } from 'fs-extra'
|
||||
import { flatten, uniq } from 'lodash'
|
||||
import { flatten } from 'lodash'
|
||||
import PQueue from 'p-queue'
|
||||
import { basename, dirname, join } from 'path'
|
||||
import { MStreamingPlaylist, MStreamingPlaylistFilesVideo, MVideo } from '@server/types/models'
|
||||
import { uniqify } from '@shared/core-utils'
|
||||
import { sha256 } from '@shared/extra-utils'
|
||||
import { VideoStorage } from '@shared/models'
|
||||
import { getAudioStreamCodec, getVideoStreamCodec, getVideoStreamDimensionsInfo } from '../helpers/ffmpeg'
|
||||
@ -182,7 +183,7 @@ function downloadPlaylistSegments (playlistUrl: string, destinationDir: string,
|
||||
const subPlaylistUrls = await fetchUniqUrls(playlistUrl)
|
||||
|
||||
const subRequests = subPlaylistUrls.map(u => fetchUniqUrls(u))
|
||||
const fileUrls = uniq(flatten(await Promise.all(subRequests)))
|
||||
const fileUrls = uniqify(flatten(await Promise.all(subRequests)))
|
||||
|
||||
logger.debug('Will download %d HLS files.', fileUrls.length, { fileUrls })
|
||||
|
||||
@ -227,7 +228,7 @@ function downloadPlaylistSegments (playlistUrl: string, destinationDir: string,
|
||||
return `${dirname(playlistUrl)}/${url}`
|
||||
})
|
||||
|
||||
return uniq(urls)
|
||||
return uniqify(urls)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { values } from 'lodash'
|
||||
import { FindOptions, Op, QueryTypes, Transaction } from 'sequelize'
|
||||
import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
|
||||
import {
|
||||
@ -45,7 +44,7 @@ import { AccountModel } from './account'
|
||||
export class AccountVideoRateModel extends Model<Partial<AttributesOnly<AccountVideoRateModel>>> {
|
||||
|
||||
@AllowNull(false)
|
||||
@Column(DataType.ENUM(...values(VIDEO_RATE_TYPES)))
|
||||
@Column(DataType.ENUM(...Object.values(VIDEO_RATE_TYPES)))
|
||||
type: VideoRateType
|
||||
|
||||
@AllowNull(false)
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { difference, values } from 'lodash'
|
||||
import { difference } from 'lodash'
|
||||
import { Attributes, FindOptions, Includeable, IncludeOptions, Op, QueryTypes, Transaction, WhereAttributeHash } from 'sequelize'
|
||||
import {
|
||||
AfterCreate,
|
||||
@ -69,7 +69,7 @@ import { InstanceListFollowingQueryBuilder, ListFollowingOptions } from './sql/i
|
||||
export class ActorFollowModel extends Model<Partial<AttributesOnly<ActorFollowModel>>> {
|
||||
|
||||
@AllowNull(false)
|
||||
@Column(DataType.ENUM(...values(FOLLOW_STATES)))
|
||||
@Column(DataType.ENUM(...Object.values(FOLLOW_STATES)))
|
||||
state: FollowState
|
||||
|
||||
@AllowNull(false)
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { values } from 'lodash'
|
||||
import { literal, Op, QueryTypes, Transaction } from 'sequelize'
|
||||
import {
|
||||
AllowNull,
|
||||
@ -163,7 +162,7 @@ export const unusedActorAttributesForAPI = [
|
||||
export class ActorModel extends Model<Partial<AttributesOnly<ActorModel>>> {
|
||||
|
||||
@AllowNull(false)
|
||||
@Column(DataType.ENUM(...values(ACTIVITY_PUB_ACTOR_TYPES)))
|
||||
@Column(DataType.ENUM(...Object.values(ACTIVITY_PUB_ACTOR_TYPES)))
|
||||
type: ActivityPubActorType
|
||||
|
||||
@AllowNull(false)
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { values } from 'lodash'
|
||||
import { col, FindOptions, fn, literal, Op, QueryTypes, where, WhereOptions } from 'sequelize'
|
||||
import {
|
||||
AfterDestroy,
|
||||
@ -283,7 +282,7 @@ export class UserModel extends Model<Partial<AttributesOnly<UserModel>>> {
|
||||
|
||||
@AllowNull(false)
|
||||
@Is('UserNSFWPolicy', value => throwIfNotValid(value, isUserNSFWPolicyValid, 'NSFW policy'))
|
||||
@Column(DataType.ENUM(...values(NSFW_POLICY_TYPES)))
|
||||
@Column(DataType.ENUM(...Object.values(NSFW_POLICY_TYPES)))
|
||||
nsfwPolicy: NSFWPolicyType
|
||||
|
||||
@AllowNull(false)
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { uniq } from 'lodash'
|
||||
import { FindOptions, Op, Order, QueryTypes, ScopeOptions, Sequelize, Transaction, WhereOptions } from 'sequelize'
|
||||
import {
|
||||
AllowNull,
|
||||
@ -17,6 +16,7 @@ import {
|
||||
import { exists } from '@server/helpers/custom-validators/misc'
|
||||
import { getServerActor } from '@server/models/application/application'
|
||||
import { MAccount, MAccountId, MUserAccountId } from '@server/types/models'
|
||||
import { uniqify } from '@shared/core-utils'
|
||||
import { VideoPrivacy } from '@shared/models'
|
||||
import { AttributesOnly } from '@shared/typescript-utils'
|
||||
import { ActivityTagObject, ActivityTombstoneObject } from '../../../shared/models/activitypub/objects/common-objects'
|
||||
@ -802,7 +802,7 @@ export class VideoCommentModel extends Model<Partial<AttributesOnly<VideoComment
|
||||
)
|
||||
}
|
||||
|
||||
return uniq(result)
|
||||
return uniqify(result)
|
||||
}
|
||||
|
||||
toFormattedJSON (this: MCommentFormattable) {
|
||||
|
@ -1,13 +1,12 @@
|
||||
import CliTable3 from 'cli-table3'
|
||||
import { Command, program } from 'commander'
|
||||
import { uniq } from 'lodash'
|
||||
import { URL } from 'url'
|
||||
import validator from 'validator'
|
||||
import { uniqify } from '@shared/core-utils'
|
||||
import { HttpStatusCode, VideoRedundanciesTarget } from '@shared/models'
|
||||
import { assignToken, buildServer, getServerCredentials } from './cli'
|
||||
|
||||
import bytes = require('bytes')
|
||||
|
||||
program
|
||||
.name('redundancy')
|
||||
.usage('[command] [options]')
|
||||
@ -77,7 +76,7 @@ async function listRedundanciesCLI (target: VideoRedundanciesTarget) {
|
||||
totalSize = bytes(tmp)
|
||||
}
|
||||
|
||||
const instances = uniq(
|
||||
const instances = uniqify(
|
||||
webtorrentFiles.concat(streamingPlaylists)
|
||||
.map(r => r.fileUrl)
|
||||
.map(u => new URL(u).host)
|
||||
|
@ -15,7 +15,13 @@ function arrayify <T> (element: T | T[]) {
|
||||
return [ element ]
|
||||
}
|
||||
|
||||
// Avoid conflict with other uniq() functions
|
||||
function uniqify <T> (elements: T[]) {
|
||||
return Array.from(new Set(elements))
|
||||
}
|
||||
|
||||
export {
|
||||
uniqify,
|
||||
findCommonElement,
|
||||
arrayify
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user