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

* chore(server): bump server dependencies

* fix: test
This commit is contained in:
Alex 2023-08-28 14:41:57 -05:00 committed by GitHub
parent 26c43617d1
commit d0a06739d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 6769 additions and 5037 deletions

6
package-lock.json generated Normal file
View File

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

11589
server/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -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,

View File

@ -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();
}

View File

@ -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,
});

View File

@ -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,

View File

@ -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);
}

View File

@ -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 = {

View File

@ -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,

View File

@ -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) {

View File

@ -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,

View File

@ -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()];

View File

@ -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),

View File

@ -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';

View File

@ -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"
]
}