feat: NestJS 12 and ESM (#31237)
This commit is contained in:
+7
-6
@@ -3,7 +3,9 @@ run = "pnpm install --filter immich --frozen-lockfile"
|
||||
|
||||
[tasks.build]
|
||||
env._.path = "./node_modules/.bin"
|
||||
run = "nest build"
|
||||
# TODO we shouldn't technically need tsc-alias, but the nestjs tsconfig paths resolution is broken right now with ESM
|
||||
# remove when https://github.com/nestjs/nest-cli/pull/3545 has been released
|
||||
run = "nest build && tsc-alias"
|
||||
|
||||
[tasks.test]
|
||||
env._.path = "./node_modules/.bin"
|
||||
@@ -47,10 +49,7 @@ description = "Run database migration commands (create, generate, run, sync-orde
|
||||
run = { task = "migrations query 'DROP schema public cascade; CREATE schema public;'" }
|
||||
|
||||
[tasks."schema-reset"]
|
||||
run = [
|
||||
{ task = ":schema-drop" },
|
||||
{ task = "migrations run" },
|
||||
]
|
||||
run = [{ task = ":schema-drop" }, { task = "migrations run" }]
|
||||
|
||||
[tasks."email-dev"]
|
||||
env._.path = "./node_modules/.bin"
|
||||
@@ -78,5 +77,7 @@ run = [
|
||||
run = [
|
||||
{ task = ":ci-unit" },
|
||||
{ task = ":ci-medium" },
|
||||
{ task = ":migrations", args = ["verify-order"] },
|
||||
{ task = ":migrations", args = [
|
||||
"verify-order",
|
||||
] },
|
||||
]
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
"sourceRoot": "src",
|
||||
"compilerOptions": {
|
||||
"deleteOutDir": false,
|
||||
"webpack": false,
|
||||
"plugins": [
|
||||
{
|
||||
"name": "@nestjs/swagger",
|
||||
|
||||
+18
-17
@@ -5,13 +5,14 @@
|
||||
"author": "",
|
||||
"private": true,
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"type": "module",
|
||||
"files": [
|
||||
"bin",
|
||||
"dist",
|
||||
"helmet.json"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "nest build",
|
||||
"build": "nest build && tsc-alias",
|
||||
"format": "prettier --cache --check .",
|
||||
"format:fix": "prettier --cache --write --list-different .",
|
||||
"start": "pnpm run start:dev",
|
||||
@@ -41,14 +42,14 @@
|
||||
"@extism/extism": "2.0.0-rc13",
|
||||
"@immich/plugin-sdk": "workspace:*",
|
||||
"@immich/sql-tools": "^0.6.3",
|
||||
"@nestjs/bullmq": "^11.0.1",
|
||||
"@nestjs/common": "^11.0.4",
|
||||
"@nestjs/core": "^11.0.4",
|
||||
"@nestjs/platform-express": "^11.0.4",
|
||||
"@nestjs/platform-socket.io": "^11.0.4",
|
||||
"@nestjs/schedule": "^6.0.0",
|
||||
"@nestjs/swagger": "^11.4.2",
|
||||
"@nestjs/websockets": "^11.0.4",
|
||||
"@nestjs/bullmq": "^12.0.0",
|
||||
"@nestjs/common": "^12.0.0",
|
||||
"@nestjs/core": "^12.0.0",
|
||||
"@nestjs/platform-express": "^12.0.0",
|
||||
"@nestjs/platform-socket.io": "^12.0.0",
|
||||
"@nestjs/schedule": "^12.0.1",
|
||||
"@nestjs/swagger": "^12.0.0",
|
||||
"@nestjs/websockets": "^12.0.0",
|
||||
"@opentelemetry/api": "^1.9.0",
|
||||
"@opentelemetry/context-async-hooks": "^2.0.0",
|
||||
"@opentelemetry/exporter-prometheus": "^0.222.0",
|
||||
@@ -86,9 +87,9 @@
|
||||
"jose": "^6.0.0",
|
||||
"js-yaml": "^5.0.0",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"kysely": "0.28.17",
|
||||
"kysely": "^0.29.5",
|
||||
"kysely-postgres-js": "^3.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"lodash-es": "^4.17.21",
|
||||
"luxon": "^3.4.2",
|
||||
"mnemonist": "^0.40.3",
|
||||
"multer": "^2.0.2",
|
||||
@@ -122,9 +123,9 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^10.0.0",
|
||||
"@nestjs/cli": "^11.0.2",
|
||||
"@nestjs/schematics": "^11.0.0",
|
||||
"@nestjs/testing": "^11.0.4",
|
||||
"@nestjs/cli": "^12.0.0",
|
||||
"@nestjs/schematics": "^12.0.0",
|
||||
"@nestjs/testing": "^12.0.0",
|
||||
"@swc/core": "^1.4.14",
|
||||
"@types/archiver": "^7.0.0",
|
||||
"@types/async-lock": "^1.4.2",
|
||||
@@ -136,7 +137,7 @@
|
||||
"@types/fluent-ffmpeg": "^2.1.21",
|
||||
"@types/js-yaml": "^4.0.9",
|
||||
"@types/jsonwebtoken": "^9.0.10",
|
||||
"@types/lodash": "^4.14.197",
|
||||
"@types/lodash-es": "^4.14.197",
|
||||
"@types/luxon": "^3.6.2",
|
||||
"@types/mock-fs": "^4.13.1",
|
||||
"@types/multer": "^2.0.0",
|
||||
@@ -164,11 +165,11 @@
|
||||
"supertest": "^7.1.0",
|
||||
"tailwindcss": "^3.4.0",
|
||||
"testcontainers": "^12.0.0",
|
||||
"tsc-alias": "^1.8.16",
|
||||
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
||||
"typescript-eslint": "^8.28.0",
|
||||
"unplugin-swc": "^1.4.5",
|
||||
"vite-tsconfig-paths": "^6.0.0",
|
||||
"vitest": "^3.0.0"
|
||||
"vitest": "^4.0.0"
|
||||
},
|
||||
"overrides": {
|
||||
"sharp": "^0.35.3"
|
||||
|
||||
@@ -5,14 +5,14 @@ import cookieParser from 'cookie-parser';
|
||||
import helmetMiddleware from 'helmet';
|
||||
import { existsSync } from 'node:fs';
|
||||
import sirv from 'sirv';
|
||||
import { IMMICH_SERVER_START, excludePaths, serverVersion } from 'src/constants';
|
||||
import { MaintenanceWorkerService } from 'src/maintenance/maintenance-worker.service';
|
||||
import { WebSocketAdapter } from 'src/middleware/websocket.adapter';
|
||||
import { ConfigRepository } from 'src/repositories/config.repository';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { bootstrapTelemetry } from 'src/repositories/telemetry.repository';
|
||||
import { ApiService } from 'src/services/api.service';
|
||||
import { useSwagger } from 'src/utils/misc';
|
||||
import { IMMICH_SERVER_START, excludePaths, serverVersion } from 'src/constants.js';
|
||||
import { MaintenanceWorkerService } from 'src/maintenance/maintenance-worker.service.js';
|
||||
import { WebSocketAdapter } from 'src/middleware/websocket.adapter.js';
|
||||
import { ConfigRepository } from 'src/repositories/config.repository.js';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository.js';
|
||||
import { bootstrapTelemetry } from 'src/repositories/telemetry.repository.js';
|
||||
import { ApiService } from 'src/services/api.service.js';
|
||||
import { useSwagger } from 'src/utils/misc.js';
|
||||
|
||||
export function configureTelemetry() {
|
||||
const { telemetry } = new ConfigRepository().getEnv();
|
||||
|
||||
+33
-33
@@ -6,39 +6,39 @@ import { ClsModule } from 'nestjs-cls';
|
||||
import { KyselyModule } from 'nestjs-kysely';
|
||||
import { OpenTelemetryModule } from 'nestjs-otel';
|
||||
import { ZodSerializerInterceptor, ZodValidationPipe } from 'nestjs-zod';
|
||||
import { commandsAndQuestions } from 'src/commands';
|
||||
import { IWorker } from 'src/constants';
|
||||
import { controllers } from 'src/controllers';
|
||||
import { ImmichWorker } from 'src/enum';
|
||||
import { MaintenanceAuthGuard } from 'src/maintenance/maintenance-auth.guard';
|
||||
import { MaintenanceHealthRepository } from 'src/maintenance/maintenance-health.repository';
|
||||
import { MaintenanceWebsocketRepository } from 'src/maintenance/maintenance-websocket.repository';
|
||||
import { MaintenanceWorkerController } from 'src/maintenance/maintenance-worker.controller';
|
||||
import { MaintenanceWorkerService } from 'src/maintenance/maintenance-worker.service';
|
||||
import { AuthGuard } from 'src/middleware/auth.guard';
|
||||
import { ErrorInterceptor } from 'src/middleware/error.interceptor';
|
||||
import { FileUploadInterceptor } from 'src/middleware/file-upload.interceptor';
|
||||
import { GlobalExceptionFilter } from 'src/middleware/global-exception.filter';
|
||||
import { LoggingInterceptor } from 'src/middleware/logging.interceptor';
|
||||
import { repositories } from 'src/repositories';
|
||||
import { AppRepository } from 'src/repositories/app.repository';
|
||||
import { ConfigRepository } from 'src/repositories/config.repository';
|
||||
import { DatabaseRepository } from 'src/repositories/database.repository';
|
||||
import { EventRepository } from 'src/repositories/event.repository';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { ProcessRepository } from 'src/repositories/process.repository';
|
||||
import { StorageRepository } from 'src/repositories/storage.repository';
|
||||
import { SystemMetadataRepository } from 'src/repositories/system-metadata.repository';
|
||||
import { teardownTelemetry, TelemetryRepository } from 'src/repositories/telemetry.repository';
|
||||
import { UserRepository } from 'src/repositories/user.repository';
|
||||
import { WebsocketRepository } from 'src/repositories/websocket.repository';
|
||||
import { services } from 'src/services';
|
||||
import { AuthService } from 'src/services/auth.service';
|
||||
import { CliService } from 'src/services/cli.service';
|
||||
import { DatabaseBackupService } from 'src/services/database-backup.service';
|
||||
import { QueueService } from 'src/services/queue.service';
|
||||
import { getKyselyConfig } from 'src/utils/database';
|
||||
import { configureUserAgent } from 'src/utils/fetch';
|
||||
import { commandsAndQuestions } from 'src/commands/index.js';
|
||||
import { IWorker } from 'src/constants.js';
|
||||
import { controllers } from 'src/controllers/index.js';
|
||||
import { ImmichWorker } from 'src/enum.js';
|
||||
import { MaintenanceAuthGuard } from 'src/maintenance/maintenance-auth.guard.js';
|
||||
import { MaintenanceHealthRepository } from 'src/maintenance/maintenance-health.repository.js';
|
||||
import { MaintenanceWebsocketRepository } from 'src/maintenance/maintenance-websocket.repository.js';
|
||||
import { MaintenanceWorkerController } from 'src/maintenance/maintenance-worker.controller.js';
|
||||
import { MaintenanceWorkerService } from 'src/maintenance/maintenance-worker.service.js';
|
||||
import { AuthGuard } from 'src/middleware/auth.guard.js';
|
||||
import { ErrorInterceptor } from 'src/middleware/error.interceptor.js';
|
||||
import { FileUploadInterceptor } from 'src/middleware/file-upload.interceptor.js';
|
||||
import { GlobalExceptionFilter } from 'src/middleware/global-exception.filter.js';
|
||||
import { LoggingInterceptor } from 'src/middleware/logging.interceptor.js';
|
||||
import { AppRepository } from 'src/repositories/app.repository.js';
|
||||
import { ConfigRepository } from 'src/repositories/config.repository.js';
|
||||
import { DatabaseRepository } from 'src/repositories/database.repository.js';
|
||||
import { EventRepository } from 'src/repositories/event.repository.js';
|
||||
import { repositories } from 'src/repositories/index.js';
|
||||
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 { UserRepository } from 'src/repositories/user.repository.js';
|
||||
import { WebsocketRepository } from 'src/repositories/websocket.repository.js';
|
||||
import { AuthService } from 'src/services/auth.service.js';
|
||||
import { CliService } from 'src/services/cli.service.js';
|
||||
import { DatabaseBackupService } from 'src/services/database-backup.service.js';
|
||||
import { services } from 'src/services/index.js';
|
||||
import { QueueService } from 'src/services/queue.service.js';
|
||||
import { getKyselyConfig } from 'src/utils/database.js';
|
||||
import { configureUserAgent } from 'src/utils/fetch.js';
|
||||
|
||||
const common = [...repositories, ...services, GlobalExceptionFilter];
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
process.env.DB_URL = 'postgres://postgres:postgres@localhost:5432/immich';
|
||||
import { NestFactory } from '@nestjs/core';
|
||||
import { NestExpressApplication } from '@nestjs/platform-express';
|
||||
import { ApiModule } from 'src/app.module';
|
||||
import { useSwagger } from 'src/utils/misc';
|
||||
import { ApiModule } from 'src/app.module.js';
|
||||
import { useSwagger } from 'src/utils/misc.js';
|
||||
|
||||
const sync = async () => {
|
||||
const app = await NestFactory.create<NestExpressApplication>(ApiModule, { preview: true });
|
||||
|
||||
@@ -9,15 +9,15 @@ import { OpenTelemetryModule } from 'nestjs-otel';
|
||||
import { mkdir, rm, writeFile } from 'node:fs/promises';
|
||||
import { join } from 'node:path';
|
||||
import { format } from 'sql-formatter';
|
||||
import { GENERATE_SQL_KEY, GenerateSqlQueries } from 'src/decorators';
|
||||
import { repositories } from 'src/repositories';
|
||||
import { AccessRepository } from 'src/repositories/access.repository';
|
||||
import { ConfigRepository } from 'src/repositories/config.repository';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { MachineLearningRepository } from 'src/repositories/machine-learning.repository';
|
||||
import { SyncRepository } from 'src/repositories/sync.repository';
|
||||
import { AuthService } from 'src/services/auth.service';
|
||||
import { getKyselyConfig } from 'src/utils/database';
|
||||
import { GENERATE_SQL_KEY, GenerateSqlQueries } from 'src/decorators.js';
|
||||
import { AccessRepository } from 'src/repositories/access.repository.js';
|
||||
import { ConfigRepository } from 'src/repositories/config.repository.js';
|
||||
import { repositories } from 'src/repositories/index.js';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository.js';
|
||||
import { MachineLearningRepository } from 'src/repositories/machine-learning.repository.js';
|
||||
import { SyncRepository } from 'src/repositories/sync.repository.js';
|
||||
import { AuthService } from 'src/services/auth.service.js';
|
||||
import { getKyselyConfig } from 'src/utils/database.js';
|
||||
|
||||
const handleError = (label: string, error: Error | any) => {
|
||||
console.error(`${label} error: ${error}`);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Command, CommandRunner, InquirerService, Question, QuestionSet } from 'nest-commander';
|
||||
import { CliService } from 'src/services/cli.service';
|
||||
import { CliService } from 'src/services/cli.service.js';
|
||||
|
||||
const prompt = (inquirer: InquirerService) => {
|
||||
return function ask(): Promise<string> {
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import { GrantAdminCommand, PromptEmailQuestion, RevokeAdminCommand } from 'src/commands/grant-admin';
|
||||
import { ListUsersCommand } from 'src/commands/list-users.command';
|
||||
import { DisableMaintenanceModeCommand, EnableMaintenanceModeCommand } from 'src/commands/maintenance-mode';
|
||||
import { GrantAdminCommand, PromptEmailQuestion, RevokeAdminCommand } from 'src/commands/grant-admin.js';
|
||||
import { ListUsersCommand } from 'src/commands/list-users.command.js';
|
||||
import { DisableMaintenanceModeCommand, EnableMaintenanceModeCommand } from 'src/commands/maintenance-mode.js';
|
||||
import {
|
||||
ChangeMediaLocationCommand,
|
||||
PromptConfirmMoveQuestions,
|
||||
PromptMediaLocationQuestions,
|
||||
} from 'src/commands/media-location.command';
|
||||
import { DisableOAuthLogin, EnableOAuthLogin } from 'src/commands/oauth-login';
|
||||
import { DisablePasswordLoginCommand, EnablePasswordLoginCommand } from 'src/commands/password-login';
|
||||
import { PromptPasswordResetQuestions, ResetAdminPasswordCommand } from 'src/commands/reset-admin-password.command';
|
||||
import { SchemaCheck } from 'src/commands/schema-check';
|
||||
import { VersionCommand } from 'src/commands/version.command';
|
||||
} from 'src/commands/media-location.command.js';
|
||||
import { DisableOAuthLogin, EnableOAuthLogin } from 'src/commands/oauth-login.js';
|
||||
import { DisablePasswordLoginCommand, EnablePasswordLoginCommand } from 'src/commands/password-login.js';
|
||||
import { PromptPasswordResetQuestions, ResetAdminPasswordCommand } from 'src/commands/reset-admin-password.command.js';
|
||||
import { SchemaCheck } from 'src/commands/schema-check.js';
|
||||
import { VersionCommand } from 'src/commands/version.command.js';
|
||||
|
||||
export const commandsAndQuestions = [
|
||||
ResetAdminPasswordCommand,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Command, CommandRunner } from 'nest-commander';
|
||||
import { CliService } from 'src/services/cli.service';
|
||||
import { CliService } from 'src/services/cli.service.js';
|
||||
|
||||
@Command({
|
||||
name: 'list-users',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Command, CommandRunner } from 'nest-commander';
|
||||
import { CliService } from 'src/services/cli.service';
|
||||
import { CliService } from 'src/services/cli.service.js';
|
||||
|
||||
@Command({
|
||||
name: 'enable-maintenance-mode',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Command, CommandRunner, InquirerService, Question, QuestionSet } from 'nest-commander';
|
||||
import { CliService } from 'src/services/cli.service';
|
||||
import { CliService } from 'src/services/cli.service.js';
|
||||
|
||||
@Command({
|
||||
name: 'change-media-location',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Command, CommandRunner } from 'nest-commander';
|
||||
import { CliService } from 'src/services/cli.service';
|
||||
import { CliService } from 'src/services/cli.service.js';
|
||||
|
||||
@Command({
|
||||
name: 'enable-oauth-login',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Command, CommandRunner } from 'nest-commander';
|
||||
import { CliService } from 'src/services/cli.service';
|
||||
import { CliService } from 'src/services/cli.service.js';
|
||||
|
||||
@Command({
|
||||
name: 'enable-password-login',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Command, CommandRunner, InquirerService, Question, QuestionSet } from 'nest-commander';
|
||||
import { UserAdminResponseDto } from 'src/dtos/user.dto';
|
||||
import { CliService } from 'src/services/cli.service';
|
||||
import { UserAdminResponseDto } from 'src/dtos/user.dto.js';
|
||||
import { CliService } from 'src/services/cli.service.js';
|
||||
|
||||
const prompt = (inquirer: InquirerService) => {
|
||||
return (admin: UserAdminResponseDto) => {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { asHuman } from '@immich/sql-tools';
|
||||
import { Command, CommandRunner } from 'nest-commander';
|
||||
import { ErrorMessages } from 'src/constants';
|
||||
import { CliService } from 'src/services/cli.service';
|
||||
import { ErrorMessages } from 'src/constants.js';
|
||||
import { CliService } from 'src/services/cli.service.js';
|
||||
|
||||
@Command({
|
||||
name: 'schema-check',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Command, CommandRunner } from 'nest-commander';
|
||||
import { VersionService } from 'src/services/version.service';
|
||||
import { VersionService } from 'src/services/version.service.js';
|
||||
|
||||
@Command({
|
||||
name: 'version',
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
TranscodeHardwareAcceleration,
|
||||
VectorIndex,
|
||||
VideoCodec,
|
||||
} from 'src/enum';
|
||||
} from 'src/enum.js';
|
||||
|
||||
export const IMMICH_SERVER_START = 'Immich Server is listening';
|
||||
|
||||
@@ -49,8 +49,7 @@ export const LOGIN_DUMMY_HASH = '$2b$10$abcdefghijklmnopqrstuuABCDEFGHIJKLMNOPQR
|
||||
|
||||
export const IWorker = 'IWorker';
|
||||
|
||||
// eslint-disable-next-line unicorn/prefer-module
|
||||
const basePath = dirname(__filename);
|
||||
const basePath = dirname(import.meta.filename);
|
||||
const packageFile = join(basePath, '..', 'package.json');
|
||||
const { version } = JSON.parse(readFileSync(packageFile, 'utf8'));
|
||||
export const serverVersion = new SemVer(version);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { ActivityController } from 'src/controllers/activity.controller';
|
||||
import { ActivityService } from 'src/services/activity.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(ActivityController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Post, Query, Res } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import type { Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import {
|
||||
ActivityCreateDto,
|
||||
ActivityDto,
|
||||
ActivityResponseDto,
|
||||
ActivitySearchDto,
|
||||
ActivityStatisticsResponseDto,
|
||||
} from 'src/dtos/activity.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { ActivityService } from 'src/services/activity.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} 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';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Activities)
|
||||
@Controller('activities')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { AlbumController } from 'src/controllers/album.controller';
|
||||
import { AlbumService } from 'src/services/album.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(AlbumController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Put, Query } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import {
|
||||
AddUsersDto,
|
||||
AlbumResponseDto,
|
||||
@@ -12,14 +12,14 @@ import {
|
||||
GetAlbumsDto,
|
||||
UpdateAlbumDto,
|
||||
UpdateAlbumUserDto,
|
||||
} from 'src/dtos/album.dto';
|
||||
import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { MapMarkerResponseDto } from 'src/dtos/map.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { AlbumService } from 'src/services/album.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} 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';
|
||||
import { AlbumService } from 'src/services/album.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Albums)
|
||||
@Controller('albums')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { ApiKeyController } from 'src/controllers/api-key.controller';
|
||||
import { Permission } from 'src/enum';
|
||||
import { ApiKeyService } from 'src/services/api-key.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(ApiKeyController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
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';
|
||||
import { ApiKeyCreateDto, ApiKeyCreateResponseDto, ApiKeyResponseDto, ApiKeyUpdateDto } from 'src/dtos/api-key.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { ApiKeyService } from 'src/services/api-key.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
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';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.ApiKeys)
|
||||
@Controller('api-keys')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { AppController } from 'src/controllers/app.controller';
|
||||
import { SystemConfigService } from 'src/services/system-config.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(AppController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Controller, Get, Header } from '@nestjs/common';
|
||||
import { ApiExcludeEndpoint } from '@nestjs/swagger';
|
||||
import { Authenticated } from 'src/middleware/auth.guard';
|
||||
import { SystemConfigService } from 'src/services/system-config.service';
|
||||
import { Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { SystemConfigService } from 'src/services/system-config.service.js';
|
||||
|
||||
@Controller()
|
||||
export class AppController {
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
import { Controller, Delete, Get, HttpCode, HttpStatus, Next, Param, Query, Res } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { NextFunction, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AssetFileResponseDto, AssetFileSearchDto } from 'src/dtos/asset-file.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { AssetFileService } from 'src/services/asset-file.service';
|
||||
import { sendFile } from 'src/utils/file';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
import type { NextFunction, Response } from 'express';
|
||||
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';
|
||||
import { AssetFileService } from 'src/services/asset-file.service.js';
|
||||
import { sendFile } from 'src/utils/file.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.AssetFiles)
|
||||
@Controller('asset-files')
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { AssetMediaController } from 'src/controllers/asset-media.controller';
|
||||
import { AssetMediaStatus } from 'src/dtos/asset-media-response.dto';
|
||||
import { AssetMetadataKey } from 'src/enum';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { AssetMediaService } from 'src/services/asset-media.service';
|
||||
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';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
const makeUploadDto = (options?: { omit: string }): Record<string, any> => {
|
||||
const dto: Record<string, any> = {
|
||||
|
||||
@@ -15,30 +15,30 @@ import {
|
||||
UseInterceptors,
|
||||
} from '@nestjs/common';
|
||||
import { ApiBody, ApiConsumes, ApiHeader, ApiResponse, ApiTags } from '@nestjs/swagger';
|
||||
import { NextFunction, Request, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { type NextFunction, type Request, type Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import {
|
||||
AssetBulkUploadCheckResponseDto,
|
||||
AssetMediaResponseDto,
|
||||
AssetMediaStatus,
|
||||
} from 'src/dtos/asset-media-response.dto';
|
||||
} from 'src/dtos/asset-media-response.dto.js';
|
||||
import {
|
||||
AssetBulkUploadCheckDto,
|
||||
AssetMediaCreateDto,
|
||||
AssetMediaOptionsDto,
|
||||
AssetMediaSize,
|
||||
} from 'src/dtos/asset-media.dto';
|
||||
import { AssetDownloadOriginalDto } from 'src/dtos/asset.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { ApiTag, ImmichHeader, Permission, RouteKey } from 'src/enum';
|
||||
import { AssetUploadInterceptor } from 'src/middleware/asset-upload.interceptor';
|
||||
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard';
|
||||
import { FileUploadInterceptor, getFiles } from 'src/middleware/file-upload.interceptor';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { AssetMediaService } from 'src/services/asset-media.service';
|
||||
import { UploadFiles } from 'src/types';
|
||||
import { ImmichFileResponse, sendFile } from 'src/utils/file';
|
||||
import { FileNotEmptyValidator, UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/asset-media.dto.js';
|
||||
import { AssetDownloadOriginalDto } from 'src/dtos/asset.dto.js';
|
||||
import { type AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import { ApiTag, ImmichHeader, Permission, RouteKey } from 'src/enum.js';
|
||||
import { AssetUploadInterceptor } from 'src/middleware/asset-upload.interceptor.js';
|
||||
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';
|
||||
|
||||
@ApiTags(ApiTag.Assets)
|
||||
@Controller(RouteKey.Asset)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { AssetController } from 'src/controllers/asset.controller';
|
||||
import { AssetMetadataKey } from 'src/enum';
|
||||
import { AssetService } from 'src/services/asset.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(AssetController.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';
|
||||
import { AssetResponseDto } from 'src/dtos/asset-response.dto';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import { AssetResponseDto } from 'src/dtos/asset-response.dto.js';
|
||||
import {
|
||||
AssetBulkDeleteDto,
|
||||
AssetBulkUpdateDto,
|
||||
@@ -16,14 +16,14 @@ import {
|
||||
AssetStatsDto,
|
||||
AssetStatsResponseDto,
|
||||
UpdateAssetDto,
|
||||
} from 'src/dtos/asset.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { AssetEditsCreateDto, AssetEditsResponseDto } from 'src/dtos/editing.dto';
|
||||
import { AssetOcrResponseDto } from 'src/dtos/ocr.dto';
|
||||
import { ApiTag, Permission, RouteKey } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { AssetService } from 'src/services/asset.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} 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';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { AssetService } from 'src/services/asset.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Assets)
|
||||
@Controller(RouteKey.Asset)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Controller, HttpCode, HttpStatus, Post } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { AuthAdminService } from 'src/services/auth-admin.service';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.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 { AuthAdminService } from 'src/services/auth-admin.service.js';
|
||||
|
||||
@ApiTags(ApiTag.AuthenticationAdmin)
|
||||
@Controller('admin/auth')
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { BadRequestException } from '@nestjs/common';
|
||||
import { AuthController } from 'src/controllers/auth.controller';
|
||||
import { LoginResponseDto } from 'src/dtos/auth.dto';
|
||||
import { AuthService } from 'src/services/auth.service';
|
||||
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';
|
||||
import { errorDto } from 'test/medium/responses';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { mediumFactory } from 'test/medium.factory.js';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(AuthController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Post, Put, Req, Res } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Request, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import type { Request, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import {
|
||||
AuthDto,
|
||||
type AuthDto,
|
||||
AuthStatusResponseDto,
|
||||
ChangePasswordDto,
|
||||
LoginCredentialDto,
|
||||
@@ -15,12 +15,12 @@ import {
|
||||
SessionUnlockDto,
|
||||
SignUpDto,
|
||||
ValidateAccessTokenResponseDto,
|
||||
} from 'src/dtos/auth.dto';
|
||||
import { UserAdminResponseDto } from 'src/dtos/user.dto';
|
||||
import { ApiTag, AuthType, ImmichCookie, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard';
|
||||
import { AuthService, LoginDetails } from 'src/services/auth.service';
|
||||
import { respondWithCookie, respondWithoutCookie } from 'src/utils/response';
|
||||
} from 'src/dtos/auth.dto.js';
|
||||
import { UserAdminResponseDto } from 'src/dtos/user.dto.js';
|
||||
import { ApiTag, AuthType, ImmichCookie, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard.js';
|
||||
import { AuthService, type LoginDetails } from 'src/services/auth.service.js';
|
||||
import { respondWithCookie, respondWithoutCookie } from 'src/utils/response.js';
|
||||
|
||||
@ApiTags(ApiTag.Authentication)
|
||||
@Controller('auth')
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Post, Put, Res } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { ClusterGroupRequestCreateDto, ClusterGroupRequestResponseDto } from 'src/dtos/cluster-group.dto';
|
||||
import { UserResponseDto } from 'src/dtos/user.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { ClusterGroupService } from 'src/services/cluster-group.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
import type { Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.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';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { ClusterGroupService } from 'src/services/cluster-group.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.ClusterGroups)
|
||||
@Controller('cluster-groups')
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Body, Controller, Get, Put } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AdminConfigDto } from 'src/dtos/config.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Authenticated } from 'src/middleware/auth.guard';
|
||||
import { SystemConfigService } from 'src/services/system-config.service';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import { AdminConfigDto } from 'src/dtos/config.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { SystemConfigService } from 'src/services/system-config.service.js';
|
||||
|
||||
@ApiTags(ApiTag.ConfigAdmin)
|
||||
@Controller('admin/config')
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Controller, Get } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { PublicConfigDto } from 'src/dtos/config.dto';
|
||||
import { ApiTag } from 'src/enum';
|
||||
import { Authenticated } from 'src/middleware/auth.guard';
|
||||
import { SystemConfigService } from 'src/services/system-config.service';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import { PublicConfigDto } from 'src/dtos/config.dto.js';
|
||||
import { ApiTag } from 'src/enum.js';
|
||||
import { Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { SystemConfigService } from 'src/services/system-config.service.js';
|
||||
|
||||
@ApiTags(ApiTag.ConfigPublic)
|
||||
@Controller('public/config')
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Controller, Get } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { UserConfigDto } from 'src/dtos/config.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Authenticated } from 'src/middleware/auth.guard';
|
||||
import { SystemConfigService } from 'src/services/system-config.service';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import { UserConfigDto } from 'src/dtos/config.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { SystemConfigService } from 'src/services/system-config.service.js';
|
||||
|
||||
@ApiTags(ApiTag.ConfigUser)
|
||||
@Controller('config')
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import _ from 'lodash';
|
||||
import { ConfigAdminController } from 'src/controllers/config-admin.controller';
|
||||
import { ConfigPublicController } from 'src/controllers/config-public.controller';
|
||||
import { ConfigUserController } from 'src/controllers/config-user.controller';
|
||||
import { defaults, mapPublicConfig, mapUserConfig } from 'src/dtos/config.dto';
|
||||
import { SystemConfigService } from 'src/services/system-config.service';
|
||||
import { cloneDeep } from 'lodash-es';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
/** Returns a full config that passes Zod validation (required URLs and min lengths). */
|
||||
function validConfig() {
|
||||
const config = _.cloneDeep(defaults) as typeof defaults & {
|
||||
const config = cloneDeep(defaults) as typeof defaults & {
|
||||
oauth: { mobileRedirectUri: string };
|
||||
notifications: { smtp: { from: string; transport: { host: string } } };
|
||||
server: { externalDomain: string };
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { BadRequestException } from '@nestjs/common';
|
||||
import { DatabaseBackupController } from 'src/controllers/database-backup.controller';
|
||||
import { DatabaseBackupService } from 'src/services/database-backup.service';
|
||||
import { MaintenanceService } from 'src/services/maintenance.service';
|
||||
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';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(DatabaseBackupController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
import { Body, Controller, Delete, Get, Next, Param, Post, Res, UploadedFile, UseInterceptors } from '@nestjs/common';
|
||||
import { FileInterceptor } from '@nestjs/platform-express';
|
||||
import { ApiBody, ApiConsumes, ApiTags } from '@nestjs/swagger';
|
||||
import { NextFunction, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import type { NextFunction, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import {
|
||||
DatabaseBackupDeleteDto,
|
||||
DatabaseBackupListResponseDto,
|
||||
DatabaseBackupUploadDto,
|
||||
} from 'src/dtos/database-backup.dto';
|
||||
import { ApiTag, ImmichCookie, Permission } from 'src/enum';
|
||||
import { Authenticated, FileResponse, GetLoginDetails } from 'src/middleware/auth.guard';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { LoginDetails } from 'src/services/auth.service';
|
||||
import { DatabaseBackupService } from 'src/services/database-backup.service';
|
||||
import { MaintenanceService } from 'src/services/maintenance.service';
|
||||
import { sendFile } from 'src/utils/file';
|
||||
import { respondWithCookie } from 'src/utils/response';
|
||||
import { FilenameParamDto } from 'src/validation';
|
||||
} from 'src/dtos/database-backup.dto.js';
|
||||
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';
|
||||
import { respondWithCookie } from 'src/utils/response.js';
|
||||
import { FilenameParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.DatabaseBackups)
|
||||
@Controller('admin/database-backups')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { Readable } from 'node:stream';
|
||||
import { DownloadController } from 'src/controllers/download.controller';
|
||||
import { DownloadService } from 'src/services/download.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(DownloadController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { Body, Controller, HttpCode, HttpStatus, Post, StreamableFile } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { DownloadArchiveDto, DownloadInfoDto, DownloadResponseDto } from 'src/dtos/download.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard';
|
||||
import { DownloadService } from 'src/services/download.service';
|
||||
import { asStreamableFile } from 'src/utils/file';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.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';
|
||||
import { DownloadService } from 'src/services/download.service.js';
|
||||
import { asStreamableFile } from 'src/utils/file.js';
|
||||
|
||||
@ApiTags(ApiTag.Download)
|
||||
@Controller('download')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { DuplicateController } from 'src/controllers/duplicate.controller';
|
||||
import { DuplicateService } from 'src/services/duplicate.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(DuplicateController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Post } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { DuplicateResolveDto, DuplicateResponseDto } from 'src/dtos/duplicate.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { DuplicateService } from 'src/services/duplicate.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
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';
|
||||
import { DuplicateService } from 'src/services/duplicate.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Duplicates)
|
||||
@Controller('duplicates')
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
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';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import {
|
||||
AssetFaceCreateDto,
|
||||
AssetFaceDeleteDto,
|
||||
AssetFaceResponseDto,
|
||||
FaceDto,
|
||||
PersonResponseDto,
|
||||
} from 'src/dtos/person.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { PersonService } from 'src/services/person.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/person.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { PersonService } from 'src/services/person.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Faces)
|
||||
@Controller('faces')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { RequestMethod } from '@nestjs/common';
|
||||
import { METHOD_METADATA, PATH_METADATA } from '@nestjs/common/constants';
|
||||
import { Reflector } from '@nestjs/core';
|
||||
import { controllers } from 'src/controllers';
|
||||
import { AuthenticatedOptions, getAuthenticatedOptions } from 'src/middleware/auth.guard';
|
||||
import { controllers } from 'src/controllers/index.js';
|
||||
import { AuthenticatedOptions, getAuthenticatedOptions } from 'src/middleware/auth.guard.js';
|
||||
|
||||
const UNAUTHENTICATED_ADMIN_ROUTES = new Set([
|
||||
'GET admin/maintenance/status',
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
import { ActivityController } from 'src/controllers/activity.controller';
|
||||
import { AlbumController } from 'src/controllers/album.controller';
|
||||
import { ApiKeyController } from 'src/controllers/api-key.controller';
|
||||
import { AppController } from 'src/controllers/app.controller';
|
||||
import { AssetFilesController } from 'src/controllers/asset-file.controller';
|
||||
import { AssetMediaController } from 'src/controllers/asset-media.controller';
|
||||
import { AssetController } from 'src/controllers/asset.controller';
|
||||
import { AuthAdminController } from 'src/controllers/auth-admin.controller';
|
||||
import { AuthController } from 'src/controllers/auth.controller';
|
||||
import { ClusterGroupController } from 'src/controllers/cluster-group.controller';
|
||||
import { ConfigAdminController } from 'src/controllers/config-admin.controller';
|
||||
import { ConfigPublicController } from 'src/controllers/config-public.controller';
|
||||
import { ConfigUserController } from 'src/controllers/config-user.controller';
|
||||
import { DatabaseBackupController } from 'src/controllers/database-backup.controller';
|
||||
import { DownloadController } from 'src/controllers/download.controller';
|
||||
import { DuplicateController } from 'src/controllers/duplicate.controller';
|
||||
import { FaceController } from 'src/controllers/face.controller';
|
||||
import { IntegrityAdminController } from 'src/controllers/integrity-admin.controller';
|
||||
import { JobController } from 'src/controllers/job.controller';
|
||||
import { LibraryController } from 'src/controllers/library.controller';
|
||||
import { MaintenanceController } from 'src/controllers/maintenance.controller';
|
||||
import { MapController } from 'src/controllers/map.controller';
|
||||
import { MemoryController } from 'src/controllers/memory.controller';
|
||||
import { NotificationAdminController } from 'src/controllers/notification-admin.controller';
|
||||
import { NotificationController } from 'src/controllers/notification.controller';
|
||||
import { OAuthController } from 'src/controllers/oauth.controller';
|
||||
import { PartnerController } from 'src/controllers/partner.controller';
|
||||
import { PersonController } from 'src/controllers/person.controller';
|
||||
import { PluginController } from 'src/controllers/plugin.controller';
|
||||
import { QueueController } from 'src/controllers/queue.controller';
|
||||
import { SearchController } from 'src/controllers/search.controller';
|
||||
import { ServerController } from 'src/controllers/server.controller';
|
||||
import { SessionController } from 'src/controllers/session.controller';
|
||||
import { SharedLinkController } from 'src/controllers/shared-link.controller';
|
||||
import { StackController } from 'src/controllers/stack.controller';
|
||||
import { SyncController } from 'src/controllers/sync.controller';
|
||||
import { SystemConfigController } from 'src/controllers/system-config.controller';
|
||||
import { SystemMetadataController } from 'src/controllers/system-metadata.controller';
|
||||
import { TagController } from 'src/controllers/tag.controller';
|
||||
import { TimelineController } from 'src/controllers/timeline.controller';
|
||||
import { TrashController } from 'src/controllers/trash.controller';
|
||||
import { UserAdminController } from 'src/controllers/user-admin.controller';
|
||||
import { UserController } from 'src/controllers/user.controller';
|
||||
import { VideoStreamController } from 'src/controllers/video-stream.controller';
|
||||
import { ViewController } from 'src/controllers/view.controller';
|
||||
import { WorkflowController } from 'src/controllers/workflow.controller';
|
||||
import { ActivityController } from 'src/controllers/activity.controller.js';
|
||||
import { AlbumController } from 'src/controllers/album.controller.js';
|
||||
import { ApiKeyController } from 'src/controllers/api-key.controller.js';
|
||||
import { AppController } from 'src/controllers/app.controller.js';
|
||||
import { AssetFilesController } from 'src/controllers/asset-file.controller.js';
|
||||
import { AssetMediaController } from 'src/controllers/asset-media.controller.js';
|
||||
import { AssetController } from 'src/controllers/asset.controller.js';
|
||||
import { AuthAdminController } from 'src/controllers/auth-admin.controller.js';
|
||||
import { AuthController } from 'src/controllers/auth.controller.js';
|
||||
import { ClusterGroupController } from 'src/controllers/cluster-group.controller.js';
|
||||
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 { DatabaseBackupController } from 'src/controllers/database-backup.controller.js';
|
||||
import { DownloadController } from 'src/controllers/download.controller.js';
|
||||
import { DuplicateController } from 'src/controllers/duplicate.controller.js';
|
||||
import { FaceController } from 'src/controllers/face.controller.js';
|
||||
import { IntegrityAdminController } from 'src/controllers/integrity-admin.controller.js';
|
||||
import { JobController } from 'src/controllers/job.controller.js';
|
||||
import { LibraryController } from 'src/controllers/library.controller.js';
|
||||
import { MaintenanceController } from 'src/controllers/maintenance.controller.js';
|
||||
import { MapController } from 'src/controllers/map.controller.js';
|
||||
import { MemoryController } from 'src/controllers/memory.controller.js';
|
||||
import { NotificationAdminController } from 'src/controllers/notification-admin.controller.js';
|
||||
import { NotificationController } from 'src/controllers/notification.controller.js';
|
||||
import { OAuthController } from 'src/controllers/oauth.controller.js';
|
||||
import { PartnerController } from 'src/controllers/partner.controller.js';
|
||||
import { PersonController } from 'src/controllers/person.controller.js';
|
||||
import { PluginController } from 'src/controllers/plugin.controller.js';
|
||||
import { QueueController } from 'src/controllers/queue.controller.js';
|
||||
import { SearchController } from 'src/controllers/search.controller.js';
|
||||
import { ServerController } from 'src/controllers/server.controller.js';
|
||||
import { SessionController } from 'src/controllers/session.controller.js';
|
||||
import { SharedLinkController } from 'src/controllers/shared-link.controller.js';
|
||||
import { StackController } from 'src/controllers/stack.controller.js';
|
||||
import { SyncController } from 'src/controllers/sync.controller.js';
|
||||
import { SystemConfigController } from 'src/controllers/system-config.controller.js';
|
||||
import { SystemMetadataController } from 'src/controllers/system-metadata.controller.js';
|
||||
import { TagController } from 'src/controllers/tag.controller.js';
|
||||
import { TimelineController } from 'src/controllers/timeline.controller.js';
|
||||
import { TrashController } from 'src/controllers/trash.controller.js';
|
||||
import { UserAdminController } from 'src/controllers/user-admin.controller.js';
|
||||
import { UserController } from 'src/controllers/user.controller.js';
|
||||
import { VideoStreamController } from 'src/controllers/video-stream.controller.js';
|
||||
import { ViewController } from 'src/controllers/view.controller.js';
|
||||
import { WorkflowController } from 'src/controllers/workflow.controller.js';
|
||||
|
||||
export const controllers = [
|
||||
ApiKeyController,
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
import { Controller, Delete, Get, HttpCode, HttpStatus, Next, Param, Query, Res } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { NextFunction, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import type { NextFunction, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import {
|
||||
IntegrityGetReportDto,
|
||||
IntegrityReportResponseDto,
|
||||
IntegrityReportSummaryResponseDto,
|
||||
IntegrityReportTypeParamDto,
|
||||
} from 'src/dtos/integrity.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { IntegrityService } from 'src/services/integrity.service';
|
||||
import { sendFile } from 'src/utils/file';
|
||||
import { UUIDv7ParamDto } from 'src/validation';
|
||||
} from 'src/dtos/integrity.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';
|
||||
import { IntegrityService } from 'src/services/integrity.service.js';
|
||||
import { sendFile } from 'src/utils/file.js';
|
||||
import { UUIDv7ParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Maintenance)
|
||||
@Controller('admin/integrity')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { JobController } from 'src/controllers/job.controller';
|
||||
import { JobService } from 'src/services/job.service';
|
||||
import { QueueService } from 'src/services/queue.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(JobController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import { Body, Controller, Get, HttpCode, HttpStatus, Param, Post, Put } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { JobCreateDto } from 'src/dtos/job.dto';
|
||||
import { QueueResponseLegacyDto, QueuesResponseLegacyDto } from 'src/dtos/queue-legacy.dto';
|
||||
import { QueueCommandDto, QueueNameParamDto } from 'src/dtos/queue.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { JobService } from 'src/services/job.service';
|
||||
import { QueueService } from 'src/services/queue.service';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.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';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { JobService } from 'src/services/job.service.js';
|
||||
import { QueueService } from 'src/services/queue.service.js';
|
||||
|
||||
@ApiTags(ApiTag.Jobs)
|
||||
@Controller('jobs')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { LibraryController } from 'src/controllers/library.controller';
|
||||
import { LibraryService } from 'src/services/library.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(LibraryController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
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';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import {
|
||||
CreateLibraryDto,
|
||||
LibraryResponseDto,
|
||||
@@ -8,11 +8,11 @@ import {
|
||||
UpdateLibraryDto,
|
||||
ValidateLibraryDto,
|
||||
ValidateLibraryResponseDto,
|
||||
} from 'src/dtos/library.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Authenticated } from 'src/middleware/auth.guard';
|
||||
import { LibraryService } from 'src/services/library.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/library.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { LibraryService } from 'src/services/library.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Libraries)
|
||||
@Controller('libraries')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { MaintenanceController } from 'src/controllers/maintenance.controller';
|
||||
import { MaintenanceAction } from 'src/enum';
|
||||
import { MaintenanceService } from 'src/services/maintenance.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(MaintenanceController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
import { BadRequestException, Body, Controller, Get, Post, Res } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import type { Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import {
|
||||
MaintenanceAuthDto,
|
||||
MaintenanceDetectInstallResponseDto,
|
||||
MaintenanceLoginDto,
|
||||
MaintenanceStatusResponseDto,
|
||||
SetMaintenanceModeDto,
|
||||
} from 'src/dtos/maintenance.dto';
|
||||
import { ApiTag, ImmichCookie, MaintenanceAction, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard';
|
||||
import { LoginDetails } from 'src/services/auth.service';
|
||||
import { MaintenanceService } from 'src/services/maintenance.service';
|
||||
import { respondWithCookie } from 'src/utils/response';
|
||||
} 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';
|
||||
|
||||
@ApiTags(ApiTag.Maintenance)
|
||||
@Controller('admin/maintenance')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { MapController } from 'src/controllers/map.controller';
|
||||
import { MapService } from 'src/services/map.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(MapController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import { Controller, Get, HttpCode, HttpStatus, Query } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import {
|
||||
MapMarkerDto,
|
||||
MapMarkerResponseDto,
|
||||
MapReverseGeocodeDto,
|
||||
MapReverseGeocodeResponseDto,
|
||||
} from 'src/dtos/map.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { MapService } from 'src/services/map.service';
|
||||
} from 'src/dtos/map.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { MapService } from 'src/services/map.service.js';
|
||||
|
||||
@ApiTags(ApiTag.Map)
|
||||
@Controller('map')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { MemoryController } from 'src/controllers/memory.controller';
|
||||
import { MemoryService } from 'src/services/memory.service';
|
||||
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';
|
||||
import { factory } from 'test/small.factory';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(MemoryController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
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';
|
||||
import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
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,
|
||||
MemorySearchDto,
|
||||
MemoryStatisticsResponseDto,
|
||||
MemoryUpdateDto,
|
||||
} from 'src/dtos/memory.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { MemoryService } from 'src/services/memory.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/memory.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { MemoryService } from 'src/services/memory.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Memories)
|
||||
@Controller('memories')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { NotificationAdminController } from 'src/controllers/notification-admin.controller';
|
||||
import { NotificationAdminService } from 'src/services/notification-admin.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(NotificationAdminController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
import { Body, Controller, HttpCode, HttpStatus, Param, Post } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { SystemConfigSmtpDto } from 'src/dtos/config.dto';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import { SystemConfigSmtpDto } from 'src/dtos/config.dto.js';
|
||||
import {
|
||||
NotificationCreateDto,
|
||||
NotificationDto,
|
||||
TemplateDto,
|
||||
TemplateResponseDto,
|
||||
TestEmailResponseDto,
|
||||
} from 'src/dtos/notification.dto';
|
||||
import { ApiTag } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { EmailTemplate } from 'src/repositories/email.repository';
|
||||
import { NotificationAdminService } from 'src/services/notification-admin.service';
|
||||
} from 'src/dtos/notification.dto.js';
|
||||
import { ApiTag } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { EmailTemplate } from 'src/repositories/email.repository.js';
|
||||
import { NotificationAdminService } from 'src/services/notification-admin.service.js';
|
||||
|
||||
@ApiTags(ApiTag.NotificationsAdmin)
|
||||
@Controller('admin/notifications')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { NotificationController } from 'src/controllers/notification.controller';
|
||||
import { NotificationService } from 'src/services/notification.service';
|
||||
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';
|
||||
import { factory } from 'test/small.factory';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(NotificationController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Put, Query } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import {
|
||||
NotificationDeleteAllDto,
|
||||
NotificationDto,
|
||||
NotificationSearchDto,
|
||||
NotificationUpdateAllDto,
|
||||
NotificationUpdateDto,
|
||||
} from 'src/dtos/notification.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { NotificationService } from 'src/services/notification.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/notification.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { NotificationService } from 'src/services/notification.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Notifications)
|
||||
@Controller('notifications')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { OAuthController } from 'src/controllers/oauth.controller';
|
||||
import { AuthService } from 'src/services/auth.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(OAuthController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
import { Body, Controller, Get, HttpCode, HttpStatus, Post, Redirect, Req, Res } from '@nestjs/common';
|
||||
import { ApiConsumes, ApiTags } from '@nestjs/swagger';
|
||||
import { Request, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import type { Request, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import {
|
||||
AuthDto,
|
||||
type AuthDto,
|
||||
LoginResponseDto,
|
||||
OAuthAuthorizeResponseDto,
|
||||
OAuthBackchannelLogoutDto,
|
||||
OAuthCallbackDto,
|
||||
OAuthConfigDto,
|
||||
} from 'src/dtos/auth.dto';
|
||||
import { UserAdminResponseDto } from 'src/dtos/user.dto';
|
||||
import { ApiTag, AuthType, ImmichCookie } from 'src/enum';
|
||||
import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard';
|
||||
import { AuthService, LoginDetails } from 'src/services/auth.service';
|
||||
import { respondWithCookie } from 'src/utils/response';
|
||||
} from 'src/dtos/auth.dto.js';
|
||||
import { UserAdminResponseDto } from 'src/dtos/user.dto.js';
|
||||
import { ApiTag, AuthType, ImmichCookie } from 'src/enum.js';
|
||||
import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard.js';
|
||||
import { AuthService, type LoginDetails } from 'src/services/auth.service.js';
|
||||
import { respondWithCookie } from 'src/utils/response.js';
|
||||
|
||||
@ApiTags(ApiTag.Authentication)
|
||||
@Controller('oauth')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { PartnerController } from 'src/controllers/partner.controller';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { PartnerService } from 'src/services/partner.service';
|
||||
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';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(PartnerController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
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';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { PartnerCreateDto, PartnerResponseDto, PartnerSearchDto, PartnerUpdateDto } from 'src/dtos/partner.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { PartnerService } from 'src/services/partner.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.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';
|
||||
import { PartnerService } from 'src/services/partner.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Partners)
|
||||
@Controller('partners')
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { PersonController } from 'src/controllers/person.controller';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { PersonService } from 'src/services/person.service';
|
||||
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';
|
||||
import { factory } from 'test/small.factory';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(PersonController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -14,10 +14,10 @@ import {
|
||||
Res,
|
||||
} from '@nestjs/common';
|
||||
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
|
||||
import { NextFunction, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import type { NextFunction, Response } from 'express';
|
||||
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,
|
||||
@@ -28,13 +28,13 @@ import {
|
||||
PersonSearchDto,
|
||||
PersonStatisticsResponseDto,
|
||||
PersonUpdateDto,
|
||||
} from 'src/dtos/person.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { PersonService } from 'src/services/person.service';
|
||||
import { sendFile } from 'src/utils/file';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/person.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';
|
||||
import { PersonService } from 'src/services/person.service.js';
|
||||
import { sendFile } from 'src/utils/file.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.People)
|
||||
@Controller('people')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { PluginController } from 'src/controllers/plugin.controller';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { PluginService } from 'src/services/plugin.service';
|
||||
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';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(PluginController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
import { Controller, Get, Param, Query } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import {
|
||||
PluginMethodResponseDto,
|
||||
PluginMethodSearchDto,
|
||||
PluginResponseDto,
|
||||
PluginSearchDto,
|
||||
PluginTemplateResponseDto,
|
||||
} from 'src/dtos/plugin.dto';
|
||||
import { Permission } from 'src/enum';
|
||||
import { Authenticated } from 'src/middleware/auth.guard';
|
||||
import { PluginService } from 'src/services/plugin.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/plugin.dto.js';
|
||||
import { Permission } from 'src/enum.js';
|
||||
import { Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { PluginService } from 'src/services/plugin.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags('Plugins')
|
||||
@Controller('plugins')
|
||||
|
||||
@@ -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';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import {
|
||||
QueueDeleteDto,
|
||||
QueueJobResponseDto,
|
||||
@@ -9,10 +9,10 @@ import {
|
||||
QueueNameParamDto,
|
||||
QueueResponseDto,
|
||||
QueueUpdateDto,
|
||||
} from 'src/dtos/queue.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { QueueService } from 'src/services/queue.service';
|
||||
} from 'src/dtos/queue.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { QueueService } from 'src/services/queue.service.js';
|
||||
|
||||
@ApiTags(ApiTag.Queues)
|
||||
@Controller('queues')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { SearchController } from 'src/controllers/search.controller';
|
||||
import { SearchService } from 'src/services/search.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(SearchController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { Body, Controller, Get, HttpCode, HttpStatus, Post, Query } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AssetResponseDto } from 'src/dtos/asset-response.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { PersonResponseDto } from 'src/dtos/person.dto';
|
||||
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,
|
||||
MetadataSearchDto,
|
||||
@@ -17,10 +17,10 @@ import {
|
||||
SearchSuggestionRequestDto,
|
||||
SmartSearchDto,
|
||||
StatisticsSearchDto,
|
||||
} from 'src/dtos/search.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { SearchService } from 'src/services/search.service';
|
||||
} from 'src/dtos/search.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { SearchService } from 'src/services/search.service.js';
|
||||
|
||||
@ApiTags(ApiTag.Search)
|
||||
@Controller('search')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Put } from '@nestjs/common';
|
||||
import { ApiNotFoundResponse, ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { LicenseKeyDto, LicenseResponseDto } from 'src/dtos/license.dto';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import { LicenseKeyDto, LicenseResponseDto } from 'src/dtos/license.dto.js';
|
||||
import {
|
||||
ServerAboutResponseDto,
|
||||
ServerApkLinksDto,
|
||||
@@ -13,13 +13,13 @@ import {
|
||||
ServerStorageResponseDto,
|
||||
ServerVersionHistoryResponseDto,
|
||||
ServerVersionResponseDto,
|
||||
} from 'src/dtos/server.dto';
|
||||
import { VersionCheckStateResponseDto } from 'src/dtos/system-metadata.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Authenticated } from 'src/middleware/auth.guard';
|
||||
import { ServerService } from 'src/services/server.service';
|
||||
import { SystemMetadataService } from 'src/services/system-metadata.service';
|
||||
import { VersionService } from 'src/services/version.service';
|
||||
} from 'src/dtos/server.dto.js';
|
||||
import { VersionCheckStateResponseDto } from 'src/dtos/system-metadata.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { ServerService } from 'src/services/server.service.js';
|
||||
import { SystemMetadataService } from 'src/services/system-metadata.service.js';
|
||||
import { VersionService } from 'src/services/version.service.js';
|
||||
|
||||
@ApiTags(ApiTag.Server)
|
||||
@Controller('server')
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
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';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { SessionCreateDto, SessionCreateResponseDto, SessionResponseDto, SessionUpdateDto } from 'src/dtos/session.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { SessionService } from 'src/services/session.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import {
|
||||
SessionCreateDto,
|
||||
SessionCreateResponseDto,
|
||||
SessionResponseDto,
|
||||
SessionUpdateDto,
|
||||
} from 'src/dtos/session.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { SessionService } from 'src/services/session.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Sessions)
|
||||
@Controller('sessions')
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { SharedLinkController } from 'src/controllers/shared-link.controller';
|
||||
import { Permission, SharedLinkType } from 'src/enum';
|
||||
import { SharedLinkService } from 'src/services/shared-link.service';
|
||||
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';
|
||||
import { factory, newUuid } from 'test/small.factory';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { factory, newUuid } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(SharedLinkController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -14,25 +14,25 @@ import {
|
||||
Res,
|
||||
} from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Request, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AssetIdsResponseDto } from 'src/dtos/asset-ids.response.dto';
|
||||
import { AssetIdsDto } from 'src/dtos/asset.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import type { Request, Response } from 'express';
|
||||
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,
|
||||
SharedLinkLoginDto,
|
||||
SharedLinkResponseDto,
|
||||
SharedLinkSearchDto,
|
||||
} from 'src/dtos/shared-link.dto';
|
||||
import { ApiTag, ImmichCookie, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated, GetLoginDetails } from 'src/middleware/auth.guard';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { LoginDetails } from 'src/services/auth.service';
|
||||
import { SharedLinkService } from 'src/services/shared-link.service';
|
||||
import { respondWithCookie } from 'src/utils/response';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/shared-link.dto.js';
|
||||
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';
|
||||
|
||||
const getAuthTokens = (cookies: Record<string, string> | undefined) => {
|
||||
return cookies?.[ImmichCookie.SharedLinkToken]?.split(',') || [];
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { StackController } from 'src/controllers/stack.controller';
|
||||
import { StackService } from 'src/services/stack.service';
|
||||
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';
|
||||
import { factory } from 'test/small.factory';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(StackController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
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';
|
||||
import { BulkIdsDto } from 'src/dtos/asset-ids.response.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { StackCreateDto, StackResponseDto, StackSearchDto, StackUpdateDto } from 'src/dtos/stack.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { StackService } from 'src/services/stack.service';
|
||||
import { UUIDAssetIDParamDto, UUIDParamDto } from 'src/validation';
|
||||
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';
|
||||
import { StackService } from 'src/services/stack.service.js';
|
||||
import { UUIDAssetIDParamDto, UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Stacks)
|
||||
@Controller('stacks')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { SyncController } from 'src/controllers/sync.controller';
|
||||
import { GlobalExceptionFilter } from 'src/middleware/global-exception.filter';
|
||||
import { SyncService } from 'src/services/sync.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(SyncController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import { Body, Controller, Delete, Get, Header, HttpCode, HttpStatus, Post, Req, Res } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Request, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { SyncAckDeleteDto, SyncAckDto, SyncAckSetDto, SyncStreamDto } from 'src/dtos/sync.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { GlobalExceptionFilter } from 'src/middleware/global-exception.filter';
|
||||
import { SyncService } from 'src/services/sync.service';
|
||||
import type { Request, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.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';
|
||||
import { GlobalExceptionFilter } from 'src/middleware/global-exception.filter.js';
|
||||
import { SyncService } from 'src/services/sync.service.js';
|
||||
|
||||
@ApiTags(ApiTag.Sync)
|
||||
@Controller('sync')
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
import _ from 'lodash';
|
||||
import { SystemConfigController } from 'src/controllers/system-config.controller';
|
||||
import { defaults } from 'src/dtos/config.dto';
|
||||
import { StorageTemplateService } from 'src/services/storage-template.service';
|
||||
import { SystemConfigService } from 'src/services/system-config.service';
|
||||
import { cloneDeep } from 'lodash-es';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
/** Returns a full config that passes Zod validation (required URLs and min lengths). */
|
||||
function validConfig() {
|
||||
const config = _.cloneDeep(defaults) as typeof defaults & {
|
||||
const config = cloneDeep(defaults) as typeof defaults & {
|
||||
oauth: { mobileRedirectUri: string };
|
||||
notifications: { smtp: { from: string; transport: { host: string } } };
|
||||
server: { externalDomain: string };
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { Body, Controller, Get, Put } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AdminConfigDto, ConfigTemplateStorageOptionDto } from 'src/dtos/config.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Authenticated } from 'src/middleware/auth.guard';
|
||||
import { StorageTemplateService } from 'src/services/storage-template.service';
|
||||
import { SystemConfigService } from 'src/services/system-config.service';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import { AdminConfigDto, ConfigTemplateStorageOptionDto } from 'src/dtos/config.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { StorageTemplateService } from 'src/services/storage-template.service.js';
|
||||
import { SystemConfigService } from 'src/services/system-config.service.js';
|
||||
|
||||
@ApiTags(ApiTag.SystemConfig)
|
||||
@Controller('system-config')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { SystemMetadataController } from 'src/controllers/system-metadata.controller';
|
||||
import { SystemMetadataService } from 'src/services/system-metadata.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(SystemMetadataController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import { Body, Controller, Get, HttpCode, HttpStatus, Post } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import {
|
||||
AdminOnboardingUpdateDto,
|
||||
ReverseGeocodingStateResponseDto,
|
||||
VersionCheckStateResponseDto,
|
||||
} from 'src/dtos/system-metadata.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Authenticated } from 'src/middleware/auth.guard';
|
||||
import { SystemMetadataService } from 'src/services/system-metadata.service';
|
||||
} from 'src/dtos/system-metadata.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { SystemMetadataService } from 'src/services/system-metadata.service.js';
|
||||
|
||||
@ApiTags(ApiTag.SystemMetadata)
|
||||
@Controller('system-metadata')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { TagController } from 'src/controllers/tag.controller';
|
||||
import { TagService } from 'src/services/tag.service';
|
||||
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';
|
||||
import { factory } from 'test/small.factory';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(TagController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -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 { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { BulkIdResponseDto, BulkIdsDto } from 'src/dtos/asset-ids.response.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
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,
|
||||
@@ -10,11 +10,11 @@ import {
|
||||
TagResponseDto,
|
||||
TagUpdateDto,
|
||||
TagUpsertDto,
|
||||
} from 'src/dtos/tag.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { TagService } from 'src/services/tag.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/tag.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { TagService } from 'src/services/tag.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Tags)
|
||||
@Controller('tags')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { TimelineController } from 'src/controllers/timeline.controller';
|
||||
import { TimelineService } from 'src/services/timeline.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(TimelineController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { Controller, Get, Header, Query } from '@nestjs/common';
|
||||
import { ApiOkResponse, ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { TimeBucketAssetDto, TimeBucketAssetResponseDto, TimeBucketDto } from 'src/dtos/time-bucket.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { TimelineService } from 'src/services/timeline.service';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.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';
|
||||
import { TimelineService } from 'src/services/timeline.service.js';
|
||||
|
||||
@ApiTags(ApiTag.Timeline)
|
||||
@Controller('timeline')
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { TrashController } from 'src/controllers/trash.controller';
|
||||
import { TrashService } from 'src/services/trash.service';
|
||||
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';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(TrashController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { Body, Controller, HttpCode, HttpStatus, Post } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { BulkIdsDto } from 'src/dtos/asset-ids.response.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { TrashResponseDto } from 'src/dtos/trash.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { TrashService } from 'src/services/trash.service';
|
||||
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';
|
||||
import { TrashService } from 'src/services/trash.service.js';
|
||||
|
||||
@ApiTags(ApiTag.Trash)
|
||||
@Controller('trash')
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { UserAdminController } from 'src/controllers/user-admin.controller';
|
||||
import { UserAdminCreateDto } from 'src/dtos/user.dto';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { UserAdminService } from 'src/services/user-admin.service';
|
||||
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';
|
||||
import { factory } from 'test/small.factory';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { factory } from 'test/small.factory.js';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(UserAdminController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
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';
|
||||
import { AssetStatsDto, AssetStatsResponseDto } from 'src/dtos/asset.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { CalendarHeatmapDto, CalendarHeatmapResponseDto } from 'src/dtos/calendar-heatmap.dto';
|
||||
import { SessionResponseDto } from 'src/dtos/session.dto';
|
||||
import { UserPreferencesResponseDto, UserPreferencesUpdateDto } from 'src/dtos/user-preferences.dto';
|
||||
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';
|
||||
import {
|
||||
UserAdminCreateDto,
|
||||
UserAdminDeleteDto,
|
||||
UserAdminResponseDto,
|
||||
UserAdminSearchDto,
|
||||
UserAdminUpdateDto,
|
||||
} from 'src/dtos/user.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { UserAdminService } from 'src/services/user-admin.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/user.dto.js';
|
||||
import { ApiTag, Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { UserAdminService } from 'src/services/user-admin.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.UsersAdmin)
|
||||
@Controller('admin/users')
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { UserController } from 'src/controllers/user.controller';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { UserService } from 'src/services/user.service';
|
||||
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';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils.js';
|
||||
|
||||
describe(UserController.name, () => {
|
||||
let ctx: ControllerContext;
|
||||
|
||||
@@ -16,22 +16,22 @@ import {
|
||||
UseInterceptors,
|
||||
} from '@nestjs/common';
|
||||
import { ApiBody, ApiConsumes, ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
|
||||
import { NextFunction, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { CalendarHeatmapDto, CalendarHeatmapResponseDto } from 'src/dtos/calendar-heatmap.dto';
|
||||
import { LicenseKeyDto, LicenseResponseDto } from 'src/dtos/license.dto';
|
||||
import { OnboardingDto, OnboardingResponseDto } from 'src/dtos/onboarding.dto';
|
||||
import { UserPreferencesResponseDto, UserPreferencesUpdateDto } from 'src/dtos/user-preferences.dto';
|
||||
import { CreateProfileImageDto, CreateProfileImageResponseDto } from 'src/dtos/user-profile.dto';
|
||||
import { UserAdminResponseDto, UserResponseDto, UserUpdateMeDto } from 'src/dtos/user.dto';
|
||||
import { ApiTag, Permission, RouteKey } from 'src/enum';
|
||||
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard';
|
||||
import { FileUploadInterceptor } from 'src/middleware/file-upload.interceptor';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { UserService } from 'src/services/user.service';
|
||||
import { sendFile } from 'src/utils/file';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
import type { NextFunction, Response } from 'express';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.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';
|
||||
import { UserPreferencesResponseDto, UserPreferencesUpdateDto } from 'src/dtos/user-preferences.dto.js';
|
||||
import { CreateProfileImageDto, CreateProfileImageResponseDto } from 'src/dtos/user-profile.dto.js';
|
||||
import { UserAdminResponseDto, UserResponseDto, UserUpdateMeDto } from 'src/dtos/user.dto.js';
|
||||
import { ApiTag, Permission, RouteKey } from 'src/enum.js';
|
||||
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard.js';
|
||||
import { FileUploadInterceptor } from 'src/middleware/file-upload.interceptor.js';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository.js';
|
||||
import { UserService } from 'src/services/user.service.js';
|
||||
import { sendFile } from 'src/utils/file.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Users)
|
||||
@Controller(RouteKey.User)
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
import { Controller, Delete, Get, Header, Headers, HttpCode, HttpStatus, Next, Param, Res } from '@nestjs/common';
|
||||
import { ApiProduces, ApiTags } from '@nestjs/swagger';
|
||||
import { NextFunction, Response } from 'express';
|
||||
import type { NextFunction, Response } from 'express';
|
||||
import { ZodValidationException } from 'nestjs-zod';
|
||||
import { HLS_PLAYLIST_CONTENT_TYPE } from 'src/constants';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
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,
|
||||
HlsSegmentParamDto,
|
||||
HlsSessionParamDto,
|
||||
HlsVariantParamDto,
|
||||
} from 'src/dtos/streaming.dto';
|
||||
import { ApiTag, ImmichHeader, Permission, RouteKey } from 'src/enum';
|
||||
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { HlsService } from 'src/services/hls.service';
|
||||
import { sendFile } from 'src/utils/file';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/streaming.dto.js';
|
||||
import { ApiTag, ImmichHeader, Permission, RouteKey } from 'src/enum.js';
|
||||
import { Auth, Authenticated, FileResponse } from 'src/middleware/auth.guard.js';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository.js';
|
||||
import { HlsService } from 'src/services/hls.service.js';
|
||||
import { sendFile } from 'src/utils/file.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags(ApiTag.Assets)
|
||||
@Controller(RouteKey.Asset)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { Controller, Get, Query } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators';
|
||||
import { AssetResponseDto } from 'src/dtos/asset-response.dto';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { ApiTag, Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { ViewService } from 'src/services/view.service';
|
||||
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';
|
||||
|
||||
@ApiTags(ApiTag.Views)
|
||||
@Controller('view')
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { WorkflowTrigger } from '@immich/plugin-sdk';
|
||||
import { WorkflowController } from 'src/controllers/workflow.controller';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository';
|
||||
import { WorkflowService } from 'src/services/workflow.service';
|
||||
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';
|
||||
import { automock, ControllerContext, controllerSetup, mockBaseService } from 'test/utils';
|
||||
import { errorDto } from 'test/medium/responses.js';
|
||||
import { automock, ControllerContext, 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';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { Endpoint, HistoryBuilder } from 'src/decorators.js';
|
||||
import type { AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import {
|
||||
WorkflowCreateDto,
|
||||
WorkflowGetLogsDto,
|
||||
@@ -11,11 +11,11 @@ import {
|
||||
WorkflowShareResponseDto,
|
||||
WorkflowTriggerResponseDto,
|
||||
WorkflowUpdateDto,
|
||||
} from 'src/dtos/workflow.dto';
|
||||
import { Permission } from 'src/enum';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { WorkflowService } from 'src/services/workflow.service';
|
||||
import { UUIDParamDto } from 'src/validation';
|
||||
} from 'src/dtos/workflow.dto.js';
|
||||
import { Permission } from 'src/enum.js';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard.js';
|
||||
import { WorkflowService } from 'src/services/workflow.service.js';
|
||||
import { UUIDParamDto } from 'src/validation.js';
|
||||
|
||||
@ApiTags('Workflows')
|
||||
@Controller('workflows')
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user