diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 06cccb78a..9945e234d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: test: name: Lint & Test Build runs-on: ubuntu-20.04 - container: node:14.16-alpine + container: node:14.17-alpine steps: - name: Checkout uses: actions/checkout@v2.3.4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 13464f61e..0f1f661d7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ jobs: test: name: Lint & Test Build runs-on: ubuntu-20.04 - container: node:14.16-alpine + container: node:14.17-alpine steps: - name: Checkout uses: actions/checkout@v2.3.4 diff --git a/.github/workflows/snap.yaml b/.github/workflows/snap.yaml index c74e6b132..3e82fe9ae 100644 --- a/.github/workflows/snap.yaml +++ b/.github/workflows/snap.yaml @@ -20,7 +20,7 @@ jobs: name: Lint & Test Build needs: jobs runs-on: ubuntu-20.04 - container: node:14.16-alpine + container: node:14.17-alpine steps: - name: Checkout uses: actions/checkout@v2.3.4 diff --git a/Dockerfile b/Dockerfile index eda37b312..cb80274ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:14.16-alpine AS BUILD_IMAGE +FROM node:14.17-alpine AS BUILD_IMAGE WORKDIR /app @@ -31,7 +31,7 @@ RUN touch config/DOCKER RUN echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json -FROM node:14.16-alpine +FROM node:14.17-alpine WORKDIR /app diff --git a/Dockerfile.local b/Dockerfile.local index 64fd61a6e..b0b922e1f 100644 --- a/Dockerfile.local +++ b/Dockerfile.local @@ -1,4 +1,4 @@ -FROM node:14.16-alpine +FROM node:14.17-alpine COPY . /app WORKDIR /app diff --git a/package.json b/package.json index 0cb3840c2..3fac98aa1 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,6 @@ "swagger-ui-express": "^4.1.6", "swr": "^0.5.6", "typeorm": "0.2.32", - "uuid": "^8.3.2", "web-push": "^3.4.4", "winston": "^3.3.3", "winston-daily-rotate-file": "^4.5.5", @@ -104,7 +103,6 @@ "@types/react-transition-group": "^4.4.1", "@types/secure-random-password": "^0.2.0", "@types/swagger-ui-express": "^4.1.2", - "@types/uuid": "^8.3.0", "@types/web-push": "^3.3.0", "@types/xml2js": "^0.4.8", "@types/yamljs": "^0.2.31", diff --git a/server/entity/User.ts b/server/entity/User.ts index 59d347cbb..ed6fc4a6b 100644 --- a/server/entity/User.ts +++ b/server/entity/User.ts @@ -1,4 +1,5 @@ import bcrypt from 'bcrypt'; +import { randomUUID } from 'crypto'; import path from 'path'; import { default as generatePassword } from 'secure-random-password'; import { @@ -15,7 +16,6 @@ import { RelationCount, UpdateDateColumn, } from 'typeorm'; -import { v4 as uuid } from 'uuid'; import { MediaRequestStatus, MediaType } from '../constants/media'; import { UserType } from '../constants/user'; import { QuotaResponse } from '../interfaces/api/userInterfaces'; @@ -189,7 +189,7 @@ export class User { } public async resetPassword(): Promise { - const guid = uuid(); + const guid = randomUUID(); this.resetPasswordGuid = guid; // 24 hours into the future diff --git a/server/lib/email/openpgpEncrypt.ts b/server/lib/email/openpgpEncrypt.ts index 020e2e493..263f2b1f2 100644 --- a/server/lib/email/openpgpEncrypt.ts +++ b/server/lib/email/openpgpEncrypt.ts @@ -1,4 +1,4 @@ -import crypto from 'crypto'; +import { randomBytes } from 'crypto'; import * as openpgp from 'openpgp'; import { Transform, TransformCallback } from 'stream'; @@ -107,7 +107,7 @@ class PGPEncryptor extends Transform { } // Generate a new boundary for the email content - const boundary = 'nm_' + crypto.randomBytes(14).toString('hex'); + const boundary = 'nm_' + randomBytes(14).toString('hex'); /** * Concatenate everything into single strings * and add pgp headers to the email headers diff --git a/server/lib/scanners/baseScanner.ts b/server/lib/scanners/baseScanner.ts index ac76d61cd..a39279c97 100644 --- a/server/lib/scanners/baseScanner.ts +++ b/server/lib/scanners/baseScanner.ts @@ -1,5 +1,5 @@ +import { randomUUID } from 'crypto'; import { getRepository } from 'typeorm'; -import { v4 as uuid } from 'uuid'; import TheMovieDb from '../../api/themoviedb'; import { MediaStatus, MediaType } from '../../constants/media'; import Media from '../../entity/Media'; @@ -512,7 +512,7 @@ class BaseScanner { */ protected startRun(): string { const settings = getSettings(); - const sessionId = uuid(); + const sessionId = randomUUID(); this.sessionId = sessionId; this.log('Scan starting', 'info', { sessionId }); diff --git a/server/lib/settings.ts b/server/lib/settings.ts index 656be8680..dc00f80cb 100644 --- a/server/lib/settings.ts +++ b/server/lib/settings.ts @@ -1,7 +1,7 @@ +import { randomUUID } from 'crypto'; import fs from 'fs'; import { merge } from 'lodash'; import path from 'path'; -import { v4 as uuidv4 } from 'uuid'; import webpush from 'web-push'; import { Permission } from './permissions'; @@ -234,7 +234,7 @@ class Settings { constructor(initialSettings?: AllSettings) { this.data = { - clientId: uuidv4(), + clientId: randomUUID(), vapidPrivate: '', vapidPublic: '', main: { @@ -428,7 +428,7 @@ class Settings { get clientId(): string { if (!this.data.clientId) { - this.data.clientId = uuidv4(); + this.data.clientId = randomUUID(); this.save(); } @@ -454,7 +454,7 @@ class Settings { } private generateApiKey(): string { - return Buffer.from(`${Date.now()}${uuidv4()})`).toString('base64'); + return Buffer.from(`${Date.now()}${randomUUID()})`).toString('base64'); } private generateVapidKeys(force = false): void { diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 0f03c059b..ecb8712ad 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -11,7 +11,7 @@ confinement: strict parts: overseerr: plugin: nodejs - nodejs-version: '14.16.1' + nodejs-version: '14.17.0' nodejs-package-manager: 'yarn' nodejs-yarn-version: v1.22.10 build-packages: diff --git a/yarn.lock b/yarn.lock index ce9c51a10..25b0da55c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2556,11 +2556,6 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== -"@types/uuid@^8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" - integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== - "@types/web-push@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@types/web-push/-/web-push-3.3.0.tgz#459eb722c9585b84a149e7020606d4f65f64f0ca"