feat: server imports linting (#31537)

This commit is contained in:
Daniel Dietzler
2026-09-14 14:51:31 +02:00
committed by GitHub
parent eb84a5ad7f
commit 221ddd31c4
319 changed files with 1844 additions and 552 deletions
+2 -2
View File
@@ -13,7 +13,7 @@
"editor.wordBasedSuggestions": "off"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
"editor.formatOnSave": true
},
"[json]": {
@@ -30,7 +30,7 @@
"tailwindCSS.lint.suggestCanonicalClasses": "ignore"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
"editor.formatOnSave": true
},
"cSpell.words": ["immich"],
+1270 -10
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -27,6 +27,7 @@ allowBuilds:
'@tailwindcss/oxide': true
core-js-pure: false
postman-code-generators: false
unrs-resolver: false
overrides:
canvas: 3.2.3
sharp: ^0.35.3
+1 -3
View File
@@ -2,7 +2,5 @@
"singleQuote": true,
"trailingComma": "all",
"printWidth": 120,
"semi": true,
"organizeImportsSkipDestructiveCodeActions": true,
"plugins": ["prettier-plugin-organize-imports"]
"semi": true
}
+17 -3
View File
@@ -1,14 +1,17 @@
import js from '@eslint/js';
import { importX } from 'eslint-plugin-import-x';
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
import { defineConfig } from 'eslint/config';
import globals from 'globals';
import typescriptEslint from 'typescript-eslint';
export default typescriptEslint.config([
export default defineConfig([
eslintPluginUnicorn.configs.recommended,
eslintPluginPrettierRecommended,
js.configs.recommended,
typescriptEslint.configs.recommended,
importX.flatConfigs.recommended,
importX.flatConfigs.typescript,
{
ignores: ['eslint.config.mjs'],
},
@@ -70,9 +73,19 @@ export default typescriptEslint.config([
'require-await': 'off',
'@typescript-eslint/require-await': 'error',
curly: 2,
'prettier/prettier': 0,
'object-shorthand': ['error', 'always'],
eqeqeq: 'error',
'import-x/no-named-as-default': 'off',
'import-x/order': [
'error',
{
groups: [['builtin', 'external'], 'index', ['parent', 'sibling', 'type']],
alphabetize: { order: 'asc' },
named: true,
},
],
'import-x/newline-after-import': 'error',
'import-x/no-empty-named-blocks': 'error',
'no-restricted-imports': [
'error',
@@ -95,4 +108,5 @@ export default typescriptEslint.config([
],
},
},
eslintPluginPrettierRecommended,
]);
+2 -1
View File
@@ -154,13 +154,14 @@
"@vitest/coverage-v8": "^4.0.0",
"eslint": "^10.0.0",
"eslint-config-prettier": "^10.1.8",
"eslint-import-resolver-typescript": "^4.4.5",
"eslint-plugin-import-x": "^4.17.1",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-unicorn": "^73.0.0",
"globals": "^17.0.0",
"mock-fs": "^5.2.0",
"pngjs": "^7.0.0",
"prettier": "^3.7.4",
"prettier-plugin-organize-imports": "^4.0.0",
"sql-formatter": "^15.0.0",
"supertest": "^7.1.0",
"tailwindcss": "^3.4.0",
+1 -1
View File
@@ -29,7 +29,7 @@ import { LoggingRepository } from 'src/repositories/logging.repository.js';
import { ProcessRepository } from 'src/repositories/process.repository.js';
import { StorageRepository } from 'src/repositories/storage.repository.js';
import { SystemMetadataRepository } from 'src/repositories/system-metadata.repository.js';
import { teardownTelemetry, TelemetryRepository } from 'src/repositories/telemetry.repository.js';
import { TelemetryRepository, teardownTelemetry } from 'src/repositories/telemetry.repository.js';
import { UserRepository } from 'src/repositories/user.repository.js';
import { WebsocketRepository } from 'src/repositories/websocket.repository.js';
import { AuthService } from 'src/services/auth.service.js';
@@ -1,6 +1,6 @@
import request from 'supertest';
import { ActivityController } from 'src/controllers/activity.controller.js';
import { ActivityService } from 'src/services/activity.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,6 +1,7 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Post, Query, Res } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { Response } from 'express';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
ActivityCreateDto,
@@ -9,7 +10,6 @@ import {
ActivitySearchDto,
ActivityStatisticsResponseDto,
} from 'src/dtos/activity.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
import { ActivityService } from 'src/services/activity.service.js';
@@ -1,6 +1,6 @@
import request from 'supertest';
import { AlbumController } from 'src/controllers/album.controller.js';
import { AlbumService } from 'src/services/album.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
+3 -3
View File
@@ -1,20 +1,20 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Put, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
AddUsersDto,
AlbumResponseDto,
AlbumsAddAssetsDto,
AlbumsAddAssetsResponseDto,
AlbumStatisticsResponseDto,
AlbumUserParamDto,
AlbumsAddAssetsDto,
AlbumsAddAssetsResponseDto,
CreateAlbumDto,
GetAlbumsDto,
UpdateAlbumDto,
UpdateAlbumUserDto,
} from 'src/dtos/album.dto.js';
import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { MapMarkerResponseDto } from 'src/dtos/map.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
@@ -1,7 +1,7 @@
import request from 'supertest';
import { ApiKeyController } from 'src/controllers/api-key.controller.js';
import { Permission } from 'src/enum.js';
import { ApiKeyService } from 'src/services/api-key.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
+1 -1
View File
@@ -1,8 +1,8 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Put } from '@nestjs/common';
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { ApiKeyCreateDto, ApiKeyCreateResponseDto, ApiKeyResponseDto, ApiKeyUpdateDto } from 'src/dtos/api-key.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
import { ApiKeyService } from 'src/services/api-key.service.js';
@@ -1,6 +1,6 @@
import request from 'supertest';
import { AppController } from 'src/controllers/app.controller.js';
import { SystemConfigService } from 'src/services/system-config.service.js';
import request from 'supertest';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
describe(AppController.name, () => {
@@ -1,9 +1,9 @@
import { Controller, Delete, Get, HttpCode, HttpStatus, Next, Param, Query, Res } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { NextFunction, Response } from 'express';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { AssetFileResponseDto, AssetFileSearchDto } from 'src/dtos/asset-file.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
@@ -1,11 +1,11 @@
import request from 'supertest';
import { AssetMediaController } from 'src/controllers/asset-media.controller.js';
import { AssetMediaStatus } from 'src/dtos/asset-media-response.dto.js';
import { AssetMetadataKey } from 'src/enum.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
import { AssetMediaService } from 'src/services/asset-media.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
import { ControllerContext, automock, controllerSetup, mockBaseService } from 'test/utils.js';
const makeUploadDto = (options?: { omit: string }): Record<string, any> => {
const dto: Record<string, any> = {
@@ -16,6 +16,7 @@ import {
} from '@nestjs/common';
import { ApiBody, ApiConsumes, ApiHeader, ApiResponse, ApiTags } from '@nestjs/swagger';
import { type NextFunction, type Request, type Response } from 'express';
import type { UploadFiles } from 'src/types.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
AssetBulkUploadCheckResponseDto,
@@ -36,7 +37,6 @@ import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard.js'
import { FileUploadInterceptor, getFiles } from 'src/middleware/file-upload.interceptor.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
import { AssetMediaService } from 'src/services/asset-media.service.js';
import type { UploadFiles } from 'src/types.js';
import { ImmichFileResponse, sendFile } from 'src/utils/file.js';
import { FileNotEmptyValidator, UUIDParamDto } from 'src/validation.js';
@@ -1,7 +1,7 @@
import request from 'supertest';
import { AssetController } from 'src/controllers/asset.controller.js';
import { AssetMetadataKey } from 'src/enum.js';
import { AssetService } from 'src/services/asset.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
+1 -1
View File
@@ -1,5 +1,6 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Put, Query } from '@nestjs/common';
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { AssetResponseDto } from 'src/dtos/asset-response.dto.js';
import {
@@ -17,7 +18,6 @@ import {
AssetStatsResponseDto,
UpdateAssetDto,
} from 'src/dtos/asset.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { AssetEditsCreateDto, AssetEditsResponseDto } from 'src/dtos/editing.dto.js';
import { AssetOcrResponseDto } from 'src/dtos/ocr.dto.js';
import { ApiTag, Permission, RouteKey } from 'src/enum.js';
@@ -1,7 +1,7 @@
import { Controller, HttpCode, HttpStatus, Post } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
import { AuthAdminService } from 'src/services/auth-admin.service.js';
@@ -1,10 +1,10 @@
import { BadRequestException } from '@nestjs/common';
import request from 'supertest';
import { AuthController } from 'src/controllers/auth.controller.js';
import { LoginResponseDto } from 'src/dtos/auth.dto.js';
import { AuthService } from 'src/services/auth.service.js';
import request from 'supertest';
import { mediumFactory } from 'test/medium.factory.js';
import { errorDto } from 'test/medium/responses.js';
import { mediumFactory } from 'test/medium.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
describe(AuthController.name, () => {
@@ -1,8 +1,8 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Post, Put, Res } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { Response } from 'express';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { ClusterGroupRequestCreateDto, ClusterGroupRequestResponseDto } from 'src/dtos/cluster-group.dto.js';
import { UserResponseDto } from 'src/dtos/user.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
@@ -1,10 +1,10 @@
import { cloneDeep } from 'lodash-es';
import request from 'supertest';
import { ConfigAdminController } from 'src/controllers/config-admin.controller.js';
import { ConfigPublicController } from 'src/controllers/config-public.controller.js';
import { ConfigUserController } from 'src/controllers/config-user.controller.js';
import { defaults, mapPublicConfig, mapUserConfig } from 'src/dtos/config.dto.js';
import { SystemConfigService } from 'src/services/system-config.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,10 +1,10 @@
import { BadRequestException } from '@nestjs/common';
import request from 'supertest';
import { DatabaseBackupController } from 'src/controllers/database-backup.controller.js';
import { DatabaseBackupService } from 'src/services/database-backup.service.js';
import { MaintenanceService } from 'src/services/maintenance.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
import { ControllerContext, automock, controllerSetup, mockBaseService } from 'test/utils.js';
describe(DatabaseBackupController.name, () => {
let ctx: ControllerContext;
@@ -2,6 +2,7 @@ import { Body, Controller, Delete, Get, Next, Param, Post, Res, UploadedFile, Us
import { FileInterceptor } from '@nestjs/platform-express';
import { ApiBody, ApiConsumes, ApiTags } from '@nestjs/swagger';
import type { NextFunction, Response } from 'express';
import type { LoginDetails } from 'src/services/auth.service.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
DatabaseBackupDeleteDto,
@@ -11,7 +12,6 @@ import {
import { ApiTag, ImmichCookie, Permission } from 'src/enum.js';
import { Authenticated, FileResponse, GetLoginDetails } from 'src/middleware/auth.guard.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
import type { LoginDetails } from 'src/services/auth.service.js';
import { DatabaseBackupService } from 'src/services/database-backup.service.js';
import { MaintenanceService } from 'src/services/maintenance.service.js';
import { sendFile } from 'src/utils/file.js';
@@ -1,7 +1,7 @@
import { Readable } from 'node:stream';
import request from 'supertest';
import { DownloadController } from 'src/controllers/download.controller.js';
import { DownloadService } from 'src/services/download.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,7 +1,7 @@
import { Body, Controller, HttpCode, HttpStatus, Post, StreamableFile } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { DownloadArchiveDto, DownloadInfoDto, DownloadResponseDto } from 'src/dtos/download.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard.js';
@@ -1,6 +1,6 @@
import request from 'supertest';
import { DuplicateController } from 'src/controllers/duplicate.controller.js';
import { DuplicateService } from 'src/services/duplicate.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,8 +1,8 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Post } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { DuplicateResolveDto, DuplicateResponseDto } from 'src/dtos/duplicate.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
+1 -1
View File
@@ -1,7 +1,7 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Post, Put, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
AssetFaceCreateDto,
AssetFaceDeleteDto,
@@ -1,8 +1,8 @@
import { Controller, Delete, Get, HttpCode, HttpStatus, Next, Param, Query, Res } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { NextFunction, Response } from 'express';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
IntegrityGetReportDto,
IntegrityReportResponseDto,
@@ -1,7 +1,7 @@
import request from 'supertest';
import { JobController } from 'src/controllers/job.controller.js';
import { JobService } from 'src/services/job.service.js';
import { QueueService } from 'src/services/queue.service.js';
import request from 'supertest';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
describe(JobController.name, () => {
+1 -1
View File
@@ -1,7 +1,7 @@
import { Body, Controller, Get, HttpCode, HttpStatus, Param, Post, Put } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { JobCreateDto } from 'src/dtos/job.dto.js';
import { QueueResponseLegacyDto, QueuesResponseLegacyDto } from 'src/dtos/queue-legacy.dto.js';
import { QueueCommandDto, QueueNameParamDto } from 'src/dtos/queue.dto.js';
@@ -1,6 +1,6 @@
import request from 'supertest';
import { LibraryController } from 'src/controllers/library.controller.js';
import { LibraryService } from 'src/services/library.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,7 +1,7 @@
import request from 'supertest';
import { MaintenanceController } from 'src/controllers/maintenance.controller.js';
import { MaintenanceAction } from 'src/enum.js';
import { MaintenanceService } from 'src/services/maintenance.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,8 +1,9 @@
import { BadRequestException, Body, Controller, Get, Post, Res } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { Response } from 'express';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import type { LoginDetails } from 'src/services/auth.service.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
MaintenanceAuthDto,
MaintenanceDetectInstallResponseDto,
@@ -12,7 +13,6 @@ import {
} from 'src/dtos/maintenance.dto.js';
import { ApiTag, ImmichCookie, MaintenanceAction, Permission } from 'src/enum.js';
import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard.js';
import type { LoginDetails } from 'src/services/auth.service.js';
import { MaintenanceService } from 'src/services/maintenance.service.js';
import { respondWithCookie } from 'src/utils/response.js';
@@ -1,6 +1,6 @@
import request from 'supertest';
import { MapController } from 'src/controllers/map.controller.js';
import { MapService } from 'src/services/map.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
+1 -1
View File
@@ -1,7 +1,7 @@
import { Controller, Get, HttpCode, HttpStatus, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
MapMarkerDto,
MapMarkerResponseDto,
@@ -1,6 +1,6 @@
import request from 'supertest';
import { MemoryController } from 'src/controllers/memory.controller.js';
import { MemoryService } from 'src/services/memory.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
+1 -1
View File
@@ -1,8 +1,8 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Put, Query } from '@nestjs/common';
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import {
MemoryCreateDto,
MemoryResponseDto,
@@ -1,6 +1,6 @@
import request from 'supertest';
import { NotificationAdminController } from 'src/controllers/notification-admin.controller.js';
import { NotificationAdminService } from 'src/services/notification-admin.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,7 +1,7 @@
import { Body, Controller, HttpCode, HttpStatus, Param, Post } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { SystemConfigSmtpDto } from 'src/dtos/config.dto.js';
import {
NotificationCreateDto,
@@ -1,6 +1,6 @@
import request from 'supertest';
import { NotificationController } from 'src/controllers/notification.controller.js';
import { NotificationService } from 'src/services/notification.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,7 +1,7 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Put, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
NotificationDeleteAllDto,
NotificationDto,
@@ -1,6 +1,6 @@
import request from 'supertest';
import { OAuthController } from 'src/controllers/oauth.controller.js';
import { AuthService } from 'src/services/auth.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,9 +1,9 @@
import request from 'supertest';
import { PartnerController } from 'src/controllers/partner.controller.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
import { PartnerService } from 'src/services/partner.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
import { ControllerContext, automock, controllerSetup, mockBaseService } from 'test/utils.js';
describe(PartnerController.name, () => {
let ctx: ControllerContext;
+1 -1
View File
@@ -1,7 +1,7 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Post, Put, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { PartnerCreateDto, PartnerResponseDto, PartnerSearchDto, PartnerUpdateDto } from 'src/dtos/partner.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
@@ -1,10 +1,10 @@
import request from 'supertest';
import { PersonController } from 'src/controllers/person.controller.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
import { PersonService } from 'src/services/person.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { factory } from 'test/small.factory.js';
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
import { ControllerContext, automock, controllerSetup, mockBaseService } from 'test/utils.js';
describe(PersonController.name, () => {
let ctx: ControllerContext;
+1 -1
View File
@@ -15,9 +15,9 @@ import {
} from '@nestjs/common';
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import type { NextFunction, Response } from 'express';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import {
AssetFaceUpdateDto,
MergePersonDto,
@@ -1,9 +1,9 @@
import request from 'supertest';
import { PluginController } from 'src/controllers/plugin.controller.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
import { PluginService } from 'src/services/plugin.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
import { ControllerContext, automock, controllerSetup, mockBaseService } from 'test/utils.js';
describe(PluginController.name, () => {
let ctx: ControllerContext;
+1 -1
View File
@@ -1,7 +1,7 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Put, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
QueueDeleteDto,
QueueJobResponseDto,
@@ -1,6 +1,6 @@
import request from 'supertest';
import { SearchController } from 'src/controllers/search.controller.js';
import { SearchService } from 'src/services/search.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
+1 -1
View File
@@ -1,8 +1,8 @@
import { Body, Controller, Get, HttpCode, HttpStatus, Post, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { AssetResponseDto } from 'src/dtos/asset-response.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { PersonResponseDto } from 'src/dtos/person.dto.js';
import {
LargeAssetSearchDto,
+1 -1
View File
@@ -1,7 +1,7 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Put } from '@nestjs/common';
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
SessionCreateDto,
SessionCreateResponseDto,
@@ -1,7 +1,7 @@
import request from 'supertest';
import { SharedLinkController } from 'src/controllers/shared-link.controller.js';
import { Permission, SharedLinkType } from 'src/enum.js';
import { SharedLinkService } from 'src/services/shared-link.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { factory, newUuid } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -15,10 +15,11 @@ import {
} from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { Request, Response } from 'express';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import type { LoginDetails } from 'src/services/auth.service.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { AssetIdsResponseDto } from 'src/dtos/asset-ids.response.dto.js';
import { AssetIdsDto } from 'src/dtos/asset.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import {
SharedLinkCreateDto,
SharedLinkEditDto,
@@ -29,7 +30,6 @@ import {
import { ApiTag, ImmichCookie, Permission } from 'src/enum.js';
import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
import type { LoginDetails } from 'src/services/auth.service.js';
import { SharedLinkService } from 'src/services/shared-link.service.js';
import { respondWithCookie } from 'src/utils/response.js';
import { UUIDParamDto } from 'src/validation.js';
@@ -1,6 +1,6 @@
import request from 'supertest';
import { StackController } from 'src/controllers/stack.controller.js';
import { StackService } from 'src/services/stack.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
+1 -1
View File
@@ -1,8 +1,8 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Put, Query } from '@nestjs/common';
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { BulkIdsDto } from 'src/dtos/asset-ids.response.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { StackCreateDto, StackResponseDto, StackSearchDto, StackUpdateDto } from 'src/dtos/stack.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
@@ -1,7 +1,7 @@
import request from 'supertest';
import { SyncController } from 'src/controllers/sync.controller.js';
import { GlobalExceptionFilter } from 'src/middleware/global-exception.filter.js';
import { SyncService } from 'src/services/sync.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
+1 -1
View File
@@ -1,8 +1,8 @@
import { Body, Controller, Delete, Get, Header, HttpCode, HttpStatus, Post, Req, Res } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { Request, Response } from 'express';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { SyncAckDeleteDto, SyncAckDto, SyncAckSetDto, SyncStreamDto } from 'src/dtos/sync.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
@@ -1,9 +1,9 @@
import { cloneDeep } from 'lodash-es';
import request from 'supertest';
import { SystemConfigController } from 'src/controllers/system-config.controller.js';
import { defaults } from 'src/dtos/config.dto.js';
import { StorageTemplateService } from 'src/services/storage-template.service.js';
import { SystemConfigService } from 'src/services/system-config.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,6 +1,6 @@
import request from 'supertest';
import { SystemMetadataController } from 'src/controllers/system-metadata.controller.js';
import { SystemMetadataService } from 'src/services/system-metadata.service.js';
import request from 'supertest';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
describe(SystemMetadataController.name, () => {
@@ -1,6 +1,6 @@
import request from 'supertest';
import { TagController } from 'src/controllers/tag.controller.js';
import { TagService } from 'src/services/tag.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
+1 -1
View File
@@ -1,8 +1,8 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Put } from '@nestjs/common';
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import {
TagBulkAssetsDto,
TagBulkAssetsResponseDto,
@@ -1,6 +1,6 @@
import request from 'supertest';
import { TimelineController } from 'src/controllers/timeline.controller.js';
import { TimelineService } from 'src/services/timeline.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
@@ -1,7 +1,7 @@
import { Controller, Get, Header, Query } from '@nestjs/common';
import { ApiOkResponse, ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { TimeBucketAssetDto, TimeBucketAssetResponseDto, TimeBucketDto } from 'src/dtos/time-bucket.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
@@ -1,6 +1,6 @@
import request from 'supertest';
import { TrashController } from 'src/controllers/trash.controller.js';
import { TrashService } from 'src/services/trash.service.js';
import request from 'supertest';
import { factory } from 'test/small.factory.js';
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
+1 -1
View File
@@ -1,8 +1,8 @@
import { Body, Controller, HttpCode, HttpStatus, Post } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { BulkIdsDto } from 'src/dtos/asset-ids.response.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { TrashResponseDto } from 'src/dtos/trash.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
@@ -1,11 +1,11 @@
import request from 'supertest';
import { UserAdminController } from 'src/controllers/user-admin.controller.js';
import { UserAdminCreateDto } from 'src/dtos/user.dto.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
import { UserAdminService } from 'src/services/user-admin.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { factory } from 'test/small.factory.js';
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
import { ControllerContext, automock, controllerSetup, mockBaseService } from 'test/utils.js';
describe(UserAdminController.name, () => {
let ctx: ControllerContext;
@@ -1,8 +1,8 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Put, Query } from '@nestjs/common';
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { AssetStatsDto, AssetStatsResponseDto } from 'src/dtos/asset.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { CalendarHeatmapDto, CalendarHeatmapResponseDto } from 'src/dtos/calendar-heatmap.dto.js';
import { SessionResponseDto } from 'src/dtos/session.dto.js';
import { UserPreferencesResponseDto, UserPreferencesUpdateDto } from 'src/dtos/user-preferences.dto.js';
@@ -1,9 +1,9 @@
import request from 'supertest';
import { UserController } from 'src/controllers/user.controller.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
import { UserService } from 'src/services/user.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
import { ControllerContext, automock, controllerSetup, mockBaseService } from 'test/utils.js';
describe(UserController.name, () => {
let ctx: ControllerContext;
+1 -1
View File
@@ -17,8 +17,8 @@ import {
} from '@nestjs/common';
import { ApiBody, ApiConsumes, ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import type { NextFunction, Response } from 'express';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { CalendarHeatmapDto, CalendarHeatmapResponseDto } from 'src/dtos/calendar-heatmap.dto.js';
import { LicenseKeyDto, LicenseResponseDto } from 'src/dtos/license.dto.js';
import { OnboardingDto, OnboardingResponseDto } from 'src/dtos/onboarding.dto.js';
@@ -1,10 +1,10 @@
import { Controller, Delete, Get, Header, Headers, HttpCode, HttpStatus, Next, Param, Res } from '@nestjs/common';
import { ApiProduces, ApiTags } from '@nestjs/swagger';
import type { NextFunction, Response } from 'express';
import { ZodValidationException } from 'nestjs-zod';
import type { NextFunction, Response } from 'express';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { HLS_PLAYLIST_CONTENT_TYPE } from 'src/constants.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import {
HlsPlaylistHeaderDto,
HlsSegmentHeaderDto,
+1 -1
View File
@@ -1,8 +1,8 @@
import { Controller, Get, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import { AssetResponseDto } from 'src/dtos/asset-response.dto.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { ApiTag, Permission } from 'src/enum.js';
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
import { ViewService } from 'src/services/view.service.js';
@@ -1,10 +1,10 @@
import { WorkflowTrigger } from '@immich/plugin-sdk';
import request from 'supertest';
import { WorkflowController } from 'src/controllers/workflow.controller.js';
import { LoggingRepository } from 'src/repositories/logging.repository.js';
import { WorkflowService } from 'src/services/workflow.service.js';
import request from 'supertest';
import { errorDto } from 'test/medium/responses.js';
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
import { ControllerContext, automock, controllerSetup, mockBaseService } from 'test/utils.js';
describe(WorkflowController.name, () => {
let ctx: ControllerContext;
@@ -1,7 +1,7 @@
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Put, Query } from '@nestjs/common';
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import type { AuthDto } from 'src/dtos/auth.dto.js';
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
import {
WorkflowCreateDto,
WorkflowGetLogsDto,
+1 -1
View File
@@ -1,5 +1,5 @@
import { StorageCore } from 'src/cores/storage.core.js';
import { vitest } from 'vitest';
import { StorageCore } from 'src/cores/storage.core.js';
vitest.mock('src/constants', () => ({
IWorker: 'IWorker',
+1 -1
View File
@@ -1,4 +1,5 @@
import { dirname, join, resolve } from 'node:path';
import type { VideoInterfaces } from 'src/types.js';
import { StorageAsset } from 'src/database.js';
import {
AssetFileType,
@@ -18,7 +19,6 @@ import { MoveRepository } from 'src/repositories/move.repository.js';
import { PersonRepository } from 'src/repositories/person.repository.js';
import { StorageRepository } from 'src/repositories/storage.repository.js';
import { SystemMetadataRepository } from 'src/repositories/system-metadata.repository.js';
import type { VideoInterfaces } from 'src/types.js';
import { getAssetFile } from 'src/utils/asset.util.js';
import { getConfig } from 'src/utils/config.js';
+1 -1
View File
@@ -1,4 +1,5 @@
import { Selectable, ShallowDehydrateObject } from 'kysely';
import type { UserMetadataItem } from 'src/types.js';
import { MapAsset } from 'src/dtos/asset-response.dto.js';
import {
AlbumUserRole,
@@ -17,7 +18,6 @@ import { AlbumTable } from 'src/schema/tables/album.table.js';
import { AssetExifTable } from 'src/schema/tables/asset-exif.table.js';
import { AssetTable } from 'src/schema/tables/asset.table.js';
import { PluginTable } from 'src/schema/tables/plugin.table.js';
import type { UserMetadataItem } from 'src/types.js';
export type AuthUser = {
id: string;
+3 -3
View File
@@ -1,8 +1,8 @@
import { createZodDto } from 'nestjs-zod';
import { Activity } from 'src/database.js';
import { mapUser, UserResponseSchema } from 'src/dtos/user.dto.js';
import { isoDatetimeToDate } from 'src/validation.js';
import z from 'zod';
import { Activity } from 'src/database.js';
import { UserResponseSchema, mapUser } from 'src/dtos/user.dto.js';
import { isoDatetimeToDate } from 'src/validation.js';
export enum ReactionLevel {
ALBUM = 'album',
+2 -2
View File
@@ -1,15 +1,15 @@
import { ShallowDehydrateObject } from 'kysely';
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import type { MaybeDehydrated } from 'src/types.js';
import { AlbumUser, AuthSharedLink } from 'src/database.js';
import { HistoryBuilder } from 'src/decorators.js';
import { BulkIdErrorReasonSchema } from 'src/dtos/asset-ids.response.dto.js';
import { MapAsset } from 'src/dtos/asset-response.dto.js';
import { UserResponseSchema, mapUser } from 'src/dtos/user.dto.js';
import { AlbumUserRole, AlbumUserRoleSchema, AssetOrder, AssetOrderSchema } from 'src/enum.js';
import type { MaybeDehydrated } from 'src/types.js';
import { asDateTimeString } from 'src/utils/date.js';
import { stringToBool } from 'src/validation.js';
import z from 'zod';
const AlbumUserAddSchema = z
.object({
+1 -1
View File
@@ -1,8 +1,8 @@
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import { HistoryBuilder } from 'src/decorators.js';
import { Permission } from 'src/enum.js';
import { isoDatetimeToDate } from 'src/validation.js';
import z from 'zod';
const PermissionSchema = z.enum(Permission).describe('List of permissions').meta({ id: 'Permission' });
+1 -1
View File
@@ -1,9 +1,9 @@
import { Selectable } from 'kysely';
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import { AssetFileTypeSchema } from 'src/enum.js';
import { AssetFileTable } from 'src/schema/tables/asset-file.table.js';
import { isoDatetimeToDate, stringToBool } from 'src/validation.js';
import z from 'zod';
const AssetFileSearchSchema = z
.object({
+2 -2
View File
@@ -1,9 +1,9 @@
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import { HistoryBuilder } from 'src/decorators.js';
import { AssetMetadataUpsertItemSchema } from 'src/dtos/asset.dto.js';
import { ApiCustomExtension, AssetVisibilitySchema } from 'src/enum.js';
import { isoDatetimeToDate, JsonParsed, stringToBool } from 'src/validation.js';
import z from 'zod';
import { JsonParsed, isoDatetimeToDate, stringToBool } from 'src/validation.js';
export enum AssetMediaSize {
Original = 'original',
+2 -2
View File
@@ -1,5 +1,7 @@
import { Selectable, ShallowDehydrateObject } from 'kysely';
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import type { MaybeDehydrated } from 'src/types.js';
import { AssetFace, AssetFile, Exif, Stack, Tag, User } from 'src/database.js';
import { HistoryBuilder } from 'src/decorators.js';
import { AuthDto } from 'src/dtos/auth.dto.js';
@@ -16,11 +18,9 @@ import {
AssetVisibilitySchema,
ChecksumAlgorithm,
} from 'src/enum.js';
import type { MaybeDehydrated } from 'src/types.js';
import { hexOrBufferToBase64 } from 'src/utils/bytes.js';
import { asDateTimeString } from 'src/utils/date.js';
import { mimeTypes } from 'src/utils/mime-types.js';
import z from 'zod';
const SanitizedAssetResponseSchema = z
.object({
+1 -1
View File
@@ -1,10 +1,10 @@
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import { HistoryBuilder } from 'src/decorators.js';
import { BulkIdsSchema } from 'src/dtos/asset-ids.response.dto.js';
import { AssetType, AssetVisibilitySchema } from 'src/enum.js';
import { AssetStats } from 'src/repositories/asset.repository.js';
import { IsNotSiblingOf, isoDatetimeToDate, latitudeSchema, longitudeSchema, stringToBool } from 'src/validation.js';
import z from 'zod';
const UpdateAssetBaseSchema = z
.object({
+2 -2
View File
@@ -1,9 +1,9 @@
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import type { UserMetadataItem } from 'src/types.js';
import { AuthApiKey, AuthSession, AuthSharedLink, AuthUser, UserAdmin } from 'src/database.js';
import { ImmichCookie, UserMetadataKey } from 'src/enum.js';
import type { UserMetadataItem } from 'src/types.js';
import { toEmail } from 'src/validation.js';
import z from 'zod';
export type CookieResponse = {
isSecure: boolean;
+1 -1
View File
@@ -1,5 +1,5 @@
import { latitudeSchema, longitudeSchema } from 'src/validation.js';
import z from 'zod';
import { latitudeSchema, longitudeSchema } from 'src/validation.js';
export const BBoxSchema = z
.object({
+1 -1
View File
@@ -1,7 +1,7 @@
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import { CalendarHeatmapType } from 'src/enum.js';
import { isoDateToDate } from 'src/validation.js';
import z from 'zod';
const CalendarHeatmapTypeSchema = z
.enum(CalendarHeatmapType)
+1 -1
View File
@@ -1,8 +1,8 @@
import { Selectable } from 'kysely';
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import { ClusterGroupRequestTable } from 'src/schema/tables/cluster-group-request.table.js';
import { isoDatetimeToDate } from 'src/validation.js';
import z from 'zod';
const ClusterGroupRequestCreateSchema = z
.object({
+3 -3
View File
@@ -1,13 +1,13 @@
import z from 'zod';
import {
AdminConfigDto,
PublicConfigDto,
UserConfigDto,
defaults,
mapPublicConfig,
mapUserConfig,
PublicConfigDto,
UserConfigDto,
} from 'src/dtos/config.dto.js';
import { getKeysDeep } from 'src/utils/misc.js';
import z from 'zod';
const PUBLIC_PROPERTIES = [
'oauth.autoLaunch',
+4 -4
View File
@@ -1,14 +1,16 @@
import { CronExpression } from '@nestjs/schedule';
import { validateCronExpression } from 'cron';
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import type { DeepPartial } from 'src/types.js';
import {
AudioCodec,
AudioCodecSchema,
CQMode,
CQModeSchema,
Colorspace,
ColorspaceSchema,
ConfigVisibility,
CQMode,
CQModeSchema,
HlsVideoResolution,
HlsVideoResolutionSchema,
ImageFormat,
@@ -30,8 +32,6 @@ import {
VideoContainer,
VideoContainerSchema,
} from 'src/enum.js';
import type { DeepPartial } from 'src/types.js';
import z from 'zod';
const { Admin, User, Public } = ConfigVisibility;
+1 -1
View File
@@ -1,6 +1,6 @@
import { createZodDto } from 'nestjs-zod';
import { AssetResponseSchema } from 'src/dtos/asset-response.dto.js';
import z from 'zod';
import { AssetResponseSchema } from 'src/dtos/asset-response.dto.js';
const DuplicateResponseSchema = z
.object({
+1 -1
View File
@@ -1,6 +1,6 @@
import z from 'zod';
import { ImmichEnvironmentSchema, LogFormatSchema, LogLevelSchema } from 'src/enum.js';
import { IsIPRange } from 'src/validation.js';
import z from 'zod';
// TODO import from sql-tools once the swagger plugin supports external enums
enum DatabaseSslMode {
+3 -3
View File
@@ -1,8 +1,8 @@
import { createZodDto } from 'nestjs-zod';
import { Exif } from 'src/database.js';
import type { MaybeDehydrated } from 'src/types.js';
import { asDateTimeString } from 'src/utils/date.js';
import z from 'zod';
import type { MaybeDehydrated } from 'src/types.js';
import { Exif } from 'src/database.js';
import { asDateTimeString } from 'src/utils/date.js';
export const ExifResponseSchema = z
.object({
+1 -1
View File
@@ -1,6 +1,6 @@
import { createZodDto } from 'nestjs-zod';
import { IntegrityReport, IntegrityReportSchema } from 'src/enum.js';
import z from 'zod';
import { IntegrityReport, IntegrityReportSchema } from 'src/enum.js';
const IntegrityReportSummaryResponseSchema = z
.object({
+1 -1
View File
@@ -1,6 +1,6 @@
import { createZodDto } from 'nestjs-zod';
import { ManualJobNameSchema } from 'src/enum.js';
import z from 'zod';
import { ManualJobNameSchema } from 'src/enum.js';
const JobCreateSchema = z
.object({
+1 -1
View File
@@ -1,7 +1,7 @@
import { createZodDto } from 'nestjs-zod';
import z from 'zod';
import { Library } from 'src/database.js';
import { isoDatetimeToDate } from 'src/validation.js';
import z from 'zod';
const stringArrayMax128 = z
.array(z.string())
+1 -1
View File
@@ -1,6 +1,6 @@
import { createZodDto } from 'nestjs-zod';
import { MaintenanceAction, MaintenanceActionSchema, StorageFolderSchema } from 'src/enum.js';
import z from 'zod';
import { MaintenanceAction, MaintenanceActionSchema, StorageFolderSchema } from 'src/enum.js';
const SetMaintenanceModeSchema = z
.object({
+1 -1
View File
@@ -1,6 +1,6 @@
import { createZodDto } from 'nestjs-zod';
import { isoDatetimeToDate, latitudeSchema, longitudeSchema, stringToBool } from 'src/validation.js';
import z from 'zod';
import { isoDatetimeToDate, latitudeSchema, longitudeSchema, stringToBool } from 'src/validation.js';
const MapReverseGeocodeSchema = z
.object({

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