Skip to content

Commit

Permalink
feat(vsa): change folder structure to add vertical slice architecture
Browse files Browse the repository at this point in the history
closes #413
  • Loading branch information
borjapazr committed Mar 6, 2024
1 parent 815c831 commit 549fcc7
Show file tree
Hide file tree
Showing 156 changed files with 598 additions and 600 deletions.
2 changes: 1 addition & 1 deletion jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ module.exports = {

/* Bootstrap settings */
// Set initial config and enable jest-extended features
setupFilesAfterEnv: ['<rootDir>/test/jest.setup.ts', 'jest-extended/all'],
setupFilesAfterEnv: ['<rootDir>/test/jest.setup.ts'],

/* Global test settings */
// Automatically clear mock calls and instances between every test
Expand Down
674 changes: 337 additions & 337 deletions package-lock.json

Large diffs are not rendered by default.

42 changes: 21 additions & 21 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,20 +64,20 @@
"dependencies": {
"@ngneat/falso": "^7.2.0",
"@prisma/client": "^5.10.2",
"@tsed/ajv": "^7.62.2",
"@tsed/common": "^7.62.2",
"@tsed/components-scan": "^7.62.2",
"@tsed/core": "^7.62.2",
"@tsed/di": "^7.62.2",
"@tsed/exceptions": "^7.62.2",
"@tsed/ioredis": "^7.62.2",
"@tsed/json-mapper": "^7.62.2",
"@tsed/ajv": "^7.62.3",
"@tsed/common": "^7.62.3",
"@tsed/components-scan": "^7.62.3",
"@tsed/core": "^7.62.3",
"@tsed/di": "^7.62.3",
"@tsed/exceptions": "^7.62.3",
"@tsed/ioredis": "^7.62.3",
"@tsed/json-mapper": "^7.62.3",
"@tsed/logger": "^6.6.3",
"@tsed/openspec": "^7.62.2",
"@tsed/platform-express": "^7.62.2",
"@tsed/prisma": "^7.62.2",
"@tsed/schema": "^7.62.2",
"@tsed/swagger": "^7.62.2",
"@tsed/openspec": "^7.62.3",
"@tsed/platform-express": "^7.62.3",
"@tsed/prisma": "^7.62.3",
"@tsed/schema": "^7.62.3",
"@tsed/swagger": "^7.62.3",
"ajv": "^8.12.0",
"argon2": "^0.40.1",
"body-parser": "^1.20.2",
Expand Down Expand Up @@ -134,18 +134,18 @@
"@types/luxon": "^3.4.2",
"@types/method-override": "^0.0.35",
"@types/multer": "^1.4.11",
"@types/node": "^20.11.24",
"@types/node": "^20.11.25",
"@types/node-emoji": "^1.8.2",
"@types/source-map-support": "^0.5.10",
"@types/supertest": "^6.0.2",
"@types/swagger-schema-official": "^2.0.25",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^7.1.0",
"@typescript-eslint/parser": "^7.1.0",
"@typescript-eslint/eslint-plugin": "^7.1.1",
"@typescript-eslint/parser": "^7.1.1",
"commitizen": "^4.3.0",
"copyfiles": "^2.4.1",
"cross-env": "^7.0.3",
"cspell": "^8.5.0",
"cspell": "^8.6.0",
"cz-conventional-changelog": "^3.3.0",
"eslint": "^8.57.0",
"eslint-config-airbnb-base": "^15.0.0",
Expand All @@ -159,7 +159,7 @@
"eslint-plugin-jest": "^27.9.0",
"eslint-plugin-jest-extended": "^2.0.0",
"eslint-plugin-jsonc": "^2.13.0",
"eslint-plugin-markdown": "^3.0.1",
"eslint-plugin-markdown": "^4.0.1",
"eslint-plugin-n": "^16.6.2",
"eslint-plugin-optimize-regex": "^1.2.1",
"eslint-plugin-prefer-arrow": "^1.2.3",
Expand Down Expand Up @@ -198,15 +198,15 @@
"tsc-alias": "^1.8.8",
"tsconfig-paths": "^4.2.0",
"tsx": "^4.7.1",
"typescript": "^5.3.3",
"typescript": "^5.4.2",
"yaml-eslint-parser": "^1.2.2"
},
"engines": {
"node": ">=20.9.0",
"npm": ">=6.7.0"
},
"prisma": {
"schema": "src/infrastructure/shared/persistence/prisma/schema.prisma",
"seed": "tsx src/infrastructure/shared/persistence/prisma/seed.ts"
"schema": "src/shared/infrastructure/persistence/prisma/schema.prisma",
"seed": "tsx src/shared/infrastructure/persistence/prisma/seed.ts"
}
}
4 changes: 2 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import 'source-map-support/register';
import { PlatformExpress } from '@tsed/platform-express';
import * as emoji from 'node-emoji';

import { Logger } from '@domain/shared';
import { bootstrap } from '@infrastructure/shared';
import { Server } from '@presentation/rest/server';
import { Logger } from '@shared/domain';
import { bootstrap } from '@shared/infrastructure';

const start = async (): Promise<void> => {
await bootstrap();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { UseCaseRequest } from '@application/shared';
import { TriggeredBy } from '@domain/shared/entities/triggered-by';
import { UseCaseRequest } from '@shared/application';
import { TriggeredBy } from '@shared/domain/entities/triggered-by';

class CheckHealthStatusRequest extends UseCaseRequest {
readonly appVersion: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { BaseUseCase, UseCase } from '@application/shared';
import { HealthStatus } from '@domain/health';
import { HealthStatus } from '@modules/health/domain';
import { BaseUseCase, UseCase } from '@shared/application';

import { CheckHealthStatusRequest } from './check-health-status.request';
import { HealthStatusResponse } from './health-status.response';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { HealthStatus } from '@domain/health';
import { HealthStatus } from '@modules/health/domain';

class HealthStatusResponse {
readonly status: string;
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { DomainEntity } from '@domain/shared/entities';
import { DomainEntity } from '@shared/domain/entities';

class HealthStatus extends DomainEntity {
readonly status: string;
Expand Down
File renamed without changes.
Empty file.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { UseCaseRequest } from '@application/shared';
import { Nullable } from '@domain/shared';
import { TriggeredBy } from '@domain/shared/entities/triggered-by';
import { UseCaseRequest } from '@shared/application';
import { Nullable } from '@shared/domain';
import { TriggeredBy } from '@shared/domain/entities/triggered-by';

class EndSessionRequest extends UseCaseRequest {
readonly accessToken: Nullable<string>;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { BaseUseCase, UseCase } from '@application/shared';
import {
InvalidSessionException,
Session,
SessionRepository,
SessionRevocationReason,
SessionRevokedBy
} from '@domain/sessions';
import { TokenProviderDomainService } from '@domain/sessions/tokens';
import { Nullable } from '@domain/shared';
} from '@modules/sessions/domain';
import { TokenProviderDomainService } from '@modules/sessions/domain/tokens';
import { BaseUseCase, UseCase } from '@shared/application';
import { Nullable } from '@shared/domain';

import { EndSessionRequest } from './end-session.request';

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { UseCaseRequest } from '@application/shared';
import { TriggeredBy } from '@domain/shared/entities/triggered-by';
import { InvalidParameterException } from '@domain/shared/exceptions';
import { UseCaseRequest } from '@shared/application';
import { TriggeredBy } from '@shared/domain/entities/triggered-by';
import { InvalidParameterException } from '@shared/domain/exceptions';

class RefreshSessionRequest extends UseCaseRequest {
readonly refreshToken: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { SessionResponse } from '@application/sessions';
import { BaseUseCase, UseCase } from '@application/shared';
import { SessionResponse } from '@modules/sessions/application';
import {
InvalidSessionException,
Session,
SessionExpiresAt,
SessionRefreshTokenHash,
SessionRepository,
SessionUserData
} from '@domain/sessions';
import { RefreshToken, TokenProviderDomainService } from '@domain/sessions/tokens';
import { User, UserRepository, UserUuid } from '@domain/users';
} from '@modules/sessions/domain';
import { RefreshToken, TokenProviderDomainService } from '@modules/sessions/domain/tokens';
import { User, UserRepository, UserUuid } from '@modules/users/domain';
import { BaseUseCase, UseCase } from '@shared/application';

import { RefreshSessionRequest } from './refresh-session.request';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Session } from '@domain/sessions/session';
import { AccessToken, RefreshToken } from '@domain/sessions/tokens';
import { Session } from '@modules/sessions/domain/session';
import { AccessToken, RefreshToken } from '@modules/sessions/domain/tokens';

class SessionResponse {
readonly session: Session;
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { UseCaseRequest } from '@application/shared';
import { TriggeredBy } from '@domain/shared/entities/triggered-by';
import { InvalidParameterException } from '@domain/shared/exceptions';
import { UseCaseRequest } from '@shared/application';
import { TriggeredBy } from '@shared/domain/entities/triggered-by';
import { InvalidParameterException } from '@shared/domain/exceptions';

class StartSessionRequest extends UseCaseRequest {
readonly userUuid: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { SessionResponse } from '@application/sessions';
import { BaseUseCase, UseCase } from '@application/shared';
import { SessionResponse } from '@modules/sessions/application';
import {
Session,
SessionExpiresAt,
SessionRefreshTokenHash,
SessionRepository,
SessionUserData
} from '@domain/sessions';
import { TokenProviderDomainService } from '@domain/sessions/tokens';
import { Uuid } from '@domain/shared/value-object';
import { User, UserNotExistsException, UserRepository, UserUuid } from '@domain/users';
} from '@modules/sessions/domain';
import { TokenProviderDomainService } from '@modules/sessions/domain/tokens';
import { User, UserNotExistsException, UserRepository, UserUuid } from '@modules/users/domain';
import { BaseUseCase, UseCase } from '@shared/application';
import { Uuid } from '@shared/domain/value-object';

import { StartSessionRequest } from './start-session.request';

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { UseCaseRequest } from '@application/shared';
import { Nullable } from '@domain/shared';
import { TriggeredBy } from '@domain/shared/entities/triggered-by';
import { UseCaseRequest } from '@shared/application';
import { Nullable } from '@shared/domain';
import { TriggeredBy } from '@shared/domain/entities/triggered-by';

class ValidateSessionRequest extends UseCaseRequest {
readonly accessToken: Nullable<string>;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { BaseUseCase, UseCase } from '@application/shared';
import {
InvalidSessionException,
SessionExpiresAt,
SessionRefreshTokenHash,
SessionRepository,
SessionUserData
} from '@domain/sessions';
import { TokenProviderDomainService } from '@domain/sessions/tokens';
import { UserRepository } from '@domain/users';
} from '@modules/sessions/domain';
import { TokenProviderDomainService } from '@modules/sessions/domain/tokens';
import { UserRepository } from '@modules/users/domain';
import { BaseUseCase, UseCase } from '@shared/application';

import { ValidateSessionRequest } from './validate-session.request';
import { ValidatedSessionResponse } from './validated-session.response';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Session } from '@domain/sessions/session';
import { AccessToken, RefreshToken } from '@domain/sessions/tokens';
import { Nullable } from '@domain/shared';
import { Session } from '@modules/sessions/domain/session';
import { AccessToken, RefreshToken } from '@modules/sessions/domain/tokens';
import { Nullable } from '@shared/domain';

class ValidatedSessionResponse {
public session: Nullable<Session>;
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { DomainException } from '@domain/shared/exceptions';
import { DomainException } from '@shared/domain/exceptions';

class InvalidSessionException extends DomainException {
constructor() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { DateValueObject } from '@domain/shared/value-object';
import { DateValueObject } from '@shared/domain/value-object';

class SessionExpiresAt extends DateValueObject {}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { NumberValueObject } from '@domain/shared/value-object';
import { NumberValueObject } from '@shared/domain/value-object';

class SessionId extends NumberValueObject {}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { HasherDomainService } from '@domain/shared/services';
import { StringValueObject } from '@domain/shared/value-object';
import { HasherDomainService } from '@shared/domain/services';
import { StringValueObject } from '@shared/domain/value-object';

class SessionRefreshTokenHash extends StringValueObject {
public static async createFromPlainRefreshToken(refreshToken: string): Promise<SessionRefreshTokenHash> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { DateValueObject } from '@domain/shared/value-object';
import { DateValueObject } from '@shared/domain/value-object';

class SessionRevokedAt extends DateValueObject {}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { StringValueObject } from '@domain/shared/value-object';
import { StringValueObject } from '@shared/domain/value-object';

class SessionRevokedBy extends StringValueObject {}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { StringValueObject } from '@domain/shared/value-object';
import { StringValueObject } from '@shared/domain/value-object';

class SessionRevocationReason extends StringValueObject {}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { CompositeValueObject } from '@domain/shared/value-object';
import { CompositeValueObject } from '@shared/domain/value-object';

class SessionUserData extends CompositeValueObject {
readonly username: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Uuid } from '@domain/shared/value-object';
import { Uuid } from '@shared/domain/value-object';

class SessionUserUuid extends Uuid {}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Uuid } from '@domain/shared/value-object';
import { Uuid } from '@shared/domain/value-object';

class SessionUuid extends Uuid {}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Nullable } from '@domain/shared';
import { Nullable } from '@shared/domain';

import { Session } from './session';
import { SessionUuid } from './session-uuid';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { DateTime } from 'luxon';

import { Nullable } from '@domain/shared';
import { DomainEntity } from '@domain/shared/entities/domain-entity';
import { Nullable } from '@shared/domain';
import { DomainEntity } from '@shared/domain/entities/domain-entity';

import { SessionExpiresAt } from './session-expires-at';
import { SessionId } from './session-id';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { SessionUuid } from '@domain/sessions/session-uuid';
import { UserEmail, UserRole, UserUsername, UserUuid } from '@domain/users';
import { SessionUuid } from '@modules/sessions/domain/session-uuid';
import { UserEmail, UserRole, UserUsername, UserUuid } from '@modules/users/domain';

import { Token, TokenType } from './token';
import { TokenExpiresAt } from './token-expires-at';
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { SessionUuid } from '@domain/sessions/session-uuid';
import { UserEmail, UserRole, UserUsername, UserUuid } from '@domain/users';
import { SessionUuid } from '@modules/sessions/domain/session-uuid';
import { UserEmail, UserRole, UserUsername, UserUuid } from '@modules/users/domain';

import { Token, TokenType } from './token';
import { TokenExpiresAt } from './token-expires-at';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { DateValueObject } from '@domain/shared/value-object';
import { DateValueObject } from '@shared/domain/value-object';

class TokenExpiresAt extends DateValueObject {}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { SessionUuid } from '@domain/sessions/session-uuid';
import { Nullable } from '@domain/shared';
import { UserEmail, UserRole, UserUsername, UserUuid } from '@domain/users';
import { SessionUuid } from '@modules/sessions/domain/session-uuid';
import { UserEmail, UserRole, UserUsername, UserUuid } from '@modules/users/domain';
import { Nullable } from '@shared/domain';

import { AccessToken } from './access-token';
import { RefreshToken } from './refresh-token';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { DateTime } from 'luxon';

import { SessionUuid } from '@domain/sessions/session-uuid';
import { UserEmail, UserRole, UserUsername, UserUuid } from '@domain/users';
import { SessionUuid } from '@modules/sessions/domain/session-uuid';
import { UserEmail, UserRole, UserUsername, UserUuid } from '@modules/users/domain';

import { TokenExpiresAt } from './token-expires-at';

Expand Down
File renamed without changes.
Loading

0 comments on commit 549fcc7

Please sign in to comment.