Skip to content

Commit 30f499c

Browse files
chore(server): use absolute import paths (#8080)
update server to use absolute import paths
1 parent 591a641 commit 30f499c

File tree

347 files changed

+1946
-2258
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

347 files changed

+1946
-2258
lines changed

Diff for: .vscode/settings.json

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"editor.formatOnSave": true,
3+
"[javascript][typescript][css]": {
4+
"editor.defaultFormatter": "esbenp.prettier-vscode",
5+
"editor.tabSize": 2,
6+
"editor.formatOnSave": true
7+
},
8+
"[svelte]": {
9+
"editor.defaultFormatter": "svelte.svelte-vscode",
10+
"editor.tabSize": 2
11+
},
12+
"svelte.enable-ts-plugin": true,
13+
"eslint.validate": [
14+
"javascript",
15+
"svelte"
16+
],
17+
"typescript.preferences.importModuleSpecifier": "non-relative",
18+
"[dart]": {
19+
"editor.formatOnSave": true,
20+
"editor.selectionHighlight": false,
21+
"editor.suggest.snippetsPreventQuickSuggestions": false,
22+
"editor.suggestSelection": "first",
23+
"editor.tabCompletion": "onlySnippets",
24+
"editor.wordBasedSuggestions": "off",
25+
"editor.defaultFormatter": "Dart-Code.dart-code"
26+
},
27+
"cSpell.words": [
28+
"immich"
29+
],
30+
}

Diff for: server/.eslintrc.js

+1
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,6 @@ module.exports = {
3333
'@typescript-eslint/require-await': 'error',
3434
curly: 2,
3535
'prettier/prettier': 0,
36+
'no-restricted-imports': ['error', { patterns: [{ group: ['.*'], message: 'Relative imports are not allowed.' }] }],
3637
},
3738
};

Diff for: server/e2e/client/asset-api.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AssetResponseDto } from '@app/domain';
1+
import { AssetResponseDto } from 'src/domain/asset/response-dto/asset-response.dto';
22
import request from 'supertest';
33

44
export const assetApi = {

Diff for: server/e2e/client/auth-api.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { LoginResponseDto, UserResponseDto } from '@app/domain';
2-
import { adminSignupStub, loginResponseStub, loginStub } from '@test';
1+
import { LoginResponseDto } from 'src/domain/auth/auth.dto';
2+
import { UserResponseDto } from 'src/domain/user/response-dto/user-response.dto';
33
import request from 'supertest';
4+
import { adminSignupStub, loginResponseStub, loginStub } from 'test/fixtures/auth.stub';
45

56
export const authApi = {
67
adminSignUp: async (server: any) => {

Diff for: server/e2e/client/index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { assetApi } from './asset-api';
2-
import { authApi } from './auth-api';
3-
import { libraryApi } from './library-api';
1+
import { assetApi } from 'e2e/client/asset-api';
2+
import { authApi } from 'e2e/client/auth-api';
3+
import { libraryApi } from 'e2e/client/library-api';
44

55
export const api = {
66
authApi,

Diff for: server/e2e/client/library-api.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { CreateLibraryDto, LibraryResponseDto, ScanLibraryDto } from '@app/domain';
1+
import { CreateLibraryDto, LibraryResponseDto, ScanLibraryDto } from 'src/domain/library/library.dto';
22
import request from 'supertest';
33

44
export const libraryApi = {

Diff for: server/e2e/jobs/jest-e2e.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616
],
1717
"coverageDirectory": "./coverage",
1818
"moduleNameMapper": {
19-
"^@test(|/.*)$": "<rootDir>/test/$1",
20-
"^@app/immich(|/.*)$": "<rootDir>/src/immich/$1",
21-
"^@app/infra(|/.*)$": "<rootDir>/src/infra/$1",
22-
"^@app/domain(|/.*)$": "<rootDir>/src/domain/$1"
19+
"^test(|/.*)$": "<rootDir>/test/$1",
20+
"^src(|/.*)$": "<rootDir>/src/$1"
2321
}
2422
}

Diff for: server/e2e/jobs/specs/library-watcher.e2e-spec.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1-
import { LibraryResponseDto, LibraryService, LoginResponseDto, StorageEventType } from '@app/domain';
2-
import { AssetType, LibraryType } from '@app/infra/entities';
1+
import { api } from 'e2e/client';
32
import fs from 'node:fs/promises';
43
import path from 'node:path';
4+
import { LoginResponseDto } from 'src/domain/auth/auth.dto';
5+
import { LibraryResponseDto } from 'src/domain/library/library.dto';
6+
import { LibraryService } from 'src/domain/library/library.service';
7+
import { StorageEventType } from 'src/domain/repositories/storage.repository';
8+
import { AssetType } from 'src/infra/entities/asset.entity';
9+
import { LibraryType } from 'src/infra/entities/library.entity';
510
import {
611
IMMICH_TEST_ASSET_PATH,
712
IMMICH_TEST_ASSET_TEMP_PATH,
813
restoreTempFolder,
914
testApp,
1015
waitForEvent,
11-
} from '../../../src/test-utils/utils';
12-
import { api } from '../../client';
16+
} from 'src/test-utils/utils';
1317

1418
describe(`Library watcher (e2e)`, () => {
1519
let server: any;

Diff for: server/e2e/jobs/specs/library.e2e-spec.ts

+8-12
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
1-
import { LoginResponseDto } from '@app/domain';
2-
import { LibraryController } from '@app/immich';
3-
import { LibraryType } from '@app/infra/entities';
4-
import { errorStub, uuidStub } from '@test/fixtures';
5-
import * as fs from 'node:fs';
1+
import { api } from 'e2e/client';
2+
import fs from 'node:fs';
3+
import { LoginResponseDto } from 'src/domain/auth/auth.dto';
4+
import { LibraryController } from 'src/immich/controllers/library.controller';
5+
import { LibraryType } from 'src/infra/entities/library.entity';
6+
import { IMMICH_TEST_ASSET_PATH, IMMICH_TEST_ASSET_TEMP_PATH, restoreTempFolder, testApp } from 'src/test-utils/utils';
67
import request from 'supertest';
8+
import { errorStub } from 'test/fixtures/error.stub';
9+
import { uuidStub } from 'test/fixtures/uuid.stub';
710
import { utimes } from 'utimes';
8-
import {
9-
IMMICH_TEST_ASSET_PATH,
10-
IMMICH_TEST_ASSET_TEMP_PATH,
11-
restoreTempFolder,
12-
testApp,
13-
} from '../../../src/test-utils/utils';
14-
import { api } from '../../client';
1511

1612
describe(`${LibraryController.name} (e2e)`, () => {
1713
let server: any;

Diff for: server/package.json

+4-6
Original file line numberDiff line numberDiff line change
@@ -155,16 +155,14 @@
155155
"./src/domain/": {
156156
"branches": 75,
157157
"functions": 80,
158-
"lines": 90,
159-
"statements": 90
158+
"lines": 85,
159+
"statements": 85
160160
}
161161
},
162162
"testEnvironment": "node",
163163
"moduleNameMapper": {
164-
"^@test(|/.*)$": "<rootDir>/test/$1",
165-
"^@app/immich(|/.*)$": "<rootDir>/src/immich/$1",
166-
"^@app/infra(|/.*)$": "<rootDir>/src/infra/$1",
167-
"^@app/domain(|/.*)$": "<rootDir>/src/domain/$1"
164+
"^test(|/.*)$": "<rootDir>/test/$1",
165+
"^src(|/.*)$": "<rootDir>/src/$1"
168166
},
169167
"globalSetup": "<rootDir>/test/global-setup.js"
170168
},

Diff for: server/src/domain/access/access.core.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { BadRequestException, UnauthorizedException } from '@nestjs/common';
2-
import { SharedLinkEntity } from '../../infra/entities';
3-
import { AuthDto } from '../auth';
4-
import { setDifference, setIsEqual, setUnion } from '../domain.util';
5-
import { IAccessRepository } from '../repositories';
2+
import { AuthDto } from 'src/domain/auth/auth.dto';
3+
import { setDifference, setIsEqual, setUnion } from 'src/domain/domain.util';
4+
import { IAccessRepository } from 'src/domain/repositories/access.repository';
5+
import { SharedLinkEntity } from 'src/infra/entities/shared-link.entity';
66

77
export enum Permission {
88
ACTIVITY_CREATE = 'activity.create',

Diff for: server/src/domain/access/index.ts

-1
This file was deleted.

Diff for: server/src/domain/activity/activity.dto.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { ActivityEntity } from '@app/infra/entities';
21
import { ApiProperty } from '@nestjs/swagger';
32
import { IsEnum, IsNotEmpty, IsString, ValidateIf } from 'class-validator';
4-
import { Optional, ValidateUUID } from '../domain.util';
5-
import { UserDto, mapSimpleUser } from '../user/response-dto';
3+
import { Optional, ValidateUUID } from 'src/domain/domain.util';
4+
import { UserDto, mapSimpleUser } from 'src/domain/user/response-dto/user-response.dto';
5+
import { ActivityEntity } from 'src/infra/entities/activity.entity';
66

77
export enum ReactionType {
88
COMMENT = 'comment',

Diff for: server/src/domain/activity/activity.service.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
import { ActivityEntity } from '@app/infra/entities';
21
import { Inject, Injectable } from '@nestjs/common';
3-
import { AccessCore, Permission } from '../access';
4-
import { AuthDto } from '../auth';
5-
import { IAccessRepository, IActivityRepository } from '../repositories';
2+
import { AccessCore, Permission } from 'src/domain/access/access.core';
63
import {
74
ActivityCreateDto,
85
ActivityDto,
@@ -13,7 +10,11 @@ import {
1310
ReactionLevel,
1411
ReactionType,
1512
mapActivity,
16-
} from './activity.dto';
13+
} from 'src/domain/activity/activity.dto';
14+
import { AuthDto } from 'src/domain/auth/auth.dto';
15+
import { IAccessRepository } from 'src/domain/repositories/access.repository';
16+
import { IActivityRepository } from 'src/domain/repositories/activity.repository';
17+
import { ActivityEntity } from 'src/infra/entities/activity.entity';
1718

1819
@Injectable()
1920
export class ActivityService {

Diff for: server/src/domain/activity/activity.spec.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { BadRequestException } from '@nestjs/common';
2-
import { authStub, IAccessRepositoryMock, newAccessRepositoryMock } from '@test';
3-
import { activityStub } from '@test/fixtures/activity.stub';
4-
import { newActivityRepositoryMock } from '@test/repositories/activity.repository.mock';
5-
import { IActivityRepository } from '../repositories';
6-
import { ReactionType } from './activity.dto';
7-
import { ActivityService } from './activity.service';
2+
import { ReactionType } from 'src/domain/activity/activity.dto';
3+
import { ActivityService } from 'src/domain/activity/activity.service';
4+
import { IActivityRepository } from 'src/domain/repositories/activity.repository';
5+
import { activityStub } from 'test/fixtures/activity.stub';
6+
import { authStub } from 'test/fixtures/auth.stub';
7+
import { IAccessRepositoryMock, newAccessRepositoryMock } from 'test/repositories/access.repository.mock';
8+
import { newActivityRepositoryMock } from 'test/repositories/activity.repository.mock';
89

910
describe(ActivityService.name, () => {
1011
let sut: ActivityService;

Diff for: server/src/domain/activity/index.ts

-2
This file was deleted.

Diff for: server/src/domain/album/album-response.dto.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { albumStub } from '@test';
2-
import { mapAlbum } from './album-response.dto';
1+
import { mapAlbum } from 'src/domain/album/album-response.dto';
2+
import { albumStub } from 'test/fixtures/album.stub';
33

44
describe('mapAlbum', () => {
55
it('should set start and end dates', () => {

Diff for: server/src/domain/album/album-response.dto.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { AlbumEntity, AssetOrder } from '@app/infra/entities';
2-
import { Optional } from '@nestjs/common';
31
import { ApiProperty } from '@nestjs/swagger';
4-
import { AssetResponseDto, mapAsset } from '../asset';
5-
import { AuthDto } from '../auth/auth.dto';
6-
import { UserResponseDto, mapUser } from '../user';
2+
import { AssetResponseDto, mapAsset } from 'src/domain/asset/response-dto/asset-response.dto';
3+
import { AuthDto } from 'src/domain/auth/auth.dto';
4+
import { Optional } from 'src/domain/domain.util';
5+
import { UserResponseDto, mapUser } from 'src/domain/user/response-dto/user-response.dto';
6+
import { AlbumEntity, AssetOrder } from 'src/infra/entities/album.entity';
77

88
export class AlbumResponseDto {
99
id!: string;

Diff for: server/src/domain/album/album.service.spec.ts

+13-17
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,32 @@
11
import { BadRequestException } from '@nestjs/common';
2-
import {
3-
albumStub,
4-
authStub,
5-
IAccessRepositoryMock,
6-
newAccessRepositoryMock,
7-
newAlbumRepositoryMock,
8-
newAssetRepositoryMock,
9-
newJobRepositoryMock,
10-
newUserRepositoryMock,
11-
userStub,
12-
} from '@test';
132
import _ from 'lodash';
14-
import { BulkIdErrorReason } from '../asset';
15-
import { IAlbumRepository, IAssetRepository, IJobRepository, IUserRepository } from '../repositories';
16-
import { AlbumService } from './album.service';
3+
import { AlbumService } from 'src/domain/album/album.service';
4+
import { BulkIdErrorReason } from 'src/domain/asset/response-dto/asset-ids-response.dto';
5+
import { IAlbumRepository } from 'src/domain/repositories/album.repository';
6+
import { IAssetRepository } from 'src/domain/repositories/asset.repository';
7+
import { IUserRepository } from 'src/domain/repositories/user.repository';
8+
import { albumStub } from 'test/fixtures/album.stub';
9+
import { authStub } from 'test/fixtures/auth.stub';
10+
import { userStub } from 'test/fixtures/user.stub';
11+
import { IAccessRepositoryMock, newAccessRepositoryMock } from 'test/repositories/access.repository.mock';
12+
import { newAlbumRepositoryMock } from 'test/repositories/album.repository.mock';
13+
import { newAssetRepositoryMock } from 'test/repositories/asset.repository.mock';
14+
import { newUserRepositoryMock } from 'test/repositories/user.repository.mock';
1715

1816
describe(AlbumService.name, () => {
1917
let sut: AlbumService;
2018
let accessMock: IAccessRepositoryMock;
2119
let albumMock: jest.Mocked<IAlbumRepository>;
2220
let assetMock: jest.Mocked<IAssetRepository>;
23-
let jobMock: jest.Mocked<IJobRepository>;
2421
let userMock: jest.Mocked<IUserRepository>;
2522

2623
beforeEach(() => {
2724
accessMock = newAccessRepositoryMock();
2825
albumMock = newAlbumRepositoryMock();
2926
assetMock = newAssetRepositoryMock();
30-
jobMock = newJobRepositoryMock();
3127
userMock = newUserRepositoryMock();
3228

33-
sut = new AlbumService(accessMock, albumMock, assetMock, jobMock, userMock);
29+
sut = new AlbumService(accessMock, albumMock, assetMock, userMock);
3430
});
3531

3632
it('should work', () => {

Diff for: server/src/domain/album/album.service.ts

+17-17
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
1-
import { AlbumEntity, AssetEntity, UserEntity } from '@app/infra/entities';
21
import { BadRequestException, Inject, Injectable } from '@nestjs/common';
3-
import { AccessCore, Permission } from '../access';
4-
import { BulkIdErrorReason, BulkIdResponseDto, BulkIdsDto } from '../asset';
5-
import { AuthDto } from '../auth';
6-
import { setUnion } from '../domain.util';
7-
import {
8-
AlbumAssetCount,
9-
AlbumInfoOptions,
10-
IAccessRepository,
11-
IAlbumRepository,
12-
IAssetRepository,
13-
IJobRepository,
14-
IUserRepository,
15-
} from '../repositories';
2+
import { AccessCore, Permission } from 'src/domain/access/access.core';
163
import {
174
AlbumCountResponseDto,
185
AlbumResponseDto,
196
mapAlbum,
207
mapAlbumWithAssets,
218
mapAlbumWithoutAssets,
22-
} from './album-response.dto';
23-
import { AddUsersDto, AlbumInfoDto, CreateAlbumDto, GetAlbumsDto, UpdateAlbumDto } from './dto';
9+
} from 'src/domain/album/album-response.dto';
10+
import { AddUsersDto } from 'src/domain/album/dto/album-add-users.dto';
11+
import { CreateAlbumDto } from 'src/domain/album/dto/album-create.dto';
12+
import { UpdateAlbumDto } from 'src/domain/album/dto/album-update.dto';
13+
import { AlbumInfoDto } from 'src/domain/album/dto/album.dto';
14+
import { GetAlbumsDto } from 'src/domain/album/dto/get-albums.dto';
15+
import { BulkIdErrorReason, BulkIdResponseDto, BulkIdsDto } from 'src/domain/asset/response-dto/asset-ids-response.dto';
16+
import { AuthDto } from 'src/domain/auth/auth.dto';
17+
import { setUnion } from 'src/domain/domain.util';
18+
import { IAccessRepository } from 'src/domain/repositories/access.repository';
19+
import { AlbumAssetCount, AlbumInfoOptions, IAlbumRepository } from 'src/domain/repositories/album.repository';
20+
import { IAssetRepository } from 'src/domain/repositories/asset.repository';
21+
import { IUserRepository } from 'src/domain/repositories/user.repository';
22+
import { AlbumEntity } from 'src/infra/entities/album.entity';
23+
import { AssetEntity } from 'src/infra/entities/asset.entity';
24+
import { UserEntity } from 'src/infra/entities/user.entity';
2425

2526
@Injectable()
2627
export class AlbumService {
@@ -29,7 +30,6 @@ export class AlbumService {
2930
@Inject(IAccessRepository) accessRepository: IAccessRepository,
3031
@Inject(IAlbumRepository) private albumRepository: IAlbumRepository,
3132
@Inject(IAssetRepository) private assetRepository: IAssetRepository,
32-
@Inject(IJobRepository) private jobRepository: IJobRepository,
3333
@Inject(IUserRepository) private userRepository: IUserRepository,
3434
) {
3535
this.access = AccessCore.create(accessRepository);

Diff for: server/src/domain/album/dto/album-add-users.dto.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ArrayNotEmpty } from 'class-validator';
2-
import { ValidateUUID } from '../../domain.util';
2+
import { ValidateUUID } from 'src/domain/domain.util';
33

44
export class AddUsersDto {
55
@ValidateUUID({ each: true })

Diff for: server/src/domain/album/dto/album-create.dto.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ApiProperty } from '@nestjs/swagger';
22
import { IsString } from 'class-validator';
3-
import { Optional, ValidateUUID } from '../../domain.util';
3+
import { Optional, ValidateUUID } from 'src/domain/domain.util';
44

55
export class CreateAlbumDto {
66
@IsString()

Diff for: server/src/domain/album/dto/album-update.dto.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { AssetOrder } from '@app/infra/entities';
21
import { ApiProperty } from '@nestjs/swagger';
32
import { IsEnum, IsString } from 'class-validator';
4-
import { Optional, ValidateBoolean, ValidateUUID } from '../../domain.util';
3+
import { Optional, ValidateBoolean, ValidateUUID } from 'src/domain/domain.util';
4+
import { AssetOrder } from 'src/infra/entities/album.entity';
55

66
export class UpdateAlbumDto {
77
@Optional()

Diff for: server/src/domain/album/dto/album.dto.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ValidateBoolean } from '../../domain.util';
1+
import { ValidateBoolean } from 'src/domain/domain.util';
22

33
export class AlbumInfoDto {
44
@ValidateBoolean({ optional: true })

Diff for: server/src/domain/album/dto/get-albums.dto.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ValidateBoolean, ValidateUUID } from '../../domain.util';
1+
import { ValidateBoolean, ValidateUUID } from 'src/domain/domain.util';
22

33
export class GetAlbumsDto {
44
@ValidateBoolean({ optional: true })

Diff for: server/src/domain/album/dto/index.ts

-5
This file was deleted.

Diff for: server/src/domain/album/index.ts

-3
This file was deleted.

0 commit comments

Comments
 (0)