Browse Source

chore(server): bump server dependencies (#3899)

* chore(server): bump server dependencies

* fix: test
Alex 1 year ago
parent
commit
d0a06739d8

+ 6 - 0
package-lock.json

@@ -0,0 +1,6 @@
+{
+  "name": "immich",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {}
+}

File diff suppressed because it is too large
+ 420 - 263
server/package-lock.json


+ 63 - 62
server/package.json

@@ -39,89 +39,90 @@
     "api:generate": "node ./bin/sync-spec-version.js && bash ./bin/generate-open-api.sh"
   },
   "dependencies": {
-    "@babel/runtime": "^7.20.13",
-    "@nestjs/bullmq": "^1.1.0",
-    "@nestjs/common": "^9.2.1",
-    "@nestjs/config": "^2.2.0",
-    "@nestjs/core": "^9.2.1",
-    "@nestjs/platform-express": "^9.2.1",
-    "@nestjs/platform-socket.io": "^9.2.1",
-    "@nestjs/schedule": "^2.1.0",
-    "@nestjs/swagger": "^6.1.4",
-    "@nestjs/typeorm": "^9.0.1",
-    "@nestjs/websockets": "^9.2.1",
-    "@socket.io/redis-adapter": "^8.0.1",
-    "archiver": "^5.3.1",
-    "axios": "^0.26.0",
-    "bcrypt": "^5.0.1",
-    "bullmq": "^3.14.1",
+    "@babel/runtime": "^7.22.11",
+    "@nestjs/bullmq": "^10.0.1",
+    "@nestjs/common": "^10.2.2",
+    "@nestjs/config": "^3.0.0",
+    "@nestjs/core": "^10.2.2",
+    "@nestjs/platform-express": "^10.2.2",
+    "@nestjs/platform-socket.io": "^10.2.2",
+    "@nestjs/schedule": "^3.0.3",
+    "@nestjs/swagger": "^7.1.8",
+    "@nestjs/typeorm": "^10.0.0",
+    "@nestjs/websockets": "^10.2.2",
+    "@socket.io/redis-adapter": "^8.2.1",
+    "archiver": "^6.0.0",
+    "axios": "^1.5.0",
+    "bcrypt": "^5.1.1",
+    "bullmq": "^4.8.0",
     "class-transformer": "^0.5.1",
     "class-validator": "^0.14.0",
     "cookie-parser": "^1.4.6",
     "exiftool-vendored": "^22.0.0",
-    "exiftool-vendored.pl": "^12.54.0",
+    "exiftool-vendored.pl": "^12.62.0",
     "fluent-ffmpeg": "^2.1.2",
-    "handlebars": "^4.7.7",
-    "i18n-iso-countries": "^7.5.0",
+    "handlebars": "^4.7.8",
+    "i18n-iso-countries": "^7.6.0",
     "immich": "^0.41.0",
-    "ioredis": "^5.3.1",
-    "joi": "^17.5.0",
-    "local-reverse-geocoder": "0.12.5",
+    "ioredis": "^5.3.2",
+    "joi": "^17.10.0",
+    "local-reverse-geocoder": "0.16.5",
     "lodash": "^4.17.21",
-    "luxon": "^3.0.3",
+    "luxon": "^3.4.2",
     "mv": "^2.1.1",
-    "nest-commander": "^3.3.0",
-    "openid-client": "^5.2.1",
-    "pg": "^8.8.0",
+    "nest-commander": "^3.11.1",
+    "openid-client": "^5.4.3",
+    "pg": "^8.11.3",
     "reflect-metadata": "^0.1.13",
-    "rxjs": "^7.2.0",
+    "rxjs": "^7.8.1",
     "sanitize-filename": "^1.6.3",
     "sharp": "^0.31.3",
     "thumbhash": "^0.1.1",
-    "typeorm": "^0.3.11",
-    "typesense": "^1.5.3",
+    "typeorm": "^0.3.17",
+    "typesense": "^1.7.1",
     "ua-parser-js": "^1.0.35"
   },
   "devDependencies": {
-    "@nestjs/cli": "^9.1.8",
-    "@nestjs/schematics": "^9.0.4",
-    "@nestjs/testing": "^9.2.1",
-    "@openapitools/openapi-generator-cli": "2.5.2",
-    "@types/archiver": "^5.3.1",
+    "@nestjs/cli": "^10.1.16",
+    "@nestjs/schematics": "^10.0.2",
+    "@nestjs/testing": "^10.2.2",
+    "@openapitools/openapi-generator-cli": "2.7.0",
+    "@testcontainers/postgresql": "^10.2.1",
+    "@types/archiver": "^5.3.2",
     "@types/bcrypt": "^5.0.0",
     "@types/cookie-parser": "^1.4.3",
-    "@types/cron": "^2.0.0",
-    "@types/express": "^4.17.13",
-    "@types/fluent-ffmpeg": "^2.1.20",
-    "@types/imagemin": "^8.0.0",
-    "@types/jest": "27.0.2",
+    "@types/cron": "^2.0.1",
+    "@types/express": "^4.17.17",
+    "@types/fluent-ffmpeg": "^2.1.21",
+    "@types/imagemin": "^8.0.1",
+    "@types/jest": "29.5.4",
     "@types/jest-when": "^3.5.2",
-    "@types/lodash": "^4.14.178",
+    "@types/lodash": "^4.14.197",
     "@types/multer": "^1.4.7",
     "@types/mv": "^2.1.2",
-    "@types/node": "^18.0.0",
-    "@types/sharp": "^0.30.2",
-    "@types/supertest": "^2.0.11",
+    "@types/node": "^20.5.7",
+    "@types/sharp": "^0.31.1",
+    "@types/supertest": "^2.0.12",
     "@types/ua-parser-js": "^0.7.36",
-    "@typescript-eslint/eslint-plugin": "^5.48.1",
-    "@typescript-eslint/parser": "^5.48.1",
-    "dotenv": "^14.2.0",
-    "eslint": "^8.31.0",
-    "eslint-config-prettier": "^8.3.0",
-    "eslint-plugin-prettier": "^4.0.0",
-    "jest": "^27.2.5",
-    "jest-when": "^3.5.2",
-    "prettier": "^2.3.2",
-    "prettier-plugin-organize-imports": "^3.2.2",
-    "rimraf": "^3.0.2",
-    "source-map-support": "^0.5.20",
-    "supertest": "^6.1.3",
-    "testcontainers": "^9.9.1",
-    "ts-jest": "^27.0.3",
-    "ts-loader": "^9.2.3",
-    "ts-node": "^10.0.0",
-    "tsconfig-paths": "^3.10.1",
-    "typescript": "^4.9.4"
+    "@typescript-eslint/eslint-plugin": "^6.4.1",
+    "@typescript-eslint/parser": "^6.4.1",
+    "dotenv": "^16.3.1",
+    "eslint": "^8.48.0",
+    "eslint-config-prettier": "^9.0.0",
+    "eslint-plugin-prettier": "^5.0.0",
+    "jest": "^29.6.4",
+    "jest-when": "^3.6.0",
+    "prettier": "^3.0.2",
+    "prettier-plugin-organize-imports": "^3.2.3",
+    "rimraf": "^5.0.1",
+    "source-map-support": "^0.5.21",
+    "supertest": "^6.3.3",
+    "testcontainers": "^10.2.1",
+    "ts-jest": "^29.1.1",
+    "ts-loader": "^9.4.4",
+    "ts-node": "^10.9.1",
+    "tsconfig-paths": "^4.2.0",
+    "typescript": "^5.2.2"
   },
   "jest": {
     "clearMocks": true,

+ 4 - 1
server/src/admin-cli/commands/reset-admin-password.command.ts

@@ -6,7 +6,10 @@ import { Command, CommandRunner, InquirerService, Question, QuestionSet } from '
   description: 'Reset the admin password',
 })
 export class ResetAdminPasswordCommand extends CommandRunner {
-  constructor(private userService: UserService, private readonly inquirer: InquirerService) {
+  constructor(
+    private userService: UserService,
+    private readonly inquirer: InquirerService,
+  ) {
     super();
   }
 

+ 2 - 2
server/src/domain/album/album.service.ts

@@ -99,8 +99,8 @@ export class AlbumService {
       ownerId: authUser.id,
       albumName: dto.albumName,
       description: dto.description,
-      sharedUsers: dto.sharedWithUserIds?.map((value) => ({ id: value } as UserEntity)) ?? [],
-      assets: (dto.assetIds || []).map((id) => ({ id } as AssetEntity)),
+      sharedUsers: dto.sharedWithUserIds?.map((value) => ({ id: value }) as UserEntity) ?? [],
+      assets: (dto.assetIds || []).map((id) => ({ id }) as AssetEntity),
       albumThumbnailAssetId: dto.assetIds?.[0] || null,
     });
 

+ 1 - 1
server/src/domain/domain.constant.ts

@@ -92,7 +92,7 @@ const sidecar: Record<string, string[]> = {
 const isType = (filename: string, r: Record<string, string[]>) => extname(filename).toLowerCase() in r;
 
 const lookup = (filename: string) =>
-  ({ ...image, ...video, ...sidecar }[extname(filename).toLowerCase()]?.[0] ?? 'application/octet-stream');
+  ({ ...image, ...video, ...sidecar })[extname(filename).toLowerCase()]?.[0] ?? 'application/octet-stream';
 
 export const mimeTypes = {
   image,

+ 4 - 1
server/src/domain/media/media.util.ts

@@ -176,7 +176,10 @@ class BaseConfig implements VideoCodecSWConfig {
 export class BaseHWConfig extends BaseConfig implements VideoCodecHWConfig {
   protected devices: string[];
 
-  constructor(protected config: SystemConfigFFmpegDto, devices: string[] = []) {
+  constructor(
+    protected config: SystemConfigFFmpegDto,
+    devices: string[] = [],
+  ) {
     super(config);
     this.devices = this.validateDevices(devices);
   }

+ 1 - 1
server/src/domain/search/search.service.ts

@@ -30,7 +30,7 @@ interface SyncQueue {
 export class SearchService {
   private logger = new Logger(SearchService.name);
   private enabled = false;
-  private timer: NodeJS.Timer | null = null;
+  private timer: NodeJS.Timeout | null = null;
   private configCore: SystemConfigCore;
 
   private albumQueue: SyncQueue = {

+ 1 - 1
server/src/domain/shared-link/shared-link.service.ts

@@ -65,7 +65,7 @@ export class SharedLinkService {
       userId: authUser.id,
       type: dto.type,
       albumId: dto.albumId || null,
-      assets: (dto.assetIds || []).map((id) => ({ id } as AssetEntity)),
+      assets: (dto.assetIds || []).map((id) => ({ id }) as AssetEntity),
       description: dto.description || null,
       expiresAt: dto.expiresAt || null,
       allowUpload: dto.allowUpload ?? true,

+ 4 - 1
server/src/domain/user/user.core.ts

@@ -16,7 +16,10 @@ import { IUserRepository, UserListFilter } from './user.repository';
 const SALT_ROUNDS = 10;
 
 export class UserCore {
-  constructor(private userRepository: IUserRepository, private cryptoRepository: ICryptoRepository) {}
+  constructor(
+    private userRepository: IUserRepository,
+    private cryptoRepository: ICryptoRepository,
+  ) {}
 
   async updateUser(authUser: AuthUserDto, id: string, dto: Partial<UserEntity>): Promise<UserEntity> {
     if (!authUser.isAdmin && authUser.id !== id) {

+ 4 - 1
server/src/immich/api-v1/asset/asset.core.ts

@@ -5,7 +5,10 @@ import { IAssetRepository } from './asset-repository';
 import { CreateAssetDto, ImportAssetDto } from './dto/create-asset.dto';
 
 export class AssetCore {
-  constructor(private repository: IAssetRepository, private jobRepository: IJobRepository) {}
+  constructor(
+    private repository: IAssetRepository,
+    private jobRepository: IJobRepository,
+  ) {}
 
   async create(
     authUser: AuthUserDto,

+ 4 - 1
server/src/immich/app.guard.ts

@@ -80,7 +80,10 @@ export interface AuthRequest extends Request {
 export class AppGuard implements CanActivate {
   private logger = new Logger(AppGuard.name);
 
-  constructor(private reflector: Reflector, private authService: AuthService) {}
+  constructor(
+    private reflector: Reflector,
+    private authService: AuthService,
+  ) {}
 
   async canActivate(context: ExecutionContext): Promise<boolean> {
     const targets = [context.getHandler(), context.getClass()];

+ 4 - 1
server/src/immich/app.interceptor.ts

@@ -60,7 +60,10 @@ export class FileUploadInterceptor implements NestInterceptor {
   };
   private defaultStorage: StorageEngine;
 
-  constructor(private reflect: Reflector, private assetService: AssetService) {
+  constructor(
+    private reflect: Reflector,
+    private assetService: AssetService,
+  ) {
     this.defaultStorage = diskStorage({
       filename: this.filename.bind(this),
       destination: this.destination.bind(this),

+ 2 - 2
server/test/e2e/setup.ts

@@ -1,5 +1,5 @@
-import { GenericContainer, PostgreSqlContainer } from 'testcontainers';
-
+import { GenericContainer } from 'testcontainers';
+import { PostgreSqlContainer } from '@testcontainers/postgresql';
 export default async () => {
   process.env.NODE_ENV = 'development';
   process.env.TYPESENSE_API_KEY = 'abc123';

+ 31 - 11
server/tsconfig.json

@@ -1,6 +1,6 @@
 {
   "compilerOptions": {
-    "module": "commonjs",
+    "module": "Node16",
     "strict": true,
     "declaration": true,
     "removeComments": true,
@@ -17,15 +17,35 @@
     "esModuleInterop": true,
     "baseUrl": "./",
     "paths": {
-      "@test": ["test"],
-      "@test/*": ["test/*"],
-      "@app/immich": ["src/immich"],
-      "@app/immich/*": ["src/immich/*"],
-      "@app/infra": ["src/infra"],
-      "@app/infra/*": ["src/infra/*"],
-      "@app/domain": ["src/domain"],
-      "@app/domain/*": ["src/domain/*"]
+      "@test": [
+        "test"
+      ],
+      "@test/*": [
+        "test/*"
+      ],
+      "@app/immich": [
+        "src/immich"
+      ],
+      "@app/immich/*": [
+        "src/immich/*"
+      ],
+      "@app/infra": [
+        "src/infra"
+      ],
+      "@app/infra/*": [
+        "src/infra/*"
+      ],
+      "@app/domain": [
+        "src/domain"
+      ],
+      "@app/domain/*": [
+        "src/domain/*"
+      ]
     }
   },
-  "exclude": ["dist", "node_modules", "upload"]
-}
+  "exclude": [
+    "dist",
+    "node_modules",
+    "upload"
+  ]
+}

Some files were not shown because too many files changed in this diff