feat: server imports linting (#31537)
This commit is contained in:
Vendored
+1
-1
@@ -1,3 +1,4 @@
|
||||
import type { AudioStreamInfo, VideoFormat, VideoInfo, VideoStreamInfo } from 'src/types.js';
|
||||
import {
|
||||
AacProfile,
|
||||
ColorMatrix,
|
||||
@@ -8,7 +9,6 @@ import {
|
||||
H264Profile,
|
||||
HevcProfile,
|
||||
} from 'src/enum.js';
|
||||
import type { AudioStreamInfo, VideoFormat, VideoInfo, VideoStreamInfo } from 'src/types.js';
|
||||
|
||||
const probeStubDefaultFormat: VideoFormat = {
|
||||
formatName: 'mov,mp4,m4a,3gp,3g2,mj2',
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { SystemConfig } from 'src/dtos/config.dto.js';
|
||||
import type { DeepPartial } from 'src/types.js';
|
||||
import { SystemConfig } from 'src/dtos/config.dto.js';
|
||||
|
||||
export const systemConfigStub = {
|
||||
enabled: {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Selectable, ShallowDehydrateObject } from 'kysely';
|
||||
import type { AudioStreamInfo, VideoFormat, VideoStreamInfo } from 'src/types.js';
|
||||
import { MapAsset } from 'src/dtos/asset-response.dto.js';
|
||||
import { AssetEditActionItem } from 'src/dtos/editing.dto.js';
|
||||
import { AssetFileType } from 'src/enum.js';
|
||||
@@ -6,7 +7,6 @@ import { FaceSearchResult } from 'src/repositories/search.repository.js';
|
||||
import { ActivityTable } from 'src/schema/tables/activity.table.js';
|
||||
import { AssetTable } from 'src/schema/tables/asset.table.js';
|
||||
import { PartnerTable } from 'src/schema/tables/partner.table.js';
|
||||
import type { AudioStreamInfo, VideoFormat, VideoStreamInfo } from 'src/types.js';
|
||||
import { AlbumFactory } from 'test/factories/album.factory.js';
|
||||
import { AssetFaceFactory } from 'test/factories/asset-face.factory.js';
|
||||
import { AssetFactory } from 'test/factories/asset.factory.js';
|
||||
|
||||
@@ -4,6 +4,8 @@ import { createHash, randomBytes } from 'node:crypto';
|
||||
import { Stats } from 'node:fs';
|
||||
import { resolve } from 'node:path';
|
||||
import { Writable } from 'node:stream';
|
||||
import { Mocked } from 'vitest';
|
||||
import type { ClassConstructor, ClassConstructorsToInstances, UploadFile } from 'src/types.js';
|
||||
import { AssetFace } from 'src/database.js';
|
||||
import { AuthDto, LoginResponseDto } from 'src/dtos/auth.dto.js';
|
||||
import { SystemConfig } from 'src/dtos/config.dto.js';
|
||||
@@ -81,13 +83,11 @@ import { UserTable } from 'src/schema/tables/user.table.js';
|
||||
import { BASE_SERVICE_DEPENDENCIES, BaseService } from 'src/services/base.service.js';
|
||||
import { MetadataService } from 'src/services/metadata.service.js';
|
||||
import { SyncService } from 'src/services/sync.service.js';
|
||||
import type { ClassConstructor, ClassConstructorsToInstances, UploadFile } from 'src/types.js';
|
||||
import { getConfig, updateConfig } from 'src/utils/config.js';
|
||||
import { mockEnvData } from 'test/repositories/config.repository.mock.js';
|
||||
import { newTelemetryRepositoryMock } from 'test/repositories/telemetry.repository.mock.js';
|
||||
import { factory, newDate, newEmbedding, newUuid } from 'test/small.factory.js';
|
||||
import { automock, wait } from 'test/utils.js';
|
||||
import { Mocked } from 'vitest';
|
||||
|
||||
export const testAssetsDir = resolve(import.meta.dirname, '../../e2e/test-assets');
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Kysely } from 'kysely';
|
||||
import { GenericContainer, Wait } from 'testcontainers';
|
||||
import { ConfigRepository } from 'src/repositories/config.repository.js';
|
||||
import { DatabaseRepository } from 'src/repositories/database.repository.js';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository.js';
|
||||
import { DB } from 'src/schema/index.js';
|
||||
import { getKyselyConfig } from 'src/utils/database.js';
|
||||
import { GenericContainer, Wait } from 'testcontainers';
|
||||
|
||||
const globalSetup = async () => {
|
||||
const templateName = 'mich';
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { schemaFromCode } from '@immich/sql-tools';
|
||||
import { Kysely } from 'kysely';
|
||||
import { DateTime } from 'luxon';
|
||||
import { v4 } from 'uuid';
|
||||
import { AssetMetadataKey, UserMetadataKey } from 'src/enum.js';
|
||||
import { DatabaseRepository } from 'src/repositories/database.repository.js';
|
||||
import { LoggingRepository } from 'src/repositories/logging.repository.js';
|
||||
@@ -9,7 +10,6 @@ import { DB } from 'src/schema/index.js';
|
||||
import { SyncService } from 'src/services/sync.service.js';
|
||||
import { newMediumService } from 'test/medium.factory.js';
|
||||
import { getKyselyDB } from 'test/utils.js';
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
let defaultDatabase: Kysely<DB>;
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { Kysely } from 'kysely';
|
||||
import { DateTime } from 'luxon';
|
||||
import { v7 } from 'uuid';
|
||||
import { SyncEntityType, SyncRequestType } from 'src/enum.js';
|
||||
import { SyncCheckpointRepository } from 'src/repositories/sync-checkpoint.repository.js';
|
||||
import { DB } from 'src/schema/index.js';
|
||||
import { toAck } from 'src/utils/sync.js';
|
||||
import { SyncTestContext } from 'test/medium.factory.js';
|
||||
import { getKyselyDB } from 'test/utils.js';
|
||||
import { v7 } from 'uuid';
|
||||
|
||||
let defaultDatabase: Kysely<DB>;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { AccessRepository } from 'src/repositories/access.repository.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { AccessRepository } from 'src/repositories/access.repository.js';
|
||||
|
||||
type IAccessRepository = { [K in keyof AccessRepository]: RepositoryInterface<AccessRepository[K]> };
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { AssetRepository } from 'src/repositories/asset.repository.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { AssetRepository } from 'src/repositories/asset.repository.js';
|
||||
|
||||
export const newAssetRepositoryMock = (): Mocked<RepositoryInterface<AssetRepository>> => {
|
||||
return {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { DatabaseExtension, ImmichEnvironment, ImmichWorker, LogFormat } from 'src/enum.js';
|
||||
import { ConfigRepository, EnvData } from 'src/repositories/config.repository.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
export const envData: EnvData = {
|
||||
port: 2283,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { CryptoRepository } from 'src/repositories/crypto.repository.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { CryptoRepository } from 'src/repositories/crypto.repository.js';
|
||||
|
||||
export const newCryptoRepositoryMock = (): Mocked<RepositoryInterface<CryptoRepository>> => {
|
||||
return {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { JobRepository } from 'src/repositories/job.repository.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { JobRepository } from 'src/repositories/job.repository.js';
|
||||
|
||||
export const newJobRepositoryMock = (): Mocked<RepositoryInterface<JobRepository>> => {
|
||||
return {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { MediaRepository } from 'src/repositories/media.repository.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { MediaRepository } from 'src/repositories/media.repository.js';
|
||||
|
||||
export const newMediaRepositoryMock = (): Mocked<RepositoryInterface<MediaRepository>> => {
|
||||
return {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { MetadataRepository } from 'src/repositories/metadata.repository.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { MetadataRepository } from 'src/repositories/metadata.repository.js';
|
||||
|
||||
export const newMetadataRepositoryMock = (): Mocked<RepositoryInterface<MetadataRepository>> => {
|
||||
return {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { ChokidarOptions } from 'chokidar';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { StorageCore } from 'src/cores/storage.core.js';
|
||||
import { StorageRepository, WatchEvents } from 'src/repositories/storage.repository.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
|
||||
interface MockWatcherOptions {
|
||||
items?: Array<{ event: 'change' | 'add' | 'unlink' | 'error'; value: string }>;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { SystemMetadataRepository } from 'src/repositories/system-metadata.repository.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { clearConfigCache } from 'src/utils/config.js';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { SystemMetadataRepository } from 'src/repositories/system-metadata.repository.js';
|
||||
import { clearConfigCache } from 'src/utils/config.js';
|
||||
|
||||
export const newSystemMetadataRepositoryMock = (): Mocked<RepositoryInterface<SystemMetadataRepository>> => {
|
||||
clearConfigCache();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { TelemetryRepository } from 'src/repositories/telemetry.repository.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { Mocked, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { TelemetryRepository } from 'src/repositories/telemetry.repository.js';
|
||||
|
||||
const newMetricGroupMock = () => {
|
||||
return {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { v4, v7 } from 'uuid';
|
||||
import { expect } from 'vitest';
|
||||
import { AuthApiKey, AuthSharedLink, AuthUser, Library, UserAdmin } from 'src/database.js';
|
||||
import { AuthDto } from 'src/dtos/auth.dto.js';
|
||||
import { QueueStatisticsDto } from 'src/dtos/queue.dto.js';
|
||||
import { Permission, UserStatus } from 'src/enum.js';
|
||||
import { v4, v7 } from 'uuid';
|
||||
import { expect } from 'vitest';
|
||||
|
||||
export const newUuid = () => v4();
|
||||
export const newUuids = () => Array.from({ length: 100 }, () => 0).map(() => newUuid());
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
/* eslint-disable unicorn/no-this-outside-of-class */
|
||||
import { createPostgres, DatabaseConnectionParams } from '@immich/sql-tools';
|
||||
import { DatabaseConnectionParams, createPostgres } from '@immich/sql-tools';
|
||||
import { CallHandler, ExecutionContext, Provider } from '@nestjs/common';
|
||||
import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR, APP_PIPE } from '@nestjs/core';
|
||||
import { transformException } from '@nestjs/platform-express/multer/multer/multer.utils';
|
||||
import { Test } from '@nestjs/testing';
|
||||
import { NextFunction } from 'express';
|
||||
import { Kysely } from 'kysely';
|
||||
import multer from 'multer';
|
||||
import multer, { memoryStorage } from 'multer';
|
||||
import { ClsService } from 'nestjs-cls';
|
||||
import { ZodSerializerInterceptor, ZodValidationPipe } from 'nestjs-zod';
|
||||
import { ChildProcessWithoutNullStreams } from 'node:child_process';
|
||||
import { Duplex, Readable, Writable } from 'node:stream';
|
||||
import { PNG } from 'pngjs';
|
||||
import { Mock, Mocked, assert, vitest } from 'vitest';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { UploadFieldName } from 'src/dtos/asset-media.dto.js';
|
||||
import { AssetUploadInterceptor } from 'src/middleware/asset-upload.interceptor.js';
|
||||
import { AuthGuard } from 'src/middleware/auth.guard.js';
|
||||
@@ -75,7 +77,6 @@ import { WorkflowRepository } from 'src/repositories/workflow.repository.js';
|
||||
import { DB } from 'src/schema/index.js';
|
||||
import { AuthService } from 'src/services/auth.service.js';
|
||||
import { BaseService } from 'src/services/base.service.js';
|
||||
import type { RepositoryInterface } from 'src/types.js';
|
||||
import { getKyselyConfig } from 'src/utils/database.js';
|
||||
import { ClusterGroupFactory } from 'test/factories/cluster-group.factory.js';
|
||||
import { IAccessRepositoryMock, newAccessRepositoryMock } from 'test/repositories/access.repository.mock.js';
|
||||
@@ -88,7 +89,6 @@ import { newMetadataRepositoryMock } from 'test/repositories/metadata.repository
|
||||
import { newStorageRepositoryMock } from 'test/repositories/storage.repository.mock.js';
|
||||
import { newSystemMetadataRepositoryMock } from 'test/repositories/system-metadata.repository.mock.js';
|
||||
import { ITelemetryRepositoryMock, newTelemetryRepositoryMock } from 'test/repositories/telemetry.repository.mock.js';
|
||||
import { assert, Mock, Mocked, vitest } from 'vitest';
|
||||
|
||||
export type ControllerContext = {
|
||||
authenticate: Mock;
|
||||
@@ -102,7 +102,7 @@ type ControllerClass = new (...args: any[]) => unknown;
|
||||
|
||||
export const controllerSetup = async (controller: ControllerClass | ControllerClass[], providers: Provider[]) => {
|
||||
const noopInterceptor = { intercept: (ctx: never, next: CallHandler<unknown>) => next.handle() };
|
||||
const upload = multer({ storage: multer.memoryStorage() });
|
||||
const upload = multer({ storage: memoryStorage() });
|
||||
const memoryFileInterceptor = {
|
||||
intercept: async (ctx: ExecutionContext, next: CallHandler<unknown>) => {
|
||||
const context = ctx.switchToHttp();
|
||||
|
||||
Reference in New Issue
Block a user