mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	chore(server): bump server dependencies (#3899)
* chore(server): bump server dependencies * fix: test
This commit is contained in:
		
							
								
								
									
										6
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | { | ||||||
|  |   "name": "immich", | ||||||
|  |   "lockfileVersion": 2, | ||||||
|  |   "requires": true, | ||||||
|  |   "packages": {} | ||||||
|  | } | ||||||
							
								
								
									
										11579
									
								
								server/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										11579
									
								
								server/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -39,89 +39,90 @@ | |||||||
|     "api:generate": "node ./bin/sync-spec-version.js && bash ./bin/generate-open-api.sh" |     "api:generate": "node ./bin/sync-spec-version.js && bash ./bin/generate-open-api.sh" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@babel/runtime": "^7.20.13", |     "@babel/runtime": "^7.22.11", | ||||||
|     "@nestjs/bullmq": "^1.1.0", |     "@nestjs/bullmq": "^10.0.1", | ||||||
|     "@nestjs/common": "^9.2.1", |     "@nestjs/common": "^10.2.2", | ||||||
|     "@nestjs/config": "^2.2.0", |     "@nestjs/config": "^3.0.0", | ||||||
|     "@nestjs/core": "^9.2.1", |     "@nestjs/core": "^10.2.2", | ||||||
|     "@nestjs/platform-express": "^9.2.1", |     "@nestjs/platform-express": "^10.2.2", | ||||||
|     "@nestjs/platform-socket.io": "^9.2.1", |     "@nestjs/platform-socket.io": "^10.2.2", | ||||||
|     "@nestjs/schedule": "^2.1.0", |     "@nestjs/schedule": "^3.0.3", | ||||||
|     "@nestjs/swagger": "^6.1.4", |     "@nestjs/swagger": "^7.1.8", | ||||||
|     "@nestjs/typeorm": "^9.0.1", |     "@nestjs/typeorm": "^10.0.0", | ||||||
|     "@nestjs/websockets": "^9.2.1", |     "@nestjs/websockets": "^10.2.2", | ||||||
|     "@socket.io/redis-adapter": "^8.0.1", |     "@socket.io/redis-adapter": "^8.2.1", | ||||||
|     "archiver": "^5.3.1", |     "archiver": "^6.0.0", | ||||||
|     "axios": "^0.26.0", |     "axios": "^1.5.0", | ||||||
|     "bcrypt": "^5.0.1", |     "bcrypt": "^5.1.1", | ||||||
|     "bullmq": "^3.14.1", |     "bullmq": "^4.8.0", | ||||||
|     "class-transformer": "^0.5.1", |     "class-transformer": "^0.5.1", | ||||||
|     "class-validator": "^0.14.0", |     "class-validator": "^0.14.0", | ||||||
|     "cookie-parser": "^1.4.6", |     "cookie-parser": "^1.4.6", | ||||||
|     "exiftool-vendored": "^22.0.0", |     "exiftool-vendored": "^22.0.0", | ||||||
|     "exiftool-vendored.pl": "^12.54.0", |     "exiftool-vendored.pl": "^12.62.0", | ||||||
|     "fluent-ffmpeg": "^2.1.2", |     "fluent-ffmpeg": "^2.1.2", | ||||||
|     "handlebars": "^4.7.7", |     "handlebars": "^4.7.8", | ||||||
|     "i18n-iso-countries": "^7.5.0", |     "i18n-iso-countries": "^7.6.0", | ||||||
|     "immich": "^0.41.0", |     "immich": "^0.41.0", | ||||||
|     "ioredis": "^5.3.1", |     "ioredis": "^5.3.2", | ||||||
|     "joi": "^17.5.0", |     "joi": "^17.10.0", | ||||||
|     "local-reverse-geocoder": "0.12.5", |     "local-reverse-geocoder": "0.16.5", | ||||||
|     "lodash": "^4.17.21", |     "lodash": "^4.17.21", | ||||||
|     "luxon": "^3.0.3", |     "luxon": "^3.4.2", | ||||||
|     "mv": "^2.1.1", |     "mv": "^2.1.1", | ||||||
|     "nest-commander": "^3.3.0", |     "nest-commander": "^3.11.1", | ||||||
|     "openid-client": "^5.2.1", |     "openid-client": "^5.4.3", | ||||||
|     "pg": "^8.8.0", |     "pg": "^8.11.3", | ||||||
|     "reflect-metadata": "^0.1.13", |     "reflect-metadata": "^0.1.13", | ||||||
|     "rxjs": "^7.2.0", |     "rxjs": "^7.8.1", | ||||||
|     "sanitize-filename": "^1.6.3", |     "sanitize-filename": "^1.6.3", | ||||||
|     "sharp": "^0.31.3", |     "sharp": "^0.31.3", | ||||||
|     "thumbhash": "^0.1.1", |     "thumbhash": "^0.1.1", | ||||||
|     "typeorm": "^0.3.11", |     "typeorm": "^0.3.17", | ||||||
|     "typesense": "^1.5.3", |     "typesense": "^1.7.1", | ||||||
|     "ua-parser-js": "^1.0.35" |     "ua-parser-js": "^1.0.35" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@nestjs/cli": "^9.1.8", |     "@nestjs/cli": "^10.1.16", | ||||||
|     "@nestjs/schematics": "^9.0.4", |     "@nestjs/schematics": "^10.0.2", | ||||||
|     "@nestjs/testing": "^9.2.1", |     "@nestjs/testing": "^10.2.2", | ||||||
|     "@openapitools/openapi-generator-cli": "2.5.2", |     "@openapitools/openapi-generator-cli": "2.7.0", | ||||||
|     "@types/archiver": "^5.3.1", |     "@testcontainers/postgresql": "^10.2.1", | ||||||
|  |     "@types/archiver": "^5.3.2", | ||||||
|     "@types/bcrypt": "^5.0.0", |     "@types/bcrypt": "^5.0.0", | ||||||
|     "@types/cookie-parser": "^1.4.3", |     "@types/cookie-parser": "^1.4.3", | ||||||
|     "@types/cron": "^2.0.0", |     "@types/cron": "^2.0.1", | ||||||
|     "@types/express": "^4.17.13", |     "@types/express": "^4.17.17", | ||||||
|     "@types/fluent-ffmpeg": "^2.1.20", |     "@types/fluent-ffmpeg": "^2.1.21", | ||||||
|     "@types/imagemin": "^8.0.0", |     "@types/imagemin": "^8.0.1", | ||||||
|     "@types/jest": "27.0.2", |     "@types/jest": "29.5.4", | ||||||
|     "@types/jest-when": "^3.5.2", |     "@types/jest-when": "^3.5.2", | ||||||
|     "@types/lodash": "^4.14.178", |     "@types/lodash": "^4.14.197", | ||||||
|     "@types/multer": "^1.4.7", |     "@types/multer": "^1.4.7", | ||||||
|     "@types/mv": "^2.1.2", |     "@types/mv": "^2.1.2", | ||||||
|     "@types/node": "^18.0.0", |     "@types/node": "^20.5.7", | ||||||
|     "@types/sharp": "^0.30.2", |     "@types/sharp": "^0.31.1", | ||||||
|     "@types/supertest": "^2.0.11", |     "@types/supertest": "^2.0.12", | ||||||
|     "@types/ua-parser-js": "^0.7.36", |     "@types/ua-parser-js": "^0.7.36", | ||||||
|     "@typescript-eslint/eslint-plugin": "^5.48.1", |     "@typescript-eslint/eslint-plugin": "^6.4.1", | ||||||
|     "@typescript-eslint/parser": "^5.48.1", |     "@typescript-eslint/parser": "^6.4.1", | ||||||
|     "dotenv": "^14.2.0", |     "dotenv": "^16.3.1", | ||||||
|     "eslint": "^8.31.0", |     "eslint": "^8.48.0", | ||||||
|     "eslint-config-prettier": "^8.3.0", |     "eslint-config-prettier": "^9.0.0", | ||||||
|     "eslint-plugin-prettier": "^4.0.0", |     "eslint-plugin-prettier": "^5.0.0", | ||||||
|     "jest": "^27.2.5", |     "jest": "^29.6.4", | ||||||
|     "jest-when": "^3.5.2", |     "jest-when": "^3.6.0", | ||||||
|     "prettier": "^2.3.2", |     "prettier": "^3.0.2", | ||||||
|     "prettier-plugin-organize-imports": "^3.2.2", |     "prettier-plugin-organize-imports": "^3.2.3", | ||||||
|     "rimraf": "^3.0.2", |     "rimraf": "^5.0.1", | ||||||
|     "source-map-support": "^0.5.20", |     "source-map-support": "^0.5.21", | ||||||
|     "supertest": "^6.1.3", |     "supertest": "^6.3.3", | ||||||
|     "testcontainers": "^9.9.1", |     "testcontainers": "^10.2.1", | ||||||
|     "ts-jest": "^27.0.3", |     "ts-jest": "^29.1.1", | ||||||
|     "ts-loader": "^9.2.3", |     "ts-loader": "^9.4.4", | ||||||
|     "ts-node": "^10.0.0", |     "ts-node": "^10.9.1", | ||||||
|     "tsconfig-paths": "^3.10.1", |     "tsconfig-paths": "^4.2.0", | ||||||
|     "typescript": "^4.9.4" |     "typescript": "^5.2.2" | ||||||
|   }, |   }, | ||||||
|   "jest": { |   "jest": { | ||||||
|     "clearMocks": true, |     "clearMocks": true, | ||||||
|   | |||||||
| @@ -6,7 +6,10 @@ import { Command, CommandRunner, InquirerService, Question, QuestionSet } from ' | |||||||
|   description: 'Reset the admin password', |   description: 'Reset the admin password', | ||||||
| }) | }) | ||||||
| export class ResetAdminPasswordCommand extends CommandRunner { | export class ResetAdminPasswordCommand extends CommandRunner { | ||||||
|   constructor(private userService: UserService, private readonly inquirer: InquirerService) { |   constructor( | ||||||
|  |     private userService: UserService, | ||||||
|  |     private readonly inquirer: InquirerService, | ||||||
|  |   ) { | ||||||
|     super(); |     super(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -99,8 +99,8 @@ export class AlbumService { | |||||||
|       ownerId: authUser.id, |       ownerId: authUser.id, | ||||||
|       albumName: dto.albumName, |       albumName: dto.albumName, | ||||||
|       description: dto.description, |       description: dto.description, | ||||||
|       sharedUsers: dto.sharedWithUserIds?.map((value) => ({ id: value } as UserEntity)) ?? [], |       sharedUsers: dto.sharedWithUserIds?.map((value) => ({ id: value }) as UserEntity) ?? [], | ||||||
|       assets: (dto.assetIds || []).map((id) => ({ id } as AssetEntity)), |       assets: (dto.assetIds || []).map((id) => ({ id }) as AssetEntity), | ||||||
|       albumThumbnailAssetId: dto.assetIds?.[0] || null, |       albumThumbnailAssetId: dto.assetIds?.[0] || null, | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -92,7 +92,7 @@ const sidecar: Record<string, string[]> = { | |||||||
| const isType = (filename: string, r: Record<string, string[]>) => extname(filename).toLowerCase() in r; | const isType = (filename: string, r: Record<string, string[]>) => extname(filename).toLowerCase() in r; | ||||||
|  |  | ||||||
| const lookup = (filename: string) => | 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 = { | export const mimeTypes = { | ||||||
|   image, |   image, | ||||||
|   | |||||||
| @@ -176,7 +176,10 @@ class BaseConfig implements VideoCodecSWConfig { | |||||||
| export class BaseHWConfig extends BaseConfig implements VideoCodecHWConfig { | export class BaseHWConfig extends BaseConfig implements VideoCodecHWConfig { | ||||||
|   protected devices: string[]; |   protected devices: string[]; | ||||||
|  |  | ||||||
|   constructor(protected config: SystemConfigFFmpegDto, devices: string[] = []) { |   constructor( | ||||||
|  |     protected config: SystemConfigFFmpegDto, | ||||||
|  |     devices: string[] = [], | ||||||
|  |   ) { | ||||||
|     super(config); |     super(config); | ||||||
|     this.devices = this.validateDevices(devices); |     this.devices = this.validateDevices(devices); | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ interface SyncQueue { | |||||||
| export class SearchService { | export class SearchService { | ||||||
|   private logger = new Logger(SearchService.name); |   private logger = new Logger(SearchService.name); | ||||||
|   private enabled = false; |   private enabled = false; | ||||||
|   private timer: NodeJS.Timer | null = null; |   private timer: NodeJS.Timeout | null = null; | ||||||
|   private configCore: SystemConfigCore; |   private configCore: SystemConfigCore; | ||||||
|  |  | ||||||
|   private albumQueue: SyncQueue = { |   private albumQueue: SyncQueue = { | ||||||
|   | |||||||
| @@ -65,7 +65,7 @@ export class SharedLinkService { | |||||||
|       userId: authUser.id, |       userId: authUser.id, | ||||||
|       type: dto.type, |       type: dto.type, | ||||||
|       albumId: dto.albumId || null, |       albumId: dto.albumId || null, | ||||||
|       assets: (dto.assetIds || []).map((id) => ({ id } as AssetEntity)), |       assets: (dto.assetIds || []).map((id) => ({ id }) as AssetEntity), | ||||||
|       description: dto.description || null, |       description: dto.description || null, | ||||||
|       expiresAt: dto.expiresAt || null, |       expiresAt: dto.expiresAt || null, | ||||||
|       allowUpload: dto.allowUpload ?? true, |       allowUpload: dto.allowUpload ?? true, | ||||||
|   | |||||||
| @@ -16,7 +16,10 @@ import { IUserRepository, UserListFilter } from './user.repository'; | |||||||
| const SALT_ROUNDS = 10; | const SALT_ROUNDS = 10; | ||||||
|  |  | ||||||
| export class UserCore { | 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> { |   async updateUser(authUser: AuthUserDto, id: string, dto: Partial<UserEntity>): Promise<UserEntity> { | ||||||
|     if (!authUser.isAdmin && authUser.id !== id) { |     if (!authUser.isAdmin && authUser.id !== id) { | ||||||
|   | |||||||
| @@ -5,7 +5,10 @@ import { IAssetRepository } from './asset-repository'; | |||||||
| import { CreateAssetDto, ImportAssetDto } from './dto/create-asset.dto'; | import { CreateAssetDto, ImportAssetDto } from './dto/create-asset.dto'; | ||||||
|  |  | ||||||
| export class AssetCore { | export class AssetCore { | ||||||
|   constructor(private repository: IAssetRepository, private jobRepository: IJobRepository) {} |   constructor( | ||||||
|  |     private repository: IAssetRepository, | ||||||
|  |     private jobRepository: IJobRepository, | ||||||
|  |   ) {} | ||||||
|  |  | ||||||
|   async create( |   async create( | ||||||
|     authUser: AuthUserDto, |     authUser: AuthUserDto, | ||||||
|   | |||||||
| @@ -80,7 +80,10 @@ export interface AuthRequest extends Request { | |||||||
| export class AppGuard implements CanActivate { | export class AppGuard implements CanActivate { | ||||||
|   private logger = new Logger(AppGuard.name); |   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> { |   async canActivate(context: ExecutionContext): Promise<boolean> { | ||||||
|     const targets = [context.getHandler(), context.getClass()]; |     const targets = [context.getHandler(), context.getClass()]; | ||||||
|   | |||||||
| @@ -60,7 +60,10 @@ export class FileUploadInterceptor implements NestInterceptor { | |||||||
|   }; |   }; | ||||||
|   private defaultStorage: StorageEngine; |   private defaultStorage: StorageEngine; | ||||||
|  |  | ||||||
|   constructor(private reflect: Reflector, private assetService: AssetService) { |   constructor( | ||||||
|  |     private reflect: Reflector, | ||||||
|  |     private assetService: AssetService, | ||||||
|  |   ) { | ||||||
|     this.defaultStorage = diskStorage({ |     this.defaultStorage = diskStorage({ | ||||||
|       filename: this.filename.bind(this), |       filename: this.filename.bind(this), | ||||||
|       destination: this.destination.bind(this), |       destination: this.destination.bind(this), | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| import { GenericContainer, PostgreSqlContainer } from 'testcontainers'; | import { GenericContainer } from 'testcontainers'; | ||||||
|  | import { PostgreSqlContainer } from '@testcontainers/postgresql'; | ||||||
| export default async () => { | export default async () => { | ||||||
|   process.env.NODE_ENV = 'development'; |   process.env.NODE_ENV = 'development'; | ||||||
|   process.env.TYPESENSE_API_KEY = 'abc123'; |   process.env.TYPESENSE_API_KEY = 'abc123'; | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "compilerOptions": { |   "compilerOptions": { | ||||||
|     "module": "commonjs", |     "module": "Node16", | ||||||
|     "strict": true, |     "strict": true, | ||||||
|     "declaration": true, |     "declaration": true, | ||||||
|     "removeComments": true, |     "removeComments": true, | ||||||
| @@ -17,15 +17,35 @@ | |||||||
|     "esModuleInterop": true, |     "esModuleInterop": true, | ||||||
|     "baseUrl": "./", |     "baseUrl": "./", | ||||||
|     "paths": { |     "paths": { | ||||||
|       "@test": ["test"], |       "@test": [ | ||||||
|       "@test/*": ["test/*"], |         "test" | ||||||
|       "@app/immich": ["src/immich"], |       ], | ||||||
|       "@app/immich/*": ["src/immich/*"], |       "@test/*": [ | ||||||
|       "@app/infra": ["src/infra"], |         "test/*" | ||||||
|       "@app/infra/*": ["src/infra/*"], |       ], | ||||||
|       "@app/domain": ["src/domain"], |       "@app/immich": [ | ||||||
|       "@app/domain/*": ["src/domain/*"] |         "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" | ||||||
|  |   ] | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user