Update server dependencies
This commit is contained in:
parent
4ff7880584
commit
a722194809
7 changed files with 2988 additions and 2702 deletions
42
package.json
42
package.json
|
@ -93,14 +93,14 @@
|
||||||
"@node-oauth/oauth2-server": "^5.1.0",
|
"@node-oauth/oauth2-server": "^5.1.0",
|
||||||
"@opentelemetry/api": "^1.1.0",
|
"@opentelemetry/api": "^1.1.0",
|
||||||
"@opentelemetry/exporter-jaeger": "^1.15.1",
|
"@opentelemetry/exporter-jaeger": "^1.15.1",
|
||||||
"@opentelemetry/exporter-prometheus": "~0.48.0",
|
"@opentelemetry/exporter-prometheus": "~0.52.1",
|
||||||
"@opentelemetry/instrumentation": "^0.48.0",
|
"@opentelemetry/instrumentation": "^0.52.1",
|
||||||
"@opentelemetry/instrumentation-dns": "^0.33.0",
|
"@opentelemetry/instrumentation-dns": "^0.37.0",
|
||||||
"@opentelemetry/instrumentation-express": "^0.35.0",
|
"@opentelemetry/instrumentation-express": "^0.40.1",
|
||||||
"@opentelemetry/instrumentation-fs": "^0.9.0",
|
"@opentelemetry/instrumentation-fs": "^0.13.0",
|
||||||
"@opentelemetry/instrumentation-http": "^0.48.0",
|
"@opentelemetry/instrumentation-http": "^0.52.1",
|
||||||
"@opentelemetry/instrumentation-ioredis": "^0.37.0",
|
"@opentelemetry/instrumentation-ioredis": "^0.41.0",
|
||||||
"@opentelemetry/instrumentation-pg": "^0.38.0",
|
"@opentelemetry/instrumentation-pg": "^0.42.0",
|
||||||
"@opentelemetry/resources": "^1.15.1",
|
"@opentelemetry/resources": "^1.15.1",
|
||||||
"@opentelemetry/sdk-metrics": "^1.15.1",
|
"@opentelemetry/sdk-metrics": "^1.15.1",
|
||||||
"@opentelemetry/sdk-trace-base": "^1.15.1",
|
"@opentelemetry/sdk-trace-base": "^1.15.1",
|
||||||
|
@ -108,10 +108,10 @@
|
||||||
"@opentelemetry/semantic-conventions": "^1.15.1",
|
"@opentelemetry/semantic-conventions": "^1.15.1",
|
||||||
"@peertube/feed": "^5.1.3",
|
"@peertube/feed": "^5.1.3",
|
||||||
"@peertube/http-signature": "^1.7.0",
|
"@peertube/http-signature": "^1.7.0",
|
||||||
"@smithy/node-http-handler": "^2.1.7",
|
"@smithy/node-http-handler": "^3.1.0",
|
||||||
"@uploadx/core": "^6.0.0",
|
"@uploadx/core": "^6.0.0",
|
||||||
"archiver": "^6.0.1",
|
"archiver": "^7.0.1",
|
||||||
"async-mutex": "^0.4.0",
|
"async-mutex": "^0.5.0",
|
||||||
"bcrypt": "5.1.1",
|
"bcrypt": "5.1.1",
|
||||||
"bencode": "^4.0.0",
|
"bencode": "^4.0.0",
|
||||||
"bittorrent-tracker": "^11.0.1",
|
"bittorrent-tracker": "^11.0.1",
|
||||||
|
@ -126,7 +126,7 @@
|
||||||
"create-torrent": "^6.0.15",
|
"create-torrent": "^6.0.15",
|
||||||
"deep-object-diff": "^1.1.0",
|
"deep-object-diff": "^1.1.0",
|
||||||
"email-templates": "^11.0.3",
|
"email-templates": "^11.0.3",
|
||||||
"execa": "^8.0.1",
|
"execa": "^9.2.0",
|
||||||
"express": "^4.18.1",
|
"express": "^4.18.1",
|
||||||
"express-rate-limit": "^7.1.1",
|
"express-rate-limit": "^7.1.1",
|
||||||
"express-validator": "^7.0.1",
|
"express-validator": "^7.0.1",
|
||||||
|
@ -139,7 +139,7 @@
|
||||||
"http-problem-details": "^0.1.5",
|
"http-problem-details": "^0.1.5",
|
||||||
"ioredis": "^5.2.3",
|
"ioredis": "^5.2.3",
|
||||||
"ip-anonymize": "^0.1.0",
|
"ip-anonymize": "^0.1.0",
|
||||||
"ipaddr.js": "2.1.0",
|
"ipaddr.js": "2.2.0",
|
||||||
"iso-639-3": "3.0.1",
|
"iso-639-3": "3.0.1",
|
||||||
"jimp": "^0.22.4",
|
"jimp": "^0.22.4",
|
||||||
"js-yaml": "^4.0.0",
|
"js-yaml": "^4.0.0",
|
||||||
|
@ -157,7 +157,7 @@
|
||||||
"multer": "^1.4.5-lts.1",
|
"multer": "^1.4.5-lts.1",
|
||||||
"node-media-server": "^2.1.4",
|
"node-media-server": "^2.1.4",
|
||||||
"nodemailer": "^6.0.0",
|
"nodemailer": "^6.0.0",
|
||||||
"opentelemetry-instrumentation-sequelize": "^0.40.0",
|
"opentelemetry-instrumentation-sequelize": "^0.41.0",
|
||||||
"otpauth": "^9.0.2",
|
"otpauth": "^9.0.2",
|
||||||
"p-queue": "^8.0.1",
|
"p-queue": "^8.0.1",
|
||||||
"parse-torrent": "^11.0.14",
|
"parse-torrent": "^11.0.14",
|
||||||
|
@ -169,10 +169,10 @@
|
||||||
"pug": "^3.0.0",
|
"pug": "^3.0.0",
|
||||||
"reflect-metadata": "^0.2.1",
|
"reflect-metadata": "^0.2.1",
|
||||||
"sanitize-html": "2.x",
|
"sanitize-html": "2.x",
|
||||||
"sequelize": "6.33.0",
|
"sequelize": "6.37.3",
|
||||||
"sequelize-typescript": "^2.0.0-beta.1",
|
"sequelize-typescript": "^2.0.0-beta.1",
|
||||||
"short-uuid": "^4.2.0",
|
"short-uuid": "^5.2.0",
|
||||||
"sitemap": "^7.0.0",
|
"sitemap": "^8.0.0",
|
||||||
"socket.io": "^4.5.4",
|
"socket.io": "^4.5.4",
|
||||||
"sql-formatter": "^15.2.0",
|
"sql-formatter": "^15.2.0",
|
||||||
"srt-to-vtt": "^1.1.2",
|
"srt-to-vtt": "^1.1.2",
|
||||||
|
@ -181,7 +181,7 @@
|
||||||
"validator": "^13.0.0",
|
"validator": "^13.0.0",
|
||||||
"webfinger.js": "^2.6.6",
|
"webfinger.js": "^2.6.6",
|
||||||
"webtorrent": "^2.1.27",
|
"webtorrent": "^2.1.27",
|
||||||
"winston": "3.11.0",
|
"winston": "3.13.0",
|
||||||
"ws": "^8.0.0",
|
"ws": "^8.0.0",
|
||||||
"yauzl": "^3.1.0"
|
"yauzl": "^3.1.0"
|
||||||
},
|
},
|
||||||
|
@ -204,7 +204,7 @@
|
||||||
"@types/fs-extra": "^11.0.1",
|
"@types/fs-extra": "^11.0.1",
|
||||||
"@types/jsonld": "^1.5.9",
|
"@types/jsonld": "^1.5.9",
|
||||||
"@types/jsonwebtoken": "^9.0.5",
|
"@types/jsonwebtoken": "^9.0.5",
|
||||||
"@types/linkify-it": "^3.0.5",
|
"@types/linkify-it": "^5.0.0",
|
||||||
"@types/lodash-es": "^4.17.8",
|
"@types/lodash-es": "^4.17.8",
|
||||||
"@types/magnet-uri": "^5.1.1",
|
"@types/magnet-uri": "^5.1.1",
|
||||||
"@types/maildev": "^0.0.7",
|
"@types/maildev": "^0.0.7",
|
||||||
|
@ -226,7 +226,7 @@
|
||||||
"chai-xml": "^0.4.0",
|
"chai-xml": "^0.4.0",
|
||||||
"concurrently": "^8.0.1",
|
"concurrently": "^8.0.1",
|
||||||
"depcheck": "^1.4.2",
|
"depcheck": "^1.4.2",
|
||||||
"esbuild": "^0.20.1",
|
"esbuild": "^0.21.5",
|
||||||
"eslint": "8.56.0",
|
"eslint": "8.56.0",
|
||||||
"eslint-config-standard-with-typescript": "43.0.1",
|
"eslint-config-standard-with-typescript": "43.0.1",
|
||||||
"eslint-plugin-import": "^2.20.1",
|
"eslint-plugin-import": "^2.20.1",
|
||||||
|
@ -244,7 +244,7 @@
|
||||||
"swagger-cli": "^4.0.2",
|
"swagger-cli": "^4.0.2",
|
||||||
"tsc-watch": "^6.0.0",
|
"tsc-watch": "^6.0.0",
|
||||||
"tsx": "^4.7.1",
|
"tsx": "^4.7.1",
|
||||||
"typescript": "~5.2"
|
"typescript": "~5.5.2"
|
||||||
},
|
},
|
||||||
"bundlewatch": {
|
"bundlewatch": {
|
||||||
"files": [
|
"files": [
|
||||||
|
|
|
@ -7,10 +7,10 @@ import {
|
||||||
setAccessTokensToServers,
|
setAccessTokensToServers,
|
||||||
waitJobs
|
waitJobs
|
||||||
} from '@peertube/peertube-server-commands'
|
} from '@peertube/peertube-server-commands'
|
||||||
import { isMainThread } from 'worker_threads'
|
|
||||||
import Piscina from 'piscina'
|
|
||||||
import { fileURLToPath } from 'url'
|
|
||||||
import { dirname, join } from 'path'
|
import { dirname, join } from 'path'
|
||||||
|
import { Piscina } from 'piscina'
|
||||||
|
import { fileURLToPath } from 'url'
|
||||||
|
import { isMainThread } from 'worker_threads'
|
||||||
|
|
||||||
const THOUSAND_VIEWERS = 2
|
const THOUSAND_VIEWERS = 2
|
||||||
const TOTAL_THREADS = 20
|
const TOTAL_THREADS = 20
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { context } from '@opentelemetry/api'
|
import { context, trace } from '@opentelemetry/api'
|
||||||
import { getSpanContext } from '@opentelemetry/api/build/src/trace/context-utils.js'
|
|
||||||
import { omit } from '@peertube/peertube-core-utils'
|
import { omit } from '@peertube/peertube-core-utils'
|
||||||
import { stat } from 'fs/promises'
|
import { stat } from 'fs/promises'
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
|
@ -62,9 +61,9 @@ function buildLogger (labelSuffix?: string) {
|
||||||
return createLogger({
|
return createLogger({
|
||||||
level: process.env.LOGGER_LEVEL ?? CONFIG.LOG.LEVEL,
|
level: process.env.LOGGER_LEVEL ?? CONFIG.LOG.LEVEL,
|
||||||
defaultMeta: {
|
defaultMeta: {
|
||||||
get traceId () { return getSpanContext(context.active())?.traceId },
|
get traceId () { return trace.getSpanContext(context.active())?.traceId },
|
||||||
get spanId () { return getSpanContext(context.active())?.spanId },
|
get spanId () { return trace.getSpanContext(context.active())?.spanId },
|
||||||
get traceFlags () { return getSpanContext(context.active())?.traceFlags }
|
get traceFlags () { return trace.getSpanContext(context.active())?.traceFlags }
|
||||||
},
|
},
|
||||||
format: format.combine(
|
format: format.combine(
|
||||||
labelFormatter(labelSuffix),
|
labelFormatter(labelSuffix),
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { execa, NodeOptions as ExecaNodeOptions } from 'execa'
|
import { execa, Options as ExecaNodeOptions } from 'execa'
|
||||||
import { ensureDir, pathExists } from 'fs-extra/esm'
|
import { ensureDir, pathExists } from 'fs-extra/esm'
|
||||||
import { writeFile } from 'fs/promises'
|
import { writeFile } from 'fs/promises'
|
||||||
import { OptionsOfBufferResponseBody } from 'got'
|
import { OptionsOfBufferResponseBody } from 'got'
|
||||||
|
@ -9,6 +9,8 @@ import { logger, loggerTagsFactory } from '../logger.js'
|
||||||
import { getProxy, isProxyEnabled } from '../proxy.js'
|
import { getProxy, isProxyEnabled } from '../proxy.js'
|
||||||
import { isBinaryResponse, peertubeGot } from '../requests.js'
|
import { isBinaryResponse, peertubeGot } from '../requests.js'
|
||||||
|
|
||||||
|
type ProcessOptions = Pick<ExecaNodeOptions, 'cwd' | 'maxBuffer'>
|
||||||
|
|
||||||
const lTags = loggerTagsFactory('youtube-dl')
|
const lTags = loggerTagsFactory('youtube-dl')
|
||||||
|
|
||||||
const youtubeDLBinaryPath = join(CONFIG.STORAGE.BIN_DIR, CONFIG.IMPORT.VIDEOS.HTTP.YOUTUBE_DL_RELEASE.NAME)
|
const youtubeDLBinaryPath = join(CONFIG.STORAGE.BIN_DIR, CONFIG.IMPORT.VIDEOS.HTTP.YOUTUBE_DL_RELEASE.NAME)
|
||||||
|
@ -111,7 +113,7 @@ export class YoutubeDLCLI {
|
||||||
url: string
|
url: string
|
||||||
format: string
|
format: string
|
||||||
output: string
|
output: string
|
||||||
processOptions: ExecaNodeOptions
|
processOptions: ProcessOptions
|
||||||
timeout?: number
|
timeout?: number
|
||||||
additionalYoutubeDLArgs?: string[]
|
additionalYoutubeDLArgs?: string[]
|
||||||
}) {
|
}) {
|
||||||
|
@ -129,7 +131,7 @@ export class YoutubeDLCLI {
|
||||||
async getInfo (options: {
|
async getInfo (options: {
|
||||||
url: string
|
url: string
|
||||||
format: string
|
format: string
|
||||||
processOptions: ExecaNodeOptions
|
processOptions: ProcessOptions
|
||||||
additionalYoutubeDLArgs?: string[]
|
additionalYoutubeDLArgs?: string[]
|
||||||
}) {
|
}) {
|
||||||
const { url, format, additionalYoutubeDLArgs = [], processOptions } = options
|
const { url, format, additionalYoutubeDLArgs = [], processOptions } = options
|
||||||
|
@ -149,7 +151,7 @@ export class YoutubeDLCLI {
|
||||||
async getListInfo (options: {
|
async getListInfo (options: {
|
||||||
url: string
|
url: string
|
||||||
latestVideosCount?: number
|
latestVideosCount?: number
|
||||||
processOptions: ExecaNodeOptions
|
processOptions: ProcessOptions
|
||||||
}): Promise<{ upload_date: string, webpage_url: string }[]> {
|
}): Promise<{ upload_date: string, webpage_url: string }[]> {
|
||||||
const additionalYoutubeDLArgs = [ '--skip-download', '--playlist-reverse' ]
|
const additionalYoutubeDLArgs = [ '--skip-download', '--playlist-reverse' ]
|
||||||
|
|
||||||
|
@ -178,7 +180,7 @@ export class YoutubeDLCLI {
|
||||||
async getSubs (options: {
|
async getSubs (options: {
|
||||||
url: string
|
url: string
|
||||||
format: 'vtt'
|
format: 'vtt'
|
||||||
processOptions: ExecaNodeOptions
|
processOptions: ProcessOptions
|
||||||
}) {
|
}) {
|
||||||
const { url, format, processOptions } = options
|
const { url, format, processOptions } = options
|
||||||
|
|
||||||
|
@ -204,7 +206,7 @@ export class YoutubeDLCLI {
|
||||||
url: string
|
url: string
|
||||||
args: string[]
|
args: string[]
|
||||||
timeout?: number
|
timeout?: number
|
||||||
processOptions: ExecaNodeOptions
|
processOptions: ProcessOptions
|
||||||
}) {
|
}) {
|
||||||
const { url, args, timeout, processOptions } = options
|
const { url, args, timeout, processOptions } = options
|
||||||
|
|
||||||
|
@ -216,7 +218,7 @@ export class YoutubeDLCLI {
|
||||||
const subProcess = execa(PYTHON_PATH, [ youtubeDLBinaryPath, ...completeArgs, url ], processOptions)
|
const subProcess = execa(PYTHON_PATH, [ youtubeDLBinaryPath, ...completeArgs, url ], processOptions)
|
||||||
|
|
||||||
if (timeout) {
|
if (timeout) {
|
||||||
setTimeout(() => subProcess.cancel(), timeout)
|
setTimeout(() => subProcess.kill(), timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
const output = await subProcess
|
const output = await subProcess
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { Transaction } from 'sequelize'
|
||||||
|
|
||||||
const lTags = loggerTagsFactory('automatic-tags')
|
const lTags = loggerTagsFactory('automatic-tags')
|
||||||
|
|
||||||
const linkifyit = Linkifyit()
|
const linkifyit = new Linkifyit()
|
||||||
|
|
||||||
export class AutomaticTagger {
|
export class AutomaticTagger {
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
import Piscina from 'piscina'
|
import { Piscina } from 'piscina'
|
||||||
import { JOB_CONCURRENCY, WORKER_THREADS } from '@server/initializers/constants.js'
|
import { JOB_CONCURRENCY, WORKER_THREADS } from '@server/initializers/constants.js'
|
||||||
import type httpBroadcast from './workers/http-broadcast.js'
|
import type httpBroadcast from './workers/http-broadcast.js'
|
||||||
import type downloadImage from './workers/image-downloader.js'
|
import type downloadImage from './workers/image-downloader.js'
|
||||||
|
|
Loading…
Reference in a new issue